如何评测软件工程知识技能水平?附带个人整理试卷

个人认为软件工程师水平区分可以从以下角度进行考量:

1.仅仅是停留在编程语言面上还是理解编程语言的思想【OOP 、OOD、OOA】以及各种编程语言的优势在什么领域劣势,在什么领域?

2.数据结构与算法,搬砖还是造轮子?同样一个问题的处理时间不同的DS或者算法处理的时间

2.在给出一个需求的时候之后,是只关注需求的完成,还是在完成需求的完成的同时遵循代码的规范,例如:正确的命名方式以及逻辑模块的划分【1个方法中多个逻辑?】

3.在处理问题的时候是只关注眼前的问题,还是在解决到当前的问题时考虑对其他模块的影响。

4.能精准的锁定自己所设计的软件的用户群体,以及对用户群体心理的把握,是仅仅完成产品还是在完成产品的同时能考虑到大多数用户的偏好。

5.在出现问题时是否能快速逐级的锁定出问题的模块?

6.对各种设计模式的机制理解以及应用场景

7.是否具备足够的网络安全安全方面的知识

8.进度安排,项目管理

9.撰写技术文档

10.仅仅会用框架还是明白各种框架的原理机制与为什么这么设计?指出该框架的优劣

11.对系统质量的要求:一般、严厉、苛刻?

 

 

 

 

 

由于是软件工程的考试,所以相关试题均是软件工程的试题。

试卷部分

一、名词解释【来源:均为书上概念】 ===》答案查询可得

1.内聚与耦合

2.软件危机

3.类

4.软件维护

5.软件的生命周期

 

二、填空题

  1. 瀑布模型是以文档为驱动、适合于______软件项目的开发。

    参考答案:软件需求确定的

    考察点及解析:区分于软件需求不确定的快速原型模型。

    根据瀑布模型与快速原型模型概念即可得。

    来源:2006年中南大学考研试题

     

  2. 模块之间的耦合最好采用______耦合。

参考答案:数据

考察点及解析:耦合紧密程度排序

一般模块之间可能的连接方式有七种,构成耦合性的七种类型。它们之间的关系为(耦合性性由强到弱):

  • 内容耦合(Content Coupling) 如果发生下列情形,两个模块之间就发生了内容耦合。

    1. 一个模块直接访问另一个模块的内部数据;

    2. 一个模块不通过正常入口转到另一模块内部;

    3. 两个模块有一部分程序代码重叠(只可能出现在汇编语言中);

    4. 一个模块有多个入口。

  • 公共耦合(Common Coupling) 若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。

  • 外部耦合(External Coupling) 一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。

  • 控制耦合(Control Coupling) 如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。

  • 印记耦合(Stamp Coupling) 如果一组模块通过参数表传递记录信息,就是标记耦合。它是某一数据结构的子结构,而不是简单变量。

  • 数据耦合(Data Coupling) 如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。

  • 非直接耦合(Nondirect Coupling) 如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。这种耦合的模块独立性最强。

来源:2014年944专业课考研真题

 

  1. 在常见的软件生存期模型中,______模型是风险驱动的。

参考答案:螺旋

考察点及解析:螺旋模型的特点。

螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。

来源:2008年中南大学考研试题

 

4.UML 关系包括关联、 聚合、 泛化、 实现、 依赖等 5 种类型, 请将合适的关 系填写在下列描述的( ) 中。 ① 用例及其协作之间是_____关系。 ② 在学校中, 一个学生可以选修多门课程, 一门课程可以由多个学生选修, 那 么学生和课程之间是______ 关系。 ③ 类 A 的一个操作调用类 B 的一个操作, 且这两个类之间不存在其他关系, 那 么类 A 和类 B 之间是__ 关系。 ④ 森林和树木之间是_____ 关系。

参考答案:实现,关联,依赖,聚合

考察点及解析:UML几种关系的理解

解析见选择题2.

来源:百度文库,高级软件工程师测试题第一套

 

5.需求分析的基本任务是___________,在需求分析结束前,系统分析员应该写出 _ ________,以书面的形式准确描述软件需求。

参考答案:准确地回答系统必须做什么 ,软件需求规格说明书。

考察点及解析:熟悉对软件开发过程中需求分析阶段。【需求分析为开发过程中的重要阶段】

解析见简答题4。

来源:2008中南大学考研真题

 

三、选择题

1.UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法()。

A.基于瀑布模型的结构化方法 B.基于需求动态定义的原型化方法

C. 基于对象的面向对象的方法 D. 基于数据的数据流开发方法

参考答案:C

考察点及解析:对UML的理解

面向对象的技术首先是SmallTalk语言中得到应用,后来随着C++、JAVA等面向对象语言的出现,面向对象技术的广泛开发工具的支持,UML是在面向对象的软件开发在设计阶段常用的一个工具。

来源:郑州大学软件工程考研试题【年份待确定】

 

2.车与车轮之间的关系是()。

A.组合  B.聚合  C.继承  D.关联

参考答案:A

