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

Posted yingjiehuang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何评测软件工程知识技能水平相关的知识,希望对你有一定的参考价值。

评价一个软件工程师我认为应该从以下几个方面考量

一、专业技能

作为一个软件工程师,专业技能当然必不可少,最基础的编程语言(Python/C++/JAVA等)、数据库技术(SQL/ORACLE/DB2等)等,还有诸多如javascript、AJAX、HIBERNATE、SPRING等前沿技术。此外,关于网络工程和软件测试的其他技术也要有所涉猎。
比如对Java软件工程师来说:需要对面向对象有良好理解、熟悉Struts、Hibernate、Spring等主流技术框架、熟悉Ajax、XML解析、熟悉ssh三大框架的使用等。

二、良好的工作习惯

代码规范,注重细节,程序设计严谨,测试充分,不放过任何一个异常,不抱有侥幸心理,主动提交程序对应的流程图、说明文档、测试文档等。

三、与队友协作共事的能力

在软件开发这项工作来说,是非常能够体现团队合作精神的,想要成为一名优秀的工程师就必须要学会、要懂得如何与伙伴共事,当一个工程师缺乏团队意识、技巧时,那么后果不仅是对团队发展不利,而且自己也会越来越孤立。充分了解自己的工作职责和伙伴们的职责;不要怀疑自己伙伴的能力;帮助伙伴快速进步;和团队伙伴成为朋友。

四、良好的沟通能力

在软件开发过程中,不仅是程序员之间要进行交流合作,程序员也可能要与产品人员,测试人员,运维人员,销售人员等其他各个部门的人沟通交流。测试工程师更强调人际沟通能力,因为项目测试过程中经常要与测试经理,开发人员和项目经理进行沟通,这样可以更好的发现问题。同时要不乏幽默感,能和开发小组很好的沟通是关键,让开发人员感觉和你一起工作来改进软件质量是件很幸福的事情。

五、学习新技能的能力

当今社会,互联网是一个飞速发展的行业,而身为工程师,我们就要不断的学习新技能,才能更好的与时俱进。保持对技术的热情,兴趣是最好的老师,对待任何工作只有充满兴趣,才会投入更多的精力和时间,智慧+汗水=成功!软件人才的求知欲和进取心非常重要,它是在这个激烈竞争的行业中立足的基本条件。软件工程师应具有较强的学习总结能力、需求理解能力以及对新技术的敏感性。

六、总结工作的能力

无论做任何事情,都要善始善终,淡然工程师更不用说了,作为优秀的工程师是绝对不会草草了结自己每天的工作的,一定会有这样的流程:总结—反省—变优秀。

试题

选择题

1.下列四个软件可靠性定义中正确的是(D)。

A、软件可靠性是指软件在给定的时间隔内,按用户工求成功运行的概率
B、软件可靠性是指软件在给定的时间间隔内,按设计要求成功运行的概率
C、软件可靠性是指软件在正式投入运行内,按规定说明书的规定成功运行的概率
D、软件可靠性是指软件在给定时间间隔内,按规格说明书的规定成功运行的概率

2.在软件生命期中,占工作量比例最大的是(D)。

A、可行性研究 B、建立系统的结构 C、编写程序 D、维护

3.用于概要设计所采用的描述手段是(B)。

A、DFD B、SC图(系统结构图) C、框图 D、数据结构图

4.数据库设计全过程中的关键是(B)。

A、分析用户要求 B、建立概念性数据模型
C、逻辑设计 D、物理设计

5.面向对象设计时,对象信息的隐藏主要是通过(A)实现的。

A、对象的封装性 B、子类的继承性
C、系统模块化 D、模块的可重用

6.下面不属于软件工程的基本原则的是(D)。

A、模块化 B、抽象 C、局部化 D、自顶向上

7.在用面向对象观点建立起的3种模型中,(B)是最基本、最重要、最核心的。

A、动态模型 B、对象模型 C、功能模型 D、状态模型

8.结构化分析SA是软件开发需求分析阶段所使用的方法,(B)不是SA所使用的工具。

A.DFD图 B.PAD图 C.结构化英语 D.判定表

9.在面向对象的设计中,我们应遵循的设计准则除了模块化、抽象、低耦合、高内聚以外,还有(B)??

A、?隐藏复杂性???B、?信息隐藏?????C、?即存类的重用???D、?类的开发?

10.耦合度也可以分为七级:其中最松散的耦合是(A)。?

