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

软件工程是将系统化的、规范化的、可量化的方法应用于软件的开发、运行和维护,即将工程化的方法应用于软件,是一种层次化的技术,如下图所示。

(1)软件工程的根基就在于对质量的关注(Quality)。

  事实上任何工程方法都必须以有组织的质量保证为基础,全面的质量管理和类似的理念刺激了不断的过程改进,正是这种改进导致了更加成熟的软件工程方法的不断出现。

(2)软件工程的基层是过程(Process)层。

  软件过程将各个技术层次结合在一起,使得合理、及时地开发软件成为可能。过程定义了一组关键过程区域的框架,而关键过程区域构成了软件项目的管理控制的基础,并且确立了上下各区域之间的关系,其中规定了技术方法的采用、工程产品(模型、文档、数据、报告、表格等)的产生、里程碑的建立、质量的保证及变化的适当管理。

(3)软件工程的方法(Methods)层。

  提供了建造软件在技术上需要“如何做”。方法涵盖了一系列的任务:需求分析、设计、编程、测试和维护。

(4)软件工程的工具层

  对过程和方法提供了自动的或半自动的支持。当这些工具被集成起来使得一个工具产生的信息可被另外一个工具使用时,一个支持软件开发的系统就建立了,称为计算机辅助软件工程(CASE)。CASE集成了软件、硬件和一个软件工程数据库(一个仓库,其中包含了关于分析、设计、编程和测试的重要信息),从而形成了一个软件工程环境。

为了使软件开发的过程更加有序,可以使用以下几种过程模型。

1、瀑布模型一个系统的、顺序的软件开发方法。适用于需求确定,工作能够采用线性方式完成的软件。
2、V模型将软件实现和验证有机的结合起来,在保证较高的软件质量情况下缩短开发周期。适合工程量小、人力资源少并且在开发过程中改动不大的项目。
3、增量模型侧重于每一个增量都提交一个可以运行的产品。适用于以下场景:
(1)进行已有产品的升级或新版本的开发;
(2)对完成期限有严格要求的产品;
(3)对所开发的领域比较熟悉而且已有原型系统;
(4)项目在既定的商业要求期限之前不可能找到足够的开发人员。
4、原型模型是先借用已有系统作为原型模型,通过“样品”不断改进,使得最后的产品就是用户所需要的。主要是通过向用户提供原型获取用户的反馈,使开发出的软件能够真正反映用户的需求。
5、喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。各个开发阶段没有特定的次序要求,并且可以交互进行,可以在某个开发阶段中随时补充其他任何开发阶段中的遗漏。

软件开发过程的五个阶段。

(1)分析
软件需求分析就是回答做什么的问题。它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。需求分析的主要方法有结构化分析方法、数据流程图和数据字典等方法。
(2)设计
软件设计可以分为概要设计和详细设计两个阶段。概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库,常用方法还是结构化程序设计方法。
(3)编码
软件编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的"源程序清单"。充分了解软件开发语言、工具的特性和编程风格,有助于开发工具的选择以及保证软件产品的开发质量。
(4)测试
软件测试的目的是以较小的代价发现尽可能多的错误。不同的测试方法有不同的测试用例设计方法。两种常用的测试方法是白盒法测试对象是源程序,依据的是程序内部的的逻辑结构来发现软件的编程错误、结构错误和数据错误。结构错误包括逻辑、数据流、初始化等错误。用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果。
(5)维护
维护是指在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后,对软件产品所进行的一些软件工程的活动。
在实际开发过程中,软件开发并不是从第一步进行到最后一步,而是在任何阶段,在进入下一阶段前一般都有一步或几步的回溯。在测试过程中的问题可能要求修改设计,用户可能会提出一些需要来修改需求说明书等。

一、选择题
1、软件工程的出现主要是由于(C )。
A.程序设计方法学的影响 B.其它工程科学的影响
C.软件危机的出现 D.计算机的发展

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

3、从结构化的瀑布模型看,在它的生命周期中的八个阶段中,下面的几个选项中哪个环节出错,对软件的影响最大(C )。
A.详细设计阶段 B.概要设计阶段
C. 需求分析阶段 D. 测试和运行阶段

4、( D )引入了“风险驱动”的思想,适用于大规模的内部开发项目。
A.增量模型 B.喷泉模型 C.原型模型 D.螺旋模型

5、模块的内聚性最高的是( D )
A.逻辑内聚 B.时间内聚 C.偶然内聚 D.功能内聚

6、在面向对象软件开发方法中,类与类之间主要有以下结构关系(A)
A.继承和聚集 B.继承和一般 C.聚集和消息传递 D.继承和方法调用

7、软件测试的目的是( B )。
A. 评价软件的质量 B. 发现软件的错误
C. 找出软件的所有错误 D. 证明软件是正确的

8、以下哪种测试方法不属于白盒测试技术(B)
(A)基本路径测试(B)边界值分析测试(C)循环覆盖测试(D)逻辑覆盖测试

9、试判断下列叙述中,哪个(些)是正确的(D)
a.软件系统中所有的信息流都可以认为是事务流
b.软件系统中所有的信息流都可以认为是变换流
c.事务分析和变换分析的设计步骤是基本相似的
A.a B.b C.c D.b和c

10、为了提高软件的可维护性,在编码阶段应注意( D )
A.保存测试用例和数据 B.提高模块的独立性
C.文档的副作用 D.养成好的程序设计风格

二、填空题
1.可行性研究一般可以从(经济)可行性、(技术)可行性、(运行)可行性、(法律)可行性和(开发)可行性等方面来研究。
2.详细设计的工具有(图形工具)、(表格工具)和(语言工具)。
3.把程序从一个硬件或软件环境中转移到另一种配置环境称为软件的(可移植性)。
4.一个模块拥有的直属下级模块的个数称为(桩模块),一个模块的直接上级模块的个数称为(驱动模块)。
5.提高软件质量和可靠性的技术大致可分为两类,一类是(避开技术),另一类是(容错技术)。

三、判断题
1、软件生存周期是从软件开始开发到开发结束的整个时期。(× )
2、用CASE环境或程序自动生成工具来自动生成一部分程序。( √ )
3、以结构化分析方法建立的系统模型就是数据流图。( × )
4、信息隐蔽是指模块中所包括的信息不允许其它不需要这些信息的模块调用。(×)
5、模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚,低耦合度的软件产品。(√)

四、名词解释题
  1.重构
  2.功能内聚
  3.观察者模式
  4.对象组合
  5.设计模式

五、简答题
1.说明结构化程序设计的主要思想是什么?
答:(1)自顶向下、逐步求精的程序设计方法
(2)使用3种基本控制结构、单入口、单出口来构造程序。

2.什么是软件的生存周期?包括哪几个部分?
答:个软件从定义到开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件生存周期就是从提出软件产品开始,直到该软件产品被淘汰的全过程。它包括制定计划、需求分析、软件设计、程序编写、软件测试、运行维护等。

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

4.为什么数据流图要分层?
答:这了表达数据处理过程的数据加工情况,用一个数据流图是不够的。为表达稍为复杂的实际问题,需要按照问题的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。

六、应用题
某航空公司规定,乘客可以免费托运重量不超过30kg的行李。当行李重量超过30kg时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。用判定树表示与上述每种条件组合相对应的计算行李费的算法.

答案:


注:题目来源于百度文库。

posted on 2020-01-04 00:35  MinHui  阅读(501)  评论(0)    收藏  举报

导航