软件工程知识梳理6-运行和维护

软件维护需要的工作量很大,大型软件的维护成本高达开发成本的4倍左右。所以,软件工程的主要目的就是要提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的总成本。

****定义:****软件已经交付使用之后,为了改正错误或满足新的需求而修改软件的过程。

维护活动:

  1. ****改正性维护:****诊断和改正错误的过程
  2. ****适应性维护:****为了和变化了的环境适当地配合而进行地修改软件地活动
  3. ****完善性维护:****新增功能或修改已有功能
  4. ****预防性维护:****改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件

****非结构化维护:****软件配置的唯一成分是程序代码,也就是没有软件配套文档。

****结构化维护:****维护工作从评价设计文档开始,确定软件重要的结构特点、性能特点以及接口特点;估量要求的改动将带来的影响,并且计划实施途径。

维护工作量模型:

M是维护用的总工作量,P是生产性工作量,K是经验常数,c是复杂程度(非结构化设计或缺少文档都会增加软件的复杂程度),d是维护人员对软件的熟练程度

------------------------------------------------------------------------------------------------------

软件维护过程:

  1. 维护组织
  2. 维护报告
  3. 维护的事件流
  4. 保存维护记录
  5. 评价维护活动

------------------------------------------------------------------------------------------------------

软件的可维护性:

****定义:****维护人员理解、改正、改动或改进这个软件的难易程度。

决定软件可维护性的因素:

  1. 可理解性
  2. 可测试性
  3. 可修改性
  4. 可移植性
  5. 可重用性

****文档:****影响软件可维护性的决定因素,由于长期使用的大型软件系统在使用过程中必然会经受多次修改,所以文档比程序代码更重要。

  1. 用户文档:描述系统功能和使用方法,并不关心这些功能是怎样实现的
  2. 系统文档:描述系统设计、实现和测试等各方面的内容

预防性维护

  1. 反复多次地做修改程序的尝试,与不可见的设计及源代码"顽强战斗",以实现所要求的修改。
  2. 通过仔细分析程序尽可能多地掌握程序的内部工作细节,以便更有效地修改它。
  3. 在深入理解原有设计的基础上,用软件工程方法重新设计﹑重新编码和测试那些需要变更的软件部分。
  4. 以软件工程方法学为指导,对程序全部重新设计.重新编码和测试,为此可以使用CASE工具(逆向工程和再工程工具)来帮助理解原有的设计。

软件再工程过程

  1. 库存目录分析
  2. 文档重构
  3. 逆向工程
  4. 代码重构
  5. 数据重构
  6. 正向工程

小结:

维护是软件生命周期的最后一个阶段,也是持续时间最长,代价最大的一个阶段。软件工程学的主要目的就是提高软件的可维护性,降低维护的代价。

软件维护通常包括4类活动:为了纠正在使用过程中暴露出来的错误而进行的改正性维护;为了适应外部环境的变化而进行的适应性维护;为了改进原有的软件而进行的完善性维护;以及为了改进将来的可维护性和可靠性而进行的预防性维护。

软件的可理解性、可测试性、可修改性,可移植性和可重用性,是决定软件可维护性的基本因素,软件重用技术是能从根本上提高软件可维护性的重要技术,而本书第9章至第12章将要讲述的面向对象的软件技术是目前最成功的软件重用技术。

软件生命周期每个阶段的工作都和软件可维护性有密切关系。良好的设计,完整准确易读易理解的文档资料,以及一系列严格的复审和测试,使得一旦发现错误时比较容易诊断和纠正,当用户有新要求或外部环境变化时软件能较容易地适应﹐并且能够减少维护引人的错误。因此,在软件生命周期的每个阶段都必须充分考虑维护问题,并且为软件维护预做准备。

文档是影响软件可维护性的决定因素,因此,文档甚至比可执行的程序代码更重要。文档可分为用户文档和系统文档两大类。不管是哪一类文档都必须和程序代码同时维护,只有和程序代码完全一致的文档才是真正有价值的文档。

虽然由于维护资源有限﹐目前预防性维护在全部维护活动中仅占很小比例,但是不应该忽视这类维护活动,在条件具备时应该主动地进行预防性维护。

预防性维护实质上是软件再工程。典型的软件再工程过程模型定义了库存目录分析、文档重构、逆向工程、代码重构﹑数据重构和正向工程6类活动。在某些情况下,以线性顺序完成这些活动,但也并不总是这样。上述模型是一个循环模型,这意味着每项活动都可能被重复﹐而且对于任意一个特定的循环来说,再工程过程可以在完成任意一个活动之后终止。

相关推荐
数据知道18 小时前
【系统分析师】第7章-基础知识:软件工程(核心总结)
软件工程·软考高级·系统分析师
小马哥编程18 小时前
软件工程:DO-178中的适航要求核心要素
软件工程
阿啄debugIT1 天前
装饰(Decorator)模式可以在不修改对象外观和功能的情况下添加或者删除对象功能
软件工程·1024程序员节
ftswsfb2 天前
常用配置文件
软件工程
张较瘦_2 天前
[论文阅读] 软件工程 - 需求工程 | 2012-2019年移动应用需求工程研究趋势:需求分析成焦点,数据源却藏着大问题?
论文阅读·软件工程·需求分析
roman_日积跬步-终至千里2 天前
【系统架构师设计(8)】需求分析之 SysML系统建模语言:从软件工程到系统工程的跨越
系统架构·软件工程·需求分析
czijin3 天前
【论文阅读】Security of Language Models for Code: A Systematic Literature Review
论文阅读·人工智能·安全·语言模型·软件工程
奋进的电子工程师3 天前
汽车软件研发智能化:AI在CI/CD中的实践
人工智能·ci/cd·汽车·软件工程·软件构建·代码规范
于顾而言3 天前
【笔记】Software Engineering at Google
笔记·log4j·软件工程
workflower3 天前
python代码Bug排查
测试用例·软件工程·需求分析·敏捷流程·结对编程