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


软件工程是一门一级学科,在其下面又有着许多方向,例如:Web开发方向、大数据方向、云计算方向、网络安全等方向。班上的同学也都是各个方向的学生。所以如果在评测软件工程知识技能太过于偏向某个方向可能会造成成绩的不公平。所以对于评测不同方向的学生的软件工程知识技能水平时,一定需要保证不会出现偏袒。

由于不能太过于偏向某门技术方向,所以本次评测将注重于测试学生的软件工程基础水平。我们将从软件工程、代码分析能力、场景分析能力等几方面对学生经行考查。

软件工程知识考察

这方面主要是考察学生对软件工程开发流程的掌握。作为一个研究生,我们不仅仅需要掌握代码编写能力,还需要掌握团队管理能力。因此就需要学习了解整个软件工程的开发流程控制,甚至是整个软件公司运营管理。这对我们学生以后升为管理层或自主创业有一定的帮助。

选择题题:

1、下面不是常用的开发模型有(D)
( 解释:
常用模型有:瀑布模型、原型模型、喷泉模型,没有流水模型
)
A:瀑布模型 B:原型模型 C:喷泉模型 D:流水模型

2、下面代码中A和B的关系可以用什么表示(C)

public class A {
    private B b;
}


解释:
泛化关系是一般用继承来表示extends
实现关系用实现结构implement表示
关联一般表示作为类的成员
依赖一般属于在方法中使用到来表示

A:泛化 B:实现 C:关联 D:依赖

3、下面代码中A和B的关系可以用什么表示(D)

public class A {
    public void test() {
        B b = new B();
        ···
    }
}


解释:
泛化关系是一般用继承来表示extends
实现关系用实现结构implement表示
关联一般表示作为类的成员
依赖一般属于在方法中使用到来表示

A:泛化 B:实现 C:关联 D:依赖

4、在软件生命周期中,能准确确定软件系统的体系结构的功能阶段是     C     。  
A、概要设计   B、详细设计     C、需求分析    D、可行性分析

5、软件测试的目的是 C
(
解释:
软件不可能没错,而且也不可能找出所有的错误

A.证明软件无错 B.发现软件中的所有错误 C.尽可能发现软件

6、以下哪项不是UML建模中的图 C
(解释:
UML中包括类图 ·对象图 ·组件图 ·部署图 用例图 ·时序图 ·协作图 ·状态图 ·活动图
不包括流程图

A、协作图 B、类图 C、流程图 D、时序图

7.下面哪些UML图描述系统行为? A
(解释:
UML的图分为两类·结构图 ·行为图
结构图包括:类图 ·对象图 ·组件图 ·部署图
行为图包括:用例图 ·时序图 ·协作图 ·状态图 ·活动图

A.用例图        B.类图          C.对象图 D、部署图

8、UML 图中描述系统结构的是  A
(解释:
UML的图分为两类·结构图 ·行为图
结构图包括:类图 ·对象图 ·组件图 ·部署图
行为图包括:用例图 ·时序图 ·协作图 ·状态图 ·活动图

A.组件图        B.顺序图        C.状态图

9、单元测试的计划应该在什么阶段完成? C
(解释:
首先了解单元测试原理: 单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。
而需求分析与概要设计是在软件生命周期的“软件定义”阶段,此时还未进行软件开发,自然而然无法进行代码函数的测试

A.需求分析      B.概要设计      C.详细设计

10、以下哪些是软件体系结构? D

解释:
常见的体系结构有:分层模式、客户端 - 服务器模式、主从模式、管道过滤器模式、经纪人模式、点对点模式、事件总线模式、模型 - 视图 - 控制器模式、黑板模式、解释器模式
其中黑板模式为:应用中的多种不同数据处理逻辑相互影响和协同来完成数据分析处理。就好像多位不同的专家在同一黑板上交流思想,每个专家都可以获得别的专家写在黑板上的信息,同时也可以用自己的分析去更新黑板上的信息,从而影响其它专家。
所以本题应选D,没有白板模式应该为黑板模式

A、客户端 - 服务器模式 B、管道过滤器模式 C、点对点模式 D、白板模式

11、适合需求模糊或需求不确定系统开发的软件开发模型是    B
(
解释:
快速原型模型需要迅速建造一个可以运行的软件原型 ,以便理解和澄清问题,使开发人员与用户达成共识,最终在确定的客户需求基础上开发客户满意的软件产品。
)                              
 A.瀑布模型      B.快速原型模型     C.原型模型

名词解释

1.设计模式:
答案:是普通面向对象设计问题的解决方案,这类问题以一组交互类的形式出现,用户根据需要定制这些交互类以形成专门的设计。所有设计模式均可以从四个方面加以描述:模式名称、问题描述、解决方案和效果。
2.集成测试
答案:也称组装测试或联调。是指在单元测试的基础上,将所有模块按照概要设计要求组装成一个完整的系统而进行的测试。模块组装的方式有两种:渐增式和非渐增式。

简答题:

简述下软件工程生命周期
软件的生命周期可以分为6个阶段:
计划:软件开发方与需求方确定软件的开发目标及其可行性。
需求分析:对软件需要实现的各个功能进行详细分析。
设计:根据需求对整个软件系统进行设计。
编码:将软件设计的结果转换成计算机可运行的程序代码。
软件测试:发现软件在整个设计过程中存在的问题并加以纠正。
运行维护:延续软件的使用寿命。

1.某网络学院决定开发一个管理所有学生和教师信息的交互式网络系统,该系统提供如下服务:
(1)浏览学生信息:网络学院的任何人员,包括学生和老师,均可以浏览学院任何学生的信息,包括姓名、学号和专业名称。
(2)浏览教师信息:网络学院的任何人,包括学生和老师,均可以浏览学院任何教师的信息,包括姓名、工号和职称。
(3)登录:网络学院给学院每个人一个账号。拥有授权帐号的学生和老师,可以使用系统提供的页面设置个人密码,并使用该账号和密码向系统注册。
(4)修改个人信息:学生或老师向系统注册后,可以发送电子邮件或使用系统提供的页面,对个人信息进行修改。
(5)删除个人信息:只有网络学院的管理人员才能删除不再是学院学生或老师的人员的有关信息。

试问哪些是参与者?哪些是用例?并用UML的用例图描述系统行为。

解释:从上面文档可以看出参与者有:学生、老师、管理人员,而学生与老师有多个共用功能,所以可以从学生和老师中提取一个基本参与者:网络学院人员。
然后分析具有哪些用例,可以从文中了解到:学生和老师可以登录、修改个人信息、浏览学生信息、浏览教师信息等。
只有网络学院管理员才能够删除个人信息

答案:

代码分析能力

为了提升学生对技术的积累能力,要锻炼学生的源码阅读能力。我们不仅仅要会用别人的api,还要知其原理。以后成为Leader后,更需要经常审查刚入职员工的代码。所以代码阅读分析能力是一名软件工程师在走向优秀的道路上必不可少的一门技能。而通过画流程图,能够让代码一目了然。所以本部分将以画流程图的形式让学生分析源码,最后说出自己对这段代码的理解。

    private static int xxxFunction(char[] a, int fromIndex, int toIndex,
                                     char key) {
        int low = fromIndex;
        int high = toIndex - 1;

        while (low <= high) {
            int mid = (low + high) >>> 1;
            char midVal = a[mid];

            if (midVal < key)
                low = mid + 1;
            else if (midVal > key)
                high = mid - 1;
            else
                return mid; // key found
        }
        return -(low + 1);  // key not found.
    }

请画出上面代码的流程图,并根据流程图说出上面代码的作用
上面代码是在一个数组中查找key


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM