软件工程 概述
软件 不仅仅是一个程序代码。程序是一个可执行的代码,它提供了一些计算的目的
。 软件被认为是集合可执行的程序代码,相关库和文档的软件。当满足一个特定的要求,就被称为软件产品。
工程 是所有有关开发的产品,使用良好定义的,科学的原理和方法。
软件工程 是一门工程分支使用定义良好的科学原理,方法和程序开发软件产品。软件工程的成果是一个高效,可靠的软件产品 | |
---|---|
定义
IEEE对于软件工程的定义:
(1) 将系统、规范、可量化的方法应用于软件的开发、运行和维护;也就是说,工程在软件中的应用。
(2) 研究方法如上陈述。
Fritz Bauer(德国计算机科学家)对软件工程的定义:
软件工程是建立和使用合理的工程原理,以便经济地获得可靠且在真是机器上有效工作的软件。
软件演化
运用软件工程的原理和方法开发软件产品的过程被称为软件演化。此处包含的软件的初始开发及维护和更新,直到所需的软件产品的开发,其满足预期需求。
演化从需求收集过程开始。之后,开发人员创建预期软件的原型,并将其展示给用户,以便在软件产品开发的早期阶段获得他们的反馈意见。用户提出的建议,在这几个连续的更新和维护不断变化太大。这个过程改变了原来的软件,直到所需的软件来完成。
即使用户手中已有所需的软件,先进的技术和不断变化的需求迫使软件产品做出相应的改变。从头开始重新创建软件并与需求一对一是不可行的。唯一可行且经济的解决方案是更新现有的软件,使其符合最新要求。
软件演化规律
Lehman 给了软件演化规律。他把软件分为三个不同的类别:
S型(静态型): 这是一款严格按照定义的规范和解决方案工作的软件。解决方法和实现它的方法,都在编码之前立即被理解。S型软件至少受到的更高最少,因此这是最简单的。例如,用于数学计算的计算器程序。
P-型 (实用型): 这是一个程序集合的软件。这是由程序可以做什么来定义的。在这个软件中,规范可以描述,但解决方案并不明显。例如,游戏软件。
E-型(嵌入型): 该软件紧密配合实际环境的要求。这种软件具有高度的进化,因为在现实世界的情况下,法律,税收等会发生各种变化。例如,网上交易软件。
E型软件演化
Lehman 给了八项法律为E型软件演化:
不断变化 - E型软件系统必须不断适应现实世界的变换,否则它逐渐变得不那么有用。
日益复杂 - 随着 E 类软件系统的发展,其复杂性往往会增加,除非进行维护或减少工作。
维护熟悉度 - 必须不惜任何代价保留对软件的熟悉或关于它是如何开发的、为什么以这种特定方式开发等的知识,以便在系统中实施更改。
持续增长 - 为了使E型系统旨在解决某些业务问题,其实施变化的规模根据业务生活方式的变幻而增长。
降低质量 - 除非严格维护并适应不断变化的操作环境,否则 E 类软件系统的质量会下降。
反馈系统 - E型软件系统构成多环回路,多级反馈系统,必须如此对待才能成功修改或改进。
自我调节 - E型系统的演化过程是自我调节,产品分布和过程措施接近正常。
组织稳定性 - 在不断变化的 E 型系统中,平均有效的全球活动率在产品的整个生命周期内是不变的。
软件范式
软件范例参考方法和步骤,在设计的软件,该软件被执行。有提出许多方法,并在今天的工作,但我们需要看到在软件工程这些范式立场。这些可以组合成各种类别,虽然每个这些被包含在彼此:
编程模式是软件设计模式的一个子集是进一步的软件开发模式的一个子集。
软件开发范式
这种模式被称为软件工程范例,所有有关软件开发工程的概念被应用。它包括各种研究和需求收集,这有助于软件产品来构建。
需求收集
设计软件
编程
软件设计模式
这一模式是软件开发的一部分,包括:
设计
维护
编程
编程范式
这一模式是密切相关的软件开发编程方面。这包括:
编码测试
整合
软件工程的需求
软件工程的需要,因为较高的利率变化的用户需求及环境上的软件工作。
大型软件 - 建造一堵墙比建造房屋或建筑物更容易,同样,随着软件的规模变大,工程必须采取措施为其提供科学的过程。
可扩展性 - 如果软件过程不是基于科学和工程概念,那么重新创建软件比扩展现有软件更容易。
成本 - 由于硬件行业已经展示了它的技能和庞大的制造业,降低了计算机和电子硬件的价格。但是,如果不采用适当的流程,软件成本仍然很高。
动态性 - 软件的不断发展和适应在很大程度上取决于用户工作的环境。如果软件的性质总是在变化,则需要在现有软件中进行新的增强。这就是软件工程发挥良好作用的地方。
质量管理 - 更好的软件开发过程提供更好质量的软件产品。
优秀的软件特性
一个软件产品可以判断通过其功能和多少用户友好。这个软件必须满足以下功能:
操作
过渡
维护
一个精心设计和制作的软件预计将有以下几个特点:
操作
这告诉我们如何以及软件的操作工作。它可以在被测定:
预算
可用性
正确性
功能
可靠性
安全
安全性
过渡
这方面是重要的,当软件从一个平台转移到另一个:
可移植性
互操作性
可重用性
适应性
保养
这讲述一个软件以及如何有能力维护自己的每一个变化的环境中:
模块化
可维护性
灵活性
可扩展性
总之,软件工程是计算机科学的一个分支,它使用定义明确的工程概念来产生高效、持久、可扩展、预算内和准时的软件产品。 | |
---|---|
相关文章:

