00:00
嗨,我是文,今天的课程是瀑布软件开发,本节课程的主要内容有瀑布软件开发背景、瀑布软件开发过程、瀑布软件开发特点和瀑布软件开发模型引进。首先我们来看瀑布软件开发的背景。瀑布模型产生的背景与现象主要体现在以下三个方面,第一个方面是20世纪60年代软件开发的失败率持续上升,需要新的软件开发方法来解决开发中遇到的问题,第二方面是1968年软件危机爆发,同时也诞生了软件工程,需要新的开发模型来丰富软件工程,第三个方面是计算机高级语言的出现,例如1972年面向对象的C语言的出现,以及软件在商业上的广泛应用,软件数量和规模的急剧上升。这些背景以现象的背后是一系列的软件开发中存在的问题。这些问题中以下五个最为主要,第一个是项目运行。
01:00
经常超出预算,项目运行也经常超过进度和周期,软件的质量非常的低下,软件的需求经常不能够满足客户的要求,项目也无法管理,并且代码难以维护。这些问题背后的本质是软件规模和复杂性的上升与软件管理无序的矛盾越来越突出且不可调和。软件危机的爆发和软件工程的诞生为软件开发方法创造了基础和条件,业界迫切需要实现软件开发从无序到有序的放式转化,瀑布软件开发即瀑布模型因此而生。了解了瀑布软件开发模型的背景,我们看一下它的定义。瀑布软件开发又称瀑布模型,是将软件生命周期划分为规划、需求分析、软件设计、程序编码、软件测试和运行维护六个基本活动,并规定了他们自上而下相互衔接的固定次序。如同。
02:00
瀑布流水逐级下落,瀑布模型因此而得名。从右图中可以看到,每一层级它都是逐级下落,并且有严格的顺序,也是相互衔接的。了解了瀑布模型的定义,那么我们看一下瀑布模型它的特点。特点主要体现在三个方面,第一个方面是阶段具有顺序性和依赖性。顺序性和依赖性主要表现在必须等前一阶段的工作完成之后才能开始下一阶段的工作,前一阶段的输出文档就是后一阶段的输入文档,因此只有前一阶段的输出文档正确,后一阶段的工作才能得到正确的结果。第二个特点是推迟实现的特点,具体表现在瀑布模型在编码之前设置的系统分析和系统设计的各个阶段,分析和设计阶段的基本任务规定,在这两个阶段主要考虑目标系统的逻辑实现,不涉及软件的物理实现。第三个特点是。
03:00
质量保证的观点。每个阶段都必须完成规定的文档,没有交出合格的文档就没有完成该阶段的任务。完成准确的合格的文档不仅仅是软件开发时期各类人员之间相互通信的媒介,也是运行时期对软件进行维护的重要依据。每个阶段结束前都要对所完成的文档进行评审,以尽早的发现问题,改正错误。事实上,越是早期阶段犯下的错误,暴露出来的问题就越难排除故障,改正错误所付出的代价也越高。及时审查是质量保障、降低软件成本的重要措施。但是瀑布模型它虽然完成了从无序到有序的软件开发方法的方式转换,但也存在着诸多的问题。主要表现在瀑布软件开发因质量控制难、交付周期长、创新化严重、风险控制弱等原因,采用瀑布模型仍然存在许多的限制和不足。因此,针对这些方面,例如质量、交互周期、创新化、风险控制等方面而进行改良和增强的模型如雨后春笋般出现,例如针对质量进行良的V模型、针对交付周期进行改良的迭代模型、针对创新化进行改良的增量模型,以及针对风险控制进行改良的螺旋模型。
04:23
下面我们将分别介绍瀑布增强型模型,例如V模型、迭代模型、增量模型和螺旋模型。我们首先看一下V模型,V模型是一种研制瀑布模型的软件开发过程。V模型的软件开发不是以直线的方式进行,是其过程在原代码之前逐级往下,而在源代码阶段之后逐级往上,形成了V模型。V模型指出了软件开发各个阶段与其对应的软件测试阶段之间的关系。其实从图中我们就能看出,编码每一个阶段都对应着有对应的测试,例如编码阶段对应着单元测试,详细设计对应着集成测试,概要设计对应着系统测试,需求分析对应着验收测试。因此,V模型具有如下的特点,编码之前每个阶段都会对应的测试阶段对其进行验证,不同的测试阶段的职责范围划分非常的清晰,需求实现与需求验证是创新的。所有类。
05:23
型的测试需要编码完成之后才能依次进行。V模型是瀑布模型的延伸,瀑布模型存在的问题V模型同样也存在,那么V模型它的诞生一定是有它适用的场景的。V模型的适用场景主要表现在,第一个是对质量要求高的项目,例如航空软件、金融核心系统等,第二是按照需求说明书进行交付的软件,利如以合同为基础的交付型的项目。我们了解了V模型,我们再看一下迭代模型。迭代模型是指在迭代开发中,整代开发工作被组织为一系列短小的、固定长度的小项目,每次迭代都包含需求分析、设计实现、测试与运行维护。采用迭代式开发时,工作可以在需求被完整正确的启动之前,并在一次迭代中完成系统的一部分功能和业务,再通过客户的反馈来细化需求,并开始新一轮的迭代。然后这个模型里面它的特点。
06:23
是迭代模型可以针对瀑布模型的交付周期长的一个改良,因为我们每一次迭代都可以进行一个交付及我们的运行和维护软件都是可以独立交付的。第二个是迭代开发采用是一种渐进式的持续交付的方式进行产品交付。同时迭代模型不要求一次性开发出完整且满足用户需求的系统,但每一次迭代都是可交付可运行的软件。与我们使用一个交通工具为例,如果我们最终的目标是一辆汽车,一开始我们可能会选择有滑板车去满足我们基本的一个出行需求,然后随着我们对工具的一个完善,我们开始有了自行车,在逐步的最交付完善,我们有了摩托车,最后面我们会有一辆汽车,但在整个过程中,我们从滑板车到自行车、摩托车再到汽车都保障是可用的,因此瀑布模型它适用的产品是能够快速销售的产品或项目,例如我们面向C端用户的一些软件产品。第二是需求不明确。
07:23
需要需求快速变化的项目,例如我们的一些新的一些项目或业务,以及创新型的项目。第三个是用的产品是允许持续构建和交互的长期项目,例如我们企业里面的核心的应用和产品始终贯穿于企业生命周期本身的,那么也适合使用迭代的开发模型。了解了迭二代开发模型,我们再来了解增量开发模型。增量开发模型是把软件产品作为一系列的增量构建来设计、编码、集成和测试。每个构建是由多个相互作用的拈构成,并且能够完成特定的功能。每个增量都是独立的一部分,通过不断的增量,直至完成整个版本的开发和测试,才进行软件最终的交付和运行。所以增量模型它的特点是我们可以将一个大的一个系统拆分为各个独立的系统,进行独立的设计、程序、编码、测试,但是当所有的功能模块完成之后,才进行统一的。
08:23
运行和维护。我们以汽车制造为例子,我们可以先对我们汽车的各个拈或者各个组件进行独立的、并行的设计和制造,最后把他们组装统一交付给客户。用户拿到的是一个完整的一个软件,而不是各个工件或者各个部件。因此客户模型它具有系统进行整体规划,但不要求一次性开发出完整系统,可以将系统划分为多个子系统的一个特点。第二个是每次设计和实现都是整体软件的一个部分,这个整个部分我们叫做增量,每个增量都可以去实现我们的需求分析、软件设计、程序编码和软件测试,但增面之间不能进行独立的交付,需要所有增量完成之后进行统一的交付,因此每个帧面只实现整体软件的一个部分,然后在整个软件实现的过程中是允许并行和重叠的,针对于增量模型,它也有其适用的场景。主要包括大型。
09:23
展览项目且子系统间相互独立项目,例如政府的大的集成系统等。第二是需求相对明确且结构化清晰的项目,例如企业的ERP、企业资源管理系统、CRM、客户管理系统等都适用于增量开发模型。我们了解了增量开发模型,我们再了解一下螺旋模型。螺旋模型是一种演化软件开发过程中的模型,它兼顾了快速原型的迭代的特征以及瀑布模型系统化与严格的控制。螺旋模型最大的特点是引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止以减少损失。同时在每个迭代阶段构建原型是螺旋模型用以减少风险的途径。因此,螺旋模型,它主要是针对于瀑布模型风险管理和控制能力弱方面的改良。螺旋模型是采用制定计划、风险分析、实施工程和客户评估四个活动象限来进行。
10:24
项目风险管理和控制的。其中在制定计划方面,确定软件目标,选定实施方案,弄清项目开发的限制条件,在风险分析方面,分析评估所选方案,考虑如何识别和消除风险,在工程实施方面,实施软件开发和验证,在客户评估方面,评价开发工作,提出修正意见,制定下一步的计划。那么模型模型它的适用场景有哪些呢?第一个是大型的、复杂且昂贵的系统的应用,例如金融行业的核心系统等,第二是对失败率容忍度低的软件,例如军工和航空软件,第三是对项目需要严格进行风险控制的软件,如重大的软件的科研项目的。以上就是本节课的内容,感谢聆听,再见。
我来说两句