《面向对象分析与设计》读书笔记——第一章 复杂性
2006-05-19 16:59
239 查看
软件的复杂性是一个基本性质,而不是一个偶然性质。这种固有的复杂性是由4个因素造成的:问题领域的复杂性,管理开发过程的困难、软件可能的灵活性以及表征离散系统行为的困难。
不限制复杂性将导致项目的推迟提交、走出预算以及无法满足所有需求等,这种情况通常称为软件危机。
所有的复杂系统都具有5个属性:
1) 复杂性经常是以层次的形式表现出来,复杂系统是由相互关联的子系统组成,而这些子系统又是由它们各自的子系统构成,并由此类推到最低层的基本构件。
2) 对系统中最基本的构件的选择是相对任意的,而且在很大程度上取决于系统观察者的判断力。
3) 一般而言,各构件内的连接总要强于构件间的连接。在从构件的低频动态中分离出高频动态时,这一属性很有用。这是因为高频动态涉及到各构件的内部结构,而低频动态涉及到各构件的交互。
4) 层次系统通常都是由仅仅少数不同的子系统通过不同的排列组合方式组成。
5) 我们发现正运行的复杂系统总是由以前运行的简单系统演化而来……任何胡乱凑合设计出来的复杂系统都不可能正常运转,也不可能被修补好。我们必须由运行中的简单系统开始。
发现共同的抽象和机制,将非常有利于我们理解复杂系统。一个复杂系统中有多个不同的层次。从两个方面来观察系统,即将它看作“是一个层次”(类结构)及层次的“一部分”(对象结构)。系统的类结构和对象结构可总称为系统的体系结构。
掌握复杂性的基本方法是在设计一个复杂的软件系统时,将它分解成更小的部分,再将它们单独精化。
算法分解把系统中的每个模块表示某个总体进程中的主要一步,面向对象分解根据问题领域中的关键抽象来分解系统。算法分解方法突出事件的排序,而面向对象方法则强调主体。
不限制复杂性将导致项目的推迟提交、走出预算以及无法满足所有需求等,这种情况通常称为软件危机。
所有的复杂系统都具有5个属性:
1) 复杂性经常是以层次的形式表现出来,复杂系统是由相互关联的子系统组成,而这些子系统又是由它们各自的子系统构成,并由此类推到最低层的基本构件。
2) 对系统中最基本的构件的选择是相对任意的,而且在很大程度上取决于系统观察者的判断力。
3) 一般而言,各构件内的连接总要强于构件间的连接。在从构件的低频动态中分离出高频动态时,这一属性很有用。这是因为高频动态涉及到各构件的内部结构,而低频动态涉及到各构件的交互。
4) 层次系统通常都是由仅仅少数不同的子系统通过不同的排列组合方式组成。
5) 我们发现正运行的复杂系统总是由以前运行的简单系统演化而来……任何胡乱凑合设计出来的复杂系统都不可能正常运转,也不可能被修补好。我们必须由运行中的简单系统开始。
发现共同的抽象和机制,将非常有利于我们理解复杂系统。一个复杂系统中有多个不同的层次。从两个方面来观察系统,即将它看作“是一个层次”(类结构)及层次的“一部分”(对象结构)。系统的类结构和对象结构可总称为系统的体系结构。
掌握复杂性的基本方法是在设计一个复杂的软件系统时,将它分解成更小的部分,再将它们单独精化。
算法分解把系统中的每个模块表示某个总体进程中的主要一步,面向对象分解根据问题领域中的关键抽象来分解系统。算法分解方法突出事件的排序,而面向对象方法则强调主体。
相关文章推荐
- 《算法导论》读书笔记--第一章
- 《UNIX网络编程卷1》读书笔记--第一章 简介和TCP/IP
- 【读书笔记】程序员的自我修养:链接、装载与库 第一章 温故而知新
- 深入解析Windows操作系统(Windows Internals) 4th Edition 读书笔记 - 第一章 概念和工具(三)
- 《python基础教程 》第一章 读书笔记
- [李景山php] 20170504深入理解PHP内核[读书笔记]--第一章准备工作和背景知识--2
- 《大话设计模式》读书笔记-第一章 简单工厂
- 锋利的Jquery【读书笔记】 -- 第一章
- C深度剖析读书笔记-第一章关键字
- 《编译原理》第一章读书笔记
- 第一章:重构,第一个案例(读书笔记系列3)
- 《Python基础教程》读书笔记(第一章:基础知识)
- more effective c++ 第一章读书笔记: 指针,引用,c++类型转换,多态数组,默认构造函数
- 《产品经理手册》读书笔记--第一章《产品经理的战略规划框架》1.3
- 【读书笔记】算法导论(第三版)第一章
- 《C和指针》读书笔记——第一章 快速上手
- 《人月神话-32周年中文纪念版》-读书笔记-第一章:The Tar Pit(焦油坑)
- 《Spring in Action》第四版第一章《将Spring付诸实践》读书笔记(二)
- C 程序设计语言(第二版)第一章 读书笔记
- OSGI in Action 读书笔记 第一章