前言
做任何事情都需要过程,软件开发也不例外。尽管我们都不否认过程对软件产品质量的作用,但我们常常会看到这样的现象: 在进度压力下,首当其冲被简化的工作还是过程。规范化的过程使过程要素的执行更加严谨,导致短期的活动实施时间拉长,同时需要人力等资源的投入,也无形中增加了软件开发的近期成本。若选择的过程不合适,还会对开发起到阻碍作用。现实中很难有两个软件产品的开发过程完全相同。软件工程过程是对过去经验的总结,僵化地照搬任何一个软件工程过程的结果都可能事与愿违,这也是大家对软件工程过程敬而远之的原因之一。
软件工程过程的应用与所开发的产品的关键度、参与的人员状况、技术成熟度等因素相关,还与企业的文化相关。过程应用的关键是如何充分体现“平衡”的理念。在一个具体过程中,一个过程或活动是否应该有?若有,应执行到什么样的一个“度”?其中的“拿捏”讲究的就是平衡。平衡做得好,则可为软件工程过程中的各要素创造和谐环境,使项目或产品开发按预期进行; 平衡做得不好,则过程各要素间不但相互制约导致预定义过程被束之高阁,当然项目或产品的目标也很难达到。软件工程过程应用中的这些现象也为弱化软件工程过程的人们提供了很好的理由。如今交付环境日趋复杂,稍具规模的软件企业都清醒地认识到: 制造软件产品的过程和软件产品本身一样重要。因为高质量的软件产品的背后一定有一个合理的过程来保证。从长远角度看,软件产品的高产出和低成本的背后一定有持续的过程改进做后盾。
如何理解软件工程过程?软件工程过程到底包括哪些内容?如何组织这些内容?如何正确地认识软件工程过程?为什么过程如此重要却未能得到足够的重视?针对目前软件工程过程应用中的这些问题或困惑,以及有关软件工程过程概念的不规范,要求我们把软件工程过程的相关内容说清楚,让学生明白软件工程过程中各要素间的内在联系,以及软件工程过程与企业文化的关系。
本书是作者多年来从事一线软件项目开发、管理与咨询过程中积累的经验与软件工程教学实践的结晶,书中内容结合实际案例对软件工程过程进行比较全面、清晰的论述。
本书在写作过程中,得到了很多人士的帮助。
麦中凡教授对本书的框架提出了非常中肯的建议并审阅了本书的大部分内容,在此表示感谢。
北京航空航天大学的姚淑珍教授、杨文龙教授和国防科技大学的齐治昌教授,正是他们的信任、鼓励与支持,才使本书得以问世,在此表示感谢。
前人的工作是本书写作的基础,本书在写作过程中借鉴了前人已有著作和论文的内容,在此对列入参考文献部分的引用文献清单的作者表示感谢。
教学与研究工作是本书写作的基础,软件工程过程是北京航空航天大学软件学院重点建设的现代软件工程课程系列之一,自2004年开设以来,得到了学校精品课程建设的资助,学院给予了大力支持。在教学过程中,800多名本科生和2000多名研究生对课程的学习和反馈为本书的写作提供了帮助,在此表示感谢。
最后,特别感谢清华大学出版社给予本书的支持,感谢各位编辑为本书的策划和出版付出的心血。
因工作做得不够细致,书中未能明确标记文献的引用。限于编者的水平,难免存在错误与不妥之处,衷心希望广大读者指正赐教,联系E-mail: lingy@buaa.edu.cn。
作者2011年6月于北京
软件工程过程(高级篇)