软件构造——可维护性

本文探讨了软件维护的重要性,尤其是Java软件的可维护性。介绍了软件维护的四种类型,强调了软件演化的概念。文章详细讨论了模块化设计、面向对象的设计原则SOLID,以及圈复杂度、代码行数等可维护性指标,旨在提高软件的可扩展性、灵活性和适应性。
摘要由CSDN通过智能技术生成

本文是对软件构造课程软件可维护性相关内容的整理与理解,使用的编程语言为 Java。可维护性,也就是指软件发生变化时,是否可以以很小的代价适应变化。

软件维护和演化

软件维护

软件维护(software maintenance)是指软件产品在出厂后为了纠正故障、提高性能或其他属性而进行的修改。

软件维护有如下几种:

  • 纠错性维护 (corrective maintenance):25%。在交付后对软件产品进行的反应性修改,以纠正发现的问题。
  • 适应性维护 (adaptive maintenance):21%。在交付后对软件产品进行的修改,以保持软件产品在变更或变化的环境中可用。
  • 完善性维护 (perfective maintenance):50%。在交付后对软件产品的增强,以提高性能或可维护性。
  • 预防性维护 (preventive maintenance):4%。在软件产品交付后对其进行修改,以便在软件产品的潜在故障变为有效故障之前发现并纠正它们。
    软件演化

软件发展(software evolution)是软件维护中的一个术语,指的是软件从最初的开发到后来由于各种原因不断更新的过程。一个典型系统超过 90% 的成本是在维护阶段产生的,任何成功的软件都不可避免地要进行维护。

维护不仅是运维工程师的任务,也是软件设计人员和开发人员的潜在任务。对于他们来说,必须在设计和构造阶段考虑软件未来的潜在变化与扩展。这样,灵活和可扩展的设计与结构就被综合考虑进来。这就是所谓的软件构造的“可维护性”、“可扩展性”和“灵活性”。

面向可维护性的软件构造有如下的例子:

  • 模块化设计与实现:低耦合高内聚
  • OO 设计原则:SOLID、GRASP
  • OO 设计模式
  • 基于语法的构造技术

可维护性的指标

可维护性的许多名称

  • 可维护性(maintainability):修改软件系统或组件以纠正错误、提高性能或其他属性,或适应变化的环境的易用性
  • 可扩展性(extensibility):软件设计与实现考虑到未来的发展,并被视为扩展系统的能力和实现扩展所需的工作水平的系统度量。
  • 灵活性(flexibility):软件能够根据用户需求、外部技术和社会环境等进行更改。
  • 可适应性(adaptability):交互式系统(自适应系统)的一种能力,它可以根据所获得的关于用户及其环境的信息来调整其行为以适应单个用户。
  • 可管理性(manageability):究竟能够多有效且容易地监控和维护软件系统,以确保系统的表现、安全及平稳运行。
  • 支持性(supportability):软件在部署后能够多有效地保持运行,这取决于资源,包括质量文档、诊断信息和有知识的和可用的技术人员。

一些常用的可维护性指标

圈复杂度

圈复杂度(cyclomatic complexity)衡量代码的结构复杂性。它是通过计算程序流中不同代码路径的数量来创建的。一个具有复杂控制流的程序将需要更多的测试来实现良好的代码覆盖,并且将更不容易维护。

代码行数

代码行数(lines of code)指示代码中的大致行数。一个非常高的代码行数可能表明一个类型或方法试图做太多的工作,应该被拆分。它还可能表明类型或方法可能很难维护。

可维护性指数

可维护性指数(maintainability index,MI)是一个在 0—100 的值

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值