1 人月神话_part2

2017-11-09  本文已影响0人  brightsunp

9 未雨绸缪

不变只是愿望,变化才是永恒

“前进两步,后退一步”:缺陷修复总会以20-50%的几率引入新bug;每次修复后,必须重新运行先前所有的测试用例,确保系统不会以更隐蔽的方式被破坏;设计实现的人员越少、接口越少,产生的错误也越少。

“前进一步,后退一步”:软件开发是减少混乱度(减少熵)的过程,本身是处于亚稳态的;软件维护是提高混乱度的过程,只是放缓了系统退化到非稳态的进程。

10 项目进度

自文档化的程序:self-documenting program

11 没有银弹

根本任务:打造由抽象软件实体构成的复杂概念结构;

次要任务:编程语言表达这些抽象实体,在空间和时间限制内将它们映射成机器语言。

没有任何技术或管理上的进展,能够独立地许诺在生产率、可靠性或简洁性上取得数量级的提高。解决次要困难的一些突破:高级语言、分时、统一编程环境。增量开发要求自顶而下的设计,使逆向跟踪很方便,并非常容易进行原型开发。乐观主义是程序员的职业病,“一切都将运作良好”。

12 20年后的观点

概念完整性:将体系结构和设计实现、物理实现相分离;体系结构的递归。概念完整性是产品质量的核心,拥有一位结构师是迈向它的最重要一步,这个原理适用于所有的复杂事物。

图形界面WIMP:窗口windows、图标icons、菜单menus、指针选取pointing。通过类比、模仿获得的概念完整性;用户功能和易用性;从新手过渡到熟练用户;卓越的解决方案;强制整合到设备。

瀑布模型的谬误:假设项目只经历一次过程,设计合理可靠,编码实现的错误随着测试被修改和调整;假设系统被一次性构建,在所有设计、大部分编码、部分单元测试完成后,才为闭环的系统测试合并各个部分。所以必须存在逆向移动,要往复迭代两个或更多的体系结构-设计-实现循环。

上一篇 下一篇

猜你喜欢

热点阅读