软件过程模型习惯上也称为软件开发模型,它是软件开发全部过程、活动和任务的结构框架。典型的软件过程模型有瀑布模型、增量模型、演化模型(原型模型、螺旋模型)、喷泉模型、基于构件的开发模型和形式化方法模型等。

瀑布模型

该模型给出了软件生存周期各阶段的固定顺序,上一阶段完成后才能进入到下一阶段,整个过程就像流水下泻,故称为瀑布模型。瀑布模型为软件的开发和维护提供一种有效的管理模式,对保证软件产品的质量有重要的作用。但是这种模型缺乏灵活性,无法通过开发活动来澄清本来不够明确的需求,这将可能导致直到软件开发完成时才发现所开发的软件并非都是用户所需要的,此时必须付出高额的代价才能纠正这一偏差。

增量模型

增量模型融合了瀑布模型的基本成分和原型实现的迭代特征,它假设可以将需求分段为一系列增量产品,每一增量可以分别开发。该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”。当使用增量模型时,第1个增量往往是核心的产品。客户对每个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。增量模型强调每一个增量均发布一个可操作的产品。

演化模型

在获取一组基本的需求后,通过快速分析构造出该软件的一个初始可运行版本,这个初始的软件通常称为原型,然后根据用户在使用原型的过程中提出的意见和建议对原型进行改进,获得原型的新版本。重复这一过程,最终可得到令用户满意的软件产品。该模型是用于对软件需求缺乏准确认识的情况。

(1)原型模型。原型是预期系统的一个可执行版本,反映了系统性质的一个选定的子集。一个原型不必满足目标软件的所有约束,其目的是能快速、低成本地构建原型。当然,能够采用原型方法是因为开发工具的快速发展,使得能够迅速地开发出一个让用户看得见、摸得着的系统框架。这样,对于计算机不是很熟的用户就可以根据这个框架提出自己的需求。开发原型系统首先确定用户需求,开发初始原型,然后征求用户对初始原型的改进意见,并根据意见修改原型。

(2)螺旋模型。将瀑布模型和演化模型相结合就成了螺旋模型。这种模型综合了瀑布模型和演化模型的优点,并增加了风险分析。螺旋模型包括四个方面的活动∶制订计划、风险分析、实施工程、客户评估。

喷泉模型

喷泉模型主要用于描述面向对象的开发过程。该模型具有迭代和无间隙特性。迭代意味着模型中的开发活动常常需要重复多次,在迭代中不断完善软件系统。无间隙是指在开发活动之间不存在明显的边界,允许开发活动交叉、迭代地进行。

基于构件的模型

基于构件的开发是指利用预先包装的构件来构造应用系统。构件可以是组织内部开发的构件,也可以是商品化成品(Commercial Off-The-Shelf,COTS)软件构件。基于构件的开发模型具有许多螺旋模型的特点,它本质上是演化模型,需要以迭代方式构建软件。其不同之处在于,基于构件的开发模型采用预先打包的软件构件开发应用系统。

形式化方法模型

形式化方法是建立在严格数学基础上的一种软件开发方法,其主要活动是生成计算机软件形式化的数学规格说明。
形式化方法用严格的数学语言和语义描述功能规约和设计规约,通过数学的分析和推导,易于发现需求的歧义性、不完整性和不一致性,易于对分析模型、设计模型和程序讲行验证。通过数学的演算,使得从形式化功能规约到形式化设计规约,以及从形式化设计规约到程序代码的转换成为可能。这种方法的一个变形是净室软件工程。

统一过程(UP)模型

统一过程(UP)模型是一种“用例和风险驱动,以架构为中心,迭代并且增量”的开发过程,由UML方法和工具支持。迭代的意思是将整个软件开发项目划分为许多个小的“袖珍项目”,每个“袖珍项目”都包含正常软件项目的所有元素,如计划、分析和设计、构造、集成和测试以及内部和外部发布。

统一过程包括5个阶段,即初始阶段、精化阶段、构建阶段、移交阶段、产生阶段。前4个技术阶段由主要里程碑所终止。

(1)初始阶段————生命周期目标。

(2)精化阶段————生命周期架构。

(3) 构建阶段————初始运作功能。

(4)移交阶段————产品发布。


统一过程的典型代表是RUP(Rational Unified Process)。RUP是UP的商业扩展,完全兼容UP,但比UP更完整、更详细。

敏捷方法

敏捷开发的总体目标是通过"尽可能早地、持续地对有价值的软件的交付"使客户满意。





(1) 极限编程(XP)。XP 是一种轻量级(敏捷)、高效、低风险、柔性、可预测的、科学的软件开发方式。它由价值观、原则、实践和行为4个部分组成,彼此相互依赖、关联,并通过行为贯穿于整个生存周期。






4个价值观,包括沟通、简单性、反馈和勇气。







5个原则,包括快速反馈、简单性假设、逐步修改、提倡更改和优质工作。








12个最佳实践,包括计划游戏(快速制订计划、随着细节的不断变化而完善)、小型发布(系统的设计要能够尽可能早地交付)、隐喻(找到合适的比喻传达信息)、简单设计(只处理当前的需求,使设计保持简单)、测试先行(先写测试代码,然后再编写程序)、重构(重新审视需求和设计,重新明确地描述它们以符合新的和现有的需求)、结队编程、集体代码所有制、持续集成(可以按日甚至按小时为客户提供可运行的版本)、每周工作40h、现场客户和编码标准。






(2)水晶法。





(3)并列争球法。





