Prework Of Pair Project: Elevator Scheduler

0、Pair Project 结对编程

  简单地说,就是两个人在一台电脑上解决一个项目。同一时刻,一定是一个人coding一个人review,一定时间后两人互换角色。

  表面上看结对之后两个人只干了一个人的活,但是通过结对coder的大部分错误可以在第一时间被reviewer发现,这省下了很多本来应当在项目测试阶段话费的时间。其次,结对编程写出的每一个程序都体现了两个组员中的较高水平,整个项目下来这些积少成多的优化可能使项目性能提高一个水平。最后,两个人结对开发的过程就是两个人互相学习进步的过程。综合考虑以上三点,这个看似不明智的开发方式,如果使用恰当反而会给pair乃至公司带来效益。

 

1、Information Hiding 信息隐蔽

  SE的模块化指将一个复杂系统划分成若干独立解决和优化的块(OO中的类?),这也是项目可以团队开发的前提。

  信息隐蔽原则则是对划分的进一步阐述。具体划分到什么程度?——每个模块对其它所有模块都隐藏自己的设计决策。换言之,模块应该规定并设计成为在模块中包含的信息(数据和算法)不被不需要这些信息的其他模块访问。

  将信息隐藏作为模块化系统的一个设计标准,在测试和随后的软件维护过程中需要对某一个模块进行修改时,由于其信息的隐藏性,过程中不小心引入的错误不大可能传播到软件的其他地方。

参考文献:(美)Roger S.Pressman.软件工程 实践者的研究方法[M].郑人杰 马素霞等.北京:机械工业出版社,2011 P160

 

2、Interface Design 接口设计

  软件接口设计元素描述了信息如何流入和流出系统以及被定义为体系结构一部分的构建之间是如何通信的。它好比一张房间的设计图纸,需要告诉设计者有多少门多少窗,分布在什么方位,具体的大小尺寸以及相应的使用方法。通俗地理解就是一个public方法的参数表以及其功

  接口分UI接口、外部接口、内部结构三种。

参考文献:(美)Roger S.Pressman.软件工程 实践者的研究方法[M].郑人杰 马素霞等.北京:机械工业出版社,2011 P166

 

3、Loose Coupling 松散耦合

  松散耦合是在一个系统中使各组件在最小的可行范围内彼此依赖。耦合指的是一个元素对另一元素的直接了解程度。

  松散耦合的目的是减少风险:一个组件内发生的变更造成其它元素内非预期的变更。限制互相连接会在事情出错时帮助隔离问题并简化测试、维护和检修过程。

 

4、Design by Contracts 契约式设计

  契约式设计的核心是断言(assertion)。所谓“断言”,是指永远为真的布尔型语句,如果不为真,则程序必然存在错误。它使用了三类断言:后继条件(post-conditions),前提条件(pre-conditions),以及不变量(invariants)。

  由于信息隐蔽原则,我们在调用一个接口时,并不知道它内部实现的细节。为了顺利使用接口,首先需要满足前提条件。这个前提条件就是指在执行操作之前,期望具备的环境。满足前提条件接口使用顺利后,自然而然得到了一个后继条件——指操作执行完之后的情况。不变量是关于类(class)的断言,无论是否能对该对象调用某种操作都需要满足的条件。

  为了更加形象地说明以上概念,我们考虑“求平方根”这个例子。接口方法的实现非常简单,

double sqrt(double x) {}

但是要顺利调用这个接口,参数x必须大于等于0,这个即是前提条件。后继条件显然就是返回值result满足result * result = x。

  基于以上对前提条件和后继条件的定义,我们可以得到关于术语“异常”(exception)的严格定义。如果在满足前提条件的情况下调用某操作,不能满足后继条件,这种情况即称为异常。

  至于不变量,考虑一个银行账户的类,它的一个成员变量账户余额显然等于所有账目记录的总和。

参考文献:http://blog.donews.com/maverick/archive/2006/04/22/841290.aspx

  

5、Code Contracts 代码契约

  这部分我真没看懂,英文实在不行!有知道的希望能在下方回复。

 

6、Unit Test 单元测试

  Pair Project讲的是两人合作,既然程序是两个人写的,那就会出现一个人写的模块被另一个人写的模块调用的情况。很多误解、疏忽都发生在两个模块之间。为了能让自己写的模块尽量无懈可击,单元测试就是一个很有效的解决方案。

  衡量一个测试的性能,代码覆盖率是一个重要的指标,设计一个好的Case应使得代码覆盖率尽量高。

 

7、UML内容

  不具体展开。

 

胡仁君 2012/10/14

posted @ 2012-10-14 23:45  teamshit  阅读(325)  评论(2编辑  收藏  举报