《软件工程》复试问答题总结

软件系统的三个测试阶段:

第一阶段:发现和解决BUG 集中在发现bug,考研测试设计能力,发现bug之后如何清晰表述定级,以及验证,之后举一反三尽早发现更多类似bug
第二阶段:质量的管理 多做质量数据的统计与分析,并且针对问题进行溯源并且对开发进行考核,对测试也进行考核,最后推动开发自测
第三阶段: 推动全面的质量提升 针对开发流程进行梳理,并且对提交测试之后应该做的一些事情做好推动例如代码静态扫描,针对测试能力的提升也应拓展,并且把握发布环节的质量把控,对于团队来说更因注重外网的监控,外网事故与问题手机,跟进与反向推动,对用户的问题和满意度进行反馈,确保最后在运营方面的质量,慢慢形成一个良性的循环。
 

事务指的是满足ACID特性的一组操作,那ACID具体指的是:
​ 事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性。ACID是Atomic(原子性) Consistency(一致性)Isolation(隔离性)Durability(持久性)的英文缩写。

Atomic(原子性):指整个数据库事务是不可分割的工作单位。只有使据库中所有的操作执行成功,才算整个事务成功;事务中任何一个SQL语句执行失败,那么已经执行成功的SQL语句也必须撤销,数据库状态应该退回到执行事务前的状态。
Consistency(一致性):指数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。例如对银行转帐事务,不管事务成功还是失败,应该保证事务结束后ACCOUNTS表中Tom和Jack的存款总额为2000元。
Isolation(隔离性):指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。
Durability(持久性):指的是只要事务成功结束,它对数据库所做的更新就必须永久保存下来。即使发生系统崩溃,重新启动数据库系统后,数据库还能恢复到事务成功结束时的状态。
 

面向对象和面向过程软件工程有哪些区别:
面向对象方法学是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。

​ 面向对象的分析OOA,OOA强调直接针对问题域客观存在的各项事物设立OOA模型中的对象.问题域有哪些值得考虑的事物,OOA模型中就有哪些对象.00A对问题域的观察、分析和认识是很直接的,对问题域的描述也是很直接的.它所采用的概念及其术语与问题域中的事物保持了最大 程度的数据一致,不存在语言上的鸿沟。

​ 传统方法学又称生命周期方法学或结构化范型。一个软件从开始计划起,到废弃不用 止,称为软件的生命周期。在传统的软件工程方法中,软件的生存周期分为需求分析、总体设计、详细设计、编程和测试几个阶段。

​ 面向过程软件工程使用结构化分析技术,面向数据流自顶向下求精的技术来完成需求分析阶段。在全局范围内以功能、数据或数据流为中心来进行分析。主要阶段有实体—联系图、状态转换图的分析设计。这些方法的分析结果不能直接地映射问题域,而是经过了不同程度的转化和重新组合。

​ 传统方法编程以过程为中心,把大的程序划分为若干个相对独立、功能简单的程序模块,强调过程,强调功能和模块化,通过一系列过程的调用和处理完成相应的任务。
面向对象编程以对象为中心,是对一系列相关对象的操纵,发送消息给对象,由对象执行相应的操作并返回结果,强调对象。理论上,面向对象的程序设计方法将产生更好的模块内聚和耦合特性,使得软件更易于重用与维护。
 

瀑布模型的优缺点?:
瀑布模型(Waterfall Model) 是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈。

优点:

有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究,从而提高了大型软件项目开发的质量和效率。

缺点:

1)开发过程一般不能逆转,否则代价太大;

2)实际的项目开发很难严格按该模型进行;

3)客户往往很难清楚地给出所有的需求,而该模型却要求如此。

4)软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心。

什么是软件工程?目前有哪几种主要的软件工程方法?
​ 概括地说,软件工程是指导计算机软件开发和维护的一门工程学科.采用工程的概念、原理、技术、和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

​ 但软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己的定义。

​ 主要有传统方法也称为经典软件工程方法或生命周期方法或结构化范型和面向对象方法。
 

喷泉模型的优缺点?:
喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。喷泉模型主要用于面向对象的软件项目,软件的某个部分通常被重复多次,相关对象在每次迭代中随之加入渐进的软件成分。各活动之间无明显边界,例如设计和实现之间没有明显的边界,这也称为“喷泉模型的无间隙性”。

优点:喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动。该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。

缺点:由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。
 

软件有哪几种维护类型?:
一、正确性维护

