文档库 最新最全的文档下载
当前位置:文档库 › 软件工程习题附答案

软件工程习题附答案

软件工程习题附答案
软件工程习题附答案

一、选择填空

1.在面向对象方法中,对象可看成是属性(数据)以及这些属性上的专用操作的封装体。封装是一种 A 技术,封装的目的是使对象的 B 分离。

类是一组具有相同属性和相同操作的对象的集合,类中的每个对象都是这个类的一个 C 。类之间共享属性和操作的机制成为 D 。一个对象通过发送 E 来请求另一对象为其服务。

A:①组装②产品化③固化④信息隐蔽

B:①定义和实现②设计和测试③设计和实现④分析和定义

C:①例证(illustration) ②用例(use-case) ③实例(instance) ④例外(exception)

D:①多态性②动态绑定③静态绑定④继承

E:①调用语句②消息③命令④口令

2.面向对象型的程序设计语言具有数据抽象、信息隐蔽、 A 等特征。作为运算单位的对象应具有下列特性:

B 、

C 、

D 。

E 是面向对象的语言。

A:①对象调用②对象变换③非过程性④信息继承⑤并发性

B~D:

①对象把数据和处理数据的操作结合为一体

②在程序运行时对象处于活动状态

③接受消息的对象必须给消息发送者以回答

④对象在计算中可向其他对象发送消息

⑤对象的内部状态只根据外部送来的消息才操作

E:① C++ ②③④

3.OMT是一种对象建模技术,它定义了三种模型,它们分别是 A 模型, B 模型,和 C 模型。其中, A 模型描述了系统中对象的静态结构,以及对象之间的联系; B 模型描述系统中与时间和操作顺序有关的系统特征,表示瞬时的行为上的系统的“控制”特征,通常可用 D 来表示; C 模型描述了与值的变换有关的系统特征,通常可用 E 来表示。

A:①对象②功能③ ER ④静态

B:①控制②时序③动态④实时

C:①对象②功能③变换④计算

D:①类图②状态图③对象图④数据流图

E:①类图②状态图③对象图④数据流图

4.在完成概要设计并编写出相关文档后,应当组织对概要设计工作的评审。评审的内容包括:分析该软件的系统结构、子系统结构,确定该软件设计是否已经覆盖了所有已确定的软件需求,软件的每一成分是否可 A 到某一项需求。分析软件的各部分之间的联系,确认该软件的内部接口与外部接口是否已经明确定义。模块是否满足 B 和 C 的要求。模块 D 是否在其 E 之内。

A:①覆盖②演化③追溯④等同⑤连接

B:①多功能②高内聚③高耦合④高效率⑤可读性

C:①多入口②低内聚③低耦合④低复杂度⑤低强度

D~E:

①作用范围②高内聚③低内聚④取值范围⑤控制范围

5.软件设计中划分程序模块通常遵循的原则是要使各模块间的耦合性尽可能 A 。

三种可能的模块耦合是:

1). B :例如,一个模块直接引用另一模块中的数据。

2). C :例如,一个模块把开关量作为参数传送给另一模块。

3). D :例如,一个模块把一个数值量作为参数传送给另一模块。

其中,E5 的耦合性最强。

A:①强②适中③弱④不考虑

B~E:

①公共耦合②数据耦合③逻辑耦合④外部耦合

⑤内容耦合⑥控制耦合

6.软件设计中划分模块的一个准则是 A 。两个模块之间的耦合方式中, B 耦合的耦合度最高, C 耦合的耦合度最低。一个模块内部的内聚种类中 D 内聚的内聚度最高, E 内聚的内聚度最低。

A:①低内聚低耦合②低内聚高耦合③高内聚低耦合④高内聚高耦合

B:①数据②非直接③控制④内容

C:①数据②非直接③控制④内容

D:①偶然②逻辑③功能④过程

E:①偶然②逻辑③功能④过程

7.经过需求分析阶段后,已经清楚了目标系统必须“做什么”了,下一步应进入总体设计阶段。总体设计阶段过程通常由确定系统具体实现方案的 A 和确定软件结构的 B 组成。大致过程可描述如下:设想可供选择的方案、选取合理方案、推荐最佳方案、功能分解、设计软件结构、数据库设计、制定测试计划、书写文档、审查与复审。对每个合理的方案,都应该准备 C 、 D 、 E 和实现这个系统的进度计划。

A:①程序流程图设计②系统设计③操作手册书写④数据流图设计

B:①结构设计②程序流程图设计③单元测试方案设计④数据字典设计

C:①系统流程图②可行性报告③数据字典④算法描述

D:①组成系统的物理元素清单②数据字典③ HIPO图④数据流图

E:①成本/效益分析②测试方案③数据流图④数据字典

8.结构化设计方法在软件开发中用于 A ,它是一种面向 B 的设计方法。该方法使用的图形工具是 C , C 中矩形表示 D 。如果两矩形之间有直线相连,表示它们存在 E 关系。

A:①测试用例设计②概要设计③程序设计④详细设计

B:①对象②数据结构③数据流④控制流

C:①程序结构图②数据流程序图③程序流程图④实体联系图

D:①数据②加工③模块④存储

E:①链接②调用③并列④顺序执行

9.按软件工程的不同层次和适用范围,软件工程的标准可分为五级, A 制定的是国际标准, B 是行业标准。

GB1526-69对程序流程图等作了明确、具体规定,这种标准程序流程图的特点是: C 、 D 、 E 。

A:① IEEE,GJB ② IEEE,ANSI ③ ISO,IEC④ ISO,IEEE

B:① IEEE,GJB ② IEEE,ANSI ③ ISO,IEC ④ ISO,IEEE

C~E:

①箭头表示数据的传递方向②允许自定义多种特定的图形符号

③对循环结构规定了一对特定的符号④它和ISO的有关规定有一些差别

⑤允许有两个以上的出口的判定⑥特定方向的流线才用箭头表明方向

⑦不允许在图形符号外加注标识符和描述符

10.国家标准《计算机软件产品开发文件编制指南GB8567-88》中规定,在一项软件开发过程中,一般的说应该产生十四中文件,其中管理人员主要使用的有A2 、B3 、C4 、开发进度月报表、项目开发结报告。

开发人员主要使用的有 A 、 B 、D1 、数据要求说明书、概要设计说明书、详细说明书、数据库设计说明书、测试计划和E5 。维护人员主要使用的有设计说明书、 E 、 C 。

A~E:

①软件需求说明书②项目开发计划③可行性研究报告④模块开发卷宗

⑤测试分析报告⑥操作手册⑦用户手册

11.在众多的设计方法中,SD方法是受人注意的,也是最为广泛应用的一种,这种方法可以用分析阶段的 A 方法及编程阶段的 B 方法前后衔接,SD方法是考虑如何建立一个结构良好的程序,它提出了评价模块结构质量的两个标准——块间联系和块内联系。SD方法的最终目标是 C ,用于表示模块间调用关系的图被称为 D 。另一种比较著名的设计方法是以信息隐蔽为原则划分模块,这种方法叫做 E 方法。

A~B:

① Jackson ② SA ③ SP④ Parnas

C:①模块间关系大,模块内联系大②模块间关系大,模块内联系小

③模块间关系小,模块内联系大④模块间关系小,模块内联系小

D:① PAD图② HCP ③结构图④ SADT ⑤ HIPO图⑥ NS图

E:① Jackson ② Parnas③ Turing ④ Wirth ⑤ Dijkstra

12. 软件工程强调了软件生命周期的各个阶段在进入下一个阶段时必须依据阶段结束标准经行严格的阶段评审。请

回答下列各个阶段的结束标准:

问题定义阶段的结束标准是 A ;可行性研究阶段的结束标准是: B 和 C ;需求分析阶段的技术标准是: C 、 D 和 E 。

A:①关于规模和目标的报告书②关于系统的高层逻辑模型

③用户手册④操作手册

B:①程序流程图② IPO图③成本/效益分析④数据字典

C:①程序流程图②数据流图③ HIPO图④算法描述

D:①程序流程图② HIPO图③数据字典④成本/效益分析

E:①程序流程图②算法描述③ IPO图④ HIPO图

13. 软件工程强调了软件生命周期的各个阶段在进入下一个阶段时必须依据阶段结束标准经行严格的阶段评审。请

回答下列各个阶段的结束标准:

总体设计阶段的结束标准是 A 、 B 和 C ;

详细设计阶段的结束标准是: D 或 E 。

A:①系统流程图②维护记录③数据流图④操作手册

B:①程序流程图② IPO图③成本/效益分析④数据字典

C:①层次图或结构图②数据流图③ HIPO图④算法描述

D:①维护记录②HIPO图③数据字典④成本/效益分析

E:①维护记录②PDL③ IPO图④ HIPO图

14. 软件工程强调了软件生命周期的各个阶段在进入下一个阶段时必须依据阶段结束标准经行严格的阶段评审。请

回答下列各个阶段的结束标准:

编码与单元测试阶段的结束标准是 A 、 B ;

综合测试阶段的结束标准是: C 、 D ;

维护阶段的结束标准是: E 。

A:①源程序清单②维护记录③用户手册④ IPO图

