`
jokermanager
  • 浏览: 140837 次
  • 性别: 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);

分享到:
评论

相关推荐

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

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

    C++设计原则 完整整理 快速理解设计原则

    我们在应用程序开发中,一般要求尽量两做到可维护性和可复用性。 应用程序的复用可以提高应用程序的开发效率和质量,节约开发成本,恰当的复用还可以改善系统的可维护性。而在面向对象的设计里面,可维护性复用都是...

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

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

    MVC_UGUI.rar

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

    设计模式——6大软件设计原则(demo案例实现,附带解析,快速掌握软件设计原则的精髓)

    在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据6条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。对扩展开放,对修改关闭。在程序需要...

    Java 设计模式详解超详细(含示例代码)

    提高软件的可维护性和可复用性,因为设计模式提供了通用的设计语言和最佳实践。 使代码更易于理解和维护,因为设计模式通常已经在实际项目中经过验证和优化。 增强软件的可扩展性和灵活性,因为设计模式有助于构建...

    计算机课程(软件工程)-软件设计原则.docx

    软件设计原则是指导开发人员构建高质量软件...这些原则帮助开发人员设计出具有良好结构、可维护性、可扩展性和可复用性的软件系统。本文将介绍一些常见的软件设计原则,帮助开发人员在软件开发过程中做出明智的设计决策

    面向对象的设计原则 doc

    面向对象设计根本的指导原则是提高可维护性和可复用性。这些原则主要有:1. 开闭原则;2. 依赖倒转原则;3. 里氏代换原则;4. 合成/聚合复用原则;5. 迪米特原则;6. 接口隔离原则

    安阳工学院--软件工程复习指南

    6.软件质量衡量标准:功能性、可靠性、可使用行、效率、可维护性和可移植性。 软件生存期大体可分为如下几个阶段:软件定义,软件开发,运行维护。 7.软件生存期模型:是从软件项目需求定义直至软件运行维护为止,...

    DesignPattern:Java设计模式学习

    Java 设计模式一、面向对象设计原则  对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的...

    软件工程专业认知.docx

    软件工程的目标是:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并且满足用户需求的软件产品。追求这些目标有助于...

    java初学者应该知道的一些知识

     OO设计根本的指导原则是提高可维护性和可复用性。这些原则主要有:  1. 开闭原则  一个软件实体应该对扩展开放,对修改关闭。  在设计一个模块的时候,就当使这个模块可以在不被修改的前提下被扩展。换言之,就...

    设计模式在燃料电池测试系统中的应用 (2014年)

    实验结果表明,基于面向对象设计模式开发的燃料电池测试系统软件具有良好的架构,实现了程序模块间的低耦合和模块内部的高内聚,提高了程序的可维护性和可复用性,能够灵活应对功能需求的变化。采用该架构开发完成的...

    java版本的设计模式的实现demo

    在Java编程中,运用合适的设计模式可以提高代码的可维护性、可扩展性和可复用性。以下是关于Java版本设计模式实现demo的一些补充说明: 1. 设计模式分类 设计模式通常分为三大类:创建型模式、结构型模式和行为型模式...

    Java毕业设计-基于jspm开发的充电桩综合管理--论文-附源代码和说明文档.rar

    本系统采用jspm作为前端构建工具,确保了前端代码的模块化、组件化,提高了代码的可维护性和可复用性。同时,系统采用了先进的Web技术栈,保证了系统的稳定性和性能。 此外,该系统具有良好的二次开发定制性。源...

    面向对象软件工程

     第八章 可复用性和可移植性  第九章 计划与估算  第二部分 软件生命周期工作流  第十章 需求工作流  第十一章 分析工作流  第十二章 设计工作流  第十三章 实现工作流  第十四章 交付后维护  第十...

    格西测控大师 V3.3 - 组态式测试测量和自动化控制软件

    格西测控大师是一款基于模块化技术的测控开发管理软件,可帮助用户快速开发自动化测试和控制软件系统,减少企业在...2、提高代码与测控程序的复用性和可维护性 3、提高测控系统的可扩展性 4、改进测控系统的执行性能

    【清华】 软件工程(完) 视频.txt

    15.5安全性和可依赖性案例 15.5.1结构化论证 15.5.2结构化的安全性论证 要点 进一步阅读材料 练习 参考书目 第三部分高级软件工程 第16章软件复用 16.1复用概览 16.2应用框架 16.3软件产品线 16.4cots产品的复用 ...

    基于Struts框架的自适应考试系统的研究与应用 (2010年)

    讨论了利用Struts框架进行Web软件系统设计的关键技术,给出了基于Struts框架的自适应考试中组卷模块的设计模型。实践证明,系统具有平台无关性,这种设计提高了系统的可维护性和可复用性。

    基于设计模式的业务逻辑层

    1 引言  目前,在Internet/Intranet环境中,企业级的应用软件系统大多采用3层应用框架:表示层、业务逻辑...充分考虑系统的可扩展性,可复用性,可维护性,从软件设计模式角度提出改进方法,并给出研究实例。  2 设

Global site tag (gtag.js) - Google Analytics