ξ 3.1 软件系统的可维护性
☆ 导致一个软件设计的可维护性较低,也就是说会随着性能要求的变化二“腐烂”的真正原因有四个:
① 过于僵硬
加入一个新性能,不仅仅意味着建造一个独立的模块,而且因为这个新性能会波及很多其他的模块,最好变成跨越几个模块的改动。
② 过于脆弱
对一个地方的修改,往往会导致看上去没什么关系的另外一个地方发生故障。尽管在修改之前,设计师会尽力预测可能的故障点,当是修改完成之前,系统的原始设计师们甚至都无法预测到可能会波及的地方。
③ 复用率低
每当程序员发现一段代码、函数、模块所做的事情是可以在新的模块、或者新系统中使用的是,他们总是发现,这些已有的代码依
赖于一堆其他的东西,以至于很难将它们分开。最好他们发现最好的办法就是不去“碰”这些已有的东西,而是重新写自己的代码。他们可能会使用源代码拷贝的办
法,以最原始的复用方式,节省一些时间。
④ 黏度过高
有的时候,一个改动可以以保存原始设计意图和原始设计框架的方式进行,也可以以破坏原始意图和框架的方式进行。一个系统设
计,如果总是使得第二种办法比第一种办法容易,就叫黏度过高。一个黏度过高的系统会诱使维护它的程序员采取错误的维护方案,并惩罚采取正确维护方案的程序
员。
☆ 一个好的系统俄军应该有如下的性质:
① 可扩展性
新的性能可以很容易地加入到系统中去,就是可扩展性。这就是系统“过于僵硬”的属性的方面。
② 灵活性
可以允许代码修改平稳地发生,而不会波及到很多其他的模块,这就是灵活性。灵活性其实就是“过于脆弱”的属性的方面。
③ 可插入性
可以很容易地将一个类抽出去,同时将另外一个有同样接口的类加入进来,这就是可插入性。其实,这就是“黏度过高”的方面。
ξ 3.2 系统的可复用性
☆ 软件复用的好处
第一,较高的生产效率;
第二,较高的软件质量;
第三,恰当使用复用可以改善系统的可维护性。
☆ 传统的复用形式
① 代码的剪贴复用;
② 算法的复用;
③ 数据结构的复用。
☆ 提高系统可维护性和可复用性的设计原则
① “开-闭”原则(Open-Closed Principle,或者OCP);
② 里氏替代原则(Liskov Substitution Principle,或者LSP);
③ 依赖倒转原则(Dependency Inversion Principle,或者DIP);
④ 接口隔离原则(Interface Segregation Principle,或者ISP);
⑤ 组合/聚合复用原则(Composition/Aggregation Principle,或者CARP);
⑥ 迪米特法则(Law of Demeter,或者LoD);
分享到:
相关推荐
在软件开发领域,可维护性和可复用性是衡量软件质量的重要指标,它们直接关系到软件的生命周期成本和效率。本文将深入探讨这两个概念以及如何通过设计模式、框架和架构来提升它们。 首先,让我们来看看可维护性。可...
开闭原则是软件可维护性和可复用性的基础。 综上所述,面向对象的哲学和科学体系提供了一系列概念和原则来构建稳定、可维护和可扩展的软件系统。理解这些概念,并在实践中妥善应用,对于成为一位高效的软件开发者至...
1、 良好的可复用性。开发同类项目的次数与开发新项目的时间成反比,谁也不愿做重复劳动吧 。 2、 易维护。基本上不用花太大的精力跟维护人员讲解,他们可以自己读懂源程序并修改了,要不然开发的系统越多,你的...
它涉及软件的可理解性、可修改性、可测试性、可移植性和可复用性。良好的可维性可以降低维护成本,延长软件的使用寿命。 1. **可理解性**:通过清晰的文档、结构化的代码和注释,使得软件易于理解,便于后续的维护...
尽管目前还没有完全统一的标准来全面量化软件的可维护性,但通过质量监管、测试和制定标准对比等手段,我们能够评估软件的可维护性水平。例如,测试程序能够提供问题清单,帮助开发者针对具体问题加强质量特性,而...
编程规范是软件开发过程中的重要组成部分,它旨在提升代码质量,增强代码的可读性、可维护性和可重用性。本规范针对C#编程语言,旨在为开发者提供一套统一的标准,以降低软件维护成本,提高开发效率。 范围 本规范...
MVC设计模式是一种架构模式,通过将应用程序分成三个独立的模块:模型、视图和控制器,以提高系统的可维护性和可复用性。 MVC设计模式的主要特点是低耦合性、高重用性和可适用性、较低的生命周期成本、快速的部署、...
第3章 软件的可维护性和可复用性 第4章 开闭原则 第5章 专题 JAVA语言的接口 第6章 专题 抽象类 第7章 里氏代换原则 第8章 依赖倒转原则 第9章 接口隔离原则 第10章 合成、聚合复用原则 第11章 迪米特法则 第12章 ...
* 多层架构的优点是提高了系统的可维护性、可扩展性和可复用性。 知识点二:S2SH框架 * S2SH框架是指使用Struts2、Hibernate和Spring三个框架组合的开发框架。 * Struts2是一个基于MVC模式的Web应用程序框架,用于...
UGUI基于MVC模式的技能装备系统。MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用...说白了就是把模型、视图、控制分开,得到较高的可维护性和可复用性。
- **1990年代**:面向对象编程(OOP)成为主流,进一步提高了软件的可复用性和可维护性。同时,敏捷开发思想也开始萌芽。 - **2000年代**:敏捷开发方法被广泛接受并应用于实际开发中,强调个体和交互的价值高于过程...
设计模式是软件开发中的宝贵经验总结,它们是解决常见问题的最佳实践,被广泛应用于面向对象编程中,以提高代码的可读性、可维护性和可复用性。本主题主要探讨设计模式在创建可复用面向对象软件中的基础角色。 一、...
模板方法模式是一种强大的设计模式,它通过定义算法的骨架和允许子类扩展特定步骤,提供了算法的灵活性和可复用性。在Java中实现模板方法模式时,需要合理设计抽象类和具体子类,以确保代码的清晰和可维护性。通过...
### 软件工程与软件系统可维护性评估 #### 第1章 软件工程概述 **软件工程定义与历史** - **定义**: 软件工程是一门集成了系统化、规范化、可度量化的方法和技术来支持软件产品的开发、运行及维护的学科。 - **...
软件复用及相关技术 ...软件复用技术是一种重要的软件开发技术,它可以提高软件的可维护性和可扩展性,降低软件开发的风险和成本。通过对软件复用技术的研究和应用,可以提高软件开发的效率和质量。
- **软件组件化的好处**包括提高软件的可维护性和可测试性、促进团队协作和开发效率、降低系统的复杂度和耦合度等。 - **软件组件化的实践**建议选择合适的组件化框架,明确组件间的接口和协议,持续优化和改进组件...
**软件系统可维护性** - **可读性**:代码易于理解和修改。 - **可测试性**:软件容易进行测试,以便发现和修复错误。 - **可重用性**:软件组件可以在多个项目中重复使用。 - **可扩展性**:系统可以轻松地添加新...
这些模式经过时间的考验,被广泛应用于各种面向对象的软件开发中,以提高代码的可读性、可维护性和可复用性。本教程旨在深入讲解设计模式的基本原理和应用方法,帮助开发者构建更加健壮和灵活的软件系统。 首先,...
通过学习设计模式,我们可以提高软件开发效率、节约软件开发成本和维护成本,同时也可以提高软件系统的可维护性和可复用性。 资源链接: * https://bugstack.cn/itstack/itstack-demo-design.html * ...
通过软件构件技术,可以提高代码的可重用性、可维护性和可扩展性。 在未来,软件复用和软件构件技术将迎来新的发展机遇。云计算、人工智能等技术的不断发展,将为软件复用和软件构件技术提供更多的可能性。例如,...