正确性维护又叫做改正性维护,是指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误。这方面的维护工作量要占整个维护工作量的17%~21%。所发现的错误有的不太重要,不影响系统的正常运行,其维护工作可随时进行;而有的错误非常重要,甚至会影响整个系统的正常运行,其维护工作必须制定计划,进行修改,并且要进行复查和控制。

二、适应性维护

适应性维护是指使应用软件适应信息技术变化和管理需求变化而进行的修改。这方面的维护工作量占整个维护工作量的18%~25%。由于目前计算机硬件价格不断下降,各类系统软件层出不穷,人们常常为改善系统硬件环境和运行环境而产生系统更新换代的需求;企业的外部市场环境和管理需求的不断变化也使得各级管理人员不断提出新的信息需求。这些因素都将导致适应性维护工作的产生。进行这方面的维护工作也要像系统开发一样,有计划、有步骤地进行。

三、完善性维护

完善性维护又叫做改善性维护,这是为扩充功能和改善性能而进行的修改,主要是指对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征。这些功能对完善系统功能是非常必要的。另外,它还包括对处理效率和编写程序的改进,这方面的维护占整个维护工作的50%~60%,比重较大,也是关系到系统开发质量的重要方面。这方面的维护除了要有计划、有步骤地完成外,还要注意将相关的文档资料加入到前面相应的文档中。

四、预防性维护

为了改进应用软件的可靠性和可维护性,为了适应未来的软/硬件环境的变化,应主动增加预防性的新的功能,以使应用系统适应各类变化而不被淘汰。例如将专用报表功能改成通用报表生成功能,以适应将来报表格式的变化。这方面的维护工作量占整个维护工作量的4%左右。

                        

软件需求分析的任务是什么?:
一。 确定对系统的综合要求

功能需求
性能需求
可靠性和可用性需求
出错处理需求
接口需求
约束
逆向需求
将来可能提出的要求
二 。分析系统的数据要求
任何一个软件系统本质上都是信息处理系统,系统必须处理的信息和系统应该产生的信息在很大程度上决定了系统的面貌,对软件设计有深远影响,因此,必须分析系统的数据要求,这是软件需求分析的一个重要任务。
分析系统的数据要求通常采用建立数据模型的方法(举例)。

三。 导出系统的逻辑模型
综合上述两项分析的结果可以导出系统的详细的逻辑模型,通常用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型。
四。 修正系统开发计划
根据在分析过程中获得的对系统的更深入更具体的了解,可以比较准确地估计系统的成本和进度,修正以前制定的开发计划。
 

简述数据字典,数据流图?:
数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。
画数据流图一般步骤:
1.考虑源点,终点
2.考虑处理
3.考虑数据流、数据储存
4.考虑事物功能分解

数据字典(data dictionary)是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。作用是在软件分析和设计的过程中给人提供关于数据的描述信息。
数据流图与数据字典的关系:
数据字典和数据流图共同构成系统的逻辑模型,没有数据字典,数据流图就不严格,没有数据流图数据字典也难于发挥作用。只有数据流图和对数据流图中每个元素的精确定义放在一起,才能共同构成系统的规格说明。
数据字典的组成
1.数据流
2.数据流分量(数据元素)
3.数据存储
4.处理
 

索引的设计原则?:
索引设计不合理或者缺少索引都会对数据库和应用程序的性能造成障碍。高效的索引对于获得良好的性能非常重要。设计索引时,应该考虑一下的准则:
1)索引并非越多越好,一个表中如有大量的索引,不仅占用磁盘空间,而且会影响INSERT,DELETE,UPDATE等语句的性能,因为当表中的数据更改的同事,索引会进行调整和更新。
2)避免对经常更新的表进行过多的索引,并且索引中的列尽可能的少。而对于经常用与查询的字段应该创建索引,但要避免添加不必要的字段。
3)数据量小的表最好不要使用索引,由于数据较少,查询花费的时间可能比遍历索引的时间还要短,索引可能不会产生优化效果。
4)在条件表达式中经常用到的不同值较多的列上建立索引,在不同值很少的列上不要建立索引。比如在学生表的“性别”字段上只有“男”与“女”两个不同值,因此就无需建立索引。如果建立索引不但不会提高查询效率,反而会严重降低数据更新速度。
5)当唯一性时某种数据本身的特征时,指定唯一索引。使用唯一索引需能确保定义的列的数据完整性,以提高查询速度。
6)在频繁进行排序或分组(即进行group by 或者 order by操作)的列上建立索引,如果待排序的列有多个,可以在这些列上建立组合索引。
 

