人月神话(11)未雨绸缪

思维导图

人月神话(11)未雨绸缪

试验性工厂和增大规模

  • 化学工程师已经认识到无法一步将实验室工作台上的反应过程移到工厂中,需要一个试验性工厂(pilot plant)来为提高产量和在缺乏保护的环境下运作提供宝贵经验。
  • 一个接一个的软件项目都是一开始设计算法,然后将算法应用到待发布的软件中,接着根据进度把第一次开发的产品发布给顾客
  • 必须构建一个试验性的系统的原因?将原型发布给用户的优缺点!
    优点:可以获得时间,但是代价高昂
    缺点:1、对于用户,使用起来及其痛苦
    缺点:2、对于重新开发的人员,分散了精力
    缺点:3、对于产品,影响了声誉,即使最好的再设计也难以挽回名声
  • 为舍弃而放弃,无论如何,你一定要做到

唯一不变的就是变化本身

  • 变化是与生俱来的,并非不合适宜和令人生厌的异常情况
  • 开发人员交付地是用户的满意程度,而不仅仅是有形的产品。用户的实际需要和用户感觉会随着程序的构建、测试和使用而变化
  • 目标上的一些变化无可避免,事先为他们准备总比假设他们不会出现好。不但目标上的变化不可避免,而且设计策略和技术上的变化也不可避免。抛弃原型的概念本身就是对事实的接受,随着学习的过程更改设计

为变更设计系统

如何设计变更系统
  • 细致的模块化,可扩展的函数,精确完整的模块间接口设计和完备的文档
  • 采用包括调用队列和表驱动的一些技术
  • 使用高级语言和自文档技术,以减少变更引起的错误
  • 采用编程时的操作来整合标准声明,在很大程度上帮助了变化的调整

变更的阶段化是一种必要的技术,每个产品都是应该有数字版本号,每个版本都应该有自己的日程表和冻结时间,在此以后的变更属于下一个版本的范畴

为变更计划组织架构

设计人员不愿意为设计书写文档化的原因
  • 由于惰性或者时间压力
  • 设计人员通常不愿意提交尝试性的设计决策,再为它们进行辩解
  • 通过设计文档化,设计人员将自己暴露在每个人的批评之下,它必须能够为他书写的一切进行辩护

如何设计变更计划组织架构

  • 每个人被分派的工作必须是多样的,富有拓展性的工作
  • 废除了所有的职位头衔,每个专业人士都是“技术人员中的一员”
  • 建立相互一致的薪水级别很容易,但要建立一致的威信,会困难一些
  • 管理人员需要参与技术课程,高级技术人才需要进行管理培训。项目目标,进展和管理问题必须在高级人员中得到共享

前进两步,后退一步

  • 其维护总成功通常是开发成本的40%或更多
  • 解决了这些问题以后,程序会正常运行几个月。接着,错误率会重新攀升
  • 用户的使用达到了新的熟练水平,他们开始运用新的功能,这种高强度的考验查出了新功能中很多不易察觉的问题
    程序维护的一个基本问题:缺陷总会以固定(20%——50%)的几率引入新的bug,所以整个过程就是前进两步,退后一步
  • 理论上,每次修改后都需要重新运行之前的所有测试用例,确保系统更加稳定,但实际回归测试必须接近理想状态,成本非常高

前进一步,后退一步

  • 模块总数量随版本号的增加线性增长,但是受到影响的模块数量随版本号的增加呈指数增长
  • 系统软件开发是减少混乱度(熵),所以它本身是处于亚稳态的。软件维护是调高混乱度(熵)的过程,即使是最熟练的软件维护工作,也只是放缓了系统退化到非稳态的过程

相关文章: