目录
软件构件主要包括:详细设计、编码、调试、集成、开发者测试
第二章:用隐喻充分理解软件开发:
在开发前我们首先需要理解这个软件,对这个软件与实际的事物联系在一起;
1、当将软件的构建过程比作房屋的构建过程时,可以发现,仔细的准备是必要的,发生变动时最贵的成本是人的时间,而大型项目和小型项目之间也有差异。
2、软件开发实践中,每位工程师都有许多工具,但不存在任何一个能适用于所有工作的工具,因地制宜德尔选择正确工具是成为能有效编程的程序员的关机。
第三章:三思而后行:前期准备
1、核对表(细节可参考文中描述的原则核对)
①是否辨明了自己所从事的软件的类型,并对所用的开发方法做出相应的剪裁?(许多项目是高度迭代的,某些则应该是序列式的)
②是否充分明确定义了需求?而且需求足够稳定,能够开始构建了?(详见需求核对表)
③是否充分明确的定义了架构,以便开始构建?(详见架构核对表)
④是否已经指出当前项目中独有的风险?(以避免构建活动面临不必要的风险)
2、在项目初期关注质量、发现问题,远比后期发现解决成本更低。
我们在项目的初期就要强调质量,
前期准备工作的中心目标就是降低风险:一个好的项目规划则能够尽可能的将前期的风险清除掉。不要有尽快快发编码的欲望,一定要准备好,软件开发不仅仅是写代码,在项目开始之前需要先制定项目计划,
迭代、增量的开发模式 是如何进行的?
迭代开发模式会将项目周期分为多个迭代来完成,每一个迭代只实现一小部分功能, 完成一次迭代时就将系统给到用户进行演示或测试,进而及早得到用户的反馈来改进需求和设计,每一次迭代也需要经历需求分析、设计和编码和测试等多个活动, 但通常是轻量级的,项目的整个周期可能要进行十多次或更多这样的迭代。
那么,迭代和增量开发模式又是如何进行的呢?下面作一下简述:
1)项目初期和我们现用的方法一样,会定义好产品设想以及功能列表,并对产品功能排好优先级,但与传统的开发模式不同的是,这个阶段不会去细化所有需求。
2)根据优先级,挑选一小部分需求进行细化,项目初始阶段通常挑选高风险的、决定核心架构的、业务性质重要的功能需求来细化。
3)针对细化的一部分需求进行设计和编码,得到可运行的软件然后交付给用户,或给用户演示并收集反馈。
4)根据用户的反馈修改需求,并提交新版本的软件给用户,直到用户满意。
5)重复2~4,直到完成所有的功能。2~4被称为一次迭代,每次迭代大约需要数周,不宜太长,越短越好,每个项目可能要经历十多次迭代。
6)其它活动略
什么时候使用顺序开发:
- 需求相对稳定;
- 对需求的设计以及理解透彻;
- 开发团队对整个领域非常熟悉,
- 项目的风险小
- 后期改变需求、设计、编码的代价比较高
什么时候使用迭代开发:
- 需求理解的不够透彻、或者需求本身就不稳定;
- 设计比较复杂挑战性大;
- 开发团队对这一领域不熟悉;
- 后期改变需求、设计、编码的代价较低
第四章:软件构建
1、软件构建中的设计:设计指的是编写具体的代码之前先用伪代码写出一个类的接口,也可能就是在编码之前画出几个类之间的关系图,还可能就是询问另一位程序员用那个设计模式会更好。无论是以何种方式进行设计,小型项目也能和大型项目一样从精心的设计之中获益,