B:①综合测试结果② IPO图③单元测试方案与结果④数据字典

C:①综合测试方案与结果②数据流图③ HIPO图④算法描述

D:①软件配置② HIPO图③数据字典④成本/效益分析

E:①维护记录② PDL ③ IPO图④ HIPO图

15.软件设计的常用方法有SA方法、Jackson方法、Parnas方法等。Jackson方法是一种面向数据结构的设计方法,一般在数据处理中,数据结构有 A 、 B 、 C 三类,并根据 D 来导出程序结构。Parnas方法的主要思想是 E ,这是提高可维护性的重要措施。

A~C:(共有下列15个可选择的答案供选择)

①记录②集合③指针④树⑤图

⑥表⑦顺序⑧选择⑨重复⑩线性表

⑾键表⑿列表⒀数组⒁栈⒂队列

D:①数据结构②数据间的控制结构③数据流图④ IPO图

E:①结构化②模块化③信息隐藏④信息继承

16.Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向 A 的设计方法,主要适用于规模适中的 B 系统的开发,其基本步骤依次是C1 、D3 、E2 。

A:①对象②数据流③数据结构④控制结构

B:①数据处理②文字处理③实时控制④科学计算

C~E:

①建立数据结构②列出基本操作③建立程序结构④建立控制结构

17.在软件工程的设计阶段中,有三种常用的设计方法:结构化设计(SD)方法、Jackson方法和Parnas方法。SD 方法侧重于A3 ,Jackson方法则是B2 ;Parnas方法的主要思想C4 。从70年代中期到90年代早期,

D 是最为常用的设计方法。

E 方法只提供了重要的设计准则,没有规定出具体的工作步骤。

A~C:

①使用对象、类和继承②由数据结构导出模块结构

③模块要相对独立,且功能单一,使块间联系弱,块内联系强

④将可能引起变化的因素隐藏在某有关模块内部,使这些因素变化时的影响范围受限制

⑤用数据流图表示系统的分解,且用数据词典和小说明分别表示数据和加工的含义

⑥自顶向下、逐步细化,采用顺序、选择和循环三种基本结构,以及限制GOTO语句的使用,设计出

可靠的和易维护的软件

D:① SD② Jackson ③ Parnas ④面向对象

E:① SD ② Jackson ③ Parnas④以上皆非

18.在编制程序时,应采纳的原则之一是 A 。开发软件时对提高开发人员工作效率至关重要的是 B 。软件工

程中描述生命周期的瀑布模型一般包括计划、 C 、设计、编码、测试、维护等几个阶段,其中设计阶段通常又可依次分成 D 和 E 两步。

A:①不限制goto 语句的使用②减少或取消注解行

③程序越短越好④程序结构应有助于读者理解

B:①操作系统的资源管理功能②程序开发环境

③程序人员数量④计算机的并行处理能力

C:①需求分析②需求调查③可行性分析④问题定义

D~E:

①数据结构设计②详细设计③概要设计④数据库设计

⑤方案设计⑥代码设计

19.确定算法是解决问题的关键步骤之一。算法的计算工作量大小和实现算法所需的存储单元多少,分别称为计算的 A 和 B 。编写程序时, C 和 D 是应采纳的原则之一。 E 是调试程序的主要工作之一。

A~B:

①可实现性②时间复杂度③空间复杂度④困难度

⑤高效性⑥计算有效性

C:①程序的结构化②程序越短越好

③尽可能节省存储单元④尽可能减少注解行

D:①使用有实际意义的名字②使用长度短而无实际含义的名字

③表达式中尽量少用括号④尽量使用化简了的逻辑表达式

E:①调度②证明程序正确③人员安排④排错

20.在设计测试用例时, A 是用得最多的一种黑盒测试方法。在黑盒测试方法中,等价类划分方法设计测试用例的步骤是:

①据输入条件把数目极多的输入数据划分成若干个有效等价类和若干个无效等价类;

②设计一个测试用例,使其覆盖B5 尚未被覆盖的有效等价类,重复这一步,直至所有的有效等价类均被

覆盖;

③设计一个测试用例,使其覆盖C1 尚未被覆盖的无效无价类,重复这一步,直至所有的无效等价类均被

覆盖。

因果图方法是根据 D 之间的因果关系来设计测试用例的。

在实际应用中,一旦纠正了程序中的错误后,还应选择部分或全部原先已测试过的测试用例,对修改后的程序重新测试,这种测试称为 E 。

A:①等价类划分②边值分析③因果图④判定表

B~C:

① 1个② 7个左右③一半④尽可能少的

⑤尽可能多的⑥全部

D:①输入与输出②设计与实现③条件与结果④主程序与子程序

E:①验收测试②强度测试③系统测试④回归测试

21.设计高质量的软件是软件设计追求的一个重要目标.可移植性、可维护性、可靠性、效率、可理解性和可使用性等都是评价软件质量的重要方面。

可移植性是反映出把一个原先在某种硬件或软件环境下正常运行的软件移植到另一个硬件或软件环境下,使该软件也能正确地运行的难易程度。为了提高软件的可移植性,应注意提高软件的 A 。

可维护性通常包括 B 。通常认为,软件维护工作包括改正维护、C4 维护和D6 维护。其中 C 维护则是为了扩充软件的功能或提高原有软件的性能而进行的维护活动。

E 是指当系统万一遇到未预料的情况时,能够按照预定的方式作合适的处理。

A:①使用方便②简洁性③可靠性④设备不依赖性

B:①可用性和可理解性②可修改性、数据独立性和数据一致性

③可测试性和稳定性④可理解性、可修改性和可测试性

C~D:

①功能性②扩展性③合理性④完善性⑤合法性⑥适应性

E:①可用性②正确性③稳定性④健壮性

22.在结构测试用例设计中,有语句覆盖、条件覆盖、判定覆盖(即分支覆盖)、路径覆盖等,其中A4 是最强的覆盖准则。

为了对如下图所示的程序段进行覆盖测试,必须适当地选取测试数据组。若x,y是两个变量,可供选择的测试数据组共有Ⅰ、Ⅱ、Ⅲ、Ⅳ四组(如表中给出),则实现判定覆盖至少应采用的测试数据组是B5,8 ;实现条

件覆盖至少应采用的测试数据组是C7 ;实现路径覆盖至少应采用的测试数据组是D5 或E8 。

A:①语句覆盖②条件覆盖③判定覆盖④路径覆盖

B~E:

①Ⅰ组和Ⅱ组②Ⅱ组和Ⅲ组③Ⅲ组和Ⅳ组④Ⅰ组和Ⅳ组

⑤Ⅰ组、Ⅱ组和Ⅲ组⑥Ⅱ组、Ⅲ组和Ⅳ组⑦Ⅰ组、Ⅲ组和Ⅳ组⑧Ⅰ组、Ⅱ组和Ⅳ组

23.软件测试的目的是 A 。为了提高测试的效率,应该 B 。使用白盒测试方法时,确定测试数据应根据 C 和指定的覆盖标准。一般说来与设计测试数据无关的文档是 D 。软件的集成测试工作最好由 E 承担,以提高集成测试的效果。

A:①评价软件的质量②发现软件的错误

③找出软件中的所有错误④证明软件是正确的

B:①随机地选取测试数据②去一切可能的输入数据作为测试数据

③在完成编码以后制定软件的测试计划④选择发现错误的可能性大的数据作为测试数据

C:①程序的内部逻辑②程序的复杂程度

③使用说明书④程序的功能

D:①需求规格说明书②设计说明书③源程序④项目开发计划

E:①该软件的设计人员②该软件开发组的负责人

③该软件的编程人员④不属于该软件开发组的软件设计人员

24. A 在实现阶段进行,它所依据的模块功能描述和内部细节以及测试方案应在 B 阶段完成,目的是发现编程错误。

C 所依据的模块说明书和测试方案应在

D 阶段完成,它能发现设计错误。

E 应在模拟的环境中进行强度测试的基础上进行,测试计划应在软件需求分析阶段完成。

A:①用户界面测试②输入输出测试③集成测试④单元测试

B:①需求分析②概要设计③详细设计④结构设计

C:①集成测试②可靠性测试③系统性能测试④强度测试

D:①编程②概要设计③维护④详细设计

E:①过程测试②函数测试③验收测试④逻辑路径测试

25.软件质量包含多方面的内容, A 、 B 、可移植性、可复用性等是较为重要的质量特性。在软件开发中,必须采取有利的措施,以确保软件的质量,这些措施至少应包括 C 、 D 、 E 。

A~B:

①稳定性②可靠性③数据一致性④可维护性

⑤可行性⑥数据独立性

C~E:

①在开发初期制定质量保证计划,并在开发中坚持实行

②开发工作严格按阶段进行,文档工作应在开发完成后集中进行

③严格执行阶段评审

④要求用户参与全部开发过程,以监督开发质量

⑤开发前选定或制定开发标准或开发规范,并遵照实施

⑥争取足够的开发经费和开发人力的支持

26.软件维护工作越来越受到重视,因为它的花费常常要占软件生存周期全部花费的 A %左右。其工作内容为

