软件⽣存周期每个阶段的基本任务和结束标准
介绍软件⽣存周期每个阶段的基本任务和结束标准。
1问题定义
问题定义阶段必须回答的关键问题:“要解决的问题是什么?”如果不知道问题是什么就试图解决这个问题,显然是盲⽬的,只会⽩⽩浪费时间和⾦钱,最终得出 的结果很可能是毫⽆意义的。尽管确切地定义问题的必要性是⼗分明显的,但是在实践中它却可能是最容易被忽视的⼀个步骤。
通过问题定义 阶段的⼯作,系统分析员应该提出关于问题性质、⼯程⽬标和规模的书⾯报告。通过对系统的实际⽤户和使⽤部门负责⼈的访问调查,分析员扼要地写出他对问题的 理解,并在⽤户和使⽤部门负责⼈的会议上认真讨论这份书⾯报告,澄清含糊不精的地⽅,改正理解不正确的地⽅,最后得出⼀份双⽅都满意的⽂档。
问题定义阶段是软件⽣存周期中最简短的阶段,⼀般只需要⼀天甚⾄更少的时间。
2可⾏性研究
这个阶段要回答的关键问题:“对于上⼀个阶段所确定的问题有⾏得通的解决办法吗?”为了回答这个问
题,系统分析员需要进⾏⼀次⼤⼤压缩和简化了的系统分析和设计的过程,也就是在较抽象的⾼层次上进⾏的分析和设计的过程。
可⾏性研究应该⽐较简短,这个阶段的任务不是具体解决问题,⽽是研究问题的范围,探索这个问题是否值得去解,是否有可⾏的解决办法。
在问题定义阶段提出的对⼯程⽬标和规模的报告通常⽐较含糊。可⾏性研究阶段应该导出系统的⾼层逻辑模型(通常⽤数据流图表⽰),并且在此基础上更准确、 更具体地确定⼯程规模和⽬标。然后分析员更准确地估计系统的成本和效益,对建议的系统进⾏仔细的成本/效益分析是这个阶段的主要任务之⼀。
可⾏性研究的结果是使⽤部门负责⼈做出是否继续进⾏这项⼯程的决定的重要依据,⼀般说来,只有投资可能取得较⼤效益的那些⼯程项⽬才值得继续进⾏下去。可⾏性研究以后的那些阶段将需要投⼊要多的⼈⼒物⼒。及时中⽌不值得投资的⼯程项⽬,可以避免更⼤的浪费。
3需求分析
这个阶段的任务仍然不是具体地解决问题,⽽是准确地确定“为了解决这个问题,⽬标系统必须做什么”,主要是确定⽬标系统必须具备哪些功能。
⽤户了解他们所⾯对的问题,知道必须做什么,但是通常不能完整准确地表达出他们的要求,更不知道怎样利⽤计算机解决他们的问题;软件开发⼈员知道怎样使 ⽤软件实现⼈们的要求,但是对特定⽤户的具体要求并不完全清楚。因此系统分析员在需求分析阶段必须和⽤户密切配合,充分交流信息,以得出经过⽤户确认的系 统逻辑模型。通常⽤数据流图、数据字典和简要的算法描述表⽰系统的逻辑模型。
在需求分析阶段确定的系统逻辑模型是以后设计和实现⽬标 系统的基础,因此必须准确完整地体现⽤户的要求。系统分析员通常都是计算机软件专家,技术专家⼀般都喜欢很快着⼿进⾏具体设计,然⽽,⼀旦分析员开始谈论 程序设计的细节,就会脱离⽤户,使他们不能继续提出他们的要求和建议。较件⼯程使⽤的结构分析设计的⽅法为每个阶段都规定了特定的结束标准,需求分析阶段 必须提供完整准确的系统逻辑模型,经过⽤户确认之后才能进⼊下⼀个阶段,这就可以有效地防⽌和克服急于着⼿进⾏具体设计的倾向。
4总体设计
这个阶段必须回答的关键问题是:“概括地说,应该如何解决这个问题?”
⾸先,应该考虑⼏种可能的解决⽅案。列如,⽬标系统的⼀些主要功能是⽤计算机⾃动完成还是⽤⼈⼯完成;如果使⽤计算机,那么是使⽤批处理⽅式还是⼈机交互⽅式;信息存储使⽤传统的⽂件系统
还是数据库……。通常⾄少应该考虑下述⼏类可能的⽅案:
低成本的解决⽅案。系统只能完成最必要的⼯作,不能多做⼀点额处的⼯作。
中等成本的解决⽅案。这样的系统不仅能够很好地完成预定的任务,使⽤起来很⽅便,⽽且可能还具有⽤户没有具体指定的某些功能和特点。虽然⽤户没有提出这些具体要求,但是系统分析员根据⾃⼰的知识和经验断定,这些附加的能⼒在实践中将证明是很有价值的。
⾼成本的“⼗全⼗美”的系统。这样的系统具有⽤户可能希望有的所有功能和特点。
系统分析员应该使⽤系统流程图或其他⼯具描述每种可能的系统,估计每种⽅案的成本和效益,还应该在充分权衡各种⽅案的利弊的基础上,推荐⼀个较好的系统 (最佳⽅案),并且制定实现所推荐的系统的详细计划。如果⽤户接受分析员推荐的系统,则可以着⼿完成本阶段的另⼀项主要⼯作。
上⾯的 ⼯作确定了解决问题的策略以及⽬标系统需要哪些程序,但是,怎样设计这些程序呢?结构设计的⼀条基本原理就是程序应该模块化,也就是⼀个⼤程序应该由许多 规模适中的模块按合理的层次结构组织⽽成。总体设计阶段的第⼆项主要任务就是设计软件的结构,也就是确定程序由哪些模块组成以及模块间的关系。通常⽤层次 图或结构图描绘软件的结构。
5详细设计
总体设计阶段以⽐较抽象概括的⽅式提出了解决问题的办法。详细设计阶段的任务就是把解法具体化,也就是回答下⾯这个关键问题:“应该怎样具体地实现这个系统呢?”
这个阶段的任务还不是编写程序,⽽是设计出程序的详细规格说明。这种规格说明的作⽤很类似于其他⼯程领域中⼯程师经常使⽤的⼯程蓝图,它们应该包含必要的细节,程序员可以根据它们写出实际的程序代码。
通常⽤HIPO图(层次图加输⼊/处理/输出图)或PDL语⾔(过程设计语⾔)描述详细设计的结果。
汇编语言要什么基础
6编码和单元测试
这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。
程序员应该根据⽬标系统的性质和实际环境,选取⼀种适当的⾼级程序设计语⾔(必要时⽤汇编语⾔),把说细设计的结果翻译成⽤选定的语⾔书写的程序,并且仔细测试编写出的每⼀个模块。
7综合测试
这个阶段的关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。
最基本的测试是集成测试和验收测试。所谓集成测试是根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配过程中对程序进⾏必 要的测试。所谓验收测试则是按照规格说明书的规定(通常在需求分析阶段确定),由⽤户(或在⽤户积极参加下)对⽬标系统进⾏验收。
必要时还可以再通过现场测试或平⾏运⾏等⽅法对⽬标系统进⼀步测试检验。
为了使⽤户能够积极参加验收测试,并且在系统投⼊⽣产性运⾏以后能够正确有效地使⽤这个系统,通常需要以正式的或⾮正式的⽅式对⽤户进⾏培训。
通过对软件测试结果的分析可以预测软件的可靠性;反之,根据对软件可靠性的要求也可以决定测试和调试过程什么时候可以结束。
应该⽤正式的⽂档资料把测试计划、详细测试⽅案以及实际测试结果保存下来,做为软件配置的⼀个组成成分。
8软件维护
维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满⾜⽤户的需要。
通常有四类维护活动:改正性维护,也就是诊断和改正在使⽤过程中发现的软件错误;适应性维护,
即修改软件以适应环境的变化;完善性维护,即根据⽤户的要求改进或扩充软件使它更完善;预防性维护,即修改软件为将来的维护活动预先做准备。
虽然没有把维护阶段进⼀步划分成更⼩的阶段,但是实际上每⼀项维护活动都应该经过提出维护要求(或报告问题),分析维护要求,提出维护要求,提出维护⽅ 案,审批维护⽅案,确定维护计划,修改软件设计,修改程序,测试程序,复查验收等⼀系列步骤,因此实质上是经历了⼀次压缩和简化了的软件定义和开发的全过 程。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。