软件工程复习题

时间:2019-05-15 12:50:35下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《软件工程复习题》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《软件工程复习题》。

第一篇:软件工程复习题

第三章 软件工程

一、软件工程基本概念

1.软件是计算机系统中与硬件相互依存的重要部分,包括程序、数据及相关的 文档。其中,程序 是软件开发人员根据用户需求开发的、用程序设计语言描述的、适

合计算机执行的指令(语句)序列。

2.下列叙述中,正确的是(D)。A.软件就是程序清单B.软件就是存放在计算机中的文件 C.软件应包括程序

清单及运行结果D.软件包括程序和文档3.软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)

4.软件工程的出现是由于(软件危机的出现)5.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做(软件危机)

软件工程概念的出现源自软件危机。所谓软件危机是泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。总之,可以将软件危机归结为成本、质量、生产率等问题。

6.开发大型软件时,产生困难的根本原因是(大型系统的复杂性)。

7.软件危机出现于20世纪60年代末,为了解决软件危机,人们提出了 软件工程学 的原理来设计软件这就是软件工程诞生的基础。

8.下列不属于软件工程的3个要素的是(D)A.工具B.过程C.方法D.环境 软件工程过程与软件生命周期

9.软件工程过程是把输入转化为输出的一组彼此相关的 资源 和活动。通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为 软件生命周期 10.软件生命周期中所花费用最多的阶段是(软件维护)11.软件开发的结构化生命周期方法将软件生命周期划分成(定义、开发、运行维护)。12.软件生命周期一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。软件工程的目标与原则

13.软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。软件开发技术包括:软件开发方法学、开发过程、开发工具和软件工程环境,主体内容是软件开发方法学。软件工程管理包括:软件管理学、软件工程经济学、软件心理学等内容。14.软件工程的理论和技术性研究的内容主要包括软件开发技术和(软件工程管理)

15.软件工程的原则包括抽象、信息隐藏、模块化、局部化、确定性、一致性、完备性和可验证性。

软件开发工具与软件开发环境

16.开发软件时对提高开发人员工作效率至关重要的是(先进的软件开发工具和环境)17.软件开发环境是全面支持软件开发全过程的 软件工具 集合。常用的软件开发方法和技术可以分为三大类:瀑布型、增量型和变换型。瀑布型开发方法将软件生命周期的各项活动规定为按固定顺序连接的若干阶段,强调早期的需求分析和开发的阶段性,强调产品测试;但是不能适应需求的变化。增量型则先建立一个不完全的系统,通过对需求的理解再进一步扩充和完善。例:瀑布模型突出的缺点是不适应(D)的变动 A.算法B.平台C)程序语言D.用户需求

二、结构化分析方法需求分析与需求分析方法

18.在软件生产过程中,需求信息的给出是(软件用户)。19.需求分析中,开发人员要从用户那里了解(软件做什么)。

20.需求分析阶段的任务是确定(软件系统功能)21.需求分析的任务是发现需求、求精、建模和定义需求的过程。需求分析将创建所需的数据模型、功能模型和 控制模型

22.需求分析阶段的工作:需求获取、需求分析、编写需求规格说明书、需求评审

下列工具中属于需求分析常用工具的是(D)。A)PADB)PFDC)N—SD)DFD 结构化分析方法 常用的需求分析方法:

(1)结构化分析方法。主要包括:面向数据流的结构化分析方法(SA),面向数据结构的Jackson方法(JSD)和面向数据结构的结构化数据系统开发方法(DSSD)(2)面向对象的分析方法(OOA)

23.结构化方法的核心和基础是 结构化程序设计理论24.下列不属于结构化分析的常用工具的是(D)。A)数据流图B)数据字典C)判定树D)PAD图 25.在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是(B)

A)可行性分析 B)需求分析C)详细设计D)程序编码

26.数据流图用于抽象描述一个软件的逻辑模型.数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是(A)。

A)控制流B)加工C)数据存储D)源和潭 说明:数据流图中的主要图形元素与说明: 27.在数据流图(DFD)中的箭头代表的是(数据流)28.在数据流图(DFD)中,带有名字的箭头表示(数据的流向)。

29.在结构化分析方法中,用于描述系统中所用到的全部数据和文件的文档称为 数据字典软件需求规格说明书

30.软件需求规格说明书 是需求分析阶段的最后结果 31.下列叙述中,不属于软件需求规格说明书的作用的是(D)

A.便于用户、开发人员进行理解和交流B.反映出用户问题的结构,可以作为软件开发工作的基础和依据C.作为确认测试和验收的依据D.便于开发人员进行需求分析

32.(数据描述)是对软件系统所必须解决的问题做出的详细说明

说明:需求规格说明书一般包括以下内容:概述、数据描述、性能描述、功能描述、参考文献目录等。其中概述从系统角度描述软件的目标和任务;功能描述中描述了为解决用户问题所需要的每一项功能的过程细节;性能描述说明系统应达到的性能和应该满足的限制条件、检测的方法和标准。

三、结构化设计方法软件设计的基本概念

33.在软件开发中,下面任务不属于设计阶段的是(D)A)数据结构设计 B)给出系统模块结构 C)定义模块算法 D)定义需求并建立系统模型

34.软件设计包括软件的结构、数据、接口和过程设计,其中软件的过程设计是指(系统结构部件转换成软件的过程描述)。

说明:结构设计:定义软件系统各主要部件之间的关系;数据设计:将分析时创建的模型转化为数据结构的定义;接口定义:描述软件内部、软件和协作系统之间以及软件与人之间如何通信;过程设计:把系统结构部件转换成软件的过程性描述。

35.下面不属于软件设计原则的是(C)A.抽象 B.模块化C.自底向上D.信息隐藏

36.耦合和内聚是评价模块独立性的两个主要标准,其中内聚 反映了模块内各成分之间的联系,耦合反映了模块间互相连接的紧密程度。

37.内聚性是信息隐蔽和局部化概念的自然扩展,一个模块的内聚性越强,则该模块的模块独立性越 强。一个模块与其它模块的耦合性越强,则它的模块独立性越 弱。38.下列叙述中,正确的是(C)

A.接口复杂的模块,其耦合程度一定低B.耦合程度弱的模块,其内聚程度一定低C.耦合程度弱的模块,其内聚程度一定高D.以上都不对

39.下列选项中,不属于模块间耦合的是(B)。A.数据耦合B.同构耦合C.异构耦D.公用耦合40.软件设计中,有

利于提高模块独立性的一个准则是(C)。

A.低内聚低耦合B.低内聚高耦合C.高内聚低耦合D.高内聚高耦合 概要设计

41.软件的概要 设计又称为总体结构设计,其主要任务是建立软件系统的总体结构,设计数据结构及数据库,编写概要设计文档,概要设计文档评审。

42.在结构化方法中,软件功能分解属于下列软件开发中的阶段是(C)

