快速了解软件工程学概述(5种软件过程模型)

news2024/11/26 22:20:37

目录

1 、什么是软件?特点有哪些 ?

 2 、 软件危机

定义:

软件危机产生的原因

消除软件危机的方法

3 、软件工程

1.软件工程的介绍

(1)概念

(2)本质特征

(3)软件工程方法学(方法学也叫做范型)

3.传统方法学(生命周期方法学或结构化范型)

4)面向对象方法学(封装,继承、多态)

软件维护

4 、软件过程 

4.1  定义

4.2典型软件过程模型

1.瀑布模型

2.快速原型模型

3. 增量模型

4 .螺旋模型

5.  喷泉模型(面向对象模型)


1 、什么是软件?特点有哪些 

1.软件是程序、数据和文档的完整集合。

2.特点:

软件是一种逻辑实体。

是人类的智力产品

软件需要长期维护

软件开发过程复杂

软件成本昂贵

软件可以复制

 2 、 软件危机

定义

       软件危机是指在计算机软件的开发维护过程中所遇到的一系列严重问题。

软件危机包含下述两方面的问题:

1. 如何开发软件,以满足对软件日益增长的需求。

2. 如何维护数量不断膨胀的已有软件。

软件危机的一些典型表现(超重要)

1. 对软件开发成本进度的估计常常很不准确。

2. 用户对“已完成的”软件系统不满意的现象经常发生

3. 软件产品的质量往往靠不住

4. 软件常常是不可维护

5. 软件通常没有适当的文档资料。

6. 软件成本在计算机系统总成本中所占的比例逐年上升

7. 软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势。

软件危机产生的原因

1 客观原因

1  软件是计算机系统中的逻辑部件而不是物理部件

2  软件规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。

2 主观原因

1.    对软件开发维护有不少糊涂观念, 采用了错误的方法技术

2.    用户要求没有完整准确地认识就匆忙着手编写程序

3.    一个软件从定义、开发、使用和维护,直到最终被废弃, 要历一个漫

长的时期

4.    一个软件产品必须由一个完整的配置组成, 主要包括程序、文档和数据

等成分。

5.    在软件开发的不同阶段进行修改需要付出的代价是很不相同的。

6.    轻视维护

消除软件危机的方法

1)应该对计算机软件有一个正确的认识

(2)应该充分认识到软件开发是一种组织良好、管理严密、各类人员协同配合、

共同完成的工程项目。

(3应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研 究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。

4)应该开发和使用更好的软件工具。

3 、软件工程

1.软件工程的介绍

1)概念

       软件工程是从管理和技术两方面研究如何能更好的开发和维护计算机软件的一 门新兴学科。 采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间 考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来, 以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

(2本质特征

1.软件工程关注于大型程序的构造

2.软件工程的中心课题是控制复杂性

3.软件经常变化

4.开发软件的效率非常重要

5.和谐的合作是开发软件的关键

6.软件必须有效的支持它的用户

7.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。

2.  软件工程的 7 条基本原理

用分阶段的声明周期计划严格管理

坚持进行阶段评审

进行严格的产品控制

采用现代程序设计技术

结果应能清楚地审查

开发小组的人员应该小而精

承认不断改进软件工程时间的必要性

(3)软件工程方法学(方法学也叫做范型)

1.主要包括传统方法学面向对象方法学

2.软件工程方法学三要素

方法: 完成软件开发的各项任务的技术方法, 回答“怎样做”的问题

工具: 运用方法而提供的自动的或半自动的软件工程支撑环境

过程:    为了获得高质量的软件所需要完成的一系列任务的,它规定了完成各项任务的工作步骤。

3.传统方法学(生命周期方法学或结构化范型

优点:把软件生命周期划分成若干个阶段,每个阶段的任务相对独立,而且比较简单, 便于不同人员分工协作, 从而降低了整个软件开发工程的困难程度;在软件生命周期的每个阶段都采用科学的管理技术和良好的技术方法,而 且在每个阶段结束之前都从技术和管理两个角度进行严格的审查, 合格之后才 开始下一阶段的工作,这就使软件开发工程的全过程以一种有条不紊的方式进行,保证了软件的质量,特别是提高了软件的可维护性采用生命周期方法学可以大大提高软件开发的成功率和生产率。

4)面向对象方法学(封装,继承、多态)

优点:

降低了软件产品的复杂性

提高了软件的可理解性

简化了软件的开发维护工作

提高了软件的可重用性

       软件生命周期(三个时期,八个阶段)软件生命周期由软件定义、软件开发和运行维护 (软件维护) 3   个时期组成.

软件维护

通常有四类维护活动

[1]    改正性维护,即诊断和改正正在使用过程中发现的软件错误;

[2]    适应性维护,即修改软件以适应环境的变化

[3]    完善性维护,即根据用户的要求改进或扩充软件使它更完善

[4]    预防性维护,即修改软件,为将来的维护活动预先做准备

4 、软件过程 

4.1  定义

        软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各

项任务的工作步骤。

4.2典型软件过程模型

1.瀑布模型

1 瀑布模型是软件工程中应用得最广泛的过程模型。传统软件工程方法学的软件过程+

本上可以用瀑布模型来描述。

特点:

1 阶段间具有顺序性和依赖性

 须等前一阶段的工作完成之后,才能开始后一阶段的工作;

②前一阶段的输 出文档就是后一阶段的输入文档,因此, 只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果。

瀑布模型的优点

第一,可强迫开发人员采用规范的方法(例如,结构化技术);

第二, 严格地规定了每个阶段必须提交的文档;

第三, 要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。

第四, 对文档的约束,使软件维护变得容易一些, 且能降低软件预算

瀑布模型的缺点

2.快速原型模型

定义: 快速建立起来的可以在计算机上运行的程序, 它所能完成的功能往往是最终产品能完成的功能的一个子集。

优点: 减少由于软件需求不明确带来的开发风险。这种模型适合预先不能确切定义需求的软件系统的开发。

3. 增量模型

定义: 使用增量模型时,把软件产品作为一系列的增量构件来设计、编码、集成和测试, 适应需求的变更。

增量模型的优点:第一, 能在较短时间内向用户提交可完成部分工作的产品第二, 逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。

缺点: 增量之间可能有不能集成的风险。

4 .螺旋模型

        螺旋模型是快速原型法以进化的开发方式为中心,在每个项目阶段使用瀑布模型法。这种模型的每一个周期都包括需求定义、风险分析、工程实现和评审4个阶段,由这4个阶段进行迭代。螺旋模型即是一种引入了风险分析与规避机制的过程模型,是瀑布模型、快速原型方法和风险分析方法的有机结合。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失


 

5.  喷泉模型(面向对象模型)

          喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。该模型认为软件开发过程自下而上周期的各阶段是相互重叠和多次反复的,就像水喷上去又可以落下来,类似一个喷泉。各个开发阶段没有特定的次序要求,并且可以交互进行,可以在某个开发阶段中随时补充其他任何开发阶段中的遗漏。


 

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

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

相关文章

什么样的CRM系统更值得使用?

CRM系统发展到了2023年,经过了无数次迭代与更新,各种概念开始层出不穷。当您的企业准备实施一套CRM系统,在选型前有个问题需要思考:您到底需要什么样的CRM系统? CRM系统早已经从当初的管理客户关系变为了“十项全能”—…

死磕MybatisPlus系列:Mapper的奇妙之旅

Mybatis Plus源码解析系列篇之Mapper的奇妙之旅 一、MybatisPlus初体验 MybatisPlus是一个基于mybatis的开源orm框架,其内置的Mapper、Service让开发者仅需简单的配置,就能获得强大的CRUD能力;其强大的条件构造器,可以满足各类需…

Walrus 0.4发布:单一配置、多态运行,体验下一代应用交付模型

今天,我们高兴地宣布云原生统一应用平台 Walrus 0.4 正式发布,这是一个里程碑式的版本更新。新版本采用了全新的应用模型——仅需进行单一配置,即可在多种模态的基础设施及环境中运行包括应用服务及周边依赖资源在内的完整应用系统。“You bu…

keil5下使用RAM运行程序的配置过程

本用例是展示HC32F4A0片上2M flash的擦除和读写功能,由于默认配置是程序写入flash中,并从flash中运行程序,所以需要将程序配置为从RAM中运行,这样才能正确运行此程序。默认配置如下: 可以看到MCU的内部flash为2M&#…

Arraylist案例

Arraylist是使用最频繁的一个集合,它与数组类似,不同之处在于它可以动态改变长度,不够了可以扩容。 案例: 我的思考: 首先多个菜品信息可以用Arraylist 来存储,那我们需要再创建一个菜品类Food&#xff0…

uni-app+ts----微信小程序锚点定位 、自动吸顶、滚动自动选择对应的锚点(点击tab跳转对应的元素位置)

uni-app----微信小程序锚点定位 、自动吸顶、滚动自动选择对应的锚点&#xff08;点击tab跳转对应的元素位置&#xff09; html代码部分 重点是给元素加入【 :id“‘item’ item.id”】 <view class"radiusz bg-white pt-[30rpx] z-[999]"><u-tabs:list&q…

长期用台灯影响视力吗?备考专用护眼台灯推荐

大家都知道台灯作为一种小范围的桌面照明灯具&#xff0c;在夜晚能给我们带来很大的帮助&#xff0c;不管是办公、还是学习、阅读都需要它提供照明。那么长期使用台灯会影响视力吗&#xff1f;其实台灯一般都眼睛都是没有伤害的&#xff0c;真正对眼睛有伤害的是不正确的使用台…

MySQL(免密登录)

简介: MySQL免密登录是一种允许用户在没有输入密码的情况下直接登录到MySQL服务器的配置。这通常是通过在登录时跳过密码验证来实现的。 1、修改MySQL的配置文件 使用vi /etc/my.cnf&#xff0c;添加到【mysqld】后面 skip-grant-tables #配置项告诉mysql跳过权限验证&#…

win10屏幕录制神器,让你轻松上手!

屏幕录制成为了人们日常生活中越来越重要的一部分&#xff0c;无论是游戏录制、在线会议记录&#xff0c;还是教程演示&#xff0c;屏幕录制都能够有效地帮助人们捕捉并分享关键信息。随着windows 10系统的普及&#xff0c;许多用户已经开始探索这个系统中的屏幕录制功能。接下…

CRM的智能招投标对企业有什么意义?

如今CRM系统的生态系统越来越壮大&#xff0c;这些工具的集成极大地丰富了CRM系统的应用场景&#xff0c;例如CRM系统集成企业微信等社交媒体为获客提供便利&#xff1b;再比如CRM集成ChatGPT提高邮件内容质量&#xff0c;对于经常接触招投标项目的业务人员来说&#xff0c;在C…

企业营销管理能够实现自动化吗?怎么做?

当今企业面临着越来越多的营销难题&#xff1a;如何有效培育潜在客户、如何提高营销活动的效果、如何优化营销资源的分配......企业的营销管理怎么做&#xff1f;或许CRM系统营销自动化会起到作用。 客户细分&#xff1a; 企业可以通过CRM的客户细分功能&#xff0c;根据客户…

C#中openFileDialog控件的使用方法

目录 一、OpenFileDialog基本属性 二、使用 OpenFile 从筛选的选择中打开文件 1.示例源码 2.生成效果 3. 其它示例 三、使用 StreamReader 以流的形式读取文件 1.示例源码 2.生成效果 四、一种新颖的Windows窗体应用文件设计方法 在C#中&#xff0c;OpenFileDialog控件…

核密度估计法(KDE)的概念,应用,优点,缺点,以及与正态分布(高斯分布)的区别,以及与概率分布的区别联系。看完你就真正捋清这些概念了

文章目录 前言一、核密度估计法&#xff08;KDE&#xff09;是什么&#xff1f;二、核密度估计法的步骤如下&#xff1a;三、核密度的应用&#xff1a;四、核密度估计法的优点&#xff1a;五、核密度估计法的缺点&#xff1a;六、核密度估计法和正态分布的区别在于&#xff1a;…

UE4/UE5 c++绘制编辑器场景直方图(源码包含场景中的像素获取、菜单添加ToolBar)

UE4/UE5 c场景直方图 UE4/UE5 C绘制编辑器场景直方图绘制原理&#xff1a;元素绘制坐标轴绘制 源码处理 UE4/UE5 C绘制编辑器场景直方图 注&#xff1a;源码包含场景中的像素获取、菜单添加ToolBar 实现效果&#xff1a; 这个是用于美术统计场景中像素元素分布&#xff0c;类…

fastjson和jackson序列化的使用案例

简单记录一下一个fastjson框架和jackson进行序列化的使用案例&#xff1a; 原json字符串&#xff1a; “{“lockCount”:”{1:790,113:1,2:0,211:0,101:1328,118:8,137:0,301:0,302:0}“,“inventoryCount”:”{1:25062,113:2,2:10000,211:2,101:11034,118:9,137:40,301:903914…

如何查看电脑版Office的有效期

有时候点击Office账户看不到有效期信息&#xff0c;那么如何查看呢&#xff0c;其实用一条命令就可以查看。 首选WinR运行&#xff0c;输入cmd回车&#xff0c;然后输入下面的命令&#xff1a; cscript “C:\Program Files\Microsoft Office\Office16\ospp.vbs” /dstatus当然…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑氢储一体化协同的综合能源系统低碳优化》

这个标题涉及到考虑了多个方面的能源系统优化&#xff0c;其中关键的关键词包括"氢储一体化"、"协同"、"综合能源系统"和"低碳优化"。以下是对这些关键词的解读&#xff1a; 氢储一体化&#xff1a; 氢储存&#xff1a; 指的是氢气的存…

【开源】基于Vue+SpringBoot的企业项目合同信息系统

项目编号&#xff1a; S 046 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S046&#xff0c;文末获取源码。} 项目编号&#xff1a;S046&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 合同审批模块2.3 合…

LeetCode [简单]118. 杨辉三角

给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 public class Solution {public IList<IList<int>> Generate(int numRows) {List<IList<int>> res new …

c# 简单web api接口实例源码分析

CreateHostBuilder(args).Build().Run();这句语句处于c#webapi程序的第一句&#xff0c;它的作用是&#xff1a;启动接口的三个步骤&#xff1a; 创建一个HostBuilder对象。执行IHostBuilder.Build()方法创建IHost对象。执行IHost.Run()方法启动。 创建和配置Host&#xff08;…