软件工程---2.软件过程

三个模型

  1. 瀑布模型
  2. 增量模型
  3. 集成和配置模型

没有适用于所有不同类型软件开发的过程模型。

瀑布模型

在这里插入图片描述

  • 需求定义
  • 系统和软件的设计
  • 实现与单元测试
  • 集成与系统测试
  • 运行与维护

瀑布模型的特征

  1. 从上一项活动中接受该项活动的工作成果(工作产品),作为输入。
  2. 利用这一输入实施该项活动应完成的内容
  3. 给出该项活动的工作成果,作为输出传给下一项活动
  4. 对该项活动实施的工作进行评审。若其工作得到确认,则继续下一项活动。

瀑布模型的优点:

1.强调开发的阶段性;
2.强调早期计划及需求调查;
3.强调产品测试。

瀑布模型的缺点:

  • 从认识论角度看,人的认识是一个多次反复循环的过程,不可能一次完成。但瀑布模型中划分的几个阶段,没有反映出这种认识过程的反复性。 特别是瀑布模型过于依赖早期进行的唯一一次需求调查,不能适应需求的变化;
  • 软件开发是一个知识密集型的开发活动,需要相互合作完成,但瀑布模型没有体现这一点。特别是由于瀑布模型是单一流程,开发中的经验教训不能反馈应用于本产品的过程。

瀑布模型适合的系统种类

  • 嵌入式系统:软件必须和硬件连接、交互,由于硬件不灵活,将软件功能的决策推迟到开发阶段通常不可行。
  • 关键性系统:要求在早期对软件规格说明和设计的安全性和信息安全进行全面分析,在实现阶段处理安全性问题通常代价非常大。
  • 大型软件系统:需要完整的规格说明以使不同的子系统可以独立开发。

增量模型

增量模型的特点

  • 增量模型又称产品改进模型(Incremental Model)
  • 从给定需求开始,通过构造一系列中间版本来实施开发活动,依次类推,直到系统完成。
  • 每一个中间版本都是需求分析、设计、编码和测试的过程。
  • 某些中间版本的开发可以并行进行。

增量模型的优点

  1. 降低了实现需求变更的成本。较瀑布模型而言,重新分析和修改文档的工作流要少很多。
  2. 在开发过程中更容易得到客户对已完成的开发工作的反馈意见。客户可以对软件的已有版本进行评价,并可以判断项目进度;客户通常会觉得从软件设计文档中评价项目、判断项目进度很困难。
  3. 即使并未实现所有功能,也可以在早期向客户交付有用的软件,相对瀑布模型而言,客户可以更早地使用软件

增量模型的缺点

  1. 过程不可见。管理人员需要常规的交付物来掌握进度。如果系统是快速开发的,那么要产生每个版本的文档就很不划算。
  2. 伴随新的增量的加入,系统结构会退化。敏捷方法建议定期对软件重构。
  3. 面对大型、复杂以及长生命周期的系统,增量模型的以上缺点更为突出。大型系统不同部分由不同团队开发,需要稳定的框架或体系结构,这种体系结构需要事先进行计划而不是增量地开发。

集成与配置模型

寻找可复用的代码,按照需求对他们进行修改,并将他们与新代码相集成。

优点与缺点

优点

  • 基于配置和集成的面向复用的软件工程在降低软件开发量以及降低成本和风险方面有着明显的优势。
  • 可以实现更快的软件交付

缺点

  • 系统可能不完全满足用户的真实需求
  • 可能失去对系统演化的控制,因为可复用构建的新版本并不在使用该构件的组织的控制之下。

软件过程

软件过程中的四个活动(牢记)

  1. 软件需求规格说明(可行性分析、需求获取、需求分析)
  2. 软件开发(总体设计、详细设计、实现)
  3. 软件确认(测试)
  4. 软件演化(维护)

应对变化(牢记)

  1. 变化预测:软件过程包括可以在要求大量返工之前预见或预测可能的变化的活动,如原型。
  2. 变化容忍:基于过程和软件设计手段,使系统修改变得容易。如增量模型、重构、框架。

