这是我读Code Complete的笔记,仅作记录复习之用。
软件构建
构建就是创建事物的过程中动手的那部分。
常见的软件开发活动:
- 定义问题
- 需求分析
- 规划构建
- 软件架构(或高层设计)
- 详细设计
- 编码与调试
- 单元测试
- 集成测试
- 集成
- 系统测试
- 保障维护
构建活动主要是编码与调试,但也涉及详细设计,规划构建,单元测试,集成,集成测试等活动。构建也常被称为“编码”或者“编程”。
构建活动非常重要:
- 构建活动是软件开发的主要组成部分;
- 构建活动是软件开发中的核心活动;
- 把主要精力集中于构建活动,可以大大提高程序员的效率;
- 构建活动的产物——源代码——往往是对软件的唯一精确描述;
- 构建活动是唯一一项会确保完成的工作;
用隐喻来理解软件开发
我们常见的软件术语,如virus,bug,crash,worm,Trojans horse,bomb等都是隐喻的良好示例。通过隐喻我们能更加充分的去了解一个事物。
隐喻和算法可以比较一下,算法是解决问题的步骤,而隐喻的作用是启发,是一种帮你寻找答案的技术。算法就像是参考答案,很标准规范;而隐喻就像是指路明灯,常常有一点随意。
常见的软件隐喻:
- Writing Code(写作代码) 仅仅暗示了软件开发是一种代价昂贵的试错,对复杂的软件开发不适用。
- Growing a System(培植系统) 类似耕作技术,暗示“一次做一点”,但不是很恰当。
- System Accretion(系统生长) 指的是软件的生长,暗示软件是通过外在的增加或吸收而逐渐的生长或者变大。与软件工程中的“增量式开发”不谋而合。
- Building Software(建造软件) 它与软件生长的概念是相通的,但这个隐喻更加恰当。他可以用来解释大型项目和小型项目之间的区别。例如制造一个狗屋,如果不慎采用了错误的设计,虽是的仅仅是一个下午的时间和一些木料,但如果制造的是帝国大厦,那错误的代价就太高了。建造帝国大厦一样庞大的软件,需要有和其不相上下的技术水准及管理水平。
- The Intellectual Toolbox(智慧工具箱) 暗示软件开发时,要把所有的方法技术以及技巧放到脑海,因地制宜地选择正确的工具。
- ......
不同的隐喻之间并不排斥,应当使用对你最有益的某种隐喻组合。