A.详细设计 B.需求分析 C.总体设计 D.编程调试 43.在概要设计阶段,常用的软件结构设计工具是 结构图(sc),也称程序结构图。生成的结构图中,带有箭头的连线表示(模块之间的调用关系),矩形表示模块。44.在概要设计阶段,一般采用面向数据流的设计方法。数据流的类型有 变换型和事务型。将变换型映射成结构图称为 变换分析。将事务型映射成结构图称为 事务分析。

45.好的软件设计结构通常 顶层 高 扇出,中间扇出较少,底层 高 扇入。46.模块的控制范围包括它本身以及它所有的从属模块,模块的作用范围是指模块内一个判定的作用范围,凡是受到这个判定影响的所有模块都属于这个判定的作用范围。理想的情况是(模块的作用范围应在控制范围内)详细设计

47.详细设计 的任务是为软件结构图中的每一个模块确定实现算法和局部数据结构,用选定的表达工具表示算法和数据结构的细节。确定怎样来具体实现所要求的系统。48.为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为(N—S图)。

49.详细设计的结果基本决定了最终程序的(质量)。50.软件设计模块化的目的是 降低复杂性。51.详细设计的典型语言描述工具是(PDL)

结构化分析(需求阶段)的常用工具有:数据流图(DFD)、数据字典(DD)、判定树和判定表

结构设计(概要设计阶段)工具是:结构图(SC, structure chart)

过程设计(详细设计阶段)常见的工具有:程序流程图、N—S图、PAD图(问题分析图,)和PDL(过程设计语言)

四、软件测试 软件测试的目的52.在软件测试设计中,软件测试的主要目的是(D)。A.实验性运行软件B.证明软件正确 C.找出软件中全部错误D.发现软件错误而执行程序

(注意:不是为了证明软件的正确性,也不是为了找出全部错误)

软件测试的准则

53.下列叙述中.不属于测试的特征的是(C)。A.测试的挑剔性B.完全测试的不可能性C.测试的可靠性D.测试的经济性 软件测试技术与方法

软件测试方法从是否需要执行被测试软件的角度,可以分为 静态测试 和 动态测试 ;按功能划分为 白盒测试 和 黑盒测试。

静态测试包括 代码检查、静态结构分析、代码质量量度 等

白盒测试和黑盒测试都属于 动态测试

白盒测试的主要方法: 逻辑覆盖、基本路径测试 等 黑盒测试的主要方法: 等价类划分法、边界值分析法、错误推测法、因果图 等

54.下列不属于静态测试方法的是(B)。

A.代码检查B.白盒法C.静态结构分析D.代码质量度量

55.在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序看做是(A)。

A.路径的集合B.循环的集合C.目标的集台D.地址的集合56.完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是(A)A.黑箱测试法B.白箱测试法C.错误推测法D.安装测试法

57.黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证,不考虑程序内部的逻辑结构,在软件接口处进行。常用的黑箱测试有等价分类法、边界值分析法、因果图法和错误推测法4种。软件测试的实施

58.软件测试过程一般按4个步骤进行,即单元测试、集成测试、验收测试(确认测试)和系统测试58.检查软件产品是否符合需求定义的过程称为(A)A.确认测试B.集成测试C.验证测试D.验收测试 说明:软件的测试过程一般按4个步骤进行:单元测试:对软件设计的最小单位—模块进行正确性检验的测试,发现模块内部可能存在的错误。由于模块通常不是一个独立的程序,不能单独运行,所以常常需要用到模拟环境。可以采用静态测试和动态测试(以白盒测试为主)。

集成测试:测试和组装模块的过程,主要是发现与接口有关的错误,依据是概要设计说明书。涉及的内容有:软件单元的接口测试、全局数据结构测试、边界条件和非法输入的测试等。通常采用两种方式:非增量方式组装域增量方式组装

验收测试(确认测试):验证软件的功能和性能以及其

他特性是否满足了需求规格说明书中确定的各种需求,以及软件配置是否完全、正确。采用黑盒测试。系统测试:将软件与硬件、用户、数据等组合,在实际运行环境下对整个系统进行集成测试和确认测试。59.软件开发离不开系统环境资源的支持.其中必要的测试数据属于(D)。

A.硬件资源B.通信资源C.支持软件D.辅助资源

软件测试过程中,辅助资源包括测试用例(测试数据)、测试计划、出错统计和最终分析报告等。60.为了提高测试的效率,应该(D)

A.随机选取测试数据B.取一切可能的输入数据作为测试数据 C.在完成编码以后制定软件的测试计划D.集中对付那些错误群集的程序

61.为了便于对照检查,测试用例应由输入数据和预期的 输出结果 两部分组成。

四、程序的调试

软件调试(Debug,即排错)的任务是诊断和改正程序中的错误,与软件测试不同,软件测试是尽可能多地发现软件中的错误。软件测试贯穿整个软件生命期,调试主要在开发阶段。

62.程序调试的基本步骤:错误定位、修改和设计代码以排除错误、进行回归测试防治引进新的错误。63.下列叙述正确的是(D)

A.测试和调试工作必须由程序编制者自己完成B.测试用例和调试用例必须完全一致

C.一个程序经调试改正错误后,一般不必再进行测试 D.上述三种说法都不对 软件调试方法

64.下列不属于软件调试技术的是(B)。

A.强行排错法B.集成测试法C.回溯法D.原因排除法

六、软件维护

65.软件维护活动包括以下几类:校正性维护、适应性维护、完善性维护和预防性维护。

第二篇:软件工程期末复习题

1、软件定义:问题定义、可行性研究,需求分析

2、软件开发:总体设计,详细设计,编码和单元测试,综合测试

3、软件维护:改正性维护、适应性维护、完善性维护、预防性维护

4、软件过程:瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型,Rational统一过程,敏捷过程与极限编程,微软过程

5、从3个方面研究每种解决的可行性:技术可行性、经济可行性、操作可行性

6、软件需求分析阶段的工作:可以分为以下4个方面:对问题的识别、分析与综合、编写需求分析文档以及需求分析评审

7、设计原理:模块化、抽象、逐步求精、信息隐藏和局部化、模块独立性(耦合、内聚)

8、决定软件可维护性的因素:可理解性、可测试性、可修改性、可移植性、可重用性

一、假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得到的结果应该精确到小数点后4位。一旦实现并测试完之后,该产品将被抛弃。你打算选用哪些软件生命周期模型?请说明你作出选择的理由。

答:对这个软件的需求很明确,实现开平方功能的算法也很成熟,因此,既无须通过原型来分析需求也无须用原型来验证设计方案。此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。综上所述,为了开发这个简单的软件,使用大多数人所熟悉的瀑布模型就可以了

二、假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本开发。由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。你打算采用哪种软件生命周期模型?为什么?。

答:对这个项目的一个重要要求是,严格按照已对外公布了的日期完成产品开发工作,因此,选择生命周期模型时应该着重考虑哪些模型有助于加快产品开发的进度。使用增量模型开发软件时可以并行完成开发工作,因此能够加快开发进度。

