软件工程基础知识

一、开发生命周期模型
主要的开发模型有瀑布模型、增量模型、螺旋模型、喷泉模型、智能模型、V模型、RAD模型、CBSD模型、原型方法、XP方法、RUP方法等。
1、瀑布模型
瀑布模型也成为生命周期法,它把软件开发的过程分为软件计划、需求分析、软件设计、程序编程、软件测试和运行维护六个阶段,规定了它们自上而下、相互衔接的固定次序。瀑布模型是最早出现的软件开发模型,其本质是“一次通过”,即每个活动只做一次,最后得到软件产品,也称做“线性顺序模型”。
软件工程基础知识_第1张图片
瀑布模型阶段如下:
(1) 软件计划(问题的定义及规划):主要确定软件的开发目标及其可行性。
(2) 需求分析:在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做的好,将为整个软件开发项目的成功打下良好的基础。
(3) 软件设计:主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计等。软件设计一般分为概要设计和详细设计。
(4) 程序编码:将程序设计的结果转换成计算机可运行的程序代码。
(5) 软件测试:在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。
(6) 软件维护:软件维护是软件生命周期中持续时间最长的阶段。
瀑布模型有利于大型软件开发过程中人员的组织和管理,有利于软件开发方法和工具的研究和使用,从而提高了大型软件项目开发的质量和效率。然而软件开发的实践表明,上述各项互动之间并非完全是自上而下的,而是呈线性图示,因此,瀑布模型存在严重的缺陷。
(1)由于开发模型呈线性,所以当开发成果尚未经过测试时,用户无法看到软件的效果。这样,软件与用户见面的时间间隔较长,也增加了一定的风险。
(2)在软件开发前期未发现的错误传到后面的开发活动中时,可能会扩散,进而可能导致整个软件项目开发失败。
(3)在软件需求分析阶段,完全确认用户的所有需求是比较困难的,甚至可以说是不太可能的。
2、变换模型
变换模型(演化模型)是在快速开发一个原型的基础上,根据用户在调用原型的过程中提出的反馈意见和建议,对原型进行改进,获得原型的新版本,重复这一过程,直到演化成最终的软件产品。
3、螺旋模型
螺旋模型将瀑布模型和变换模型相结合,它综合了两者的优点,并增加了风险分析。它以原型为基础,沿着螺线自内向外旋转,每旋转一圈都要经过制定计划、风险分析、实施工程、客户评价等活动,并开发原型的一个新版本。经过若干次螺旋上升的过程,得到最终的系统,如图:
软件工程基础知识_第2张图片
螺旋模型沿着螺线进行若干次迭代,上图中的四个象限代表了以下活动:
(1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;
(2)风险分析:分析评估所选方案,考虑如何识别和消除风险;
(3)实施工程:实施软件开发和验证;
(4)客户评估:评价开发工作,提出修正建议,制定下一步计划。
螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。
限制条件
(1)螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的,因此,这种模型往往适应于内部的大规模软件开发。
(2)如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目。
(3)软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险
一个阶段首先是确定该阶段的目标,完成这些目标的选择方案及其约束条件,然后从风险角度分析方案的开发策略,努力排除各种潜在的风险,有时需要通过建造原型来完成。如果某些风险不能排除,该方案立即终止,否则启动下一个开发步骤。最后,评价该阶段的结果,并设计下一个阶段。
优缺点
优点
1)设计上的灵活性,可以在项目的各个阶段进行变更。
2)以小的分段来构建大型系统,使成本计算变得简单容易。
3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。
4)随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互。
5)客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。
缺点
很难让用户确信这种演化方法的结果是可以控制的。建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。
螺旋模型的项目适用:
对于新近开发,需求不明确的情况下,适合用螺旋模型进行开发,便于风险控制和需求变更。
核心
"螺旋模型"刚开始规模很小,当项目被定义得更好、更稳定时,逐渐展开。
"螺旋模型"的核心就在于您不需要在刚开始的时候就把所有事情都定义的清清楚楚。您轻松上阵,定义最重要的功能,实现它,然后听取客户的意见,之后再进入到下一个阶段。如此不断轮回重复,直到得到您满意的最终产品。
每轮循环包含如下六个步骤:

  1. 确定目标,可选项,以及强制条件。
  2. 识别并化解风险。
  3. 评估可选项。
  4. 开发并测试当前阶段。
  5. 规划下一阶段。
  6. 确定进入下一阶段的方法步骤

你可能感兴趣的:(软件工程基础知识)