第14章 使用UML 在探索UML的细节之前,我们应该先讲讲何时以及为何使用它。UML的误用和滥用已经对软件项目造成了太多的危害。14.1 为什么建模 建模就是为了弄清楚某些东西是否可行。当模型比要构建的真实实体便宜很多时,我们就会使用模型来研究设计。14.1.1 为什么构建软件模型 当我们有...
分类:
其他好文 时间:
2015-08-28 19:07:06
阅读次数:
148
第13章 写给C#程序员的UML概述 UML包含3类主要的图示。静态图(static diagram)描述了类、对象、数据结构以及它们之间的关系,藉此表现出了软件元素间那些不变的逻辑结构。动态图(dynamic diagram)展示了软件实体在运行过程中是如何变化的,其中描述了运行流程或者实体改变....
第12章 ISP:接口隔离原则 不应该强迫客户程序依赖并未使用的方法。 这个原则用来处理“胖”接口所存在的缺点。如果类的接口不是内敛的,就表示该类具有“胖”接口。换句话说,类的“胖”接口可以分解成多组方法。每一组方法都服务于一组不同的客户程序。这样,一些客户程序可以使用一组成员函数,而其他客...
分类:
其他好文 时间:
2015-08-28 14:56:07
阅读次数:
252
第11章 DIP:依赖倒置原则DIP:依赖倒置原则:a.高层模块不应该依赖于低层模块。二者都应该依赖于抽象。b.抽象不应该依赖于细节。细节应该依赖于抽象。11.1 层次化 下图展示了一个简单的层次化方案: 高层的Policy层使用了低层的Mechanism层,而Mechanism层又使用了更细节.....
分类:
其他好文 时间:
2015-08-28 00:33:19
阅读次数:
191
第10章 LSP:Liskov替换原则 Liskov替换原则:子类型(subtype)必须能够替换掉它们的基类型(base type)。10.1 违反LSP的情形10.1.1 简单例子 对LSP的违反导致了OCP的违反:struct Point { double x, y;}public enu.....
分类:
其他好文 时间:
2015-08-27 22:55:15
阅读次数:
190
第9章 OCP:开放-封闭原则 软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改。9.1 OCP概述 遵循开放-封闭原则设计出的模块具有两个主要特征: (1)对于扩展是开放的(open for extension)。这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进...
分类:
其他好文 时间:
2015-08-27 20:33:32
阅读次数:
392
第5章 重构 在Martin Fowler的名著《重构》一书中,他把重构定义为:“在不改变代码外在行为的前提下对对代码做出修改,以改进代码内部结构的过程。”可是我们为什么要改进已经能够工作的代码结构呢?我们不是都知道“如果它没有坏,就不要去修理它!”吗? 每一个软件模块都有3项职责。第一个职责是.....
分类:
其他好文 时间:
2015-08-27 00:23:46
阅读次数:
228
第4章 测试 编写单元测试是进行验证,更是进行设计。同样,它更是在编写文档。编写单元测试终结了许多反馈循环,尤其是功能验证方面的反馈循环。4.1 测试驱动开发 假设我们遵循如下3条简单规则: (1)除非编写了一个不能通过的单元测试,否则不编写任何产品代码。 (2)只要编写正好导致测试不通过...
分类:
其他好文 时间:
2015-08-26 20:06:33
阅读次数:
182
第3章 计划3.1 初始探索 在项目开始时,开发人员会和客户商讨一下关于新系统的情况,以确定出所有真正重要的信息。然而,他们不会试图去确定所有的特性。随着项目的进展,客户会不断的发现新的特性。特性发现的过程会一直持续到项目完成。 当识别出一个特性时,会把它分解成一个或者多个用户故事,并把这些用户.....
分类:
其他好文 时间:
2015-08-26 17:29:30
阅读次数:
156
第2章 极限编程概述作为开发人员,我们应该记住,XP并非唯一选择。--Pete McBreen,软件技术专家在第1章中,我们概述了有关敏捷软件开发方法方面的内容,但它没有确切地告诉我们去做些什么;其中给出了一些泛泛的陈述和目标,却没有给出实际的指导方法。本章要改变这种状况。2.1 极限编程实践2.1...
分类:
其他好文 时间:
2015-08-26 13:33:05
阅读次数:
260