软件工程期末考试

news2025/1/11 0:52:00

软件工程

一、简答题(5个)

  1. 什么是软件危机?软件危机产生的原因是什么?怎样克服软件危机?你认为摆脱软件危机了吗?

软件危机:是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:(1)如何开发软件,以满足对软件日益增长的需求;(2)如何维护数量不断膨胀的已有软件。

原因

(1)开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。

软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。

(3)尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。

克服

(1)对计算机软件应该有正确的认识;

(2)要吸取和借鉴人类长期从事各种工程项目积累的原理、概念、技术和方法;

(3)积极开发和使用计算机辅助开发软件;

(4)探索更好更有效的管理措施和手段对开发过程进行控制和管理.

  1. CMM全称是什么?级别?CMM对软件工程有什么益处?

全称:CMM是Capability Maturity Model的简称,即软件过程能力成熟度模型。

CMM五个级别:

1)初始级:过程无序、混乱,无过程模型。项目能否成功完全取决于开发人员的个人能力。

2)可重复级:软件机构建立了基本项目管理过程。可跟踪成本、进度、功能和质量。

3)已定义级:软件过程文档化、标准化。软件开发成本、进度、功能和质量均受到控制。

4)已管理级:软件过程和产品建立了定量的质量目标,软件过程可度量、可预测。

5)持续优化级:软件机构能持续不断地改进软件过程,保持思想新、过程新、技术新。

益处:CMM是用于评价软件机构的软件过程能力和成熟度。给出从混乱、个人的过程到成熟的规范化过程的一个框架。

  1. 软件需求的目的、任务、属性?

软件需求是:

(1)用户解决问题或达到目标所需条件或权能(Capability)。

(2)系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能。

(3)一种反映上面(1)或(2)所述条件或权能的文档说明。

软件需求的特性有

(1)完整性,是指每一项需求都必须将所要实现的功能描述清楚,不能丢失一些信息;

(2)正确性,是指每一项需求都必须准确地陈述其要开发的功能;

(3)可行性,是指需求是否能被正常地实现,每一项目需求都必须是可以在已知系统和环境的权能和限制范围内实施的;

(4)必要性,是指每一项需求都应把客户真正所需要的和最终所需遵从的标准记录下来;

(5)划分优先级;

(6)无二义性;

(7)可验证性。

需求分析主要是确定待开发软件的功能、性能、数据和界面等要求,具体来说可由如下几点:

确定软件系统的综合要求;

(2)分析软件系统的数据要求;

(3)导出系统的逻辑模型;

(4)修正项目开发计划;

(5)开发一个原型系统。

  1. 软件的生命周期分为几个阶段?开发要求->报备截止(8个阶段)

答:一个软件从定义到开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为软件生存周期。它包括制定计划(问题定义)、可行性研究、需求分析、总体设计、详细设计、程序编写(编码)、综合测试、运行维护等。

  1. 模块独立性的标准,如何衡量?

(1)衡量模块独立的两个标准

衡量模块的独立性的标准是两个定性的度量标准:耦合性和内聚性。耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。

(2)衡量模块独立的两个标准的含义

耦合性

也称块间联系,指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。

内聚性

又称块内联系,指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语句之间、程序段之间)联系得越紧密,则它的内聚性就越高。

  1. 测试?黑盒测试:基于功能?白盒测试:基于结构?黑盒测试与白盒测试的区别是什么?

(1)白盒测试:白盒测试也称为结构测试,将软件看成透明的白盒,根据程序的内部结构和逻辑来设计测试用例,对程序的路径和过程进行测试,以程序的源代码为基础进行测试而不使用用户界面。

(2)黑盒测试:黑盒测试是在完全不考虑软件的内部结构和特性的情况下,测试软件的外部特性。黑盒测试只检查程序功能是否符合需求规格说明书的规定。

(3)两者的区别

①白盒测试可以有效地发现程序内部的编码和逻辑错误,但无法检验出程序是否完成了规定的功能。

②黑盒测试可以根据程序的规格说明检测出程序是否完成了规定的功能,但未必能够提供对代码的完全覆盖。

③一般来说在单元测试阶段白盒法使用较多而在集成测试阶段则较多用到黑盒方法。

  1. 什么是软件工程?内容?目标?

软件工程:用科学知识和技术原理来定义、开发、维护软件的一门学科。

软件工程的目标:是成功的建造一个大型软件系统,所谓成功是要达到以下几个目标:

a.付出较低的开发成本;

b.面到要求的软件功能;

c.取得较好的软件性能;

d.开发的软件易于移植;

e.需要较低的维护费用;

f.能按时完成开发任务,及时交付使用;

g.开发的软件可靠性高;

软件工程的内容:

1)软件开发技术:软件开发方法、软件开发过程、软件开发工具和环境。

2)软件开发管理:软件管理学、软件经济学、软件心理学。

  1. 什么是数据字典?数据字典与数据流图的关系?

数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序源数据的目录。

关系:数据字典的作用是给数据流图上每个成分加以定义和说明。换句话说,数据流图上所有的成分的定义和解释的文字集合就是数据字典,数据流图是描述各个子块之间如何进行数据传递,数据字典相当于数据库中的对照表。

  1. 什么是软件的可维护性?常见的软件维护活动有哪几类?

定义:软件能够被理解、校正、适应及增强功能的容易程度;

常见的软件维护活动有:改正型、适应型、完善型、预防型。

二、计算题

1.PERT

工程评估评审技术的PERT - 加权方法(三点估算法)

最可能时间(Tm):基于最可能的资源所获得的活动持续时间。

最乐观时间(To):基于活动的最好情况所获得的活动持续时间。

最悲观时间(Tp):基于活动的最差情况所获得的活动持续时间。

PERT分析方法对以上3种估算进行加权平均,来计算:

预计活动持续时间(Te)

标准差

方差

概率值:

1. 项目经理正在进行一个图书馆信息查询系统的项目估算,他采用Delphi 的专家估算方法,邀请了 3 位专家进行估算, 第一位专家给出了2 万元、 7 万元、 12 万元的估算值, 第二位专家给出了 4 万元、 6 万元、 8 万元的估算值,第三位专家给出了2 万元、 6 万元、 10 万元的估算值,试计算这个项目的成本估算值。

答:专家一:E1 = ( 2+4*7+12 )/ 6 = 7

专家二: E2 = ( 4+4*6+8 )/ 6 = 6

专家三: E3 = ( 2+4*6+10 )/ 6 = 6

Ei = ( 7+6+6 )/ 3=6.33 (万元)

2. 对一个软件任务进行进度估算时,A是乐观者,估计用6天完成,B 是悲观者,估计用24 天完成, C 是有经验者,认为最有可能用12 天完成,那么这个任务的历时估算介于10 天到16 天的概率是多少

解:E = (6+4*12+24)/6 = 13,

δ = (24-6)/6 = 3

E -δ= 10

E +δ= 16

所以任务历时估算介于

10 — 16 天的概率为: 68.3%

3. 根据下面的任务流程图和下表给出的项目历时估算值,采用PERT方法估算,求出项目在14.57天内完成的概率的近似值

E1 = (2+4*3+6)/ 6 = 3.33

E2 = (4+4*6+8)/ 6 = 6

E3 = (3+4*4+6)/ 6 = 4.17

E = E1 + E2 + E3 = 13.5天 δ=1.07

E-δ = 12.43 E+δ = 14.57, 即在[12.43,14.57]的概率为:68.3%

所以,项目在14.57天内完成的概率为:50%+68.3%/2=84.15%

4.设存在任务A 和任务 B,它们的最乐观值分别为 8 和 2,最悲观值分别为 22 和 10,最可能值分别为 11 和 6,试说明包含此两个任务的项目在20 天内完成的概率近似值

2.关键路径

数据结构与算法中AOE网求关键路径,略关键路径可以不止一条

3.MVC

经典MVC模式中,M(model)是指业务模型,V(view)是指用户界面,C(controller)则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。其中,View的定义比较清晰,就是用户界面。

4.定额估算法

计算公式:

T:活动历时

Q:任务工作量

R:人力数量

S:工作效率(贡献率)

一个软件项目的规模估算是12 人月,如果有4 个开发人员,而每个开发人员的开发效率是 1.5,则该项目工期为多少?

答案:由题意可知,该项目有4 个开发人员,即 R=4 人;而每个开发人员的开发效率是 1.5,即 S=1.5;该项目的规模估算为 12 人月,即 Q=12 人月,则由公式可知: T=Q/R×S=12 人月/(4×1.5)=2 月。

5.决策树分析

EMV:损失期望值,是决策树的一种计算值,根据预期结果、发生的概率计算出一种期望的损益。例如:某行动成功的概率是50%,收益是10,则EMV = 10*50% = 5

1.某旅游胜地拟建一饭店,提出甲、乙两方案,甲为建高档饭店,投资25000万元,乙为建中档饭店,投资 13000 万元,建成后饭店要求 15 年收回投资。根据预测该地区饭店出租率较高的概率是 0.7,较低的概率是 0.3。

若建高档饭店,当出租率较高时,每年可获利3000 万元,出租率不高时,将亏损 300 万元;

若建中档饭店,出租率较高时,每年可获利1200万元,出租率不高时,可获利 300 万元。

另据预测,在15年中,情况会发生变化,必须将15年分成前6年和后9年两期进行考虑。如果在前6年,本地区旅游业发展较快,则后9年可发展得更好,饭店出租率高的概率可上升至 0.9,如前 6 年发展较慢,则后 9 年的情况相应较差,饭店出租率低的概率为 0.9。

请决策应采用哪一个方案。

解:按已知条件,可列出决策表如表1(前 6 年)、表 2(后 9 年)所示。

按题意画出决策树,如图2所示。

先计算后9 年的收益期望值(从树叶往树根计算):

点④:[3000×0.9+(-300)×0.1]×9=24030

点⑤:[3000×0.1+(-300)×0.9]×9=270

点⑥:[1200×0.9+300×0.1]×9=9990

点⑦:[1200×0.1+300×0.9]×9=3510

再计算两个方案全部收益期望值:

点②:[3000×0.7+(-300)×0.3]×6+24030×0.7+270×0.3=28962

点③:(1200×0.7+300×0.3)×6+9990×0.7+3510×0.3=13626

收益期望值由两个部分构成,前一部分是方案前6年的收益期望值,后一部分是加上后9年的收益期望值。但是,所有的两段的收益期望值不是简单的相加,获得后 9 年收益期望值的可能性是建立在前 6 年的基础上的,即点④的 24030 万元必须乘以获得此值的概率 0.7,点⑤的 270 万元乘以获得此值的概率0.3,点⑥和点⑦也必须乘上各状态获得的概率。

各方案实际收益期望值:

高档饭店28962-25000(投资)=3962(万元)

中档饭店 13626-13000(投资)=626(万元)

结论:根据期望值准则进行决策,应采用建高档饭店的方案,净收益期望值为 3962 万元。将建中档饭店的方案删除。

2.下面以南方医院供应公司为例,看一看如何利用决策树作出合适的生产能力计划。

南方供应公司是一家制造医护人员的设备的公司。该公司正在考虑扩大生产能力。它可以有以下几个选择:1、什么也不做;2、建一个小厂;3、建一个中型厂;4、建一个大厂。新增加的设备将生产一种新型的大褂,目前该产品的潜力或市场还是未知数。如果建一个大厂且市场较好就可实现$100,000的利润。如果市场不好则会导致$90,000的损失。但是,如果市场较好,建中型厂将会获得$ 60,000,小型厂将会获得$40,000,市场不好则建中型厂将会损失$10,000,小型厂将会损失$5,000。当然,还有一个选择就是什么也不干。最近的市场研究表明市场好的概率是0.4,也就是说市场不好的概率是0.6。参下图:

在这些数据的基础上,能产生最大的预期货币价值(EMV)的选择就可找到。

EMV(建大厂)=(0.4) *($100,000)+(0.6)*(-$90,000) = -$14,000

EMV(中型厂)=(0.4) *($ 600,000))+(0.6)* (-$10,000) = +$18,000 (EMV值最大)

EMV(建小厂)=(0.4) *($40,000)+(0.6)*(-$5,000) = +$13,000

EMV(不建厂)=$0

6.计划偏差计算

三、分析题

四、发挥题

结合科研方向,谈一谈软件工程的方法学,在专业上的应用?

五、作业题

平时作业。(重点:图要看懂,数据字典怎么来的?)

  1. 活动图

基本元素

(1)初始节点和活动终点:实心圆表示初始节点(只有一个),圆圈内加一个实心圆来表示活动终点(可有多个)。

(2)活动节点:用来表示一个活动。

(3)转换:一条带箭头的直线来表示。一旦前一个活动结束马上转到下一个活动(无触发转换)。

(4)分支与监护条件:分支是用菱形表示的,它有一个进入转换(箭头从外指向分支符号),一个或多个离开转换(箭头从分支符号指向外)。而每个离开转换上都会有一个监护条件,用来表示满足什么条件的时候执行该转换。

具体图形

  1. 用例图

(1)参与者(Actor):与应用程序或系统进行交互的用户、组织或外部系统。用一个小人表示

(2)用例(Use Case):用例就是外部可见的系统功能,对系统提供的服务进行描述。用椭圆表示

(3)子系统(Subsystem):用来展示系统的一部分功能,这部分功能联系紧密。

  1. 泳道图(带泳道的活动图)

(1)泳道表明每个活动是由哪些人或哪些部门负责完成。

(2)每个泳道代表特定含义的状态职责的部分。在活动图中,每个活动只能明确的属于一个泳道,泳道明确的表示了哪些活动是由哪些对象进行的。

(3)每个泳道都有一个与其他泳道不同的名称。

(4)每个泳道可能由一个或者多个类实施,类所执行的动作或拥有的状态按照发生的事件顺序自上而下的排列在泳道内。

在活动图中泳道区分了负责活动的对象,它明确地表示了哪些活动是由哪些对象进行的。

在包含泳道的活动图中每个活动只能明确地属于一个泳道。

  1. 类的属性的表示方式

在UML类图中,类使用包含类名、属性(field) 和方法(method) 且带有分割线的矩形来表示,比如下图表示一个Employee类,它包含name,age和email这3个属性,以及modifyInfo()方法。

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

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

相关文章

QT opencv 学习day01 安装opencv ,

1. 安装opencv 教程 看这个大佬的链接 (实测有用)(操作简单) 链接: (1条消息) 【OpenCV】windows Qt环境搭建_logani的博客-CSDN博客 2. 使用opencv 的注意事项 1.首先要在工程文件 .pro 文件里面 加入路径&#x…

Springboot+Echarts实现数据可视化项目

首先,得明白 springboot 需要写什么内容? 先理解下 MVC 模式! bean 层 也称之为 Dao 层 包括XxxMapper.java(数据库访问接口类),XxxMapper.xml(数据库链接实现);mapper 层 也称之为 model层,模型层,entity层,实体层 就是数据库表的映射实体类,存放POJO对象;servi…

Nginx反向代理与负载均衡

一.何为反向代理? 在介绍反向代理之前,先来了解一下正向代理。 正向代理:如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代…

【前端利器炫酷的CodePen】

前言众所周知,前端是一个很容易将自己的劳动成果呈现出来的一个职位,无论是写1行代码还是写100行代码,都可以通过页面来进行呈现,在工作中的劳作成果也是可以一眼就呈现给客户、用户的。比如一些精美的页面,炫酷的特效…

java集合: ArrayList的底层机制和使用方法

文章目录引言一、Arraylist是什么?二、Arraylist的底层扩容机制(面向面试)1.扩容机制2.扩容过程:3步骤3.注意事项三、使用步骤1.ArrayList类引入2.添加元素3.删除元素4.计算大小5.其他的引用类型6.ArrayList 排序7.ArrayList的遍历方法8.Java ArrayList 方法表格引言…

HTML5+CSS3(六)-全面详解(学习总结---从入门到深化)

目录 CSS简介 CSS概念 为什么需要CSS CSS和HTML之间的关系 语法 学习效果反馈 CSS的引入方式 内联样式(行内样式) 内部样式 外部样式(推荐) 导入式(了解) import和link的区别 学习效果反馈 CSS样式…

代码随想录day53 动态规划

代码随想录day53 动态规划 题392 判断是否子序列 1,与最长公共子序列类似,最后公共子序列的长度要等于s的长度。区别在于当遍历元素不想等的时候,对于字符串s(子序列)不需要删除,对于字符串t,…

Android---CoordinatorLayout原理

目录 CoordinatorLayout 的作用 CoordinatorLayout 的功能 1 处理子控件之间依赖下的交互 2 处理子控件之间的嵌套滑动 3 处理子控件的测量与布局 4 处理子控件的事件拦截与响应 CoordinatorLayout 下的事件传递机制 CoordinatorLayout 协调者布局。 CoordinatorLayout…

Java基础之序列化与反序列化

序列化:将java对象转化为字节序列的过程。 反序列化:将字节序列转化为java对象的过程。 在进行远程通信时,如果需要传输java对象:发送方需要把java对象转换为字节序列(也就是序列化),接收方需要将字节序列转换为java对…

PHP设计模式总括篇