B ,为减少维护工作的困难可以考虑采取的措施是

C 。而软件的可维护性包含

D 。所谓维护管理主

要指的是 E 等。

A:① 10~20 ② 20~40 ③ 60~80 ④ 90以上

B:①纠正与修改软件中含有的错误②因环境已发生变化,软件需作相应的变更

③为扩充功能,提高性能而作的变更④包括上述各点内容

C:①设法开发出无错的软件②增加维护人员数量

③切实加强维护管理,并在开发过程中采取有利于未来维护的措施④限制修改的范围

D:①正确性、灵活性、可移植性②可测试性、可理解性、可修改性

③可靠性、可复用性、可用性④灵活性、可靠性、高效性

E:①加强需求分析②重新编码

③判定修改的合理性并审查修改质量④加强维护人员管理

27.软件测试是软件质量保证的主要手段之一,测试的费用已超过 A 的30%以上。因此提高测试的有效性非常重要。“高产”的测试是指 B 。根据国家标准GB8566-88计算机软件开发规范的规定,软件的开发和维护分为八个阶段,其中单元测试是在C5 阶段完成的;组装测试的计划是在D3 阶段制订的;确认测试的计划是在

E 2 阶段制订的。

A:①软件开发费用②软件维护费用③软件开发和维护费用④软件研制费用

B:①用适量的测试用例,说明被测试程序正确无误

②用适量的测试用例,说明被测试程序符合相应的要求

③用少量的测试用例,发现被测试程序尽可能多的错误

④用少量的测试用例,纠正被测试程序尽可能多的错误

C~E:

①可行性研究和计划②需求分析③概要设计④详细设计

⑤实现⑥组装测试⑦确认测试⑧使用和维护

28.软件测试的目的是 A 。通常 B 是在代码编写阶段可进行的测试,它是整个测试工作的基础。逻辑覆盖标准主要用于 C 。它主要包括条件覆盖、条件组合(多重条件)覆盖、判定覆盖、条件及判定覆盖、语句覆盖、路径覆盖等几种覆盖,其中除路径覆盖外最弱的覆盖是D5 ,最强的覆盖标准是E2 。

A:①表明软件的正确性②评价软件质量③尽可能发现软件中错误④判定软件是否合格

B:①系统测试②安装测试③验收测试④单元测试

C:①黑盒测试方法②白盒测试方法③灰盒测试方法④软件验证方法

D~E:

①条件覆盖②条件组合覆盖③判定覆盖④条件及判定覆盖⑤语句覆盖29.在软件开发过程中常用图作为描述工具。如DFD就是面向 A 分析方法的描述工具。在一套分层DFD中,

如果某一张图中有N个加工(process),则这张图允许有 B 张子图。在一张DFD图中,任意两个加工之间

C 。在画分层DFD时,应注意保持

D 之间的平衡。DFD中从系统的输入流到系统的输出流的一连串连

续变换形成一种信息流,这种信息流可分为 E 两类。

A:①数据结构②数据流③对象④构件(component)B:① 0 ② 1 ③ 0~N④ 1~N

C:①有且仅有一条数据流②可以有0或多条名字互不相同的数据流

③至少有一条数据流④可以有0或多条数据流,但允许有若干名字相同的数据流

D:①父图与子图②同一父图的所有子图③不同父图的所有子图④同一子图的所有父图E:①控制流和变换流②变换流和事务流③事务流和事件流④事件流和控制流30.软件的易维护性是指理解、改正、改进软件的难易程度。通常影响软件易维护性的因素有易理解性、易修改性

和 A 。在软件的开发过程中往往采取各种措施来提高软件的易维护性。如采用 B 有助于提高软件的易理解性; C 有助于提高软件的易修改性。

在软件质量特性中, D 是指在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属性;

E 是防止对程序及数据的非授权访问的能力。

A:①易使用性②易恢复性③易替换性④易测试性

B:①增强健壮性②信息隐蔽原则③良好的编程风格④高效的算法

C:①高效的算法②信息隐蔽原则③增强健壮性④身份认证

D:①正确性②准确性③可靠性④易使用性

E:①安全性②适应性③灵活性④容错性

二、简要回答下列问题

1. 简要叙述面向对象软件开发方法的基本过程,列出该方法的主要优点,并指出适用于该方法的几个软件开

发模型。

2. 简要叙述结构化软件开发方法的基本过程,列出该方法的主要缺点,并指出适用于该方法的几个软件开发

模型。

3. 简要叙述Jackson软件开发方法的基本过程,列出该方法的主要缺点,并指出适用于该方法的几个软件开发

模型。

4. 简要叙述七种内聚的具体含义,并分别举例加以说明。

5. 简要叙述七种耦合的具体含义,并分别举例加以说明。

6. 为什么说软件测试应该由专门的测试人员担当?集成测试时,主要应该考虑软件系统的哪些因素?

7. 在结构化开发方法中,测试计划的制订是在哪个阶段进行的?其理由是什么?单元测试、集成测试、确认

测试的依据分别是什么?分别在什么阶段进行?

8. 简要叙述瀑布模型的主要过程及其特点。

9. 简要叙述快速原型模型的主要过程及其特点。

10. 简要叙述螺旋模型的主要过程及其特点。

11. 简要叙述增量模型的主要过程及其特点。

12. 简要叙述喷泉模型的主要过程及其特点。

13. 简述软件工程的7条基本原理。

以上问题的答案,从略。

三、应用题

1. 商店业务处理系统的业务描述及数据流图如下:

顾客到商店购物时,在经过挑选之后填写了一张订单,详细列出了想要购买的物品名称、规格和数量等。商店接到订单后首先查商品库存,看是否有足够的存货。若有,则出库且修改商品库存文件,然后给顾客开发货票,让顾客交款、给顾客开收据并取货,最后登记销售历史。若存货不足,则暂存顾客订单并向采购部门发出订货通知。采购部门根据商品库存和暂存订单信息向供应商订货。待接到供应商发来的相应商品时,通知财务部门向供应商付款,并向销售部门发出到货通知,同时,采购部门要修改商品库存和暂存订单信息。当销售部门接到到货通知时,应通知顾客来付款取货。财务部门依据供应商送来的收据记账。

试求解下列问题: 1).针对处理1,给出该处理的一级细化的DFD (要求给出合适的数据流与数据存储说明); 2).针对处理2,给出该处理的一级细化的DFD (要求给出合适的数据流与数据存储说明); 3).给出“发货单”的DD 定义; 4).给出“订货单”的DD 定义; 5).根据你对问题的理解,给出“商品库存”这个数据存储的数据结构描述。 6).根据你对问题的理解,给出“销售历史”这个数据存储的数据结构描述。

暂存订单 商品库存 采购订单 销售历史 帐 目

图1.商店业务处理系统的顶层DFD

销售历史 商品库存 采购订单 应收款明细账 总 账 暂存订单 应付款明细账 图2.商店业务处理系统的功能级DFD

解答:

商品库存暂存订单

暂存订单

“发货单”的DD定义,满足基本要求即可。

“订货单”的DD定义,满足基本要求即可。

2) 商品库存数据存储的数据结构描述。

3) 销售历史数据存储的数据结构描述。

2.考务处理系统的功能描述如下:

1).对考生送来的报名单进行检查;

2).对合格的报名单编好准考证号后将准考证送给考生,并将汇总的考生名单送给阅卷站;

3).对阅卷站送来的成绩清单进行检查,并根据考试中心制定的合格标准审定合格者;

4).制作考生通知单(内含成绩及合格或不合格标志)送给考生;

5).按地区、年龄、文化程度、职业、考试级别等进行成绩分类统计和试题难度分析,产生统计分析表。

该考务处理系统的顶层DFD和0层DFD如图所示:

A.系统顶层数据流图

B.功能级数据流图(0层图)

试求解下列问题:

1).针对处理1,给出该处理的1级细化的DFD(要求给出合适的数据流与数据存储说明);

2).针对处理2,给出该处理的1级细化的DFD(要求给出合适的数据流与数据存储说明);

3).给出“报名单”的DD定义;

4).给出“考生名单”的DD定义;

5).根据自身经历和对问题的理解,给出考生名册数据存储的数据结构描述。

6).给出“统计分析表”的DD定义;

1) 流程图,满足基本要求即可。

2) “报名单”的DD定义,满足基本要求即可。

“考生名单”的DD定义,满足基本要求即可。

3) 考生名册数据存储的数据结构描述。

3. 阅读以下说明和数据流图,回答问题1、问题2和问题3。

说明:下面给出的是某房产管理系统的一套分层数据流图,其功能描述如下:

系统随时根据住房送来的入住单更新住户基本信息文件;每月初系统根据物业管理委员会提供的月附加费(例如清洁费、保安费、大楼管理费等)表和房租调整表,计算每家住户的月租费(包括月附加费),向住户发出交费通知单。

住户交费时,系统输入交费凭证,核对后输出收据给住户; 系统定期向物业管理委员会提供住房分配表和交费情况表;

住户因分户或换房,在更新住户基本信息文件的同时,系统应立即对这些住户做月租费计算,以了结分户或换房前的房租。

假定题中所提供的顶层DFD 是正确的,请回答下列问题: 问题1:指出哪张图中的哪些文件可不必画出。

问题2:指出在哪些图中遗漏了哪些数据流,回答时请用如下形式之一:

(l )X X

图中遗漏了X X 加工(或文件)流向X X 加工(或文件)的X X 数据流; (2)X X 图中加IX X 遗漏了输人(或输出)数据流XX 。 问题3:指出加工2图中加工2.3能检查出哪些不合格交费凭证。 数据流图如图1-4所示。

图2. 0层数据流图

答案:问题1:

0层图中的“房租文件”和“交费文件”是局部文件,可不必画出。

问题2:

(1)加工1子图中,遗漏了从住户基本信息文件到加工1.1(入住单校验)的输入数据流;

(2)加工1子图中,加工1.6(制作住房分配报告)遗漏了“住房分配表”输出数据流;

(3)加工2子图中,加工2.1(计算月租费)遗漏了“月附加费表”输入数据流;

(4)加工2子图中,加工2.4(制作收据)遗漏了“收据”输出数据流;

问题3:

(1)交费凭证中有非法字符;

(2)交费文件中不存在与之对应的交费凭证;

4. 阅读以下说明和DFD,回答问题1和问题2。

说明:某供销系统接受顾客的订单,当库存中某配件的数量小于订购量或库存量低于一定数量时,向供应商发出采购单;当某配件的库存量大于或等于定购量时,或者收到供应商的送货单并更新了库存后,向顾客发出提货单。该系统还可随时向总经理提供销售和库存情况表。该供销系统的分层DFD中部分数据流和文件的组成如下:文件:配件库存=配件号 + 配件名 + 规格 + 数量 + 允许的最低库存量

数据流:订货单=配件号 + 配件名 + 规格 + 数量 + 顾客名 + 地址

提货单=订货单 + 金额

采购单=配件号 + 配件名 + 规格 + 数量 + 供应商名 + 地址

送货单=配件号 + 配件名 + 规格 + 数量 + 金额

假定顶层DFD是正确的,且“供应商”文件已由其它系统生成。

问题1: 指出哪张图中的哪些文件可不必画出。

问题2: 指出在哪些图中遗漏了哪些数据流。回答时使用如下形式之一:

(l)××图中遗漏了××加工(或文件)流向××加工(或文件)的×××数据流;

(2)××图中××加工遗漏了××输入(或输出)数据流。

数据流图如图1-4所示。

配件库存

图2. 0层数据流图

销售历史

图3. 加工1的一级数据流图

图4. 加工2的一级数据流图

答案:问题1:

0层图中的“采购清单”多余,应该去掉。

问题2:

(1)加工1子图中遗漏了“配件库存”文件到1.3加工的数据流;

(2)加工1子图中1.4加工中遗漏了“提货单”输出数据流;

(3)加工1子图中1.5加工中遗漏了“到货通知”输入数据流;

(4)加工2子图中2.3加工中遗漏了“采购请求”输入数据流;

数据流图方面的较为难的题目方式如下2题:

5.为方便储户,某银行拟开发一个储蓄业务计算机管理系统。储户填写的存款单或取款单由业务员输入到系统中,如果是存款,系统则记录下列信息:

存款人姓名,身份证号码,家庭住址,存款类别,存款额,存款日期,利率

等信息,并打印存款单给储户;如果是取款,系统要计算利息并打印利息清单给储户。

试根据上面的基本要求,回答下列问题:

1).请写出该问题的问题定义;

2).请画出该问题的系统流程图;

3).请画出该问题的功能级数据流程图。

6.为方便旅客,某航空公司拟开发一个机票预订计算机管理系统。旅行社把预订机票的旅客信息(主要包括:旅客姓名,性别,工作单位,身份证号码,旅行时间,旅行目的地等)输入到系统中,系统为该旅客安排航班并打印出取票通知和账单返给旅客,旅客在飞机起飞前的规定时间内凭取票通知和账单交款取票,当系统确认无误时即印出机票给旅客。

试根据上面的基本要求,回答下列问题:

1).请写出该问题的问题定义;

2).请画出该问题的系统流程图;

3).请画出该问题的功能级数据流程图。

7.下表是软件工程生命周期中各个阶段所产生的文档。请标明各个文档的编制与各个阶段的关系,并列出每个文档必须回答的问题(表中已给出解题例子,请仿照)。

软件工程考试题库

软件工程考试题库 Final approval draft on November 22, 2020

一填空题 1.用原型过程代替全部开发阶段,这种快速原型是(实验型或演化型)原型。 2.可行性研究实质上是进行一种简化、压缩了的(需求分析和设计)。 3.结构图的主要内容有(模块)、(模块的控制关系)、(模块的信息传递)。 4.模块之间的联系越紧密,其耦合性就越(强),模块的独立性就越(差)。 5.软件工程研究的主要内容包括软件开发技术和软件开发管理两个方面,在软件开发技术方面,主要是研究(软件开发方法)、(软件开发过程)、(软件开发工具和环境),在软件开发管理方面,主要是研究(软件管理学)、(软件经济学)、(软件心理学)。 6.状态图反映了(状态)与(事件)的关系,状态图确定了由事件序列引起的(状态序列)。 7.可行性研究实质上是进行一种简化、压缩了的(需求分析和设计)。 8.在数据流图中,(数据流)是数据在系统内传播的路径,因此由一组(成分固定的数据项)组成,加工(又称为数据处理)是对数据流进行某些(操作或交换)。 9.(偶然内聚)指一个模块内的各处理元素之间没有任何联系,这是内聚程度最(差)的内聚。 10假如n个相同的系统(硬件或软件)进行测试,它们的失效时间分别是t1,t2,tn,则平均失效等待时间MTTF=(1/n )。 11(维护申请报告)是一种由用户产生的文档,它用作计划维护任务的基础。 12在软件开发和维护过程中,一个软件往往有许多版本,版本控制工具用来存储、更新、恢复和管理一个软件的(多个版本)。 13软件工具通常由工具、(工具接口)和用户工具三个部分组成。 14类的实例化是(对象)。 15形式化规约语言由(语法)、(语义)和(一组关系)组成。 16 软件质量保证应从(产品计划和设计)开始,直到投入使用和售后服务的软件生存期的每一个阶段中的每一步骤。 17 为了提高软件的质量,软件质量保证的任务大致可归结为以下8类:(正确定义用户要求)、(技术方法的应用)、(提高软件开发的工程能力)、(软件的复用)、(发挥每个开发者的能力)、(组织外部力量协作)、(排除无效劳动)、(提高计划和管理质量)。 18 软件测试时需要的三类信息,分别是(软件配置)、(测试配置)、(测试工具)。 19 在面向对象方法中,信息隐蔽通过对象的(封装性)来实现,类结构分离了(接口)与(实现),从而支持了信息隐蔽。 20 增量模型在开发工程中以一系列(增量方式)开发系统,推迟某阶段的(细节),从而(尽早)产生工作软件。 二选择题 1.(A)是计算机程序及其说明程序的各种文档。 A 软件 B文档 C 数据 D 程序 2.软件生存周期包括可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、(B)和维护等活动。 A 应用 B 测试 C 检测 D 以上答案都不正确 3.建立原型的目的不同,实现原型的途径也有所不同,下列不正确的类型是(B)。 A 用于验证软件需求的原型 B 垂直原型 C 用于验证设计方案的原型 D 用于演化出目标系统的原型

软件工程复习考试题库带答案完整版

一、选择题 1、白盒测试法是通过分析程序的(C)来设计测试用例的。 A.应用范围B.功能 C.内部逻辑 D.输入数据 2、风险预测从两个方面评估风险,即风险发生的可能性以及(D)。 A.风险产生的原因 B.风险监控技术 C.风险能否消除D.风险发生所产生的后果 3、极限编程(XP)由价值观、原则、实践和行为四部分组成,其中价值观包括沟通、简单性和(C)。 A.好的计划 B.不断的发布 C.反馈和勇气 D.持续集成 4、等价分类法的关键是(C)。 A.确定等价类的边界条件 B.按照用例来确定等价类 C.划分等价类 D.确定系统中相同和不同的部分 5、下列不属于黑盒测试的技术是(A)。 A.程序段或语句的功能 B.模块的接口 C.数据的名称和用途D.模块的功能 6、为了提高模块的独立性,模块之间最好是(D)耦合。 A.控制耦合 B.公共耦合 C.内容耦合D.数据耦合 7、一个软件开发过程描述了“谁做”,“做什么”,“怎么做”和“什么时候做”,RUP用(A)来表述“谁做”。 A.角色 B.活动 C.制品D.工作流 8、功能性注释嵌入在源程序内部,它是用来说明(A)。 A.程序段或语句的功能B.模块的接口 C.数据的名称和用途 D.模块的功能 9、在结构化分析方法中,数据字典是重要的文档。对加工的描述是数据字典的组成内容之一,常用的加工描述方法有( C )。 A.只有结构化语言B.有结构化语言和判定树 C.有结构化语言、判定树和判定表 D.有判定树和判定表 10、某银行为了使其网上银行系统能够支持信用卡多币种付款功能而进行扩充升级,这需要对数据类型稍微进行一些改变,这一状况需要对网上银行系统进行(B)维护。 A.正确性 B.适应性 C.完善性 D.预防性 11、软件危机的主要原因是(A)。 A软件本身特点与开发方法?B对软件的认识不够 C软件生产能力不足D软件工具落后 12、DFD是常用的进行软件需求分析的图形工具,其基本符号是(C)。 A.输入、输出、外部实体和加工

软件工程习题及参考答案

软件工程习题及部分参考答案 判断题 ?软件也会磨损和老化。(X) ?完善性维护是提高或完善软件的性能。(√) ?数据字典是对数据流图中的数据流,加工、数据存储、数据的源和终点进行详细定义。 (X) ?软件是指用程序设计语言(如PASCAL ,C,VISUAL BASIC 等)编写的程序,软件开发实际上就是编写程序代码。(X) ?软件模块之间的耦合性越弱越好。(√) ?如果通过软件测试没有发现错误,则说明软件是正确的。(X) ?快速原型模型可以有效地适应用户需求的动态变化。(√) ?模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高聚,低耦合度的软件产品。(√) ?集成测试主要由用户来完成。(X) ?确认测试计划应该在可行性研究阶段制定(X) ?白盒测试无需考虑模块部的执行过程和程序结构,只要了解模块的功能即可。(X) ?软件概要设计包括软件系统结构设计以及数据结构和数据库设计。(√) ?软件工程采用的生存周期方法就是从时间角度对软件的开发和维护这个复杂问题进行分解,将软件生存的时期分为若干阶段。(√) ?系统流程图表达的是部件的信息流程,还表示对信息进行加工处理的控制过程。(╳)?模块越多,开发成本越小。(╳) ?软件测试的目的就是证明软件没有错。(╳) ?PAD图在设置了五种基本的控制结构后,还允许递归使用。(√) ?在进行了可行性分析后,需求分析就只需要解决目标系统的设计方案。(×) ?SA法是面向数据流,建立在数据封闭原则上的需求分析方法。(√) ?HIPO 法既是需求分析方法,又是软件设计方法。(√) ?在面向对象的需求分析方法中,建立动态模型是最主要的任务。(×) ?加工小说明是对系统流程图中的加工进行说明。(×) ?判定表的优点是容易转换为计算机实现,缺点是不能够描述组合条件。(×) ?需求分析的主要方法有SD 法、OOA 法及HIPO 法等。(×) ?分层的DFD 图可以用于可行性分析阶段,描述系统的物理结构。(×) ?信息建模方法是从数据的角度来建立信息模型的,最常用的描述信息模型的方法是E-R 图。(√) ?用于需求分析的软件工具,应该能够保证需求的正确性,即验证需求的一致性、完整性、现实性和有效性。(√) ?PDL经常表现为一种"混杂"的形式,他不允许自然语言如英语的词汇与某种结构化程序设计语言(如Pascal,C,Ada等)的语法结构交织在一起.(X) ?设计阶段的输出是编码阶段的输入.(√) ?通过软件测试,可以发现软件中所有潜伏的错误.(X) ?非结构化维护用于软件的配置中只有源代码维护.(√) ?系统规格说明是系统分析和定义阶段生成的一种文档.(√) ?数据流图的分解速度应保持较高.通常一个加工每次可分解为10~20个子加工.(X)

软件工程考试题库

软件工程概述 一单项选择 1.软件生命周期一般包括:软件开发期和软件运行期,下述(D)不是软件开发期所应包含的内容。 A需求分析B结构设计C程序编制D软件维护 2.软件是一种逻辑产品,它的开发主要是(A)。 A研制B拷贝C再生产D复制 3.以文档作为驱动,适合于软件需求很明确的软件项目的生存周期模型是(C)。 A喷泉模型B增量模型C瀑布模型D螺旋模型 4.在软件生存周期中,(B)阶段必须要回答的问题是“要解决的问题是做什么?”。 A详细设计B可行性分析和项目开发计划C概要设计D软件测试 5.软件产品与物质产品有很大区别,软件产品是一种(C)产品 A有形B消耗C逻辑D文档 6.(C)把瀑布模型和专家系统结合在一起,在开发的各个阶段上都利用相应的专家系统来帮助软件人员完成开发工作。 A原型模型B螺旋模型C基于知识的智能模型D喷泉模型 7.(B)阶段是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。 A概要设计B详细设计C编码D测试 8.下列软件开发模型中,适合于那些不能预先确切定义需求的软件系统的开发的模型是(A)。 A原型模型B瀑布模型C基于知识的智能模型D变换模型 9.下列软件开发模型中,以面向对象的软件开发方法为基础,以用户的需求为动力,以对象来驱动的模型是(C)。 A原型模型B瀑布模型C喷泉模型D螺旋模型 10.下列软件开发模型中,支持需求不明确,特别是大型软件系统的开发,并支持多种软件开发方法的模型是(D)。 A原型模型B瀑布模型C喷泉模型D螺旋模型 11.软件特性中,使软件在不同的系统约束条件下,使用户需求得到满足的难易程度称为(C)。 A可修改性B可靠性C可适应性D可重用性 12.软件特性中,一个软件能再次用于其他相关应用的程度称为(B)。 A可移植性B可重用性C容错性D可适应性 13.软件特性中,(A)是指系统具有清晰的结构,能直接反映问题的需求的程度。 A可理解性B可靠性C可适应性D可重用性 14.软件特性中,软件产品交付使用后,在实现改正潜伏的错误、改进性能、适应环境变化等方面工作的难易程度称为(B)。 A可理解性B可维护性C可适应性D可重用性 15.软件特性中,软件从一个计算机系统或环境移植到另一个上去的难易程度指的是(C). A可理解性B可修改性C可移植性D可重用性 16.软件特性中,在给定的时间间隔内,程序成功运行的概率指的是(D)。 A有效性B可适应性C正确性D可靠性 17.软件特性中,允许对软件进行修改而不增加其复杂性指的是(A)。 A可修改性B可适应性C可维护性D可移植性 18.软件特性中,多个软件元素相互通讯并协同完成任务的能力指的是(B)。 A可理解性B可互操作性C可维护性D可追踪性 19.软件特性中,根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行逆向

软件工程考试题(带答案)..

一、选择题 1.软件开发瀑布模型中的软件定义时期各个阶段依次是:(B) A) 可行性研究,问题定义,需求分析。 B) 问题定义,可行性研究,需求分析。 C) 可行性研究,需求分析,问题定义。 D) 以上顺序都不对。 2.可行性研究主要从以下几个方面进行研究:(A) A)技术可行性,经济可行性,操作可行性。 B)技术可行性,经济可行性,系统可行性。 C)经济可行性,系统可行性,操作可行性。 D)经济可行性,系统可行性,时间可行性。 3 耦合是对软件不同模块之间互连程度的度量。各种耦合按从强到弱排列如下:(C) A) 内容耦合,控制耦合,数据耦合,公共环境耦合。 B) 内容耦合,控制耦合,公共环境耦合,数据耦合。 C) 内容耦合,公共环境耦合,控制耦合,数据耦合。 D) 控制耦合,内容耦合,数据耦合,公共环境耦合。4.在详细设计阶段所使用到的设计工具是:(A) A) 程序流程图,PAD图,N-S图,HIPO图,判定表, 判定树. B) 数据流程图,Yourdon 图,程序流程图,PAD图, N-S图,HIPO图。 C) 判定表,判定树,PDL,程序流程图,PAD图,N- S图。 D) 判定表,判定树,数据流程图,系统流程图,程序 流程图,层次图。 5 按照软件工程的原则,模块的作用域和模块的控制域之间的关系

是:(A) A)模块的作用域应在模块的控制域之内。 B)模块的控制域应在模块的作用域之内。 C)模块的控制域与模块的作用域互相独立。 D)以上说法都不对。 6在软件生命周期中,能准确确定软件系统的体系结构的功能阶段是(C) A.概要设计 B.详细设计 C.需求分析 D.可行性分析 7下面不是软件工程的3个要素的是(C) A过程 B.方法 C.环境 D.工具 8.下面不属于软件的组成的是(B) A程序 B.记录 C.文档 D.数据 9在瀑布模型中,将软件分为若干个时期,软件项目的可行性研究一般归属于(C) A.维护时期 B.运行时期 C.定义时期 D.开发时期 10.在瀑布模型中,下面(C)是其突出的缺点。 A.不适应平台的变动 B.不适应算法的变动 C.不适应用户需求的变动 D.不适应程序语言的变动 11下面不属于软件的特点的是(D)。 A软件是一种软件产品 B软件产品不会用坏,不存在磨损、消耗问题 C软件产品的生产主要是研制 D软件产品非常便宜 12 软件开发工具是协助开发人员进行软件开发活动所使用的软件或环境。下面不是软件开发工具的是(A)。

软件工程课后习题答案

软件工程课后习题答案 习题1 略。 习题2 略。 习题3 略。 习题4 2.在什么情况下应该使用形式化说明技术?使用形式化说明技术时应遵守哪些准则? 人们在理解用自然语言描述得规格说明时,容易产生二义性。为了克服非形式化方法得缺点,人们把数学引入软件开发工程,创造了基于数学得形式化说明技术。 应用形式化方法得准则: (1)应该选用释放得表示方法; (2)应该形式化,但不要过分形式化; (3)应该估算成本; (4)应该有形式化方法顾问随时提供咨询; (5)不应该放弃传统得开发方法; (6)应该建立详尽得文档; (7)不应该放弃质量标准; (8)不应该盲目依赖形式化方法; (9)应该测试、测试再测试; (10)应该重用。 4.用有穷状态机说明自动化图书馆流通系统

习题5 略。 习题6 略。 习题7 略。 习题8 略。 习题9 1.什么就是面向对象方法学?它有哪些优点? 面向对象方法学,就是尽可能模拟人类习惯得思维方式,使开发软件得方法与过程尽可能接近人类认识世界解决问题得方法与过程,从而使得实现解法得解空间(也称为求解域)与描述问题得问题空间(也称为问题域)在结构上尽可能一致。 优点: 1.与人类习惯得思维方法一致; 2.稳定性好; 3.可重用性好; 4.较易开发大型软件产品; 5.可维护性好 10.建立订货系统得用例模型。 分析如下:从对这个订货系统得需求可以知道,仓库管理员通过放在仓库中得终端把零件入库/出库市事务报告给订货系统,系统接受到事务信息之后应该处理事务;采购员需要使用订货系统提供得产生报表功能,以获取订货报表。综上所述,用例如下: 习题10 1.用面向对象方法分析研究本书习题2第2题中描述得储蓄系统,试建立它得对象模型、动态模型与功能模型。

软件工程课后习题参考答案

1.简述软件开发的本质。 答:软件开发的本质就是实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。P19 2.简述实施软件开发的基本途径。 答:实施软件开发的基本途径是系统建模。所谓系统建模,是指运用所掌握的知识,通过抽象,给出该系统的一个结构——系统模型。P19 3.简述何谓模型以及软件开发中所涉及的模型。 答:模型是一个抽象。该抽象是在意图所确定的角度和抽象层次对物理系统的一个描述,描述其中的成分和成分之间所具有的特定语义的关系,还包括对该系统边界的描述。 软件开发中所涉及的模型可分为两大类,一类称为概念模型,描述了系统是什么;另一类统称为软件模型,描述了实现概念模型的软件解决方案。 4.简述软件开发所涉及的两大类技术。 答:软件开发所涉及的两大类技术为:一是求解软件的开发逻辑,二是求解软件的开发手段。 5、简述需求与需求规约的基本性质。 答:需求的基本性质:1) 必要的,该需求是用户所要求的。2)无歧义的,该需求只能用一种方式解释。3)可测的,该需求是可进行测试的。4)可跟踪的,该需求可从一个开发阶段跟踪到另一个阶段。5)可测量的,该需求是可测量的。 需求规约的基本性质:1)重要性和稳定性程度:按需求的重要性和稳定性,对需求进行分级。2)可修改的:在不过多地影响其他需求的前提下,可以容易地修改一个单一需求。 3)完整的:没有被遗漏的需求。4)一致的:不存在互斥的需求。 6、简述软件需求的分类。

答:软件需求可以分为两大类:一类是功能需求,一类是非公能需求,而非公能需求可 7、举例说明功能需求和非功能需求之间的基本关系。 答: 非功能需求可作用于一个或多个功能需求,例如 非功能需求可作用于一个或多个功能需求 其中,非功能需求1作用于功能需求1和功能需求3等;非功能需求2作用于功能需求2等。P24 8、有哪几种常用的初始需求发现技术 答:有5种常用的需求发现技术:自悟、交谈、观察、小组会和提炼。P26 9、简述需求规约的3种基本形式。 (1) 非形式化的需求规约。非形式化的需求规约即以一种自然语言来表达需求规约,如同使用一种自然语言写了一篇文章。(2) 半形式化的需求规约。半形式化的需求规约即以半形式化符号体系(包括术语表、标准化的表达格式等)来表达需求规约。(3)形式化的需求规约。形式化的需求规约即以一种基于良构数学概念的符号体系来编制需求规约,一般往往伴有解释性注释的支持。 P29 10、简述软件需求规约的内容和作用。 答:软件需求规约的内容有:引言、总体描述、特定需求、附录、索引。P28 需求规约的作用可概括为以下4点:1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。2)对于项目的其余大多数工作,需求规约是一个管理控制点。3)对于产品/系统的设计,需求规约是一个正式的、受控的起始点。4)需求规约是创建产品验收测试计划和用户指南的基础。P31 11、简述需求规约在项目开发中的基本作用。 答:需求规约的作用可概括为以下4点:1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。2)对于项目的其余大多数工作,需求

软件工程题库

软件工程单元一(概述) 一单项选择 1.软件是一种逻辑产品,它的开发主要是(A )。 A研制B拷贝C再生产D复制 2.软件生命周期一般包括:软件开发期和软件运行期,下述(D )不是软件开发期所应包含的内容。 A需求分析 B 结构设计C程序编制D软件维护 3.以文档作为驱动,适合于软件需求很明确的软件项目的生存周期模型是( C )。 A喷泉模型 B 增量模型C瀑布模型D螺旋模型 4.在软件生存周期中,(B )阶段必须要回答的问题是“要解决的问题是做什么?”。 A详细设计 B 可行性分析和项目开发计划C概要设计D软件测试 5.软件产品与物质产品有很大区别,软件产品是一种(C )产品 A有形 B 消耗C逻辑D文档 6.(C )把瀑布模型和专家系统结合在一起,在开发的各个阶段上都利用相应的专家系统来帮助软件人员完成开发工作。 A 原型模型 B 螺旋模型 C 基于知识的智能模型 D 喷泉模型 7.( B )阶段是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。A概要设计 B 详细设计 C 编码 D 测试 8.下列软件开发模型中,适合于那些不能预先确切定义需求的软件系统的开发的模型是(A )。 A 原型模型 B 瀑布模型 C 基于知识的智能模型 D 变换模型 9.下列软件开发模型中,以面向对象的软件开发方法为基础,以用户的需求为动力,以对象来驱动的模型是( C )。 A 原型模型 B 瀑布模型 C 喷泉模型 D 螺旋模型 10.下列软件开发模型中,支持需求不明确,特别是大型软件系统的开发,并支持多种软件开发方法的模型是(D )。 A 原型模型 B 瀑布模型 C 喷泉模型 D 螺旋模型 11.软件特性中,使软件在不同的系统约束条件下,使用户需求得到满足的难易程度称为(C )。 A可修改性B可靠性C可适应性 D 可重用性 12.软件特性中,一个软件能再次用于其他相关应用的程度称为(B )。 A可移植性B可重用性 C 容错性 D 可适应性 13.软件特性中,(A )是指系统具有清晰的结构,能直接反映问题的需求的程度。 A可理解性B可靠性C可适应性 D 可重用性 14.软件特性中,软件产品交付使用后,在实现改正潜伏的错误、改进性能、适应环境变化等方面工作的难易程度称为(B )。 A可理解性 B 可维护性C可适应性 D 可重用性 15.软件特性中,软件从一个计算机系统或环境移植到另一个上去的难易程度指的是(C ). A可理解性B可修改性C可移植性 D 可重用性 16.软件特性中,在给定的时间间隔内,程序成功运行的概率指的是( D )。 A有效性B可适应性C正确性 D 可靠性 17.软件特性中,允许对软件进行修改而不增加其复杂性指的是(A )。 A可修改性B可适应性C可维护性 D 可移植性 18.软件特性中,多个软件元素相互通讯并协同完成任务的能力指的是(B )。 A可理解性B可互操作性C可维护性 D 可追踪性 19.软件特性中,根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行逆向追踪的能力指的是(C )。 A 可理解性 B 可互操作性C可追踪性 D 可维护性 20.软件的可修改性支持软件的(D )。 A 有效性 B 可互操作性C可追踪性 D 可维护性 21.软件的可移植性支持软件的(A )。 A 可适应性 B 可互操作性C可追踪性 D 有效性 22.软件的可理解性支持软件的(B )。

软件工程考试题(含答案)

