`
lingwyy
  • 浏览: 15359 次
  • 性别: Icon_minigender_2
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

[转]设计原则

 
阅读更多

粒度:包的内聚性原则
1) 重用发布等价原则(The Release Reuse Equivalency Principle (REP))
* 重用的粒度就是发布的粒度
* 一个可重用的包必须为发布跟踪系统所管理,使我们在新版本发布后我们还可以继续使用老版本
* 一个包中的所有类对于同一类用户来讲都应该是可重用的。

2) 共同重用原则(The Common Reuse Principle (CRP))
* 一个包中的所有类应该是共同重用的,如果重用了包中的一个类,就应该重用包中的所有类。
* 一般来说,可重用的类需要与作为该可重用抽象一部份的其它类协作,CRP规定了这些类应该属于同一个包。
* 放入同一包中的所有类应该是不可分开的,其它包仅仅依赖于其中一部份情况是不可能的(不允许的),否则,我们将要进行不必要的重新验证与重新发布,并且会白费相当数量的努力。(一个包依赖于另外一个包, 哪怕只是依赖于其中的一个类也不会削弱其依赖关系)
* CRP倾向于把包做的尽可能的小

3) 共同封闭原则(The Common Closure Principle (CCP))
* 包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中所有类产生影响,而对于其他的包不造成任何影响。
* 这是单一职责原则对于包的重新规定。
* CCP鼓励我们把可能由于同样的原因而更改的所有类共同聚集在同一个地方。将变化限制在最小数据的包中。
* CCP倾向于将包做的尽可能的大。
* CCP有益于维护者(包的作者),而REP和CRP有益于重用者(包的使用者)。

稳定性:包的耦合性原则
4) 无环依赖原则(The Acyclic Dependencies Principle (ADP))
* 在包的依赖关系图中不允许存在环。
* 包的依赖关系图应该是一个有向无环图(DAG(Directed Acyclic Grphic))
* 存在环的系统,很难确定包的构建顺序,事实上,并不存在恰当的构建顺序。
* 打破环的第一个方法:依赖倒置原则,使一个包不再依赖于另一个包,而只是依赖于其抽象接口。
* 打破环的第二个方法: 创建一个新包来包含公共依赖部份。

5) 稳定依赖原则(The Stable Dependencies Principle (SDP))
* 朝着的稳定的方向进行依赖
* 你设计了一个易于更改的包, 其它人只要创建一个对它的依赖就可以使它变的难以更改,这就是软件的反常特性。通过遵循SDP可以避免这种情况。
* 不稳定性度量:I = Ce / (Ca + Ce). Ca: Afferent Coupling. Ce: Efferent Coupling
* SDP规定一个包的I度量值应该大于它所依赖的包的I的度量值,也就是说,I的度量值应该顺着依赖的方向减少。

6) 稳定抽象原则(The Stable Abstractions Principle (SAP))
* 包的抽象程度应该和其稳定程度一致。
* 一个稳定的包同时应该是抽象的,这样,其稳定性就不会导致其无法扩展。一个不稳定的包应该是具体的,这样,因为其不稳定性使得其内部的具体代码易于修改。
* 抽象性度量:A = Na / Nc Na: Number of classes. Nc:Number of abstract classes.
* 创建一个以A为纵轴,I为横轴的坐标图,最稳定,最抽象的包位于左上角(0,1)处, 那些最不稳定,最具体的包位于右下角(1,0)处。

分享到:
评论

相关推荐

    设计模式之里氏转换原则

    设计模式之里氏转换原则

    设计模式(23种)与设计原则(6种)

    详细描述全部(23种)设计模式与设计原则(6种)。 (一)设计原则包括: 1、开闭原则 2、里氏代换原则 3、依赖转换原则 4、接口隔离原则 5、合成/聚合复用原则 6、最少知识原则 (二)设计模式 1)工厂模式...

    软件设计6原则

    单一责任原则 开放封闭原则 依赖到转原则 里氏替换原则 最少知识原则 迪米特法则

    网站设计的一些主要原则

     如果你想成为一个网站设计者,并正想建一个网站的话,首先应该考虑网站的 内容,包括网站功能和你的用户需要什么。你的整个设计都应该围绕这些方面来进 行。  02 抓住用户  如果用户不能够迅速地进入你的网站...

    11招教你如何玩转数据库设计

    数据库设计原则

    FPGA乒乓操作及串并转换设计篇

    本文讨论的四种常用 FPGA/CPLD设计思想与技巧: 乒乓操作、 串并转换、 流水线操作、 数据接口同步化, 都... 希望本文能引起工程师们的注意, 如果能有意识地利用这些原则指导日后的设计工作, 将取得事半功倍的效果!

    D/A转换器模板的设计原则

    合理地选择D/A转换芯片及相关的外围电路,需要掌握各类集成电路的性能指标及引脚功能,以及与D/A转换模板连接的CPU或计算机总线的功能、接口及其特点。软硬件设计相结合。

    D/A转换器设计原则

    合理地选择D/A转换芯片及相关的外围电路,需要掌握各类集成电路的性能指标及引脚功能,以及与D/A转换模板连接的CPU或计算机总线的功能、接口及其特点。软硬件设计相结合。

    S6转油站工艺设计毕业设计

    转油站是将集油站或油井输送来的含有部分地层水、溶解气等杂质的原油进行脱水、脱气、脱杂质、计量...根据以上设计及计算内容,以减少管线交叉,节省投资为原则进行设计绘制完成了总平面布置图、工艺流程图的图纸绘制。

    Access-2010数据库应用:数据库设计的基本原则.pptx

    3 设计数据库时要综合考虑多个因素,权衡各自利弊确定数据表的结构,基本原则有以下几条: (1)把具有同一个主题的数据存储在一个数据表中,也就是"一表一用"的设计原则。 (2)尽量消除包含在数据表中的冗余数据...

    2005-2009软件设计师历年真题

     • 系统总体结构设计(总体布局、设计原则、模块结构设计、数据存储设计、系统配置方案)  • 系统详细设计(代码设计、数据库设计、用户界面设计、处理过程设计)  • 系统设计说明书  3.4 系统实施知识  • ...

    html5需遵循的6个设计原则

    而在html5设计过程中遵循了一系列原则,才使得html5得以快速推广,本文将介绍html5遵循的6个设计原则,具体如下 原则一:避免不必要的复杂性 html4 <!DOCTYPE ...

    sql数据库应用课程设计

    2.1 一般逻辑模型设计:写出由ERD导出一般关系模型的四条原则,列出数据库初步构思的关系框架,并检查改进之。 2.2 具体逻辑模型设计:按所用的DBMS要求,设计表(文件)的具体结构,在关系框架下补充字段类型、长度...

    软件工程-软件设计概述

    软件工程-软件设计概述 如何将分析模型转换成软件设计? 作为软件工程师在软件设计方面应使用哪些基本原则和概念?

    电子产品结构设计的标准及原则.doc

    电子产品结构设计的标准及原则 一、壁厚设计原则 塑胶材料基本设计守则壁厚的大小取决於产品需要承受的外力、是否作为其他零件的支 撑、承接柱位的数量、伸出部份的多少以及选用的塑胶材料而定。一般的热塑性塑料壁 ...

    面向对象重要设计原则概述样例.rar

    面向对象重要设计原则概述样例 用户登录 的设计 //登录按钮 protected void btnLogin_Click(object sender, EventArgs e) { string userName=txtUsername.Text; string password=txtPassword.Text; if (login...

    架构师转型方法与架构设计理论:向大数据架构师转型

    本资料仅面向有兴趣转型向Java系统架构师,大数据系统架构师的学员,主要包括四部分内容:一、程序员VS架构师 ;二、架构设计与架构师 ;三、架构风格与架构模式 ;四、架构师转型模型 ;五、面向对象设计原则

    电子测量中的计量类光电仪器的基本设计原则

    在光电计量仪器设计学的发展过程中,总结并形成了一系列基本设计原则。正确掌握这些原则,将有助于所设计的仪器达到上述的质量指标。  1.2.1 阿贝(Abbe)原则  1.定义  1890年阿贝本人的叙述是:长度测量...

    汽车电子中的汽车电源设计的六项基本原则

    汽车电源设计的六项基本原则  大多数汽车电源架构需要遵循六项基本原则:  1、输入电压VIN范围:12V电池电压的瞬变范围决定了电源转换IC的输入电压范围。  典型的汽车电池电压范围为9V至16V,发动机关闭时,...

    防爆胶轮车铰接转向系统的设计计算

    详细分析了井下铰接式防爆胶轮车全液压转向系统的组成和转向原理,归纳总结了转向液压缸、转向操纵机构等一些结构的布置原则,并对影响铰接式工程车辆液压转向的几个主要参数:转向力矩、转向时间、转向器排量、转向...

Global site tag (gtag.js) - Google Analytics