软件工程-(2)面对对象需求分析
领域模型
针对某一特定领域内概念类或者对象的抽象可视化表示。
主要用于概括地描述业务背景及业务流程,通过UML的类图和活动图进行展示,帮助软件开发人员在短时间内了解业务。
- 业务背景:通过代表关系的词汇建立概念类之间的关系,表示成代表业务知识结构的类图
- 业务流程:一般由角色及其执行的活动(活动及任务节点)构成,活动的输出一般有数据对象和传给另一个活动的消息组成,建议使用UML的活动图进行描述。
领域模型的创建步骤如下:
- 找出当前需求中的候选概念类
- 在领域模型中描述这些概念类。用问题域中的词汇对概念类进行命名,将与当前需求无关的概念类排除在外
- 在概念类之间添加必要的关联来记录那些需要保存记忆的关系,概念类之间的关系用关联、继承、组合/聚合来表示
- 在概念类中添加用来实现需求的必要属性
类图
类包含三个部分:类名、属性、操作
类的关系有:关联、组合与聚合、依赖和继承
关联
两个相对独立的类,当一个类的实例与另外一个类的特定实例存在固定关系时,这两个类之间就存在关联关系,在UML中,类之间的关联关系用实线箭头来表示,例如学生与图书之间有1对多的关联
组合与聚合
聚合和组合是一种特殊的关联,表示部分和整体关系的关联。在UML中,用带有空菱形的实线表示聚合,用带有实菱形的实线表示组合。组合类似于聚合,两者区别为:
发生聚合关系的两个类独立存在,组合中,当整体消亡,部分亦消亡。
例如:
学校和老师是聚合关系,两个类是独立,不存在学校消亡老师也随之消亡。
文档和章节是组合关系,如果文档不存在了,里面的章节肯定也不存在了
依赖
依赖对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。用虚线箭头表示。
继承
继承表示类与类(或者接口与接口)之间的父子关系,类之间的继承关系用带空心三角形的实现来表示
账户有两个子类GSM账户和CDMA账户:
用例模型
用例模型由以下四个部分组成:
- 用例图
- 用例说明
- 系统顺序图
- 操作契约
以用例为核心从使用者的角度描述和解释待构建系统的功能需求,
用例图
用例图由三个基本元素组成:
Actor:称为角色或参与者,表示使用系统的对象,代表角色不一定是人,也可以是组织、系统或设备
Use_case:称为用例,描述角色如何使用系统功能实现需求目标的一组成功场景和一系列失败场景的集合
Association:表示角色与用例之间的关系,以及用例和子用例之间的关系
基本用例与子用例
基本用例与角色直接相关,表示系统的功能需求
子用例,通过场景描述分析归纳出的用例,这些用例与角色无直接关系,与基本用例存在关联关系
·1.包含子用例<<include>>:指一个用例的行为包含了另一个用例的行为。
·2.扩展子用例<<extends>>:扩展用例只能在扩展点上增加行为和含义。基用例可以使用扩展用例的行为,但不是必须的。
·3.泛化子用例:代表一般与特殊的关系,与继承类似。在泛化关系中,子用例继承了父用例的行为和含义,子用例也可以增加新的行为和含义或覆盖父用例中的行为和含义
下面是一个用户与银行交互的例子:
用例说明
基于已经找到的用例和子用例,并参考之前的需求定义以及场景描述的内容,将用例交互的成功场景和失败场景以标准的格式归纳描述
系统顺序
在用例描述的基础上需要进一步确定角色与系统之间的交互信息,并以可编程的方式将其命名
系统顺序图中一般只需要三个UML的符号元素
操作契约
系统操作
处理系统事件的操作,也称为系统事件
操作契约是为系统操作而定义的,


