前言:绘制各种类型的图是重点,对于面向对象建模中需要绘制的图总结在第五期中:
软工导论知识框架(五)面向对象方法学
一.分析过程
1.获取需求
- 与用户交谈,向用户提问题;
- 参观用户的工作流程,观察用户的操作;
- 向用户群体发调查问卷;
- 与同行、专家交谈,听取他们的意见;
- 分析已经存在的同类软件产品,提取需求;
- 从行业标准、规则中提取需求;
- 从Internet上搜查相关资料等。
2.整理需求:书写需求陈述
需求陈述内容包括问题范围,功能需求,性能需求,应用环境及假设条件。(建模用的蓝本)
3.建立模型
面向对象分析模型由三个独立模型组成:
- 功能模型:指明系统应“做什么”,由用例图表示。
- 对象模型:描述静态结构, 定义做事情实体,类图和对象图表示。
- 动态模型:描述交互过程, 由状态图和顺序图表示。
4.书写需求规格说明书
5.复审
二.功能模型
功能模型用用例图表达,研究需求陈述建立用例图:
1.识别外部执行者
2.识别用例
3.建立用例图
4.补充用例描述:为建立对象模型和动态模型打基础
三.对象模型
对象模型描述类及相互关系,表达目标系统静态结构。
建立对象模型步骤:
1.确定分析类: 分析模型中,分析类是概念层次上内容,类直接与应用逻辑相关,不关注技术实现。
(1)找出候选分析类
①边界类:通常,一参与者与一用例间交互或通信关联对应一边界类。
②控制类: 控制类负责协调边界类和实体类,通常在现实世界没有对应的事物。一般来说,一个用例对应一个控制类。
③实体类:实体类通常是用例中的参与对象,对应着现实世界中“事物”。
非正式分析法实现实体类的识别:需求陈述中的名词。
(2)筛选出正确的类
① 冗余
② 无关
③ 笼统
④ 属性
⑤ 操作
⑥ 实现 事务日志、通信链路。
(如上类型要进一步考虑完成筛选)
2.确定类的关联:
(1)初步确定关联:动词或动词词组、隐含关联、与用户及领域专家讨论补充。
① 直接提取动词短语
② 需求陈述中隐含的关联
③ 根据问题域知识得出的关联
(2)筛选
① 已删去类之间关联
② 与问题无关或与实现密切相关的关联删去。
③ 瞬时事件
④ 三元关联 : 三个或三个以上对象关联,可分解为二元关联或限定关联。
(3)进一步完善
① 正名
② 分解
③ 补充
3.划分主题;
4.确定属性——需求陈述中的名词
(1)误把类当属性 :独立存在更重要,则应为类。
(2)误把链属性作为属性 :属性要依赖某关联链存在,则为关联类的属性。
(3)误把限定当属性:属性值固定下来可减少重数,则应为限定。
(4)误把内部状态当属性:对象的非公开内部状态不作属性。
(5)过于细化:忽略对大多数操作都没有影响的属性。
(6)存在不一致属性:分解两个类。
5.识别继承
6.反复修改
四.动态模型:开发交互式系统,动态模型非常重要
1.编写典型交互行为脚本
①正常情况脚本
②异常情况脚本
③错误情况脚本
2.从脚本中提取事件及相关对象,用顺序图表达
从脚本提取所有外部事件,确定每类事件发送和接收对象。 针对系统中的典型功能,画出顺序图。
3.确定对象状态及状态间转换关系,用状态图描绘