[英]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.