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

一、软件工程师的软件工程知识技能水平体现在哪里?

答:通过这个学期的高级软件工程课程的学习,我认为一位合格的软件工程师的软件工程知识水平主要体现在以下几个方面:

1.精准的需求分析

需求分析是软件生命周期中相当重要的一个阶段。作为一名合格的软件工程师,如何精确的进行需求分析,是其基本的职业素养。具体来说,需求分析阶段的工作可以分成四 个方面:问题识别、分析与综合、编制需求分析的文档和需求分析与评审。

通过业务建模、UML用例建模和UML用例分析后,我们可以进一步分析软件需求,建立软件系统的分析模型,从而继续进行下一步的架构设计与构件设计,最后进行代码实现。

2.良好的代码风格与编码能力

良好的代码风格与编程规范有利于写出更加优秀的代码,不仅需要在功能上实现设计的要求,而且代码的封装性一定要好,软件的开发者只是向使用者提供代码的接口,而不能让使用者能够对代码进行修改。换而言之,OO(面向对象)的编程思想贯穿了整个代码的编写。而UML图中所要实现的类以及类中的方法正是基于这个思想。

3.能够选用合适的设计模式与架构风格

如果所有的代码都重新编写,那么很多时候都是重复而又繁琐的工程。因此,如果事先选用合适的设计模式,可以实现代码复用、增加可维护性。就以观察者模式为例,当对象间存在一对多的关系时,使用观察者模式就是一个不错的选择。每当目标对象的状态发生改变的时候,所有的依赖对象(观察者对象)都会收到通知,从而进行相应的操作。

 

4.具有软件测试的意识

 

 很多时候,想要一次性实现所有的功能模块对于开发者而言,并不现实。因此需要对其中的各个子模块和最终的整合模块进行不断的测试与改进,经过这样不停的迭代,最终才能够得到一个合格的软件开发应用产品,再上线提供给用户使用。

5.有团队合作意识

众人拾柴火焰高,一个大工程往往是由很多小工程组成的,因此只有一个人的话,能完成的工程是有限的。团队的力量在这里就得到了充分的体现,如果每个人分工一个小模块,最后组合在一起,就可以实现整个工程模块需求。显而易见,一个合格的软件工程师必须要有很强的团队意识,单靠一个人的力量,是无法支撑起很大的项目的。

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

参考链接:

https://wenku.baidu.com/view/adf7f013e55c3b3567ec102de2bd960590c6d9a0.html

https://wenku.baidu.com/view/8c5d95b665ce050876321320.html

1.选择题(共30分,一题3分)

(1)软件工程的出现主要是由于(C )。
A.程序设计方法学的影响 B.其它工程科学的影响

C. 软件危机的出现 D.计算机的发展

(2)软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是(C )
A、 硬件环境               B、软件开发的环境
C、软件开发工具和软件开发的环境 D、 开发人员的素质

(3)UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法(C )
A、基于瀑布模型的结构化方法 B、基于需求动态定义的原型化方法
C、基于对象的面向对象的方法 D、基于数据的数据流开发方法

(4)软件开发中常采用的结构化生命周期方法,由于其特征而一般称其为(A )
A、 瀑布模型 B、 对象模型 C、 螺旋模型 D、 层次模型

(5)模块的内聚性最高的是( D)

  A.逻辑内聚                                                        B.时间内聚

  C.偶然内聚                                                        D.功能内聚

(6)软件中所花费用最多的阶段是( D    )。 

   A.详细设计 B.软件编码 

  C.软件测试  D.软件维护

(7)“软件危机”是指(   C  )。 
    A. 计算机病毒的出现                 B.利用计算机进行经济犯罪活动    

    C.软件开发和维护中出现的一系列问题   D.人们过分迷恋计算机系统

(8)瀑布模型本质上是一种(  A   )。    

    A.线性顺序模型      B.顺序迭代模型    

    C.线性迭代模型      D.及早见产品模型

(9)软件维护产生的副作用,是指(  C   )。    

     A.开发时的错误                      B.隐含的错误    

     C.因修改软件而造成的错误   D.运行时误操作

(10)在白盒测试技术测试用例的设计中,(  A   )是最弱的覆盖标准。 
   A.语句覆盖    B.路径覆盖    

     C.条件组合覆盖      D.判定覆盖