系列文章目录 第一章 工厂模式 第二章 抽象工厂模式 第三章 单列模式 第五章 责任链模式 第六章 策略模式 一,定义 “每一个模式描述了一个在我们周围不断重复发生的**问题,以及该问题的解决方案的核心。**这样,你就能一次又一次地使用该方…

都React V18了,还不会正确使用React Hooks吗,万字长文解析Hooks的常见问题

前言 今天主要想说一下react hooks,react hooks是react v16.8 之后引入的API,现在react都已经到V18了,hooks怎么还能不会用呢? 首先hooks引入的目的是给函数式组件增加数据状态管理的能力,同时增加代码的可复用能力。…

C++的类型转换详解

目录前言一、C语言中的类型转换二、为什么C需要四种类型转换三、C强制类型转换3.1 static_cast3.2 reinterpret_cast3.3 const_cast3.4 dynamic_cast向上转型向下转型四、RTTI(了解)总结前言 在C语言就已经存在了类型转化,但是其中的一些类型转换存在一些问题&…

4.7--贪心--多机调度问题

贪心选择--最长处理时间作业优先&#xff08;n个作业&#xff0c;m台相同机器&#xff09; 当n<m时&#xff0c;只要将机器i的[0, ti]时间区间分配给作业i即可&#xff0c;算法只需要O(1)时间。 当n>m时&#xff0c;首先将n个作业依其所需的处理时间从大到小排…

开发者开年变富,如何迈出第一步?| 「钞能力养成指北」前传

写在前面 &#xff1a; 面对全面放开后多样的消费机会&#xff0c;开发者们如何在保障品质生活的同时&#xff0c;借助开源工具&#xff0c;全面、科学地规划和管理个人财务&#xff0c;把握资金动向&#xff0c;避开消费陷阱&#xff1f; LigaAI 特邀我司 Nerd4me 大佬分享其个…

Apollo planning之交规决策技术

Apollo studio 官网&#xff1a;Apollo开发者社区 (baidu.com) 目录 1 双层状态机 2 决策模块的解析 2.1 参考路径 2.2 交规决策 2.3 路径决策 2.4 速度决策 2.5 场景的调度与管理 3 交规决策实现代码解读 3.1 遍历交规配置文件&#xff0c;存储信息 3.2 交规决…

分布式(三)

三、API 网关详解 1. 网关及作用 主要功能&#xff1a;请求过滤 网关可以为我们提供请求转发、安全认证&#xff08;身份/权限认证&#xff09;、流量控制、负载均衡、降级熔断、日志、监控等功能。 2. 常见的网关系统 2.1 Netflix Zuul &#xff08;1&#xff09;Zuul 是…

进军存储赛道—BNB Greenfield:Web3 数据所有权和效用新标准

最近BNB Chain 自豪地宣布发布BNB Greenfield 白皮书。BNB Greenfield为Web3时代的数据引入了一个全新的结构和经济模式。现在&#xff0c;数据的所有权、使用权和货币化&#xff0c;首先对用户以及BNB Chain生态系统中的所有参与者来说是可能的。BNB Greenfield 使用 BNB 作为…

OSCP_VULHUB_symfonos-2(失败)

文章目录 前言实验攻击尝试hydra爆破ftpmetasploit工具进行SSH登录端口转发1命令注入getshell 1端口转发2提权失败总结前言 这个是练习的第5个机子。 目标地址 https://www.vulnhub.com/entry/symfonos-2,331/ 实验 1.信息收集 1.1 目标ip 1.2 开放端口 nmap -sS -sV -A …

QT入门Buttons之QCommandLinkButton、QDialogButtonBox

目录 一、QCommandLinkButton界面布局介绍 二、QCommandLinkButton基本属性介绍 三、QDialogButtonBox界面布局介绍 1、布局器中的位置及使用 此文为作者原创&#xff0c;转载请标明出处&#xff01; 一、QCommandLinkButton界面布局介绍 一般这两个控件使用较少&#xf…

HarmonyOS/OpenHarmony应用开发-DevEco Studio 3.0与DevEco Studio 3.1版本差异

工程模板和开发语言介绍 DevEco Studio支持包括手机、平板、车机、智慧屏、智能穿戴、轻量级智能穿戴和智慧视觉设备的HarmonyOS应用/服务开发&#xff0c;预置了工程模板&#xff0c;可以根据工程向导轻松创建适应于各类设备的工程&#xff0c;并自动生成对应的代码和资源模板…