这个项目是开发该公司已被广泛应用的字处理软件的新版本,从上述事实至少可以得出3点结论:第一,旧版本相当于一个原型,通过收集用户对旧版本的反映,较容易确定对新版本的需求,没必要再专门建立一个原型系统来分析用户的需求;第二,改公司的软件工程师对字处理软件很熟悉,有开发字处理软件的丰富经验,具有采用增量模型开发新版字处理软件所需要的技术水平;第三,该软件受到广大用户的喜爱,今后很可能还要开发更新的版本,因此,应该把该软件的体系结构设计成开放式的,以利于今后的改进和扩充。综上所述,采用增量模型来完成这个项目比较恰当。

三、考虑一个修改磁带上主文件的系统。文件管理员把修改信息穿孔在卡片上,系统读入穿孔卡片上的信息并按照记录号把修改信息顺序排列好。然后系统逐个读入主文件上的记录,根据记录上的校验码校核每个读入的记录,丢掉出错的记录,按照修改信息修改余下的记录,产生的新文件存储在磁盘上。最后,系统输出一份修改报告供文件管理员参阅。请分层次地画出上述主文件修改系统的数据流图。

答:本系统的数据源点和终点都是文件管理员,他既向系统提供修改信息,又接收系统生成的修改报告。系统功能主要有:接收修改信息,读主文件,校核记录,修改原始记录和产生报告。注意,问题陈述中所描述的“系统安装记录号把修改信息顺序排列好”,是具体的实现方法。在数据流图中无须描述具体实现方法,因此,在本系统的数据流图中不需要包含“排序”功能。类似地,“文件管理员把修改信息穿孔在卡片上,系统读入穿孔卡片上的信息”,是系统接收修改信息的具体方法。在数据流图中无须描绘这个具体的实现方案,因此,在本系统的数据流图中不需要包含“穿卡片”和“读卡片”的功能。

本系统包含的数据存储是:修改信息,主文件和修改后的主文件。图2.6是本系统的基本系统模型,图2.7是功能级数据流图。

四、用Jackson图描绘下述的一列火车的构成:

一列火车最多有两个火车头。只有一个火车头时则位于列车最前面,若还有第二个火车头时,则第二个火车头位于列车最后面。火车头既可能是内燃机车也可能是电气机车。车厢分为硬座车厢、硬卧车厢和软卧车厢等3种。硬座车厢在车内所有车厢的前面部分,软卧车厢在所有车厢的后面部分。此外,在硬卧车厢和软卧车厢之间还有一节餐车。

答:Jackson图善于描绘复杂事物的组成。用Jackson图描绘一列火车的构成的方法至少有两种,一种方法是把火车分为一个车头和两个车头两类,另一种方法是把后车头作为可选的。图3.29给出了描绘一列火车的构成的Jackson图。

解法1(b)解法2

五、为方便出乎,某银行拟开发计算机储蓄系统,储户填写的存款单或取款单由业务员输入系统,如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并印出存款单给储户,如果是取款,系统计算利息并印出利息清单给储户。写出问题定义并分析系统的可行性。

答:技术上的可行性:开发系统的计算机硬件已经非常普及,完全没有问题;现在的计算机各方面的技术都非常成熟,相对来说开发此系统的技术也要求比较简单,因此在技术方面是可行的;同时银行还必须有一定量的系统管理和维护的专业人员,在这方面可以通过培训原来的技术人员成为新的需要的技术人员,也可以雇用所需这方面的专业技术员;若按计划,在规定的期限内,本系统的开发是可以完成的。

操作可行性:开发的系统操作要非常简单,以便适合大人小孩老人各类人们都可以很方便操作使用。还有,要有经过培训的专业人员在指导,以便当储户有什么疑难问题时能及时得到正确的答复 社会、政策允许的可行性:全部软件购买正版,机器设置通过正当途径购得

六、分析图3.1所示的层次图,确定每个模块的内聚类型。分析图3.2,确定模块之间的耦合类型

图3.1 计算多地点日平均温度的程序

答:从图3.1所示的层次图可以看出,这个程序的功能是计算若干个指定地点的每日平均温度。变量sum保存某地一天之内在指定的时间取样点的温度之和。程序运行时首先初始化变量sum并打开文件,然后读取地点、时间和温度等原始数据,创建用于保存这些数据的温度记录,接下来计算特定地点的日平均温度,存储温度记录。重复调用“读取地点、时间和温度”、“创建新的温度记录”、“计算特定地点的日平均温度”和“存储温度记录”等模块,直至计算出并保存好所有指定地点的日平均温度。最后,打印平均温度并关闭文件。

从上述叙述可知,“计算多个地点的日平均温度”、“读取地点、时间和温度”、“创建新的温度记录”、“计算特定地点的日平均温度”和“存储温度记录”等5个模块,每个都完成一个单一的功能,模块内所有元素都为完成同一个功能服务,彼此结合的十分紧密,因此,这5个模块的内聚类型都是功能内聚。

初看起来,由于初始化变量sum和打开文件这两个操作都是在程序运行的初始阶段完成的,“初始化变量sum和打开文件” 这个模块的内聚类型似乎是时间内聚。但是,初始化变量sum是本程序特有的操作,而打开文件是硬件要求的操作,是任何使用文件的程序都包含的一个操作,并非本程序特有的操作。当可以分配两个或更多个不同级别的内聚类型给一个模块时,规则是分配最低级别的内聚类型给该模块。因此,“初始化变量sum和打开文件”这个模块的内聚类型都是偶然内聚。同理,“关闭文件并打印平均温度” 这个模块的内聚类型也是偶然内聚。

分析图3.2,确定模块之间的耦合类型。

图3.2 一个程序的模块互连图 在图3.2中已经给模块之间的接口编了号码,表3.1描述了模块间的接口。表3.1 模块接口描述

综合分析图3.2和表3.1所提供的信息可知各个模块之间的耦合情况。例如,当模块p调用模块 q时(接口1),它传递一个参数----飞机类型。当模块q把控制返还给模块p时,它传回一个状态标志。

某些模块之间的耦合类型是明显的,例如,模块p和q之间(接口1)、模块r和t之间(接口5)及模块s和u之间(接口6)都是数据耦合,因为它们传递的都是一个简单变量。

如果两个模块中的一个模块给另一个模块传递控制元素,也就是说,如果一个模块明显地控制另一个模块的逻辑,则它们之间具有控制耦合。例如,当给具有逻辑内聚的模块传递功能代码时就传递了控制元素。另一个控制耦合的例子是把控制开关作为一个参数传递。图3.2中模块q调用模块r时(接口3)传递一个功能代码,因此,这两个模块之间是控制耦合。

图3.2右侧文字说明,模块p、t和u更新同一个数据库,因此,它们之间具有公共环境耦合。

当模块p调用模块s时(接口2),如果模块s使用或更新模块p传递给它的零件清单中的所有元素,则模块p和s之间的耦合是数据耦合;但是,如果模块s只访问该清单中的一部分元素,则模块p和s之间的耦合是特征耦合。模块q和s之间(接口4)的耦合情况与此类似。由于图3.2和表3.1中给出的信息尚不足以准确地描述各个模块的功能,所以不能确定这两对模块之间的耦合是数据耦合还是特征耦合。