2.判断题(共10分,一题2分)

(1)在面向对象的软件开发方法中,每个类都存在其相应的对象,类是对象的实例,对象是生成类的模板。(错)

(2)如果通过软件测试没有发现错误,则说明软件是正确的。(错)

(3)以对象,类,继承和通信为基础的面向对象设计方法(OOD)也是常见的软件概要设计方法之一。(对)

(4)软件生存周期是从软件开始开发到开发结束的整个时期。(错)

(5)耦合用于衡量一个模块内部的各个元素彼此结合的紧密程度。(错)

3.简答题(共30分,一题6分)

(1)衡量模块独立性的两个定性标准是什么 ?这两个标准的定义分别是什么 ?在我们的软件设计中,关于模块独立性我们追求的目标是什么 ?

 答:衡量模块独立性的两个定性标准是内聚和耦合。

耦合是指对一个软件结构内不同模块彼此之间互相依赖(连接)的紧密程度;而内聚则标志一个模块内部各个元素彼此结合的紧密程度。

在我们的软件设计中,关于模块独立性我们追求的目标是紧密内聚松散耦合。

(2)请简要说明需求分析的三个层次包括那些主要内容。

答:软件需求包括三个不同的层次—业务需求、用户需求和功能需求—也包括非功能需求。

业务需求反映了组织机构或客户对系统、产品高层次的目标要求。

用户需求文档描述了用户使用产品必须要完成的任务。

功能需求定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。

(3)简述编码风格的重要性。

答:阅读程序是软件开发和维护过程中的一个重要组成部分,程序实际上也是一种供人阅读的文章.应当在编写程序时讲求程序的风格,这将大量地减少人们读程序的时间.良好的编码风格有助于编写出可靠而又容

易维护的程序,编码的风格在很大程度上决定着程序的质量。

(4)面向对象的测试和传统开发方法的测试有什么不同 ?

答:(1)二者都可以分成四个阶段进行.但传统测试最小单元是模块,而在面向对象环境下,最小的可测试的单元是封装了的类或对象,而不是程序模块。

(2)因为面向对象软件没有一个层次的控制结构,所以传统的自顶向下和自底向上的组装策略意义不大. 每次将一个操作组装到类中(像传统的增殖式组装那样)常常行不通,因为在构成类的各个部件之间存在各种直接

的和非直接的交互.对于面向对象系统的组装测试,存在两种不同的测试策略。

(5)什么是软件维护?软件维护可以分为哪几类?

答:软件维护是指在软件系统已经交付使用之后,软件使用人员为了适应新的要求、满足新的需要或为了改正软件中存在的错误而对软件系统进行修改的过程。可以分为纠错性维护、完善性维护、适应性维护和预见性维护。

4.应用题(共30分,一题15分)

一、某电器集团公司下属的厂包括技术科、生产科等基层单位。现在想建立一个计算机辅助企业管理系统,其中:

    生产科的任务是:

    (1)根据销售公司转来的内部合同(产品型号、规格、数量、交获日期)制定车间月生产计划。

    (2)根据车间实际生产日报表、周报表调整月生产计划

    (3)以月生产计划为以及,制定产品设计(结构、工艺)及产品组装月计划。

    (4)将产品的组装计划传达到各科,将组装月计划分解为周计划,下达给车间

    技术科的任务是:

    (1)根据生产科转来的组装计划进行产品结构设计,产生产品装配图给生产科,产生外购需求计划给供应科,并产生产品自制物料清单。

    (2)根据组装计划进行产品工艺设计,根据产品自制物料清单产生工艺流程图给零件厂。 试写出以上系统中生产科和技术科处理的软件结构图。

答:生产科图像:

 

技术科图像:

 

 

 二、一个软件公司有许多部门,分为开发部门和管理部门两种,每个开发部门开发多个软件产品,每个部门由部门名字唯一确定。该公司有许多员工,员工分为经理,工作人员和开发人员。

开发部门有经理和开发人员,管理部门有经理和工作人员。每个开发人员可参加多个开发项目,每个开发项目需要多个开发人员,每位经理可主持多个开发项目,建立该公司的对象模型。

 答:

posted @ 2020-01-04 21:55  Fengyakk  阅读(513)  评论(0编辑  收藏  举报