《代码大全》读书笔记之一

What is Software Consturction

  • 定义问题 problem definition
  • 需求分析 requirements planning
  • 规划构建 construction planning
  • 软件构架 software architecture ,高层设计 high-level design
  • 编码与调试 coding and debugging
  • 单元测试 unit testing
  • 集成测试 integration testing
  • 集成 integration
  • 系统测试 system testing
  • 保障维护 corrective maintenance

构建活动中的具体任务(task)

  • 验证有关的基础工作已经完成,因此构建活动可以顺利进行下去
  • 确定如何测试所写的代码
  • 设计并编写类(class)和子程序(routine)
  • 创建并命名变量(variable)和具名常量(named constant)
  • 选择控制结构(control structure),组织语句块
  • 对代码进行单元测试和集成测试,并排除其中的错误
  • 评审开发团队其他成员的底层设计和代码,并让他们评审你的工作
  • 润饰代码,仔细进行代码的格式化和注释
  • 将单独开发的多个软件集成为一体
  • 调整代码,让他更快更省资源

Importance of Prerequisites
前期准备的重要性

准备工作的中心就是降低风险,目前软件开发中最常见的项目风险是糟糕的需求分析和项目计划

从食物链来类比软件开发


发现错误的时间要尽可能接近引入该错误的时间。缺陷在软件食物链里呆的时间越长,它对食物链最后级造成的损害就越严重。

 

 

  • P7 把主要精力集中于构建活动,可以大大提高程序员的生产率。
    在最近的一个项目中,对于这一点,我是深有体会。我们花了很长的时间做设计,结果接下来的许多工作都在愉快的心情下完成。我觉得 P28 的那个食物链的例子更有说服力,健康的生态环境中,海鸥吃新鲜的鲑鱼,鲑鱼吃新鲜的青鱼,青鱼吃新鲜的水蝽。这是一条健康的食物链。 如果环境被污染了,水蝽在污染的水域游泳,那么海鸥,食物链的最后一环吃下的不仅仅是是不健康的鲑鱼体内的垃圾,还有青鱼,水蝽体内的污染物。软件开发中,架构师吃掉需求,设计师吃掉架构,程序员,软件食物链的最后一环,消化掉设计。 如果一开始就被污染了,我们就不要指望程序员快乐了。整个软件都会具有放射性,周身都是缺陷,绝对导致程序员脾气暴躁、营养失调。在我们规模不大的团队里,一个人身兼数职,伤害更大。所以,项目一开始就决定了它能否成功。

 

  • P7 源代码——往往是对软件的唯一精确描述
    其实我们不必为没有精确的文档沮丧,不是吗?

 

  • P13 常见的软件隐喻
    好的隐喻可以让我们思考更多的问题,并走上正确的道路。我们是在 Writing Code,还是 Growing a System 还是 System Accretion 或是 Building Software ? 做不同软件有不同的方法,不要拘泥。

你可能感兴趣的:(工作,软件测试,活动,单元测试,读书)