如何评测软件工程知识技能水平?琉娅璃

评测软件工程师的软件工程知识技术水平的标准

(一)什么是软件工程(SoftwareEngineering)?

1、百度百科上对软件工程这一学科的解释是:软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。

2、我的理解:随着计算机技术的日益发展,软件的规模越来越大,软件的结构越来越复杂,软件开发与维护的难度也越来越高,软件开发人员迫切需要有一种科学的方法来指导软件的开发与维护工作,从而使软件开发过程趋于规模化、流程化,同时也便于后期的回溯与维护。而软件工程就是这样一种指导软件开发和维护的学科。

(二)什么是软件工程师(SoftwareEngineer)?

(三)软件工程师的分级及要求

1、软件工程师评级

一般分为4级,分别是:(1)软件技术员(2)助理软件工程师(3)软件工程师

(4)高级软件工程师

2、软件工程师要求

总的来说,对软件工程师的技术要求是比较全面的。

(1)首先最基础的是要掌握一门编程语言(C/C++/Java/Python等);

(4)其他关于网络工程和软件的技术也要有所了解。

(四)如何评测一个软件工程师的软件工程知识技能水平高低?

1、因素

(1)软件开发流程、文档资料留存

(2)编程思维、代码风格及代码优化能力

(3)责任心、抗压能力、沟通能力等软实力。

2、衡量标准

可通过计算机技术与软件专业技术资格(水平)考试来加以评测。

软件工程知识技能水平测评试题

一、单项选择题(20分=2分×10)

1.软件工程的基本要素包括方法、工具和()。

A.软件系统B.硬件系统C.过程D.人员

正确答案:C

试题解析:本题考查软件工程的基本概念。

软件工程是一种层次化的技术,从底向上分别为质量、过程、方法和工具。任何工程方法必须以有组织的质量承诺为基础。软件工程的基础是过程,过程是将技术结合在一起的凝聚力,使得计算机软件能够被合理地和及时地开发,过程定义了一组关键过程区域,构成了软件项目管理控制的基础;方法提供了建造软件在技术上需要“如何做”’它覆盖了一系列的任务。方法也依赖于一些基本原则,这些原则控制了每一个技术区域而且包含建模活动和其他描述技术;工具对过程和方法提供了自动或半自动的支持,如计算机辅助软件工程(CASE)。软件工程的基本要素包括方法、工具和过程。

2.在()设计阶段选择适当的解决方案,将系统分解为若干个子系统,建立整个系统的体系结构。

A.概要B.详细C.结构化D.面向对象

正确答案:A

软件设计的任务是基于需求分析的结果建立各种设计模型,给出问题的解决方案。从工程管理的角度,可以将软件设计分为两个阶段:概要设计阶段和详细设计阶段。结构化设计方法中,概要设计阶段进行软件体系结构的设计、数据设计和接口设计:详细设计阶段进行数据结构和算法的设计。面向对象设计方法中,概要设计阶段进行体系结构设计、初步的类设计、数据设计、结构设计:详细设计阶段进行构件设计。

结构化设计和面向对象设计是两种不同的设计方法,结构化设计根据系统的数据流图进行设计,模块体现为函数、过程及子程序:面向对象设计基于面向对象的基本概念进行,模块体现为类、对象和构件等。

3.以下关于结构化开发方法的叙述中,不正确的是()。

A.总的指导思想是自顶向下,逐层分解

B.基本原则是功能的分解与抽象

C.与面向对象开发方法相比,更适合于大规模、特别复杂的项目

D.特别适合于数据处理领域的项目

试题解析:本题考查对结构化开发方法、面向对象开发方法的理解。

结构化开发方法是一种面向数据流的开发方法,其基本思想是软件功能的分解和抽象,结构化开发方法又称生命周期法,是迄今为止最传统应用最广泛的一种信息系统开发方法结构化开发方法采用系统工程的思想和工程化的方法,按用户至上的原则。结构化、模块化、自顶向下地对信息系统进行分析与设计。该方法严格按照信息系统开发的阶段性开展设计工作,每个阶段都产生一定的设计成果,通过评估后再进入下一阶段开发工作。因此,结构化开发方法具有以下优点:

●开发工作的顺序性、阶段性适合初学者参与软件的开发

●开发工作的阶段性评估可以减少开发工作重复性和提高开发的成功率

●该方法有利于提高系统开发的正确性、可靠性和可维护性。具有完整的开发质量保正措施

