软件的复杂性是一个基本性质,而不是一个偶然性质。这种固有的复杂性是由4个因素造成的:问题领域的复杂性,管理开发过程的困难、软件可能的灵活性以及表征离散系统行为的困难。

不限制复杂性将导致项目的推迟提交、走出预算以及无法满足所有需求等,这种情况通常称为软件危机。

所有的复杂系统都具有5个属性:

1)               复杂性经常是以层次的形式表现出来,复杂系统是由相互关联的子系统组成,而这些子系统又是由它们各自的子系统构成,并由此类推到最低层的基本构件。

2)               对系统中最基本的构件的选择是相对任意的,而且在很大程度上取决于系统观察者的判断力。

3)               一般而言,各构件内的连接总要强于构件间的连接。在从构件的低频动态中分离出高频动态时,这一属性很有用。这是因为高频动态涉及到各构件的内部结构,而低频动态涉及到各构件的交互。

4)               层次系统通常都是由仅仅少数不同的子系统通过不同的排列组合方式组成。

5)               我们发现正运行的复杂系统总是由以前运行的简单系统演化而来……任何胡乱凑合设计出来的复杂系统都不可能正常运转,也不可能被修补好。我们必须由运行中的简单系统开始。

发现共同的抽象和机制,将非常有利于我们理解复杂系统。一个复杂系统中有多个不同的层次。从两个方面来观察系统,即将它看作“是一个层次”(类结构)及层次的“一部分”(对象结构)。系统的类结构和对象结构可总称为系统的体系结构。

掌握复杂性的基本方法是在设计一个复杂的软件系统时,将它分解成更小的部分,再将它们单独精化。

算法分解把系统中的每个模块表示某个总体进程中的主要一步,面向对象分解根据问题领域中的关键抽象来分解系统。算法分解方法突出事件的排序,而面向对象方法则强调主体。

转载于:https://www.cnblogs.com/stwyhm/archive/2006/05/19/404488.html

《面向对象分析与设计》读书笔记——第一章 复杂性相关推荐

  1. 《MAC OS X 技术内幕》读书笔记第一章:MAC OS X的起源

    <MAC OS X 技术内幕>读书笔记第一章:MAC OS X的起源 前言 1 System x.x系列 1.1System 1.0(1984年1月24日) 1.2System 2.x(1 ...

  2. Android群英传神兵利器读书笔记——第一章:程序员小窝——搭建高效的开发环境

    Android群英传神兵利器读书笔记--第一章:程序员小窝--搭建高效的开发环境 目录 1.1 搭建高效的开发环境之操作系统 1.2 搭建开发环境之高效配置 基本环境配置 基本开发工具 1.3 搭建程 ...

  3. 数据结构(c语言版严蔚敏_吴伟民)读书笔记 第一章

    目录 数据结构第一章 绪论 数据元素之间存在的关系称为结构 算法 1.算法应具有的特性 2.设计算法的要求 3.算法效率度量(时间复杂度)T(n) = O(f(n)) 4.算法的储存空间的需求(空间复 ...

  4. linux鸟叔私房菜读后感,鸟叔的Linux私房菜 读书笔记 第一章

    目录dom 硬盘数学 第一章 计算机概论 知识点总结 计算机的定义为:接受使用者输入指令与资料,经由中央处理器的数学与逻辑单元运算处理后,以产生或储存成有用的资讯:程序 电脑的五大单元包括:输入单元. ...

  5. 《置身事内》读书笔记第一章 地方政府的权利与事务

    第一章 地方政府的权利与事务 第一节 政府治理的特点 中央与地方政府 维持大一统国家必然要求中央权威和统一领导 中国之大决定了政治体系的日常运作要以地方政府为主 党和政府 本书主题是经济发展,无须特别 ...

  6. 用Python进行自然语言处理 读书笔记 第一章

    用Python进行自然语言处理(第一章) 搜索文本 text1.concordance("monstrous")#搜索文章中的词语text3.concordance("l ...

  7. 蜥蜴书(Hands on Machine Learning)读书笔记-第一章 机器学习landscape

    A. Geron, Hands on Machine Learning with Scikit-learn and TensorFlow. 第一章 机器学习Landscape 机器学习 机器学习就是从 ...

  8. CSS学习 | 《CSS揭秘》读书笔记——第一章

    第一章 引言 web标准 标准的制定过程:CSS规范通常是由CSS工作组的成员来编写的. 人员结构如:88%来自W3C会员公司的成员(比如浏览器厂商.主流网站.研究机构.常规技术公司等):7%特邀专家 ...

  9. 《性能之巅—洞悉系统、企业与云计算》读书笔记---第一章

    目录 第一章  绪论 1.1系统性能 1.2人员 1.3事情 1.4视角 1.5性能是充满挑战的 1.6延时 1.7动态跟踪 1.8云计算 1.9案例研究 第一章  绪论 1.1系统性能 1.2人员 ...

最新文章

  1. 不被邀请又怎样!马云都快买下中国AI芯片的半壁江山了,直怼腾讯和百度
  2. css3中实现摘取金币_用css3实现抽奖转盘里的扇形图
  3. List list= new ArrayList为什么这样写 接口引用指向实现类的对象
  4. 隐式反馈的去噪,模型取得巨大提升
  5. Kubernetes pod状态出现ImagePullBackOff的原因
  6. matlab zigzag算法,ZIGZAG扫描的MATLAB实现
  7. html window设置,JavaScript Window
  8. 女人最想从男人那里得到什么?
  9. 面试准备每日五题:C++(八)——重写重载隐藏、vector相关
  10. 2017,互联网出海应该注意哪些问题?
  11. Bootstrap采样方法的python实现
  12. 在J2ME和WAP中实现电话呼叫功能
  13. topcoder srm 440 div1
  14. 微pe工具箱是微软的吗_电脑装系统用一键装机好用还是微PE工具箱好用
  15. c语言打出的王字图形图形,C语言编程宝典(王大刚) 3 关键字和标识符
  16. 「对话GitOps之星」张晋涛:“肝帝”时不时也会拖更
  17. TMS320F28034PNT 德州TI 具有 60MHz 频率、128KB 闪存的 C2000™ 32 位 MCU
  18. HTMl页面加入落叶下雨动画,HTML5和Webkit实现树叶飘落动画
  19. 用ArcMap打开MXD文件报One or more layers failed to draw错误!
  20. Scala核心编程 第六章—Scala面向对象编程(一)

热门文章

  1. 正态分布随机数 C语言,C语言产生满足正态分布的随机数
  2. ModuleNotFoundError: No module named 'rospkg'
  3. Vivado不同版本打开IP核锁定的解决办法
  4. FPGA开发中全局复位置位(GSR)
  5. C/C++产生随机数
  6. html底部沉底显示,Footer部分永远沉底。
  7. 计算机count的功能是,全国计算机二级Access每日练习4
  8. 脑细胞膜等效神经网路12分类实例
  9. arc_loss训练手写数字分类
  10. Mysql8 查询事务隔离级别