`
jokermanager
  • 浏览: 143835 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

软件的可维护性和可复用性

阅读更多

ξ 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);

分享到:
评论

相关推荐

    软件的可维护性与可复用性.doc

    在软件开发领域,可维护性和可复用性是衡量软件质量的重要指标,它们直接关系到软件的生命周期成本和效率。本文将深入探讨这两个概念以及如何通过设计模式、框架和架构来提升它们。 首先,让我们来看看可维护性。可...

    关于面向对象的哲学体系及科学体系的探讨.pdf

    开闭原则是软件可维护性和可复用性的基础。 综上所述,面向对象的哲学和科学体系提供了一系列概念和原则来构建稳定、可维护和可扩展的软件系统。理解这些概念,并在实践中妥善应用,对于成为一位高效的软件开发者至...

    面向对象系统设计--------良好的可复用性。易维护。良好的可扩充性。最好的一本设计图书

    1、 良好的可复用性。开发同类项目的次数与开发新项目的时间成反比,谁也不愿做重复劳动吧 。 2、 易维护。基本上不用花太大的精力跟维护人员讲解,他们可以自己读懂源程序并修改了,要不然开发的系统越多,你的...

    计算机软件可靠性和可维性管理

    它涉及软件的可理解性、可修改性、可测试性、可移植性和可复用性。良好的可维性可以降低维护成本,延长软件的使用寿命。 1. **可理解性**:通过清晰的文档、结构化的代码和注释,使得软件易于理解,便于后续的维护...

    加强计算机软件设计可维护性的措施探究.docx

    尽管目前还没有完全统一的标准来全面量化软件的可维护性,但通过质量监管、测试和制定标准对比等手段,我们能够评估软件的可维护性水平。例如,测试程序能够提供问题清单,帮助开发者针对具体问题加强质量特性,而...

    编程规范(统一软件编程风格,提高软件源程序的可读性、可靠性和可重用性,提高软件源程序的质量和可维护性)_C#

    编程规范是软件开发过程中的重要组成部分,它旨在提升代码质量,增强代码的可读性、可维护性和可重用性。本规范针对C#编程语言,旨在为开发者提供一套统一的标准,以降低软件维护成本,提高开发效率。 范围 本规范...

    工学软件开发平台技术.pptx

    MVC设计模式是一种架构模式,通过将应用程序分成三个独立的模块:模型、视图和控制器,以提高系统的可维护性和可复用性。 MVC设计模式的主要特点是低耦合性、高重用性和可适用性、较低的生命周期成本、快速的部署、...

    Java与模式(清晰书签版) 设计模式 part3

    第3章 软件的可维护性和可复用性 第4章 开闭原则 第5章 专题 JAVA语言的接口 第6章 专题 抽象类 第7章 里氏代换原则 第8章 依赖倒转原则 第9章 接口隔离原则 第10章 合成、聚合复用原则 第11章 迪米特法则 第12章 ...

    基于Java EE多层架构的进销存管理系统.pdf

    * 多层架构的优点是提高了系统的可维护性、可扩展性和可复用性。 知识点二:S2SH框架 * S2SH框架是指使用Struts2、Hibernate和Spring三个框架组合的开发框架。 * Struts2是一个基于MVC模式的Web应用程序框架,用于...

    MVC_UGUI.rar

    UGUI基于MVC模式的技能装备系统。MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用...说白了就是把模型、视图、控制分开,得到较高的可维护性和可复用性。

    软件工程与软件系统可维护性评估2.pptx

    - **1990年代**:面向对象编程(OOP)成为主流,进一步提高了软件的可复用性和可维护性。同时,敏捷开发思想也开始萌芽。 - **2000年代**:敏捷开发方法被广泛接受并应用于实际开发中,强调个体和交互的价值高于过程...

    设计模式可复用面向对象软件的基础

    设计模式是软件开发中的宝贵经验总结,它们是解决常见问题的最佳实践,被广泛应用于面向对象编程中,以提高代码的可读性、可维护性和可复用性。本主题主要探讨设计模式在创建可复用面向对象软件中的基础角色。 一、...

    Java中的模板方法模式:设计灵活且可复用的算法框架

    模板方法模式是一种强大的设计模式,它通过定义算法的骨架和允许子类扩展特定步骤,提供了算法的灵活性和可复用性。在Java中实现模板方法模式时,需要合理设计抽象类和具体子类,以确保代码的清晰和可维护性。通过...

    软件工程与软件系统可维护性评估.pptx

    ### 软件工程与软件系统可维护性评估 #### 第1章 软件工程概述 **软件工程定义与历史** - **定义**: 软件工程是一门集成了系统化、规范化、可度量化的方法和技术来支持软件产品的开发、运行及维护的学科。 - **...

    软件复用及相关技术.pptx

    软件复用及相关技术 ...软件复用技术是一种重要的软件开发技术,它可以提高软件的可维护性和可扩展性,降低软件开发的风险和成本。通过对软件复用技术的研究和应用,可以提高软件开发的效率和质量。

    软件工程中的软件复用与组件化.pptx

    - **软件组件化的好处**包括提高软件的可维护性和可测试性、促进团队协作和开发效率、降低系统的复杂度和耦合度等。 - **软件组件化的实践**建议选择合适的组件化框架,明确组件间的接口和协议,持续优化和改进组件...

    软件工程与软件系统可复用性评估.pptx

    **软件系统可维护性** - **可读性**:代码易于理解和修改。 - **可测试性**:软件容易进行测试,以便发现和修复错误。 - **可重用性**:软件组件可以在多个项目中重复使用。 - **可扩展性**:系统可以轻松地添加新...

    设计模式:可复用面向对象软件的基础.zip

    这些模式经过时间的考验,被广泛应用于各种面向对象的软件开发中,以提高代码的可读性、可维护性和可复用性。本教程旨在深入讲解设计模式的基本原理和应用方法,帮助开发者构建更加健壮和灵活的软件系统。 首先,...

    和 lvgo 一起学习设计模式.pdf

    通过学习设计模式,我们可以提高软件开发效率、节约软件开发成本和维护成本,同时也可以提高软件系统的可维护性和可复用性。 资源链接: * https://bugstack.cn/itstack/itstack-demo-design.html * ...

    软件复用与软件构件技术.docx

    通过软件构件技术,可以提高代码的可重用性、可维护性和可扩展性。 在未来,软件复用和软件构件技术将迎来新的发展机遇。云计算、人工智能等技术的不断发展,将为软件复用和软件构件技术提供更多的可能性。例如,...

Global site tag (gtag.js) - Google Analytics