《快速软件开发》快速吗?-----By Haifeng Xu
最近拜读了Steve
McConnell 的《快速软件开发》的第一和第二部分,即前16章。作为一名数学系的本科生,这是我第一次比较系统全面地接触关于软件工程的教材,所以不敢妄自评价书的好坏。总的来讲,我算从一个门外汉进入了门内,知道了软件工程这个学科是做什么的,知道了软件开发是个比较难的团队配合工作,以至于管理和合作方法已经形成了系统的理论,也知道了软件开发的流程,遵循的原则以及可能遇到的各种典型错误等等。
长话短说,我主要是想说说我读完这本书后的几个疑惑,有的有我自己的看法,有的还不知道,欢迎各种见解。
1 我读的书是《快速软件开发》,但是“快速”二字独特在哪儿?
顾名思义,这本书主要讲如何快速地开发软件。确实,书中专门用第一章介绍了什么叫“快速”,并且后面从各方面给出了很多建议,如:要详细地计划,要适当估计时间,要激励开发人员加班,要有好的团队结构和合作等等。但是我个人却觉得这些提到的建议同样也是提高软件质量,降低软件成本的方法,我没有想明白书名中的“快速”独特在哪儿?我觉得这些都是通用的方法,为什么不直接叫《软件开发》呢?甚至叫《高品质软件开发》也行?
2 有没有真正意义上的“快速”的方法?
书中提到,在产品成本,质量和开发速度之间我们要做一个权衡,当速度更重要的时候,我们可以适当牺牲其他二者。而当开始读这本书的是时候,其实我心中期待的是有没有这样一种方法,它能在维持产品成本和质量大体不变的前提下,提高产品开发的速度?比如通过将整个产品的经费分配到每个模块,谁完成谁获得该模块的经费的激励机制?或者用像topcoder那样的运营模式?
3 快速开发与《移山之道》中的敏捷开发的比较?有没有一种结合二者优点的更好的方法?
我对敏捷开发只有一个模糊的理解,个人感觉是:快速开发是从提高开发速度的角度来定义的,而敏捷开发是从开发方法的角度来定义的,它通过迭代的方式使开发过程更灵活。二者似乎可以相互取长补短,但是它们又有时有矛盾,如快速开发强调周密计划,而敏捷开发则可能先订粗略的计划再逐轮细化。那么有没有一种合二者之长的方法呢?
4 关于书中提到的“风险管理”的问题
我也觉得软件开发中存在各种风险,如忽略了必要任务,软件规模比估计的大等。但是书中提到的处理方法是预防,书中基本认为在风险发生后去缓解和处理是失败和愚蠢的,但我个人却有不同的看法。软件工程中的风险很多,有些甚至根本就不能预测,比如你不会知道有多大可能你的用户会突然改变了对软件的要求,我觉得对所有的风险去预防的代价会很大,而它们发生的概率有时很小,为什么不在发生后去适当处理呢?
当然还有一些细节上的小问题,不在这里赘述。
跪求各种意见和解释。