软件工程师的软件工程知识技能水平高低主要体现
软件工程师虽然不能算是一个新生事物,但随着社会的不断发展,计算机是我们必不可少的,软件开发也是推动计算机迅速发展的条件,那么做为软件工程师我们需要什么条件?
(1)具有扎实的计算机专业知识
这是软件工程理由能够从事软件一切工作最基本的前提,是软件工程最基本的素质,这要求软件工程师必须精通高等数学、离散数学、电子学、编程语言、数据结构等课程。
(2)良好的语言表达能力和沟通能力
这是软件工程师应该具备的一个很重要的素质,因为软件工程师是为用户开发软件,常常需要直执着面对用户。
(3)健康的心理素质
开发软件本身就是一项艰苦的脑力和体力劳动,软件工程师开发成功一个软件,要经过反复修改,要花费大量的进间和精力,这些都有要求软件工程师有较好的心理承受能力。
(4)有很强的学习和适应能力
接触新专案或是转换工作跑道时,都有可能需要学习全然陌生的程序语言,许多人对此感到害怕,甚至未尝试就先放弃。其中,跳脱舒适圈的恐惧往往多于学习程序,会担心是否无法重现过去工作的好表现,甚至因此怀疑自身能力。强大的学习和适应能力可以让让你在学习过程中成为更好的程序设计师。
(5)出色的debug能力
Debug能力往往是影响工程师是否能顺利完成专案的关键因素,却被大部分人低估。Debug的系统性思考如下:
1、先假设造成bug的可能原因。
2、若假设为真,界定此假设可能导致的结果。
3、试著检视是否有和这些结果冲突的现象。
4、若有冲突表示假设错误,要重复上述思考过程。
由此可知,想加快Debug速度,要提升「提出假设」和「检视假设」的能力。假设能力可随著Debug经验的累积而提升,检视能力则需加强善用检测工具的技能。
(6)具备系统性思维能力
写完程序码、让程序可运作仅是冰山一角,要产出真正有价值的程序,必须从程序本身提升到整个系统来思考。
你的程序和其他程序库以及其他人写的功能是否相容?
程序是否测试完成,并确保其他成员可执行你写的这些功能?
部署你的程序需要改变哪些生产环境?
新程序对其他正在运作的系统是否有负面影响?
软件工程知识技能水平的测评试题
一、选择题
(1)软件工程的基本目标是(B)
A.消除软件固有的复杂性
B.开发高质量的软件
C.努力发挥开发人员的创造性潜能
D.更好地维护正在使用的软件产品
解析:本题考查软件工程的基本目标
(2)瀑布模型的存在问题是(B)
A.用户容易参与开发 B.缺乏灵活性
C.用户与开发者易沟通 D.适用可变需求
解析:本题考查瀑布模型的特点,瀑布模型的突出缺点是不适应用户需求的变化
(3)软件设计中模块划分应遵循的准则是(C)
A.低内聚低耦合
B.高耦合高内聚
C.高内聚低耦合
D.以上说法均错误
解析:本题考查软件设计的准则
(4)软件过程的基本活动是(A)
A.分析、设计、实现、测试、演化
B.沟通、技划、建模、构造、部署
C.计划、分析、设计、实现、调试
D.沟通、风险管理、度量、产品化、评审
解析:本题考查软件过程
(5)UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法(C )
A、基于瀑布模型的结构化方法
B、基于需求动态定义的原型化方法
C、基于对象的面向对象的方法
D、基于数据的数据流开发方法
解析:本题考查UML工具的应用
(6)快速原型开发模型是(B)
A. 适用于客户需求被明确定义的情况
B. 适用于客户需求难以清楚定义的情况
C. 适合于大规模团队开发的项目
D. 很难产生有意义产品的一种冒险模型
解析:本题主要考查快速开发的使用场景
(7)通过(B )可以完成数据流图的细化。
A.结构分析
B.功能分解
C.数据分析
D.系统分解
解析:本题考查数据流图细化的方法
(8)下列哪个阶段不属于软件生存周期的三大阶段(C )。
A、计划阶段
B、开发阶段
C、编码阶段
D、维护阶段
解析:本题考查软件生存周期的阶段
(9)下面几种白箱测试技术,哪种是最强的覆盖准则 ( D )
A.语句覆盖
B.条件覆盖
C.判定覆盖
D.条件组合覆盖
解析:本题考查白盒测试的覆盖准则
(10)提高测试的有效性非常重要,成功的测试是指( )
A.证明了被测试程序正确无误
B. 说明了被测试程序符合相应的要求
C.未发现被测程序的错误
D.发现了至今为止尚未发现的错误
解析:本题考查测试的目的
二、判断题
( × )1、开发软件就是编写程序。
( × )2、软件需求分析的任务是建立软件模块结构图。
( √ )3、软件的开发与运行经常受到硬件的限制和制约。
( × )4、软件的质量好坏主要由验收人员负责,其他开发人员不必关心
( √ )5、良好的分层体系结构有利于系统的扩展与维护。
三、简答题:
1.简述螺旋模型。
螺旋模型(Spiral ModeD 采用一种周期性的方法来进行系统开发。这会导致开发出众多的中间版本。使用它,项目经理在早期就能够为客户实证某些概念。该模型是快速原型法,以进化的开发方式为中心,在每个项目阶段使用瀑布模型法。这种模型的每一个周期都包括需求定义、风险分析、工程实现和评审4个阶段,由这4个阶段进行迭代。软件开发过程每迭代一次,软件开发又前进一个层次
2.简述你对模块独立性的理解。
模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单,模块内部各部分及模块间的关系的--种衡量标准,由内聚和耦合来度量。
模块独立性的重要性:具有独立的模块的软件比较容易开发出来。这是由于能够分割功能而且接口可以简化;独立的模块比较容易测试和维护。这是因为相对说来,修改设计和程序需要的工作量比较小,错误传播范围小,需要扩充功能时能够"插入"模块。总之,模块独立是优秀设计的关键,而设计又是决定软件质量的关键环节。
3.简要陈述软件的可靠性、可移植性、可使用性、兼容性;
可靠性:程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。
可移植性:软件可以转移到其他计算机上
可使用性:软件能够正常使用
兼容性:能够在计算机上兼容各种其他软件与硬件
4.分析增量模型的优点及使用增量模型时的困难;
优点:(1)人员灵活、刚开始不用投入大量人力资源。
(2)如果产品收欢迎则可以增加人力实现以一个增量。
(3)可先发布部分功能给客户,镇静剂。
缺点:(1)并行开发不易于集成,软件必须具备开放性系统结构。
(2)容易退化为边做边改模型,使软件过程控制失去整体性。
5.自顶而下渐增测试与自底而上渐增测试各有何优、缺点?
答:自顶而下渐增测试
优点:不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能够尽早发现上层模块的接口错误。
缺点:需要存根程序,底层错误发现较晚。
自底而上渐增测试优点与缺点和自顶而下渐增测试相反。
6.比较黑盒测试和白盒测试
答:白盒测试(又称结构测试):把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。
黑盒测试(又称功能测试):把程序看做一个黑盒子,完全不考虑程序的内部结构和处理过程。黑盒测试是在程序接口进行的测试,只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息的完整性。
参考资料:
百度文库
https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E5%B8%88/836275?fr=aladdin
http://www.elecfans.com/d/1065473.html
https://wenku.baidu.com/view/55869f79fe4733687e21aad5.html
https://blog.csdn.net/Generationofdonglin/article/details/79073047
来源:https://www.cnblogs.com/Liwj57csseblog/p/12152172.html