寒假阅读人月神话2

《人月神话》关注的主要问题是如何在需要多人设计的情况下,仍然保持软件的概念一致性。文中提出了一套可用于软件开发实践的方法。首先作者引用了Blaauw提出的创造性活动的三个独立阶段:体系结构,设计实现,物理实现。少数结构师进行设计,他们之间通过交流保持设计上的概念一致性。这三个步骤在很多方面都可以并行开始:在体系结构有了一个雏形型时,设计实现人员就可以设计比如:数据流,控制序列等。物理实现层面也可以开始对具体的技术进行研究,调试等工作。总的来说,这套方法重点在于:将软件开发过程划分为了两个阶段,概念实现阶段和物理实现阶段。在概念实现阶段需要由少量精英在充分沟通,对将要设计的的软件有统一的概念的基础上进行软件的设计。然后由物理实现人员进行并行的实现。作者在“为什么巴比伦塔会失败”中鼓励团队中的每个成员相互了解设计和代码。在20年后,作者得出了新的结论:信息隐藏是唯一提高软件设计水平的途径。我想这个改变很大程度上是来自于OOP设计思想和编程语言的流行。作为OOP的基本特点之一,信息隐藏已经已经是软件设计中一个基本的概念。

对于软件工程的根本问题,作者在原著和再版前言中反复讨论了它的解决之道。总结起来包括:需求精炼、快速原型、增量开发和卓越的设计人员。这些特点与目前流行的“敏捷开发”模式在很大程度上有共同点,同时作者在再版中还指出了自己的错误——瀑布模型,它假设系统是一次性构建完成的。而敏捷开发中的反复迭代过程,将系统的实现划分成多个阶段,每个阶段都会发布出一个可以运行的版本,并且对之前的方向有一个反馈。这里作者也提到了渐进精化的思想,和angile的理念也是非常吻合的。

原文地址:https://www.cnblogs.com/youknownothing/p/8447201.html