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

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

一个好的软件工程师必须具备良好的计算机基础知识,在此之上掌握将工程的方法借用到软件开发方法与技术,同时拥有优秀的领导能力与语言沟通能力。
因此要评测软件工程知识技能水平要从一下几个方面考虑。  

·了解计算机科学与软件工程的区别

·了解软件工程的关键要素(方法,工具,过程)

·软件过程与生命周期 ·需求分析与设计 ·架构设计

·模块设计(代码封装接口,高内聚低耦合

·程序编写与测试(代码规范,代码结构与特性,测试驱动开发)

·软件的维护 ·掌握程序员的通用基本功:键盘输入,常用快捷键掌握。熟练操作常用的工具集。

 

判断题

(原创)进度跟踪不需要文档 答案:错误(进度跟踪需要文档)

(原创)进度跟踪包含功能说明,子系统说明,精度说明,可靠性、精度、性能说明

答案:正确(书上内容) 参考:软件工程:理论、方法与实践(教材)

(原创)需求阶段的目标就是理解用户的问题和需要。 答案:正确(书上内容)

 

 

选择题

(原创)1.软件工程的定义:

A.将计算机与工程的方法相结合,解决了软件危机的一门学科。

B.软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。 

C.软件工程是只涉及软件并且用工程的思想来制造软件的学科。

D.软件工程是计算机科学技术的软件部分。

答案:B 其他答案都不完整或不正确。

 

 

(原创)选择软件开发过程正确的拓扑关系。

A.需求分析->系统设计->详细设计->编码实现->单元测试->集成测试->交付->维护

B.需求分析->单元测试->集成测试->交付->维护->系统设计->详细设计->编码实现

C.系统设计->详细设计->编码实现->需求分析

D.需求分析->单元测试->系统设计->详细设计->编码实现

答案:A(BCD均错误) 参考:软件工程:理论、方法与实践(教材)

 

 

(原创)以下哪个不是敏捷宣言:

A. Individuals and Interactions over processes and tools

B. Customer Collaboration over contract negotiation

C. Working Software over comprehensive documentation

D. following a plan over Responding to Change

答案:D(Responding to Change over following a plan)

参考:The Manifesto for Agile Software Development

 

 

简答题

(原创)一个好的软件应该具有哪些特性?

答案:围绕正确性,可靠性,效率,完整度,可维护性,可测试性,灵活性,可移植性,可重用性,互用性。 参考:软件工程:理论、方法与实践(教材)

 

 

(原创)为什么系统性的方法很重要?

答案:系统是对象和活动的集合,加上他们之间的关系。系统性的方法帮助我们确定工程的边界。系统的定义包含输入,采取的动作,以及输出。在工程的开始,我们必须知道某个对象或者活动是否在系统中。参考:软件工程:理论、方法与实践(教材)

 

(原创)简述软件开发生命周期。

答案:软件生命周期又称为软件生存周期或系统开发生命周期,是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。(言之有理即可,重点是问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段) 参考:智库百科软件的生命周期。

 

原创)罗列一些常用软件开发的模型,选择其中一个说明其特点。

答案:瀑布模型(将工程活动分解为线性序列阶段,每个阶段严格依赖于上一个阶段,不够灵活,改动成本大)

   V模型(瀑布模型的变体。不是从上到小的线性方法,而是在编码阶段后开始测试,并且对需求、设计阶段做出反馈)

  原型模型(通过编写一个原型系统来更加精确的获取需求,是的工程师能够对整个初始项目做出一个更好的估计)

  阶段性开发:增量和迭代(主要用于大型软件开发,首先完成一个核心功能的系统,经过多轮迭代,每次添加一些功能,最终产生完整的系统)

  敏捷方法(强调灵活性,可适应性,团队成员、开发者与客户间的交流合作)

  参考:Wikipedia

 

(原创)简述在计划与项目管理中里程碑(milestone)与活动(activity)的区别。

答案:活动是在工程的一段时间内发生的整个工程的一部分,里程碑是指一个活动的完成,是一个时间点。

参考:软件工程:理论、方法与实践(教材)

 

 

编程题

 

 

(原创)小明爸爸是做冰块货运公司的,冰块当天不运完就会融化。小明想要编写一个最大流算法来增加每天的货运量从而降低损失,每天道路状况都在变化,因此算法中道路的容量一直在变化。但是小明爸爸不懂计算机技术,请你设计一个好的软件来帮助小明爸爸计算每天最大的货运量,同时能够适应道路的变化,而且操作该软件不需要计算机相关知识。

(给出相关数据结构,类之间的关系,简单的界面,输入输出。不需要具体实现,给出相关伪代码即可) 答案:言之有理即可

 

posted on 2020-01-04 22:04  SA19225239  阅读(332)  评论(0编辑  收藏  举报