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

鲁氏汤包王 2020-01-06

软件工程师需要具备以下几个方面的知识结构

我觉得作为一名软件工程师,其技术素质是必不可少的。除了具有扎实的计算机基础理论知识,还应具有以下的业务能力:

(1)规范化、标准化的编码能力。虽然软件工程师的工作不同于程序员,但是一个软件工程师其前身必定是一个优秀的程序员,软件人员的一个重要职责就是把用户的功能需求用某种语言实现,这就要求软件工程师掌握多种语言,具有良好的编码能力,精通C/C++、JAVA等语言和Perl、Python、PHP、Shell等脚本语言,熟悉它的基本语法和技术特点。

(2)认识和运用数据库的能力。信息是以数据为中心的,因此与数据库的交互在所有软件中都是必不可少的,了解数据库操作和编程是软件工程师需要必备的素质之一。熟悉数据结构和数据库,有一定的算法基础,具有较强的独立解决问题能力,能设计出问题求解的数据结构或数据库是必不可少的。目前常用的数据库软件有甲骨文公司的Oracle数据库和微软公司的SQL Server等。

(3)较强的动手能力和解决实际问题的能力。软件开发时理论和实践结合的过程。

(4)持续的学习能力,掌握最新的IT实用技术。软件业是一个不断变化和创新的行业,面对层出不穷的新技术,软件工程师应具有较强的学习能力、需求理解能力和对新技术比较敏感,在行业领域要与时俱进,适应软件的开发工具和环境,不断适应客户的需求变化。

(5)较强的英语阅读和写作能力。程序世界的主导语言是英文,编写程序开发文档和开发工具帮助文件离不开英文,了解业界的最新动向、阅读技术文章离不开英文,与世界各地编程高手交流、发布帮助请求同样离不开英文。作为基础软件工程师,具有一定的英语基础对于自身的学习和工作极有帮助。

除了这些技术要求,我觉得还有以下道德规范或基本的素质是必须的:

1)具有良好的团队协作能力。对于一个集体、一个公司甚至是一个国家,团队精神都是非常关键性的,尤其是在软件开发行业。每个人都必须在编好自己程序的同时,估计整个项目的质量和工期,为其他同伴创造条件。没有高度统一的团队精神,没有全部参与者的默契与分工合作,这项工作是根本不可能完成的。

2)具有良好的沟通能力,你必须善于把自己对项目的理解以及在开发过程中的问题告诉大家、告诉用户,这是基本的素质,也是必备的能力。

3) 踏实敬业、认真负责、耐心细致的能力。心静才能发现问题,否则遇到开发和测试问题就会越改越乱。必须得坚定信念,不怕麻烦,从细节到全局考虑周全,不然软件产品就会漏洞百出。

4)坚持守信、正直的原则。一个人品不完善的人是不可能成为一个真正有所作为的人。

5)遵守职业道德规范,树立正确的技能观。决不能利用自己的技能去从事危害公众利益的活动,包括构造虚假信息和不良内容、制造电脑病毒、参与盗版活动、黑客活动等。具有良好的工作责任性,不能以追求个人利益为目的,不随意向他人泄露工作和客户机密。

6)善于吸取教训和总结经验,做到时时都有新长进。

我觉得要成为一名合格的软件工程师必须具有以上的素质,只有这样我们才可以进一步地追求上升空间和自我实现。

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

一、选择题

1.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做(C)。

A.软件工程          B.软件周期   C.软件危机   D.软件产生

2瀑布模型存在的问题是(B )。

A.用户容易参与开发       B.缺乏灵活性C.用户与开发者易沟通 D.适用可变需求

3结构化方法是一种基于(D)的方法。

A.数据结构 B.程序结构    C.算法 D.数据流

4数据字典是用来定义(D)中的各个成份的具体含义的。

A、程序流程图B、功能结构图       C、系统结构图D、数据流程图

5模块的耦合性可以按照耦合程度的高低进行排序,以下哪一项符合从低到高的正确次序(D)。

A、数据结构耦合,公共耦合,控制耦合,内容耦合

B、数据耦合,控制耦合,数据结构耦合,公共耦合

C、无直接耦合,数据结构耦合,内容耦合,控制耦合

D、无直接耦合,数据耦合,控制耦合,内容耦合

6 UML是(A)。

A、  一种可视化的建模语言

B、  是一种可视化的程序设计语言

C、  是一种过程

D、  是一种方法

7类有三种类型即(A)。

A. 边界类、实体类、控制类

B. 实体类、数据类、界面类

C. 控制类、实体类、数据类

D. 界面类、控制类、公共类

8程序的三种基本控制结构是(B)。

A.过程、子程序和分程序              B.顺序、选择和重复

C.递归、堆栈和队列                     D.调用、返回和转移

9确认测试主要涉及的文档是(A)。

A、需求规格说明书B、概要设计说明书

C、详细设计说明书D、源程序

10确认测试主要涉及的文档是(A)。

A、需求规格说明书B、概要设计说明书

C、详细设计说明书D、源程序

11下面哪些测试属于黑盒测试(B)。

A、路径测试B、等价类划分 C、条件判断 D、循环测试

12可维护性的特性中,相互促进的(A)。

