目录
前言
1.1 什么是软件构建
1.1.1 ”构建活动“与”非构建活动“
1.1.2 ”构建活动“相对于其他软件开发活动的地位
1.1.3 ”构建活动“的具体任务
1.2 “构建活动”为何如此重要?
1.2.1 ”构建活动“重要的原因
1.3 如何阅读这本书
前言
按照一般的用法,“构建”是指建设的过程。构建过程可能包含有计划(产品需求)、设计(产品设计、开发设计)、检查工作(测试)的一些方面。
本章主题
1、熟悉软件开发流程(由哪些活动组成);
2、区分哪些是”构建活动“需要做的事情,哪些是”非构建活动“需要做的事情;
1.1 什么是软件构建
开发计算机软件己是一个复杂的过程。在过去25 年间,研究者己经认识到在软件开发过程中涉及到各种不同的活动(activity),可以理解软件构建,就是由这些活动组成:
- 定义问题 (problem definition)
- 需求分析 (requirements development), 用户界面设计等
- 软件架构 (sofiware architecure),或高层设计(high-level design)
- 详细设计 (detailed design)
- 规划构建 (construction planning)
- 编码与调试 (coding and debugging)
- 单元测试 (unit testing)
- 集成测试 (integration testing)
- 集成 (integration)
- 系统测试 (system testing)
- 保障维护 (corrective maintenance)
软件构建可分为三个阶段:准备阶段(构建活动前(非构建活动))、构建活动、测试与维护阶段(构建活动后(非构建活动))。
1.1.1 ”构建活动“与”非构建活动“
上面的这些”活动“可以分为两部分:一部分是”构建活动“,另一部分是”非构建活动“。多数时候,”构建活动“就是整个软件构建过程中动手的那部分。
1、构建活动主要是编码与调试。但也涉及详细设计、规划构建、单元测试、集成、集成测试等其他活动。构建需要可观的创造力和判断力。在全书中,我也常常用“编程”代替“构建”。
2、一些重要的非构建活动包括管理(management)、需求分析、软件架构设计、用户界面设计、系统测试,以及维护。以上每一项活动都像构建活动一样最终影响着项目的成败——至少能影响任何有不止一两个人参与、超过几周时间才能完成的项目的成败。关于其中每一项活动,你都可以找到相关的书籍。
1.1.2 ”构建活动“相对于其他软件开发活动的地位
图1-1是一张软件开发的平面图,图1-2给出了本书的立体视图:
1.1.3 ”构建活动“的具体任务
图1-1 和图1-2都是关于构建活动的高层次视图,但细节是什么?这里列出一些构建活动中的具体任务(task):
- 验证有关的基础工作已经完成,因此构建活动可以顺利地进行下去。
- 确定如何测试所写的代码。
- 设计并编写类(class)和子程序 (routine)。
- 创建并命名变量(variable)和具名常量 (named constant)
- 选择控制结构 (control structure),组织语句块
- 对你的代码进行单元测试和集成测试,并排除其中的错误。
- 评审开发团队其他成员的底层设计和代码,并让他们评审你的工作。
- 润饰代码,仔细进行代码的格式化和注释。
- 将单独开发的多个软件组件集成为一体。
- 调整代码(tuning code),让它更快、更省资源。
1.2 “构建活动”为何如此重要?
1.2.1 ”构建活动“重要的原因
原因如下:
- 构建活动是软件开发的主要组成部分。 根据项目规模的不同,构建活动在整个软件开发活动总时间中所占的比例一般在30%至80%之间。在整个项目中占有这么多时间的活动必然会影响到项目的成败。
- 构建活动是软件开发中的核心活动。 需求分析和架构设计都是在构建活动开始之前就完成的基础工作,它们可以让你更有效地进行构建;系统测试(严格意义上的独立测试)则是构建活动的后续工作,用以验证构建的正确性。显然,构建活动位于软件开发过程的核心位置。
- 构建活动的产物——源代码——往往是对软件的唯—精确描述。在很多项目中,程序员可以得到的唯一文档就是源代码本身。需求规格书和设计文档可能过时,但源代码总是最新的。因此,源代码就必须具有尽可能高的质量。统一地运用各种技术来改进源代码的质量,将决定得到的结果是 Rube Golaberg 所造的古怪产品’,还是一个详细、正确且信息丰富的程序。这些技术在构建活动中能得到最有效的应用。
- 构建活动是唯一一项确保会完成的工作。 一个理想的软件项目在进行构建之前,都要经过谨慎的需求分析和架构设计。一个理想的项目在构建完成之后,也要经历全面的、统计意义上受控制 (Statistically controlled)的系统测试。然而现实中不那么完美的软件项自,往往跳过需求和设计的阶段而直接跃入构建环节。之后又由子有太多的错误要修正而时间又不够,测试环节也被抛到一边了。但是,无论一个项目的计划有多匆忙、多糟糕,它都不可能扔下构建活动——这是不可或缺的环节。因此,对构建活动进行改进,是改进软件开发过程的一种有效途径。
1.3 如何阅读这本书
这本书有意设计成使你既可以从头到尾阅读,也可以按主题阅读。
1. 如果你想从头到尾阅读,那么你可以直接从第2章“用隐喻来更充分地理解软件开发”开始钻研。
2. 如果你想学习特定的编程技巧,那么你可以从第6章“可以工作的类”开始,然后根据交叉引用的提示去寻找你感兴趣的主题。
3. 如果你不确定哪种阅读方式更适合你,那么你可以从第3章3.2节“辦明你所从事的软件的类型”开始。