软件工程 概述
软件 不仅仅是一个程序代码。程序是一个可执行的代码,它提供了一些计算的目的。 软件被认为是集合可执行的程序代码,相关库和文档的软件。当满足一个特定的要求,就被称为软件产品。 工程 是所有有关开发的产品,使用良好定义的&…...

CountDownLatch阻塞后countDown未执行会如何?
背景 某项目封装了 Kafka 消费者 API,根据传递的消费者线程数,创建 N 个消费者线程同时消费对应 topic 的数据,并在线程启动后收集到全局列表中,方便在程序调用 stop 流程时逐个停止。 主控类在创建 Kafka 消费线程时使用了 Cou…...
k8s,operator
相对更加灵活和编程友好的管理“有状态应用”的解决方案,它就是:Operator 会议一下有状态应用: 比如数据库集群,数据挂载需要有顺序维护拓扑关系的应用 使用statefulSet这个对象来描述。 CRD又是什么? Operator的工作…...

使用 pyperclip 进行跨平台剪贴板操作
简介:pyperclip 是一个轻量级的 Python 库,支持在不同操作系统(Windows、macOS、Linux)中进行剪贴板的复制和粘贴。这个库的设计简单易用,非常适合需要频繁进行文本复制粘贴操作的场景。 历史攻略: 使用f…...
20 设计模式之职责链模式(问题处理案例)
一、什么是职责链模式 职责链模式是一种行为型设计模式,它允许将请求沿着处理者的链进行传递,直到有一个处理者能够处理它为止。换句话说,它将请求的发送者和接收者解耦,使得多个对象都有机会处理这个请求,从而避免了将…...
SpringBoot3集成MybatisPlus3和knife4j(swagger3兼容增强版)
针对Swagger2规范和OpenAPI3规范的说明: 在Spring Boot框架中,Knife4j对于服务端将Spring的开放接口解析成Swagger2或者OpenAPI3规范的框架,也是依赖的第三方框架组件。说明如下: Swagger2规范:依赖Springfox项目,该项目目前几乎处于停更状态,但很多老项目依然使用的是该…...

【MIT-OS6.S081作业1.3】Lab1-utilities primes
本文记录MIT-OS6.S081 Lab1 utilities 的primes函数的实现过程 文章目录 1. 作业要求primes (moderate)/(hard) 2. 实现过程2.1 代码实现 1. 作业要求 primes (moderate)/(hard) Write a concurrent version of prime sieve using pipes. This idea is due to Doug McIlroy, in…...