A、可理解性和可测试性B、效率和可移植性     

C、效率和可修改性    D、效率和结构好

13软件维护的困难主要原因是(C)

A、费用低    B、人员少    C、开发方法的缺陷 D、用户不配合

14.  为了适应软硬件环境变化而修改软件的过程是(C)。

A、校正性维护    B、完善性维护  C、适应性维护D、预防性维护

15结构化程序设计主要强调的是(D)。

A.程序的规模B.程序的效率       C.程序设计语言的先进性       D.程序易读性

二、判断题

(   T  )1.SA方法的基本思想是自顶向下逐步分解。

(   F  )2.在可行性研究中最难决断和最关键的问题是经济可行性。

(  F   )3. 类是对具有共同特征的对象的进一步抽象。

(    T )4. 软件也会磨损和老化。

(   F  )5. 测试计划、测试用例、出错统计和有关的分析报告一般不用长期保存。

( T    )6. 设计阶段的输出是编码阶段的输入。

(  F   )7 模块耦合越强,则说明模块的独立性越强。

.(   F  )8 基本路径测试是黑盒技术设计测试用例的方法之一。

.(  T   )9. 软件结构图中,模块框之间若有直线连接,表示它们之间存在顺序执行关系。

(  T  )11.完成测试后,为缩短源程序长度而删去程序中的注解,对软件的维护不会产生影响。

.(   F   )10. 如果把软件开发所需的资源画成一个金字塔,人是最基本的资源。

(   F )12. 耦合是指一个模块内各个元素彼此结合的紧密程度。

(   T )13. 随着软件技术的发展,人们逐渐认识到阅读程序的重要性,编码不仅要强调效率还要强调清晰。

(  T  )14. 白盒法是一种静态测试方法,主要用于模块测试。

(   F )15. 软件工程过程应该以软件设计为中心,关键是编写程序。

(    T)16. 类是对具有共同特征的对象的进一步抽象。

(    T)17. 基于情景的测试是面向对象系统确认测试的主要方法。.

(  T)18. 重用是提高软件生产率和目标系统质量的重要途径,它基本上始于设计。

(  F  )19. 类图用来表示系统中类和类与类之间的关系,它是对系统动态结构的描述。

(  F  )20. 软件项目管理始于项目计划,而第一项计划活动就是估算。

三、简答题

1 什么是数据流图?其作用是什么?其中的基本符号各表示什么含义?

答:数据流图(Data Flow Diagram,DFD)是描述数据处理过程强有力的工具。

圆表示加工,表示输入数据在此进行处理产生输出数据;

箭头表示数据流,有一组固定的数据项组成,箭头的方向表示数据的流向;

双杠表示数据存储文件,在数据流图起保存数据的作用,可以是数据库文件或任何形式的数据组织形式;

方框表示数据源点或汇点,表示数据流图中要处理数据的输入来源或处理结果要送到哪里。

2 软件设计的基本原则是什么?

答:模块化   高内聚、低耦合   信息隐蔽的原则     

3什么是软件配置管理?什么是基线?

答:软件配置管理,是对软件的配置和管理,是一个贯穿

于整个项目开发过程的活动;

基线,已经通过正式评审和批准的规约或产品,可以作

为进一步开发的基础,并且只能通过正式的变更控制规程才能实现。

4软件危机的主要表现是什么?

答:(1)软件开发费用和进度难以控制;

   (2)软件不能满足用户的需求;

   (3)软件可靠性差;

   (4)软件产品缺乏相应的文档资料;

   (5)软件可维护性差;

   (6)软件开发的速度与计算机应用普及速度不相适应。

5 什么是CMM,它分哪几个级别,简单说明

答:CMM(Capability Matured Model),能力成熟度模型;

CMM把软件开发过程的成熟度由高到低分为5个级别分别如下

    (1)初始级,也叫等级1,处于初始级的软件开发过程未经定义,即使有某些规范也并未严格执行。

(2)可重复级,是软件开发过程中,根据以前在同类项目上的成功经验,建立了基本的软件生产管理和控制措施,对开发过程进行一定的管理和控制。

(3)已定义级,在已定义级中软件企业制定了一套软件过程和规范对所有软件工程和管理行为给予指导。

(4)已管理级,处于管理级的软件企业,其开发过程是可预测的。

(5)优化级,优化级的软件企业,其软件开发过程是持续不断改进的过程。

6谈谈软件维护困难的原因

答:(1)软件人员经常流动,当需要对某些程序进行维护时,可能找不到原来的开发人员,只好让新手去“攻读”那些程序。

   (2)人们一般理解别人写的程序非常困难。

   (3)当需求对软件进行维护时,不能指望由开发人员给大家仔细说明软件。由于维护阶段持续的时间长,因此,当需要软件解释时往往原来写程序的人已不在附近。

(4)很多程序在设计时没有考虑到将来的修改。

(5)如果软件发行了多个版本,要追踪软件的演化非常困难。

(6)维护将会产生不良的副作用,不论是修改代码、数据或文档,都有可能产生新的错误。

(7)软件维护不是一项吸引人的工作,形成这种观念在很大程度上是因为维护工作经常遭受挫折。

相关推荐