考察点及解析:UML的集中关系的理解

UML中定义的关系主要有六种:

泛化:

在程序中通过“继承”来实现,也可以认为就是继承; 通过空心三角形+实线来表示,子类指向父类。

实现:

可以理解为类与接口之间的关系; 通过空心三角形+虚线来表示,从实现类指向接口

依赖:

是一种“使用”关系,即一个类(A)的实现需要用到另一个类(B)。 尽量不要使用双向依赖。 一般表现为类A中的方法需要类B的实例作为其参数或变量,但是类A本身并不需要引用类B的实例作为其成员变量。 使用虚线箭头表示,类A指向类B。

关联:

比依赖的关系更强,类A使用类B的实例作为自己本身的一个成员变量。 使用实线箭头表示,类A指向类B。

聚合:

传说中的 has-a关系,类A和类B是整体和部分的关系。但是两个部分的生存周期可以不同,没那么强的约束关系。 是一种更强的关联关系,关联关系的特例。 使用空心菱形+实线来表示,范围小的指向范围大的。

组合:

contains-a关系,类A和类B也是整体和部分关系,但是之间的关联更强,有共同的生命周期,一旦整体不存在,部分也将不存在。 通过实心菱形+实线来表示,范围小的指向范围大的。

来源: 百度文库 软件工程测试题汇集

 

3.在软件开发中,需求分析阶段可以使用的工具是( )。

A、N-S图 B、DFD图 C、PAD图 D、程序流程图

参考答案:B

考察点以及解析:

需求分析最重要的就是IT人员、业务人员都能够理解的,便于双方沟通、确认,同时又不能够是纯粹自然语言的,否则没有办法转换为计算机的程序实现: 1、N-S图,Nassi和Shneiderman 提出了一种符合结构化程序设计原则的图形描述工具,叫做盒图,也叫做N-S图。为表示五种基本控制结构,在N-S图中规定了五种图形构件。 2、DFD图,简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。 3、PAD图,PAD是Problem Analysis Diagram的缩写,它是日本日立公司提出,由程序流程图演化来的,用结构化程序设计思想表现程序逻辑结构的图形工具。 4、程序流程图,独立于任何一种程序设计语言,比较直观、清晰,易于学习掌握。 DFD图是需求分析阶段业务人员能够理解的工具,而N-S图、PAD图、程序流程图,都是具体到设计阶段的设计工具

来源:http://www.k51.com.cn/QuestDetail/0c78e9fb-6f7f-415b-b5d5-e6d6001500c6.html

 

4.以下哪一项不是面向对象的特征( ).

A.多态性 B.继承性 C.封装性 D.过程调用

参考答案:D

考察点及解析:OOP特征的理解

面向对象的特征有:

(1)对象唯一性。

每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。

(2)抽象性。

抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。

(3)继承性。

继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。

继承性是面向对象程序设计语言不同于其它语言的最重要的特点,是其他语言所没有的。

在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承。

在类层次中,子类继承了多个父类的数据结构和方法,则称为多重继承

多重继承,JAVA、VB、NET、Objective-C均仅支持单继承,注意在C++多重继承时,需小心二义性。

软件开发中,类的继承性使所建立的软件具有开放性、可扩充性,这是信息组织与分类的行之有效的方法,它简化了对象、类的创建工作量,增加了代码的可重用性。

采用继承性,提供了类的规范的等级结构。通过类的继承关系,使公共的特性能够共享,提高了软件的重用性。

(4)多态性(多形性)

多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。

多态性允许每个对象以适合自身的方式去响应共同的消息。

多态性增强了软件的灵活性和重用性。

来源:2016年复旦大学期末考试题

 

5.模块内聚度越高,说明模块内各成分彼此结合的程度越( )。

A.松散 B.紧密 C.无法判断 D.相等

参考答案:B

考察点:内聚与耦合的概念理解。

内聚度是前述信息隐藏和局部化概念的自然扩展,它标志一个模块内部各成分彼此结合的紧密程度。内聚度按其高低程度可分为7级,内聚度越高越好。

内聚度是前述信息隐藏和局部化概念的自然扩展,它标志一个模块内部各成分彼此结合的紧密程度。

设计软件时,应该能够识别内聚度的高低,并通过修改设计尽可能提高模块内聚度,从而获得较高的模块独立性

来源:2015北京航空航天大学期末考试题

 

6.下面不属于软件需求分析阶段主要工作的是()

A、需求变更申请

B、需求分析

C、需求评审

D、需求获取

参考答案:A

考察点与解析:

需求分析是软件生命周期的一个重要阶段,它的基本任务是准确地回答“系统必须做什么”这个问题,

它的主要工作分为4个方面,分别是需求获取、需求分析、编写需求规格说明书及需求评审。需求获取是通过和用户的接触初步确定系统的功能;需求分析的任务是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求;在需求分析阶段结束以前,系统分析员应该写出需求规格说明书;需求评审是根据需求规格说明书来严格审查和验证需求分析的结果。

来源:https://www.shangxueba.cn/933321.html

 

