第2章 软件开发的过程
2.1 产品的组成部分
1 . 可交付的部分:用于描述制造出来并交付他人的软件产品组件。
2 . 客户需求:利用焦点人群审视软件功能。
3 . 产品说明书:真正地定义产品是什么、有哪些功能、外观如何。
4 . 进度表:在Gantt图表上列出任务。制定进度的目的是了解哪项工作完成了,还有多少工作要做,何时全部完成。
5 . 软件设计文档:
- 结构文档:描述软件整体设计的文档,包括软件所有主要部分的描述以及相互之间的交互方式。
- 数据流图:表示数据在程序中如何流动的正规示意图。有时背称为泡泡图,因为它是用圆圈和线画的。
- 状态转换图:把软件分解为基本状态或条件的另一种正规示意图,表示不同状态间转换的方式。
- 流程图:用图形描述程序逻辑的传统方式。
- 代码注释:便于维护的程序员轻松掌握代码的内容和执行方式。
6 . 测试文档:
- 测试计划 test plan:用于验证软件是否符合产品说明书和客户需求的整体方案,包括质量目标、资源需求、进度表、任务分配、方法等。
- 测试用例 test cases:列举测试的项目,描述验证软件的详细步骤。
- 缺陷报告 bug reports:描述执行测试用例找出的问题。
- 测试工具和自动测试 test tools and automation
- 度量、统计和总结 metrics,statistics,summaries:测试过程的汇总,采用图像、表格和报告等形式。
7 . 软件产品组成部分:
2.2 软件项目成员
- 项目经理、程序经历或者监制人员:自始至终驱动整个项目。他们通常负责编写产品说明书、管理进度、进行重大决策。
- 体系架构师或者系统工程师:是产品小组中的技术专家。他们一般经验丰富,可以胜任设计整个系统的体系架构或软件。他们的工作与程序员关系紧密。
- 程序员、开发人员或代码制作者:设计、编写软件并修复软件中的缺陷。他们与项目经理和设计师密切合作制作软件,然后与项目经理和测试员密切合作修复缺陷。
- 测试员或质量保证员:负责找出并报告软件产品的问题。他们与开发小组全部成员在开发过程中密切合作,进行测试并报告发现的问题。
- 技术作者、用户协助专员、用户培训专员、手册编写员或者文案专员:编制软件产品附带的文件和联机文档。
- 配置管理员或构建员:负责把程序员编写的代码及技术作者写的全部文档资料组合在一起,合成为一个软件包。
2.3 软件开发生命周期模式
1. 大瀑布模式:一大堆东西(人力或资金)放在一起,产生了优秀的软件产品/一堆废品
- 简单
- 计划、进度安排和正规开发过程几乎没有,所有精力都花在开发软件和编写代码上
- 没有过多测试
2. 边写边改模式
- “没有时间做好,但总有时间完成”:小组最初只有粗略的想法,接着进行一些简单设计,然后开始漫长的来回编写、测试和修改缺陷的过程。等到觉得足够了,就发布产品。
- 开头几乎没有计划和文档编制,项目小组得以迅速展示成果。
- 极其适合意在快速制作而且用完就扔的小项目
3. 瀑布模式
- 采用瀑布模式的项目从最初的构思到最终产品要经过一系列的步骤。每个步骤结束时项目小组组织审查,并决定是否进入下一步。如果项目未准备好进入下一步,就停滞下来,直至准备好。
- 瀑布模式需要强调
- 瀑布模式非常强调产品的定义。
- 瀑布模式各步骤是分立的、没有交叉。
- 瀑布模式无法回溯。一旦进入某一个步骤,就要完成该步骤的任务,然后才能向下继续——无法回溯。
- 目标:在编写代码之前解决所有未知问题并明确素有细节
- 缺点:在这个变化迅速、在互联网上开发产品的时代,当软件产品还在细细考虑和定义时,当初制造它的理由都可能会变了。
4. 螺旋模式
- 一开始不必详细定义所有细节。从小开始,定义重要功能,努力实现这些功能,接受客户反馈、然后进入下一阶段。重复上述过程,直至得到最终产品。
- 每一次循环包括6个步骤:
1)确定目标、可选方案和限制条件。
2)明确并化解风险。
3)评估可选方案。
4)当前阶段开发和测试。
5)计划下一阶段。
6)确定进入下一阶段的方法。
- 螺旋模式中包括了一点瀑布模式(分析、设计、开发和测试的步骤)、一点边写边改模式(螺旋模式的每一次)和一点大爆炸模式(从外界观察)。
- 敏捷软件开发agile software development。
|