第三篇:GIS软件工程期末考试复习题

《软件工程》选择题

一、选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内,每小题1分)

1.软件产品的开发主要是(D)。

A.复制B.再生产C.拷贝D.研制

2.可行性研究的目的是决定(B)。

A.开发项目B.项目值得开发否C.规划项目D.维护项目

3.SA方法用DFD描述(D)。

A.系统的控制流程B.系统的数据结构

C.系统的基本加工D.系统的功能

4.进行需求分析可使用多种工具,但(C)是不适用的。

A.数据流图(DFD)B.判定表C.PAD图D.数据字典

5.软件设计阶段一般又可分为(B)。

A.逻辑设计与功能设计B.总体设计与详细设计

C.概念设计与物理设计D.模型设计与程序设计

6.软件设计中划分模块的一个准则是(C)。

A.低内聚低耦合B.低内聚高耦合C.高内聚低耦合D.高内聚高耦合7.下列语言中哪个语言是低级语言(D)

A.PASCALB.VISUAL BASICC.C++D.汇编语言

14.软件测试的目的是(B)。

A.试验性运行软件B.发现软件错误

C.证明软件正确D.找出软件中全部错误

8.软件测试中,白盒法是通过分析程序的(B)来设计测试用例的。

A.应用范围B.内部逻辑C.功能D.输入数据

9.黑盒法是根据程序的(C)来设计测试用例的。

A.应用范围B.内部逻辑C.功能D.输入数据

10.把一组具有相似特性的对象组合在一起,称之为(C)。

A、多态性B、继承性C、类D、消息

11.面向对象的主要特征除对象唯一性、封装、继承外,还有(A)

A、多态性B、完整性C、可移植性D、兼容

12.软件生存周期中时间最长的是(D)阶段。

A.需求分析B.概要设计C.测试D.维护

13.与计算机科学的理论研究不同,软件工程是一门(C)学科。

A.理论性B.原理性C.工程性D.心理性

14.从结构化的瀑布模型看,在它的生命周期中的八个阶段中,下面的几个选项中哪个环节

出错,对软件的影响最大(C)。

A、详细设计阶段B、总体设计阶段C、需求分析阶段D、测试和运行阶段

15.软件工程的出现主要是由于(C)。

A.程序设计方法学的影响B.其它工程科学的影响 C.软件危机的出现D.计算机的发展

16.SA方法的基本思想是(C)

A.自底向上逐步抽象B.自底向上逐步分解C自顶向下逐步分解 D.自顶向下逐步抽象

17、为了提高软件测试的效率,应该(D)。

A.随机地选取测试数据

B.取一切可能的输入数据作为测试数据

C.在完成编码以后制定软件的测试计划

D.选择发现错误可能性较大的数据作为测试用例

18.与设计测试用例无关的文档是(A)。

A.项目开发计划B.需求规格说明书C.设计说明书D.源程序

19.使用白箱测试方法时确定测试数据应根据(A)和指定的覆盖标准。

A.程序的内部逻辑B.程序的复杂程度C.使用说明书D.程序的功能

20.软件部件的内部实现与外部可访问性的分离,是指软件的(C)。

A.继承性B.共享性C.封装性D.抽象性

21、软件管理的具体内容包括对(D)

A.开发人员、组织机构B.用户管理、配置管理C.控制、文档资料 D.(A)、(B)和(C)

22.软件需求分析阶段的工作,可以分为四个方面:对问题的识别.分析与综合.编写需求分

析文档以及(B)

A.软件的总结B.需求分析评审C.阶段性报告D.以上答案都不正确

23..数据流图是常用的进行软件需求分析的图形工具,其主要图形元素是(C)

A.输入.输出.外部实体和加工B.变换.加工.数据流和存储

C.加工.数据流.数据文件和源或宿D.变换.数据存储.加工和数据流

24、软件的集成测试工作最好由(D)承担,以提高集成测试的效果。

A.该软件的设计人员B.该软件开发组的负责人

C.该软件的编程人员D.不属于该软件开发组的软件设计人员

25.软件生命周期的最后的一个阶段是(B)

A.书写软件文档B.软件维护C.稳定性测试D.书写详细用户说明McCall提出了表明软件质量的11个质量特性。它们是正确性、可靠性、可使用性、完整性、(D)、可移植性、可复用性、效率、可测试性、互联性。

A.模块独立性、安全性B.文档完备性、灵活性

C.可维护性、安全性D.可维护性、灵活性

27、每个对象可用它自己的一组属性和它可以执行的一组(C)来表征。

A、行为B、功能C、操作D、数据

28、面向对象软件技术的许多强有力的功能和突出的优点,都来源于把类组织成一个层次结构的系统,一个类的上层可以由父类,下层可以有子类,这种层次结构系统的一个重要性质是(B),一个类获得其父亲的全部描述(数据和操作)

A、传递性B、继承性C、复用性D、并行性

29、软件开发在需求分析、设计、编码、测试这几个阶段所需不同层次的技术人员大致是

(C)

A.初级、高级、高级、初级B.中级、中级、高级、中级

C.高级、中高级、初级、中高级D.中级、中高级、中级、初级

30、软件重用的单位是(A)。

A.软件模块 B.性能C.系统D.功能

31、软件开发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为(B)

A、相互排斥B、相互补充C、独立使用D、交替使用

32、系统分析员是(B)

A、用户中系统的直接使用者B、用户和软件人员的中间人

C、软件的编程人员D、用户和软件人员的领导

33、结构化分析SA方法以数据流图、(D)和加工说明等描述工具,即用直观的图和简洁的语言来描述软系统模型。

A、DFD图B、PAD图C、IPO图D、数据字典

34、在E-R 模型中,包含以下基本成分(C)。

A、数据、对象、实体B、控制、联系、对象

C、实体、关系、属性D、对象、属性、操作

35、结构设计是一种应用最广泛的系统设计方法,是以(A)为基础、自顶向下、逐步求精和模块化的过程。

A、数据流B、数据流图C、数据库D、数据结构

36、初步用户手册在(B)阶段编写。

A.可行性研究 B.需求分析 C.软件总体设计 D.软件详细设计

37、在软件结构化设计中,好的软件结构设计应该力求做到(B)。

A、顶层扇出较少,中间层扇出较高,底层模块低扇入

B、顶层扇出较高,中间层扇出较少,底层模块高扇入

C、顶层扇入较少,中间层扇出较高,底层模块高扇入

D、顶层扇入较少,中间层扇入较高,底层模块低扇入

38、软件详细设计主要采用的方法是(D)。

A、模块设计B、结构化设计C、PDL语言D、结构化程序设计

39、软件测试的手段有多种,通过人工来评审文档或程序,借以发现其中错误,该手段是(D)。

A、黑盒测试B、正确性测试C、动态测试D、静态测试

40、黑盒测试在设计测试用例时,主要需要研究(A)。

A、需求规格说明与概要设计说明B、详细设计说明

C、项目开发计划D、概要设计说明与详细设计说明

41、在整个软件维护阶段所花费的全部工作中,(C)所占比例最大。

A、改正性维护B、适应性维护C、完善性维护D、预防性维护

42.软件需求分析阶段的工作,可以分为以下4个方面:对问题的识别、分析与综合、编写需

求分析文档以及(C)。

A.总结B.阶段性报告C.需求分析评审D.以上答案都不正确

43.在结构化分析方法中,用以表达系统内数据的运动情况的工具有(A)。

A.数据流图B.数据词典C.结构化语言 D.判定表与判定树

44.来辅助软件开发、运行、维护、管理、支持等过程中的活动的软件称为软件开发工具,通常也称为(D)工具。

A.CADB.CAIC.CAMD.CASE

45.螺旋模型综合了(A)的优点,并增加了风险分析。

A.瀑布模型和演化模型B.瀑布模型和喷泉模型

C.演化模型和喷泉模型D.原型和喷泉模型

46.SA方法的分析步骤是首先调查了解当前系统的工作流程,然后(A)。

A.获得当前系统的物理模型,抽象出当前系统的逻辑模型,建立目标系统的逻辑模型

B.获得当前系统的物理模型,抽象出目标系统的逻辑模型,建立目标系统的物理模型

C.获得当前系统的物理模型,建立当前系统的物理模型,抽象出目标系统的逻辑模型

D.获得当前系统的物理模型,建立当前系统的物理模型,建立目标系统的物理模型

47.设计软件结构一般不确定(C)。

A.模块的功能B.模块的接口

C.模块内的局部数据D.模块间的调用关系

48.结构分析方法就是面向(D)自顶向下逐步求精进行需求分析的方法。

A.目标B.功能C.对象D.数据流

49.软件是一种(B)产品。

A.物质B.逻辑C.有形D.消耗

50.瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和(C)。

A、详细计划B、可行性分析C、运行阶段D、测试与排错

51.结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的(B)

A、控制流B、数据流C、程序流D、指令流

52.在软件的可行性研究中,可以从不同的角度对软件的可行性进行研究,其中是从软件的功能可行性角度考虑的是(B)

A、经济可行性B、技术可行性C、操作可行性D、法律可行性

53、下述任务中,不属于软件工程需求分析阶段的是(D)。

A.分析软件系统的数据要求B.确定软件系统的功能需求

C.确定软件系统的性能要求D.确定软件系统的运行平台

54、火车是一种陆上交通工具,火车和陆上交通工具之间的关系是(D)关系。

A.组装B.整体成员C.has aD.一般具体

55.瀑布模型的存在问题是(B)

A.用户容易参与开发B.缺乏灵活性

C.用户与开发者易沟通D.适用可变需求

56.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做(C)

A.软件工程B.软件周期

C.软件危机D.软件产生

57.软件测试的目的是(B)。

A. 评价软件的质量B.发现软件的错误

C. 找出软件的所有错误D.证明软件是正确的58.需求分析最终结果是产生(B)。

A.项目开发计划B.需求规格说明书

C.设计说明书D.可行性分析报告

59.快速原型模型的主要特点之一是(D)

A.开发完毕才见到产品B.及早提供全部完整的软件产品

C.开发完毕后才见到工作软件D.及早提供工作软件

60.结构分析方法就是面向(B)自顶向下逐步求精进行需求分析的方法。

A. 目标B.数据流C.功能D.对象

61.研究开发所需要的成本和资源是属于可行性研究中的(B)研究的一方面。

A.技术可行性B.经济可行性C.社会可行性D.法律可行性

62.为了提高软件的可维护性,在编码阶段应注意(D)

A.保存测试用例和数据B.提高模块的独立性

C.文档的副作用D.养成好的程序设计风格

《软件工程》填空题

二、填空题(请把答案写在相应的横线上,每小题1.5分)

1、面向对象开发方法包括 OOA、OOD、OOP 三部分。

2、在单元测试时,需要为被测模块设计 驱动模块和桩模块。

3、软件工程管理的具体内容包括对开发人员、组织机构、用户、文档资料等方面的管理。

4、可行性研究的三个方面是 技术可行性、社会可行性 和__经济可行性__。

5、对象的抽象是___类___。

6、软件工程包括软件开发技术和__软件工程管理__两大部分内容。

7、需求分析阶段产生的最重要的文档是__需求规格说明书_。

8、结构化方法是一种面向数据流的开发方法。由结构化分析、_结构化设计_、结构化程序设计构成。

9、对象之间进行通信的构造叫做_消息_。

10、结构化分析方法的分析策略是__自顶向下逐步求精__。

11、规定功能的软件,在一定程度上能从错误状态自动恢复到正常状态,则称该软件为___容错__软件。

12、软件生存周期包括问题定义、可行性研究,需求分析,总体设计,详细设计,_编码_,测试,维护活动,可以将这些活动以适当方式分配到不同阶段去完成13、___可行性研究___的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。

软件工程简答题

三、简答题(简要回答下列问题,每小题4分*5=20)

1、什么是软件工程?它目标和内容是什么?

软件工程就是用科学的知识和技术原理来定义,开发,维护软件的一门学科。

软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。

软件工程内容:包括开发技术和开发管理两个方面。

2、什么是软件生存周期?它有哪几个活动?

软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。

包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。

3、衡量模块独立性的两个标准是什么?各表示什么含义?

内聚和耦合。

内聚:又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标。耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标。

4、软件设计的基本原理包括哪些内容?

⑴模块化:模块是软件的组成部分,是具有独立功能且可命名的一段程序,所有模块组成整体,可以满足问题的要求。

⑵抽象:认识复杂现象过程所使用权的工具,只考虑事物本质的共同特性,忽略细节和其它因素。通过抽象确定组成软件的过程实体。

⑶信息隐蔽:将模块实现自身功能的细节与数据“隐蔽”起来。模块间仅交换为完成系统功能所必须的信息。

⑷模块独立性:每个模块只完成系统要求的独立的子功能。

5、软件生命周期划分为哪几个阶段?

软件生命周期分为三个时期八个阶段:

软件定义:问题定义、可行性研究;

软件开发:需求分析、概要设计、详细设计、编码、测试;

软件运行:软件维护

《软件工程》应用题

四、综合应用题(每小题10分*3=30)

1.给你一个GIS软件开发任务由 你负责,你将怎样进行?

2.目前常用的GIS开发、应用平台软件有哪些,各有什么特点

3.合格的GIS软件工程负责人应该有什么样的素质和知识?

第四篇:浙江财经大学 2018 软件工程复习题参考答案

浙江财经大学课程期末复习题参考答案

浙江财经大学2014~2015学年第1学期

《软件工程》课程期末考复习题参考答案

一、是非题

1-10.√×√×√ √√××√ 11-20.√××√× ×√√×× 21-30.××√×× ×√√×√