过程改进的方法

  1. 过程成熟度方法。关注改进过程和项目管理,并将好的软件工程实践引入到组织中。目标是提高产品质量和过程的可预测性。
  2. 敏捷方法。关注迭代化的开发以及降低软件工程中的额外开销。主要特点是快速交付功能以及对客户需求变更的快速响应。其哲学思想:最好的过程是那些额外开销最低的过程。

过程成熟度方法:

CMM是指“能力成熟度模型"其英文全称为Capability Maturity Model for Software,英文缩写为SW-CMM,简称CMM
正式的过程改进中的额外开销过高,小企业不用,有些大企业在实践。

如何选择软件过程模型

  1. 前期需求明确的情况下尽量采用瀑布模型或改进型的瀑布模型.
  2. 在用户无信息系统使用经验,需求分析人员技能不足情况下一定要借助原型.
  3. 在不确定性因素很多,很多东西前面无法计划情况下尽量采用RUP和螺旋模型
  4. 在需求不稳定情况下尽量采用RUP模型
  5. 在资金和成本无法一次到位情况下可以采用增量模型,软件产品分多个版本进行发布
  6. 对于完全多个独立功能开发可以在需求阶段就分功能并行,但每个功能内都应该遵循瀑布模型
  7. 对于全新系统的开发必须在总体设计完成后再开始增量或并行.
  8. 对于编码人员经验较少情况下建议不要采用敏捷或迭代等生命周期模型.
  9. 增量,迭代和原型可以综合使用,但每一次增量或迭代都必须有明确的交付和出口准则.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383116.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件工程---4.需求工程

需求工程定义 找出、分析、文档化并且检查需求的过程被称为需求工程 需求的两个描述层次 用户需求,指高层的抽象需求。使用自然语言、图形描述需求。系统需求,指底层的详细需求。使用系统需求文档(有时被称为功能规格说明)应该…

软件工程---5.系统建模

