《面向对象分析与设计》第一章·读书笔记

第一章

P5 Brooks曾指出:“爱因斯坦认为自然界必定存在着简单的解释,因为上帝不是反复无常或随心所欲的。软件工程师没有这样的信仰来提供安慰。许多必须控制的复杂性是随心所欲的复杂性”

P5-8问题复杂性的4个原因:

1.问题域的复杂性

2.管理开发过程的困难性

3.软件中随处可能出现的灵活性

4.描述离散系统行为的问题


P8-P10复杂系统的5个属性:

1.层次结构

复杂性常常以层次结构的形式存在。复杂的系统由一些相关的子系统组成,这些子系统又有自己的系统,如此下去,直到达到某种最低层次的基本组件。

2.相对本原

选择那些作为系统的基础组件相对来说比较随意,这在很大程度上取决于系统观察者的判断。

3.分离关注

组件内的联系通常比组件间的联系更强。这一事实实际上将组件中高频率的动作(涉及组件的内部结构)和低频率的动作(涉及组件间的相互作用)分离开来。

4.共同模式

层次结构通常只是少数不同类型的子系统按照不同的组合和安排方式构成的。

5.稳定的中间形式

如果存在稳定的中间形式,从简单系统到复杂系统的演变将更快。

P19 小结

·软件本质上是复杂的,软件系统的复杂性常常超出了人类智能的范围。

·软件开发团队的任务就是制造出简单的假象。

·复杂性常常以层次结构的形式表现出来,简历复杂系统的“是一种”和“组成部分”层次结构模型是有意义的。

·复杂系统通常是从一些稳定的中间状态演进而来的。

·人类的认识有一些基本的限制因素,我们可以通过分解、抽象和层次结构来克服这些限制的。

·复杂系统可以从事物或处理过程的角度来分析,采用面向对象的分析有一些令人感兴趣的理由。在这种方法中,将世界看作是一组有意义的对象进行协作,实现某种高级的行为。

·面向对象分析和设计的方法实现了面向对象分解。面向对象的设计采用了一套表示法和过程来构造复杂软件系统,提供了丰富的模型,可以通过这些模型来阐述目标系统的不同方面。