31-40.√××√× √√×√× 41-50.×√√×√ ×√√××

二、单项选择题

1-10 CBCBB BCCBA 11-20 ADBBD BCBDA 21-30 DCADD BBCDD 31-40 ACBBC CDADB 41-50 DCCBA CACBB 51-60 DCDCC BCACB 61-70 AACDA BBCDC 71-80 DBBAC CCBCA 81-90 ABBDB CBBAA 91-100 DACCD BCBDC 101-110 DBDCB BABAB 111-120 CBDCC DD

三、多项选择题

1.AC 2.ABCD 3.BD

4.ABCD 6.ABCD 7.ABD 8.ABCD 9.ACD 11.ABCD 12.ACD 13.ACD

14.ABCD 16.ABCD 17.BD 18.ACD

19.ABC 21.ABCD 22.BD 23.ABCD 24.ACD 26.ABCD 27.ACD 28.AC

29.ABCD 31.ABCD 32.AB 33.ABD

34.ABC 36.BCD

37.ABC 38.BCD

39.BD 41.ABD

42.ABCD 43.ABC

44.ABCD 46.ABD 47.BD

48.ABCD

49.AC

第1页,共9页

5.AB 10.AC 15.BD 20.ABCD 25.ACD 30.BC 35.BCD 40.ABC 45.BCD 50.ACD

浙江财经大学课程期末复习题参考答案

51.ABD 56.ABCD 61.ABCD 66.ABC 71.ABC

52.ABC 57.BD 62.BD 67.ABCD 72.ACD 53.ABC 58.ABC 63.ACD 68.ABCD 73.CD

54.ABCD 59.AC 64.ABC 69.ABCD

55.ABCD 60.ABCD 65.ABCD 70.ABCD

四、填空题

1.耦合 2.集成 3.维护 4.等价类划分法 5.回归 6.扇入数 7.单元 8.可维护 9.条件 10.网状性 11.数据字典 12.模块独立性 13.因果图

14.可维护性 15.变换

事务

16.自顶向下,逐步求精 17.类属模型

参考模型

18.表示层

应用逻辑层

数据层 19.需求建模技术 20.编码

四、简述题

1.“软件危机” 的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要。

2.结构程序设计:是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。顺序,选择,循环。

3.多态性:子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。

4.任务是在软件投入生产性运行之前,尽可能多地发现软件中的错误。

1.CMM把企来控制软件过程的能力分为5级:初始级、可重复级、可定义级、可管理级、)可优化级

2.顺序型、选择型、先判定(while)型循环、后判定(until)型循环、多情况(case)型选择。

第2页,共9页

浙江财经大学课程期末复习题参考答案

3.Alpha测试是由一个用户在开发者的场所进行的,软件在开发者对用户的“指导下”进行测试。经α测试后的软件称为β版软件。

4.人员、产品、过程、项目,即所谓 4P(People、Product、Process、Project)。

五、分析题(共30分)1.输入一个整数ni=2,j=1n<=3 i<=(n-1)n%i==0是j=0否是否j=0i=ni=i+1是j==0是不是素数是素数 2.void Sort(int* list, int n){ for(int i = 1;i < n;i++){

int t = list[i];

int j = i;

while((j > 0)&&(list[j-1] > t))

{

list[j] = list[j-1];

--j;

}

list[j] = t;} }

第3页,共9页

浙江财经大学课程期末复习题参考答案

开始i=1i0&&list[j-1]>tYlist[j]=list[j-1]--j结束

3.void Sort(int* list, int n){ int i, j, temp;j = 1;while((j < n)){

for(i = 0;i < n-j;i++)

{

if(list[i] > list[i+1])

{

temp = list[i];

list[i] = list[i+1];

list[i+1] = temp;

}

}

j++;} }

第4页,共9页

浙江财经大学课程期末复习题参考答案

开始定义i, j, tempj=1jlist[i+1]NYtemp=list[i]list[i]=list[i+1]list[i+1]=tempi++结束

4.N第5页,共9页

浙江财经大学课程期末复习题参考答案

While C(A>0)是否A1A1(B>0)B1C>0是否B2C1C2B3 5.绘出左表得3分,绘出右表得5分。

6.Vehicle+Motor: StringRail TransitBicycleCarBusTrainTrain

7.第6页,共9页

浙江财经大学课程期末复习题参考答案

Animal1WingBirdDog21ChickenDuckGoose8.GeometryItem11..*PointPolygonEllipseLineSquareCircle9.在第一层上楼向上移动到达到达上楼向第一层移动向下移动到达空闲下楼超时10.第7页,共9页

2..4FootCattleCow

浙江财经大学课程期末复习题参考答案

登录失败登录登录成功操作取消登录取消操作完成操作返回操作取消完成

11.: BillDetailAcceptor : TotalAccountCaculator : BillPrinter : 办事员1 : 输入账单材料()2 : 核对账单材料()3 : 计算总账()4 : 打印账单()

12.一共四条路径:

a.(y = 3 and z = 2)or(x > 4 and y > 1 and z = 2),预期结果为x/y+1 b.(x <= 4 and y > 1 and y!= 3 and z = 2),预期结果为x/y c.(x > 4 and y <= 1)or(x > 4 and z!= 2)or(y = 3 and z!= 2),预期结果为x+1 d.(x <= 4 and y <= 1)or(x <= 4 and y!= 3 and z!= 2),预期结果为x 如:

测试数据 x=6, y=3, z=2

预期结果 x=3

第8页,共9页

浙江财经大学课程期末复习题参考答案

13.a.4条。b.14 16 9 14 c.1 3 5 6 8 d.16

x=1 x=6 x=2

第9页,共9页 x=4, y=4, z=2 x=5, y=1, z=2 x=2, y=1, z=2

第五篇:软件工程

2.2软件开发的基本策略

人们都有自己的世界观和方法论,能自然而然地运用于生活和工作中。同样,程序员脑子里的软件工程观念会无形地支配其怎么去做事情。软件工程三十年的发展,已经积累了相当多的方法,但这些方法不是严密的理论。实践人员不应该教条地套用方法,更重要的是学会“选择合适的方法”和“产生新方法”。有谋略才会有好的战术。几千年前,我们的祖先就在打闹之际写下了很多心得体会,被现代人很好地运用于工业和商业。本节讲述软件开发中的三种基本策略:“复用”、“分而治之”、“优化——折衷”。

2.2.1复用

复用就是指“利用现成的东西”,文人称之为“拿来主义”。被复用的对象可以是有形的物体,也可以是无形的成果。复用不是人类懒惰的表现而是智慧的表现。因为人类总是在继承了前人的成果,不断加以利用、改进或创新后才会进步。所以当我们欢度国庆时,要搞清楚祖国远不止50岁,我们今天享用到的财富还有上下五千年人民的贡献。进步只是应该的,不进步则就可耻了。

