当前位置: 首页 > news >正文

软件工程知识总结梳理

🔥🔥宏夏Coding网站,致力于为编程学习者、互联网求职者提供最需要的内容!网站内容包括求职秘籍,葵花宝典(学习笔记),资源推荐等内容。在线阅读:https://hongxiac.com🔥🔥

1.软件与软件组成?软件工程常用的8个质量要素的定义?


计算机科学对软件的定义:软件是在计算机系统支持下,能够完成特定功能和性能的程序、数据和相关的文档。软件可形式化表示为:软件=知识+程序+数据+文档

用户关注软件质量的外部属性,如软件的正确性、可靠性、有效性、安全性、可用性、可维护性、可移植性、可复用性等。

软件工程师更关注软件质量的内部属性,通过提高软件内部属性,如模块化、一致性、简洁性、可测试性、自文档化等,支持和保证软件外部质量属性的实现。

2. 软件工程常用的八个质量要素的定义和解释。


(1)正确性(correctness)。

软件满足需求规约及完成用户目标的程度。

(2)可用性(usability)。

学习和使用软件的难易程度,包括:操作软件、为软件准备输入数据,解释软件输出结果等。

(3)可靠性(reliability)。

软件完成预期功能,成功运行的概率。软件可靠性反映了软件无故障工作的状况。

(4)有效性(efficiency)。

软件系统利用计算机的时间资源和空间资源完成系统功能的能力。

各种计算机软件无不将系统的时/空开销和网络环境下的信息传输开销作为衡量软件质量的一项重要技术指标。

(5)可维护性(maintainability)。

软件制品交付用户使用后,能够对它进行修改,以便改正潜伏的缺陷、改进性能和其他属性,使软件制品适应环境的变化等等。

(6)可移植性(portability)。

将软件安装在不同计算机系统或环境的难易程度。

(7)安全性(security)。

控制或保护程序和数据不受破坏的机制,以防止程序和数据受到意外的或蓄意的存取、使用、修改、毁坏或泄密。在网络环境下计算机犯罪、恶作剧增多,软件安全受到人们的高度重视。

(8)可复用性(reusebility)。

概念或功能相对独立的一个或一组相关模块定义为一个软构件。

软构件可以在多种场合应用的程度称为构件的可复用性。

3. 什么是软件工程?构成软件工程的主要要素是什么?影响软件工程技术进步的动力是什么?


软件工程定义(IEE93):将系统的、规范的、可量化的方法应用于软件的开发、运行和维护的过程,以及上述方法的研究。

构成软件工程的五要素:项目、人、过程、方法和工具。

软件工程发展的主要要素是信息社会的广泛需求,软、硬件技术的进步,软件从业人员的工作,软件产业的兴起,软件学科建设和人才培养。

4. 遵循的软件工程过程的原则有哪些?

1)抽象(Abstraction),抽取事物最基本的特性和行为。

2)信息隐藏(Infomation Hiding),将模块中的软件设计决策封装起来的技术。

3)模块化(Modulation),模块是程序中逻辑上相对独立的成分,一个独立的编程单位。

4)局部化(Localization),一个物理模块内集中逻辑上相互关联的计算资源。

5)一致性(Consistency),整个软件系统(包括文档和程序)的各个模块均应使用一致的概念、符号和术语。

6)完全性(Completeness),软件系统完全实现系统所需功能,不遗漏任何重要成分的程度。

7)可验证性(Verification)系统分解应该遵循系统可验证的原则,即容易检查、测试、评审,以便保证系统的正确性.

5. 软件开发的主要方法?

针对不同的软件开发任务,选择适宜的软件开发方法。

1)结构化方法。用分层的数据流图和控制流图开发系统的功能模型和数据模型,是按照系统功能模型,自顶向下,逐步求精,最终得到组成系统的模块及它们之间的控制关系。

2)面向对象方法。是以对象、对象关系构建软件系统的方法,包括面向对象分析、设计、编码和测试几个方面。

3)形式化开发方法。以软件开发的正确性为目标,软件需求规约用形式化需求规约语言描述,如VDM的META-IV,CSP,Z语言等。

6. 软件过程模型有哪三种类型,又分别包括哪些模型?

第1种是将软件开发过程的分解与软件生存周期划分绑定在一起的瀑布模型及其变形;

第2种是软件开发过程的分解与软件生存周期划分相对独立的通用过程模型;

第3种是专用模型,包括基于构件的软件过程模型、Web应用软件过程模型、面向方面AOP的软件过程模型。

7. 阐述瀑布模型,分析瀑布模型的优缺点,说明哪些软件项目的开发可采用瀑布模型,哪些不适合? 有哪些改进的软件过程模型?

瀑布模型也称软件生存周期模型,将软件开发过程分解为可行性研究、软件需求、设计、编码、测试、运行与维护、退役几个阶段,既是软件开发过程的分解,也是软件生存周期的阶段划分。

优点:思路简洁、明确,上一阶段的开发结果是下一阶段开发的输入,相邻两个阶段具有因果关系,紧密联系。对于规模小、软件需求比较稳定的项目和子系统,采用瀑布模型能够显著提高软件开发的质量和效率。

缺点:1)必须要求客户和系统分析员确定软件需求后才能进行后续的软件开发工作。

2)需求确定后,用户和软件项目负责人要等待相当长的时间才能得到一份软件的最初版本。

3)上游的过失给软件制品带来的缺陷会误导下游的开发活动。

大型软件项目获取全部需求是困难的,不适合使用瀑布模型。

针对第3个缺点,提出带反馈的瀑布模型和V字型瀑布模型。针对第2个缺点提出增量过程,模型增量过程模型的基本思想是,开发人员与用户协商将需求分解,划分为一系列增量,并为增量排序,急需的增量排在前面先开发,不急需的放在后面。每个增量都历经需求、设计、编码、测试、移交几个阶段。针对第1个缺点提出原型建造模型,软件开发人员根据客户提出的软件(全部或部分)定义,快速的开发一个原型。原型向客户展示了待开发软件系统的全部或部分功能和性能,在征求客户对原型意见的过程中,进一步修改、完善、确认软件系统的需求并达到一致的理解。

8. 阐述通用软件开发过程的五项活动,分析通用软件过程的优点。

通用软件开发过程划分为沟通、策划、建模、构建、部署5项。

沟通--包括项目立项,软件系统工程师和领域专家、用户的交流。

策划--包括风险分析、项目规划、成本估算、制定项目计划、项目管理。

建模--包括软件开发的需求建模和软件体系结构设计。

构建--包括软件开发的构件获取或构件设计、编码和测试。

部署--包括发布软件制品、现场安装、运行、维护以及用户培训。

优点:通用软件过程模型用”沟通、策划、建模、构建、部署”5项活动构建软件过程模型,在软件项目管理等普适性活动的支持下进行软件开发,增强了软件开发能力,突出了软件工程特色,具有较大的灵活性和适应性。

9. 试论述 软件质量要素与 软件工程遵循原则之间的关联关系。

抽象和信息隐藏、模块化和局部化的原则支持软件工程的可靠性、可移植性和可复用性,有助于提高软件产品的质量和开发效率。

一致性原则支持系统的正确性和可靠性。

系统分解应该遵循系统可验证的原则,即容易检查、测试、评审,以便保证系统的正确性。

使用一致性、完全性、可验证性的原则可以帮助人们实现一个正确的系统。

10. 极限编程的10项实践的概念


1)完整的团队,2)增量式规划,3)客户参与全过程,4)简单设计,5)结对编程,6)测试驱动开发,7)适时重构,8)持续集成,9)代码集体所有,10)其他。

11. 原型是什么?在软件工程中发挥什么作用?有哪两类原型?

原型是软件的一个早期可运行的版本,专注于展示软件的可见部分,反映最终系统的部分重要特性,用于实验和评价,以指导进一步的软件开发和生产。

主要作用在于统一客户和软件开发人员对项目需求的理 解,有助于需求的定义和确认。

原型主要有两类:一类是抛弃式原型,也称实验性原型,利用原型定义和确认软件需求后,原型就完成了任务;另一类是应用原型,也称进化性原型,利用原型确认软件需求后,对原型进一步加工、完善,使之成为系统的一个组成部分。

