UML第一课

为什么会出现软件危机?

从上世纪六十年代开始,软件行业发展迅猛,随着软件规模的扩大,复杂性的增加,

早期开发软件的方式使得开发高质量的软件越来越困难,软件开发过程中经常出现

不能按时完成任务、产品质量得不到保证、工作效率低下、开发经费超支,开发失败

的情况比比皆是,这一系列问题导致了“软件危机”的产生。


什么是软件工程?

为了解决上述问题,在上世界1968年,北大西洋公约组织举行的一场学术会议,首次 提出了“软件工程”的概念并将其定义为:

“为了经济得获得可靠的和能在实际机器上高效运行的软件,而建立和使用的健全的工程”

 

软件工程的目标和原则

目标原则
控制软件开发的成本在合理范围内 用分阶段的生命周期计划进行严格管理
满足客户对软件的性能和功能要求 坚持进行阶段评审
提高软件的质量 采用现代程序设计软件
开发的软件易于移植、维护、升级、使用 软件工程结果应能清楚的审查
控制开发周期在合理时间内 开发成员应该少而精
  承认不断改进软件工程实践性的必要

 

软件工程三要素:

1.工具 2.方法 3.过程

软件的组成:

1.程序 2.数据 3.操作文档

 

软件的生命周期:

 

软件的开发阶段

 

 

软件开发模型(软件过程模型):

软件过程模型也称为软件开发模型,它是软件开发全部过程、活动和任务的结构框架。典型的软件过程模型有瀑布模型、增量模型、演化模型(原型模型、螺旋模型)、喷泉模型、基于构件的开发模型、形式化方法模型、统一过程(UP)模型、敏捷方法等。

 

1、瀑布模型(Waterfall Model)

瀑布模型是将软件生存周期中各个活动规定为依线性顺序连接的若干阶段的模型,包括需求分析、设计、编码、测试、运行与维护。它规定了由前至后、相互衔接的固定次序,如同瀑布流水逐级下落。如下图所示: 

img

瀑布模型为软件的开发和维护提供了一种有效的管理模式,根据这一模式来制订开发计划,进行成本预算,组织开发力量,以项目的阶段评审和文档控制为手段有效的对整个开发过程进行指导,因此它是以文档为驱动,适合于软件需求很明确的软件项目的模型。

优点是容易理解,管理成本低;强调开发的阶段性早期计划及需求调查和产品测试。

缺点是客户必须完整、正确和清晰的表达他们的需要,而这往往又不可能;在后期很难评估项目的进度状态;对项目的风险控制能力弱。

 

2、快速原型模型(Rapid Prototyping Models)
什么是快速原型模型?
快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集

快速原型模型是增量模型的另一种形式,在开发真实系统之前,迅速建造一个可以运行的软件原型 ,以便理解和澄清问题,在该原型的基础上,逐渐完成整个系统的开发工作

它允许在需求分析阶段对软件的需求进行初步而非完全的分析和定义,快速设计开发出软件系统的原型,该原型向用户展示待开发软件的全部或部分功能和性能;用户对该原型进行测试评定,给出具体改进意见以丰富细化软件需求;开发人员据此对软件进行修改完善,直至用户满意认可之后,进行软件的完整实现及测试、维护

快速原型模型的优缺点
  • 优点

克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险 适合预先不能确切定义需求的软件系统的开发

  • 缺点

所选用的开发技术和工具不一定符合主流的发展;快速建立起来的系统结构加上连续的修改可能会导致产品质量低下 使用前提是要有一个展示性的产品原型,一定程度上可能会限制开发人员的创新

3、增量模型(Incremental Model)

增量模型融合了瀑布模型的基本成分和快速原型模型实现的迭代特征,它假设可以将需求分段为一系列增量产品,每一增量可以分别开发。该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”,如下图所示。当使用增量模型时,第一个增量往往是核心的产品。客户对每个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。增量模型强调每一个增量均发布一个可操作的产品。 img

增量模型作为瀑布模型的一个变体,具有瀑布模型的所有优点。此外还具有如下优点:

  • 第一个可交付版本所需要的成本和时间很少;

  • 开发由增量表示的小系统所承担的风险不大;

  • 由于很快发布了第一个版本,因此可以减少用户需求的变更;

  • 运行增量投资,即在项目开始时,可以仅对一个或两个增量投资。

增量模型有如下不足之处:

  • 如果没有对用户的变更要求进行规划,那么产生的初始增量可能会造成后来增量的不稳定;

  • 如果需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开放,重新发布;

  • 管理发生的成本、进度和配置的复杂性可能会超出组织的能力。

4、螺旋模型(Sprial Model)

对于复杂的大型软件,开发一个原型往往达不到要求。螺旋模型将瀑布模型和演化模型结合起来,加入了两种模型均忽略的风险分析,弥补了这两种模型的不足。

螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合,如下图所示。 img

每个螺旋周期又分为如下4个步骤。

(1)制订计划。确定软件的目标,选定实施方案,明确项目开发的限制条件。

(2) 风险分析。分析所选的方案,识别风险,消除风险。

(3) 实施工程。实施软件开发,验证阶段性产品。

(4) 用户评价。评价开发工作,提出修正建议,建立下一个周期的开发计划。

螺旋模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,从而做出应有的反应。因此螺旋模型特别适用于庞大、复杂并且具有高风险的系统。

与瀑布模型相比,螺旋模型支持用户需求的动态变化,为用户参与软件开发的所有关键决策提供了方便,有助于提高软件的适应能力,并且为项目管理人员及时调整管理决策提供了便利,从而降低了软件开发的风险。在使用螺旋模型进行软件开发时,需要开发人员具有相当丰富的风险评估经验和专门知识。

 
posted @ 2022-09-07 17:26  MrPPP  阅读(97)  评论(0)    收藏  举报