软件开发综述基本简介

软件开发综述

软件开发的基本概念

软件开发是根据用户要求建造出的软件系统或者系统中的软件部分的过程。软件开发是一项包括需求捕捉,需求分析、设计、实现和测试的系统工程。软件一般是用某种程序设计语言来实现的。通常采用软件开发工具可以进行软件开发。软件划分为系统软件和应用软件。

软件开发模型

边做边改模型

许多产品都是使用“边做边改模型”来开发的。在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改:
缺少规划和设计环节,软件的结构随着不断的修改越来越糟,导致无法继续修改;
忽略需求环节,给软件开发带来很大的风险;
没有考虑测试和程序的可维护性,也没有任何文档,软件的维护十分困难。

瀑布模型

最早出现的软件开发模型是1970年W·Royce提出的瀑布模型。该模型给出了固定的顺序,将生存期活动从上一个阶段向下一个阶段逐级过渡,如同流水下泻,最终得到所开发的软件产品,投入使用。但计算拓广到统计分析、商业事务等领域时,大多数程序采用高级语言(如FORTRAN、COBOL等)编写。瀑布模式模型也存在着缺乏灵活性、无法通过并发活动澄清本来不够确切的需求等缺点。

快速原型模型

快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。
通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。
显然,快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。
快速原型的关键在于尽可能快速地建造出软件原型,一旦确定了客户的真正需求,所建造的原型将被丢弃。因此,原型系统的内部结构并不重要,重要的是必须迅速建立原型,随之迅速修改原型,以反映客户的需求

增量模型

又称演化模型。与建造大厦相同,软件也是一步一步建造起来的。在增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成.增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险。

螺旋模型

1988年,Barry Boehm正式发表了软件系统开发的"螺旋模型",它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。
螺旋模型沿着螺线进行若干次迭代,图中的四个象限代表了以下活动:
(1) 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;
(2) 风险分析:分析评估所选方案,考虑如何识别和消除风险;
(3) 实施工程:实施软件开发和验证;
(4) 客户评估:评价开发工作,提出修正建议,制定下一步计划。

演化模型

演化模型是一种全局的软件(或产品)生存周期模型。属于迭代开发方法。

喷泉模型

喷泉模型(fountain model)是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性。

智能模型

智能模型也称为基于知识的软件开发模型,它综合了上述若干模型,并把专家系统结合在一起。该模型应用基于规则的系统,采用归纳和推理机制,帮助软件人员完成开发工作。为此,建立了知识库,将模型、软件工程知识与特定领域的知识分别存入数据库。

混合模型

混合模型(hybrid model)是几种不同模型组合而成的一种模型。它允许一个项目能沿着最有效的路径发展。也可定义为由固定效应和随机效应(随机误差除外)两部分组成的统计分析模型。如由几个高斯分布混合起来的模型叫高斯混合模型,几个线性模型混合在一起的模型叫线性混合模型。一般的,被模拟的系统几乎不可能按照一种模式一步一步地进行,会受到很多外界因素的干扰。而混合模型能够适应不同的系统和不同情况的需要而提出一种灵活多样的动态方法。混合模型分为分析、综合、运行和废弃四个阶段,各阶段的重叠为设计员提出了模型选择。

RAD模型

快速应用开发(RAD)模型是一个增量型的软件开发过程模型。强调极短的开发周期。RAD模型是瀑布模型的一个“高速”变种,通过大量使用可复用构件,采用基于构件的建造方法赢得快速开发。如果需求理解得好且约束了项目的范围,随后是数据建模、过程建模、应用生成、测试及反复。采用RAD模型的软件过程

各模型比较

每个软件开发组织应该选择适合于该组织的软件开发模型,并且应该随着当前正在开发的特定产品特性而变化,以减小所选模型的缺点,充分利用其优点,下表列出了几种常见模型的优缺点。
瀑布模型 文档驱动 系统可能不满足客户的需求
快速原型模型 关注满足客户需求 可能导致系统设计差、效率低,难于维护
增量模型 开发早期反馈及时,易于维护 需要开放式体系结构,可能会导致效率低下
螺旋模型 风险驱动 风险分析人员需要有经验且经过充分训练

软件开发过程

需求分析
设计
测试
运行维护

UML

为什么要建模

模型:模型是对现寝室的简化,提供系统的蓝图
建模是为了能够更好地理解 正在开发的系统
通过建模,要达到4个目的:
1、建模有助于按照实际情况或按照所需的样式对系统进行可视化
2、能够规约系统的结构或行为
3、模型给出了指导构造系统的模板
4、模型对做出的决策进行文档化

建模原理

各种工程学科都有其丰富的建模运用历史,这些经验形成了建模的四项基本原理:
1、选择要创建什么模型,对如何动手解决问题和如何形成解决方案有着意义深远的影响。
2、可以在不同的精度级别上表示每一种模型
3、最好的模型是与现实相联系的
4、单个模型或视图是不充分的。对每个重要的系统最好用一小组几乎独立的模型从多个视角去逼近。

你可能感兴趣的:(软件开发综述基本概念)