更多章节内容,可以前往宏夏Coding

相关文章:

软件工程知识总结梳理

🔥🔥宏夏Coding网站,致力于为编程学习者、互联网求职者提供最需要的内容!网站内容包括求职秘籍,葵花宝典(学习笔记),资源推荐等内容。在线阅读:https://hongxiac.com&…...

Mybatis自动映射Java对象 与 MySQL8后的JSON数据

文章目录 Mybatis自动映射Java对象 与 MySQL8后的JSON数据1.转化成为正常Json类型1.1 JsonTypeHander1.2 ListJsonTypeHandler 负责List<T> 类型1.3 实体类1.4 mapper1.5 测试类 2. 存储为携带类型的Json Mybatis自动映射Java对象 与 MySQL8后的JSON数据 1.转化成为正常…...

【JavaScript】深拷贝和浅拷贝

在 JavaScript 中&#xff0c;深拷贝&#xff08;Deep Copy&#xff09;和浅拷贝&#xff08;Shallow Copy&#xff09;是两种不同的对象复制方法&#xff0c;它们涉及到如何复制对象的属性以及如何处理对象内部的嵌套引用。以下是它们的解释&#xff1a; 浅拷贝&#xff08;S…...

【SLAM】10.纵观SLAM,对比方案和未来方向

"天下谁人配白衣” SLAM方案研究方向 SLAM方案 站在历史角度&#xff0c;看一下为SLAM的发展带来贡献的方案&#xff1a; 2007年—A.J.Davison—MonoSLAM 视觉SLAM的先驱&#xff0c;建立在EKF基础上&#xff0c;此前基本无法在线运行&#xff0c;意义较大&#xff1b;…...

PyTorch中DistributedDataParallel使用笔记

1. 基本概念 在使用DistributedDataParallel时有一些概率必须掌握 多机多卡含义world_size代表有几台机器&#xff0c;可以理解为几台服务器rank第几台机器&#xff0c;即第几个服务器local_rank某台机器中的第几块GPU 单机多卡含义world_size代表机器一共有几块GPUrank第几…...

前端面试的话术集锦第 18 篇博文——高频考点(HTTP协议 TLS协议)

这是记录前端面试的话术集锦第十八篇博文——高频考点(HTTP协议 & TLS协议),我会不断更新该博文。❗❗❗ 1. HTTP 请求中的内容 HTTP请求由三部分构成,分别为: 请求行 首部 实体 请求行大概长这样GET /images/logo.gif HTTP/1.,基本由请求方法、URL、协议版本组成,…...

SQL Server 数据库变成单个用户怎么办

参考技术A 1、首先我们打开SQL SERVER的管理控制台&#xff0c;找到一个要设置角色的用户。 2、下面我们将为这个用户赋予创建数据库的角色&#xff0c;我们先用这个用户登录管理工具看一下是否具有创建用户的权限。 3、进行数据库创建的时候&#xff0c;提示如下的错误&…...

错过成考报名,今年你还有这两种方式升学!

2023年广东成人高考已经报名结束啦 错过报名或没有抢到考位的同学不用伤心 你还有另外两个提升学历的机会 开放大学or小自考 今天一起来了解一下吧~ 什么是开放大学&#xff1f; 开放教育其实也就是开放大学&#xff0c;也就是我们所说的中央广播电视大学&#xff0c;现在…...

【2023】从事务的特征以及解决方式上分析MySQL是如何保证事务的

----以MySQL的InnoDB介绍 目录 前言事务&#xff0c;事务到底是什么&#xff1f; 一、事务的特征&#xff1a;二、事务特征具体保证1、Redo Log(重做日志) ---保证事务的持久性1.1、&#x1f7e1;刷盘时机1.2、redo log记录形式1.3、redo log日志的好处 2、undo log(回滚日志)…...

MTR 网络连通性测试工具 基础入门 整理

MTR MTR的全称是 my traceroute&#xff0c;是一个集合了 ping 与 traceroute 功能的网络诊断工具&#xff0c;广泛应用于链路测试。相对于 traceroute 只会做一次链路跟踪测试&#xff0c;mtr会对链路上的相关节点做持续探测并给出相应的统计信息。因此&#xff0c;mtr能避免…...