结构化开发方法存在的不足主要是开发周明太长,个性化开发阶段的文档编写工作量过大或过于倾琐无法发挥开发人员的个性化开发能力。一般来说,结构化开发方法主要适用于组织规模较大,组织结构相对稳定的企业,这些大型企业往往业务处理过程规范,信息系统数据需求非常明确,在一定时期内需求变化不大。

4.类()之间存在着一般和特殊的关系。

A.汽车与轮船

B.交通工具与飞机

C.轮船与飞机

D.汽车与飞机

正确答案:B

飞机属于交通工具的一种。

5.以下关于软件维护和可维护性的叙述中,不正确的是()。

A.软件维护要解决软件产品交付用户之后运行中发生的各种问题

B.软件的维护期通常比开发期长得多,其投入也大得多

C.进行质量保证审查可以提高软件产品的可维护性

D.提高可维护性是在软件维护阶段考虑的问题

正确答案:D

在软件开发的各个阶段都需考虑软件的可维护性。

6.某项目为了修正一个错误而进行了修改。错误修改后,还需要进行()以发现这一修改是否引起原本正确运行的代码出错。

A.单元测试B.接收测试C.安装测试D.回归测试

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。

(7)设计模式允许一个对象在其状态改变时,通知依赖它的所有对象。该设计模式的类图如下图,其中,(8)在其状态发生改变时,向它的各个观察者发出通知。

7.A.命令(Command)B.责任链(ChainofResponsibility)C.观察者(Observer)D.迭代器(Iterator)

8.A.SubjectB.ConcreteSubjectC.ObserverD.ConcreteObserver

正确答案:7-8:CB

试题解析:本题考查设计模式的基本知识。

命令(Command)模式通过将请求封装为一个对象,可将不同的请求对客户进行参数化。责任链(ChainofResponsibility)模式将多个对象的请求连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止,避免请求的发送者和接收者之间的耦合关系。观察者(Observer)模式定义对象之间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

在上述观察者模式的类图中,Subject(目标)知道其观察者,可以有任意多个观察者观察同一个目标,提供注册和删除观察者对象的接口。Observer(观察者)为那些在目标发生改变时需获得通知的对象定义一个更新接口。ConcreteSubject(具体目标)将有关状态存入各ConcreteObserver对象,当它的状态发生改变时,向它的各个观察者发出通知。ConcreteObserver(具体观察者)维护一个指向ConcreteSubject对象的引用,存储有关状态,实现Observer的更新接口以使自身状态与目标的状态保持一致。

活动编号

工期(周)

直接前驱

A

3

-

B

5

C

1

D

E

F

4

C,E

G

H

F,G

9.A.16B.17C.18D.19

10.A.AB.BC.DD.F

正确答案:9-10:DB

试题解析:本题考查软件项目管理的基础知识。

从上图可以看出,关键路径为:A-D-E-F-H,其长度为19,关键路径上的活动均为关键活动。

二、完型填空题(10分=2分×5)

软件测试是软件质量保证的主要手段之一,测试的费用已超过(A)的30%以上。因此,提高测试的有效性十分重要。“高产”的测试是指(B)。根据国家标准GB8566-88《计算机软件开发规范》的规定,软件的开发和维护划分为8个阶段,其中,单元测试是在(C)阶段完成的,集成测试的计划是在(D)阶段制定的,确认测试的计划是在(E)阶段制定的。

【供选择的答案】

A:

①软件开发费用②软件维护费用

③软件开发和维护费用④软件研制费用

⑤软件生存期全部

B:

①用适量的测试用例运行程序,证明被测程序正确无误

②用适量的测试用例运行程序,证明被测程序符合相应的要求

③用少量的测试用例运行程序,发现被测程序尽可能多的错误

④用少量的测试用例运行程序,纠正被测程序尽可能多的错误

C-E:

①可行性研究和计划②需求分析

③概要设计④详细设计

⑤实现⑥集成测试

⑦确认测试⑧使用和维护

正确答案:A-E:①③⑤③②

目前,在大中型软件开发项目中,测试都占据着重要地位,同时,测试也是在将软件交付给客户之前所必须完成的步骤。测试所花费用已超过软件开发费用的30%以上。如何组织好测试,特别是如何选择测试用例,对保障软件质量,降低测试费用有着重要的意义。一个高效的测试,是指通过对所设计的少量测试用例进行测试,从而发现被测试程序中尽可能多的问题,并完成修改。测试按照被测试的内容可分为3种:单元测试(对程序单元或模块单独进行测试)、组装测试(把已通过单元测试的模块连接起来,测试模块间的接口及软件设计中的问题,常用功能测试办法)和确认测试(对软件系统作全面测试,以确认开发的软件是否符合验收标准)。根据国家标准GB8566-88计算机软件开发规范的规定,软件开发和维护分为8个阶段,分别为可行性研究和计划、需求分析、概要设计、详细设计、实现、组装测试、确认测试和使用维护。GB8566-88规定单元测试在实现阶段完成;组装测试在组装测试阶段完成,但组装测试的计划应该在概要设计阶段制定,而确认测试的计划则在需求分析阶段就应该制定好。

