第二章 软件开发的过程
1、产品的组成部分
1、软件产品需要多少投入
在软件行业中,用于描述制造出来并交付他人的软件产品组件的术语是可交付的部分。解释所有可交付部分内容的最简便方法是分门别类。
1、客户需求
利用焦点人群审视软件功能
2、产品说明书
产品说明书极其详细完整,而且是锁定的,没有极特殊的理由绝不能变
3、进度表
制定进度的目的是跟踪每一分钟的进度,了解哪项工作完成了,还有多少工作要做,何时全部完成
4、软件设计文档
结构文档:描述软件整体设计的文档,包括软件所有主要部分的描述以及相互之间的交互方式
数据流图:表示数据在程序中如何流动的正规示意图。有时被称为泡泡图(圆圈和线组成)
状态转换图:把软件分解为基本状态或者条件的另一种正规示意图,表示不同状态间转换的方式
流程图:用图形描述程序逻辑的传统方式
代码注释:便于维护代码的程序员轻松掌握代码的内容和执行方式
5、测试文档
测试计划(用于验证软件是否符合产品说明书和客户需求的整体方案)
测试用例(列举测试的项目、描述验证软件的详细步骤)
缺陷报告(描述执行测试用例找出的问题)
测试工具和自动测试
度量、统计和总结(测试过程的汇总,采用图形、表格和报告等形式)
2、软件产品由哪些部分组成
帮助文件、样本和示例、产品支持信息、错误信息、安装、用户手册、标签和不干胶、图标和标志、广告和宣传材料、说明文件
2、软件项目成员
1、项目经理、程序经理、监制人员(负责编写产品说明书,管理进度,进行重大决策)
2、架构师、系统工程师(技术专家,胜任整个系统的体系结构或软件设计工作)
3、程序员、开发人员、代码制作者(设计、编写软件并修复软件中的缺陷)
4、测试员、质量保证(负责找出并报告软件产品的问题)
5、技术作者、用户协助专员、用户培训专员、手册编写员、文案专员(编制软件产品附带的文件和联机文档)
6、配置管理员、构建员(把程序员编写的代码及技术作者写的全部文档资料者在一起,合成为一个软件包)
3、软件开发生命周期模式
定义:软件产品从最初构思到公开发行的过程。
常用模式:
- 大爆炸模式
定义:一大堆东西(人力和资金)放一起,巨大的能量释放——产生了优秀的软件产品/或一堆废品
优点:简单,几乎 所有精力都花在开发软件和编写代码上,几乎没有什么测试 - 边写边改模式
为刻意采用其他开发模式时默认的开发模式
定义:先有典型的非正规说明书再通过来回编码、修改,反复直到最终产品发布。 - 瀑布模式
强调注意!!
1、瀑布模式非常强调产品的定义。注意,开发货代码编制阶段只是其中单独的一块。
2、瀑布模式各步骤是分立的,没有交叉。
3、瀑布模式无法回溯。一但进入某个步骤,就要完成该步骤的任务,然后才能向下继续——无法回溯。
步骤:构思——分析——设计——开发——测试——最终产品
优点:瀑布模式下所有一切都有完整细致的说明
缺点:测试在最后进行,所以一些早期出现的根本性问题直到准备发布产品时可能发现 - 螺旋模式
总体思想:一开始不必详细定义所有细节。从小开始,定义重要功能,努力实现,接受客户反馈,进入下一阶段
循环步骤:
1)确定目标、可选方案和限制条件
2)明确并化解风险
3)评估可选方案
4)当前阶段开发和测试
5)计划下一阶段
6)确定进入下一阶段的方法
优点:包含了瀑布模式(分析、设计、开发和测试的步骤)、边写边改模式(螺旋模式的每一次)、大爆炸模式(从外界观察)加上本模式发现问题早、成本低的特点。
小测验
1、说出在程序员开始编写代码前要完成哪些任务?
开发小组需要了解客户的要求,在产品说明书中定义功能特性。应建立详细的进度,是使小组成员知道哪些工作已完成,哪些还要做。软件应形成体系,经过设计,测试小组应开始计划工作。
2、正式并被锁定不能修改的产品说明书有何缺点?
如果软件开发过程中市场转移到不同的方向上或客户要求改变,就没有调整软件的灵活性。
3、软件开发大爆炸模式的最大优点是什么?
简单
4、采用边写边改模式时,如何得知软件发布的时间?
边写边改模式没有真正的退出标准,除非某人或进度决定该结束了
5、瀑布模式为什么不好用?
像大马哈鱼一样,很难向上游。每一步都是跟着上一步的独立、离散的过程。如果走到头发现有些事情应早些做事时,想退回来就来不及了。
6、软件测试员为什么最喜欢螺旋模式?
他们很早就参与开发过程,有机会及早发现问题,为项目节省时间和金钱。