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

随着高级软件工程这门课的结尾,我获益匪浅,不仅学习了从事软件工程所需要具备的专业理论知识,也学习了从事软件开发所应具备的个人技能和开发技巧,在这里,我对软件工程知识技能水平的评价有三个方面的总结:

1、首先,对于软件工程的作用和目标,比较普遍的一种认识是:软件工程的目的是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。国际上对软件工程的定义是:软件工程过程是输入转化为输出的一组彼此相关的资源和活动。 它满足三个特点:1.运行时,能够提供所要求功能和性能的指令或计算机程序集合。2.程序能够满意地处理信息的数据结构。3.描述程序功能需求以及程序如何操作和使用所要求的文档。以开发语言作为描述语言,可以认为:软件=程序+数据+文档。而软件工程专业是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科,是软件工程理论基础的熟悉,因为软件工程这是一门在实践中总结出来、逐渐形成自身理论体系的学科,具有很强的实践性,很多技能体系和理论指导思想都是从实践开发当中总结出来的,而且,最终也是为了更好地服务于广泛的软件开发。

2、其次,软件工程知识水平的评价首先应当体现在对于软件工程理论知识体系的熟悉,因为【1】已经阐释清楚了,软件工程是一门自成体系的严谨学科,那么像成为一名合格的软件工程师,必须是具备足够充沛的理论知识积累,除此之外,不仅仅是需要软件工程自身的理论知识,还应该具备计算机理论知识、数学、逻辑科学等知识基础,因为软件工程的开展是基于多种基础学科之上开展的,作为开发高质量软件的工程,软件工程借鉴传统工程的原则、方法,引入计算机理论知识以掌握软件实际运行环境、提高软件质量,引入数学知识以降低成本和改进算法,引入逻辑学理论知识以构建模型和运行算法、制定设计规范、开发模式等等。

3、最后,评价软件工程知识水平,还应从实际开发技能的掌握程度来考虑,比如说对开发模式的熟悉,对开发语言特性的了解,对多种计算机开发语言的掌握,对数据结构、操作系统、计算机网络等基础知识在实际开发过程当中的灵活使用的考察,因为掌握足够的软件开发知识仅仅只是具备了开发的能力,但是这个能力需要在实践当中才能发挥出效果来。因此,一个合格的软件工程师需要掌握实际开发技能。比如说,算法的设计编写、文档的编写、开发模式的分析与应用,这些都是在软件开发当中必不可少的实际技能之一。

一、选择题

1、产生软件危机的原因一般有两个方面,它是(A)

A.软件产品本身的特点,而且在软件的开发和维护当中使用的方法不正确。

B.软件在计算机当中很难识别,存在磁盘当中也看不到。

C.软件设计对人的智商要求很高,也要求很高的资金投入。

D.软件很难理解,硬件也很复杂。

2、软件开发过程当中,抽取和整理用户需求并建立问题域精确模型的过程叫(D)

A.生存期  

B.面向对象设计  

C.面向对象程序设计  

D.面向对象分析

3、软件的功能模块之间(C),说明模块之间的独立性越高。

A.耦合度越高

B.扇入数越高

C.耦合度越弱

D.扇入数越低

4、可维护性的特性中相互促进的是(A)

A.可理解性和可测试性

B.效率和移植性

C.效率和可修改性

D.效率和结构性

5、原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于(A)系统

A.需求不确定的

B.需求确定的

C.非功能需求

D.用户需求

6、(A)意味着一个操作在不同的类里面有不同的实现方式。

A.多态性

B.多继承

C.类的可复用

D.信息屏蔽

7、观察者模式当中,下列表述错误的是(C)

A.观察者角色的更新是被动的。

B.被观察者可以通知观察者进行更新。

C.观察者可以改变被观察者的状态,再由被观察者通知所有观察者根据被观察者的操作进行。

D.以上表述全部错误。

8、关于对象组合的表述不正确的是(D)

A.容器类仅能通过被包含对象的接口来对其进行访问。

B.“黑盒”复用,封装性好,因为被包含对象的内部细节对外是不可见的。

C.通过获取指向其他的具有相同类型的对象引用。

D.造成极其严重的依赖关系。

9、设计模式的两大主题是(D)

A.系统的维护和开发

B.对象组合与类的继承

C.系统架构与系统开发

D.系统复用与系统扩展

10、MVC模型的基本工作原理是基于(B)

A.适配器模式

B.观察者模式

C.单例模式

D.抽象工程模式

二、判断题

1、(T)软件工程标准化可提高软件的生产率。

2、(T)为了得到最可靠的成本和工作量的估算,应该把估算推迟到项目的后期进行。

3、(T)在使用等价类划分生成测试用例时,应选用输出等价类中的边界值作为代表值作为测试数据。

4、(F)文档只是一个说明,不是程序的一部分,所以软件可以没有文档部分。

5、(F)用例建模的步骤包括确定角色、确定用例和绘制用例图。

6、(T)比较好的测试用例是用少量的测试用例运行程序,发现软件中更多的错误。

7、(T)模块独立性可以由内聚度和耦合度来决定。

8、(F)增量式模型强调产品要一次性设计成功。

9、(T)计算机软件是计算机系统的组成部分。

10、(T)程序、数据和文档都是计算机软件不可缺少的一部分。

三、简答题

1、什么是模块,模块具有哪些特征,在概要设计阶段,需要考虑什么特征。

答:模块是数据说明、可执行语句等程序对象的集合,可以单独命名也可以通过对象名字来访问。模块具有输入输出(参数传递)、功能、内部数据结构(局部变量)和程序代码四个特征。在概要设计阶段,主要是要考虑到输入和输出(参数传递)、和功能两个特征。

2、请简述抽象工厂模式的目标,以及应该在什么时候使用它。

答:抽象工厂模式提供了一个创建一系列相关或者相互依赖对象的接口,而不需要制定他们的具体类。在以下四个方面适用该模式,①:当一个系统要独立于它的产品的创建、组合和表示时。②:当一个系统要由多个产品系列中的一个来配置时。③:当你要强调一系列相关的产品对象的设计以便于进行联合使用时。④:当你提供一个产品类库,而只想显示他们的接口而不是实现时。

3、请阐述软件测试在软件开发阶段的作用,并比较测试和调试的异同。

答:软件测试是保证软件质量的一个关键的步骤,是对软件规格说明、设计和编码的最后复审。对于测试和调试的区别,一般都是测试在前面,调试在后面,测试的目的是发现软件中的错误,而调试则是为了改正这个错误。两者是递进的关系。

你可能感兴趣的:(如何评测软件工程知识技能水平)