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 ? 做不同软件有不同的方法,不要拘泥。
分享到:
相关推荐
个人读书笔记,学习共享,希望每个苦恼于代码一坨坨混乱不堪的程序员都能学习. * 整洁代码的意义? 可读性,可维护性。 * 如何写出整洁代码? 1.只做一件事 2.不重复 3.有表达力 * 整洁代码的态度要求,要遵守...
代码整洁的读书笔记之一 截取文章中的一小段,自己留着用,时刻提醒自己
读书笔记:代码整洁之道 第14章代码
此外,书中还深入讨论了集合框架,这是Java库中最强大的部分之一。从ArrayList到HashMap,从Set到Queue,Java集合框架提供了丰富的数据结构,便于存储和操作数据。理解这些类和接口的用法对于编写高效代码至关重要。...
作为“算法导论系列读书笔记之三”,本文将主要探讨第三章的内容,这一章通常聚焦于排序与选择算法,这些是数据处理的基础,对理解和优化程序性能至关重要。 在第一章和第二章中,我们可能已经接触到了基本的数据...
《算法导论》系列读书笔记之六主要涵盖了优先级队列、堆排序以及大根堆和最大堆等重要概念。这些知识点在计算机科学与技术领域,尤其是数据结构和算法分析中占据着核心地位。下面将对这些内容进行深入的探讨。 ...
读书笔记:一个致力于构建代码整洁之道的对应库
### 计算机专业读书笔记知识点汇总 #### CSS精粹之布局技巧 1. **立即检测疑问** - 在开发过程中遇到CSS布局问题时,应该及时检查代码。 - 利用W3C提供的XHTML与CSS验证工具可以帮助发现并修正错误。 - 文件...
### 大学计算机基础知识点概览 #### 一、电脑的应用及特点 - **数值计算**(科学计算):主要用于科学研究和技术开发... - **常用字符代码**:从小到大为空格(32)、数字(0的代码为48)、大写字母(A的代码为65)。
《统计学与R读书笔记》这本书,就是一本非常好的指南,它不仅涵盖了统计学的基础理论,还详细介绍了如何在R软件中应用这些理论。阅读这本书,可以帮助读者在统计学的海洋中航行,同样也能熟练驾驭R语言这艘统计之船...
MySQL数据库是世界上最受欢迎的关系型数据库管理系统之一,尤其在Web应用程序中广泛应用。它的InnoDB存储引擎提供了事务处理、行级锁定以及外键支持等功能,确保了数据的可靠性和并发性。以下是对MySQL,尤其是...
读书笔记:参照《Java并发编程之美》将每章代码敲一遍
2. 根据权重系数对 Value 进行加权求和:在第二阶段,引入类似 softmax 的计算方式对第一阶段的得分进行数值转换,将原始计算分值整理成所有元素权重之和为 1 的概率分布。 Self Attention 模型 Self Attention ...
- 模板C++:模板编程允许编写独立于数据类型的代码,是C++泛型编程的核心,也是C++强大的抽象工具之一。 - STL(标准模板库):STL是一个包含容器、迭代器、算法和函数对象的模板库,它提供了一组通用的、经过优化...
第二层面则是实现面向对象特性的底层机制和技术细节,这一部分往往较少被提及,而本篇读书笔记正是聚焦于此。 #### 二、对象模型基础 ##### 2.1 对象模型概述 - **简单对象类型**:指基本的数据类型如`int`, `...
信号与槽是Qt的核心特性之一,它允许组件之间进行通信。当一个对象的特定事件发生时,会发出一个信号,而其他对象可以通过槽来响应这个信号。这种设计模式简化了事件处理,并使得代码更具可读性和可维护性。 第12章...
函数是C语言的核心特性之一,它封装了特定任务的代码,可以重复使用。笔记涵盖了函数的定义、声明、参数传递以及返回值。读者将学习如何创建自定义函数,以及如何利用标准库中的函数来解决问题。 四、数组和指针 ...
《架构整洁之道》是软件开发领域的一本经典著作,由知名专家Robert C. Martin撰写。Martin先生不仅是cleancoders.com的联合创始人,还是Uncle Bob Consulting LLC的创始人,他在全球范围内提供软件开发咨询服务,...