zoukankan      html  css  js  c++  java
  • 软件工程_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)合并“分行”和“分行计算机”

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

    待修改

  • 相关阅读:
    《白帽子讲web安全》学习笔记(第一篇)
    pytorch安装配置(VScode +miniconda+pytorch)
    tensorflow-GPU安装配置(VScode +miniconda+tensorflow-gpu)
    Win10+VScode +miniconda安装tensorflow(CPU版本)
    The TensorFlow library wasn't compiled to use SSE instructions解决方法
    python安装配置(miniconda版)(Win10+VScode +miniconda)
    Git使用方法
    PDF快速导出为word(免费方法)
    CAJ文件转PDF
    拖拽的效果 第一步 设置 可拖拽的属性 draggable="true" 绑定drag 事件 第二步 设置 放置位置 触发的事件 dragover 第三步 设置 放置之后 触发的事件 dragover 下面请看代码:
  • 原文地址:https://www.cnblogs.com/aihuadung/p/10554581.html
Copyright © 2011-2022 走看看