软件工程 概述

软件 不仅仅是一个程序代码。程序是一个可执行的代码,它提供了一些计算的目的。 软件被认为是集合可执行的程序代码,相关库和文档的软件。当满足一个特定的要求,就被称为软件产品。

工程 是所有有关开发的产品,使用良好定义的,科学的原理和方法。

在这里插入图片描述

软件工程 是一门工程分支使用定义良好的科学原理,方法和程序开发软件产品。软件工程的成果是一个高效,可靠的软件产品

定义

IEEE对于软件工程的定义:

(1) 将系统、规范、可量化的方法应用于软件的开发、运行和维护;也就是说,工程在软件中的应用。
(2) 研究方法如上陈述。

Fritz Bauer(德国计算机科学家)对软件工程的定义:

软件工程是建立和使用合理的工程原理,以便经济地获得可靠且在真是机器上有效工作的软件。

软件演化

运用软件工程的原理和方法开发软件产品的过程被称为软件演化。此处包含的软件的初始开发及维护和更新,直到所需的软件产品的开发,其满足预期需求。

在这里插入图片描述

演化从需求收集过程开始。之后,开发人员创建预期软件的原型,并将其展示给用户,以便在软件产品开发的早期阶段获得他们的反馈意见。用户提出的建议,在这几个连续的更新和维护不断变化太大。这个过程改变了原来的软件,直到所需的软件来完成。

即使用户手中已有所需的软件,先进的技术和不断变化的需求迫使软件产品做出相应的改变。从头开始重新创建软件并与需求一对一是不可行的。唯一可行且经济的解决方案是更新现有的软件,使其符合最新要求。

软件演化规律

Lehman 给了软件演化规律。他把软件分为三个不同的类别:

S型(静态型): 这是一款严格按照定义的规范和解决方案工作的软件。解决方法和实现它的方法,都在编码之前立即被理解。S型软件至少受到的更高最少,因此这是最简单的。例如,用于数学计算的计算器程序。
P-型 (实用型): 这是一个程序集合的软件。这是由程序可以做什么来定义的。在这个软件中,规范可以描述,但解决方案并不明显。例如,游戏软件。
E-型(嵌入型): 该软件紧密配合实际环境的要求。这种软件具有高度的进化,因为在现实世界的情况下,法律,税收等会发生各种变化。例如,网上交易软件。

E型软件演化

Lehman 给了八项法律为E型软件演化:

不断变化 - E型软件系统必须不断适应现实世界的变换,否则它逐渐变得不那么有用。
日益复杂 - 随着 E 类软件系统的发展,其复杂性往往会增加,除非进行维护或减少工作。
维护熟悉度 - 必须不惜任何代价保留对软件的熟悉或关于它是如何开发的、为什么以这种特定方式开发等的知识,以便在系统中实施更改。
持续增长 - 为了使E型系统旨在解决某些业务问题,其实施变化的规模根据业务生活方式的变幻而增长。
降低质量 - 除非严格维护并适应不断变化的操作环境,否则 E 类软件系统的质量会下降。
反馈系统 - E型软件系统构成多环回路,多级反馈系统,必须如此对待才能成功修改或改进。
自我调节 - E型系统的演化过程是自我调节,产品分布和过程措施接近正常。
组织稳定性 - 在不断变化的 E 型系统中,平均有效的全球活动率在产品的整个生命周期内是不变的。

软件范式

软件范例参考方法和步骤,在设计的软件,该软件被执行。有提出许多方法,并在今天的工作,但我们需要看到在软件工程这些范式立场。这些可以组合成各种类别,虽然每个这些被包含在彼此:

在这里插入图片描述

编程模式是软件设计模式的一个子集是进一步的软件开发模式的一个子集。

软件开发范式

这种模式被称为软件工程范例,所有有关软件开发工程的概念被应用。它包括各种研究和需求收集,这有助于软件产品来构建。

需求收集
设计软件
编程

软件设计模式

这一模式是软件开发的一部分,包括:

设计
维护
编程
编程范式

这一模式是密切相关的软件开发编程方面。这包括:

编码测试
整合

软件工程的需求

软件工程的需要,因为较高的利率变化的用户需求及环境上的软件工作。

