[架构之路-153]-《软考-系统分析师》- 8-软件工程-3-软件开发模型(时间轴阶段模型)
Posted 文火冰糖的硅基工坊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[架构之路-153]-《软考-系统分析师》- 8-软件工程-3-软件开发模型(时间轴阶段模型)相关的知识,希望对你有一定的参考价值。
目录
第8章 软件工程
备注说明:
开发模型,是从时间的角度,为业务软件的开发构建了一个软件开发活动框架。
在该框架下,开展各种软件业务领域活动、计算机领域的活动、软件项目管理活动!!!
软件开发模型、以及软件工程大部分的知识,主要用于项目管理,对业务领域,如5G, ERP等没有太多的帮助,对计算机领域,如软件编程,架构设计等,都没有太多的帮助。
软件工程是指导软件开发人员如何从时间和阶段性的维度,来开展软件各种软件开发活动(包括业务领域和计算机领域)。
软件工程本身并不关注目标软件系统(业务知识+计算机知识)本身,它关注的是,如何按照工程化的方法,构建目标系统。
8.3 软件开发模型(时间轴模型)
软件开发模型给出了软件开发活动各阶段之间的关系,它是软件幵发过程的概括,是软件工程的重要内容。
软件开发模型为软件工程管理提供了里程碑和进度表,为软件幵发过程提供了原则和方法。
8.3.1软件开发模型
软件开发模型大体上可分为三种类型。
第一种是以软件需求完全确定为前提的瀑布模型;
第二种是在软件幵发初始阶段只能提供基本需求时采用的迭代式或渐进式幵发模型,例如,喷泉模型、螺旋模型、统一幵发过程和敏捷方法等;
第三种是以形式化幵发方法为基础的变换模型。
1. 瀑布模型
付一个完善的系统,并没有考虑软件的演化特征。其优点是强调开发的阶段性、早期计划及需求调查和产品测试,以这样严格的方式构造软件,开发人员很清楚每一步应该做什么,有利于项目管理。 |
然而,在瀑布模型中,依赖于早期进行的需求调査,不能适应需求的变化;
由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程;
风险往往迟至后期的开发阶段才显露出来,从而失去了及早纠正的机会。
在瀑布模型中,需求或设计中的错误往往只有到了项目后期才能够被发现,对于项目风险的控制能力较弱,从而导致项目常常延期完成,开发费用超出预算。
2. 演化模型
演化模型主要针对事先不能完整定义需求的软件开发,是在快速开发一个原型的基础上,根据用户在调用原型的过程中提出的反馈意见和建议,对原型进行改进,获得原型的新版本,重复这一过程,直到演化成最终的软件产品。演化模型的主要优点是,任何功能一经开发就能进入测试,以便验证是否符合产品需求,可以帮助引导出高质量的产品要求。其主要缺点是,如果不加控制地让用户接触开发中尚未稳定的功能,可能对开发人员及用户都会产生负面的影响。
3. 螺旋模型
螺旋模型是瀑布模型与演化模型相结合,并加入两者所忽略的风险分析所建立的一种软件开发模型。螺旋模型是一种演化软件过程模型,它将原型实现的迭代特征与线性顺序模型中控制的和系统化的方面结合起来,使软件的增量版本的快速开发成为可能。在螺旋模型中,软件开发是一系列的增量发布。
螺旋模型沿着螺线进行若干次迭代,每次迭代都包括制订计划、风险分析、实施工程和客户评估4 个方面的工作。螺旋模型强调风险分析,使得幵发人员和用户对每个演化层出现的风险有所了解,继而做出应有的反应。因此,特别适用于庞大、复杂并具有高风险的系统。
与瀑布模型相比,螺旋模型支持用户需求的动态变化,为用户参与软件幵发的所有关键决策提供了方便,有助于提高软件的适应能力,并且为项目管理人员及时调整管理决策提供了便利,从而降低了软件开发的风险。
在使用螺旋模型进行软件幵发时,需要开发人员具有相当丰富的风险评估经验和专门知识。另外,过多的迭代次数会增加幵发成本,延迟提交时间。
4. 喷泉模型
喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。该模型认为软件开发过程自下而上的各阶段是相互重叠和多次反复的,就像水喷上去又可以落下来,类似一个喷泉。各个开发阶段没有特定的次序要求,并且可以交互进行,可以在某个开发阶段中随时补充其他任何开发阶段中的遗漏。在喷泉模型中,各活动之间无明显边界,例如,分析和设计之间没有明显的边界。
这种特性称为无间隙性。由于对象概念的引入,只用类和关系来表达分析、设计和实现
等活动,从而可以较容易地实现活动的迭代和无间隙,提高软件项目幵发效率,节省幵
发时)旬。
5 . 变换模型
变换模型是基于形式化规格说明语言和程序变换的软件幵发模型,它对形式化的软
件规格说明进行一系列自动或半自动的程序变换,最后映射为计算机能够接受的软件系
统。为了确认形式化规格说明与软件需求的一致性,往往以形式化规格说明为基础开发
一个软件原型,用户可以从人机界面、系统主要功能和性能等方面对原型进行评审。必
要时,可以修改软件需求、形式化规格说明和原型,直至原型被确认为止。这时,开发
人员即可对形式化的规格说明进行一系列的程序变换,直至生成计算机可以接受的 H 标
代码。
程序变换是软件幵发的另一种方法,其基本思想是把程序设计的过程分为生成阶段
和改进阶段。首先,通过对问题的分析制订形式规范并生成一个程序,通常是一种函数
型的递归方程。然后,通过一系列保持正确性的源程序到源程序的变换,把函数型风格
转换成过程型风格,并进行数据结构和算法的求精,最终得到一个有效的面向过程的程
序。这种变换过程是一种严格的形式推导过程,所以只需对变换前的程序的规范加以验
证,变换后的程序的正确性将由变换法则的正确性来保证。
变换模型的优点是解决了代码结构经多次修改而变坏的问题,减少了许多中间步骤
(例如,设计、编码和测试等)。但是,变换模型仍有较大局限,以形式化开发方法为基
础的变换模型需要严格的数学理论和一整套开发环境的支持。
6 . 智能模型
智能模型也称为基于知识的软件开发模型,它综合了上述若干模型,并把专家系统结合在一起。该模型应用基于规则的系统,采用规约和推理机制,帮助开发人员完成幵发工作,并使维护在系统规格说明一级进行。为此,需要建立知识库,将模型本身、软件工程知识与特定领域的知识分别存入知识库。
7. V 模型
V 模型是在快速应用开发模型基础上演变而来,由于将整个幵发过程构造成一个 V字形而得名。 V 模型应用在软件测试方面,和瀑布模型有着一些共同的特征。 V 模型中的过程从左到右,描述了基本的开发过程和测试行为,其价值在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程各阶段的对应关系,如图8-3所示。在 V 模型中,单元测试是基于代码的测试,最初由开发人员执行,以验证程序代码的各个部分是否己达到预期的功能要求;集成测试验证了两个以上单元之间的集成是否正确,并有针对性地对详细设计中所定义的各单元之间的接口进行检査;在所有单元测试和集成测试完成后,系统测试开始以客户环境模拟系统的运行,以验证系统是否达到。
8.3.2 快速应用开发
R A D 只能用于管理信息系统的开发,不适合技术风险很高的情况。例如,当一个新系统要采用很多新技术,或当新系统要与现有系统有较髙的互操作性时,就不适合使用 R A D 。
8.3.3 统一过程
8.3.4 敏捷方法
[架构之路-128]-《软考-系统架构设计师》-计算机网络 -2- 云计算概述(IaaS, Paas,SaaS)
第5章 云计算
网络化CPU、网络化的OS、网络化中间件、网络化应用程序
5.1 概述
云计算(cloud computing)是分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,然后,通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。云计算早期,简单地说,就是简单的分布式计算,解决任务分发,并进行计算结果的合并。因而,云计算又称为网格计算。通过这项技术,可以在很短的时间内(几秒钟)完成对数以万计的数据的处理,从而达到强大的网络服务。
现阶段所说的云服务已经不单单是一种分布式计算,而是分布式计算、效用计算、负载均衡、并行计算、网络存储、热备份冗杂和虚拟化等计算机技术混合演进并跃升的结果。
云计算指通过计算机网络(多指因特网)形成的计算能力极强的系统,可存储、集合相关资源并可按需配置,向用户提供个性化服务。
5.2 云计算完整协议栈
5.3 服务类型
通常,它的服务类型分为三类,即基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。
这3种云计算服务有时称为云计算堆栈,因为它们构建堆栈,它们位于彼此之上,以下是这三种服务的概述: [6]
(1)基础设施即服务(IaaS) => 硬件 + 操作系统
基础设施即服务是主要的服务类别之一,它向云计算提供商的个人或组织提供虚拟化计算资源,如虚拟机CPU、存储、网络和操作系统OS。
(2)平台即服务(PaaS) => 中间件服务,大平台
PAAS平台即(Platform-as-a-Service:平台即服务),把应用服务的(运行和开发)环境作为一种服务提供的商业模式。
平台即服务是一种服务类别,为开发人员提供通过全球互联网构建应用程序和服务的平台。
Paas为开发、测试和管理软件应用程序提供按需开发环境。
PaaS 是云中的完整开发和部署环境,其资源使组织能够提供从简单的基于云的应用到复杂的支持云的企业应用程序的所有内容。 资源是按照“即用即付”的方式从云服务提供商处购买的,并通过安全的 Internet 连接进行访问。 [2]
PaaS 通常用于以下场景:
开发框架。 PaaS 提供了一种框架,开发人员可以基于该框架进行构建,从而开发或自定义基于云的应用程序。 就像 Microsoft Excel 宏一样,PaaS 使开发人员能够使用内置软件组件创建应用程序。 包含可扩展性、高可用性和多租户功能等在内的云功能减少了开发人员的代码编写工作量。
Analytics 或商业智能。 借助作为 PaaS 服务提供的工具,组织可以分析和挖掘其数据。 他们可以查找见解和模式并预测结果,以改进预测、产品设计和投资回报等业务决策。
(3)软件即服务(SaaS) => 应用程序,小产品
软件即服务也是其服务的一类,通过互联网提供按需软件付费应用程序,云计算提供商托管和管理软件应用程序,并允许其用户连接到应用程序并通过全球互联网访问应用程序。45.3 特点
云计算的可贵之处在于高灵活性、可扩展性和高性比等,与传统的网络应用模式相比,其具有如下优势与特点: [5]
5.4 云计算技术特征
(1)网络技术、网络化。
可以这样讲,没有互联网技术,就没有云计算。互联网支撑起来云计算运行环境。
通过网络,分布在不同地方的用户就可以通过Web浏览器使用分布式的云计算服务。
(2)虚拟化技术。
必须强调的是,虚拟化突破了时间、空间的界限,是云计算最为显著的特点,虚拟化技术包括应用虚拟和资源虚拟两种。
众所周知,物理平台与应用部署的环境在空间上是没有任何联系的,正是通过虚拟平台对相应终端操作完成数据备份、迁移和扩展等。 [5]
虚拟化技术是在物理计算机硬件或操作系统之上,再虚拟出多个不同的计算机。这是云计算的核心和关键!没有虚拟的计算机,可以无法实现云计算机的其他特征,设想一下,如果全部时物理机器,如何实现计算机资源的动态创建、动态分配、动态关闭呢?
虚拟化服务器 (CPU + 操作系统)
虚拟化存储
虚拟化网络
(3)动态可扩展。
云计算具有高效的运算能力,在原有服务器基础上增加云计算功能能够使计算速度迅速提高,最终实现动态扩展虚拟化的层次达到对应用进行扩展的目的。 [5]
(4)按需部署。
计算机包含了许多应用、程序软件等,不同的应用对应的数据资源库不同,所以用户运行不同的应用需要较强的计算能力对资源进行部署,而云计算平台能够根据用户的需求快速配备计算能力及资源。 [5]
(5)灵活性高。
目前市场上大多数IT资源、软、硬件都支持虚拟化,比如存储网络、操作系统和开发软、硬件等。虚拟化要素统一放在云系统资源虚拟池当中进行管理,可见云计算的兼容性非常强,不仅可以兼容低配置机器、不同厂商的硬件产品,还能够外设获得更高性能计算。 [5]
(6)可靠性高。
倘若服务器故障也不影响计算与应用的正常运行。因为单点服务器出现故障可以通过虚拟化技术将分布在不同物理服务器上面的应用进行恢复或利用动态扩展功能部署新的服务器进行计算。 [5]
(7)性价比高。
将资源放在虚拟资源池中统一管理在一定程度上优化了物理资源,用户不再需要昂贵、存储空间大的主机,可以选择相对廉价的PC组成云,一方面减少费用,另一方面计算性能不逊于大型主机。 [5]
(8)可扩展性。
用户可以利用应用软件的快速部署条件来更为简单快捷的将自身所需的已有业务以及新业务进行扩展。如,计算机云计算系统中出现设备的故障,对于用户来说,无论是在计算机层面上,亦或是在具体运用上均不会受到阻碍,可以利用计算机云计算具有的动态扩展功能来对其他服务器开展有效扩展。这样一来就能够确保任务得以有序完成。在对虚拟化资源进行动态扩展的情况下,同时能够高效扩展应用,提高计算机云计算的操作水平。
以上是关于[架构之路-153]-《软考-系统分析师》- 8-软件工程-3-软件开发模型(时间轴阶段模型)的主要内容,如果未能解决你的问题,请参考以下文章
[架构之路-107]-《软考-系统架构设计师》-0-系统分析师与系统架构设计师简介与官网介绍
[架构之路-115]-《软考-系统架构设计师》-软件架构设计-8-软件工程与基于架构的软件开发流程ABSD
[架构之路-133]-《软考-系统架构设计师》-软件工程-3-软件系统的建模与UML
[架构之路-145]-《软考-系统分析师》- 7-企业信息化战略与实施-2-信息系统开发方法:架构化方法面向对象方法面向服务方法原型开发方法