图书前言

做任何事情都需要过程,软件开发也不例外。尽管人们不否认过程对软件产品质量的作用,但常常有这样的现象:在进度压力下,首当其冲被简化的工作还是过程。因为规范化的过程不但使过程要素的执行更加严谨,导致短期的活动实施时间拉长,同时需要人力等资源的投入,也无形中增加了软件开发的近期成本。若选择的过程不合适,还会对开发起到阻碍作用。另一方面,任何两个软件产品的开发过程都很难完全相同。而软件过程是对过去经验的总结,因此僵化地照搬任何一个软件过程的结果都可能事与愿违,这也是为什么大家对软件过程敬而远之的原因之一。软件过程的应用与所开发的产品的关键度、参与的人员状况、技术成熟度等因素相关,还与企业的文化相关。过程应用的关键是如何充分体现“平衡”的理念。在一个具体过程中,一个过程或活动是否应该有?若有,应执行到什么样一个“度”?其中的“拿捏”讲究的就是平衡。平衡做得好,则可为软件过程中的各要素创造和谐环境,使项目或产品开发按预期进行;平衡做得不好,则过程各要素间不但相互制约导致预定义过程被束之高阁,其后果是项目或产品的目标也很难达到。软件过程应用中的这些现象,也为弱化软件过程的人们提供了很好的理由。如今交付环境日趋复杂,软件企业已经清醒地认识到:制造软件产品的过程和软件产品本身一样重要。因为高质量的软件产品的背后一定有一个合理的过程来保证。从长远角度看,软件产品的高产出和低成本的背后一定有持续的过程改进做后盾。但如何理解软件工程过程?软件工程过程到底包括哪些内容?如何组织?如何正确地认识软件过程?为什么过程重要却未能得到足够的重视?针对目前软件过程应用中的这些问题或困惑,以及有关软件过程概念的不规范,需要把软件过程的相关内容说清楚,让学生明白软件过程中各要素间的内在联系以及软件过程与企业文化的关系。

为此,作者依据SWBOK给出的知识点及多年的软件开发与软件工程教学实践,力求为学生提供一本既满足软件工程本科生教学要求,又能结合实际案例对软件工程过程进行比较全面、清晰地论述的教材。

本书的出版得到了很多人的帮助。感谢麦中凡教授对本书框架提出的非常中肯的建议并审阅了全书内容。感谢齐治昌教授和杨文龙教授的大力推荐。感谢谭火彬、王华峰、林士媛等为本书编辑、出版所作出的贡献。

因工作做得不够细致,本书中未能明确标记文献的引用。又因时间仓促及水平有限,书中难免有不当之处,敬请读者批评指正。

作者2009年10月