软件参考资料需求分析图形表示与形式描述Word文档格式.docx
《软件参考资料需求分析图形表示与形式描述Word文档格式.docx》由会员分享,可在线阅读,更多相关《软件参考资料需求分析图形表示与形式描述Word文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
数据是如何进入系统或从系统离开;
(2)数据处理站点:
在哪里数据是怎样处理的;
(3)存储单元:
数据是在哪里存储的。
2.定义(DFD符号)
:
数据(信息)的源点/终点
数据(信息)加工或逻辑处理
数据(信息)存储
数据(信息)流
3.实例研究:
汽车租赁数据流图
(1)一个汽车租赁数据流图EuRentDFD见图2-2。
图2-2:
EuRentDFD
(摘自Haggenmueller,Wirsing:
MethodenderSoftware-Entwicklung,P29)
图中
Kunde:
用户或汽车租赁者
MakeBookings:
租车登记
ObtainPayment:
得到支付
VehicleDepartures&
Returns:
汽车出发及返回
EuRentDB:
汽车租赁数据库
Bookings:
登记
Invoice:
出具发票(货单)
Costs:
费用
(2)“MakeBookings”数据处理单元的定义
设Bookings=(c,b)
其中c为用户,包括用户自然信息,
b为登记信息,包括信用卡、租赁汽车等信息;
Db为EuRent数据库类型,db为一EuRent数据库;
put为数据添加函数(操作);
establishCB为EuRent数据库创建函数(操作)。
则MakeBookings(MB)形式规约定义为:
Bookings⨯Db→Bookings⨯Bookings⨯Db
即
MB:
(c,b,db)→(c,b),(c,b),establishCB(c,b,put(b,put(c,db)))
(3)“MakeBookings”数据处理单元的语义规约(PSPEC)
DataType:
--定义数据类型
C={c};
--用户Customers
B={b};
--登记信息
Bookings={(c,b)}=C⨯B;
--登记
Db={db}=SetC⨯SetB⨯Set(C⨯B);
--db为数据库DB的任一状态,Setα为α的全集(powerset)
Operations:
put:
α⨯Db→Db;
--添加数据,α为数据类型B或C,或C⨯B
establishCB:
Bookings⨯Db→Db;
--数据库创建
MB:
Bookings⨯Db→Bookings⨯Bookings⨯Db;
--MakeBookings(MB)登记处理
Axioms:
MB((c,b),db)⇒(c,b),(c,b),establishCB(c,b,put(b,put(c,db)))
(3)数据流图处理单元抽象模型及语义
InformationProcessing(IP)
DataInDataOut
DB
图2-3:
DFD处理单元抽象模型
形式语义:
IP:
DataIn⨯Db→DataOut⨯Db
(4)DFD应用
●适用于数据丰富系统(data-richsystems)
●实现上通常采用关系数据库(relationaldatabase)
2.3.2实体关系图ERD及语义
1、基本概念
定义1(ERD):
一个实体关系图ERD描述一个信息系统的逻辑数据结构(LogicDataStructure),其中包括
(1)那些信息将被存储;
(2)那些关系将被包括在所存储的信息之间。
定义2(实体):
实体是客观存在且相互区分的事物。
实体通常由记录来表示,记录域称为属性。
实体是通过域名及域值加以区分的。
一个或多个属性构成实体的关键字。
一个实体是通过其关键字加以标识的。
定义3(属性):
属性是实体或关系所具有的性质。
定义4(关系):
客观世界中的事物(实体)彼此之间的联系称为关系。
2、实体关系图图形表示
参考《实用软件工程》,第二版,郑人杰等,P70。
3、实例研究
例1:
汽车租赁公司ERD
(1)实体关系图见图2-4。
汽车
Auto
图中:
11俗称乌鸦脚(CrowFoot)
nn表示一对多关系
图2-4:
汽车租赁实体关系图
(2)实体及其属性定义
CustomerAutoBooking
CustomerNoAutoLicenseNoBookingsNo
CustomerAddressOfficeAddressAutoLicenseNo
CreditLimitAutoCategoryCustomerNo
其中带下划线的属性为关键字。
(3)实体E及属性形式语义(代数规约)
设实体为E且具有属性A1、A2、A3,其中属性A1为E的关键字,则实体E的形式规约如下:
DataType:
E
Operations:
--定义操作(函数)符
CreateE:
A1⨯A2⨯A3→E;
attri:
E→Ai;
--求属性,i=1,2,3
setattri:
E⨯Ai→E;
--定义属性,i=1,2,3
keyE:
E→A1;
--定义关键字
Axioms:
∀a1:
A1,a2:
A2,a3:
A3,e:
E--定义操作(函数)
Attri(CreateE(a1,a2,a3))=ai,i=1,2,3;
keyE(CreateE(a1,a2,a3))=a1;
setattr2(e,a2)=CreateE(keyE(e),a2,attr3(e));
setattr3(e,a3)=CreateE(keyE(e),attr2(e),a3);
(4)数据库DB定义及形式语义
A={a};
--汽车Autos
--登记Bookings
CB={(c,b)}=C⨯B;
--关系CB
AB={(a,b)}=A⨯B;
--关系AB
Db={db}--db为数据库DB的任一状态
=SetC⨯SetB⨯SetA⨯Set(C⨯B)⨯Set(A⨯B);
--SetC为C的全集(powerset)
entityC:
Db→SetC;
entityB:
Db→SetB;
entityA:
Db→SetA;
relationCB:
Db→Set(C⨯B);
relationAB:
Db→Set(A⨯B);
putC:
C⨯Db→Db;
putB:
B⨯Db→Db;
putA:
A⨯Db→Db;
delC:
delB:
delA:
Db⨯C⨯B→Db;
establishAB:
Db⨯A⨯B→Db;
releaseCB:
releaseAB:
emptydb={Φ,Φ,Φ,Φ,Φ};
--theinitialstateofDb
--“一对多”关系(乌鸭脚)应满足的条件(限制constrains)
∀db:
Db,∀c,c1:
C,∀b:
B:
relationCBdb(c,b)∧relationCBdb(c1,b)⇒c=c1;
Db,∀a,a1:
A,∀b:
relationABdb(a,b)∧relationABdb(a1,b)⇒a=a1;
(5)“一对多”关系的一般表达式及应用
Booking
1:
n
(a,b),(a1,b)∈relationABdb⇒a=a1;
应用举例:
●房屋销售不能一房同时卖给多个客户;
●一间教室不能同时安排多个班上课等。
2.3.3状态转换图STD及语义
状态转换图STD描述了限定性状态转换系统DSTS(DeterministicStateTransitionSystem)的状态变化过程。
1、基本概念
定义1(限定性状态转换系统DSTS):
一个限定性状态转换系统DSTS是一个五维数组DSTS=(Q,I,q0,δ,O),其中Q是一个非空有限状态集合,I是一个非空有限输入符号(也称事件)集合,q0是DSTS的初始状态且q0∈Q,O是非空的输出符号(也称输出)集合,δ是DSTS的状态转换函数且定义为δ:
Q⨯I→Q⨯O。
定义2(状态转换图STD):
一个限定性状态转换系统DSTS=(Q,I,q0,δ,O)的状态转换图G是一个带符号和方向的图,定义如下:
·
G的结点是Q的元素;
q0(初始状态)是图G的起点;
图G中连线的标号是映射I→O的元素;
·
从结点p到结点q连接一个标号为a→b的箭头连线当且仅当(q,b)=δ(p,a),显然,(a→b)∈(I→O)。
2、实例研究:
图形用户界面(GUI)设计中的开关Button
(1)定义
Button是一个限定性状态转换系统,且定义为
Button=(Q,I,q0,δ,O),
其中
Q={Off,On}
q0=Off,且q0∈Q
I={MouseDown,MouseUp}
O={r0,r1,r2,r3}
(2)Button的状态转换图
图2-5:
Button的状态转换图
见黑板。
(3)状态转换函数δ的定义
状态/输入
MouseDown
MouseUp
Off
(On,r0)
(Off,r1)
On
(On,r2)
(Off,r3)
图2-6:
Button的状态转换函数δ
(4)Button形式规约(形式语义)
State={Off,On};
--定义状态集合Q
Event={MouseDown,MouseUp};
--定义输入集合I
Report={r0,r1,r2,r3}--定义输出集合O
q0:
→State;
δ:
State⨯Event→State⨯Report;
q0=Off;
δ(Off,MouseDown)=(On,r0);
δ(Off,MouseUp)=(Off,r1);
δ(On,MouseDown)=(On,r2);
δ(On,MouseUp)=(Off,r3)。
2.3.4关于图形描述技术的几点说明
●一个图只是一个可实现模块;
●复杂图的表示很困难;
●尚无有效的图形集成技术;
●尚缺少有效的图形正确性证明技术。
第三章形式规约理论与方法
3.1理论提出
(1)Guttag(1975-78):
首次在程序中引入等式规约
代表作1:
Guttag,J.V
Thespecificationandapplicationtoprogrammingofabstract
dadatypes
Ph.DThesis,Univ.ofToronto,1975
代表作2:
Guttag,J.V,HorningJ.J
Thealgebraicspecificationofdatatypes
ActaInf.Vol.10,PP27-52,1978
(2)ADJ-Group(Goguen,Thatcher,Wagner,Wright,1975):
Initialsemantics(初始语义),many-sortedgeneralalgebra
代表作:
GoguenJ.A,ThatcherJ.W,WagnerE.G,WrightJ.B
Abstractdatatypesasinitialalgebraandthecorrectnessof
datarepresentations
Proc.Conf.onComputerGraphics,PatternRecognitionand
DataStructure,1975,PP89-93
(3)Gimona,Giarratana,Montanan,Wand(1976):
Terminalsemantics(终结语义)
(4)CIP-Group(Bauer,Broy,Dosch,Partsch,Pepper,Wirsing,1978):
Loosesemantic(松散语义)
3.2简单规约设计
3.2.1规约的一般形式
1.SPECTRUM语言规约设计
SP={--定义标记Σ
SortS;
FunctF;
PredP;
SgeneratedbyC;
--定义公理
axioms
E
endaxioms}
其中,
S:
规约中包括的所有数据类型的集合
F:
所有函数符号的集合
P:
所有谓词符号的集合
C:
S的构造操作符集合,且C⊆F
E:
公理集合,表示所有的特性(CharacteristicProperties)
上述规约可书写成如下:
规约SP=〈标记Σ,公理E〉
2.BoolthValue的规约设计
(1)公理规约(AxiomaticSpecification)
BOOL0={
--signature
--sort
SortBool;
--functionssymbol
Functtrue∈Bool;
false∈Bool;
--predicatesymbols
Prednot∈Bool→Bool;
--axioms
Axioms,∀x:
Bool
not(true)=false;
not(not(x))=x
endaxioms;
}
(2)Prolog规约 (PrologSpecification)
Remark:
n个变量的函数将通过n+1变量的关系定义,函数的值变量置于n+1个关系的最后一位.
BOOL_PL={
PredNot⊆Bool⨯Bool;
axioms∀x,y∈Bool
Not(true,false);
Not(x,y)=Not(y,x)
endaxioms;
(3)逻辑规约(LogicSpecification)
一个自变量的布尔函数将通过一个变量的关系表达.
BOOL_L={
PredNot⊆Bool;
axioms
Not(false);
⌝Not(true)
(4)带构造操作符的公理规约(SpecificationwithConstructor)
BOOLT={
--constructoraxiom:
Inductionprinciplefortruthvalue
Boolgeneratedbytrue,false;
--Non-constructorsymbol
Functnot∈Bool→Bool;
axioms∀x∈Bool
not(not(x))=x
3.2.2标记Signature
1.定义(Signature):
一个标记∑是一个三元组∑=(S,F,P),其中
S是一个类集(SetofSorts),
F是一个定义在S*⨯S上的函数符号集,其中
<
s1,s2,…,sn>
∈S*为定义域,
s∈S为函数F<
<
s1,s2,…,sn>
s>
的值域,
P是一个定义在S*上的谓词符号集。
Remark:
(1)标记描述规约的语法(SyntaxofSpecification)
(2)f∈F<
可写成f∈s1⨯s2⨯…,⨯sn→s
(3)p∈P<
可写成P⊆s1⨯s2⨯…,⨯sn
(4)规约SP的标记∑可写成sig(SP):
SP→∑
2.案例研究
上述逻辑规约(LogicSpecification)BOOL_L的标记
sig(BOOL_L):
S={Bool}
F=(F<
ω,Bool>
)ω∈{Booln|n≥0}且
F<
ε,Bool>
={true,false}--常量
=Φotherwise--空集
P=(Pω)ω∈{Booln|n≥0}且
P<
Bool,Bool>
={Not,=}--其中=为布尔运算
Pω=Φotherwise
例2:
公理规约BOOL0及BOOLT的标记
sig(BOOL0)=sig(BOOLT)
S={Bool};
Bool,Bool>
={not}--函数
F<
=Φotherwise;
--空集
={=}--其中=为布尔运算
思考:
(1)找出程序中所有类型与运算符号有利于程序理解;
(2)可用于程序测试、项目管理、程序度量等;
(3)可用于研究程序体系结构等;
(4)语法、语义匹配,语义查询等;
(5)基于语义的web服务应用等。
3.定义:
标记∑被称为是代数的,只有当等式“=”是其中唯一的关系运算符。
例:
上述规约BOOL0和BOOLT的标记是代数的;
规约BOOL_L不是代数的,因为存在关系运算符“not”。
3.2.3项(Term)
每个标记∑=(S,F,P)定义了一个表达式的集合,称为项集,其中项元素是由自由变量x和∑中的函数符号构成。
x:
S
所有程序中的表达式都是由∑和X构成的。
1.定义(项的归纳定义):
(1)设∑为标记,X=(Xs)s∈S为标识符(identificator)的集合,则
对每个s∈S,T(∑,X)s为最小项集并满足下列特性:
a)对每个x∈Xs满足x∈T(∑,X)s,则x是一个∑项;
b)若f∈F<
ε,s>
并满足f∈T(∑,X)s,则f是一个常量,同时
f也是一个∑项;
c)若f∈F<
且ti∈T(∑,X)si,i=1,…,n,则
f(t1,…,tn)∈T(∑,X);
(2)不含变量的项称为基项(groundterm),即当X=Φ时,所有的
t∈T(∑,Φ)s是基项;
(3)标记∑被称为是敏感的(sensitive),如果每个类s∈S都存在一个
基项t∈T(∑,Φ)s,即∀s∈S.T(∑,Φ)s≠Φ成立;
(4)项t∈T(∑,X)s的类型为s;
(5)T(∑,X)=def(T(∑,X)s)s∈S
2.举例:
数学表达式中的项
表达式: