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

目录

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.  喷泉模型(面向对象模型)

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


 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

优思学院|如何在企业中实施降本增效策略,实现财务突破

在当今竞争激烈的商业环境中,企业降低成本并提高效益变得至关重要。本文将深入探讨如何降本增效,以及实施这些策略的方法。 提到降本增效或提升生产效率,第一个被提出来检讨的一定是直接部门。但是如果无视于日渐臃肿的间接部门,…

全程云OA SQL注入漏洞复现

0x01 产品简介 全程云OA为企业提供日常办公管理、公文管理、工作请示、汇报、档案、知识体系、预算控制等26个功能,超过100多个子模块。为企业内部提供高效、畅通的信息渠道,同时也能大力推动公司信息系统发展,提高企业的办公自动化程度和综合…

SAS Planet软件介绍与使用教程

软件情况 SAS Planet是一位俄罗斯爱好者创建的的开源应用,该应用可以浏览与下载主流网络地图,包括Google地图、Google地球、Bing地图、Esri 地图、Yandex地图等。 该软件是基于Pascal开发的应用,目前已在github上开源,并使用了GP…

哈希表、哈希冲突解决办法

文章目录 一、什么是哈希表?二、什么是哈希冲突?怎样解决?三、哈希表的大小为什么是质数?四、链表法五、开放地址法线性探测法平方探测法双哈希(Double Hashing) 六、哈希表满了怎么办?七、完美哈希八、一些使用哈希解…

Java抽象类和接口(2)

🐵本篇文章继续对接口相关知识进行讲解 一、排序 1.1 给一个对象数组排序: class Student {public String name;public int age;public Student(String name, int age) {this.name name;this.age age;}public String toString() {return "name:…

爆肝整理! Python 网络爬虫 + 数据分析 + 机器学习教程来了

前段时间,有小伙伴多次在后台留言询问 Python 爬虫教程的问题。经过这两个多月以来的收集与整理,汇集了多个高校以及公开课视频教程,包括 python 爬虫的入门、进阶与实践,共 9G 左右。爬虫作为机器学习语料库构建的主要方式&#…

Python中的sys模块详解

1. 简介 sys模块是Python标准库中的一个内置模块,提供了与Python解释器和运行环境相关的功能。它包含了一些与系统操作和交互相关的函数和变量,可以用于获取命令行参数、控制程序的执行、管理模块和包、处理异常等。 2. 常用函数和变量 2.1 命令行参数…

虹科Pico汽车示波器 | 汽车免拆检修 | 2016款东风悦达起亚K5车发动机怠速抖动严重、加速无力

一、故障现象 一辆2016款东风悦达起亚K5车,搭载G4FJ发动机,累计行驶里程约为8.2万km。该车发动机怠速抖动严重、加速无力,同时发动机故障灯异常点亮,为此在其他维修厂更换了所有点火线圈和火花塞,故障依旧,…

自驾游汽车托运是交智商税吗?

自驾游汽车托运是交智商税吗? 亲爱的小伙伴们 你们有没有遇到过这样的困扰: 自驾游时,车辆的运输问题让你头疼不已? 是选择自己驾驶还是托运呢? 今天,我就来给大家种草一下汽车托运的好处, 让你的自驾游之旅更加轻松愉快! 1️.…

idea spring initializr创建项目报错

闲来无事就想搞个项目练练手,没想到直接给我卡在项目创建上了,一个个问题最终迎刃而解。 1.上来就给我报了个maven的错 未解析的插件: ‘org.apache.maven.plugins:maven-resources-plugin:3.3.1’ 不慌,应该是maven的路径有问题&#xff0c…

本地Nginx服务搭建结合内网穿透实现多个Windows Web站点公网访问

文章目录 1. 下载windows版Nginx2. 配置Nginx3. 测试局域网访问4. cpolar内网穿透5. 测试公网访问6. 配置固定二级子域名7. 测试访问公网固定二级子域名 1. 下载windows版Nginx 进入官方网站(http://nginx.org/en/download.html)下载windows版的nginx 下载好后解压进入nginx目…

Flask WTForms 表单插件的使用

在Web应用中,表单处理是一个基本而常见的任务。Python的WTForms库通过提供表单的结构、验证和渲染等功能,简化了表单的处理流程。与此同时,Flask的扩展Flask-WTF更进一步地整合了WTForms,为开发者提供了更便捷、灵活的表单处理方式…

Linux(9):正规表示法与文件格式化处理

简单的说,正规表示法就是处理字符串的方法,他是以行为单位来进行字符串的处理行为,正规表示法透过一些特殊符号的辅助,可以让使用者轻易的达到【搜寻/删除/取代】某特定字符串的处理程序。 正规表示法基本上是一种【表示法】&…

【运营思维】美团面试题:如何把梳子卖给寺庙和尚?

Hello 小米的小伙伴们~ 欢迎来到小米的微信公众号!今天小米要和大家分享一道美团运营面试题,题目可真是独特——“如何把梳子卖给寺庙和尚?”想必大家一定兴奋不已吧! 首先,让我们理清思路,挑战这个看似不…

[学习笔记]IK分词器的学习

IK分词器有几种模式 # 测试分词器 POST /_analyze {"text":"黑马程序员学习java太棒了","analyzer": "standard" }# 测试分词器 POST /_analyze {"text":"黑马程序员学习java太棒了","analyzer": &quo…

最新AI创作系统ChatGPT系统运营源码+DALL-E3文生图+支持OpenAI-GPT全模型+国内AI全模型

一、AI创作系统 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI…

1评论收藏分享抖店不要再无脑铺货了!这个方法学会,7天流量就起飞~

这2023年都马上过完了,你还在上一堆链接到抖店吗?要知道这样无脑铺货是拿不到大流量的。 哪今天我给大家分享一个,比较适合新手操作,也能快速起流量出单的方法。 。首先你的店铺拿不到流量,一定要先查清楚你为什么拿…

海外Leads Generation产业:中国出海群体的行业大机会

Leads Generation(简称LeadsGen)指的是集中精力吸引和开发潜在客户的营销策略。通过引导式的营销策略,企业分发内容吸引潜在客户,引导客户留下电话/邮件/姓名等信息。基于这些信息,企业可建立潜在客户数据库&#xff0…

P8A002-CIA安全模型-配置Linux描述网络安全CIA模型之可用性案例

【预备知识】 可用性(Availability) 数据可用性是一种以使用者为中心的设计概念,易用性设计的重点在于让产品的设计能够符合使用者的习惯与需求。以互联网网站的设计为例,希望让使用者在浏览的过程中不会产生压力或感到挫折,并能让使用者在使用网站功能时,能用最少的努力…

数据结构与算法编程题27

计算二叉树深度 #define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std;typedef char ElemType; #define ERROR 0 #define OK 1 #define Maxsize 100 #define STR_SIZE 1024typedef struct BiTNode {ElemType data;BiTNode* lchild, * rchild; }BiTNo…