从不同视角对系统建模 外部视角,上下文模型,对系统上下文或环境建模交互视角,交互模型(功能模型),对系统与参与者或系统内构件之间的交互建模结构视角,结构模型(静态模型&#xff0…

软件工程---6.体系结构设计

体系结构模型是什么? 体系结构模型,该模型描述系统如何被组织为一组相互通信的构件 体系结构分类 小体系结构关注单个程序的体系结构。在这个层次上,我们关注单个的程序是如何补分解为构件的。大体系结构关注包括其他系统、程序和程序构件…

【剑指offer】_07 矩形覆盖

题目描述 我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 解题思路 依旧是斐波那契数列 2n的大矩形,和n个21的小矩形 其中target*2为大矩阵的大小 有以下几种情形…

软件工程---07.设计与实现

软件设计和软件实现 软件设计是一个创造性的活动,在此活动中需要基于客户需求识别软件构件及其关系。软件实现是将设计实现为一个程序的过程 为开发一个系统设计,你需要 理解并定义上下文模型以及系统的外部交互设计系统体系结构识别系统中的主要对象…

软件工程---15.软件复用

复用的图(牢记) 软件复用的好处 开发加速有效的专家利用提高可依赖性降低开发成本降低过程风险符合标准 软件复用的缺点 创建,维护以及使用一个构件库查找,理解以及适配可复用构件维护成本增加缺少工具支持“不是在这里发明的”综合症 应用框架 现在…

软件工程---16.基于构件的软件工程

CBSE CBSE是定义、实现、集成或组装松散耦合的独立构件成为系统的过程。 基于构件的软件工程的要素有: 完全由接口进行规格说明的独立构件。构件标准使构件集成变得更为容易。中间件为构件集成提供软件支持。开发过程适合基于构件的软件工程。 CBSE的设计原则 构件是独立的…

软件工程---17.分布式软件工程

分布式系统的5个优点 资源共享开放性并发性可伸缩性容错性 分布式计算中必须考虑的设计问题 透明性:隐藏底层分布 开放性 可伸缩性 三个维度 规模:又分为增强扩展(单挑),增加扩展(群殴)分布可靠性 信息安全性 主要防止以下类型的攻击 拦…

软件工程---18.面向服务的软件工程

什么是Web服务 一个松耦合、可复用的软件构件,封装了离散的功能,该功能是分布式的并且可以被程序访问。Web服务是通过标准互联网和基于XML的协议被访问的服务。 服务和软件构件之间的一个重要的区别是 服务应该总是独立的和松耦合的Web 服务没有“请求…

【剑指offer】_09二叉搜索树的后序遍历序列

题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 解题思路 比如下面的这棵二叉搜索树 它的后序遍历为0214369875; 我们设当前根节点为root; 第一次…

【剑指offer】_12 数组中的逆序对

题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 解题思路 剑指offer的解法 看到这个题目&#xff0…

详解Linux下通过yum安装Mariadb/MySQL数据库(腾讯云也适用)

1. 安装Mariadb 安装命令 yum -y install mariadb mariadb-server安装完成MariaDB,首先启动MariaDB systemctl start mariadb设置开机启动 systemctl enable mariadbMariaDB的相关简单配置 此命令进入到配置相关界面 mysql_secure_installation首先是设置密码…

海量数据处理(位图和布隆过滤器)

哈希切割 给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址? 与上题条件相同,如何找到top K的IP?如何直接用Linux系统命令实现 解决思路 找到出现次数最多的IP地址 要找到前TopK的IP地址,就…

C++中的lambda表达式和线程库

98中的一个例子 如果想要对一个数据集合中的元素进行排序&#xff0c;可以使用std::sort方法 #include <algorithm> #include <functional> int main() {int array[] {4,1,8,5,3,7,0,9,2,6};// 默认按照小于比较&#xff0c;排出来结果是升序std::sort(array, a…

文件压缩(Huaffman树的概念及其实现)

什么是压缩 想办法让源文件变得更小并能还原。 为什么要进行文件压缩 文件太大&#xff0c;节省空间提高数据再网络上传输的效率对数据有保护作用—加密 文件压缩的分类 无损压缩 源文件被压缩后&#xff0c;通过解压缩能够还原成和源文件完全相同的格式 有损压缩 解压缩之…

详解STL中的空间配置器(SGI版本)

空间配置器 1.什么是空间配置器 为各个容器高效的管理空间(空间的申请与回收)的 2.为什么需要空间配置器 各种容器----->可以存放元素---->底层需要空间 new 申请空间 operator new ---->malloc调用构造函数------完成对象的构造 动态内存管理总结 前面的容器…

大四阶段的社会实践的主要目的是_疫情当前,大三大四的学生“很惨”?大一大二的学生也别松懈...

大四毕业生不容易这次疫情对于高校学生而言&#xff0c;可以说是各有各的难处&#xff0c;“这届毕业生很惨”更是屡上热搜。不可否认&#xff0c;大四毕业生确实很不容易&#xff0c;论文答辩、毕业、求职就业等都受到了影响&#xff0c;虽然有困难&#xff0c;但各方都在积极…

【剑指offer】_19 滑动窗口中的最大值

题目描述 给定一个数组和滑动窗口的大小&#xff0c;找出所有滑动窗口里数值的最大值。例如&#xff0c;如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3&#xff0c;那么一共存在6个滑动窗口&#xff0c;他们的最大值分别为{4,4,6,6,6,5}&#xff1b; 针对数组{2,3,4,2,6,2,…

android 文字反转_多文字共享信息系统

欧阳贵林 www.HeZi.net首发表于2016年03月23日“ 处在信息时代的开端&#xff0c;信息技术不应有特殊的文字性&#xff0c;需要创建多文字共享信息系统&#xff0c;给各国文字一个公平的参与信息与科技创新发展的平台。这是世界的事&#xff0c;更是中国事。”01人类语言语言文…

LeetCode【1--两数之和】 LeetCode【2--两数相加】

两数之和 题目描述 给定一个整数数组 nums 和一个目标值 target&#xff0c;请你在该数组中找出和为目标值的那 两个 整数&#xff0c;并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;你不能重复利用这个数组中同样的元素。 解题思路 直接两…