一个软件工程师的软件工程知识技能水平高低主要体现在哪些方面?
第一,编码能力,软件工程师的主要任务便是进行软件开发,一个好的编码能力的功能工程师事半功倍。
第二,学习能力,我们知道软件行业技术更新迭代较快,要想跟上时代的变更要有跟上技术更新的学习能力才能更好的掌握软件技能。
第三,团队协作能力,现在面试一个good teamer也是一个好的竞争元素,由于软件行业是由一个团队来完成的,所以好的团队协作能力者能更好的完成项目工程。
最后,软件知识储备也是一个重要因素,我们就这点来给出测试。
首先,按照科软考试惯例,从不整虚的,上来就是大题。来:
1.什么是软件危机,软件危机有哪几种表现?
答:软件危机指的是软件开发和维护过程中遇到的一系列严重问题.
概括地说,软件危机包含下述两方面的问题:如何开发软件,怎样满足对软件的日益增长的需求;如何维护数量不断膨胀的已有软件.具体地说,软件危机主要有下列表现:
a.产品不符合用户的实际需要.
b.软件开发生产率提高的速度远远不能满足客观需要,软件的生产率远远低于硬件生产率和计算机应用的增长,使人们不能充分利用现代计算机硬件提供的巨大潜力.
c.软件产品的质量差.
d.对软件开发成本和进度的估计常常不准确.
e.软件的可维护性差.
f.软件文档资料通常既不完整也不合格.
g.软件的价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升.
2.什么是模块,模块化,模块独立性
模块是数据说明,可执行语句等程序对象的集合,模块可以单独被命名的而且可通过名字来访问,例如,过程,函数,子程序,宏等等都可作为模块.
模块化就是把程序划分成若干个模块,每个模块具有一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,实现问题的要求.
模块独立性是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其他的模块接口是简单的.模块独立的概念是模块化,抽象,信息隐蔽和局部化概念的直接结果.
3.什么是编码风格 为什么要强调编码风格
编写程序时讲求程序的风格,将大量地减少人们读程序的时间;
良好的编码风格有助于编写出可靠而又容易维护的程序,编码的风格在很大程度上决定着程序的质量。
4. 什么是黑盒测试法 什么是白盒测试法
答:黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程.黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息的完整性.黑盒测试又称为功能测试.
白盒测试法的前提是可以把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程.这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作,白盒测试又称为结构测试.
四个题虽然简单,然而我们太笨了,还是需要再来点简单的体才能达到60分,由于之前老师都有帮忙复习过,所以再来点名词解释比较合理:
1.功能内聚:最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。
2.控制耦合:指控制模块调用另一个模块时,传递的是控制变量,被调用块通过该控制变量的值有选择地执行块内某一功能(控制变量 )。
3.多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
4.设计模式:一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。
好了,还要多一写可以分析的题目,比如老师上课强调的代码风格
1.比较下列两段语句,从编码风格的角度分析哪一段好些,并说明好在哪些方面.(中南大学网络教育课程考试)
程序段一:
if a>b
then
if x>y
then
b=y
else
a=x
end if
else
a=b
end if
程序段二:
/ position_x is the position x of object; position_y is the position y of
object; /
if a>b then
a=b
else
if position_x>position_y then
b=position_y
else
a=position_x
end if
end if
答:第二段程序优于第一段.
①注释起到提示的作用,利于程序阅读者对程序段全貌的理解
②缩进格式清晰的显示程序中逻辑判断的结构.
③变量命名方式表明变量的含义.
2.画图也是软件工程中可以测试工程师能力的一部分,画图题也来搞点(题目来源考试资料网:https://www.ppkao.com/tiku/shiti/10869768.html)
某电器集团公司下属的厂包括技术科、生产科等基层单位。现在想建立一个计算机辅助企业管理系统,其中:
生产科的任务是:
(1)根据销售公司转来的内部合同(产品型号、规格、数量、交获日期)制定车间月生产计划。
(2)根据车间实际生产日报表、周报表调整月生产计划
(3)以月生产计划为以及,制定产品设计(结构、工艺)及产品组装月计划。
(4)将产品的组装计划传达到各科,将组装月计划分解为周计划,下达给车间
技术科的任务是:
(1)根据生产科转来的组装计划进行产品结构设计,产生产品装配图给生产科,产生外购需求计划给供应科,并产生产品自制物料清单。
(2)根据组装计划进行产品工艺设计,根据产品自制物料清单产生工艺流程图给零件厂。 试写出以上系统中生产科和技术科处理的软件结构图。
答:
画出生产科图的给6分,画出技术科的给4分。
[解析]软件结构图是软件系统的模块层次结构,反映了整个系统的功能实现,即将来程序的控制层次体系,软件结构往往用树状或网状结构的图形来表示,其主要内容有模块及模块的控制关系
根据题意,可绘制出生产科和技术科的软件结构图,其中生产科的结构图深度和宽度均为4,技术科的结构图的深度和宽度均为3。
既然要求各种题型都要有:好吧,来点填空吧。(题源来自高等教育软件工程题库)
1.可行性研究,应从 经济可行性 、技术可行性、运行可行性、法律可行性和开放方案可行性等方面研究。
2.系统流程图是描绘 物理系统 的传统工具。它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件。
3.模块的分解和合并应力求 降低耦合提高内聚 。
4.在UML的图形符号中,虚线箭头表示的是两个元素之间的 依赖 关系。
5.如果两模块间的通信信息是若干个参数,而每个参数是单一的数据项,则称这种耦合性为__数据_耦合。
6.系统详细设计阶段最后产生的文档是 详细设计说明书 。
7.结构化程序设计是一种程序设计技术,它采用__自顶向下、逐步求精__的设计方法和顺序、选择、循环三种基本控制结构构造常态程序。
8.自顶向下结合的渐增式测试法,在组合模块时有两种组合策略:深度优先策略和 宽度优先策略 。
再来点选择
1、瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。
八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和( C)。
A、详细计划 B、可行性分析 C、 运行阶段 D、 测试与排错
2.UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法(C )
A、基于瀑布模型的结构化方法 B、基于需求动态定义的原型化方法 C、基于对象的面向对象的方法 D、基于数据的数据流开发方法
3.软件设计中划分模块的一个准则是( C )。
A、低内聚低耦合 B、低内聚高耦合 C、高内聚低耦合 D、高内聚高耦合
4.结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的(B )
A、控制流 B、数据流 C、程序流 D、指令流
5.下列几种类型中,耦合性最弱的是( D)。
A、内容型 B、控制型 C、公共型 D、数据型
解析七种耦合程度由强到弱:
非直接耦合>数据耦合>标记耦合>控制耦合>外部耦合>公共耦合>内容耦合
6.模块的内聚性最高的是(D )
A、逻辑内聚 B、时间内聚 C、偶然内聚 D、功能内聚
解析:
把内聚按紧密程度从低到高排列次序为 偶然内聚<逻辑内聚<时间内聚<过程内聚<通信内聚<信息内聚<功能内聚。
7.设函数C(X)定义问题X的复杂程序,函数E(X)确定解决问题X需要的工作量(时间)。对于两个问题P1和P2,如果C(P1)>C(P2)显然E(P1)>E(P2),
则得出结论E(P1+P2)>E(P1)+E(P2)就是:(A)