关于软件过程的一些看法

关于软件过程的一些看法

大家通常把软件过程分成重量级过程和敏捷过程两个对立的阵营,其实他们的关系并不是如此的水火不容。只是它们关心了软件开发过程中的不同方面而已。

对于重量级过程,一个典型的标志是文档的量,如果一个过程要求大量的文档,那么它大概属于重量级。那么为什么它们需要如此多的文档呢?php?name=%B4%F0%B0%B8" onclick="tagshow(event)" class="t_tag">答案是:沟通和协同。由于重量级过程面对的是大型开发团队,分析设计开发php?name=%B2%E2%CA%D4" onclick="tagshow(event)" class="t_tag">测试人员动辄几百人,它们甚至身处异地,团队沟通的难度可想而知(《人月神话》这本经典书籍生动地描写了巨大团队所面临的沟通困境)。在这样的项目中,如果缺乏沟通,就根本无法进行下去,因此在这时,沟通成了压倒一切的瓶颈,重量级过程针对这个状况,就引入了大量的,详细之极的文档,以便众人查阅,这是它的解决办法。但是这个做法牺牲了灵活性,一旦发生变化,将引起大量文档修改和同步的问题。

敏捷过程关心的是灵活性,它看到变化是不可抗拒的,因此针对它提出了各种方案。敏捷过程文档很少,沟通通过白板等方式进行。拥抱灵活性意味着牺牲大规模的沟通能力,因此敏捷过程用于数百人的团队的案例很少见,通常都是小团队用的比较多,因为他们并不面临很大的沟通问题。

因此,敏捷过程和重量级过程实际上是权衡沟通和灵活的两个选择,没有好坏,只有适合。

另外,从方法论角度说,OO和敏捷过程在某种意义上有契合点。OO的方法论本质是自底向上的,即识别对象,抽象出类,建立关系,搭出系统。敏捷过程的方法论也有自底向上的趋势。

——纯属个人看法,欢迎拍砖。
看来你对软件开发和管理由经验,说出了你的经验和认识。谢谢!
很赞同!

变化是永恒的。只有适合,没有好坏,视项目的规模和沟通的需求而定开发方式。都是灵活的。