Linux安装mysql数据库并实现主从搭建

一.环境说明 【环境说明】&#xff1a; 192.168.110.161 mysql-master ##网络配置到位&#xff0c;防火墙关闭&#xff0c;selinux关闭 192.168.110.162 mysql-slave ##网络配置到位&#xff0c;防火墙关闭&#xff0c;selinux关闭 两台主机&#xff0c;操作系统是centos7…...

windows使用小技巧之windows照片查看器无法显示此图片

碰到过好几次了&#xff0c;以前没有理会&#xff0c;今天特意去查了一下解决方法&#xff0c;不然确实不太方便。 1、打开“颜色管理”-“高级”&#xff1a; 2、将“设备配置文件”选择为“Agfa&#xff1a;Swop Standard” 3、关闭&#xff0c;重新打开图片&#xff0c;好…...

ez_pz_hackover_2016

ez_pz_hackover_2016 Arch: i386-32-little RELRO: Full RELRO Stack: No canary found NX: NX disabled PIE: No PIE (0x8048000) RWX: Has RWX segments32位&#xff0c;保护全关 int chall() {size_t v0; // eaxint result; // eaxchar s[1024]…...

解决方案| anyRTC远程检修应用场景

背景 在这个科技飞速发展的时代&#xff0c;各行各业都要求高效运转。然而&#xff0c;当出现问题时&#xff0c;我们却常常因为无法及时解决而感到困扰&#xff0c;传统解决问题的方式是邀请技术人员现场解决问题&#xff0c;如果技术人员解决不了&#xff0c;还要邀请专家从…...

IC芯片测试:如何对芯片静态功耗进行测试?

静态功耗也叫静态电流&#xff0c;是指芯片在静止状态下的电流或者是指芯片在不受外界因素影响下自身所消耗的电流。静态功耗对于芯片来说是衡量一款芯片的功耗与效率非常重要的指标。 传统手动测试静态功耗只需在芯片的输入端串上一台万用表&#xff0c;然后对芯片各个端口添加…...

Redis面试二“缓存击穿是什么”

条件 缓存击穿是应为Redis某个缓存数据设置了过期时间&#xff0c;而刚好有大并发数据请求这个数据&#xff0c;导致DB有大量请求&#xff0c;引发DB崩溃。 第一种方法就是设置互称锁 当缓存失效时不立即删除缓存而是用setnx设置一个互斥锁&#xff0c;当操作完成后在load db…...

python使用apscheduler每隔一段时间自动化运行程序

apscheduler使用比较简单&#xff0c;每隔一段时间自动化运行的步骤是&#xff1a; 创建调度器scheduler BlockingScheduler()添加任务scheduler.add_job(函数名, interval, minutes30) # 每隔30分钟运行一次直接执行&#xff1a;scheduler.start()示例代码 from datetime i…...

2023 Sui Builder House全球之旅圆满收官

2023年的最后一场Builder House于上周在新加坡举行&#xff0c;包括主题演讲、小组讨论和研讨会等聚焦Sui的现在和未来的活动。其中&#xff0c;zkLogin是本次活动的最大亮点。作为一种新的Sui原语&#xff0c;zkLogin允许用户使用Web2身份验证创建帐户&#xff0c;有望推动大规…...

OpenCV自学笔记二十三:K近邻算法

K近邻算法&#xff08;K-Nearest Neighbors&#xff0c;简称KNN&#xff09;是一种常用的监督学习算法&#xff0c;可以用于分类和回归问题。在OpenCV中&#xff0c;KNN算法有相应的函数实现&#xff0c;主要包含在ml模块中。 KNN算法的原理很简单&#xff0c;它基于样本之间的…...

ChatGLM-中英对话大模型-6B试用说明

ChatGLM-中英对话大模型-6B试用说明 搭建环境下载模型测试模型结果 搭建环境 pip install modelscope1.4.3 -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html pip install protobuf3.20.0 transformers4.27.1 icetk cpm_kernels下载模型 from modelsco…...

提示词工程完全指南