7、下列选项中不属于结构化程序设计原则的是( )。

A、可封装

B、自顶向下

C、模块化

D、逐步求精

参考答案:A

考察点与解析:

结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。

来源:

 

8、构成计算机软件的是()

A、源代码

B、程序与数据

C、程序与文档

D、程序、数据、相关文档

参考答案:D

考察点及解析:软件指的是计算机系统中与硬件相互依赖的另 —部分,包括程序、数据和有关的文档,选D。

来源:计算机二级MS Office试题库

 

9、软件开发模型是对软件开发过程的一种规范描述,用于表示软件开发过程的整体框架和软件开发活动各阶段间的关系。下列模型属于软件开发模型的是

Ⅰ.瀑布模型 Ⅱ.快速原型模型 Ⅲ.增量模型 Ⅳ.螺旋模型

A、Ⅰ、II、Ⅲ和Ⅳ

B、II、Ⅲ

C、Ⅰ、II和Ⅳ

D、II、Ⅲ和Ⅳ

参考答案:A

考察点及解析:软件开发模型的了解。

软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。 软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。对于不同的软件系统,可以采用不同的开发方法、使用不同的程序设计语言以及各种不同技能的人员参与工作、运用不同的管理方法和手段等,以及允许采用不同的软件工具和不同的软件工程环境。

软件工程之软件开发模型类型 1.边做边改模型 2.瀑布模型 3.演化模型 4.增量模型 5.螺旋模型 6.喷泉模型 7.敏捷模型-SCRUM

各种模型的优点和缺点 瀑布模型 文档驱动 系统可能不满足客户的需求 快速原型模型 关注满足客户需求 可能导致系统设计差、效率低,难于维护 增量模型 开发早期反馈及时,易于维护 需要开放式体系结构,可能会设计差、效率低 螺旋模型 风险驱动 风险分析人员需要有经验且经过充分训练

来源:https://wenku.baidu.com/view/0813c9d86e1aff00bed5b9f3f90f76c661374c55.html


 

四、简答题【简答题无解析】

1.什么是软件工程?软件工程与计算机科学有什么不同?

参考答案:软件工程是将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件。

SE与CS的区别:计算机科学着重于计算机相关原理和理论的研究。而软件工程与计算机科学不同,软件工程着重于如何建造软件系统,即把计算机技术看做工具,用以解决问题。

考察点:区分SE于CS

来源:一个复习提纲上列出的一道题目。

 

2..面向对象方法中,类和对象有何联系与区别?举例说明。

参考答案:联系:类是一组相似对象的一般化描述,同一个类中的对象继承类的属性和方法。

区别:类是一个抽象的概念,它不存在与现实中的时间空间中,类只是为所有的对象定义了抽象的属性和行为;类是一个静态的概念,类本身不携带任何数据,当没有为类创建任何对象时,类本身不存在于内存空间中。对象是类的一个具体。它是一个实实在在存在的东西;对象是一个动态的概念,每一个对象都存在这有别于其它对象的属于自己的独特的属性和行为。对象的属性可以随它自己的行为而发生改变。

举例:各自发挥。

考察点:考察对类与对象的理解

来源:2012年944考研真题

 

3.描述一个你最熟悉的设计模式以及这样设计的优缺点

参考答案:开放性试题

考察点:设计模式的理解考察

来源:来自之前高软作业

 

  1. 软件生存周期都包括哪些活动(至少写5个)。

参考答案:

image-20200101142243805

来源:2015-2016复旦大学期末考试题

 

5.传统"瀑布模型"的主要缺陷是什么? 试说明造成缺陷的原因。 参考答案:传统"瀑布模型"的主要缺陷及其原因: 在项目的早期, 用户常常很难清楚地 给出所有需求, 瀑布模型却要求如此。 由于瀑布模型的特点, 早期的错误直到开 发晚期才能被发现, 开发的风险较大。

考察点:传统瀑布模型以及缺点

来源:https://wenku.baidu.com/view/606bf1aaccbff121dc36835e.html

 

6.黑盒测试与白盒测试的差异是什么?

参考答案:

一、测试方式不同

1、黑盒测试:功能测试,是通过测试来检测每个功能是否都能正常使用。

2、白盒测试:称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。

二、测试目的不同

1、黑盒测试:把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。

2、白盒测试:通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试。在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。

三、测试原则不同

1、黑盒测试:以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。很明显,如果外部特性本身设计有问题或规格说明的规定有误,用黑盒测试方法是发现不了的。

2、白盒测试:一个模块中的所有独立路径至少被测试一次。所有逻辑值均需测试true和false两种情况。

考察点:黑盒测试与白盒测试的差异。

来源:2019年南京大学考研真题

 

 

 

 

 

 

 

 

 

 

 

 

【彩蛋】

恶趣味的一道判断题:

The best reason for using Independent software test teams is that arguments between developers and testers are reduced. ( )

参考答案:F

 

你可能感兴趣的:(如何评测软件工程知识技能水平?附带个人整理试卷)