读书笔记:《代码大全第2版》 01.打好基础

前言

精华部分:6、7、10~19

初级:先看18
高级:先看4
P M:先看33
低年级学生:先看11
高年级学生:先看8
制定编码标准:先看32
自学编程:先看7
喜欢网上争论:先看13.3和17.3

理解软件开发

软件开发经历

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

读书笔记:《代码大全第2版》 01.打好基础

读书笔记:《代码大全第2版》 01.打好基础

很多项目,程序员得到的唯一文档就是源代码本身。需求规格书和设计文档可能过时,但是源代码是最新的
因为时间原因,需求可能是临时的,测试可能是不充分的,但是代码是必须编码完成的。

建筑过程与软件工程

通过隐喻,可以将软件的构建过程比作房屋的建设过程。

首先你要决定准备建一个什么类型的房子(问题定义);
然后你必须和某个建造师探讨这一总体设计,并达到批准(软件架构设计);
随后你画出详细的蓝图,雇一个承包人(详细设计);
接下来你要准备好建造地点,打好地基,搭建房屋框架,砌好边墙,盖好房顶,通好水电煤气等(软件构建);
最后在房子大部分完成之后,庭院设计师、油漆匠、装修工会对你的新家进行美化(软件优化);
在整个过程中,还会有各种监察人员来检查工地、地基、框架、布线等其他需要检查的地方(评审和详查)。

可以发现,仔细的准备是必要的,大型项目和小型项目之间也是有差异的。

前期准备

前期准备的意义

就像修建建筑物一样,项目的成败很大程度上在构建开始之前就已经注定了。如果地基没打好或者计划不充分,在构建开始前能做的无非就是尽量让损害最小罢了。

前期准备的目标是为了降低风险,一个好的项目规划者能够尽可能早地将主要的风险清除掉,以使项目的大部分工作能够尽可能平稳地进行。

在开始动手做系统前,先好好思考打算如何去做,最容易修改的代码是还没有开始的代码。

前期准备的工作

明确软件类型

明确所从事的软件的类型,并对所用的开发方法做出相应的裁剪。因为建设大厦和搭建狗舍的前期准备肯定不一样

读书笔记:《代码大全第2版》 01.打好基础

问题定义

  • 站着客户的角度,用客户的语言来描述问题,并不涉及具体的解决方式
  • 问题定义是软件开发的起始,一旦方向错了,后续的努力都是浪费

需求分析

  • 明确的需求有助于确保用户驾驭系统的功能
  • 充分详尽地需求描述是项目成功的关键

架构设计

  • 系统架构的质量决定了系统的最终质量

前期准备工作不周全的原因

  1. 绝大多数开发人员没有需求、产品方面的经验和训练
  2. 程序员无法抵御"尽快开始编码"的欲望
  3. 管理者对准备工作的重要性不理解

在构建期间处理需求变更

  • 对比需求核对表评估需求的质量
  • 确保每一个人都知道需求变更的代价
  • 建立一套变更控制程序
  • 使用能适应变更的开发方法
  • 放弃这个项目(需求糟糕不稳定,以上都不奏效)
  • 注意这个需求有没有商业价值

构建之法

读书笔记:《代码大全第2版》 01.打好基础