大概在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