如何评测软件工程知识技能水平?
软件工程师是IT领域的重要岗位之一,随着IT行业多年的发展,软件工程师也有很多细分的方向。作为一名合格的软件工程师,我认为需要具有以下几个方面的知识结构:
1、操作系统知识,掌握操作系统的体系结构是进行软件研发的重要基础。主要内容包括资源管理、任务调度、并发管理、权限管理、网络管理等内容。
2、编程语言和算法。编程语言是软件工程师必备的技能,算法是软件工程师的重点知识结构,算法的掌握情况往往能够决定软件工程师的成长高度。
3、领域知识,不同开发领域需要掌握不同的知识结构。
除了这些软件工程师必备的专业基础知识外,我们还应当具有较高水平的软件工程知识技能,因此我认为还应当具有以下的技能:
1、学习能力,IT技术更新换代十分迅速,要让自己经常处在学习状态才能不被时代淘汰
2、设计能力。我们课程中也介绍了那么多设计模式,我们应当熟练地掌握这些技能并能够运用自如,要善于优化自己设计的代码。
3、团队协作能力,这方面不仅包括善于交流等软技能,还应当包括我们自身的适应团队的能力。一个软件的开发通常需要一个团队进行开发,需要将大家的代码进行整合,这时如果一个人的代码写的十分乱,可读性很差,尽管功能已经完成,但是在后续的开发中 会带来许多的麻烦。因此我们在编程过程中应当注意自己代码的可读性、可重构性。
软件工程知识技能水平测评试题
一、单选题(10题,每题三分)
1、瀑布模型的存在问题是(B)
A.用户容易参与开发 B.缺乏灵活性
C.用户与开发者易沟通 D.适用可变需求
解析:考察对瀑布模型的理解,瀑布模型各个阶段的划分完全固定、模型是线性的,用户只有等到整个过程的末期才能见到开发成果,不适应需求的变化,缺乏灵活性。
2、软件设计中模块划分应遵循的准则是(C)
A. 低内聚低耦合 B. 高耦合高内聚
C. 高内聚低耦合 D.以上说法均错误
解析:根据软件设计原理提出的优化准则:划分模块时,尽量做到高内聚、低耦合,保持模块相对独立性,并以此原则优化初始的软件结构。
3、开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作( B )。
A. 软件投机 B. 软件危机 C. 软件工程 D 软件产生
解析:考察对这些概念的理解
4、在设计测试用例时,(A)是用得最多的一种黑盒测试方法。
A. 等价类划分 B. 边界值分析 C. 因果图 D. 判定表
解析:等价类划分是一种典型的黑盒测试方法。等价类划分是指分步骤把海量的测试用例集减得很小但过程同样有效。也就是说,选取足够小测试用例,发现更多软件缺陷。
5、软件测试的目的是? (D )
A、 证明软件的正确性
B、 找出软件系统中存在的所有错误
C、 证明软件系统中存在错误
D、 尽可能多的发现软件系统中的错误
解析:进行软件测试是为了:
1、发现被测对象与用户需求之间的差异,即缺陷。
2、通过测试活动发现并解决缺陷,增加人们对软件质量的信心。
3、通过测试活动了解被测对象的质量状况,为决策提供数据依据。
4、通过测试活动积累经验,预防缺陷出现,降低产品失败风险
综上所述,D正确。
6、设函数C(X)定义问题X的复杂程序,函数E(X)确定解决问题X需要的工作量(时间)。
对于两个问题P1和P2,如果C(P1)>C(P2)显然E(P1)>E(P2),则得出结论E(P1+P2)>E(P1)+E(P2)就是:( A )
A.模块化的根据 B.逐步求精的根据 C.抽象的根据 D.信息隐藏和局部化的根据
解析:从 E(P1+P2)> E(P1)+E(P2)看出:整体的复杂性大于局部之和,所以需要模块化降低耦合带来的复杂性。
7、对象实现了数据和操作的结合,使数据和操作( C )于对象的统一体中。
A. 结合 B. 隐藏 C. 封装 D. 抽象
解析:考察对对象和封装概念的理解
8、软件维护产生的副作用,是指(C)。
A.开发时的错误 B.隐含的错误
C.因修改软件而造成的错误 D.运行时误操作
解析:考察对软件维护过程的理解
9、SA方法的分析步骤是首先调查了解当前系统的工作流程,然后(A)。
A.获得当前系统的物理模型,抽象出当前系统的逻辑模型,建立目标系统的逻辑模型
B.获得当前系统的物理模型,抽象出目标系统的逻辑模型,建立目标系统的物理模型
C.获得当前系统的逻辑模型,抽象出目标系统的物理模型,建立目标系统的逻辑模型
D.获得当前系统的逻辑模型,抽象出目标系统的物理模型,建立目标系统的物理模型
解析:SA方法的基本思想:“由顶向下逐层分解”,它先分析当前现实环境中已存在的人工系统,再考虑即将开发的软件系统,因此首先获得当前系统的物理模型,是现实环境中已经存在的,然后抽象出逻辑模型,再来考虑目标系统,建立目标系统的逻辑模型。
10、当一个模块直接使用另一个模块的内部数据, 这种模块之间的耦合为(D )
A. 数据耦合 B. 公共耦合 C. 标记耦合 D. 内容耦合
解析:不可以被数据所迷惑而选择A选项,若一个模块直接访问另一个模块的内部数据、一个模块不通过正常入口转到另一个模块内部、两个模块有一部分程序代码重叠或者一个模块有多个入口,上述几个情形之一发生则两个模块之间就发生了内容耦合。
二、名词解释(4题,每题5分)
1、重构
答:通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性
2、多态
答:在面向对象语言中,接口的多种不同的实现方式即为多态
3、模块化
答:是指解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程,有多种属性,分别反映其内部特性
4、结构冲突
答:输入数据与输出数据结构找不到对应关系的情况,称为结构冲突
三、判断题(10题,每题2分)
1、软件工程学只有理论意义,没有实际用途。(F)
2、面向对象建模得到的模型包含系统的 3 个要素,即静态结构、交互次序和数据变换。(T )
3、软件生存周期是从软件开始开发到开发结束的整个时期(F)
4、耦合用于衡量一个模块内部的各个元素彼此结合的紧密程度。(F)
5、为了加快软件维护作业的进度,应尽可能增加维护人员的数目.(F)
6、以对象,类,继承和通信为基础的面向对象设计方法(OOD)也是常见的软件概要设计方法之一.(T)
7、完成测试作业后,为了缩短源程序的长度应删除程序中的注解。( F)
8、系统结构图是精确表达程序结构的图形表示法。因此,有时也可以将系统结构图当作系统流程图使用。(F)
9、数据流图和数据字典共同构成系统的逻辑模型。(T)
10、白盒测试法是将程序看成一个透明的盒子,不需要了解程序的内部结构和处理过程。(F)
四、简答题(3题,共30分)
1、什么是软件生存周期,分为哪些阶段?(6分)
答:一个软件从定义到开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件生存周期就是从提出软件产品开始,直到该软件产品被淘汰的全过程。可以分为软件计划与可行性研究阶段(问题定义、可行性研究)、需求分析阶段、软件设计阶段(概要设计和详细设计)、软件编码阶段、软件测试阶段和软件运行与维护阶段
2、分析软件危机产生的主要原因有哪些?(10分)
答:导致软件危机的主要原因有:
(1)软件日益复杂和庞大(2)软件开发管理困难和复杂(3)软件开发技术落后(4)生产方式落后(5)开发工具落后(6)软件开发费用不断增加
(每点2分,答对5点满分)
3、模块间的耦合性包括哪些类型?按强弱排列。(14分)
答:耦合有以下几种,他们之间的耦合度由高到低排列:
1.内容耦合:如一个功能模块直接访问另一个功能模块的内容,则这两个功能模块称为内容耦合。
2.公共耦合:如一个功能模块都访问统一全局数据结构,则称之为公共耦合。
3.外部耦合:如一个功能模块都访问统一全局数据项,则称之为外部耦合。
4.控制耦合:如一个功能模块明显的把开关量、名字等信息送入另一个功能模块,控制另一功能模块的功能,则称为控制耦合。
5.标记耦合:如一个功能模块共享了某个记录,而不是简单变量,即这些功能模块都需某一数据的子结构时,就需要按该记录的结构进行操作,并通过参数表来传递记录信息,这样的耦合称为标记耦合。
6.数据耦合:如一个功能模块访问另一功能模块,被访问的功能模块的输入和输出都是数据项参数,则这两个功能模块为数据耦合。
7.非直接耦合:若两个功能模块没有直接关系,他们之间的联系完全是通过主程序的控制和调用来实现的,便称这两个功能模块为非直接耦合,独立性最强。