软件工程_01面向对象分析
做毕设可以进行参考
一.总体步骤
1.获取需求
2.整理需求
3.建立模型
功能模型
,对象模型
,动态模型
4.书写需求规格说明书
5.复审
二.详细步骤
1.获取需求
与用户交谈,向用户提问题;
参观用户的工作流程,观察用户的操作;
向用户群体发调查问卷;
与同行、专家交谈,听取他们的意见;
分析已经存在的同类软件产品,提取需求;
从行业标准、规则中提取需求;
从Internet上搜查相关资料等。
2.整理需求
书写需求陈述;
需求陈述内容包括问题范围,功能需求,性能需求,应用环境及假设条件。
3.建立模型
建立功能模型,对象模型,动态模型
建立功能模型:
功能模型用用例图表达,研究需求陈述建立用例图。
步骤:
1.识别外部执行者;
2.识别用例;
3.建立用例图;
4.补充用例描述:为建立对象模型和动态模型打基础。
建立对象模型
对象模型描述类及相互关系,表达目标系统静态结构。
建立对象模型步骤:
1.确定分析类;
找出候选分析类
①边界类;确定边界类
通常,一参与者与一用例间交互或通信关联对应一边界类
②控制类;
识别控制类
控制类负责协调边界类和实体类,通常在现实世界没有
对应的事物。 一般来说,一个用例对应一个控制类。
③实体类。
识别实体类
实体类通常是用例中的参与对象,对应着现实世界中“事物”
使用非正式分析法确定分析类
2.确定类的关联;
3.划分主题;
4.确定属性;
5.识别继承;
6.反复修改。
建立动态模型
开发交互式系统,动态模型非常重要。
步骤:
1.编写典型交互行为脚本
2.从脚本中提取事件及相关对象,用顺序图表达
3.确定对象状态及状态间转换关系,用状态图描绘
结合ATM系统的实例,介绍建立动态模型方法。
脚本描述用户与目标系统间的一个或多个典型交
互过程。
①正常情况脚本
②异常情况脚本
③错误情况脚本
画顺序图
从脚本提取所有外部事件,确定每类事件发送和接收对象。
针对系统中的典型功能,画出顺序图。
确定分析类
非正式分析法:提取需求陈述中名词。
例:用非正式分析法提取ATM系统中的实体类。
银行,自动取款机(ATM),系统,中央计算机,分行计算机,柜员终端,网络,总行,分行,软件,成本,市,街道,营业厅,储蓄所,柜员,储户,现金,支票,账户,事务,现金兑换卡,余额,磁卡,分行代码,卡号,用户,副本,信息,密码,类型,取款额,账单,访问
ATM系统分析员根据领域知识或常识提取出隐含的类。
通信链路、事务日志
(2)筛选出正确的类
① 冗余
储户与用户,现金兑换卡与磁卡及副本应去掉“用户”、
“磁卡”、“副本”,保留“储户”和“现金兑换卡”。
② 无关
与本问题密切相关类放进目标系统,去掉“成本”、“市”
“街道”、“营业厅”、“储蓄所”。
③ 笼统
银行(总行和分行)、系统、软件、信息、访问(事务)
④ 属性
现金、支票、取款额、账单、余额、分行代码、卡号、密码和类型。
⑤ 操作
需求陈述中既作名词又作动词的词,慎重考虑是作类合适,还是作类中操作合适。
⑥ 实现
事务日志、通信链路。
(1)初步确定关联
动词或动词词组;
隐含关联;
与用户及领域专家讨论补充。
① 直接提取动词短语
② 需求陈述中隐含的关联
③ 根据问题域知识得出的关联
(2)筛选
① 已删去类之间关联
② 与问题无关或与实现密切相关的关联删去。
“系统处理并发的访问”
④ 瞬时事件
⑤ 三元关联
(3)进一步完善
① 正名
"分行提供分行计算机和柜员终端"改为"分行拥有分行计算机"和"分行拥有柜员终端"。
② 分解
把“事务”分解成“远程事务”和“柜员事务”。
③ 补充
需补充"柜员输入柜员事务"、"柜员事务输进柜员终端"、"在ATM上输入远程事务"和"远程事务由现金兑换卡授权"。
需求陈述中的名词
(1)误把类当属性
独立存在更重要,则应为类。
(2)误把链属性作为属性
属性要依赖某关联链存在,则为关联类的属性。
(3)误把限定当属性
属性值固定下来可减少重数,则应为限定。
(4)误把内部状态当属性
对象的非公开内部状态不作属性。
(5)过于细化
忽略对大多数操作都没有影响的属性。
(6)存在不一致属性
分解两个类。
反复修改
(1)分解“现金兑换卡”类
现金兑换卡有两独立功能:标志储户访问账号的权限;含有 分行代码和卡号的数据载体。(卡权限和现金兑换卡)
(2)“事务”由“更新”组成
更新包括取款、存款、查询。有自己属性(类型、金额),应独立存在。
(3)合并“分行”和“分行计算机”
同理合并总行和总行计算机。
待修改