游戏引擎学习第35天
开场介绍 今天的任务是继续改进一个虚拟的瓦片地图系统,使其适合处理更大的世界。我们希望这个系统能管理大范围的游戏世界,其中包含按需存储的小区域。昨天,我们介绍了“内存区域”的概念,用于管理持久性存储。我们计划今天继续…...
learn-(Uni-app)输入框u-search父子组件与input输入框(防抖与搜索触发)
1.父子组件u-search (1)父组件 <!-- 父组件 --> <template> <div><searchBar change"change" search"search"></searchBar> </div> </template> <script> // 子组件搜索 import…...

设置IMX6ULL开发板的网卡IP的两种方法(临时生效和永久有效两种方法)
设置开发板网卡的IP,有两种方法。 方法一:临时生效 第一种方式是临时设置,只有本次有效,重启后又要重新设,命令为: ifconfig eth0 192.168.5.9设置成功后可以使用ifconfig命令来查看已设置的 IP 地址。 …...
流量转发利器之Burpsuite概述(1)
目录 一、Burpsuite Burp Suite Spider 的主要特点: 在 Burp Suite 中使用 Spider: Spider 的用例: 限制: 声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章 声明:本文主要用作技…...

Transformer入门(6)Transformer编码器的前馈网络、加法和归一化模块
文章目录 7.前馈网络8.加法和归一化组件9.组合所有编码器组件构成完整编码器 7.前馈网络 编码器块中的前馈网络子层如下图所示: 图1.32 – 编码器块 前馈网络由两个带有ReLU激活函数的全连接层组成。全连接层(Fully Connected Layer)有时也…...
element-plus中的resetFields()方法
resetFields()确实是Element Plus中的方法,该方法主要用于重置表单,将其值重置为初始值,并移除校验结果。以下是对该方法的详细解释: 一、resetFields方法的作用 在Vue3结合Element Plus开发时࿰…...

【过滤器】.NET开源 ORM 框架 SqlSugar 系列
目录 0、 过滤器介绍 1、表过滤器 (推荐) 1.1 手动添加过滤器 1.2 禁用、清空、备份和还原 1.3 联表查询设置 1.4 动态添加 2、修改和删除用过滤器 2.1 局部设置 2.2 全局设置 (5.1.4.62) 3、子查询用过滤器 4、联表过滤…...

Jmeter Address already in use: connect 解决
做压测接口时,并发一段时间后,会报java.net.BindException: Address already in use: connect 原因: windows提供给TCP/IP链接的端口为 1024-5000,并且要四分钟来循环回收它们,就导致在短时间内跑大量的请求时将端口占…...

C#常见错误—空对象错误
System.NullReferenceException:未将对象引用设置到对象的实例 在C#编程中,System.NullReferenceException是一个常见的运行时异常,其错误信息“未将对象引用设置到对象的实例”意味着代码试图访问一个未被初始化或已被设置为null的对象的成…...

Leetcode数学部分笔记
Leetcode数学部分笔记 1. 回文数2. 加一3. 阶乘后的零4. x 的平方根5. Pow(x, n) 1. 回文数 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数 是指正序(从左向右)和倒序&…...

微信小程序web-view 嵌套h5界面 实现文件预览效果
实现方法:(这里我是在小程序里面单独加了一个页面用来下载预览文件) 安装 使用方法请参考文档 npm 安装 npm install weixin-js-sdk import wx from weixin-js-sdk预览 h5界面代码 <u-button click"onclick" type"primary" :loading"…...

【汽车】-- 燃油发动机3缸和4缸
3缸和4缸燃油发动机是小轿车常见的发动机配置。以下从结构特点、性能、经济性等方面对两者进行对比,并分析优缺点及使用注意事项: 1. 结构与运行原理 3缸发动机 特点:少一个气缸,内部零部件更少,整体结构更紧凑。优点…...
轻量级的 HTML 模板引擎
Mustache 简介:Mustache 是一个非常简单的逻辑少的模板引擎,支持 HTML 文件中的占位符替换。它不会执行复杂的逻辑,只支持简单的变量替换。 安装: npm install mustache示例: const Mustache require(mustache);c…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...

家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...