面向对象的分析与设计.ppt
- 文档编号:18718113
- 上传时间:2023-10-18
- 格式:PPT
- 页数:62
- 大小:2.16MB
面向对象的分析与设计.ppt
《面向对象的分析与设计.ppt》由会员分享,可在线阅读,更多相关《面向对象的分析与设计.ppt(62页珍藏版)》请在冰点文库上搜索。
面向对象的分析与设计,江西农业大学软件学院北京实习基地,2023/10/18,2,初始,2023/10/18,3,文档修订记录,2023/10/18,4,软件需求规格说明书的内容,1.简介1.1目的1.2范围1.3定义、首字母缩写词和缩略语1.4参考资料1.5概述2.整体说明2.1用例模型调查2.2假设与依赖关系3.具体需求3.1用例报告3.2补充规约4.支持信息,2023/10/18,5,创建初始用例图,用例图是“表示了系统内的参与者与用例之间关系的一个图”(UMLv1.4specpageB-21),2023/10/18,6,参与者(Actors),参与者就是代表与系统进行交互的角色,这个图标代表了系统的human类型的参与者,这个图标能代表参与者是一个外部系统,这个图标代表激活用例的时间触发器,2023/10/18,7,用例(UseCases),一个用例封装了为达到某个成果的系统的主要行为用例是用椭圆形表达的,它内部的文字就是用例的标题用例编码能够被用在标题的前面,用来建立与SRS的对应关系,一个用例描述了为实现某个有价值的成果,在参与者与系统之间进行的交互。
2023/10/18,8,系统边界,“用例可选择附在一个长方形里表示系统内部的边界(UMLv1.4spec.page354)”,系统的边界是随意的,这个等价的用例图表示了一个透明的系统边界,2023/10/18,9,用例关联,用例关联描述了“在用例中一个用户的参与。
”(UMLv1.4spec.page357)一个参与者必须关联一个或者多个用例一个用例必须关联一个或者多个参与者它们之间的关联是用一条没有箭头的实线来表示的,2023/10/18,10,精化用例,分析用例场景发现更多的细节,在分析的基础上精华用例图,用活动图验证用例,用CRC分析法确定关键抽象,表述域模型中关键抽象之间的关系,使用从用例场景中得的对象图来验证域模型,SRS,用例表格,2023/10/18,11,精化用例,2023/10/18,12,创建用例表,按照下面的步骤确定用例表中应填写的信息:
依照SRS文档来填写数据。
依据用例场景决定前置条件;依据用例场景决定触发条件;依据用例主要用例场景决定主事件流;依据用例次要用例场景决定可选事件流决定后置条件,2023/10/18,13,第一步根据需求规约文档填写相关信息,根据需求规约文档填写下列元素:
2023/10/18,14,第二步根据用例场景确定前置条件,一个好的用例场景应该在第一段就描述用例开始时系统的状态。
它们就是前置条件:
SantaCruz的床位和早餐的预约代理MedocaSansumi正耐心地等着电话,此刻旅店管理系统的主页面已经被打开。
2023/10/18,15,第三步根据用例场景确定触发条件,用例场景还应该陈述参与者如何才能知道应该去启动一个特定的用例。
这时候,来自纽约的Ms.JaneGoogol打来了电话,Ms.JaneGoogol说“你好,我是Ms.JaneGoogol。
我想为新年前夕预约房间”。
2023/10/18,16,第四步根据主要用例场景确定主事件流,根据主要用例场景确定主事件流。
Medoca:
“你什么时候入住?
”。
Jane:
“12月31日,我会一直住到1月5日”。
Medoca在表格中输入日期。
Medoca:
“你想要什么类型的房间?
”。
Jane:
“我和我丈夫住一块,所以一间单人房就足够了。
还有没有雅间?
”Medoca在定单表中选择“单人房间”并做查询。
2023/10/18,17,第五步根据次要用例场景确定可选事件流,根据次要用例场景确定可选事件流。
在主要场景和每一个次要场景之间按顺序做差异分析。
可选事件流就是主要场景和次要场景中不同的那些步骤。
2023/10/18,18,第六步决定后置条件,一个好的用例场景应该在最后一段描述用例结束时系统的状态。
它们就是后置条件。
Medoca把系统提供的预约编号告诉Jane:
“你还需要什么帮助吗?
”Jane:
“没有了。
”Medoca向她表示感谢并挂断电话。
Medoca关闭预约窗口,返回旅店管理系统MainHotelApp主页面。
2023/10/18,19,展开高级用例,一些在需求捕获阶段获取的用例太高级。
这种情况就要引入新的用例来分解工作流。
2023/10/18,20,展开高级用例(续),优化前的用例图:
2023/10/18,21,展开高级用例(续),展开版本产生了更多的联系:
2023/10/18,22,参与者继承,一个参与者可以继承父参与者的所有用例关系:
2023/10/18,23,用例的特殊化,一个用例可以派生出多个特殊化的用例:
用例特殊化通常由用例场景的多样性来决定。
2023/10/18,24,分析用例依赖,用例可以以两种方式依赖于其他用例:
一个用例(a)包含(include)另外一个用例(b)。
用例a需要用例b的功能并且总是执行这个内含的用例。
一个用例(a)扩展(extend)另外一个用例(b)。
用例a可能(可选择的)用到用例b的功能,于是去扩展用例b。
2023/10/18,25,确定和记录系统的通用行为。
回顾用例场景找到通用行为。
给这个通用的行为取一个名字并在用例图中绘制出包含关系。
依赖,2023/10/18,26,依赖,依赖使你找出那些不属于主事件流,而是可选场景中的系统行为。
2023/10/18,27,依赖,识别和记录与用例可选事件流有关的行为。
回顾用例场景找出重要的行为序列。
给这个行为取一个名字并在用例图中绘制出扩展关系,2023/10/18,28,一个旅店预约系统的组合实例,2023/10/18,29,用活动图来验证用例,在活动图中描绘用例的主事件流:
2023/10/18,30,分析用例场景发现更多细节,在分析的基础上精化用例图,用活动图验证用例,用CRC分析法确定关键抽象,表述域模型中关键抽象之间的关系,使用从用例场景中得到的对象图来验证域模型,SRS,UseCaseform,C,R,C,CRC,2023/10/18,31,软件需求说明书中的名词,以下是从酒店预定系统的需求说明书中摘录的一部分,名词用蓝色标记.“酒店预定系统负责管理多种类型的酒店预定,包括(但不仅限于)B&B,还有一些商务酒店预定.这个系统同时也包含了一个web应用,允许客人随时查看房间和酒店,查看当前和过去的预定记录,或者进行新的预定.系统同时也能调整一些小事件(例如商务和小型会议)”,2023/10/18,32,候选的关键抽象表格(示例),2023/10/18,33,CRC卡片,2023/10/18,34,CRC卡片,2023/10/18,35,候选的关键抽象表格(示例),2023/10/18,36,建立域模型,分析用例场景发现更多细节,在分析的基础上精化用例图,用活动图验证用例,用CRC分析法确定关键抽象,表述域模型中关键抽象之间的关系,使用从用例场景中得到的对象图来验证域模型,SRS,UseCaseform,C,R,C,2023/10/18,37,建立域模型(续),从关键抽象,你可以利用这些步骤创造域模型:
1.每个关键节点画类抽象并且:
a.列出已知属性b.列出已知操作2.画协作类之间的管理3.定义并记录相关文件的名称和作用4.定义并记录关联重数5.定义并记录关联方向6.定义并记录关联类,2023/10/18,38,第一步-画类节点,2023/10/18,39,第二步-画关联,2023/10/18,40,第三步-填入关联和角色名,2023/10/18,41,第四步-填入关联重数,2023/10/18,42,第五步-画箭头方向,2023/10/18,43,第六步-画关联类,2023/10/18,44,用对象图验证域模型,1.模拟一遍用例的场景,创建场景中提到的对象2.对比对象图和域模型,2023/10/18,45,用对象图验证域模型(续),2023/10/18,46,用对象图验证域模型(续),2023/10/18,47,用对象图验证域模型(续),2023/10/18,48,用对象图验证域模型(续),2023/10/18,49,用对象图验证域模型(续),2023/10/18,50,用对象图验证域模型(续),2023/10/18,51,使用鲁棒性分析为用例创建一个设计模型,通过合并设计和架构模型来创建解决方案模型,精化域模型来满足解决方案模型,应用设计模式到域模型和解决方案模型中,使用状态图确定并建立复杂对象状态的模型,Server,Client,TCP,用例表,鲁棒分析,2023/10/18,52,鲁棒性分析,鲁棒性分析是这样一个过程,它引导我们从用例转换为支持用例的模型:
2023/10/18,53,鲁棒性分析(续),鲁棒性分析的输入:
一个用例这个用例的用例场景这个用例的活动图(如果可以用到)域模型(domainmodel)鲁棒性分析的输出:
通过一个UML序列图和一些设计组件:
边界、服务、实体组件,我们得出设计模型。
2023/10/18,54,实体组件,实体通常对应域对象。
大多数实体是具有持久性的。
实体可以有非常复杂的行为。
“一个实体类(组件)通常用来模拟那些长期存在并且具用持久性的信息。
”(Jacobson,Booch,和Rumbaugh第184页)。
2023/10/18,55,控制组件,调整控制流在工作流中隔离所有从边界组件到实体组件的更改。
(“控制类(组件)扮演协调、序列化、事务以及控制另外的对象的角色,而且他们经常被用来封装与某个特定用例的控制。
”Jacobson,Booch,和Rumbaugh第185页)。
2023/10/18,56,边界组件,抽取用户界面、传感器(sensors)、通信接口等。
高层(High-level)用户接口组件。
每一个边界组件必须至少与一个参与者关联起来。
“一个边界类(或者边界组件)用于针对系统和参与者(用户或者外部系统)之间交互建模。
”(Jacobson,Booch,和Rumbaugh第183页)。
ResvUI,2023/10/18,57,鲁棒性分析过程描述,1.选择一个用例2.构造一个满足用例活动性的协作图。
a.识别支持用例活动的设计组件。
b.画出这些组件间的关联c.用信息标记这些关联3.从另一个角度,把协作图转换成序列图(可选的)。
2023/10/18,58,协作图元素,2023/10/18,59,把协作图转换成序列图,为了给鲁棒性分析提供另外一个视角,你可以把协作图转换成序列图。
这个图对开发者而言将更为有用。
下一个部分将描述UML序列图。
2023/10/18,60,序列图元素,2023/10/18,61,解决方案,可依据架构师的设计,进行最终的解决方案设计通常可套用开源框架或公司内部平台框架,2023/10/18,62,Thankyou!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 分析 设计