解析高内聚低耦合?:
**耦合和内聚的的评判标准是强度,耦合越弱越好,内聚越强越好。**耦合指模块与模块之间的关系,最弱的耦合就是通过一个主控模快来协调n哥模块进行运作。例如:客户要求在界面上增加一个字段,你的项目要修改几个地方呢?如果你只要修改项目文档,那么你的开发构架就是最低强度的耦合,而这种设计 成熟的开发团队都已经做到了,他们使用开发工具通过项目模型驱动数据库和各层次的代码,而不是直接修改那些代码;内聚指的是模块内部的功能,最强的就是功能不能拆分,也就是原子化。

简单来说: 高内聚、低耦合讲的是程序单位协作的问题, 你可以这样理解,一个企业的管理, 最理想的情况就是各个部门各司其职,井然有序,互不干涉, 但是需要沟通交流的时候呢, 各个部门都可以找到接口人专门负责部门沟通以及对外沟通。在软件里呢, 就是说各个模块要智能明确, 一个功能尽量由一个模块实现, 同样,一个模块最好只实行一个功能。这个是所谓的“内聚”; 模块与模块之间、系统与系统之间的交互,是不可避免的,但是我们要尽量减少由于交互引起的单个模块无法独立使用或者无法移植的情况发生, 尽可能多的单独提供接口用于对外操作, 这个就是所谓的“低耦合”。但是实际的设计开发过程中,总会发生这样那样的问题与情况,真正做到高内聚、低耦合是很难的,很多时候未必一定要这样,更多的时候“最适合”的才是最好的,不过,理解思想,审时度势地使用,融会贯通,灵活运用,才是设计的王道。

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

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

相关文章

Vue3自定义指令!!!

