1.1 什么是软件构建
“构建”一词,在软件领域之外的含义,我们开一想到的就是“建筑工人”在建设一栋房屋、一所学校、乃至一座摩天大楼时所做的工作。
如果开发软件就像写一个hello world,或者就像写一个四则运算的计算器那么简单的话,就不需要构建了,只要想什么写什么就可以了。但是,如果要开发一个操作系统,或者金融系统,或者医疗系统的话,就不得不要好好构建了。在过去25年间,研究者已经认识到在软件开发过程中的各种不同的活动:
- 定义问题
- 需求分析
- 规划构建
- 软件架构,或高层设计
- 详细设计
- 编码与调试
- 单元测试
- 集成测试
- 集成
- 系统测试
- 保障维护
往深一点想,把构建活动放在由其他活动构成的环境中讨论,这样有助于在“构建”期间集中注意正确的任务,也有助于恰当强调那些重要的“非构建活动”。下图显示了构建活动相对于其他软件开发活动的地位。
上图中,构建活动用蓝色的椭圆表示,构建活动主要关注于编码与调试,但也包含详细设计、单元测试、集成测试以及其他一些活动。
关注构建的细节,这里列出了一些构建活动中的具体任务:
- 验证有关的基础工作已经完成,因此构建活动可以顺利地进行下去
- 确定如何测试所写的代码
- 设计并编写类和子程序
- 创建并命名变量和具名常量(named constant)
- 选择控制结果,组织语句块
- 对你的代码进行单元测试和集成测试,并排除其中的错误
- 评审开发团队其他成员的底层设计和代码,并让它们评审你的工作
- 润饰代码,仔细进行代码的格式化和注释
- 将单独开发的多个软件组件集成为一体
- 调整代码,让它更快、更省资源
除此之外,还有一些重要的非构建活动,比如管理、需求分析、软件架构设计、用户界面设计、系统测试、以及维护。
1.2 软件构建为何如此重要
- 构建活动是软件开发的主要组成部分 构建活动在整个软件开发活动总事件中所占的比例一般在30%到80%之间。
- 把主要经历集中于构建活动,可以大大提高程序员的生产率
- 构建活动的产物源代码往往是对软件的唯一精确描述
- 构建活动是唯一一项确保会完成的工作 如果跳过了需求和设计的阶段而至今跃入构建环节,但之后又由于有太多的错误要修正而事件又不够,测试环节也被跑到了一边, 最终乱糟糟的,严重降低了效率,导致项目延期。如果严格按照构建的流程走,项目便会进行得有条不紊,也能确保完成了工作。