三、判断题(10分=2分×5)

正确答案:1√2√3×4×5√

四、名词解释(25分=5分×5)

1.软件危机

是指在计算机软件的开发和维护过程中所遇到的一系列严重问题

2.耦合

是一个软件结构内不同模块间相互程度的度量

3.内聚

标志着一个模块内各个元素彼此结合的紧密程度

4.信息隐藏

使得一个模块内包含的信息对于不需要这些信息的模块来说,是不能访问的

5.模块化

把程序划分成独立命名且可独立访问的模块,每一个模块完成一个功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。

五、代码阅读及流程图、N-S图转换(20分)

下面是一段用赛德尔迭代法求解线性方程组的程序。其中A[n,n]是方程组的系数矩阵,B[n]是方程组的右端项,X[n]是方程组的解向量。eps是控制迭代精度的较小实数。imax是控制迭代的最大次数。flag是标志,=0,表示迭代不收敛;=1,表示迭代收敛。

fork:=1tondoX[k]:=0.0;X[n]:=1.0;fori:=1toimaxdobeginflag:=1;forj:=1tontobegins:=B[j];fork:=1tondobeginifj=kthens:=s+X[k];s:=s-A[j,k]*X[k]end;ifabs(X[j]-s)>(abs(s)+1.0)*epsthenflag:=0;X[j]:=s;end;ifflag=1thengotoL1;end;L1:

(1)试画出它的结构化的程序流程图。

(2)将它改为N-S图。

(3)计算它的McCabe环路复杂性。

正确答案:

(1)a.使用goto语句:b.不使用goto语句:

(2)a.使用goto语句:b.不使用goto语句:

(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目,在程序结构图中,判定结点P一定有7个,所以环路复杂性为8。

THE END
1.软件架构工程师招聘网2025年软件架构工程师招聘信息猎聘2025年软件架构工程师招聘信息,海量高薪猎头职位等你来选,了解软件架构工程师岗位要求、薪资待遇等真实招聘信息,找高薪职位,上猎聘!https://www.liepin.com/zpruanjianjiagougongchengshi/
2.《汽车软件架构》的读后感当一名普普通通又不会Linux的汽车嵌入式软件工程师遭遇到Automotive SPICE的降维打击,他发现自己身处V Model的最底端,即SWE.3 软件详细设计和写代码。未来的职业发展何在?除了转管理还有更好的出路吗? Automotive SPICE已经为我们指明了方向,SWE.2 软件架构设计和SWE.5 软件集成都是普通的嵌入式软件工程师可以发展http://esnl.hnu.edu.cn/info/1005/2566.htm
3.汽车电子电气架构正向开发流程同时包含通讯设计、功能安全开发、变形管理等,提供了电子电气开发的集成平台,需求工程师、功能工程师、软件工程师,通信工程师、架构工程师、电气工程师、功能安全工程师可以在这个平台彼此协作开发,数据无缝传递,每个专业的输入可通过上游设计的输出数据重构生成,数据可在全流程追溯,在应对目前电子电气的复杂性上确实具有https://www.eeworld.com.cn/qcdz/eic671758.html
4.汽车功能安全工程师入行指南电子创新网Imgtec社区而相比系统工程师、软件工程师、硬件工程师、测试工程师等这些在汽车研发体系中已经非常成熟的岗位,论发展年头,功能安全工程师这一新兴的岗位着实属于“小弟”。因此,很多工程师朋友在考虑这个岗位时,不免心生很多疑问。 基于此,该系列文章试图结合工作经验和见闻,从以下几个方面对功能安全工程师这一岗位进行一个比较全https://imgtec.eetrend.com/blog/2021/100553975.html
5.汽车软件开发者的内功心法:V模型软件架构需要架构工程师完成。 为了建立清晰的、结构化的软件设计,应该统一分配软件需求,然后完成软件架构设计。根据系统相关需求、软硬件接口表、软件需求确定软件架构。将每条软件需求合理分配到软件模块中,定义每个软件模块的输入输出接口、动态行为、资源消耗目标等,评估多种软件架构的优缺点等。 https://www.51cto.com/article/718235.html
6.汽车软件开发者的内功心法:V模型软件架构需要架构工程师完成。 为了建立清晰的、结构化的软件设计,应该统一分配软件需求,然后完成软件架构设计。根据系统相关需求、软硬件接口表、软件需求确定软件架构。将每条软件需求合理分配到软件模块中,定义每个软件模块的输入输出接口、动态行为、资源消耗目标等,评估多种软件架构的优缺点等。 http://www.360doc.com/content/23/0504/11/16758694_1079181689.shtml
7.「资深架构工程师招聘信息」BOSS直聘为您提供2024年资深架构工程师信息,BOSS直聘在线开聊约面试,及时反馈,让资深架构工程师更便捷,找工作就上BOSS直聘!https://www.zhipin.com/zhaopin/4a42ce198b28b98b1Xxy3di-/
8.深度报道发展新质生产力,软硬协同创建“芯”生态德国华人汽车工程师协会 副会长兼秘书长秦玉学 传统控制功能不需要操作系统,只需要单任务功能控制就可以,但从域集中式架构到中央级集中式架构,情况会变得越来越复杂,基础软件的重要性越来越重要。秦玉学表示,基础软件在汽车中必须具备可维护性,具有功能安全、信息安全、故障隔离、可升级性等多种用途,并为上层应用软件https://mp.ofweek.com/auto/a956714417487
9.新一轮裁员潮?Q3至今已有超20家业内企业裁员!报告称,福尔瑟姆工厂有37个职位类别受到影响,受影响职位的主要头衔是“工程师”和“架构师”。具体来说,英特尔将裁撤10名GPU软件开发工程师、8名系统软件开发工程师、6名云软件工程师、6名产品营销工程师和6名片上系统(SoC)设计工程师。 英国最大晶圆厂NWF将裁员100人https://jiweipreview.laoyaoba.com/n/883622
10.茹炳晟软件测试52讲软件测试艺术架构师测试工程师全栈测试当当人民邮电出版社官方旗舰店在线销售正版《测试工程师全栈技术进阶与实践 茹炳晟 软件测试52讲 软件测试艺术架构师测试工程师全栈测试自动化测试》。最新《测试工程师全栈技术进阶与实践 茹炳晟 软件测试52讲 软件测试艺术架构师测试工程师全栈测试自动化测试》简介、书评http://product.dangdang.com/1527175905.html
11.深圳坪山区软件工程师(autosar)软件工程师(autosar)招聘1. 本科及以上学历,计算机科学、软件工程、自动化、机械电子工程或相关专业;良好的英语交流能力 2. 良好的 C/C++ 语言编程能力,熟练使用相关的开发工具进行调试和分析 3. 3年以上汽车电子控制器软件开发经验,熟悉AUTOSAR 软件架构及开发方法,熟练使用配置工具对RTE, OS, NvM, Com, DCM, BswM, EcuM等模块进行配https://jobs.51job.com/shenzhen-psq/147905244.html
12.7家红利公司,科学家CTO算法总监大客户总监岗位,等你投递高级电源软件工程师 【职位描述】 1、负责ACDC、DCDC功率变换器的DSP软件开发,主导电源控制算法和电源功能逻辑的开发与项目交付。 2、参与具体电源模块的拓扑方案的讨论,主导拓扑原理和控制算法的仿真验证,并能将控制算法落地完成实验验证。 3、负责电源产品的软件开发、调试;输出方案设计文档以及详细设计文档以及相应的调https://36kr.com/p/2387515036252168
13.中国月薪最高的十大职业排行国内月薪过万的工作的职业盘点→摘要:月薪过万、年薪十万是很多职业人刚找工作的时候希望得到的报酬,你知道哪些职业能够比较容易实现月薪过万吗?本文就统计了当下一些比较热门且月薪过万的工作,包括注册会计师、软件系统架构师、高级软件工程师、系统分析员、外科医生、建筑设计师、房地产销售、ui设计师、软件测试工程师、执业律师等。 https://www.maigoo.com/top/401931.html
14.bms软件具体做什么(bms软件工程师是什么)1、电池BMS软件工程师是指负责电池管理系统BMS方案设计和控制策略开发,根据BMS电池系统需求进行软件需求分析和定义并设计软件模块测试文档的工作人员,BMS软件工程师需要具备熟练使用编程语言,良好的代码编写习惯和认真负责,能快速学习和独立思考,具有良好的团队合作能力。 电池BMS软件工程师岗位职责: 负责电池系统BMS软件开发http://huangxingy.51sole.com/companynewsdetail_258738243.htm