如何评测软件工程知识技能水平?
如何测评软件工程知识技能水平
1.编程能力
对一个给定的问题,能快速的用自己掌握的编程语言解决问题,能解决实际问题。当然,拥有良好的编程能力也是找到一个好工作的必备技能。
2.具有软件工程的概念
基础软件工程师从事的工作相对于系统分析师和高级程序员要单纯一些,但是 他们仍然是整个软件工程中重要的一环,他们同样需要具有软件工程的概念:从项目需求分析开始到安装调试完毕,软件工程师都必须能清楚地理解和把握这些过程,并能胜任各种环节的具体工作。
3.学习能力
学习能力显然是必须的,当出现一个可以落地的新技术,且新技术能解决公司或个人面临的问题,且在能力范围内,具有良好的学习能力显然是必须。而且如今是学习型社会,提倡活到老学到老,只有具备良好的学习能力,才能不被社会淘汰,才能成为一个对社会有益的人。
4.团队协作
当今社会是合作型社会,良好的团队协作能力显然是必须的,好的团队协作能发挥出1+1>2的能力,而低效的团队协作就会像故事里说的那样,一个和尚挑水吃,两个和尚抬水吃,三个和尚没水吃。良好的团队协作能力是保证一个团队高效运行的基础,为个人,为企业,创造更多的价值。
5.跨领域解决问题
现今各个行业结合越来越紧密,这就需要我们具备跨专业的融合能力,能将自己的知识结合其他领域的知识,很好的运用起来,这样才能开发出让用户满意让公司放心的好产品,因为随着经济的发展,用户的需求层次也在不断提高,这就要求我们也要提升自己的素质,服务于用户。
高级软件工程期末试题
一、选择题
1)面向对象的主要特征除标识唯一性,分类性,封装性,模块独立性,还有( A )。
A. 多态性 B. 完整性
C. 可移植性 D. 兼容性
解析:面向对象主要有四大特性,分别为:抽象、封装、继承、多态。
2)在面向对象的设计中,我们应遵循的设计准则除了模块化、抽象、低耦合、高内聚以外,还有( B )。
A. 隐藏复杂性 B. 信息隐藏
C. 兼容性 D. 类的开发
解析:还有可重用
3)下列哪个阶段不属于软件生存周期的三大阶段(C )。
A、计划阶段 B、开发阶段
C、编码阶段 D、维护阶段
解析:软件周期三大简化阶段为计划阶段、开发阶段、维护阶段,其中维护最为耗时。
4)下面哪个不属于面向对象的思想(D )。
A.封装 B.继承
C.多态 D.耦合
解析:无
5)数据耦合、公共耦合、标记耦合、控制耦合的耦合性从低到高的顺序是( B )。
A.数据、公共、标记、控制 B.数据、标记、控制、公共
C.控制、数据、标记、公共 D.控制、数据、公共、标记
6)面向对象的分析方法主要是建立三类模型,即( D )。
A.系统模型、ER 模型、应用模型
B.对象模型、动态模型、应用模型
C.E-R模型、对象模型、功能模型
D.对象模型、动态模型、功能模型
解析:面向对象的分析方法主要是建立对象模型、动态模型、功能模型。
7)某企业财务系统的需求中,属于功能需求的是(A)。
A.每个月特定的时间发放员工工资
B.系统的响应时间不超过3秒
C.系统的计算精度符合财务规则的要求
D.系统可以允许100个用户同事查询自己的工资
解析:只有A的描述中属于功能方面
8)瀑布模型的存在问题是( B )。
A.用户容易参与开发 B.缺乏灵活性
C.用户与开发者易沟通 D.适用可变需求
解析:瀑布模型的问题是灵活性差,不容易适应用户需求的变化,D刚好说法错误。
9)测试的关键问题是( D )。
A. 如何组织对软件的评审
B. 如何验证程序的正确性
C. 如何采用综合策略
D. 如何选择测试用例
解析:测试的关键问题是如何选择测试用例
10)软件测试中根据测试用例设计的方法的不同可分为黑盒测试和白盒测试两种, 下列说法正确的是( D)
A. 前者属于静态测试, 后者属于动态测试 B. 都属于静态测试
C. 前者属于动态测试, 后者属于静态测试 D. 都属于动态测试
解析:黑盒测试和白盒测试都属于动态测试。
11)以下说法错误的是(A)
A.面向对象分析与面向对象设计的定义没有明显区别
B.从面向对象分析到面向对象设计,是一个逐渐扩充模型的过程
C.在实际的软件开发过程中,面向对象分析与面向对象设计的界限是模糊的
D.面向对象分析和面向对象设计活动是一个多次反复迭代的过程
解析:软件开发的分析过程就是分析系统需求的过程,分析工作主要包括理解、表达和验证。面向对象分析的关键是识别问题域内的对象及其关系。分析的任务基本完成后,下一步则是将分析的成果用于设计中。就是根据成本与要求,规划出系统应如何实现的问题。所以A中“分析与设计的定义没有明显区别”的说法是不正确的。
12)软件的结构化设计(SD)方法中,一般分为概要设计和详细设计两阶段,其中详细设计主要是要建立( C )。
A、软件结构 B、软件过程
C、软件模型 D、软件模块
解析:结构化设计又可以分为总体(概要)设计和详细设计。在总体设计中,需要明确整个系统的结构并进行模块的划分,同时需要确定每个模块的功能、接口及各模块间的调用关系。详细设计主要是建立软件模型
二、填空题
1)列举详细设计中常用的图形描述工具( 程序流程图、盒图、问题分析图 )
2)软件过程的基本活动是分析、设计(实现)(测试)、演化
3)软件工程的3个要素是(过程、方法、工具)
4)耦合度中最松散的是(非直接耦合)
三、名词解释
请用自己的语言解释下列名词
1)内聚
解析:标志着一个模块内各个元素彼此结合的紧密程度
2)设计模式
解析:设计模式是对软件工程中普遍存在(反复出现)的各种问题,所提出的解决方案。设计模式并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。
3)模块化
解析:把程序划分成独立命名且可独立访问的模块,每一个模块完成一个功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。
4)重构
解析:重构就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。
四、简答题
1)说出3你所熟悉的设计模式,并简要描述。
解析:适配器(Adapter)模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。
单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。
原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。
工厂方法(Factory Method)模式:定义一个用于创建产品的接口,由子类决定生产什么产品。
抽象工厂(AbstractFactory)模式:提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。
建造者(Builder)模式:将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。
代理(Proxy)模式:为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。
2)软件测试要经过哪些步骤 ?这些测试与软件开发各阶段之间有什么关系 ?
解析:软件测试要经过的步骤是:单元测试→集成测试→确认测试→系统测试。
单元测试对源程序中每一个程序单元进行测试, 检查各个模块是否正确实现规定的功能, 从而发现模块在编码中或算法中的错误。该阶段涉及编码和详细设计文档。
集成测试是为了检查与设计相关的软件体系结构的有关问题, 也就是检查概要设计是否合理有效。
确认测试主要是检查已实现的软件是否满足需求规格说明书中确定了的各种需求。
系统测试是把已确认的软件与其他系统元素 (如硬件、其他支持软件、数据、人工等 )结合在一起进行测试。以确定软件是否可以支付使用。
3)试着画出网上选课系统的用例图。
用例有:登陆;找回密码;查看课程信息;按课程编号程序查询;按课程名查询;选择课程;删除已经选择的课程;维护课程信息。参与者有系统管理员和学生用户。
解析:
五、应用题
根据下面的伪码画出为N-S图和PAD图
void root ( float root1, float root2 ) { i = 1; j = 0; while ( i <= 10 ) { 输入一元二次方程的系数a, b, c; p = b*b – 4*a*c; if ( p < 0 ) 输出“方程i无实数根”; else if ( p > 0 ) 求出根并输出; if ( p == 0 ) { 求出重根并输出; j = j + 1; } i = i +1; } 输出重根的方程的个数j; }
解析:N-S图:
PAD图