软件工程知识总结梳理

🔥🔥宏夏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

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

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

相关文章

Nodejs 第十六章(ffmpeg)

FFmpeg 是一个开源的跨平台多媒体处理工具,可以用于处理音频、视频和多媒体流。它提供了一组强大的命令行工具和库,可以进行视频转码、视频剪辑、音频提取、音视频合并、流媒体传输等操作。 FFmpeg 的主要功能和特性: 格式转换:…

Network: use `--host` to expose

vite 启动项目提示 Network: use --host to expose 同事不能通过本地IP地址访问项目 解决方案:package.json中启动命令配置本地IP地址 vite --host 192.168.200.252

Twitter图片数据优化的细节

Twitter个人数据优化:吸引更多关注和互动 头像照片在Twitter上,头像照片是最快识别一个账号的方法之一。因此,请务必使用公司的标志或与品牌相关的图片。建议尺寸为400x400像素。 为了建立强大的品牌形象和一致性,强烈建议在所有…

虹科教您 | 可实现带宽计量和延迟计算的时间敏感网络测试工具RELY-TSN-LAB操作指南与基本功能测试

1. RELY-TSN-LAB产品概述 时间敏感网络(TSN)能够合并OT和IT世界,这将是真正确保互操作性和标准化的创新性技术。这项技术的有效开发将显著降低设备成本、维护、先进分析服务的无缝集成以及减少对单个供应商的依赖。为了在这些网络中实现确定性,需要控制…

Kotlin Android中错误及异常处理最佳实践

Kotlin Android中错误及异常处理最佳实践 Kotlin在Android开发中的错误处理机制以及其优势 Kotlin具有强大的错误处理功能:Kotlin提供了强大的错误处理功能,使处理错误变得简洁而直接。这个特性帮助开发人员快速识别和解决错误,减少了调试代…

12:STM32---RTC实时时钟

目录 一:时间相关 1:Unix时间戳 2: UTC/GMT 3:时间戳转化 二:BKP 1:简历 2:基本结构 三: RTC 1:简历 2: 框图 3:RTC基本结构 4:RTC操作注意 四:案例 A:读写备份寄存器 1:连接图 2: 步骤 3: 代码 B:实时时钟 1:连接图 2:函数介绍 3:代码 一:时间相关 1:Un…

Linux -- 使用多张gpu卡进行深度学习任务(以tensorflow为例)

在linux系统上进行多gpu卡的深度学习任务 确保已安装最新的 TensorFlow GPU 版本。 import tensorflow as tf print("Num GPUs Available: ", len(tf.config.list_physical_devices(GPU)))1、确保你已经正确安装了tensorflow和相关的GPU驱动,这里可以通…

【数据结构练习】链表面试题集锦二

目录 前言: 1.链表分割 2.相交链表 3.环形链表 4.环形链表 II 前言: 数据结构想要学的好,刷题少不了,我们不仅要多刷题,还要刷好题!为此我开启了一个必做好题锦集的系列,每篇大约5题左右。此…

“高级前端开发技术探索路由的使用及Node安装使用“

目录 引言1. Vue路由的使用2. VueNode.js的安装使用总结 引言 在当今互联网时代,前端开发技术日新月异,不断涌现出各种新的框架和工具。作为一名前端开发者,我们需要不断学习和探索新的技术,以提升自己的开发能力。本文将深入探讨…

【C# Programming】值类型、良构类型

值类型 1、值类型 值类型的变量直接包含值。换言之, 变量引用的位置就是值内存中实际存储的位置。 2、引用类型 引用类型的变量存储的是对一个对象实例的引用(通常为内存地址)。 复制引用类型的值时,复制的只是引用。这个引用非常小&#xf…

前后端分离毕设项目之产业园区智慧公寓管理系统设计与实现(内含源码+文档+教程)

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…

短视频抖音账号矩阵系统源码开发者自研(四)

抖音是一款备受欢迎的短视频APP,拥有数亿的用户,其中包括了大量的粉丝。为了让更多的人能够发现和观看到你的视频,抖音SEO是必不可少的一环,特别是对于拥有企业或个人品牌的用户来说。在这个过程中,抖音SEO源码的开源部…

SQL注入脚本编写

文章目录 布尔盲注脚本延时注入脚本 安装xampp,在conf目录下修改它的http配置文件,如下,找到配置文件: 修改配置文件中的默认主页,让xampp能访问phpstudy的www目录,因为xampp的响应速度比phpstudy快得多&am…

Linux C 网络基础

为什么需要网络通信? 进程间通信解决的是本机内通信 网络通信解决的是任意不同机器的通信 实现网络通信需要哪些支持 1.通信设备:网卡(PC机自带); 路由器和交换机; 光纤…

在Scrapy框架中使用隧道代理

今天我要和大家分享一些实战经验,教你如何在Scrapy框架中使用隧道代理。如果你是一个热爱网络爬虫的开发者,或者对数据抓取和处理感兴趣,那么这篇文章将帮助你走上更高级的爬虫之路。 首先,让我们简单介绍一下Scrapy框架。Scrapy…

【计算机网络】——应用层

// 图片取自王道 仅做交流学习 一、基本概念 应用层概述 协议是 网络层次模型 中多台主机之间 同层之间进行通信的规则。是一个水平概念 垂直空间上,向下屏蔽下层细节,向上提供服务接入,多台主机之间同层之间形成一条逻辑信道。 应用层的…

编译ctk源码

目录 前景介绍 下载The Common Toolkit (CTK) cmake-gui编译 vs2019生成 debug版本 release版本 前景介绍 CTK(Common Toolkit)是一个用于医学图像处理和可视化应用程序开发的工具集,具有以下特点: 基于开源和跨平台的Qt框…

Spring 6.0 新特性

文章目录 Spring的发展历史AOTGraalVMSpringBoot实战AOTRuntimeHints案例分析RuntimeHintsRegistrar SpringBoot中AOT核心代码 Spring的发展历史 AOT Spring 6.0的新特性Ahead of Time(AOT)编译是一种技术,可以提前将Spring应用程序编译成原…

【SpringCloud】微服务技术栈入门1 - 远程服务调用、Eureka以及Ribbon

目录 远程服务调用RestTemplate Eureka简要概念配置 Eureka 环境设置 Eureka ClientEureka 服务发现 Ribbon工作流程配置与使用 Ribbon饥饿加载 远程服务调用 RestTemplate RestTemplate 可以模拟客户端来向另外一个后端执行请求 黑马给出的微服务项目中,有两个 …

yolov5使用最新MPDIOU损失函数,有效和准确的边界盒回归的损失,优于GIoU/EIoU/CIoU/EIoU(附代码可用)

文章目录 1. 论文1.1. 主要目的1.2. 设计思路2 代码3.总结1. 论文 MPDIoU: A Loss for Efficient and Accurate Bounding Box Regression (一个有效和准确的边界框损失回归函数) 论文地址 1.1. 主要目的 当预测框与边界框具有相同的纵横比,但宽度和高度值完全不同时,大多数…