(4)自适应软件开发。

未完待续。。。

更多知识传送:

计算机操作系统–基础知识
计算机操作系统–进程管理
计算机操作系统–存储管理
计算机操作系统–设备管理
计算机操作系统–文件管理
计算机操作系统–作业管理
计算机操作系统–网络操作系统和嵌入式操作系统
计算机操作系统–UNIX操作系统
软件工程基础知识–认识软件工程

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

以上内容整理参考《软件设计师教程(第5版)》和《软件设计师考试同步辅导(第四版)》(忘记是哪个老师的了,侵删)。本文章内容旨在帮助更多想要进军软考,给自己镀金的小伙伴。有兴趣的小伙伴可以共勉。

软件工程基础知识--软件过程模型相关推荐

  1. 软件工程基础知识--运行和维护

    在系统测试.调试中,使用的是系统测试数据,有些实际运行中可能出现的问题很难通过这些数据被发现.所以,一个系统开发后,让它实际运行一段时间,是对系统最好的检验和测试方法. 系统转换 系统试运行阶段的主要 ...

  2. 软件设计师教程(九)计算机系统知识-软件工程基础知识

    软件设计师教程 软件设计师教程(一)计算机系统知识-计算机系统基础知识 软件设计师教程(二)计算机系统知识-计算机体系结构 软件设计师教程(三)计算机系统知识-计算机体系结构 软件设计师教程(四)计算 ...

  3. 软件设计师(五)——软件工程基础知识

    软件工程基础知识 软件工程基础知识部分分为五部分,如下图所示: 1. 软件工程概述 软件工程 1)含义:指使用计算机科学.数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程 2)目的:提高 ...

  4. 软件工程---基础知识

    目录 软件工程的基础知识 软件开发的基本过程 软件开发的基本方法 软件测试的分类标准 常见的软件分层体系结构 面向对象设计需要做哪些工作 软件工程的基础知识 软件工程专业非常基础的知识: 编程语言:掌 ...

  5. 软考-软件设计师 - 第5章 软件工程基础知识【附补充常考知识点】

    5.1 软件工程概述 5.1.1.计算机软件: (1)系统软件 (2)应用软件 (3)工程.科学软件 (4)嵌入式软件 (5)产品线软件 (6)Web应用 (7)人工智能软件 (8)开放计算 (9)网 ...

  6. 软件工程基础知识复习宝典

    前言:此文档为个人大学时期应付期末考试时自行总结,用于理解并背诵相应的基本概念.一些计算和画图之类的内容需要结合书本例题进行复习,多做习题深刻掌握.中间大标题为老师给出的考纲中建议每一章需要掌握的一些 ...

  7. 软件工程基础知识--认识软件工程

    计算机软件 计算机软件是指计算机系统中的程序及其文档.程序是计算任务的处理对象和处理规则的描述.任何以计算机为处理工具的任务都是计算任务.处理对象是数据(如数字.文字.图形.图像.声音等,它们只是表示 ...

  8. 软件工程基础知识 一

    软件生命周期和开发模型 软件生命周期 软件如同生命一样也有生命周期,一个软件产品的生命周期为计划.分析.设计.编程.测试.维护直至被淘汰. 由于生命周期各阶段的划分尚不统一,所包含的世界内容也不完全相 ...

  9. mcq 队列_MCQ | 软件工程基础知识/简介(1)

    mcq 队列 Q1. Which of the following is a part of the software? Q1. 以下哪个是软件的一部分? Programs 程式 Documentat ...

最新文章

  1. spring cloud 配置中心
  2. openmp使用经验
  3. 网易云信助力中国航空工业集团,打造数字化云办公平台
  4. QT的QProxyStyle类的使用
  5. 选择版本Win7系统VS2010下搭建qt开发环境
  6. 计算机原理转移指令题,转移指令计算机原理.pdf
  7. 互联网日报 | 7月15日 星期四 | B站赠送所有用户1天大会员;饿了么投入3亿用于今夏骑手保障;小米智能工厂二期开工...
  8. nginx是干嘛用的_上帝视角——面试官常问的nginx的几个问题
  9. Excel 将换行符替换为空
  10. 豆瓣评分9.0以上,数据分析、爬虫、Python等书籍,45本包邮送到家!
  11. 关于程序分析和代码编写
  12. php中没有 simhei.ttf,linux虚拟主机jpgraph找不到simhei.ttf字体
  13. 处理uniapp开发安卓app进入打开手机的游戏加速模式
  14. 服务器如何推送消息到app,App中如何实现消息推送?
  15. 量子计算机和量子纠缠的关系,科普:什么是量子纠缠和量子计算?
  16. python如何检验显著性差异_Python中如何计算Pearson相关性和显著性?
  17. Vue2.0 的 Material Design UI 组件库 Muse-UI
  18. 【windows】卸载360壁纸
  19. python 复数数组_对复数数组进行插值
  20. RobotFramework安装记录

热门文章

  1. Labview VISA实现串口通信实例讲解 转
  2. Win10笔记本电脑无法连接Wifi或连接上Wifi无网络访问
  3. ZJY-620静态中间继电器
  4. 吉林高考2019 酱油记
  5. 学习笔记(16):21天通关Python(仅视频课)-if分支初步
  6. Java400道面试题通关宝典助你进大厂,看这篇足矣了!
  7. 高中不学就可以证伪数学公式?(概率计算)
  8. DaisyDisk for Mac(系统清理软件)中文版
  9. Sieve of Eratosthenes质数
  10. Android——Fragment懒加载