代码改变世界

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

2020-01-04 18:27  cgr  阅读(520)  评论(0编辑  收藏  举报

我认为一名合格的软件工程师需要具备如下技能:

  (1)软件工程师必须具备一系列软件方面的技能,如:CSS、JMS、XML等方面的技能。此外,软件工程师必须具备分析复杂问题等能力。

  (2)对Windows、Linux、Unix等大型主流操作系统的使用和应用开发的熟练掌握,包括一些网络的基础知识。使学员具备快速进行应用系统部署和测试环境搭建的能力,这是一个基本功。

  (3)软件测试工程师必须掌握目前比较流行的语言,比如说C、C++、JAVA、C#、VB等等多种平台下的一种或者多种语言,具备进行简单应用开发的能力。这是做好测试的一个前提条件,也是一个基本功。
  (4)目前大部分应用软件都离不开数据库,熟练掌握SQL Server、Oracle、DB2等一种或多种数据库系统的使用,熟悉使用SQL语言,这是要具备的第三项能力。
  (5)随着信息技术的发展和各个领域的信息化程度越为越高,安全也提到越来越重要的位置上,没有安全其他都无从谈起。所以做为测试人员对信息安全知识的基本掌握也是做测试的一个基本功。
  (6)必须深刻理解和熟练掌握软件测试基础理论与技术。首先是精通各种黑盒测试技术,能够进行测试用例设计、测试执行、编写缺陷报告;其次是熟悉软件测试流程和测试过程管理,能够编写测试计划,具备组织测试工作的能力;还有熟悉白盒测试技术,能够手工或利用相关工具进行单元测试;最后还有测试管理相关知识的掌握,虽然这在企业里是对测试组长和经理的要求,但是我们按照优秀软件测试工程师来要求我们学员的,学员具备这一能力将来才有可能走上管理岗位

 

一、名词解释:

(1)继承节点CNode非叶结点,也非根节点,CNode继承于父节点PNode

(2)多态:接口多种不同的实现方式即为多态。

(3)泛化:泛化是一般性事物(称为超类或父类)和它的较为特殊种类(称为子类)之间的一种关系,有时称为“is-a-kind-of”关系。

(4)设计模式:设计模式是普通面向对象设计问题的解决方案,这类问题以一组交互类的形式出现,用户根据需要定制这些交互类以形成专门的设计。所有的设计模式均可以从四个方面加以描述:模式名称、问题描述、解决方案和效果。

二、简答题

(1)什么是概念设计与技术设计?分别做什么工作?      

    概念设计

    告诉顾客系统将要做什么(面向客户)

   技术设计

    告诉程序员系统将要做什么(面向程序员)

   概念设计的工作

    软件系统结构

   各模块功能及模块间联系(接口)

   技术设计的工作

   编写技术设计说明书

    确定每个模块的算法并用工具详细描述

    确定每个模块的数据结构

    确定模块的接口细节

   技术(详细)设计是编码的先导

(2)有哪几种耦合? 

    耦合

    内容耦合:一个模块可以直接操作另一个模块的数据

    公共耦合:全局变量

    控制耦合:传递的是如flag的控制变量

    标记耦合(最低):传递的是数据结构

    数据耦合:传递的是一般数据

    非直接耦合:通过上级模块联系

(3)有哪几种内聚?

    内聚

    功能性内聚:一个功能,一个模块

    顺序内聚(最低):一个成分的输出是下一个成分的输入

    通讯内聚:借用公共数据

    过程内聚:块内成分必须按照特定次序执行(前一个完成后,后一个才执行)

    时间内聚:因执行时间一样而安排统一模块,如初始化

    逻辑内聚:和控制耦合关联,求某班平均分最高分,输入输出相同

    偶然内聚

(4)简述软件测试要经过哪几个步骤,每个步骤与什么文档有关。

【解答】

测试过程按 4 个步骤进行,即单元测试、集成测试、确认测试和系统测试。

单元测试集中对用源代码实现的每一个程序单元进行测试,与其相关的文档是单元测试计划和详细设计说明书。

集成测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。与其相关的文档是集成测试计划和软件需求说明书。

确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。与其相关的文档是确认测试计划和软件需求说明书。

系统测试把已经经过确认的软件纳入实际运行环境中,与其他系统成份组合在一起进行测试。与其相关的文档:用户指南、使用手册等。

(5)面对对象方法学的基本原则是什么?

参考答案:面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。

三、选择题

(1)结构化分析模型中,支持数据抽象的是哪些术语(A)

①数据流 ②数据存储 ③数据源 ④数据潭 ⑤加工

A.1.2             B.3.4       C.1.2.3.4       D.3.4.5

 考点:结构分析模型

(2)软件开发过程中,需求活动的主要任务是(B)。

(https://blog.csdn.net/qq_41814324/article/details/95237670)

A.给出软件解决方案

B.定义需求并建立系统模型

C.定义模块算法

D.给出系统模块结构

(3)软件项目所需的人数应该(D )。
A. 在估计开发需要的努力之后决定
B. 由项目预算数量决定
C. 从评价系统复杂性来决定
D. 以上所有选项

(4)耦合是软件各个模块间连接的一种度量。一组模块都访问同一数据结构应属于(B)方式。

(https://blog.csdn.net/qq_41814324/article/details/95237670)

A.内容耦合

B.公共耦合

C.外部耦合

D.控制耦合

(5)在攻克技术难题时,最佳的开发团队组织模型是( A)。
A. 民主式结构
B. 主程序员式结构
C. 技术管理混合式结构
D. 以上所有选项都不是

(6)软件项目规划的第一步是(D)

A.确定项目预算  B.选择团队的组织模型 C.确定项目的约束 D.建立项目的目标和范围

[答案与解析]本题摘自清华06年期末考试。

(7)下列哪个阶段不属于软件生存周期的三大阶段(C )。

   A、计划阶段                      B、开发阶段

   C、编码阶段                      D、维护阶段

[答案与解析]本题摘自百度文库,主要考查软件生存周期。

(8)瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和( C)。 

A、详细计划 B、可行性分析

C、 运行阶段 D、 测试与排错 

[答案与解析]本题摘自百度文库,主要考查对于瀑布模型的理解。

(9)使用结构化分析方法时,采用的基本手段是( A )。

A、分解和抽象     B、分解和综合     C、归纳与推导     D、试探与回溯

考点: 结构化分析方法

(10)软件会逐渐退化而不会磨损,其原因在于( C)。
A. 软件通常暴露在恶劣的环境下
B. 软件错误通常发生在使用之后
C. 不断的变更使组件接口之间引起错误
D. 软件备件很难订购

四、应用题

1、某报社采用面向对象技术实现报刊征订的计算机管理系统,该系统基本需求如下:    (1)报社发行多种刊物,每种刊物通过订单来征订,订单中有代码,名称,订期,单价,份数等项目,订户通过填写订单来订阅报刊。    

  (2)报社下属多个发行站,每个站负责收集登陆订单、打印收款凭证等事务。 

  (3)报社负责分类并统计各个发行站送来的报刊订阅信息。   

  请就此需求建立对象模型。

  答: