软件工程复习(九)

概述

要求: 掌握OO分析的方法和步骤,业务,能够使用UML图进行分析建模(类图、用例图、状态图、顺序图等)

  • 面向对象分析是是辈出问题域内的对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型
  • 在用面向对象观点建立起的三种模型中,对象模型(类图)是 最基本、最重要、最核心

面向对象分析的过程

面向该对象分析,就是抽取和整理用户或需求建立问题域精确模型的过程

  • 用用例图捕获需求
  • 基于用例图构件类图
  • 3个子模型5个层次

    • 3个子模型:对象模型,动态模型,功能模型
    • 5个层次
      • 主题层(通常对应包的划分)
      • 类与对象层
      • 结构层
      • 属性层
      • 服务层
  • 大体流程

    • 寻找类与对象
    • 识别结构
    • 识别主题
    • 定义属性
    • 建立动态模型
    • 建立功能模型
    • 定义服务

需求陈述

  • 通常,需求陈述的内容包括:问题范围,功能需求,性能需求,应用环境及假设条件等。总之,需求陈述应该阐明“做什么”而不是“怎样做”
  • 描述用户的需求而不是提出解决问题的方法
  • 应该避免对设计策略施加过多的约束,也不要描述系统的内部结构,这样做将限制实现的灵活性
  • 系统性能及系统与外界环境交互协议的描述,是合适的需求
  • 此外,对采用的软件工程标准、模块构造准则、将来可能做的扩充以及可维护性要求等方面的描述,也都是适当的需求。

建立对象模型

  • 确定类与对象

    • 找出和候选的类与对象

      • 用自然语言书写的需求陈述为依据,把陈述中的名词作为类与对象的候选者
      • 用形容词作为确定属性的线索
      • 把动词作为服务(操作)的候选者
    • 筛选出正确的类与对象

      • 冗余、无关、笼统、属性、操作、实现..
  • 确定关联

    • 初步确定关联

      • 大多数关联可以通过直接提取需求陈述中的动词词组而得出
      • 通过分析需求陈述,还能发现一些在陈述中隐含的关联
    • 筛选

      • 已删去的类之间的关联
      • 与问题无关或应在实现阶段考虑的关联
      • 瞬时关联
      • 三元关联
      • 派生关联
    • 完善

      • 正名
      • 分解
      • 补充
      • 标明重数
  • 划分主题

    • 在开发大型、复杂系统的过程中,为了降低复杂程度,习惯于把系统再进一步划分成几个不同的主题,也就是在概念上把系统包含的内容分解成若干个范畴
  • 确定属性

    • 分析

      • 属性的确定既与问题域有关,也和目标系统的任务有关
      • 应该仅考虑与具体应用直接相关的属性,不要考虑那些超出所要解决的问题范围的属性
      • 在分析过程中应该首先找出最重要的属性,以后再逐渐把其余属性增添进去
      • 在分析阶段不要考虑那些纯粹用于实现的属性
    • 选择

      • 认真考察经初步分析而确定下来的那些属性,从中删掉不正确的或不必要的属性
        • 误把对象当作属性
        • 把链属性误作为属性
        • 把限定误当成属性
        • 误把内部状态当成了属性
        • 过于细化
        • 存在不一致的属性
  • 识别继承关系

  • 反复修改

建立动态模型

  • 第一步,是编写典型交互行为的脚本
  • 第二步,从脚本中提取出事件,确定除服每个事件的动作对象以及接受事件的目标对象(画出事件跟踪图)
  • 第三步,排雷事件发生的次序,确定每个对象可能有的状态及状态之间的转换关系,并用状态图描绘它们

建立功能模型

  • 画出基本的系统模型图
  • 画出功能级数据流图

EG:

  • 对象模型参考:
  • 动态模型参考
    • 脚本
    • 事件跟踪图
  • 功能模型参考
坚持原创技术分享,您的支持将鼓励我继续创作!