复用的内涵包括了提高质量与生产率两者。由经验可知,在一个新系统中,大部分的内容是成熟的,只有小部分内容是创新的。一般地可以相信成熟的东西总是比较可靠的(即具有高质量),而大量成熟的工作可以通过复用来快速实现(即具有高生产率)。勤劳并且聪明的人们应该把大部分的时间用在小比例的创新工作上,而把小部分的时间用在大比例的成熟工作中,这样才能把工作做得又快又好。

把复用的思想用于软件开发,称为软件复用。据统计,世上已有1000亿多行程序,无数功能被重写了成千上万次,真是浪费哪。面向对象(Object Oriented)学者的口头禅就是“请不要再发明相同的车轮子了”。

将具有一定集成度并可以重复使用的软件组成单元称为软构件(Software Component)。软件复用可以表述为:构造新的软件系统可以不必每次从零做起,直接使用已有的软构件,即可组装(或加以合理修改)成新的系统。复用方法合理化并简化了软件开发过程,减少了总的开发工作量与维护代价,既降低了软件的成本又提高了生产率。另一方面,由于软构件是经过反复使用验证的,自身具有较高的质量。因此由软构件组成的新系统也具有较高的质量。利用软构件生产应用软件的过程如图1.5所示。

软件复用不仅要使自己拿来方便,还要让别人拿去方便,是“拿来拿去主义”。面向对象方法,Microsoft公司的COM规范 [Rogerson 1999],都能很好地用于实现大规模的软件复用。

2.2.2分而治之

分而治之是指把一个复杂的问题分解成若干个简单的问题,然后逐个解决。这种朴素的思想来源于人们生活与工作的经验,完全适合于技术领域。软件人员在执行分而治之的时候,应该着重考虑:复杂问题分解后,每个问题能否用程序实现?所有程序最终能否集成为一个软件系统并有效解决原始的复杂问题?

图1.6表示了软件领域的分而治之策略。诸如软件的体系结构设计、模块化设计都是分而治之的具体表现。软件的分而治之不可以“硬分硬治”。不像为了吃一个西瓜或是一只鸡,挥刀斩成n块,再把每块塞进嘴里粉碎搅拌,然后交由胃肠来消化吸收,象征复杂问题的西瓜或是鸡也就此消失了。

2.2.3优化——折衷

软件的优化是指优化软件的各个质量因素,如提高运行速度,提高对内存资源的利用率,使用户界面更加友好,使三维图形的真实感更强等等。想做好优化工作,首先要让开发人员都有正确的认识:优化工作不是可有可无的事情,而是必须要做的事情。当优化工作成为一种责任时,程序员才会不断改进软件中的算法,数据结构和程序组织,从而提高软件质量。

著名的3D游戏软件Quake,能够在PC机上实时地绘制高度真实感的复杂场景。Quake的开发者能把很多成熟的图形技术发挥到极致,例如把Bresenham画线、多边形裁剪、树遍历等算法的速度提高近一个数量级。我第一次看到Quake时不仅感到震动,而且深受打击。这个PC游戏软件的技术水平已经远胜于我所见识到的国内领先的图形学相关科研成果。这对我们日益盛行的点到完止的研发工作真是莫大的讽刺。所以当我们开发的软件表现出很多不可救药的病症时,不要怨机器差。真的是我们自己没有把工作做好,写不好字却嫌笔钝。

就假设我们经过思想教育后,精神抖擞,随时准备为优化工作干上六天七夜。但愿意做并不意味着就能把事情做好。优化工作的复杂之处是很多目标存在千丝万缕的关系,可谓数不清理还乱。当不能够使所有的目标都得到优化时,就需要“折衷”策略。

软件中的折衷策略是指通过协调各个质量因素,实现整体质量的最优。就象党支部副书记扮演和事佬的角色:“…为了使整个组织具有最好的战斗力,我们要重用几个人,照顾一些人,在万不得已的情况下委屈一批人”。

软件折衷的重要原则是不能使某一方损失关键的职能,更不可以象“舍鱼而取熊掌”那样抛弃一方。例如3D动画软件的瓶颈通常是速度,但如果为了提高速度而在程序中取消光照明计算,那么场景就会丧失真实感,3D动画也就不再有意义了(如果人类全是色盲,计算机图形学将变得异常简单)。

人都有惰性,如果允许滥用折衷的话,那么一当碰到困难,人们就会用拆东墙补西墙的方式去折衷,不再下苦功去做有意义的优化。所以我们有必要为折衷制定严正的立场:在保证其它因素不差的前提下,使某些因素变得更好。

下面让我们用“优化——折衷”的策略解决“鱼和熊掌不可得兼”的难题。

问题提出:假设鱼每千克10元,熊掌每千克一万元。有个倔脾气的人只有20元钱,非得要吃上一公斤美妙的“熊掌烧鱼”,怎么办?

解决方案:化9元9角9分钱买999克鱼肉,化10元钱买1克熊掌肉,可做一道“熊掌戏鱼”菜。剩下的那一分钱还可建立奖励基金。

2.3一些不正确的观念

本节例举并分析一些不正确的软件工程观念,可帮助初学者少犯相似的错误。

观念之一:我们拥有一套讲述如何开发软件的书籍,书中充满了标准与示例,可以帮助我们解决软件开发中遇到的任何问题。

客观情况:好的参考书无疑能指导我们的工作。充分利用书籍中的方法、技术和技巧,可以有效地解决软件开发中大量常见的问题。但实践者并不能因此依赖于书籍,这是因为:(1)现实的工作中,由于条件千差万别,即使是相当成熟的软件工程规范,常常也无法套用。(2)软件技术日新月异,没有哪一种软件标准能长盛不衰。祖传秘方在某些领域很吃香,而在软件领域则意味着落后。

观念之二:我们拥有最好的开发工具、最好的计算机,一定能做出优秀的软件。

客观情况:良好的开发环境只是产出成果的必要条件,而不是充分条件。如果拥有好环境的是一群庸人,难保他们不干出南辕北辙的事情。

观念之三:如果我们落后于计划,可以增加更多的程序员来解决。

客观情况:软件开发不同于传统的农业生产,人多不见得力量大。如果给落后于计划的项目增添新手,可能会更加延误项目。因为:(1)新手会产生很多新的错误,使项目混乱。(2)老手向新手解释工作以及交流思想都要花费时间,使实际开发时间更少。所以科学的项目计划很重要,不在乎计划能提前多少,重在恰如其分。如果用“大跃进”的方式奔向共产主义,只会产生倒退的后果。

观念之四:既然需求分析很困难,不管三七二十一先把软件做了再说,反正软件是灵活的,随时可以修改。

客观情况:对需求把握得越准确,软件的修修补补就越少。有些需求在一开始时很难确定,在开发过程中要不断地加以改正。软件修改越早代价越少,修改越晚代价越大,就跟治病一样道理。

2.4一些有争议的观念

本节探讨一些有争议的观念,目的不在于得出“正确”或“错误”的评断,而在于争议会激发更多理性的思考。

争议之一:如果软件运行较慢,是换一台更快的计算机,还是设计一种更快的算法?