大型软件 - 建造一堵墙比建造房屋或建筑物更容易,同样,随着软件的规模变大,工程必须采取措施为其提供科学的过程。
可扩展性 - 如果软件过程不是基于科学和工程概念,那么重新创建软件比扩展现有软件更容易。
成本 - 由于硬件行业已经展示了它的技能和庞大的制造业,降低了计算机和电子硬件的价格。但是,如果不采用适当的流程,软件成本仍然很高。
动态性 - 软件的不断发展和适应在很大程度上取决于用户工作的环境。如果软件的性质总是在变化,则需要在现有软件中进行新的增强。这就是软件工程发挥良好作用的地方。
质量管理 - 更好的软件开发过程提供更好质量的软件产品。

优秀的软件特性

一个软件产品可以判断通过其功能和多少用户友好。这个软件必须满足以下功能:

操作
过渡
维护

一个精心设计和制作的软件预计将有以下几个特点:

操作
这告诉我们如何以及软件的操作工作。它可以在被测定:

预算
可用性
正确性
功能
可靠性
安全
安全性

过渡

这方面是重要的,当软件从一个平台转移到另一个:

可移植性
互操作性
可重用性
适应性

保养

这讲述一个软件以及如何有能力维护自己的每一个变化的环境中:

模块化
可维护性
灵活性
可扩展性
总之,软件工程是计算机科学的一个分支,它使用定义明确的工程概念来产生高效、持久、可扩展、预算内和准时的软件产品。

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

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

相关文章

负载均衡策略:L(P)策略;L(Max) ;L(LDS)

