软件生存周期各阶段的任务

来源:互联网 发布:自学机器人编程入门 编辑:程序博客网 时间:2024/05/21 12:27

转自:http://blog.sina.com.cn/s/blog_4e714f020101nv4h.html


问题定义
     这个阶段主要是确定“要解决的问题是什么”。通过对客户的访谈与调研,可以得出这个问题的答案,然后编写一份问题说明书或问题报告,文档应该包括问题定义、软件目标与规模。然后让客户确认,其实这也是进一步需求分析的基础。
可行性研究
    这个阶段主要是确定对于上一阶段确定的问题“是否有办法解决”、“是否值得去做”的问题,如果当前的技术水平不能解决、软件在可预见的未来不能产生利益显然不能继续下去了,此时要给客户明确的意见,说明原因。如果行得通则可以继续下一步,进行需求分析。
需求分析
    既然软件可行,那么就要对其进一步详细分析。客户知道想做什么,但是客户或许不知道怎么用计算机去实现这些东西。开发人员知道计算机怎么解决,但是不清楚客户要解决的详细问题。这个时候就需要分析员紧密配合客户,充分交流,确定每一个问题的详情,得出系统的逻辑模型。
     这个阶段是以后进行设计和实现的基础,所以必须准确完整的记录用户的每一个问题与要求,然后用正式的文档记录下来。这份文档就是重要的“软件需求报告”或者“规格说明”。
总体设计
     
需求确定以后就要回答“概括地说,应该怎么实现目标系统”的问题。首先要设计几种可能的方案,然后推荐一种最适合的方案给客户。
     这个阶段还要对系统进行模块划分,说明系统是由哪些模块组成,每个模块之间的关系是什么。一般大型软件都是采用模块化开发,主要是人的理解能力有限,不能一下子理解整个系统的结构,所以采用“分而治之”的想法去实现软件。
详细设计
    总体设计得到认可以后,就要上一阶段设计的每个模块进行具体设计、详细设计。确定每个模块的算法与数据结构。常见的就是为每个模块画流程图或者机构图,建立数据模型(表字段)。
     算法与数据结构出来以后,软件基本上也就成型了,这个阶段客户参与不参与感觉不重要了,重要的是开发组内各个成员对此的理解,所以要与各成员之间做好沟通,确保大家达成一致,对模块算法理解正确,这样编码才不至于出大问题,比如偏离方向。
编码和单元测试
    详细设计以后就可以让苦闷的程序员来进行编码了,编码采用的编程语言应该上一阶段确定的。每个模块完成以后都要进行单元测试,测试通过并且与详细设计上说明的算法或预留的接口相符合才能进入下一步。
总体测试
    各个模块编码完成以后,要进行整体设计,一般由软件测试人员按照规格说明书或者详细设计文档进行测试,看是否符合所定义的目标软件。对于BUG以及发现的问题会整理出一个测试结果反馈文档,然后交由开发人员商议并修正,总体测试一般要测试好几遍才行,因为每一次测试与修改都相当于一次迭代的生命周期。
软件维护
    测试通过后,可以交由客户验收,当然验收不通过肯定还要进行迭代设计开发,直到通过才行。
     验收完成后就进入了维护阶段以便软件能持久的满足客户需要。
     每一次维护实质都是一次压缩和简化了的软件定于与开发过程。


原创粉丝点击