通过自定义指令实现菜单显示和权限控制问题。 一、新建一个在src目录下创建包directives,在包中创建一个ts文件。 import { useStore } from "/store/pinia";function hasRoles(role: any) {const pinaRoles useStore().roles;if (typeof role "s…

【RPG Maker MV 仿新仙剑 战斗场景UI (四)】

RPG Maker MV 仿新仙剑 战斗场景UI 四 三级战斗指令菜单效果代码完成效果 下篇预告 三级战斗指令菜单 仙剑1中三级战斗的菜单内容如下:使用、投掷、装备这三项。 效果 在RMMV中原始菜单中是没有这三级菜单的,因此需要重新进行添加进去。 代码 这里贴…

分布式思想

1、单体架构设计存在的问题 传统项目采用单体架构设计,虽然可以在一定的程度上解决企业问题,但是如果功能模块众多,并且将来需要二次开发.由于模块都是部署到同一台tomcat服务器中,如果其中某个模块代码出现了问题,将直接影响整个tomcat服务器运行. 这样的设计耦合性太高.不便…

19.ADC模数转换器知识点+AD单通道AD多通道应用程序示例

0. 江协科技/江科大-STM32标准库开发-各章节详细笔记-查阅传送门_江协科技stm32笔记-CSDN博客文章浏览阅读2.9k次,点赞44次,收藏128次。江协科技/江科大-STM32标准库开发-各章节详细笔记-传送门至各个章节笔记。基本上课程讲的每句都详细记录&#xff0c…

Python转C++的童鞋看这里

一、前言 Python学完了,很多人都去学了C。在学习C之前,建议大家先打好基础,对C和Python的区别先了解了解,会对后续的C学习提供很大的帮助。 二、特点区分 1. Python Python是一种简单而高效的语言,它已经帮你封装好了…

Python-OpenCV-边缘检测

摘要: 本文详细介绍了Python-OpenCV的边缘检测技术,包括基础知识回顾、功能实现、技巧与实践、常见问题与解答等,为读者提供了全面深入的教程。 阅读时长:约60分钟 关键词:Python, OpenCV, 边缘检测, Canny, Sobel …

群晖 Synology Photos DSM7 自定义文件夹管理照片

背景 众所周知,目前群晖DSM7中使用Synology Photos做照片管理时,个人照片只能默认索引 /home/Photos 文件夹,但是如果个人照片很多或者用户很多时,共享文件夹/homes 所在的存储空间就会不够用 当然,如果你的存…

李彦宏“程序员将不再存在”言论被周鸿祎驳斥,网友怒怼:先把百度程序员都开除了

在 3 月 9 日央视的《对话》开年说节目上,百度创始人、董事长兼 CEO 李彦宏表示,基本上以后不会存在“程序员”这种职业了,因为只要会说话,人人都会具备程序员的能力。 “未来的编程语言只会剩下两种,一种叫做英文&am…

Python和RPA之间的区别和联系

Python是实现RPA的工具之一,且RPA要复杂的多,远不是会Python这么简单。 要理解RPA和Python的区别,先看它们各自做什么。 1、什么时候会用到RPA? 比如你的财务同事需要做财务对账,发票报销,税务申报等&…

【刷题训练】LeetCode125. 验证回文串

验证回文串 题目要求 示例 1: 输入: s “A man, a plan, a canal: Panama” 输出:true 解释:“amanaplanacanalpanama” 是回文串。 示例 2: 输入:s “race a car” 输出:false 解释:“rac…

C#常用数据操作方法详解

文章目录 C#常用数据操作方法详解字符大师:String类的使用艺术字符串截取:Substring示例寻找字符串:IndexOf示例字符串替换:Replace示例字符串分割:Split示例转小写:ToLower示例 数学机械师:Mat…

Java 设计模式系列:行为型-观察者模式

简介 观察者模式是一种行为型设计模式,又被称为发布-订阅(Publish/Subscribe)模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。 观察者…

全面解析 Axios 请求库的基本使用方法

Axios 是一个流行的基于 Promise 的 HTTP 请求库,用于在浏览器和 Node.js 中进行 HTTP 请求。它提供了简单易用的 API,可以发送各种类型的请求(如 GET、POST、PUT、DELETE等),并处理响应数据,Axios 在前端工…

MySQL常见的数据类型

一、数值型 5 种整型 tinyint、smallint、mediumint、int 和 bigint,主要区别就是取值范围不同,还可以在类型前添加一个 限制词 unsigned,不允许添加负数。 3 种浮点型:不能精确存放 float 和 double,可以精确存放 de…

朋友,代码库的“健身方案”要不要了解一下?

你有没有想过,你的代码库可能正面临“健康危机”—— 代码臃肿、低效交付、BUG隐藏、潜藏的安全风险…… “健身达人”上线 如果你的开发、安全和运维团队像是三位“健身达人”,那么极狐GitLab的DevSecOps线上成熟度评估,就是他们的“健身教…

09、用数据变量等控制 vue 项目标签中 CSS 样式的五种方法

通过 vue 中的变量值控制标签/组件样式 Ⅰ、通过 Vue3 的数据变量来控制 h1 标签样式:1、代码为:2、截图为: Ⅱ、通过 vue3 的 computed 来控制 h1 标签样式:1、代码为:2、截图为: Ⅲ、通过 vue3 的 comput…

MySQL gh-ost DDL 变更工具

文章目录 1. MDL 锁介绍2. 变更工具3. gh-ost 原理解析4. 安装部署5. 操作演示5.1. 重点参数介绍5.2. 执行变更5.3. 动态控制 6. 风险提示 1. MDL 锁介绍 MySQL 的锁可以分为四类:MDL 锁、表锁、行锁、GAP 锁,其中除了 MDL 锁是在 Server 层加的之外&am…

SpringBoot vue轮胎批发系统

SpringBoot vue轮胎批发系统 系统功能 首页 图片轮播 轮胎商品 评论 公告信息 搜索 购物车 立即购买 客服中心 登录注册 个人中心 我的订单 我的地址 我的收藏 后台管理 登录 个人中心 用户管理 轮胎分类管理 轮胎商品管理 公告信息管理 客服中心管理 轮播图管理 订单管理 …

Linux--基本知识入门

一.几个基本知识 终端: CtrlAltT 或者桌面/文件夹右键,打开终端切换为管理员: sudo su 退出:exit查看内核版本号: uname -a内核版本号含义: 5 代表主版本号;13代表次版本号;0代表修订版本号;30代表修订版本的第几次微调;数字越大表示内核越新. 二.目录…

Canny详解

Canny 边缘检测是一种经典的图像处理技术,被广泛应用于计算机视觉和图像处理领域。它由 John F. Canny 在 1986 年提出,是一种多阶段的边缘检测算法,具有高精度和低错误率的特点。 Canny 边缘检测的步骤: 高斯滤波(Ga…