《软件工程软件工程软件工程 (69).pdf》由会员分享,可在线阅读,更多相关《软件工程软件工程软件工程 (69).pdf(12页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、软件演化与维护 软件演化与维护 软件变化原因软件变化原因 软件的变化是不可避免的 软件在使用过程中,新的需求不断出现 商业环境在不断地变化 软件中的缺陷需要进行修复 计算机硬件和软件环境的升级需要更新现有的系统 软件的性能和可靠性需要进一步改进 关键:采取适当的策略,有效地实施和管理软件的变化!Lehman法则 法则 在用的程序持续地经历变化,或逐渐变得不可用。程序的不断修改将导致结构恶化,增加了复杂性。程序演化服从统计上的确定趋势和恒定性。后续发行对于整个系统功能不会产生很大改变。编程项目总体活动统计上是不变的。持续变化 递增复杂性 程序演化法则 熟悉程度守恒 组织稳定守恒 软件演化策略软件
2、演化策略 软件维护 为了修改软件缺陷或者增加新功能而对软件进行修改;而修改通常发生在局部,一般不会改变整个结构。软件再工程 为了避免软件本身退化而对软件的一部分进行重新设计和构造,以便提高软件的可维护性和可靠性等。软件维护类型软件维护类型 软件维护是软件被投入运行使用后人们对软件产品所进行的修改,变更通常是修改现有的组件或增加新的组件,一般不涉及体系结构的重大变化。改正性维护(17%)适应性维护(18%)完善性维护(65%)改正性维护:修改软件缺陷或不足 适应性维护:修改软件使其适应不同操作环境,主要包括硬件变化、操作系统变化或者其他支持软件变化等 完善性维护:增加或修改系统功能,使其适应业务
3、的变化 软件维护成本软件维护成本 软件维护成本是很昂贵的 业务应用系统:维护费用与开发成本大体相同 嵌入式实时系统:维护费用是开发成本的四倍以上 影响维护成本的因素影响维护成本的因素 团队稳定性:系统移交后开发团队会解散,人员分配到其他项目中,负责维护的人员通常不是原开发人员,需要花时间理解系统。合同责任:维护合同一般独立于开发合同,这样开发人员有可能缺少为方便维护而写软件的动力。人员技术水平:维护人员有可能缺乏经验,而且不熟悉应用领域。程序年龄与结构:程序结构随年龄增加而受到破坏,不易理解和变更。软件维护过程软件维护过程 变更请求 影响分析 版本规划 变更实现 系统发布 缺陷修补 平台适应
4、系统增强 提议的变更 需求分析 需求更新 软件开发 变更实现 变更请求 分析源代码 修改源代码 移交系统 紧急修补 软件再工程软件再工程 软件再工程 重新构造或编写现有系统的一部分或全部,但不改变其功能 在大型系统中某些部分需要频繁维护时,可应用软件再工程 再工程的目的是努力使系统更易于维护,系统需要被再构造和再文档化 优势:减少风险:重新开发一个在用的系统具有很高的风险,可能会有开发问题、人员问题和规格说明问题 降低成本:再工程的成本比重新开发软件的成本要小得多 再工程过程再工程过程 最初程序 源代码转换 逆向工程 程序结构改善 程序文档 程序模块化 结构化程序 模块化程序 最初的数据 数据
5、再工程 经过再工程 的数据 现有软件系统 理解与转换 再工程的系统 逆向工程逆向工程 逆向工程是以复原软件的规格说明和设计为目标的软件分析过程 大多数情况下,逆向工程弥补缺乏良好文档的问题 开发阶段的文档与维护阶段的文档可能是不一致的 开发阶段编写的程序文档在维护阶段是非常有用的 dirty source coderestructurecodeextractabstractionsrefine&simplifyclean source codeinitial specificationfinal specificationprocessinginterfacedatabase谢谢大家谢谢大家!THANKS