负载均衡策略:L(P)策略;L(Max) ;L(LDS) 1. Proportion load distribution L(P)策略; 策略含义:服务器不配置为可变服务率,调度器按照服务器服务率的倒数比例分配负载。即每个服务器分配到的任务量与该服务器服务率的倒数成正比 2. (L(Max)) load distribution((L…

探店小程序:解锁商业新生态,定制未来

在数字化浪潮席卷全球的今天,商业的边界正在被重新定义。随着移动互联网技术的飞速发展,探店小程序作为一种新兴的商业模式,正以其独特的优势迅速成为连接商家与消费者的桥梁。我们刚刚为一家客户成功交付了一款集分销、分润、商业模式定制开…

从EXCEL表格到WEB TABLE的实践

前言 EXCEL管理数据 Bootstrap Bootstrap 是一个流行的开源前端框架,它由 Twitter 的员工开发,用于快速开发响应式和移动设备优先的网页和应用程序。 jQuery jQuery 是一个快速、小巧且功能丰富的 JavaScript 库。它简化了 HTML 文档的遍历、事件处理…

HarmonyOS(65) ArkUI FrameNode详解

Node 1、Node简介2、FrameNode2.1、创建和删除节点2.2、对FrameNode的增删改2.3、 FramNode的查询功能3、demo源码4、总结5、参考资料1、Node简介 在HarmonyOS(63) ArkUI 自定义占位组件NodeContainer介绍了自定义节点复用的原理(阅读本本篇博文之前,建议先读读这个),在No…

独家首发 | 基于 KAN、KAN卷积的轴承故障诊断模型

往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 基于FFT CNN - BiGRU-Attention 时域、频域特征注意力融合的轴承故障识别模型-CSDN博客 基于FFT CNN - Transformer 时域、频域特征融合的轴承故障识别模型-CSDN博客 P…

【总结·反思·汇报·思考02】裸辞后,我的一些感想和感悟。

Hello,大家好! 首先,我需要向大家道个歉,对不起!因为最近发生了一些事情,博客文章一直没有更新。(90度鞠躬道歉) 那么,最近到底发生了什么呢?相信大家已经从…

解密分布式锁:保障系统一致性的关键

作者:后端小肥肠 🍇 我写过的文章中的相关代码放到了gitee,地址:xfc-fdw-cloud: 公共解决方案 🍊 有疑问可私信或评论区联系我。 🥑 创作不易未经允许严禁转载。 目录 1. 前言 2. 为何要使用分布式锁&…

HarmonyOS-高级(一)

文章目录 一次开发、多端部署自由流转 🏡作者主页:点击! 🤖HarmonyOS专栏:点击! ⏰️创作时间:2024年12月09日12点19分 一次开发、多端部署 布局能力 自适应布局 拉伸能力均分能力占比能力缩放…

河工oj第七周补题题解2024

A.GO LecturesⅠ—— Victory GO LecturesⅠ—— Victory - 问题 - 软件学院OJ 代码 统计 #include<bits/stdc.h> using namespace std;double b, w;int main() {for(int i 1; i < 19; i ) {for(int j 1; j < 19; j ) {char ch; cin >> ch;if(ch B) b …

开源架构安全深度解析:挑战、措施与未来

开源架构安全深度解析&#xff1a;挑战、措施与未来 一、引言二、开源架构面临的安全挑战&#xff08;一&#xff09;代码漏洞 —— 隐藏的定时炸弹&#xff08;二&#xff09;依赖项安全 —— 牵一发而动全身&#xff08;三&#xff09;社区安全 —— 开放中的潜在危机 三、开…

Ubuntu上使用system()函数运行不需要输入密码

使用system()运行一些终端命令的时候&#xff0c;需要sudo权限&#xff0c;也就是必须输入密码&#xff0c;那么在程序自启动的时候就无法成功启动。如果设置Ubuntu下所有操作都不需要密码&#xff0c;安全性太低&#xff0c;所以我们可以将需要用到的终端指令给予无需输入密码…

HBuilderX(uni-app)Vue3路由传参和接收路由参数!!

uni-app搭建小程序时候Vue3语法接收路由参数&#xff0c;去官方文档查看&#xff0c;是onLoad的option接收参数&#xff0c;我试过&#xff0c;接收不到&#xff0c;上网查各种方法也是不太行&#xff0c;最后自己琢磨出来了&#xff0c;这参数藏得还挺深&#xff01;&#xff…

操作系统(1)OS的基本概念

一、定义 操作系统&#xff08;OS&#xff09;是控制和管理整个计算机系统的硬件与软件资源&#xff0c;并合理地组织、调度计算机的工作与资源的分配&#xff0c;进而为用户和其他软件提供方便接口与环境的程序集合。它是计算机系统中最基本的系统软件。 二、功能 资源管理&am…

gridcontrol多行表头

效果如下 只需这样做,设置该属性为对应的值

Formality:set_svf命令

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 svf文件的全称是Setup Verification for Formality&#xff0c;即Design Compiler提供给Formality的设置验证文件&#xff0c;它的作用是为Formality的指导模式(Gui…

【蓝桥杯每日一题】重新排序

重新排序 2024-12-8 蓝桥杯每日一题 重新排序 前缀和 差分 题目大意 给定一个数组 A 和一些查询 L i , R i Li_,R_i Li,​Ri​, 求数组中第 L i L_i Li​至第 R i R_i Ri​个元素之和。 小蓝觉得这个问题很无聊, 于是他想重新排列一下数组, 使得最终每个查 询结果的和尽可能…

LabelImg使用教程

(yolov5scondaPython3123) D:\PyCharm20240724\20240724PyCharmProject>conda.bat deactivate D:\PyCharm20240724\20240724PyCharmProject>conda activate labelimg_env (labelimg_env) D:\PyCharm20240724\20240724PyCharmProject> labelimg 创建快捷键方式

洛谷 P1179 [NOIP2010 普及组] 数字统计 C语言

题目&#xff1a; https://www.luogu.com.cn/problem/P1179 思路&#xff1a;直接暴力过 代码&#xff1a; #include<iostream> using namespace std; int cnt(int x) {int sum 0;while(x){int temp x %10;if(temp 2){sum;}x x/10;}return sum; } int main(void) …

练9:进制转换

欢迎大家订阅【蓝桥杯Python每日一练】 专栏&#xff0c;开启你的 Python数据结构与算法 学习之旅&#xff01; 文章目录 1 进制转换2 例题分析 1 进制转换 ①任意制转为十进制 【示例】 ②十进制转为任意制 【法一】 【法二】 2 例题分析 题目地址&#xff1a;https:/…

【ComfyUI+多视图生成】MV-Adapter:多视图一致性图片生成(2024.12.09基于SDXL开源)

源码&#xff1a;https://github.com/huanngzh/MV-Adapter ComfyUI扩展&#xff1a;https://github.com/huanngzh/ComfyUI-MVAdapter 项目主页&#xff1a;https://huanngzh.github.io/MV-Adapter-Page/ 论文&#xff1a;2412.MV-Adapter: Multi-view Consistent Image Generat…