杂谈Barry Boehm的软件工程七原则与敏捷实践

大概在5年以前曾经从网上搜到了Barry Boehm提出的软件工程的七原则(Seven Basic Principles of Software Engineering), 这是Barry Boehm1983年发表的文章,在网上搜到的是别人对这七个原则的转译与介绍,看后觉得怪怪的,总是觉得有些地方不能准确把握这七个原则的含义。于是去 google搜其原文,未果,最近终于搜到了原文,因此更能准确把握Barry Boehm老先生的原意。

有人将题目翻译为软件工程的七个基本原理,其实,principles在此处还是翻译为原则更为准确。

依据原文我的对于各原则的理解如下:

原则一:使用分阶段的生命周期计划管理(manage using a phased life-cycle plan)

(1)     一定要有项目计划;

(2)项目要划分生命周期阶段,每个阶段都要有计划;

(3)计划要分层或分阶段逐步细化;

(4)要使用项目计划管理项目,不能弃之不用。

原则二:执行持续确认(perform continuous validation)

(1)尽早发现错误。大部分缺陷是编码之前注入的,缺陷越早修复成本越低。

(2)尽早发现错误的措施:

深入评审;
设计阶段编写用户手册、使用手册、数据准备手册;
原型;
模拟;
自动化的检测工具;
设计审查与走查;
等等。

原则三:坚持规范的产品控制(maintain disciplined product control)

执行配置管理,确保工作产品之间的一致性。

原则四:使用现代化的编程实践(use modern programming practices)

采用现代化的开发方法、开发实践提升软件的效率与质量。

原则五:坚持结果的清晰的责任(maintain clear accountability for results)

对于项目的阶段产出、各个小组之间的承诺、每个人的产出与承诺要明确、要可验证。

原则六:使用少而精的人员(use better and fewer people)

(1)人与人之间的效率差别达10倍甚至25倍以上,因此要使用精英团队。

(2)采用多种方式提升沟通的质量与效率:

不要通过加人的方式解决进度问题
项目的初期不要太多的人员
为高性能提供高的回报
淘汰低性能者
使用自动化的辅助工具

原则七:坚持过程改进的承诺(maintain a commitment to improve the process)

识别、分析技术与过程的改进,建立持续改进的机制。

如果仔细去分析敏捷的软件开发方法,则可以发现,恰恰敏捷的实践很好的满足了上述的七个原则:

 

Barry Boehm七原则 敏捷实践
原则一:使用分阶段的生命周期计划管理 采用迭代的生命周期模型
增量式交付
制定交付计划与迭代计划
原则二:执行持续确认 现场客户随时执行功能测试
测试驱动开发
持续集成
sprint review
原则三:坚持规范的产品控制 现场客户或product owner负责维护需求
持续集成
原则四:使用现代化的编程实践 系统隐喻
重构
原则五:坚持结果的清晰责任 时间箱管理
开发人员认领任务
用户故事的验收准则
每日站立会议
测试驱动开发
持续集成
现场客户功能测试
sprint review
原则六:使用少而精的人员 每个项目小组不超过10人
采用一专多能,交叉职责的人员
自我管理的团队
每周工作40小时
原则七:坚持过程改进的承诺 sprint retrospective

 

作者:任甲林
原文:http://blog.csai.cn/user1/15522/archives/2011/46169.html