码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-01-01 20:53:26      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:选择   程序代码   理解   高内聚   说明   repeat   准则   工作内容   考试   

软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。它是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。

软件工程师(Software Engineer)是从事软件职业的人员的一种职业能力的认证,通过它说明具备了工程师的资格。软件工程师是从事软件开发相关工作的人员的统称。它是一个广义的概念,包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位,工作内容都与软件开发生产相关。软件工程师的技术要求是比较全面的,除了最基础的编程语言(C语言/C++/JAVA等)、数据库技术(SQL/ORACLE/DB2等)等,还有诸多如JAVASCRIPT、AJAX、HIBERNATE、SPRING等前沿技术。此外,关于网络工程和软件测试的其他技术也要有所涉猎。

本文章是本人根据本课程的学习以及自身的知识和经验,简要总结一个软件工程师的软件工程知识技能水平高低主要体现在哪些方面,并针对这些内容提供一份软件工程知识技能水平的测评试题。

一、软件工程师必备技能

1、沟通能力

在软件开发过程中,不仅是程序员之间要进行交流合作,程序员也可能要与产品人员,测试人员,运维人员,销售人员等其他各个部门的人沟通交流。

2、编程语言能力

作为一名专业的软件工程师,应该能够熟练掌握JAVA语言,并且能够深入理解OOP、OOA、OOD等编程思想。精通一门编程语言能为以后的软件开发打下坚实的基础。

3、编码能力

这里说的编码可不是照着书本敲代码,而是能够独立的运用代码,编写一个程序出来。有很多软件工程师,他们都是随意堆砌网上搜来的代码,根本不管可读性和可维护性,只要能实现功能就行了,缺乏最基本的职责素养。对于软件工程师或程序员来说,代码就像自己的孩子一样,一定要付出感情,这样才能编写出好的程序。

4、学习能力

IT技术可谓是更新换代最快的了,从市面上的电脑和手机就可以看出来。所以,只依靠自己之前学到的知识,很快就会被这个时代所淘汰,软件工程师应具备的技能里很重要的一点就是学习能力。因为只有具备了学习能力,才能在离开学校之后仍然能够独立地学习最新的技术,同时能够自主的发现现在有什么新技术,市场上流行的技术元素与市场需求的变化。

5、设计能力

一个优秀的软件工程师不仅仅具备扎实的专业知识与技能,而且还要具备一定的设计能力。因为只有这样,才能使一个软件或者应用更加完美,更加容易受到人们的欢迎,从而获得更广阔的市场。

6、团队协作能力

软件开发并不是孤军奋战,很多时候一个软件需要几个人一起开发,这个时候就需要大家齐心协力,共同努力了。这时候,作为软件工程师就需要具备一定的团队协作能力了,来保证每个人都负责相应的方向,不能只为了突出自己而不顾整个团队。

7、锻炼产品思维的能力

作为一名优秀的工程师,不仅对技术有追求,还要对产品有所认识。不懂产品的工程师不是好工程师。训练自己的用户视角,把自己当作真正的用户去感受产品;学习产品的业务;研究竞争对手的产品,知己知彼百战不殆;收集产品数据做出分析,通过数据再量化产品;了解行业趋势。

8、总结工作的能力

无论做任何事情,都要善始善终,软件工程师更不用说了,作为优秀的工程师是绝对不会草草了结自己每天的工作的,一定会有这样的流程:总结—反省—变优秀。学会思考,善于思考,养成学习总结的习惯,不断提升自己技能。

二、软件工程知识技能水平的测评试题

(来自于软件工程师考试题库)

1、选择题

(1)软件工程方法学的目的是使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是(C )。

A.硬件环境 B.开发人员的素质

C.软件开发工具和软件开发的环境 D.软件开发的环境

答案解析:软件工程方法得以实施的主要保证是:软件开发中要有良好的软件开发工具和支撑环境,才能支持好的软件开发方法学得以应用,因此方法与工具的结合以及配套的软件和软件开发环境是软件工程方法学得以实施的重要保证。答案为C。

 

(2)软件开发的瀑布模型,一般都将开发过程划分为:分析、设计、编码和测试等阶段,一般认为可能占用人员最多的阶段是( )。

A.分析阶段 B.设计阶段 C.编码阶段 D.测试阶段

答案解析:在结构化的软件开发中,一般情况下,可能需要占用的人数最多的阶段是在软件编程的阶段,但从工作量上来说,在软件的需求分析、定义及软件的测试和维护阶段需要的工作量更多,用软件开发计划中的40-20-40原则,即可说明这一点,在软件需求分析和定义阶段,虽然工作量比软件编程多,但因为软件的需求分析和定义对开发人员的素质要求比较高,所以占用的人员并不需要太多;同时由于软件维护的周期比较长,所以其耗的工作量比软件编程多,但一般来说它占用的人员并不比软件编程阶段占用的人员多,所以答案为C。

 

(3)需求分析阶段的任务是确定( )。

  A.软件开发方法   B.软件开发工具

   C.软件开发费    D.软件系统的功能

答案解析:了解需求分析阶段的基本任务。所以答案是D。

 

(4)下列的( )不是分析建模的目的。

  A.定义可验证的软件需求

  B.描述客户需求

  C.开发一个简单的问题解决方案

  D.建立软件设计的基础

答案解析:分析建模的目的为定义可验证的软件需求,描述客户需求,建立软件设计的基础。所以答案是C。

 

