Code Complete 软件构建和隐喻

这是我读Code Complete的笔记,仅作记录复习之用。


软件构建

构建就是创建事物的过程中动手的那部分。

常见的软件开发活动:

  •  定义问题
  •  需求分析
  •  规划构建
  •  软件架构(或高层设计)
  •  详细设计
  •  编码与调试
  •  单元测试
  •  集成测试
  •  集成
  •  系统测试
  •  保障维护

构建活动主要是编码与调试,但也涉及详细设计,规划构建,单元测试,集成,集成测试等活动。构建也常被称为“编码”或者“编程”。

构建活动非常重要:

  1. 构建活动是软件开发的主要组成部分;
  2. 构建活动是软件开发中的核心活动;
  3. 把主要精力集中于构建活动,可以大大提高程序员的效率;
  4. 构建活动的产物——源代码——往往是对软件的唯一精确描述;
  5. 构建活动是唯一一项会确保完成的工作;


用隐喻来理解软件开发

我们常见的软件术语,如virusbugcrashwormTrojans horsebomb等都是隐喻的良好示例。通过隐喻我们能更加充分的去了解一个事物。

隐喻和算法可以比较一下,算法是解决问题的步骤,而隐喻的作用是启发,是一种帮你寻找答案的技术。算法就像是参考答案,很标准规范;而隐喻就像是指路明灯,常常有一点随意。

常见的软件隐喻:

  • Writing Code(写作代码) 仅仅暗示了软件开发是一种代价昂贵的试错,对复杂的软件开发不适用。
  • Growing a System(培植系统) 类似耕作技术,暗示“一次做一点”,但不是很恰当。
  • System Accretion(系统生长) 指的是软件的生长,暗示软件是通过外在的增加或吸收而逐渐的生长或者变大。与软件工程中的“增量式开发”不谋而合。
  • Building Software(建造软件) 它与软件生长的概念是相通的,但这个隐喻更加恰当。他可以用来解释大型项目和小型项目之间的区别。例如制造一个狗屋,如果不慎采用了错误的设计,虽是的仅仅是一个下午的时间和一些木料,但如果制造的是帝国大厦,那错误的代价就太高了。建造帝国大厦一样庞大的软件,需要有和其不相上下的技术水准及管理水平。
  • The Intellectual Toolbox(智慧工具箱) 暗示软件开发时,要把所有的方法技术以及技巧放到脑海,因地制宜地选择正确的工具。
  • ......

不同的隐喻之间并不排斥,应当使用对你最有益的某种隐喻组合。

你可能感兴趣的:(软件工程)