作者观点:如果开发软件的目的是为了学习或是研究,那么应该设计一种更快的算法。如果该软件已经用于商业,则需谨慎考虑:若换一台更快的计算机能解决问题,则是最快的解决方案。改进算法虽然可以从根本上提高软件的运行速度,但可能引入错误以及延误进程。技术狂毫无疑问会选择后者,因为他们觉得放弃任何可以优化的机会就等于犯罪。

类似的争议还有:是买现成的程序,还是彻底自己开发?技术人员和商业人士常常会有不同的选择。

争议之二:有最好的软件工程方法,最好的编程语言吗?

作者观点:在软件领域永远没有最好的,只有更好的。能解决问题的都是好方法或是好语言。程序员在最初学习Basic、Fortran、Pascal、C、C++等语言时会感觉一个比一个好,不免有喜新厌旧之举。而如今 的Visual Basic、Delphi、Visual C++、Java等语言各有所长,真的难分优劣。开发人员应该根据客观条件,选择自己熟悉的方法和语言,才能保证合格的质量与生产率。

程序设计是自由与快乐的事情,不要发誓忠于某某主义而自寻烦恼。

争议之三:编程时是否应该多使用技巧?

作者观点:就软件开发而言,技巧的优点在于能另辟蹊径地解决一些问题,缺点是技巧并不为人熟知。若在程序中用太多的技巧,可能会留下隐患,别人也难以理解程序。鉴于一个局部的优点对整个系统而言是微不足道的,而一个错误则可能是致命的。作者建议用自然的方式编程,少用技巧。

《狼三则》的故事告诉我们“失败的技巧通常是技俩”。当我们在编程时无法判断是用了技巧还是用了技俩,那就少用。《卖油翁》的故事又告诉我们“熟能生巧”,表明技巧是自然而然产生的,而不是卖弄出来的。卖油翁的绝技是可到中央电视台表演的,而他老人家却谦虚地说:“没啥没啥,用熟了而已”。

争议之四:软件中的错误是否可按严重程度分等级?

作者观点:在定量分析时,可以将错误分等级,以便于管理。微软的一些开发小组将错误分成四个等级 [Cusumano 1996],如表1.1所示。

一级严重:错误导致软件崩溃。

二级严重:错误导致一个特性不能运行并且没有替代方案。

三级严重:错误导致一个特性不能运行但有替代方案。

四级严重:错误是表面化的或是微小的。

表1.1 错误的四个等级

上述分类是非常技术性的,并不是普适的。假设某个财务软件有两个错误:错误A使该软件死掉,错误B导致工资计算错误。按表1.1分类,错误A属一级严重,错误B属二级严重。但事实上B要比A严重。工资算多了或者算少了,将会使老板或员工遭受经济损失。而错误A只使操作员感到厌烦,并没有造成经济损失。另一个示例是操作手册写错,按表1.1分类则属四级严重,但这种错误可能导致机毁人亡。

开发人员应该意识到:所有的错误都是严重的,不存在微不足道的错误。这样才能少犯错误。

2.5小 结

软件工程学科发展到今天,已经有了很多方法和规范,学之不尽。本章只在宏观上讨论了软件工程的一些

思想,更具体的内容将在后面的章节论述。无论是什么好方法,贵在理解与灵活运用,而不可当成灵丹妙药,不象“吃了脑黄金或脑白金,就能使一亿人先聪明起来”。

3程序员与程序经理

工作在第一线的软件开发人员是程序员和程序经理,他们决定着软件的命运。良好的程序员队伍和出色的管理是软件项目成功的必要条件。管理不是管制,不是去卡住人家的脖子,因为程序员不是一群野鸭子。管理的目的是让大家一起把工作做好,并且让各人获得各自的快乐和满足。当一个组织被出色地领导时,雇员甚至不知道他们已被领导。在项目完成时,他们会自豪地说:“看看我们通过努力取得的成绩吧”。所以管理者不能老惦记着自己是一个官,而应时刻意识到自己是责任的主要承担者。

我们经常会听到有经理头衔的人在高谈阔论:“编程我不会,做个项目还不easy?派个人去搞系统分析,回头再叫几个程序员把需求译成程序,不就OK了吗?”

不懂英语的人准以为easy和OK是贬义词。要让软件项目失败很容易,只要符合下列条件之一即可:

(1)项目经理对软件一无所知;

(2)技术负责人对编程不感兴趣;

(3)真真编写代码的程序员是临时雇用的。

如果上述三个条件同时具备,就请放心失败好了。

让我们少幻想自己是比尔·盖茨,先当好程序员和程序经理再说。

3.1了解程序员

早期的程序员干活能从软件直通硬件,个个生猛无比。又因他们的作息时间、言行举止与常人不太一样,久而久之就给人们留下了“神秘”、“孤僻”的印象。如今软件行业被炒得热火朝天,有能耐的程序员即便躲在大山岙的军工厂里也能被挖出来。而更多原本不是程序员的人操起几本“速成”、“二十一天通”等书籍也加入了这个行业。现在国内号称有上百万程序员,这支大军鱼龙混杂,已搞不清那些是正规军,那些是民兵游击队了。

下载软件工程复习题word格式文档
下载软件工程复习题.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    《软件工程》

    《软件工程》课程分析 本课程是软件技术专业学生必修的一门专业必修课。根据培养软件开发人员的需要,本课程的任务是使学生通过本课程的学习,了解软件项目开发和维护的一般过......

    软件工程

    1. 软件工程:是指导计算机软件开发和维护的工程学科 2. 软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题 3. 软件过程:是为了开发出高质量的软件产品所需......

    软件工程

    填好发给我!!!!一、填空题: 1.面向对象分析的目的是对客观世界的系统进行 __________________,对象就是客观世界的; 2.软件工程方法学包括:工程环境建立、方法、工具和过程; 3.思想概括......

    软件工程

    软件工程—心得体会 摘要 本文结合基层实践教学的实际情况和现实需要,系统地总结了《软件工程》实践教学的特征,详细分析了实践教学过程存在的问题,并提出了该课程实践教学改革......

    软件工程

    软件工程 1. 谈谈你对软件工具的理解,你用过什么软件工具 软件工具是指为支持计算机软件的开发、维护、模拟、移植或管理而研制的程序系统。它是为专门目的而开发的,在软件工......

    软件工程

    一、名词解释 软件: 指计算机系统中的程序及其文档。 支持软件:支持软件的开发和维护的软件。 系统软件:属于计算机系统中最靠近硬件的一层,其它软件一般都通过系统软件发挥作......

    软件工程

    1.软件危机的概念 系统的数据要求,功能需求,性能需求,显示出程序的轮廓。 软件危机是指在计算机软件开发、使用与可靠性需求,可用性需求,出错处理需求,混合方式 维护过程中遇到的......

    软件工程小结

    今天视频看完了,可是没有总结。还是感觉不会总结。一想到50讲的课,怎么总结呢?开始听的时候,是真不知道从哪里下手,因为开始看的时候有种迷迷糊糊的感觉。软件工程,我期待的一门课......