如何评测软件工程知识技能水平?
Posted jingjd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何评测软件工程知识技能水平?相关的知识,希望对你有一定的参考价值。
根据本课程的学习以及自身的知识和经验,您认为一个软件工程师的软件工程知识技能水平高低主要体现在哪些方面?
通常情况下,软件工程师需要具备以下几个方面的知识结构:
1.操作系统知识。操作系统知识是软件工程师必须具备的重要内容,Web开发领域可能会使用到Windows系列操作系统,大数据和物联网方向要使用到Linux系列操作系统,掌握操作系统的体系结构是进行软件研发的重要基础。主要内容包括资源管理、任务调度、并发管理、权限管理、网络管理等内容。
2.编程语言和算法。编程语言是软件工程师必备的技能,不同方向的开发需要使用到不同的编程语言,比如Web开发可能会使用php、Python、Java等语言,而大数据可能会使用Java、R、Scala等语言,而物联网开发可能会使用到C、C++等编程语言。通常来说,软件工程师往往需要掌握多门编程语言,以应对不同的开发环境。算法是软件工程师的重点知识结构,因为软件研发说到底就是个数学问题,所以算法的掌握情况往往能够决定软件工程师的成长高度。当然,对于应用级软件工程师来说,也有可能不会接触到更多的算法。
3.领域知识。不同开发领域需要掌握不同的知识结构,比如大数据软件工程师往往需要掌握Hadoop、Spark平台的使用,而Web开发工程师往往还需要掌握前后端开发技术,包括一系列Web开发框架的使用等等。
能力方面:
- 编程语言能力 作为一名专业的软件工程师,应该能够熟练掌握JAVA语言,并且能够深入理解OOP、OOA、OOD等编程思想。精通一门编程语言能为以后的软件开发打下坚实的基础。
- 编码能力 这里说的编码可不是照着书本敲代码,而是能够独立的运用代码,编写一个程序出来。有很多软件工程师,他们都是随意堆砌网上搜来的代码,根本不管可读性和可维护性,只要能实现功能就行了,缺乏最基本的职责素养。
- 学习能力 IT技术可谓是更新换代最快的了,从市面上的电脑和手机就可以看出来。所以,只依靠自己之前学到的知识,很快就会被这个时代所淘汰,软件工程师应具备的技能里很重要的一点就是学习能力。因为只有具备了学习能力,才能在离开学校之后仍然能够独立地学习最新的技术,同时能够自主的发现现在有什么新技术,市场上流行的技术元素与市场需求的变化
- 设计能力 一个优秀的软件工程师不仅仅具备扎实的专业知识与技能,而且还要具备一定的设计能力。因为只有这样,才能使一个软件或者应用更加完美,更加容易受到人们的欢迎,从而获得更广阔的市场。
- 团队协作能力 软件开发并不是孤军奋战,很多时候一个软件需要几个人一起开发,这个时候就需要大家齐心协力,共同努力了。这时候,作为软件工程师就需要具备一定的团队协作能力了,来保证每个人都负责相应的方向,不能只为了突出自己而不顾整个团队。
软件工程知识技能水平的测评试题:
名词解释题
1.重构:通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。
2.观察者模式:观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
3.多态:在面向对象语言中,接口的多种不同的实现方式即为多态。
4.功能内聚:模块内所有元素共同完成一个功能,缺一不可,因此模块不能再分割。
5.可修改性:指系统或软件的能够快速地以较高的性价比对系统进行变更的能力。
6.实现试图:开发视图也称为模块视图,在UML中被称为实现视图,它主要侧重于软件模块的组织和管理。开发视图要考虑软件内部的需求,例如,软件开发的容易性、软件复用和软件的通用性,要充分考虑由于具体开发工具的不同而带来的局限性。开发视图通过系统I/O关系的模型图和子系统图来描述。
7.松散耦合:为避免这种情况,需要降低A与B之间的耦合度,目的就在于,无论B的形式如何,只要B仍然能够实现A所需要的功能,A就不需要重写代码,
8.发布订阅的架构风格:发布订阅是一种消息范式,消息的发送者(称为发布者)不会将消息直接发送给特定的接收者(称为订阅者)。而是将发布的消息分为不同的类别,无需了解哪些订阅者(如果有的话)可能存在
9.模块化:解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程,有多种属性,分别反映其内部特性。
10.抽象:从具体事物抽出、概括出它们共同的方面、本质属性与关系等,而将个别的、非本质的方面、属性与关系舍弃的思维过程。
11.对象组合:将多个元素作为一个对象来处理,您需要将它们组合。
12.设计模式:软件开发人员在软件开发过程中面临的一般问题的解决方案。
选择题
1.以下不属于 白盒测试技术 的 (B)
路径覆盖
等值分析测试
语句覆盖
条件覆盖
2.白盒测试是对代码内部的逻辑测试,有逻辑覆盖和路径测试两种方法,逻辑覆盖又包含语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,组合覆盖,路径覆盖。
需求分析是 ( A )。
软件开发工作的基础
软件生存周期的开始
由系统分析员单独完成的
由用户自己单独完成的
软件生命周期总共大的方面分为三个阶段:定义,开发,维护。 定义包括:问题定义,可行性研究,需求分析。 开发包括:总体设计,详细设计,编码与测试单元,综合测试。 维护包括:软件维护 (如果不对的话请指出) 所以,软件生命周期的开始应该是问题定义 软件开发的基础是需求分析(基于定义的最后一个时期)
3.软件调试技术包括( B)
边界值分析
演绎法
循环覆盖
集成测试
常用的调试方法有:强行排错、回溯法排错、归纳法排错、演绎法排错。
边界值分析,循环覆盖,集成测试都属于软件测试
4.下列关于B/S架构软件与C/S架构软件的区别描述错误的是?(D)
B/S属于C/S,浏览器只是特殊的客户端;
C/S可以使用任何通信协议,而B/S这个特殊的C/S架构规定必须实现HTTP协议;
C/S架构的劣势还有高昂的维护成本且投资大
C/S架构维护和升级方式简单
B/S只能用HTTP
C/S成本高,维护困难
5.设计模式中,属于结构型模式的有哪些?(BC)
状态模式
装饰模式
代理模式
观察者模式
设计模式分为三种类型,共23种。
创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。
结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、***模式。
行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。
以上是关于如何评测软件工程知识技能水平?的主要内容,如果未能解决你的问题,请参考以下文章