软件工程考试题 简答题 1、什么叫软件? 软件就是计算机系统中与硬件相互依存的另一部分,它就是包括程序,数据及其相关文档的完整集合 2、什么叫软件危机?软件危机包含哪两点?软件危机产生的原因就是什么? 软件危机就是指在计算机软件开发与维护过程中所遇到的一系列严重问题。包括两点: (1)如何开发软件,以满足对软件日益增长的需求; (2)如何维护数量不断膨胀的已有软件。 软件开发与维护过程中存在的许多严重问题,一方面与软件本身的特点有关,另一方面也与软件开发与维护的方法不正确有关。具体表现如下: (1)软件就是逻辑部件而不就是物理部件。 (2)软件的规模越来越大,复杂性越来越大。 (3)轻视需求分析的重要性,轻视软件维护的错误观点与方法。 3、什么叫软件工程? 1968年在第一届NATO会议上的早期定义: “建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法”。 1993年IEEE的定义: “①软件工程就是:把系统的、规范的、可度量的途径应用于软件开发、运行与维护过程,也就就是把工程应用于软件;②进而研究①实现的途径”。 我们国家最近定义:软件工程就是指导计算机软件开发与维护的工程学科。它采用工程的概念、原理、技术与方法来开发与维护软件,把经过时间考验而证明正确的管理技术与当前能够得到的最好的技术方法结合起来。 4、两种软件工程方法学开发软件时要建立哪些模型? 软件工程方法学包括:传统方法学与面向对象方法学。常用的开发模型有: 瀑布模型(需求稳定,而且可以预先指定) 原型模型(需求模糊或者随时间变化) 增量模型(分析员先作出需求分析与概要设计,用户参与逐步完善) 螺旋模型(将瀑布模型与原型化模型结合起来,并加入了风险分析) 喷泉模型(使开发过程具有迭代性与无间隙性) 5、软件过程模型有哪些?简述它们的特点。 过程模型分为五大类:1、管理过程模型。2、瀑布模型(又称为生命周期模型)。3、增量过程模型:包括增量模型,,RAD模型。4、烟花过程模型:包括原型开发模型,螺旋模型,协同开发模型。5、专用过程模型:包括机遇构建的开发模型,形式化方法模型,面向方面的软件开发模型。 6、什么就是软件生命周期? 一个软件从定义,开发,使用与维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长时期称为生命周期 7、软件生命周期有哪几个阶段与步骤? 三个阶段:定义、开发、维护 八个步骤:问题定义、可行性研究、需求分析;总体设计、详细设计、编码与单元测试、综合测试;运行维护。 8、计算机软件的开发经过哪三个大阶段? 三个阶段:定义、开发、维护 9、软件开发的各阶段的任务就是什么? 定义阶段:问题定义--任务:关于规模与目标的报告书;可行性研究--任务:系统的高层逻辑模型:数据流图,成本/效益分析;需求分析--任务:系统的逻辑模型:数据流图,数据字典,算法描述。 开发阶段:总体设计--任务:系统流程图,成本/效益分析,推荐的系统结构:层次图/结构图;详细设计--任务:HIPO图或PDL 图;编码与单元测试--任务:源程序清单,单元测试方案与结果;综合测试--任务:综合测试方案,结果集成测试,验收测试,完整一致的软件配置。 维护阶段:软件维护--任务:维护记录以及改正性维护,适应性维护,完整性维护与预防性维护

-软件工程习题答案参考

软件工程 绪论 1.什么是软件危机?为什么会产生软件危机? 答:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。(1).软件维护费用急剧上升,直接威胁计算机应用的夸大。 (2).软件生产技术进步缓慢 2.什么是软件生产工程化?工程化生产方法与早期的程序设计方法 主要差别在哪里? 答:结构化程序设计地出现,使许多产业界认识认识到必须把软件生产从个人化方式改变为工程化。采用工程的概念、原理、技术和方法开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程,同时这也是工程化生产方法。 3.分别说明(1)软件开发方法与开发工具;(2)软件技术与软件管 理的相互关系。 答:(1)工具和方法,是软件开发技术的两大支柱,它们密切相关。当一种方法提出来并证明有效后,往往随之研制出相应的工具,来帮助实现和推行这种方法。新方法在推行初期,总有人不愿接受和采用。若将新方法融合于工具之中,使人们通过使用工具来了解新方法,就能更快促进新方法的推广。(2)在工业生产中,即使有先进的技术和设备,管理不善的企业也不能获得良好的效益。软件在生产中不能按质按时完成计划,管理混乱往往是其中的重要原因。所以对于一

个理想的软件工程环境,应该同时具备技术和管理两个方面。 4.试从你的亲身实践,谈谈软件工具在软件开发中的作用。 答:用C++开发一个软件,是校园一卡通的模块。首先,要在编辑程序支持下在计算机中输入源程序。然后编译程序,把源程序翻译成目标程序。如果发现错误,就重新调入编辑程序对源程序进行修改。编译通过后,再调用连接程序吧所有通过了编译目标程序连同与之有关的程序连接起来,构成一个能在计算机上运行的可执行软件。编译程序,编辑程序,连接程序以及支持他们的计算机操作系统,都属于软件工具。离开这些工具,软件开发就是去了支持,变得十分困难和低效,甚至不能运行。 5.什么是软件工程环境?谈谈你对环境重要性的认识。答:方法与工具相结合,再加上配套的软、硬件支持就形成环境。例如在批处理时代,用户开发的程序是分批送入计算机中心的计算机的,有了错误,就得下机修改。程序员对自己写的程序只能继续地跟踪,思路经常被迫中断,效率难于提高。分时系统的使用,使开发人员从此能在自己的终端上跟踪程序的开发,仅此一点,就明显提高了开发的效率。 6. 何谓面向对象软件工程?简述它与传统软件工程在各型软件开发中的作用。 答:以面向对象程序设计为基础。 7. 软件按规模大小可分成哪几类?简述软件工程中各型软件开发中的作用。 答:按规模分为极小、小、中、大、甚大、极大。(1)中小型软件:

软件工程题库

软件工程题库 一单项选择 1.软件是一种逻辑产品,它的开发主要是(A )。 A研制B拷贝C再生产D复制 2.软件生命周期一般包括:软件开发期和软件运行期,下述(D )不是软件开发期所应包含的内容。 A需求分析 B 结构设计C程序编制D软件维护 3.以文档作为驱动,适合于软件需求很明确的软件项目的生存周期模型是( C )。 A喷泉模型 B 增量模型C瀑布模型D螺旋模型 4.在软件生存周期中,(B )阶段必须要回答的问题是“要解决的问题是做什么?”。 A详细设计 B 可行性分析和项目开发计划C概要设计D软件测试 5.软件产品与物质产品有很大区别,软件产品是一种(C )产品 A有形 B 消耗C逻辑D文档 6.(C )把瀑布模型和专家系统结合在一起,在开发的各个阶段上都利用相应的专家系统来帮助软件人员完成开发工作。 A 原型模型 B 螺旋模型 C 基于知识的智能模型 D 喷泉模型 7.( B )阶段是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。A概要设计 B 详细设计 C 编码 D 测试 8.下列软件开发模型中,适合于那些不能预先确切定义需求的软件系统的开发的模型是(A )。 A 原型模型 B 瀑布模型 C 基于知识的智能模型 D 变换模型 9.下列软件开发模型中,以面向对象的软件开发方法为基础,以用户的需求为动力,以对象来驱动的模型是( C )。 A 原型模型 B 瀑布模型 C 喷泉模型 D 螺旋模型 10.下列软件开发模型中,支持需求不明确,特别是大型软件系统的开发,并支持多种软件开发方法的模型是( D )。 A 原型模型 B 瀑布模型 C 喷泉模型 D 螺旋模型 11.软件特性中,使软件在不同的系统约束条件下,使用户需求得到满足的难易程度称为(C )。 A可修改性B可靠性C可适应性 D 可重用性 12.软件特性中,一个软件能再次用于其他相关应用的程度称为(B )。 A可移植性B可重用性 C 容错性 D 可适应性 13.软件特性中,(A )是指系统具有清晰的结构,能直接反映问题的需求的程度。 A可理解性B可靠性C可适应性 D 可重用性 14.软件特性中,软件产品交付使用后,在实现改正潜伏的错误、改进性能、适应环境变化等方面工作的难易程度称为( B )。 A可理解性 B 可维护性C可适应性 D 可重用性 15.软件特性中,软件从一个计算机系统或环境移植到另一个上去的难易程度指的是(C ). A可理解性B可修改性C可移植性 D 可重用性 16.软件特性中,在给定的时间间隔内,程序成功运行的概率指的是( D )。 A有效性B可适应性C正确性 D 可靠性 17.软件特性中,允许对软件进行修改而不增加其复杂性指的是(A )。 A可修改性B可适应性C可维护性 D 可移植性 18.软件特性中,多个软件元素相互通讯并协同完成任务的能力指的是(B )。 A可理解性B可互操作性C可维护性 D 可追踪性 19.软件特性中,根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行

软件工程复习题及参考答案

《软件工程》课程复习资料 一、单项选择题: 1.下面哪些UML图描述系统行为[ ] A.用例图 B.类图 C.对象图 2.属于概要设计活动的是[ ] A.软件结构设计 B.数据结构设计 C.算法设计 3.属行为型设计模式的是[ ] A.组合模式 B.工厂方法模式 C.观察者模式 4.下列说法正确的是[ ] 是软件开发方法是系统描述语言 是软件开发过程 5.根据程序流程图划分的模块通常是[ ] A.信息内聚的模块 B.过程内聚的模块 C.逻辑内聚的模块 6.如果某程序中的比较个数是m,则其McCabe环形复杂度为[ ] +1 7.按ISO9000-3的说明,下列属软件配置项的是[ ] A.软件开发方法 B.软件开发组织管理制度 C.软件开发合同 8.软件测试的目的是[ ] A.证明软件无错 B.发现软件中的所有错误 C.尽可能发现软件系统中的错误 9.软件重构关注的是[ ] A.软件体系结构 B.模块细节 C.软件性能 10.软件项目开发计划的内容有[ ] A.数据分析 B.风险分析 C.功能分析 11.在UML的类图中,描述整体与部分关系的是[ ] A.泛化关系 B.聚合关系 C.依赖关系 12.软件过程能力成熟度模型CMM用以评价[ ] A.软件过程能力 B.组织能力 C.学习能力 13.因计算机硬件和软件环境的变化而作出的修改软件的过程称为[ ] A.完善性维护 B.改正性维护 C.适应性维护 14.对项目软件而言,软件功能需求信息主要由谁提供[ ] A.软件用户 B.软件开发人员 C.软件项目管理人员 图反映不出[ ] A.系统做什么 B.系统功能由谁做 C.系统如何做 16.原型模型是一种什么开发过程模型[ ] A.自顶向上 B.由外至内 C.增量式 17.系统流程图描述[ ] A.物理系统 B.逻辑系统 C.软件体系结构 18.需求规格说明书的内容不应该包括[ ] A.软件确认准则 B.软件的性能描述 C.算法过程的详细描述 19.适合需求模糊或需求不确定系统开发的软件开发模型是[ ] A.瀑布模型模型 C.原型模型 图中描述系统结构的是[ ] A.组件图 B.顺序图 C.状态图 21.面向对象方法是一种什么软件开发方法[ ] A.层次化 B.迭代增量式 C.逐步求精 22.不可以用来衡量软件可维护性的是

软件工程课后习题答案

软件工程课后习题答案 第一章 一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。软件危机的典型表现: (1) 对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。 (2) 用户对已完成的软件不满意的现象时有发生。 (3) 软件产品的质量往往是靠不住的。 (4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。

(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。 (7) 开发生产率提高的速度远跟不上计算机应用普及的需求。软件危机出现的原因: (1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。 (2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。 (3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。 二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改, 不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。

软件工程题库及答案

一、选择题 软件(2) 1.在软件开发的各种资源中,( D )是最重要的资源。 A 开发工具 B 方法 C 硬件环境 D 人员 2.软件的复杂性是(A ),它引起人员通信困难、开发费用超支、开发时间超时等问题。 A 固有的 B 人为的 C 可消除的 D 不可降低的 3.3:软件是计算机系统中与硬件相互依存的另一部分,它的组成部分是(D )。 A.程序、数据 B.程序、文档 C.程序 D. 程序、数据、文档 4.软件是一种(B )产品。 A、有形 B、逻辑 C、物质 D、消耗 软件危机(1) 5.1:开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做( C ) A.软件工程 B.软件周期 C.软件危机 D.软件产生 6.2:在软件生产的程序系统时代由于软件规模扩大和软件复杂性提高等原因导致了 ( A ) A.软件危机B.软件工程C.程序设计革命D.结构化程序设计 7.3:以下哪一项不是软件危机的表现形式( C ) (A)成本高(B)生产率低 (C) 技术发展快(D)质量得不到保证 8.4:“软件危机”产生的主要原因是( A )。 A.软件日益庞大 B.开发方法不当 C.开发人员编写程序能力差 D.没有维护好软件 9.5:软件危机是指在软件开发和( C )过程中遇到的一系列严重问题。 A 开发 B 使用C维护D更新 软件工程(2) 10.1:为了解决软件危机人们提出了用(B )的原理来设计软件,这就是软件工程诞生 的基础。 (A) 运筹学(B) 工程学(C) 软件学(D) 数学 11.2.在软件工程时期,决定软件质量的主要因素是( A )

A.管理水平 B.个人程序技术C.小组技术水平 D.硬件的发展 12. 3. 软件管理工作涉及到的直接对象不包括( B )。 A.软件开发人员 B.硬件设备 C.项目经费 D.软件项目 13. 4. 软件工程方法学有三个要素,它们是(A ) A.方法、工具和过程 B.质量、进度和成本 C.顺序、分支和循环 D.入口、过程、出口生命周期及模型(5) 14.1:软件工程中描述生命周期的瀑布模型一般包括计划、( A )、设计、编码、测试、维 护等几个阶段。 A.需求分析 B.需求调查 C.可行性分析 D.问题定义 15. 2.瀑布模型把软件生存周期划分为软件计划、软件开发与(C )三个阶段,而每一阶 段又可分为若干更小的阶段。 A. 详细设计 B. 可行性分析 C. 运行与维护 D. 测试与排错 16.3:下列哪个模型没有采用迭代的思想(A ) A.瀑布模型 B.渐增模型C.螺旋模型 D.RUP模型 17.4:下列关于瀑布模型的描述正确的是( D )。 A.利用瀑布模型,如果发现问题修改的代价很低 B.瀑布模型的核心是按照软件开发的时间顺序将问题简化 C.瀑布模型具有良好的灵活性 D.瀑布模型采用结构化的分析与设计方法,将逻辑实现与物理实现分开 18.5:瀑布模型本质上是一种(A )模型。 A.线性顺序 B.顺序迭代 C.线性迭代 D.早期产品 19. 6. 快速原型模型的主要特点之一是( D ) A.开发完毕才见到产品 B.及早提供全部完整的软件产品 C.开发完毕后才见到工作软件 D.及早提供工作软件 20.7:瀑布模型的关键不足在于( B ) (A)过于简单(B)不能适应需求的动态变更 (C)过于灵活(D)各个阶段需要进行评审 21.8:瀑布模型存在的问题是( D )。 A.用户容易参与开发 B.缺乏灵活性C.用户与开发者易沟通 D.适用可变需求 问题定义(1)

《软件工程》期末考试题及答案++精华版!!

《软件工程》期末考试样题 一、填空题 1.软件开发模型有(瀑布模型)(螺旋模型)第四代技术模型(原型模型)构件组装模型、混合模型。 2.可行性研究一般可以从(经济)可行性、(技术) 可行性、运行可行性、法律可行性和开发可行性等方面来研究。 3.现在向银行存款,年利率为i,若希望在n 年后从银行得到F元,现在应该存入的钱数为 (F/(1+i)n)。 4.数据流图的基本符号包括(数据输入的源 点和数据输出的汇点)、(加工)、(数据流)、(数据存储文件)。 5.Jackson图除了可以表达程序结构外,还可以 表达(数据结构),它首先要分析(数据结构),并用适当的工具来描述。 6.详细设计的工具有图形工具)、表格工具和(语言工具)。 7.IPO图由(输入)、处理和(输出)三个框组 成。这个图的特点是能够直观的显示三者之间的关系。 8.面向对象技术是一整套关于如何看待(软件系统)和(现实世界)的关系,以什么观点来研究问题并进行分析求解,以及如何进行系统构造的软件方法学。面向对象方法是一种运用(对象)、(类)、(继承)、(封装)、聚集、消息传送、多态性等概念来构造系统的软件开发方法。 二、单项选择题 1.下列( A )属于系统软件。 A.WINDOWS 2000 B.Word C.Flash D.3D MAX 2.下列哪个图是N-S图的构件( C )。 A. B.

3.对于螺旋模型,下列( D 卡尔坐标表达的活动。 A. 制定计划 B. 实施工程 C. 风险分析 D. 程序编码 三、多项选择题 1.软件危机可以表现为(ABXD A.产品不符合用户的需要 B.软件产品的质量差 C.软件的可维护性差 D.软件的价格昂贵 2.Jackson图中一般可能包括(A.表头 B.表体 C.表名 D.字段名 AD )。、内容耦合是最高程度的耦合 、应该尽量使用内容耦合 、高级语言一般设计成允许内容耦合的形式、如果一个模块有多个入口,可能发生内容.下列属于不标准的书写格式( BCD )。、书写时适当使用空格分隔 、一行写入多条语句 、嵌套结构不使用分层缩进的写法 、程序中不加注释 ,错误的) 软件生存周期是从软件开始开发到开发结束 () 系统流程图是一个典型的描述逻辑系统的传() 数据流图和数据字典共同构成系统的逻辑 A

软件工程课后习题答案

第一章 一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。 软件危机的典型表现: (1) 对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。 (2) 用户对已完成的软件不满意的现象时有发生。 (3) 软件产品的质量往往是靠不住的。 (4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。 (6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。 (7) 开发生产率提高的速度远跟不上计算机应用普及的需求。 软件危机出现的原因: (1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。 (2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。 (3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。 二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改, 不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是 整体构架的错误。 三、什么是软件工程?它有哪些本质特征?怎样用软件工程消除软件危机? 1993年IEEE的定义:软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。 软件工程的本质特征: (1) 软件工程关注于大型程序(软件系统)的构造(2) 软件工程的中心课题是分解问题,控制复杂性(3) 软件是经常变化的,开发过程中必须考虑软件将来可能的变化 (4) 开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工具 (5) 和谐地合作是开发软件的关键(6) 软件必须有效地支持它的用户 (7) 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作)消除软件危机的途径: (1) 对计算机软件有一个正确的认识(软件≠程序) (2) 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目 (3) 推广使用在实践中总结出来的开发软件的成功技术和方法 (4) 开发和使用更好的软件工具

相关文档
相关文档 最新文档