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

时间:2020-01-06 09:16:20   收藏:0   阅读:102

1)能做正确的决定:优秀的软件工程师深知没有完美的设计、服务和工具,他们还深刻理解可选方案以及实际状况的约束并能做出适当的权衡。一般的软件工程师只是盲目地使用当前比较流行的服务、设计和工具,而不做更深一步的理解和研究。

 

2)编写高质量的代码:良好的编程习惯不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。优秀的软件工程师都具有良好的编程习惯,他们编写尽量少的代码即可满足需求,还能够引入恰当的抽象层次,重构代码,将业务逻辑和其他程序逻辑分离。一般的软件工程师编写不出高质量的代码,他们只关心自己的代码是否能够达到预期的输出结果,只要有输出结果,就认为自己的任务完成了,根本不在乎代码的可维护性和可读性。

 

3)长远的眼光:洞察力优秀的软件工程师具有长远的眼光,使他们能够承担起各种困难的软件项目,他们经历过无数的非预期任务,如被喊去解决线上服务器的问题,处理积累了很多技术债的代码以及面对较为紧张的期限。一般的软件工程师对发生的问题从不积极响应,还责怪别人处理不当;当事情进展不顺时,他们很容易失去信心或推卸责任,不主动、不认真地解决问题。

 

4)扎实的计算机知识:一名优秀的软件工程师必然具有完整的计算机知识体系,这有助于让他们在面对复杂的技术问题的时候直击问题的本质,如果一个软件工程师的知识知识浮于表面,只满足调用各种API,那么他是无法发现和解决复杂的问题的。

 

5)团队协作能力:优秀的软件工程师深知一项业务的成功不能只靠个人单打独斗,而是团队的力量推动整个业务前进,因此一个优秀的软件工程师必然具有优秀的团队协作能力和沟通能力。

 

测试题

一、单项选择题

1.瀑布模型的存在问题是(  

   A.用户容易参与开发          B.缺乏灵活性

   C.用户与开发者易沟通        D.适用可变需求

解析:瀑布模型各个阶段的划分完全固定、模型是线性的,用户只有等到整个过程的末期才能见到开发成果,不适应需求的变化,缺乏灵活性。

 

2.下列哪个阶段不属于软件生存周期的三大阶段(C )。

   A、计划阶段                      B、开发阶段

   C、编码阶段                      D、维护阶段

解析:软件的生存周期包括:计划阶段、开发阶段、维护阶段。编码是开发阶段的一部分。

 

3.在设计测试用例时,(  A    )是用得最多的一种黑盒测试方法。

A. 等价类划分    B. 边界值分析     C. 因果图       D. 判定表

解析:等价类划分是一种典型的黑盒测试方法。等价类划分是指分步骤把海量的测试用例集减得很小但过程同样有效。也就是说,选取足够小测试用例,发现更多软件缺陷。

 技术分享图片

 

 

解析:深度为3,宽度为3。A的扇出为3,t的扇入为2。     题目考察模块化编程中,各个函数的调用关系。  扇入:该模块被调用的次数,扇入大,说明该模块的复用性好;扇出:该模块调用其他模块的个数,扇出大,说明该模块的业务逻辑复杂。一般设计高扇入合理扇出(3到4)的函数。

 

 

5.设函数C(X)定义问题X的复杂程序,函数E(X)确定解决问题X需要的工作量(时间)。

对于两个问题P1和P2,如果C(P1)>C(P2)显然E(P1)>E(P2),则得出结论E(P1+P2)>E(P1)+E(P2)就是:(

 A.模块化的根据  B.逐步求精的根据  C.抽象的根据   D.信息隐藏和局部化的根据

解析:从 E(P1+P2)> E(P1)+E(P2)看出:整体的复杂性大于局部之和,所以需要模块化降低耦合带来的复杂性。 

 

6.下列哪个图是N-S图(盒图)的构件(     )。

 技术分享图片

 

 

 解析:A是PAD图,B是流程图,C是盒图,D是PAD图。

 

二、名词解释

1泛化泛化是一般性事物(称为超类或父类)和它的较为特殊种类(称为子类)之间的一种关系,有时称为“is-a-kind-of”关系。

2重构:通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性

 3观察者模式:一个目标物件管理所有相依于它的观察者物件,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新,被用来实现事件处理系统,又被称为“发布——订阅”模式

 4多态:接口多种不同的实现方式即为多态。指同一个实体同时具有多种形式,有不同的解释,产生不同的执行结果,是面向对象程序设计的重要特征

 5功能内聚:模块内所有元素共同完成一个功能,缺一不可

 

 

 

三、简答题

1.  软件生命期各阶段的任务是什么?

 答:软件生命期分为7个阶段:(阶段划分言之有理即可,也可以不是这7个阶段)
(1、问题定义:要解决的问题是什么

(2、可行性研究:确定问题是否值得解,技术可行性、经济可行性、操作可行性

(3、需求分析:系统必须做什么

(4、总体设计:系统如何实现,包括系统设计和结构设计

(5、详细设计:具体实现设计的系统

(6、实现:编码和测试

(7、运行维护:保证软件正常运行。

 

2.     软件危机产生的原因是什么?

答:软件危机的原因:

a)     软件不同与硬件,是逻辑部件;

b)     软件规模庞大,逻辑结构复杂;

c)     软件开发人员和管理人员只重视设计程序而轻视用户的需求分析,导致最后研制出的软件产品无法满足用户的需求;

d)     软件设计技术和管理技术落后,没有统一的软件质量管理规范;

e)     在软件的开发与维护关系问题上存在错误的概念,重视开发,而轻视维护。

3.     面向对象方法的优点有哪些?

答:面向对象方法学的优点:

1)多角度模拟客观世界;

2)具有较高的稳定性;

3)重用性好;

4)适合开发大型软件。

 

4.  什么是白盒测试?什么是黑盒测试?

答:白盒测试又称为结构测试,它的前提条件是可以看成将程序放在一个透明的白盒子中,也就是完全了解了软件系统的结构和整个处理过程。

黑盒测试又称为功能测试,它把程序看成是一个不透明的黑盒子,完全不去考虑程序的内部结构和处理过程。

 

 

四、 综合题

分析ATM机的取款操作,画出ATM机与顾客的交互功能用例、ATM机自身功能(与顾客、银行系统交互)用例

答:顾客与ATM机交互功能用例图如下:

   技术分享图片

 

 

  顾客首先插卡,之后输入密码,在输入密码之后可以进行存款,取款,查询余额,修改密码,缴费,转账等操作。操作结束之后可以直接退卡,也可以打印凭条之后退卡。

  ATM机自身功能(与顾客、银行系统交互)用例如下:

   技术分享图片

 

 

  ATM机与顾客的交互:顾客在ATM中放入钞票,启动验钞机,鉴别钞票的真伪。若为真,则ATM机接收,并生成相应的历史记录传送回银行系统。若为伪,则提示顾客。ATM定时查询机内余额,并保存到历史记录当中定时发回给银行系统,若余额不足时则向银行系统发出请求。

(南京大学软件工程2016年考研题)

 

 

原文:https://www.cnblogs.com/xumu/p/12154462.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!