提示词工程完全指南 Prompt Engineering Complete Guide 来源参考&#xff1a;OpenAI 官方指南、DAIR.AI Prompt Engineering Guide、IBM、Google Research、斯坦福 CS224N 整理用于学习交流 目录 什么是提示词工程六大核心策略&#xff08;OpenAI 官方&#xff09;基础技巧进…...

vLLM-v0.17.1GPU算力适配:华为昇腾CANN 7.0与vLLM对接可行性验证

vLLM-v0.17.1 GPU算力适配&#xff1a;华为昇腾CANN 7.0与vLLM对接可行性验证 1. vLLM框架简介 vLLM是一个专为大型语言模型(LLM)设计的高性能推理和服务库&#xff0c;由加州大学伯克利分校的天空计算实验室(Sky Computing Lab)最初开发&#xff0c;现已发展成为学术界和工业…...

Llama-3.2V-11B-cot部署教程:双卡4090一键启动视觉推理工具

Llama-3.2V-11B-cot部署教程&#xff1a;双卡4090一键启动视觉推理工具 1. 项目概述 Llama-3.2V-11B-cot是基于Meta多模态大模型开发的高性能视觉推理工具&#xff0c;专为双卡4090环境优化。它解决了传统大模型部署复杂、视觉权重加载失败等痛点&#xff0c;让普通用户也能轻…...

3项突破重构浏览体验:从卡顿到丝滑的技术革命

3项突破重构浏览体验&#xff1a;从卡顿到丝滑的技术革命 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Windows and MacOS/Raspi/Android/Special builds are in different repositories, links are towards the top of the README.md. …...

payload缺了2个

soc和mcu收发验证中。其他block里面都有&#xff0c;只缺了2个。每个block里都是一样的rte的read和write那么问题在底软&#xff0c;不在我们ap/cp。如图&#xff0c;id6和9这里缺了。底软更新后有了&#xff1a;代码里面每个都一样的&#xff0c;问题不在这里&#xff1a;FUNC…...

L1-083 谁能进图书馆,python解法

题目&#xff1a;为了保障安静的阅读环境&#xff0c;有些公共图书馆对儿童入馆做出了限制。例如“12 岁以下儿童禁止入馆&#xff0c;除非有 18 岁以上&#xff08;包括 18 岁&#xff09;的成人陪同”。现在有两位小/大朋友跑来问你&#xff0c;他们能不能进去&#xff1f;请…...

当几何优化遇上时空建模:玩转TTAO-SE-CNN-LSTM黑科技

基于三角形拓扑结构优化算法优化卷积神经网络-长短时记忆网络结合SE注意力机制的数据分类预测(TTAO-SE-CNN-LSTM) 三角形拓扑结构优化算法TTAO优化长短时记忆网络隐藏层神经元数目、初始学习率和L2正则化参数 基于MATLAB环境 替换自己的数据即可 首先通过卷积神经网络提取数据…...

从.proto文件到gRPC服务:手把手教你用Protobuf 3.21.11构建跨语言API

从.proto文件到gRPC服务&#xff1a;Protobuf 3.21.11构建跨语言API实战指南 在微服务架构盛行的今天&#xff0c;不同语言编写的服务之间如何高效通信成为开发者必须面对的挑战。想象这样一个场景&#xff1a;你的Go语言后台服务需要与Python数据分析服务共享用户数据&#xf…...

Three.js 开发环境搭建避坑指南:从零开始用Parcel构建你的第一个3D场景

Three.js 开发环境搭建避坑指南&#xff1a;从零开始用Parcel构建你的第一个3D场景 第一次接触Three.js时&#xff0c;最令人头疼的往往不是3D编程本身&#xff0c;而是那些看似简单却暗藏玄机的环境配置问题。记得我刚开始学习时&#xff0c;光是让一个立方体在浏览器中显示出…...

FireRedASR Pro Java集成开发指南:SpringBoot微服务语音处理实战

FireRedASR Pro Java集成开发指南&#xff1a;SpringBoot微服务语音处理实战 如果你是一个Java后端开发者&#xff0c;最近接到了要给系统加上语音识别功能的需求&#xff0c;比如处理用户上传的客服录音&#xff0c;或者分析会议纪要&#xff0c;那你可能正在寻找一个既稳定又…...