一、软件工程师的软件工程知识技能水平高低主要体现
1.编程语言能力:就拿Java来说,要能熟练掌握Java语言 及其内部架构,深入理解OOP、OOA、OOD等编程思想。
2.学习能力:IT技术可谓是更新换代最快的了,从市面上的电脑和手机就可以看出来。所以,只依靠自己之前学到的知识,很快就会被这个时代所淘汰,软件工程师应具备的技能里很重要的一点就是学习能力。因为只有具备了学习能力,才能够独立地学习最新的技术,同时能够自主的发现现在有什么新技术,市场上流行的技术元素与市场需求的变化。
3.团队协作能力:软件开发并不是孤军奋战,很多时候一个软件需要几个人一起开发,这个时候就需要大家齐心协力,共同努力了。这时候,作为软件.工程师就需要具备一定的团队协作能力了,来保证每个人都负责相应的方向,不能只为了突出自己而不顾整个团队。
二、试卷(选择5道*4',名词解释5道*5',简答5道(10'+10'+10'+10'+15'))
一、选择题
1.在软件生命周期中,能准确确定软件系统必须做什么和必须具备的功能阶段是( )。
A)概要设计 B)详细设计
C)可行性分析 D)需求分析
【命题目的】考查需求分析的概念。 【解题要点】需求分析能确定软件系统必须做什么和必须具备哪些功能。 IEEE软件工程标准词汇表对需求分析定义如下: (1)用户解决问题或达到目标所需的条件或权能; (2)系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或权能; (3)一种反映(1)或(2)所描述的条件或权能的文档说明。 需求分析阶段的工作可概括为4个方面: (1)需求获取; (2)需求分析; (3)编写需求规格说明书; (4)需求审评。 答案:D)
2.在原型法中称( )为用户/设计者,开发人员根据用户需求不断修改原型,直到满足用户要求为止。
A)用户 B)开发人员
C)系统分析员 D)程序员
【命题目的】考查软件开发模型的原型模型。
【解题要点】所谓“原型”是建立一个系统的可运行原型(功能不要求全,但要求快),
由用户试用并提出改进或扩充(甚至可能抛弃),因此,在原型法中称用户为用户/设计者。
答案:A)
3.下面不属于软件工程的3个要素的是( )。
A)工具 B)过程
C)方法 D)环境
【命题目的】考查软件工程的要素。 【解题分析】软件工程包括3个要素,即方法、工具和过程。 (1)方法是完成软件工程工程的技术手段; (2)工具支持软件的开发、管理及文档生成; (3)过程支持对软件开发的各个环节的控制、管理。 答案:D)
4.通过( )可以完成数据流图的细化。
A)结构分解 B)功能分解
c)数据分解 D)系统分解
【命题目的】考查数据流图细化的方法。
【解题要点】在数据流图中选择一个功能比较复杂的处理,并把它的功能分解成若干个子功能,
这些较低层次的子功能成为一张新数据流图上的处理,
在这张新数据流图上还应该包括自己的数据存储和数据流。
对数据流图细化之后得到一组新的数据流图,不同的系统元素之间的关系变得更清楚了。
答案:B)
5.瀑布模型将软件生命周期归纳为3个时期,即计划期、开发期和运行期。下列( )不属于开发期内的工作。
A)总体设计 B)详细设计
c)程序设计 D)维护
【命题目的】考查软件生命周期的概念。
【解题要点】维护是运行期内的工作。所以D)不属于开发期内的工作。瀑布模型描述软件开发
是按照从一个阶段转到下一个阶段的线性次序而进行的,该模型把软件开发过程划分为3个时
期8个阶段,具体时期和阶段为:计划期(问题定义、可行性研究和需求分析)、开发期(总体
设计、详细设计、程序设计和测试)和运行期(维护)。
答案:D)
二、名词解释
1.重构 Refactoring
【答案】通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。
2.模块化 Modularity
【答案】模块化是指解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程,有多种属性,分别反映其内部特性。
3.多态 Polymorphism
【答案】指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。
4.功能内聚 Functional Cohesion
【答案】如果一个模块内所有处理元素完成一个,而且仅完成一个功能,则称为功能内聚。 功能内聚是最高程度的内聚。
5.抽象 Abstraction
【答案】抽象是一种隐藏计算机系统复杂性的技术。他的工作原理是在用户和计算机系统的交互之间建立一个简单的层次,隐藏更多的底部复杂细节。
三、简答
1.需求确认和校验的区别是什么?
【答案】 需求确认: 需求确认的目的是用来检查获得的需求定义是否准确的反应了用户的实际需求;
需求校验: 需求检验的目的是用来检查需求规格说明文档和需求定义文档是否一致。
2.什么是概念设计与技术设计?分别做什么工作?
【答案】1. 概念设计 告诉顾客系统将要做什么(面向客户) 2. 技术设计 告诉程序员系统将要做什么(面向程序员) 3. 概念设计的工作 软件系统结构 各模块功能及模块间联系(接口) 4. 技术设计的工作 编写技术设计说明书 确定每个模块的算法并用工具详细描述 确定每个模块的数据结构 确定模块的接口细节
3.有哪几种耦合?
【答案】
内容耦合:一个模块可以直接操作另一个模块的数据
公共耦合:全局变量
控制耦合:传递的是如flag的控制变量
标记耦合(最低):传递的是数据结构
数据耦合:传递的是一般数据
非直接耦合:通过上级模块联系
4.有哪几种内聚?
【答案】
功能性内聚:一个功能,一个模块
顺序内聚(最低):一个成分的输出是下一个成分的输入
通讯内聚:借用公共数据
过程内聚:块内成分必须按照特定次序执行(前一个完成后,后一个才执行)
时间内聚:因执行时间一样而安排统一模块,如初始化
逻辑内聚:和控制耦合关联,求某班平均分最高分,输入输出相同
偶然内聚
5.下面是一段求最大值的程序,其中datalist是数据表,n是datalist的长度。
int GetMax(int n,int datalist[]){ int k=0; for(int j=0;j) if(datalist[j]>datalist[k]) k=j; return k; }
(1) 画出该程序的控制流图,并计算其McCabe环路复杂性。
【答案】
(2) 用基本路径覆盖法给出测试路径。
【答案】
测试路径:Path1: ①→③ Path2: ①→②→④→⑥→… Path3: ①→②→⑤→⑥→…
(3) 为各测试路径设计测试用例。
【答案】
测试用例: Path1: 取n=1,datalist[0] = 1, 预期结果:k=0 Path2: 取n=2,datalist[0] = 1,datalist[1] = 0, 预期结果:k=0 Path3: 取n=2,datalist[0] = 0,datalist[1] = 1, 预期结果:k=1