软件开发周期介绍

1.1.1 开发周期的组成


从时间角度对软件开发和维护的复杂问题进行分解,把软件开发的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。

从对任务的抽象逻辑分析开始,一个阶段一个阶段地进行开发;前一个阶段任务的完成是后一个阶段工作的前提和基础,而后一个阶段任务通常是使前一阶段提出的解法更进一步的具体化,加进了更多的实现细节。

生命周期各阶段的基本任务:问题定义→可行性研究→ 需求分析→ 总体设计(概要设计) 详细设计→ 编码和单元测试→ 综合测试→ 软件维护。

 

1.1.2 问题定义

问题定义阶段必须回答的关键问题:“要解决的问题是什么?”。问题定义阶段是软件生存周期中最简短的阶段,一般只需要一天甚至更少的时间。问题定义阶段的工作,系统分析员应该提出关于问题性质、工程目标和规模的书面报告。通过对系统的实际用户和使用部门负责人的访问调查,分析员扼要地写出他对问题的理解,并在用户和使用部门负责人的会议上认真讨论这份 书面报告,澄清含糊不清的地方,改正理解不正确的地方,最后得出一份双方都满意的文档。

 

1.1.3 可行性研究

这个阶段要回答的关键问题:“对于上一个阶段所确定的问题有行得通的解决办法吗?”。可行性研究应该比较简短,个阶段的任务不是具体解决问题,而是研究问题的范 围,探索这个问题是否值得去解,是否有可行的解决办法。

可行性研究阶段应该导出系统的高层逻辑模型(通常用数据流图表示),并且在此基础上更准确、更具体地确定工程规模和目标。

可行性研究的结果是使用部门负责人做出是否继续进行这项工程的决定的重要依据,一般说来,只有投资可能取得较大效益的那些工程项目才值得继续进行下去。可行性研究以后的那些阶段将需要投入要多的人力物力。及时中止不值得投资的工程项目,可以避免更大的浪费。

 

1.1.4 需求分析

这个阶段的任务仍然不是具体地解决问题,而是准确地确定“为了解决这个问题,目标系统必须做什么”,主要是确定目标系统必须具备哪些功能。

系统分析员在需求分析阶段必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。通常用数据流图、数据字典和用例图表示系统的逻辑模型。

用户了解他们所面对的问题,知道必须做什么,但是通常不能完整准确地表达出他们的要求,更不知道怎样利用计算机解决他们的问题;软件开发人员知道怎样使用软件实现人们的要求,但是对特定用户的具体要求并不完全清楚。

在需求分析阶段确定的系统逻辑模型是以后设计和实现目标系统的基础,因此必须准确完整地体现用户的要求。

1.1.5 总体设计

总体设计也称为概要设计,这个阶段必须回答的关键问题是:“概括地说,应该如何解决这个问题?”

系统分析员应该使用系统流程图或其他工具描述每种可能的系统,估计每种方案的成本和效益,还应该在充分权衡各种方案的利弊的基础上,推荐一个较好的系统(最佳方案),并且制定实现所推荐的系统的详细计划。

总体设计阶段的第二项主要任务就是设计软件的结构,也就是确定程序由哪些模块组成以及通常至少应该考虑下述几类可能的方案:

Ø  低成本的解决方案。系统只能完成最必要的工作,不能多做一点额处的工作。

Ø  中等成本的解决方案。这样的系统不仅能够很好地完成预定的任务,使用起来很方便,而且可能还具有用户没有具体指定的某些功能和特点。虽然用户没有提出这些具体要求,但是系统分析员根据自己的知识和经验断定,这些附加的能力在实践中将证明是很有价值的。

Ø  高成本的“十全十美”的系统。这样的系统具有用户可能希望有的所有功能和特点。

1.1.6 详细设计

详细设计阶段的任务就是把解法具体化,也就是回答下面这个关键问题:“应该怎样具体地实现这个系统呢?”

这个阶段的任务还不是编写程序,而是设计出程序的详细规格说明。

规格说明的作用很类似于其他工程领域中工程师经常使用的工程蓝图,它们应该包含必要的细节,程序员可以根据它们写出实际的程序代码。通常用类图、时序图、协作图、状态图、活动图等等描述详细设计的结果。

1.1.7 编码和单元测试

这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。

程序员应该根据目标系统的性质和实际环境,选取一种适当的高级程序设计 语言(必要时用汇编语言),把说细设计的结果翻译成用选定的语言书写的程序,并且仔细测试编写出的每一个模块。

在这一阶段我们会使用设计阶段各种UML表示的分析和设计模型,换成某种面向对象程序设计语言的代码,在对UML表示的分析和设计模型进行转换时,最好不要直接把模型转化成代码,因为在早期阶段,模型是理解系统并对系统进行结构化的手段。

1.1.8 综合测试

这个阶段的关键任务是通过各种类型的测试及相应的调试,是软件达到预定的的要求。

最基本的测试是集成测试和验收测试,通过对软件测试结果的分析可以预测软件的可靠性;反之,根据对软件可靠性的要求也可以决定测试和调试过程什么时候可以结束。应该用正式的文档资料把测试计划、详细测试方案以及实际测试结果保存下来,做为软件配置的一个组成成分。

所谓集成测试是根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配过程中对程序进行必要的测试。

所谓验收测试则是按照规格说明书的规定(通常在需求分析阶段确定),由用户(或在用户积极参加下)对目标系统进行验收。必要时还可以再通过现场测试或平行运行等方法对目标系统进一步测试检验。

 

1.1.9 软件维护

维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要,通常有四类维护活动:

Ø  改正性维护,也就是诊断和改正在使用过程中发现的软件错误;

Ø  适应性维护,即修改软件以适应环境的变化;

Ø  完善性维护,即根据用户的要求改进或扩充软件使它更完善;

Ø  预防性维护,即修改软件为将来的维护活动预先做准备

虽然没有把维护阶段进一步划分成更小的阶段,但是实际上每一项维护活动都应该经过提出维护要求(或报告问题),分析维护要求,提出维护要求,提出维护方案,审批维护方案,确定维护计划,修改软件设计,修改程序,测试程序,复查验收等一系列步骤,因此实质上是经历了一次压缩和简化了的软件定义和开发的全过程。在这阶段可能会用到组件图和部署图。

软件项目开发有三个要素:符号、工具和方法,符号就是UML具有表现力的图形建模语言,工具UML等等CASE计算机辅助工具,可以帮助我们实现正向工程(从模型生成代码)、返向工程(从代码生产模型)等等功能,我们在上一章中已经介绍过的RoseJude等等。还有一个要素就是方法,我们无论做任何事情都要讲究方法,软件项目开发更是应该讲究方法。下面我们介绍现在比较流行的软件开发方法学问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值