目录用例图用例什么是用例?用例之间的关系用例图布局类之间的关系(类图)类图布局流程图系统流程图系统流程图的符号系统流程图布局程序流程图过程设计语言(PDL)盒图(N-S图)问题分析图(PAD图)PAD图的基本符号顺序图(时序图)时序图布局ADL
从外部用户的视角看,一个用例(usecase)是执行者(actor)与目标软件系统之间一次典型的交互作用,其效果就是执行者在软件系统的帮助下完成了某项业务功能,或达成了某项业务目标。
在课程注册管理系统中,主要的执行者有:“Registrar”(教务管理员)“Student”(学生)、“Teacher”(任课教师)“BillingSystem”(收费系统)
相对独立性和完整性是用例必备的两项特征,即,用例表示执行者为达成一项相对独立、完整的业务目标而与目标软件系统协同完成的功能。
从软件系统内部的视角出发,一个用例代表着系统执行的一系列动作,动作执行的结果能够被外部的执行者所察觉。
用例之间的关系主要有三种:包含(include)、扩展(extend)和继承。
用例图(Usecasediagram)从用户角度描述系统功能,并指出各功能的操作者。
课程注册管理系统的用例图
用例图中的所有用例的集合构成目标软件系统应该提供的功能
用例图的布局攸关其可理解性。建议读者采纳以下布局规则:
主要的执行者应置于用例图的左上区域。
触发用例执行的主动执行者应位于用例的左面,接收用例产生的信息的被动执行者应置于用例的右面。
在水平方向绘制包含关系,并将被包含的用例置于包含用例的右侧。
在垂直方向绘制扩展和继承关系,并将扩展用例置于被扩展用例的下方。将继承用例置于被继承用例的下方。
课件汇总p680
继承和聚合(聚集和组合),关联、依赖和实现
继承
介绍:
继承表示是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。
表示方法:
继承使用空心三角形+实线表示。
示例:
鸟类继承抽象类动物
实现
实现表示一个class类实现interface接口(可以是多个)的功能。
使用空心三角形+虚线表示
比如:大雁需要飞行,就要实现飞()接口
依赖
对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。
依赖关系用虚线箭头表示。
示例:动物依赖氧气和水。调用新陈代谢方法需要氧气类与水类的实例作为参数
关联
对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。
关联关系用实线箭头表示。
企鹅需要‘知道’气候的变化,需要‘了解’气候规律。当一个类‘知道’另一个类时,可以用关联。
聚合
表示一种弱的‘拥有’关系,即has-a的关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。两个对象具有各自的生命周期。
聚合关系用空心的菱形+实线箭头表示。
每一只大雁都属于一个大雁群,一个大雁群可以有多只大雁。当大雁死去后大雁群并不会消失,两个对象生命周期不同。
组合
组合是一种强的‘拥有’关系,是一种contains-a的关系,体现了严格的部分和整体关系,部分和整体的生命周期一样。
组合关系用实心的菱形+实线箭头表示,还可以使用连线两端的数字表示某一端有几个实例。
鸟和翅膀就是组合关系,因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的。
类图往往是软件模型图中最复杂同时也最关键的一张UML视图。为提高其可理解性,本书推荐以下布局规则:
(1)尽量沿垂直方向表示继承、实现关系,沿水平方向表示关联、聚合、组合、依赖、实现关系。
在继承关系中,父类应位于子类的上方;
在单向关联、依赖和实现关系中,方向尽量从左至右;
在聚合、组合关系中,整体类一般位于部件类的左面。
(2)在关联边上,多重性、角色名、约束特性等应靠近关联端。
(3)如果多条边表示相同种类的关系,它们有公共的类端点,并且在公共端的标注相同,则汇合这些边。例如,将“用户”与“教务管理员”、“教师”和“学生”之间的三条继承边汇合,布局成树形结构。
课程注册管理系统的类图
p412
流程图与PDL、盒图、PAD可以相互转换
系统流程图符号中有五种基本符号是从程序流程图中借用来的,当以概括方式抽象描绘一个实际系统时,仅用此五种符号足够了。
五种基本的系统流程图符号
系统流程图的习惯画法是使信息在图中自顶向下或从左向右流动。
库存管理系统的系统流程图
为了能够用程序流程图描述结构化的程序,一般地,限制只允许使用三种基本结构。
a.顺序型
b.选择型
c.先判断型循环DO-WHILE
过程设计语言(PDL)也称为伪码,PDL是一种用于描述功能模块的算法设计和加工细节的语言。
PDL是一种“混杂式语言”,它采用某种语言(如英语或自然语言)的词汇,另一种语言(结构化程序设计语言)的全部语法。
伪码的语法规则分为“外语法”和“内语法”。
PDL语法是开放式的,其外层语法是确定的,而内层语法则故意不确定。外层语法描述控制结构和数据结构,它用类似于一般编程语言控制结构的关键字(如IF—THEN—ELSE、WHILE—DO、REPEAT—UNTIL等)表示,所以是确定的,而内层语法可使用自然语言的词汇描述具体操作。
例如,在PDL描述
ifXisnotnegativethenreturn(squarerootofXasarealnumber);elsereturn(squarerootof-Xasanimaginarynumber);中,外层语法IF—THEN—ELSE是确定的,内层操作“squarerootofX”是不确定的。
N-S图是为克服流程图在描述程序逻辑时的随意性等缺点
只能从上边进入盒子然后从下边走出,除此之外没有其他的入口和出口
用N-S图作为详细设计的描述手段时,常需用两个盒子:数据盒和模块盒,前者描述有关的数据,包括全程数据、局部数据和模块界面上的参数等,后者描述执行过程。
ProblemAnalysisDiagram
使用二维树形结构图来描述程序的逻辑
将数组A(1)到A(10)从大到小进行选择法排序的算法描述如下PAD图所示。
例如:将数组A(1)到A(10)从大到小进行选择法排序的算法描述如下PAD图所示。
课程注册管理系统中“制订选课计划”用例的顺序图
顺序图是一张二维图。
其横向由多个参与交互的对象构成,这些对象之间无顺序关系。
一张基本的顺序图由以下图形元素构成:对象及其生命线与活跃期,消息传递,注解。
⑴顺序图中的对象表示为嵌于矩形框内形如
“[对象名]:[类名]”的文本,其中对象名、类名分别可省略,但不能同时省略。
对象间的消息传递表示为对象生命线之间的有向边,边上可标注
“[*][监护条件][返回值:=]消息名[(参数表)]”其中“*”为迭代标记,表示同一消息对同一类的多个对象发送。
建模者勿需考虑消息发送与接收之间的时延,确需考虑时(例如,在实时应用中,或者当消息通过网络传输时),可以用斜向下方的消息边来表示,见图。
顺序图中的消息分为同步、异步两种,分别用实心三角形箭头和普通箭头表示。
尽管对象在水平轴上的次序没有严格的语义信息,但建模应遵循以下布局规则:
⑴将用例的主动执行者实例安排在顺序图左侧;被动执行者实例安排在顺序图右侧。
⑵采用分层设计时,应将同层对象放在一起
每层对象的排序规则是:接近用户界面层靠左,接近后台处理层(如,数据持久存储层)靠右;
在软件分层结构中相邻的层,其对象集合在顺序图的水平布局中也相邻。
因同层对象交互较多,相邻层间的交互较少,跨层交互更少,所以此排序规则可有效缩短消息边的长度,简化顺序图。
⑶在遵守以上两条规则的同时,对象的排序应尽量缩短消息边的长度,并且尽量使消息边的方向从左至右。
关于消息边上文字的位置,有以下布局规则:
⑴如果模型读者辨识消息的目标对象较辨识消息的源对象为难,则文字应置于消息的目标端;否则,文字应置于消息的源端。
当消息的源和目标都易于辨识时,建模者可将文字置于任意一端(不宜将文字置于消息边的中间位置),但在本项目的所有顺序图中应保持风格一致。