软件工程10.ppt
10、面向对象分析,目 录,3.需求陈述,4.建立功能模型,5.建立对象模型,6.建立动态模型,2.面向对象分析的基本过程,7.定义服务,1.面向对象分析概述,软件工程,1.面向对象分析概述,定义抽取整理用户需求,建立问题域精确模型的过程。方法通过与领域专家的交流充分理解用户的需求。将用户需求用某种二义性的方式表达成文档资料。分析验证用户的需求,得到软件需求规格说明书。关键识别出问题域内的类与对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。,软件工程,目 录,3.需求陈述,4.建立功能模型,5.建立对象模型,6.建立动态模型,2.面向对象分析的基本过程,7.定义服务,1.面向对象分析概述,软件工程,2.面向对象分析的基本过程,分析描述用户需求的文件不断完善用户需求深入理解用户需求,抽象出目标系统的本质,用模型准确的表达出来评审面向对象分析的过程是学习和抽取相关领域知识的过程,软件工程,2.面向对象分析的基本过程,面向对象分析的过程是学习和抽取相关领域知识的过程。三个子模型与五个层次2.1 三个子模型2.2 五个层次,软件工程,2.1 三个子模型,功能模型(数据变换)定义“做什么”对象模型(静态结构)定义“由谁做”动态模型(交互次序)定义“何时做”,软件工程,2.2 五个层次,1.主题层对应活动识别主题2.类与对象层对应活动识别类与对象3.结构层对应活动识别结构4.属性层对应活动定义属性5.服务层对应活动定义服务,软件工程,复杂问题的对象模型的5个层次,软件工程,目 录,3.需求陈述,4.建立功能模型,5.建立对象模型,6.建立动态模型,2.面向对象分析的基本过程,7.定义服务,1.面向对象分析概述,软件工程,3.需求陈述,书写要点问题范畴功能需求性能需求应用环境假设条件,软件工程,例子:自动取款机(ATM)系统,软件工程,目 录,3.需求陈述,4.建立功能模型,5.建立对象模型,6.建立动态模型,2.面向对象分析的基本过程,7.定义服务,1.面向对象分析概述,软件工程,4.建立功能模型,4.1 确定角色与用例4.2 绘制用例图4.3 描述角色与用例,软件工程,4.1 确定角色与用例,确定角色储户银行职员确定用例取款 转帐 通帐增款结束,软件工程,4.2 绘制用例图,绘制角色:储户银行职员绘制用例取款 转帐 通帐增款结束,软件工程,4.3 描述角色与用例,描述角色:储户银行职员描述用例(描述功能、构造事件序列)取款 转帐 通帐增款结束,软件工程,软件工程,目 录,3.需求陈述,4.建立功能模型,5.建立对象模型,6.建立动态模型,2.面向对象分析的基本过程,7.定义服务,1.面向对象分析概述,软件工程,5.建立对象模型,面向对象分析首要的工作建立问题域的对象模型建立对象模型的信息来源需求陈述应用领域的专业知识关于客观世界的常识,软件工程,5 建立对象模型的具体过程,5.1 确定类与对象5.2 确定关联5.3 划分主题5.4 确定属性5.5 识别继承关系5.6 反复修改,软件工程,5.1 确定类与对象,找出候选的类与对象参照5类分类可感知的物理实体、人或组织的角色、应该记忆的事件、两个或多个对象的相互作用、需要说明的概念非正式分析筛选出正确的类与对象依据下列标准删除不正确或不必要的类与对象冗余、无关、笼统、属性、操作、实现,软件工程,5 建立对象模型的具体过程,5.1 确定类与对象5.2 确定关联5.3 划分主题5.4 确定属性5.5 识别继承关系5.6 反复修改,软件工程,5.2 确定关联,初步确定关联直接提取动词短语得出的关联需求陈述中隐含的关联根据问题域知识得出关联筛选已删去的类之间的关联与问题无关的或应在实现阶段考虑的关联瞬时事件三元关联派生关联进一步完善正名分解补充标明重数,软件工程,ATM系统原始的类图,软件工程,5 建立对象模型的具体过程,5.1 确定类与对象5.2 确定关联5.3 划分主题5.4 确定属性5.5 识别继承关系5.6 反复修改,软件工程,5.3 划分主题,把ATM系统划分成三个主题总行分行ATM,软件工程,5.3 划分主题,软件工程,5 建立对象模型的具体过程,5.1 确定类与对象5.2 确定关联5.3 划分主题5.4 确定属性5.5 识别继承关系5.6 反复修改,软件工程,5.4 确定属性,两个步骤:分析确定初步属性筛选入选的属性,删除不正确或不必要的属性常见的错误情况:误把对象当成属性误把关联类的属性当成类属性误把限定当成属性把内部状态当成属性过于细化存在不一致的属性,软件工程,ATM系统对象模型中的属性,软件工程,5 建立对象模型的具体过程,5.1 确定类与对象5.2 确定关联5.3 划分主题5.4 确定属性5.5 识别继承关系5.6 反复修改,软件工程,5.5 识别继承关系,建立继承关系的两种方式:自底向上抽象出已有类的共同性质泛化出父类。自顶向下把现有的类细化成更加具体的类。注意:使用多继承可以提高共享程度,但也增加了概念和实现的复杂程度。使用多继承时,通常指定一个主父类,从它继承大部分的属性和行为,次要类只补充一些属性和行为。,软件工程,带有继承关系的ATM对象模型,软件工程,5 建立对象模型的具体过程,5.1 确定类与对象5.2 确定关联5.3 划分主题5.4 确定属性5.5 识别继承关系5.6 反复修改,软件工程,5.6 反复修改,软件开发过程就是一个多次反复修改、逐步完善的过程。ATM可能做的修改分解现金兑换卡类事物由更新组成把“分行”和“分行计算机”合并,软件工程,修改后的ATM对象模型,软件工程,目 录,3.需求陈述,4.建立功能模型,5.建立对象模型,6.建立动态模型,2.面向对象分析的基本过程,7.定义服务,1.面向对象分析概述,软件工程,6.建立动态模型,开发交互式系统时,动态模型起很重要作用步骤编写典型交互行为的脚本。从脚本中提取出事件,确定触发每个事件的动作对象以及接受事件的目标对象。排列事件发生的次序,确定每个对象可能有的状态及状态间的转换关系,并用状态图描绘它们。比较各个对象的状态图,检查它们之间的一致性,确保事件之间的匹配。,软件工程,编写脚本,脚本的概念系统在某一执行期间内出现的一系列事件。描述用户与目标系统间的一个或多个典型的交互过程,以便对目标系统行为有更具体的认识。编写脚本的目的保证不遗漏重要的交互步骤,有利于确保整个交互过程的正确性和清晰性。注意编写脚本应首先编写正常情况下的脚本,然后考虑特殊情况,最后考虑出错时的情况。,软件工程,ATM系统的正常情况脚本,软件工程,ATM系统的异常情况脚本,软件工程,设想用户界面,用户界面的评价标准美观程度方便程度易学程度效率,软件工程,画事件跟踪图,步骤:确定事件事件包括系统与用户交互的所有信号、输入、输出、中断、动作等。画出事件跟踪图事件跟踪图实质上是扩充的脚本,可以认为是简化的UML顺序图。,软件工程,ATM系统正常情况脚本的事件跟踪图,软件工程,画状态图,状态图描绘事件与对象状态的关系。通常,用一张状态图描绘一类对象的行为,它确定了由事件序列引出的状态序列。ATM系统的状态图分类ATM总行分行,软件工程,ATM类的状态图,软件工程,总行类的状态图,软件工程,分行类的状态图,软件工程,建立功能模型,功能模型表明了系统中数据之间的依赖关系,以及有关的数据处理功能。由一组数据流图组成。其处理功能可用IPO图(或表)、伪码等多种方式进一步描述。ATM系统数据流图的画法画出基本系统模型图画出功能级数据流图描述处理框功能,软件工程,画出基本系统模型图,基本系统模型由若干个数据源点/终点,及一个处理框组成。处理框代表了系统加工、变换数据的整体功能。指明了目标系统的边界。由数据源点输入的数据和输出到数据终点的数据,是系统与外部世界之间的交互事件的参数。,软件工程,ATM系统的基本系统模型,软件工程,画出功能级数据流图,方法把基本系统模型中单一的处理框分解成若干个处理框,以描述系统加工、变换数据的基本功能,就得到功能级数据流图。,软件工程,ATM系统的功能级数据流图,软件工程,描述处理框功能,描述内容每个处理框所代表的功能。既可以是说明性的,也可以是过程性的。说明性描述规定了输入值和输出值之间的关系,以及输出值应遵循的规律。过程性描述则通过算法说明“做什么”。,软件工程,目 录,3.需求陈述,4.建立功能模型,5.建立对象模型,6.建立动态模型,2.面向对象分析的基本过程,7.定义服务,1.面向对象分析概述,软件工程,7.定义服务,建立完整的对象模型既要确定类中应该定义的属性,又要确定类中应该定义的服务。需要等到建立了动态模型和功能模型之后,才能最终确定类中应有的服务。服务的定义常规行为从事件导出的操作与数据流图中处理框对应的操作利用继承减少冗余操作,软件工程,2023/3/10,软件工程,58,谢谢!,