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

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

 

一、软件工程师定义

软件工程师(Software Engineer):是从事软件职业的人员的一种职业能力的认证,通过它说明具备了工程师的资格。软件工程师是从事软件开发相关工作的人员的统称。

  • 其中包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位,工作内容都与软件开发生产相关。
  • 技术要求是比较全面的,除了最基础的编程语言(C语言/C++/JAVA等)、数据库技术(SQL/ORACLE/DB2等)等,还有诸多如JAVASCRIPT、AJAX、HIBERNATE、SPRING等前沿技术。此外,关于网络工程和软件测试的其他技术也要有所涉猎。

 

二、软件工程师的软件工程知识技能水平主要体现

对于软件工程的能力要求也是多样性的、多方面的,对于不同岗位的具体要求会有所差别,但基本要求能力都是相同的。

基本要求及主要体现如下:

1.编程语言能力

作为一名专业的软件工程师,一方面,是否掌握了程序员的基本功:键盘输入速度,快捷键,编译和调试工具等,熟练掌握常用的工具集—VSCode/Vim、正则表达式等;另一方面,应该能够熟练掌握基础编程语言,并且能够深入理解OOP、OOA、OOD等编程思想。精通一门编程语言能为以后的软件开发打下坚实的基础。

2.编码能力

这里说的编码可不是照着书本敲代码,而是能够独立的运用代码,编写一个程序出来,而是严格规范的代码风格,合理使用空格、空行、缩进、注释,代码逻辑清晰,没有冗余和重复,遵从架构与设计原则,熟练使用各种编程库和API,编写出简洁、规范、可读性强、健壮安全的代码。

3.学习能力

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

4.业务能力

熟悉解决问题的流程:分析问题、形成方案、探索尝试解决问题、单元测试、重构程序以满足不断变化的需求,并在理解业务的基础上进行需求分析,编写的代码结构清晰,具有良好的可靠性、鲁棒性、可移植性和可重用性,满足高内聚低耦合的要求,准确地表达出用户的需求,开发出高质量的软件。

5.设计能力

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

6.团队协作能力

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

7.健康的心理素质

开发软件本身就是一项艰苦的脑力和体力劳动,软件工程师开发成功一个软件,要经过反复修改,要花费大量的进间和精力,这些都有要求软件工程师有较好的心理承受能力。很多学生往往只注重计算机专业知识的培养,而忽视了语言表达能力和沟通能力、工程经济分析能力,以及心理素质的培养。

 

三、针对以上内容提供一份软件工程知识技能水平的测评试题

一、选择题

  1. 下列模块独立性最强的是( )
    A、非直接耦合
    B、数据耦合
    C、公共耦合
    D、内容耦合

参考答案:A

  1. 结构化方法是一种基于( )的方法。   
    A.数据结构 
    B.程序结构 
    C.算法 
    D.数据流

参考答案:D

  1. 面向对象分析方法的基本思想之一是( )
    A. 基于过程或函数来构造一个模块
    B. 基于事件及对事件的响应来构造一个模块
    C. 基于问题领域的成分来构造一个模块
    D. 基于数据结构来构造一个模块

参考答案:C

  1. 软件测试的目标是( )。
    A. 证明软件是正确的
    B. 发现错误、降低错误带来的风险
    C. 排除软件中所有的错误
    D. 与软件调试相同

参考答案:B

  1. 按不同人员的工作内容来分类软件过程,支持过程包括( )。
    A. 维护过程、演化过程等
    B. 质量保证过程、配置管理过程等
    C. 基础设施过程、改进过程等
    D. 管理过程、培训过程等

参考答案:B

二、简答题

    1. 什么是单元测试,集成测试,白盒测试,黑盒测试?(来自教学PPT)
      参考答案:
      单元测试:是指对软件中的最小可测试单元进行检查和验证。(局部)
      集成测试:是将经过单元测试的模块组装起来进行测试。(全局)
      黑盒测试:如果知道产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用。(内部不可见,功能测试)
      白盒测试:如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。(内部细节可见)

    2. 说出3你所熟悉的设计模式,并简要描述。
      参考答案:
      单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。
      原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。
      工厂方法(Factory Method)模式:定义一个用于创建产品的接口,由子类决定生产什么产品。
      抽象工厂(AbstractFactory)模式:提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。
      建造者(Builder)模式:将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。
      代理(Proxy)模式:为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。
      适配器(Adapter)模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。

posted @ 2020-01-06 14:44  wh_伟鸿  阅读(469)  评论(0编辑  收藏  举报