(5)下列选项中,不属于模块间耦合的是()。

  A)内容耦合  B)异构耦合

  C)控制耦合  D)数据耦合

答案解析:耦合可以分为下列几种,它们之间的耦合度由高到低排列:内容耦合——若一个模块直接访问另一模块的内容,则这两个模块称为内容耦合。公共耦合——若一组模块都访问同一全局数据结构,则称为公共耦合。外部耦合——若一组模块都访问同一全局数据项,则称为外部耦合。控制耦合——若一模块明显地把开关量、名字等信息送入另一模块,控制另一模块的功能,则称为控制耦合。标记耦合——若两个以上的模块都需要其余某一数据结构的子结构时,不使用其余全局变量的方式而全使用记录传递的方式,这样的耦合称为标记耦合。数据耦合——若一个模块访问另一个模块,被访问模块的输入和输出都是数据项参数,则这两个模块为数据耦合。非直接耦合——若两个模块没有直接关系,它们之间的联系完全是通过程序的控制和调用来实现的,则称这两个模块为非直接耦合,这样的耦合独立性最强。所以答案是B。

 

(6)软件设计中划分模块的一个准则是(      )。 

A、 低内聚低耦合 B、 低内聚高耦合 C、 高内聚低耦合 D、 高内聚高耦合 

答案解析:软件设计中划分模块的一个准则是高内聚低耦合。内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系;耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。所以答案是C。

 

(7)Jackson设计方法是由英国的M. Jackson提出的,它是一种面向(       )的软件设计方法。 
A、 对象 B、 数据流 C、 数据结构 D、 控制结构 

答案解析:Jackson设计方法是一种面向数据结构的软件设计方法。所以答案是C。

 

(8)(       )是用户和设计交换最频繁的方法。 

A、 原型化方法        B、瀑布模型方法            C、 螺旋模型方法          D、构件组装模型 

答案解析:原型化方法,即Prototyping,为弥补瀑布模型的不足而产生的,是用户和设计交换最频繁的方法。所以答案是A。

 

8. 使用白盒测试方法时,确定测试数据应根据(    )和指定的覆盖标准。 

A、程序的内部逻辑         B、程序的复杂程度           C、该软件的编辑人员      D、程序的功能 

答案解析:白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,即清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。所以答案是A。

 

10. PDL是(      )语言。 

A、 高级程序设计语言    B、伪码式      C、中级程序设计语言      D、低级程序设计

 答案解析:答案是B。

 

2、判断题

(1)详细设计阶段的任务是具体地编写程序,必须关注最终的程序代码的质量。(×)

答案解析:详细设计的主要任务是设计每个模块的实现算法、所需的局部数据结构。所以错误。

(2)白盒测试方法又称为功能测试。(×)

答案解析:白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。所以错误。

(3)用黑盒法测试时,测试用例是根据程序内部逻辑设计的。(×)

答案解析:黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。用白盒法测试时,测试用例是根据程序内部逻辑设计的。所以错误。

(4)发现错误多的程序模块,残留在模块中的错误也多。(√)

(5)程序设计风格指导原则提出,尽量多使用临时变量。(×)

 

3、名词解释

重构

功能内聚

松散耦合

模块化

 

答案解析:

重构(Refactoring)就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。

功能内聚指模块内所有元素共同完成一个功能,缺一不可,因此模块不能再分割。

 松散耦合是指使用另一个组件提供服务的一个组件对前者的依赖性不强:它是语言独立的、平台独立的事务。

模块化是指解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程,有多种属性,分别反映其内部特性。

设计模式是对代码开发经验的总结,是解决特定问题的一系列方法。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。

 

4、程序设计与算法描述题

(1)根据下面的伪代码程序,画出程序流程图。 

START    
IF C1 
    THEN 
      WHILE C2 DO       
            f   
      ENDDO 
ELSE 
   BLOCK      
        g    
        p 
 ENDBLOCK    
ENDIF 
  REPEAT UNTIL C3 
        q 
        r 
ENDREP   
STOP      

 

 解析:

技术图片

 

 

 (2)有下列伪码程序: 

START 
INPUT (M,N) 
IF M>=10   
    THEN X=10   
ELSE X=l 
ENDIF 
IF N>=20   
    THEN Y=20   
ELSE Y=2 
ENDIF 
PRINT(X,Y) 
STOP 

 

设计该程序的语句覆盖和路径覆盖测试用例。

 

答案解析: 

M=9(或<l0),N=l9(或<20);

M=l0(或>=10),N=20(或>=20) 

路径覆盖的测试用例为 

M=9,N=19; 

M=9、N=20;  

M=l0,N=l9; 

M=10,N=20

 

(3)一本书有一个封面、一个目录、一个前言、若干章、每章有若干节、每节有若干段,有若干句子,有0个或多个插图,还有0个或多个表格,书最后有一个附录。试建立该书的对象模型。

答案解析:

技术图片

 

 (4)设计一个软件的开发成本为50000元,寿命为3年。未来3年的每年收益预计为22000元﹑24000元﹑226620元。银行年利率为10%,不计复利。试对此项目进行成本效益分析,以决定其经济可行性。

答案解析:

三年后,50000万的价值为   50000*(1+3*10%)=65000元               

三年软件总获利为                22000*(1+2*10%)+24000*(1+1*10%)+26620=79420元      

而 79420元>65000元      所以此项目盈利,经济可行。

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

标签:选择   程序代码   理解   高内聚   说明   repeat   准则   工作内容   考试   

原文地址:https://www.cnblogs.com/ai469/p/12129366.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!