按结构化方法,通常将开发过程分为软件计划、需求分析、软件设计、程序编码、软件测试、软件维护6个主要阶段,各个阶段像瀑布流水一样联为一体。
1.软件计划
通过初步的、总体的需求分析,确定这是一个什么样的软件。从总体上把握软件的目标和功能的框架,继而研究论证总体方案的可行性。该阶段的主要任务有:
1.问题定义,包括开发软件的现状、开发的条件和理由、总体要求以及目标。
2.可行性研究,一般从经济、技术、操作、法律、时间五方面讨论。
3.软件计划内容
软件范围的内容有:软件功能规模、软件能力对硬件的要求、接口界面的性质和复杂性。
环境资源包括需要什么样水平的人,什么功能性能的软件和硬件。
4.软件价格估计
5.成本/收益分析
6.编写项目开发计划文档
2.需求分析
所谓"需求分析",是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。该阶段的主要任务就是深入描述软件的功能和性能,借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统“干什么”的问题。该阶段编写需求规格说明书。
3.软件设计
软件设计的任务是从软件需求规格说明书出发,根据需求分析阶段确定的功能设计软件系统的整体结构、划分功能模块、确定每个模块的实现算法,形成软件的具体设计方案。具体分为以下四方面的设计:
结构设计:定义软件系统各主要部件之间的关系。
数据设计:将模型转换成数据结构的定义。
接口设计:软件内部,软件和操作系统间以及软件和人之间如何通信。
过程设计:系统结构部件转换成软件的过程描述。
4.程序编码
在此之前,我们已经解决了系统是什么,干什么,怎么干的问题,接下来就是实际去干了。在规范化的研发流程中,编码工作在整个项目流程里最多不会超过1/2,通常在1/3的时间,所谓磨刀不误砍柴功,设计过程完成的好,编码效率就会极大提高,编码时不同模块之间的进度协调和协作是最需要小心的,也许一个小模块的问题就可能影响了整体进度。编码时的相互沟通和应急的解决手段都是相当重要的,对于程序员而言,bug永远存在,你必须永远面对这个问题。
5.软件测试
软件测试就是在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。测试是为了发现程序中的错误而执行程序的过程。好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。成功的测试是发现了至今为止尚未发现的错误的测试。测试并不仅仅是为了找出错误。通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进。
6.软件维护
软件维护就是在软件运行过程中,为了改正运行过程中偶尔出现的个别错误或由于外部环境以及用户对系统功能、性能的需求进行提高完善。该阶段的工作量占软件的整个生命周期的70%左右,主要包括对程序、数据、代码和设备的维护。
文档是软件开发建设的生命线,它贯穿于软件开发的整个过程。文档是软件开发人员、管理人员、维护人员、用户以及计算机之间的桥梁和纽带。
软件开发人员在各个阶段都要以文档作为前一阶段工作成果的体现和后一阶段工作的依据。在软件开发过程中需指定一些工作计划和工作报告,供给管理人员,并得到同意和支持。管理人员通过文档了解软件开发的项目安排、进度、资源使用和成果等。软件开发的最终目的是满足用户的需求,所以开发人员需要针对用户对所开发软件的使用、操作、维护等提供详细的说明指导。用户文档、开发文档、管理文档构成了软件文档的主要部分:
|
| 用户 文档 |
| 1.用户手册 |
2.操作手册 | ||||
3.维护修改建议 | ||||
4.软件需求说明书
| ||||
开发 文档 |
| 1.软件需求说明书 | ||
2.数据库设计说明书 | ||||
3.概要设计说明书 | ||||
4.详细设计说明书 | ||||
5.可行性研究报告 | ||||
6.项目开发计划 | ||||
管理 文档 |
|
1.项目开发计划 | ||
2.测试计划 | ||||
3.测试分析报告 | ||||
4.开发进度月报 | ||||
5.项目开发总结报告
|
一、各文档在软件生存期的编写阶段:
阶段文档 | 可行性要求与计划 | 需求分析 | 设计 | 代码编写 | 测试 | 运行与维护 |
可行性研究报告 |
|
|
|
|
|
|
项目开发计划 |
|
|
|
|
|
|
软件需求说明 |
|
|
|
|
|
|
数据要求说明 |
|
|
|
|
|
|
概要设计说明 |
|
|
|
|
|
|
详细设计说明 |
|
|
|
|
|
|
测试计划 |
|
|
|
|
|
|
用户手册 |
|
|
|
|
|
|
操作手册 |
|
|
|
|
|
|
测试分析报告 |
|
|
|
|
|
|
开发进度月报 |
|
|
|
|
|
|
项目开发总结 |
|
|
|
|
|
|
维护修改建议 |
|
|
|
|
|
|
二、各文档所要问答的问题:
所提问题文档 | 什么 | 何处 | 何时 | 谁 | 如何 | 为何 |
可行性研究报告 | √ |
|
|
|
| √ |
项目开发计划 | √ |
| √ | √ |
|
|
软件需求说明 | √ | √ |
|
|
|
|
数据库设计说明 | √ | √ |
|
|
|
|
概要设计说明 |
|
|
|
| √ |
|
详细设计说明 |
|
|
|
| √ |
|
测试计划 |
|
| √ | √ | √ |
|
用户手册 |
|
|
|
| √ |
|
操作手册 |
|
|
|
| √ |
|
测试分析报告 | √ |
|
|
|
|
|
开发进度月报 | √ |
| √ |
|
|
|
项目开发总结 | √ |
|
|
|
|
|
维护修改建议 | √ |
|
| √ |
| √ |
三、对各个文档主要内容和作用的理解:
1.可行性研究报告:
说明该软件开发项目的实现在技术、经济和社会因素等方面是否可行,阐述能够达到开发目标可供选择的各种可实施方案,以及指出当前系统存在的问题和需要改进之处,说明并论证所选定实施方案的理由和带来的效益。
2.项目开发计划:
为软件项目实施方案制定出具体计划,主要包括各部分工作人员开发的进度。经费的预算、所需的硬软件资源等。项目开发计划提供给管理部门,作为开发阶段评审的参考。
3.软件需求说明书:
也称软件规格说明书,其中对软件的功能、性能、用户界面及运行环境等做出详细的说明。它是用户与开发人员双方对软件需求取得共同理解基础上达成的协议,也是实施开发工作的基础。
4.数据库设计说明书:
给出数据库的概念设计、逻辑设计、物理设计以及数据字典和一些约定等,为生成和维护系统数据文卷做好准备。
5.概要设计说明书:
该说明书是概要设计阶段的工作成果,用于说明功能分配、模块划分、程序的总体结构、输入输出以及接口设计、运行设计、数据结构设计和出错处理设计等,为接下来的详细设计奠定基础。
6.详细设计说明书:
详细描述每一个模块是如何实现的,包括实现算法、逻辑流程等。
7.用户手册:
本手册详细描述软件的功能、性能和用户界面,使用户了解如何使用该软件。
8.操作手册:
本手册为操作人员提供该软件的各种运行情况的有关知识,特别是操作方法的具体细节。
9.测试计划:
为如何组织测试制定实施计划。计划包括测试的内容、进度、条件、人员、测试用例的选取原则、测试结果允许的偏差范围等。
10.测试分析报告:
测试工作完成后,提交测试计划执行情况的说明,对测试结果加以分析,并提出测试的结论意见。
11.开发进度月报:
软件开发人员按月向管理部门提交的项目进度情况报告。包括进度计划与实际执行情况的比较、阶段成果、遇到的问题和解决的办法以及下个月的打算等。
12.项目开发总结报告:
软件项目开发完成以后,要与项目实施计划对照,总结实际执行的情况,如进度、成果、资源利用、成本和投入的人力。此外还需对开发工作作出评价,总结经验教训。
13.维护修改建议:
软件产品投入运行后,发现了需要对其进行修正、更改的问题,将这些存在的问题、修改的考虑以及修改的影响估计作详细的描述,写成维护修改建议,提交审批。