十、软件工程基础知识

10.1 软件开发模型

  • 是软件工程中指导开发的一种开发思想,开发体系。开发模型有很多各有特色,不同的开发模型,有不同的阶段不同的指导思想做不同的事情。下面是一些常用的开发模型。
    在这里插入图片描述

1、瀑布模型

  • 上世纪70年代提出,当时得到了广泛的应用与认可,由于有重大缺陷现在几乎淘汰了。基本结构如下:
    在这里插入图片描述
    是结构化方法的代表模型,从系统分析到产品运行维护一系列阶段顺序展开,每个阶段之后都有对这一阶段工作的评审反馈阶段。后来改进的瀑布模型加了一个回溯的通道,阶段末尾或下一个阶段出现问题可以回到上一个阶段把一些问题解决了再往底下走。

  • 缺陷
    根本原因在于需求阶段难以把控,软件的需求往往是不明确的,尤其是在项目初期,要在项目初期把软件需求完全弄明确几乎是不可能的,在需求不明确的时候开始开发,在开发的时候往往会认为这种需求就是客户所需要的,但做完产品给客户的时候大概率会不符合他们的真正需求,又会提出很多新的问题导致又要回到需求阶段调整,然后再重复完成后面的一系列阶段,非常浪费时间资源,所以最终会导致整个项目的失败。

    瀑布模型只适于需求明确或二次开发。

2、原型、演化和增量模型

  • 瀑布模型出来之后,随着产生了很多模型,它们都试图避免瀑布模型中最大的缺陷。下面是几种常见模型的关系:
    在这里插入图片描述

  • 原型模型
    原型模型与瀑布模型是相当互补的模型,它就是为了需求不明确的情况提出的。在开发初期很难把需求完全弄明确,因为客户也不知道自己到底需要一个什么样的系统,用户与开发人员之间的知识领域不一样理解也不一致。

    基本思想: 在开发初期构造一个简易系统即原型,它可以是一套界面没有功能,也可以是一个初步的系统等。

    这样做的好处在于用户以不知道前开发出来的东西到底是什么样子的,无论怎样与他详细沟通他也想 象不出来,所以也就没办法提一些很细致的需求。给用户演示这个简易系统,用户会提出很多细致的问题,再根据新需求调整这个简易系统,经过多次的调整往往会比较清楚地了解到用户真正的需求,用户也会有心理预期最终的系统大概是什么样的。

    原型法通过原型这种方式以较低的成本获取比较全面准确的用户需求,所以一般只应用于开发当中需求分析阶段。

  • 演化模型
    把最初的原型的通过很多步的演化调整,最终变成了给用户使用的软件产品,这种模型就称为演化模型。

  • 增量模型
    原型模型的思想加上瀑布模型的思想就得到了增量模型。

    基本思想: 用户有很多需求,开发初期先把系统的核心部分做出来。然后再一部分一部分进行,最终完成整个产品。

    这样做的好处在于核心模块较早的与用户进行了接触,每一次给客户看的时候,都相当于对核心模块再一次进行了审视。所以大大的降低了项目开发风险,不会出现最后核心功能要改的情况。

3、螺旋模型

  • 螺旋模型有原型模型的特征,还有瀑布模型和演化模型的特征。
    在这里插入图片描述
    如果给出一个需求不明确的项目选择开发模型,在考试中遵循最匹配原则,如果有原型就选择原型,没有原型就可以选择螺旋模型。

    螺旋模型引入了风险分析,是之前所有模型都没有的特征,所以风险分析是螺旋模型最显著的特点之一。

  • 基本思想
    使用原型化的方法融合了瀑布模型,又在每个阶段之前都增加了风险分析。目的是尽可能的降低风险。兼顾了瀑布模型的系统化和快速原型模型的迭代特征,主要适用于内部开发的大型复杂高风险项目。

4、V模型、喷泉模型和快速开发模型(RAD)

  • 其它经典模型。
    在这里插入图片描述

  • V模型
    基本思想: 以它的形状命名,每个阶段划分与瀑布模型相似,只是将测试更加细化变的更重要了。

    形状V就是需求和测试的对应关系,在需求分析阶段就写验收测试和系统测试的测试计划,及早测试就是为了提前发现问题。概要设计做集成测试的测试计划,同样详细设计做单元测试的测试计划。

    它是一个强调测试的模型,强调要及早进行测试,并且测试要贯穿开发始终。瀑布模型是先做再验证,而V模型恰恰相反这样更不容易出现问题。

  • 喷泉模型
    最大的特点是面向对象的模型,而之前几个的模型都是对于结构化方法而言的。

    所以它的特点有迭代和无间隙这种面向对象的共性,

  • 快速开发模型(RAD)
    由瀑布模型(SDLC)和构件化开发模型(CBSD)组合形成的模型。

    如果是用VB这种可视化工具做开发,那就已经是RAD了。

    最大的特点就是能够快速构建应用系统。

5、构件组装模型(CBSD)

  • 基本思想: 把软件开发过程中的各个模块做成标准的构件,然后把构件组装得到软件。这种思路最重要的特点就是极大提高了软件的复用性,极大节省了时间,降低了成本,还提高了软件的可靠性。

    在这种开发模型中会构建一个构件库,如果构件库里面的构件在新的系统中能用到就直接提取出来应用,所以很多构件都是用在以前系统中的构件,这些构件的可靠性已经经过了很长时间的验证,再应用到新的系统中,出错的概率远远小于新开发的构件。

  • 开发步骤
    在这里插入图片描述
    需求分析和定义与一般的瀑布模型相同。
    架构设计实际就是搭建一个基本框架。

    构件标准:第一个标准是由OMG对象管理组织提出来的,第二个标准是微软提出来的,第三个标准是在Java中用到的。

6、统一过程(UP)

  • 应用非常广泛,一般用于大型项目,需要了解它的特点、各个阶段及核心任务。
    在这里插入图片描述

  • 特点: 用例驱动,以架构为中心,迭代增量。

    初始通过需求分析设计出相应的用例并实现,同时用例作为指导测试开发的一个依据,所以在整个开发过程中都是用例串联并推动各个阶段的。

    强调先设计好架构,再往架构中填充相应的构件完成整个系统的开发。

    迭代即周期循环,每一次迭代增加一些东西。

  • 四个阶段: 初始、细化、构建、交付。

    初始阶段确定项目范围和边界实际就是做需求相关的事;识别关键用例由于一般对于一个系统80%的时间都在用20%的功能,这20%的功能对应的就是关键用例,如果没有把这20%的功能做好那么整个系统其实是失败的;一个系统的开发可用的架构是多种多样的,根据安全、性能等各方面选不同的架构,所以要展示候选架构然后再具体确定用哪一个架构。

    细化阶段的核心就是建立软件架构基础即完成架构设计。

    构建阶段就是把相应的模块构建组装起来,但在组装前还要开发剩余构件即基于构件的开发很多已有的构件在构件库中提取出来直接使用,没有的构件需要修改已有的构件生成或开发新的构件。

    这就是统一过程整个开发流程,交付后有缺陷的地方在下一个迭代周期中调整修正,所以它不是一次性产出结果,经过多轮迭代才产生最终产品。

7、敏捷开发方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值