软件工程知识梳理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类活动。在某些情况下,以线性顺序完成这些活动,但也并不总是这样。上述模型是一个循环模型,这意味着每项活动都可能被重复﹐而且对于任意一个特定的循环来说,再工程过程可以在完成任意一个活动之后终止。

相关推荐
雾江流3 小时前
LocalDream 2.1.2 |在手机设备上运行SD模型,支持文本到图像生成和图像重绘,无任何限制
软件工程
雾江流1 天前
vidhub v1.3.13 |聚合主流网盘,自动刮削整理影视资源,有网盘会员的可入,或者使用不限速网盘
软件工程
数学小牛马2 天前
现代软件工程课程 个人博客作业2-结对编程项目总结
软件工程·结对编程
云知谷2 天前
【经典书籍】C++ Primer 第19章特殊工具与技术精华讲解
c语言·开发语言·c++·软件工程·团队开发
0和1的舞者2 天前
《Git:从入门到精通(八)——企业级git开发相关内容》
大数据·开发语言·git·搜索引擎·全文检索·软件工程·初学者
雾江流3 天前
元萝卜 1.0.27| 免Root,XP模块框架,支持应用多开分身,一键微信平板模式
软件工程·1024程序员节
电子科技圈3 天前
芯科科技推出智能开发工具Simplicity Ecosystem软件开发套件开启物联网开发的新高度
mcu·物联网·设计模式·软件工程·软件构建·iot·1024程序员节
云知谷3 天前
【经典书籍】C++ Primer 第15章类虚函数与多态 “友元、异常和其他高级特性” 精华讲解
c语言·开发语言·c++·软件工程·团队开发
云知谷4 天前
【经典书籍】C++ Primer 第16章模板与泛型编程精华讲解
c语言·开发语言·c++·软件工程·团队开发
workflower4 天前
基本作业-管理⾃⼰的源代码
开发语言·单元测试·软件工程·需求分析·个人开发