|
|
|
|
|
|
|
1.UML中Martin Fowler描述了软件开发过程中的三个不同的视角(Perspective)
1概念(conceptual)这个视角"展现了问题领域中的概念……一个概念模型可以在对实现软件有很少或毫无注意的情况下画出"
2规格(specification),现在我们看看软件,但我们指看软件的接口,而不看实现。
3实现(implementation)现在,我们置身于代码本身,这可能是最常用的视角,但在许多方面,规格视角经常是更好的视角。
我们一开始接触面向对象的概念,和一些常见教材中解释的大多是从实现角度考虑,但是这样会限制我们对真正面向对象概念的理解。
2.完全做到"针对接口进行设计",随时注意"一个对象是否可以在不知道另外对象的类型的情况下使用另外的对象"
3使用模式的好处
1可以更快的设计模型,因为模式想我预报了将要遇到的情况,它们告诉我:基本的对象是什么,应该对什么特别注意
2我可以更有效的与专家沟通,以内我们有了处理细节和异常情况的更结构化的途径,
3模式让我可以为我的系统开发更好的最终用户培训程序,因为模式已经向我预报了这个系统最重要的特性。
尤其是最后一点,意义非常重大,模式可以帮助最终用户理解系统,因为是模式提供了系统的来龙去脉--为什么我们用一支能够特定的方法来处理问题?我们可以用模式来描述系统的指导性原则和策略,而且我们可以利用模式来开发最好的范例,用以帮助最终用户理解这个系统。
4需求发生变化的原因其实很简单
1由于与开发者进行讨论并且看到软件中新的可能性,用户对自己需求的看法发生了变化
2因为要开发软件来提高用户问题领域的自动化程度,开发者对问题领域更加熟悉,所以开发者对问题领域的看法发生了变化
3软件开发环境的发生了变化。
5处理变化:使用功能分解
怎样编写代码更容易处理变化的需求:把程序模块化
模块化有助于写出更容易理解的代码,更容易理解的代码也更容易维护,但是模块化并不能帮助你写出能应付所有可能出现的变化的代码,但模块化经常带来的问题是低内聚和高耦合,低内聚是指:程序中的操作之间联系紧密的程度,或称透明度,因为操作与程序(或类)的联系越紧密,理解其中的含义就越容易。耦合度是指两个子程序之间联系的强度,耦合度与内聚度成反比。内聚度描述了一个子程序内部成分之间相互联系的强度,耦合度描述了一个子程序与其他子程序之间联系的强度。目标是创建具有内部完整性(强内聚)的子程序,以及小的、可见的、灵活的与其他子程序之间的联系松耦合。
只关注功能,结果是一处变化会引起很难逃避的一连串的变化。
|
|
|
|