今天说说可维护性,一般来说80%的代码都不是本人进行维护的。
影响可维护性的因素:
1)是否是同一个开发人员。
2)是否有一个很好的code base。
3)是否有完善的文档,文档是否同步。
4)代码是否有注释。
5)维护人员对业务领域是否了解。
软件维护主要工作:
1)修正缺陷。
如果不了解业务,首先要了解业务。分析缺陷产生的原因,找到应该修改的模块。了解类直接的关系。修正缺陷,测试。
2)满足新的需求
如果不了解业务,首先应该了解业务。然后分析新需求和系统的功能对比。设计如何增加新功能,分析如何接口老的功能。进行重构,编写测试。
3)重构,为了使以后代码更容易维护。
了解新老业务需求,绘制域模型,绘制整体流程图,找出系统涉及的角色,了解系统和其它外部系统的接口。
为了防止人的因素影响可维护性,要保证每一块业务始终有一个人熟悉。
关键部分,比如需求,架构设计,数据库设计,域模型,流程图最好文档化下来,并保持更新。
每次修改,应该记录修改人,修改时间,修改内容。应该文档化每次修改活动的细节。
其实,维护软件最头痛的是,随着时间的流逝,以前的关于系统的理解和记忆已经逐渐消失了。每次修改bug或增加新功能,要通过看文档,看代码来回忆当时开发系统时的场景。最终目的是使维护人员的头脑能够恢复到开发时的上下文。
可惜人脑不能录像,否则把当时人脑思考的过程记录下来。那么,是否可以记录一些当时的场景呢?
比如对关键讨论录像保存,用数码相机拍下白板上的讨论结果,以模块为主题组织这些资料,定期的更新它。除了我们写就的文档,这些片段其实都可以保存下来。
像文物和考古学家一样,我们在维护一个老系统,也是在考古,任何以前的蛛丝马迹都可能启发我们,使我们找回当时我们的上下文。
还有一个就是单元测试,非常重要,它像考古学家使用的探针。当时光荏苒,日月如梭,转眼到了几年后。只要你不色盲,你仍然可以凭借红条和绿条来唤起你的回忆。
养成随时记录的好习惯,可以参考我的这篇文章程序员的结构化思维方法——一个思维脑图模板
,
使用这样的模板,你可以随时记录你的思考过程,相当于把它序列化下来,我觉得非常有用。
对于一些常规的任务,比如部署注意事项(可能会修改配置文件,拷贝一些类),把这些整理成checklist,到时候不用动脑子,直接照着做就行了。
可扩展性是可维护性的技术基础。清晰的代码和文档也非常重要,换句话说,可理解性是可维护性的前提。如果你都不理解它,你怎么维护它呢。
下一篇文章,我说说可理解性,这个我认为是软件开发中的最重要的属性。
修改日志:
2009-02-12 : 增加单元测试,养成好的记录习惯以及checklist使用建议三点。
分享到:
相关推荐
完整英文版 IEC 60706-2:2006 Maintainability of equipment - Part 2:Maintainability requirements and studies during the design and development phase(设备的可维护性 - 第 2 部分:设计和开发阶段的可维护...
可维护性(Maintainability)** 可维护性是指系统在出现故障后能迅速恢复到正常工作状态的特性。它涉及故障检测、隔离、修复的速度和效率。良好的可维护性可以缩短停机时间,减少维修成本,并提高整体性能。为了...
完整英文版 IEC 60706-3:2006 Maintainability of equipment - Part 3:Verification and collection, analysis and presentation of data (设备的可维护性-第3部分:数据的验证和收集、分析和呈现)。IEC 60706 ...
完整英文电子版 IEC 60300-3-10:2001 Dependability management - Part 3-10:Application guide - Maintainability (可靠性管理 - Part 3-10:应用指南 - 可维护性)。应用指南可用于实施涵盖产品启动、开发和...
完整英文版 IEC 60706-5:2007 Maintainability of equipment - Part 5:Testability and diagnostic testing (设备的可维护性 - 第 5 部分:可测试性和诊断测试)。本指南旨在为早期考虑设计和开发中的可测试性...
完整英文版 IEC 61703:2016 Mathematical expressions for reliability, availability, maintainability and maintenance support terms(可靠性、可用性、可维护性和维护支持术语的数学表达式)。IEC 61703:2016 ...
计算文件明智的平均可维护性和最小可维护性。正在安装 npm install ts-complex用法可维护性 const tscomplex = require('ts-complex');const path = './test.ts'; // Finding maintainability of this fileconst ...
【标题】中的“IEC Standard - Maintainability”指的是国际电工委员会(International Electrotechnical Commission,简称IEC)制定的一项标准,关注的是系统的可维护性。这个标准旨在为设计、开发、评估和改进产品...
Java源码剖析——深入理解Freemind的可维护性报告 在软件开发中,源代码的质量和可维护性是至关重要的。"Freemind-Maintainability-Report"项目是针对开源项目Freemind进行的一次可维护性分析,旨在评估和改善其源...
这本书聚焦于四个核心概念:可靠性(Reliability)、可用性(Availability)、可维护性(Maintainability)和安全性(Safety),这些在现代工业,尤其是流程行业中具有至关重要的地位。 可靠性工程是确保系统或设备...
Java显示原始码可维护性指标计算系统 该可维护性指标计算系统是用于提供有关可维护性指标值的信息的系统。 在该系统中,开发人员可以输入Java项目目录,该目录或子目录中包含Java源代码文件。 然后,系统将通过首先...
- **软件可维护性大纲 (SOFTWARE MAINTAINABILITY PROGRAM)**:对应于软件可维护性的规划,涵盖了确保软件易于修改、升级和修复的策略和措施。 - **FRACAS(FAULT REPORTING, ANALYSIS AND CORRECTIVE ACTION ...
2. **软件可维护性大纲**(Software Maintainability Program): 同样是一份文档,用于描述为保证软件满足规定的可维护性要求而采取的技术和管理方法。这份文档同样包含了要完成的工作、所需资源、使用的方法、采用...
Definition of Terms for Reliability and Maintainability
首先,EN 50126的核心概念是“可靠性”(Reliability)、“可维护性”(Maintainability)和“安全性”(Safety)。这三个概念在铁路系统的设计和运营中至关重要,因为它们直接影响到铁路系统的性能、乘客的安全以及...
4. **可维护性(Maintainability)**:可维护性是指软件在出现错误或需要更新时,能容易地进行修改和改进的能力。好的可维护性可以降低维护成本,提高软件生命周期的可持续性。 5. **效率(Efficiency)**:效率...
2. **软件可维护性大纲(SOFTWARE MAINTAINABILITY PROGRAM)**:关注于软件的易维护性,即软件在出现错误或需要改进时,能快速、经济地进行修改。这涉及到代码的清晰度、模块化设计、文档的完备性等多个方面。 3. **...
可靠性(Reliability)、可用性(Availability)、可维护性(Maintainability)和安全性(Safety)合称为RAMS,是评价系统性能和评估风险的重要指标,尤其在工业、航空、轨道交通、电力系统等领域具有至关重要的地位...
1. 可维护性(Maintainability) 2. 可靠性(Reliability) 3. 效率(Efficiency) 4. 可用性(Usability) 5. 可移植性(Portability) 6. 安全性(Security) 7. 可扩展性(Scalability) Boehm 模型强调了软件...
Maintainability Prediction