「Software Engineering-3」Maintenance & Object-based

Arduous last task and a better Technology Paradigm

Posted by Culaccino on January 14, 2021

软件维护是软件生命周期的最后一个阶段,是保证软件在一个相当长的时期内能够正常运行的保证,故而其工作量非常大,甚至可能会束缚住软件开发组织开发其他软件的精力。软件工程这门学问从这一角度上来讲,其实也是在探索更好的方法来提高软件的可维护性、减少维护所需的工作量和总成本。

传统的软件工程方法(面向过程)在应用于大型软件时很少取得成功,而目前,面向对象方法已经成为人们在开发软件时的首选范型,它也是当前最好的软件开发技术。

1. 维护

软件维护:在软件已经交付使用过之后,为了改正错误或满足新的需要而修改软件的过程。

分类

  • 改正性维护:根据用户的报错
  • 适应性维护:适应变化的环境
  • 完善性维护:用户要求增加/修改功能
  • 预防性维护:改进可维护性或可靠性,夯实基础

特点

  1. 结构化维护和非结构化维护差别巨大

    非结构化:软件配置的唯一成分是代码,没有测试文档,不能进行回归测试

    结构化:确定软件重要的结构特点、性能特点以及接口特点,估计要求的改动将会带来什么影响,计划实施途径;测试时使用在测试文档中的说明进行回归测试。

  2. 维护的代价高昂

  3. 维护问题众多

过程

  1. 成立维护组织
  2. 撰写维护报告
  3. 描绘维护事件流
  4. 保存维护记录
  5. 评价维护活动

可维护性

  • 可理解性:可读性(模块化设计水平、文档可读性、程序可读性等)
  • 可测试性:文档、测试工具、软件可理解性
  • 可修改性:系统结构设计复杂度,耦合、内聚等
  • 可移植性:将环境变量局限在少数模块中
  • 可重用性:同一事物在不同环境中可以多次重复使用,可靠性&修改性都很高

软件再工程

  • 库存目录分析
  • 文档重构
  • 逆向工程
  • 代码重构
  • 数据重构
  • 正向工程

2. 面向对象&UML建模

看考试范围和作业似乎要求不多,但其实蛮重要的(挠掉头)

三类模型:对象模型(侧重数据结构)、动态模型(侧重控制结构)、功能模型(侧重系统功能)。

对象模型-类图

    • 使用标准属于
    • 使用具有确切含义的名词
    • 必要时用名词短语作名字
  • 属性-【 可见性 属性名:类型名=初值{性质串} 】
    • 可见性:”+“-public;”#“-protected;”-“ - private
  • 服务
    • 操作- 【可见性 操作名(参数表,用逗号分隔):返回值类型{性质串} 】
    • 参数- 【参数名:类型名=默认值】

功能模型-用例图

  • 系统:提供用例的黑盒子
  • 行为者:与系统交互的人或其他系统,代表外部实体
  • 用例:一个类,代表一类功能
  • 用例间的关系:扩展关系、使用关系,是泛化关系的两种不同形式。