软件工程_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)合并“分行”和“分行计算机”

    同理合并总行和总行计算机。

待修改

原文地址:https://www.cnblogs.com/aihuadung/p/10554581.html