A.?非直接耦合?B.?数据耦合?C.?特征耦合?D.?控制耦合

判断题

1.适应性维护是改进软件未来的可维护性和可靠性。(F)

2.同一用户界面中,所有的菜单选择,数据显示应该采用不同的形式和风格。(F)

3.模块的高内聚往往意味着模块间松散的耦合。(T)

4.确认测试中最为测试的依据是设计说明书。(F)

5.基线是通过复审了的软件配置项,当采用基线发生错误时,可以返回到最近和恰当的基线上。(T)

名词解释

功能内聚:功能内聚是内聚度最高的一种模块类型。如果模块仅完成一个单一的功能,且该模块的所有部分是实现这一功能所必须的,没有多余的语句,则该模块为功能内聚。功能内聚模块的结构紧凑、界面清晰,易于理解和维护,因而可靠性强;又由于其功能单一,故复用率高。所以它是模块划分时应注意追求的一种模块类型。

设计模式:设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

模块化:在结构化方法中,模块是一个功能单位,因此模块可大可小。它可以被理解为所建软件系 统中的一个子程序系统,也可以是子程序系统内一个涉及多项任务的功能程序块,并可以是功 能程序块内的一个程序单元,例如函数、过程。也就是说,模块实际上体现出了系统所具有的 功能层次结构。 模块可以使软件系统按照其功能组成进行分解,而通过对软件系统进行分解,则可以使一 些大的复杂的软件问题分解成诸多小的简单的软件问题。从软件开发的角度来看,这必然有利 于软件问题的有效解决。

观察者模式:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。

重构(Refactoring):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。常见的重构现象为重复代码。

简答题

1.软件开发的各阶段的任务是什么?

定义阶段:问题定义--任务:关于规模和目标的报告书;可行性研究--任务:系统的高层逻辑模型:数据流图,成本/效益分析;需求分析--任务:系统的逻辑模型:数据流图,数据字典,算法描述。
开发阶段:总体设计--任务:系统流程图,成本/效益分析,推荐的系统结构:层次图/结构图;详细设计--任务:HIPO图或PDL图;编码和单元测试--任务:源程序清单,单元测试方案和结果;综合测试--任务:综合测试方案,结果集成测试,验收测试,完整一致的软件配置。
维护阶段:软件维护--任务:维护记录以及改正性维护,适应性维护,完整性维护和预防性维护

2.瀑布模型与原型模型分别适用于开发哪些软件?

瀑布模型与原型模型分别适用于开发哪些软件瀑布模型适合于需求稳定,而且可以预先指定的大型系统工程项目。
原型模型适合于需求模糊或者随时间变化的中小型项目。

3.详细设计阶段用到了哪些图形工具?

程序流程图(PFD)
盒图(N-S 图)
问题分析图(PAD)
判定表/判定树 (其他非图形工具有过程设计语言(PDL)

4.白盒测试与黑盒测试分别有哪些测试方法?如何对具体问题测试?

白盒测试对程序模块的所有的执行路径至少测试一次;对所有的逻辑判定,取“真”与取“假” 白盒测试的两种情况都至少测试一次;白盒测试也叫逻辑覆盖法包括:语句覆盖,判定覆盖,条件覆盖。
黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据, 来检查程序是否都能产生正确的输出。黑盒测试有等价类法和边界值分析法。

5.UML中活动图、状态图、顺序图都分别描述什么?

活动图强调的是从活动到活动的控制流, 是一种表述过程基理、 业务过程以及工作流的技术。 活动图 它可以用来对业务过程、工作流建模,也可以对用例实现甚至是程序实现来建模。
状态机图常用来描述业务或软件系统中的对象在外部事件的作用下, 对象的状态从一种状态 状态机图 到另一种状态的控制流。
顺序图描述的是对象之间的消息发送关系,而不是类之间的关系。

6.软件危机及应对策略

软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机概括的说,包括下述两方面的问题:如何开发软件,以满足对软件日益增长的要求;如何维护数量不断膨胀的已有软件。具体说,有以下表现:

(1)对软件开发成本和进度的估计常常很不准确

(2)用户对“已完成”的软件系统不满意的现象经常发生

(3)软件产品的质量往往靠不住

(4)软件常常是不可维护的

(5)软件通常没有适当的文档资料

(6)软件成本在计算机系统总成本中所占的比例逐年上升

(7)软件开发生产率体提高的速度,远远跟不上计算机应用迅速普及深入的趋势

以上是关于如何评测软件工程知识技能水平的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

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

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