《人月神话》-第9-11章

规模控制

  • 指定总体规模的预算

  • 指明模块有多大的同时,确切定义模块的功能

  • 培养开发人员从系统整体出发、面向用户的态度

空间技能

  • 用功能交换尺寸。设计人员必须决定用户可选项目的粗细程度

  • “空间——时间”的折中

  • 编程需要技术积累

数据的表现形式是编程的根本


计算机产品的文档

  • 目标:定义待满足的目标和需要,定义迫切需要的资源、约束和优先级。

  • 技术说明:计算机手册加性能规格说明。它是在计划新产品时第一个产生,并且最后完成的文档。

  • 进度

  • 预算:预算不仅仅是约束。对管理人员来说,它还是最有用的文档之一。预算的存在会迫使其制定技术决策,否则,技术决策很容易被忽略。更重要的是,它促使和澄清了策略上的一些决定

报价、预测、价格:这三个因素互相牵制,决定了项目的成败

软件项目的文档

  • 内容:目标

  • 内容:产品技术说明

  • 时间:进度

  • 资金:预算

  • 地点:工作空间分配

  • 人员:组织图

为什么要有正式的文档

  • 只有记录下来,分歧才会明朗,矛盾才会突出

  • 文档能够作为同其他人的沟通渠道

  • 项目经理的文档可以作为数据基础和检查列表


不变只是愿望,变化才是永恒——斯威夫特

普遍的做法是,选择一种方法,试试看;如果失败了,没关系,再试试别的方法。不管怎么样,重要的是先去尝试——富兰克林·罗斯福


  • 试验性工厂和增大规模

  • 唯一不变的就是变化本身

  • 为变更设计系统

  • 为变更计划组织架构


程序维护中的一个基本问题是——缺陷修复总会以固定(20%~50%)的几率引入新的bug。所以,整个过程是前进两步,后退一步


前进一步,后退一步

Lehman和Blay研究了大型操作系统的一系列发布版本的历史。他们发现模块总数量随版本号的增加呈线性增长,但是受到影响的模块数量随版本号的增加呈指数增长。所有修改都倾向于破坏系统的架构,增加了系统的混乱程度(熵)。用在修复原有设计上瑕疵的工作量越来越少,而早期维护活动本身所引起的漏洞的修复工作越来越多。随着时间的推移,系统变得越来越无序,修复工作迟早会失去根基。每一步前进都伴随着一步后退。尽管系统在理论上一直可用,但实际上,整个系统已经面目全非,无法再成为下一步进展的基础。而且,机器在变化,配置在变化,用户的需求在变化,现实系统不可能永远可用。崭新的、基于原有系统的重新设计是完全必要的。

系统软件开发是减少混乱度(减少熵)的过程,所以它本身是处于亚稳态的。软件维护是提高混乱度(增加熵)的过程,即使是最熟练的软件维护工作,也只是放缓了系统退化到非稳态的进程。

猜你喜欢

转载自blog.csdn.net/m0_37302219/article/details/106159125