簡體   English   中英

合金分析儀4.2中未顯示合金特征

[英]Alloy signatures not shown in Alloy Analyzer 4.2

我必須在大學項目的需求分析和規范文檔中使用Alloy。 我從簡單的東西開始,只有簽名,沒有事實。 這些是我使用的簽名:

abstract sig Date{
    year: one Int,
    month: one Int,
    day: one Int
}

abstract sig Time{
    h: one Int,
    m: one Int,
    s: one Int
}

abstract sig Double{
    leftPart: one Int,
    rightPart: one Int
}

abstract sig Bool{
    value: one String
}

sig DateBirth extends Date{}
sig DateRide extends Date{}
sig DateExpiry extends Date{}


abstract sig User {
email: one String,
name: one String,
surname: one String,
gender: one Bool,
address: one String,
password: one String,
dateOfBirth: one DateBirth,
IDRide: set Ride
}

sig TaxiDriver extends User{
taxiLicense: one String,
personalLicense: one String,
IBAN: one String,
positionInQueue: lone Int,
IDTaxi: set Taxi
}


sig Client extends User{
}


sig Zone {
numberOfZone: one Int,
vertexNorthWest: one Double,
vertexNorthEast: one Double,
vertexSouthWest: one Double,
vertexSouthEast: one Double,
currentQueue: set TaxiDriver

}


sig Taxi {
IDTaxi: one String,
plate: one String,
availablePlaces: one Int,
}


sig Ride {
IDRide: one String,
origin: one String,
destination: one String,
dateOfRide: one DateRide,
timeOfDeparture: one Time,
timeOfArrival: one Time,
price: one Double,
numberOfPeople: one Int,
accepted: one Bool,
userEmail: set User
}


sig Credit_Card {
number: Double,
owner: String,
expiryDate: DateExpiry,
ownerEmail: one Client
}

然后,我添加謂詞“ show”以驗證其是否一致:

pred Show{}
run Show for 10

在Alloy Analyzer 4.2上運行“執行”后,這是我得到的消息:

Executing "Run Show for 10"
   Solver=sat4j Bitwidth=4 MaxSeq=7 SkolemDepth=1 Symmetry=20
   21067 vars. 3840 primary vars. 37164 clauses. 376ms.
   Instance. found. Predicate is consistent. 375ms.

沒問題吧? 但是,當我單擊“顯示”時,在顯示屏上沒有顯示簽名“用戶”(及其子簽名)的實例,而其他所有實例都在那里。 我試圖多次單擊“下一步”,以嘗試查看是否可以找到顯示它們的模型,但沒有任何模型。 有任何想法/建議嗎? 謝謝!

這可能是因為使用了String 據我所知, String是Alloy中的保留字,但目前尚未真正實現。 嘗試刪除“ String字段或將其替換為其他內容。

從更籠統的角度來看,Alloy並不僅僅是在建模真實數據(整數,布爾值和字符串),而是在建模結構 (即實體之間的關系)。 對於結構分析,通常不需要具體的數據類型。

建立Alloy模型的目的是捕獲設計或系統的本質並探索微妙的屬性。 您不想包括在數據庫模式中找到的所有詳細信息。 您的模型也有很多實現細節,例如id(由於ID在對象標識中是隱式的,因此不需要),以及使用字符串代替概念類型(例如,目的地)應具有以下類型:作為“位置”。

因此,我建議您重新開始,然后首先考慮您希望該模型回答什么樣的問題。

感謝大家, 刪除字符串解決了這個問題。

但是,我對Alloy用途的“扭曲”看法是由於有人要求我們使用它,但是我們沒有得到關於如何使用它的真正解釋,在大多數示例中,所有細節均已寫好。 我想我將不得不嘗試進一步研究!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM