软件工程复习题.docx

上传人:b****5 文档编号:8199622 上传时间:2023-01-29 格式:DOCX 页数:45 大小:192.47KB
下载 相关 举报
软件工程复习题.docx_第1页
第1页 / 共45页
软件工程复习题.docx_第2页
第2页 / 共45页
软件工程复习题.docx_第3页
第3页 / 共45页
软件工程复习题.docx_第4页
第4页 / 共45页
软件工程复习题.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

软件工程复习题.docx

《软件工程复习题.docx》由会员分享,可在线阅读,更多相关《软件工程复习题.docx(45页珍藏版)》请在冰豆网上搜索。

软件工程复习题.docx

软件工程复习题

第一章

1软件基本概念、分类、特点

一、软件基本慨念

软件:

软件是计算机系统中与硬件相互依存的另一部分,包括程序、数据及相关文档的完整集合。

程序:

按事先设计的功能、性能要求执行的指令,(语句)序列;

数据:

使程序能正常操纵信息的数据结构

文档:

与程序开发、维护和使用有关的图文资料

软件的特点:

(1).是逻辑实体,非物理实体,具抽象性;

(2).没有明显的制作过程;(3).运行、使用期间不存在磨损、老化;(4).软件的开发、运行受计算机系统的限制;(5)复杂性高,成本昂贵。

(6)涉及社会因素。

软件危机的主要特点:

1软件开发周期大大超过规定日期;2软件系统开发成本高,周期长,质量差,满足不了市场需求;3软件质量无保证:

软件系统开发人员数量少,质量低4.:

软件系统维护难度大.5.软件开发缺乏合适的工具和方法:

6.软件的版权问题得不到保证

二、软件工程

(1)IEEE93对软件工程定义:

软件工程是

(1)将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护。

即将工程化应用于软件。

(2)在

(1)中所述方法的研究

软件工程定义的四个要点:

软件工程方法和性质----系统化、严格约束、可量化的方法;

•软件工程方法的作用和范围-----软件的开发、运行和维护

软件工程方法的目标----即将工程化应用于软件

软件工程方法的趋势-----方法的研究

软件工程的三视图:

技术的观点、工程的观点、管理的观点

三、软件开发模形:

瀑布模型、原型模型、增量模型(递增模型、增殖模型)、螺旋模型、喷泉模型

四、CMM:

软件过程能力成熟度模型共5级:

1初始级2可重复级{软件项目计划,项目跟踪和监督.3已定义级:

综合软件管理4已管理级:

定量的过程管理1.5优化级:

过程变更管理

(2)软件工程项目的基本目标

组织实施软件工程项目,最终希望得到项目的成功。

所谓成功指的是达到以下几个主要的目标:

·付出较低的开发成本;

·达到要求的软件功能;

·取得较好的软件性能;

·开发的软件易于移植;

·需要较低的维护费用;

·能按时完成开发工作,及时交付使用。

(3)软件工程的原则

以上的软件工程基本目标适合于所有的软件工程项目。

为达到这些目标,在软件开发过程中必须遵循下列软件工程原则。

·抽象:

抽取事物最基本的特性和行为,忽略非基本的细节。

采用分层次抽象,自顶向下、逐层细化的办法控制软件开发过程的复杂性。

·信息隐蔽:

将模块设计成“黑箱”,实现的细节隐藏在模块内部,不让模块的使用者直接访问。

这就是信息封装,使用与实现分离的原则。

使用者只能通过模块接口访问模块中封装的数据。

·模块化:

模块是程序中逻辑上相对独立的成分,是独立的编程单位,应有良好的接口定义。

如C语言程序中的函数过程,C++语言程序中的类。

模块化有助于信息隐蔽和抽象,有助于表示复杂的系统。

·局部化:

要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块之间具有松散的耦合,模块内部具有较强的内聚。

这有助于控制解的复杂性。

·确定性:

软件开发过程中所有概念的表达应是确定的、无歧义性的、规范的。

这有助于人们之间在交流时不会产生误解、遗漏,保证整个开发工作协调一致。

·一致性:

整个软件系统(包括程序、文档和数据)的各个模块应使用一致的概念、符号和术语。

程序内部接口应保持一致。

软件和硬件、操作系统的接口应保持一致。

系统规格说明与系统行为应保持一致。

用于形式化规格说明的公理系统应保持一致。

·完备性:

软件系统不丢失任何重要成分,可以完全实现系统所要求功能的程度。

为了保证系统的完备性,在软件开发和运行过程中需要严格的技术评审。

·可验证性:

开发大型的软件系统需要对系统自顶向下、逐层分解。

系统分解应遵循系统易于检查、测试、评审的原则,以确保系统的正确性。

使用一致性、完备性和可验证性的原则可以帮助人们实现一个正确的系统。

 

例题分析

【例1】软件是计算机系统中与硬件相互依存的另一部分,它是包括(A)、(B)及(C)的完整集合。

其中,(A)是按事先设计的功能和性能要求执行的指令序列。

(B)是使程序能够正确操纵信息的数据结构。

(C)是与程序开发、维护和使用有关的图文材料。

供选择的答案:

AC.①软件②程序③代码④硬件

⑤文档⑥外设⑦数据⑧图表

答案:

A.②,B.⑦,C.⑤

分析:

软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及相关文档的完整集合。

其中,程序是按事先设计的功能和性能要求执行的指令序列。

数据是使程序能够正确操纵信息的数据结构。

文档是与程序开发、维护和使用有关的图文材料。

需要注意的是,程序与算法在含义上有不同:

算法的每一条指令必须是最基本的、必须通过有限步做完,而程序没有这个要求。

【例2】开发软件时对提高软件开发人员工作效率至关重要的是(A)。

软件工程中描述生存周期的瀑布模型一般包括计划、(B)、设计、编码、测试、维护等几个阶段,其中设计阶段在管理上又可以依次分成(C)和(D)两步。

供选择的答案:

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

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

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

C、D.①方案设计②代码设计③概要设计④数据设计

⑤运行设计⑥详细设计⑦故障处理设计⑧软件体系结构设计

答案:

A.①,B.①,C.③,D.⑥

分析:

有合适的程序开发环境可以提供有用的工具,大大提高开发人员的工作效率。

软件工程中描述软件生存周期的瀑布模型一般包括计划、需求分析、设计、编码、测试和运行维护等六个阶段。

需求分析完成对软件产品在功能、性能、用户接口、运行环境、可靠性、安全性、开发资源、开发进度、开发成本等方面的需求定义。

问题定义、可行性分析、需求调查都可能是需求分析中要做的一部分工作。

软件设计在管理上划分为概要设计与详细设计两个步骤。

概要设计的目标是建立软件的体系结构,完成全局数据结构设计,同时进行处理方式设计、运行配置设计、出错处理设计、故障恢复设计等。

详细设计是对每一个模块的操作的控制流程和局部数据结构进行设计。

【例3】从供选择的答案中选出适当字句填入下列关于软件发展过程的叙述中的()内。

有人将软件的发展过程划分为4个阶段:

第一阶段(1950~1950年代末)称为“程序设计的原始时期”,这时既没有(A),也没有(B),程序员只能用机器指令编写程序。

第二阶段(1950年代末~1960年代末)称为“基本软件期”。

出现了(A),并逐渐普及。

随着(B)的发展,编译技术也有较大的发展。

第三阶段(1960年代末~1970年代中期)称为“程序设计方法时代”。

这一时期,与硬件费用下降相反,软件开发费急剧上升。

人们提出了(C)和(D)等程序设计方法,设法降低软件的开发费用。

第四阶段(1970年代中期~现在)称为“软件工程时期”。

软件开发技术不再仅仅是程序设计技术,而是包括了与软件开发的各个阶段,如(E)、(F)、编码、单元测试、综合测试、(G)及其整体有关的各种管理技术。

供选择的答案:

AD:

①汇编语言②操作系统③虚拟存储器概念④高级语言

⑤结构式程序设计⑥数据库概念⑦固件⑧模块化程序设计

EG:

①使用和维护②兼容性的确认③完整性的确认④设计

⑤需求定义⑥图象处理

答案:

A.①,B.④,C.⑤,D.⑧,E.⑤,F.④,G.①。

注意,C与D的答案顺序可互换。

分析:

在软件发展的早期,汇编语言和高级语言尚未出现,人们只能用机器指令来编写程序。

为了好读,有的指令系统可以用八进制代码书写。

其后,由于汇编语言的出现,人们摆脱了繁重的地址分配等工作,可以用符号编程。

随着高级语言的出现和普及,人们用近似于自然语言的语句编写程序,大大减轻了程序员的负担。

高级语言的处理,从解释执行到编译执行,处理效率和存储利用率不断提高。

结构化程序设计和模块化程序设计是科学家为解决软件危机,借用其它领域的技术改进程序设计方法而提出来的。

由于这些技术的使用,提高了程序的可读性、局部性、抽象性、清晰性、简单性、确定性、一致性等,降低了程序开发的费用。

后来发展到软件工程阶段,明确地划分了软件开发阶段,规范了软件开发过程,明确了各个阶段的任务以及应交付的成果和里程碑,使得软件开发逐步达到工程化和标准化。

 

第2章软件需求分析

一.软件需求分析的目标和任务

软件需求分析的目标是深入描述软件的功能和性能,确定软件设计的约束和软件同其它系统元素的接口细节,定义软件的其它有效性需求。

需求分析阶段研究的对象是软件项目的用户要求。

一方面,必须全面理解用户的各项要求,但又不能全盘接受所有的要求,另一方面,要准确地表达被接受的用户要求。

只有经过确切描述的软件需求才能成为软件设计的基础。

通常软件开发项目是要实现目标系统的物理模型。

作为目标系统的参考,需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的“做什么”的问题。

由此软件系统需求涉及,

(1)领域需求即对软件系统的应用领域所决定的特有的功能需求,或者是对已有功能的约束。

(2)功能需求对系统应该提供的服务、功能以及系统在特定条件下的行为描述(3)非功能需求对用户提出的对系统的约束,辅助的功能的行为描述,它与系统的总体特性有关

2.需求分析的过程

(1)问题定义

(2)分析建模(3)编制需求分析文档(4)需求分析评审

3.需求获取技术

需求获取技术包括两方面的工作:

建立获取用户需求的方法的框架;支持和监控需求获取的过程的机制。

最后给出问题定义

4.结构化分析方法

在模型的核心是数据词典,它描述了所有的在目标系统中使用的和生成的数据对象。

围绕着这个核心的有三种图:

实体—关系图(ERD)描述数据对象及数据对象之间的关系;数据流图(DFD)描述数据在系统中如何被传送或变换,以及描述如何对数据流进行变换的功能(子功能);状态—迁移图(STD)描述系统对外部事件如何响应,如何动作。

因此,ERD用于数据建模,DFD用于功能建模,STD用于行为建模。

(1)数据建模

数据模型包括三种互相关联的信息:

数据对象,描述对象的属性,描述对象间相互连接的关系。

数据对象:

是需被目标系统所理解的复合信息的表示。

所谓复合信息是具有若干不同特征或属性的信息。

属性:

定义了数据对象的特征。

关系:

各个数据对象的实例之间有关联。

实体—关系图:

数据对象及其关系可用ERD表示。

图2.5给出学生选修课程的ERD及描述学生属性的实体对象表。

课程

学生

数据对象表

学号

姓名

性别

出生年月

籍贯

……

图2.5简单的ERD和数据对象表

(2)功能建模和数据流

最初,结构化分析方法仅讨论数据流建模。

目标系统被表示成如图2.6所示的数据变换流程图。

系统的功能体现在核心的数据变换中。

输出信息

输入信息

外部实体

外部实体

输出信息

外部实体

外部实体

输入信息

图2.6数据流图(DFD)

功能建模的思想就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。

根据DeMarco的论述,功能模型使用了数据流图来表达系统内数据的运动情况,而数据流的变换则用结构化英语、判定表与判定树来描述。

数据流图

图2.7是描述储户携带存折去银行办理取款手续的数据流图。

图2.7办理取款手续的数据流图

在数据流图中,如果有两个以上数据流指向一个加工,或是从一个加工中引出两个以上的数据流,这些数据流之间往往存在一定的关系。

为表达这些关系,在这些数据流的加工可以标上不同的标记符号。

分层数据流图

为了表达数据处理过程的数据加工情况,用一个数据流图是不够的。

稍为复杂的实际问题,在数据流图上常常出现十几个甚至几十个加工。

这样的数据流图看起来很不清楚。

层次结构的数据流图能很好地解决这一问题。

按照系统的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统。

图2.10给出分层数据流图的示例。

数据处理S包括三个子系统1、2、3。

顶层下面的第一层数据流图为DFD/L1。

第二层数据流图DFD/L2.1、DFD/L2.2及DFD/L2.3分别是子系统1、2和3的细化。

对任何一层数据流图来说,我们称它的上层图为父图,在它下一层的图则称为子图。

图2.10分层数据流图

画数据流图的基本步骤概括地说,就是自外向内,自顶向下,逐层细化,完善求精。

检查和修改的原则为:

①数据流图上所有图形符号只限于前述四种基本图形元素。

②顶层数据流图必须包括前述四种基本元素,缺一不可。

③顶层数据流图上的数据流必须封闭在外部实体之间。

④每个加工至少有一个输入数据流和一个输出数据流。

⑤在数据流图中,需按层给加工框编号。

编号表明该加工处在哪一层,以及上下层的父图与子图的对应关系。

⑥规定任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致。

此即父图与子图的平衡。

⑦可以在数据流图中加入物质流,帮助用户理解数据流图。

⑧图上每个元素都必须有名字。

数据流和数据文件的名字应当是“名词”或“名词性短语”,表明流动的数据是什么。

加工的名字应当是“名词+宾语”,表明做什么事情。

⑨数据流图中不可夹带控制流。

⑩初画时可以忽略琐碎的细节,以集中精力于主要数据流。

加工规格说明

加工规格说明用来说明DFD中的数据加工的加工细节。

加工规格说明描述了数据加工的输入,实现加工的算法以及产生的输出。

另外,加工规格说明指明了加工(功能)的约束和限制,与加工相关的性能要求,以及影响加工的实现方式的设计约束。

必须注意,写加工规格说明的主要目的是要表达“做什么”,而不是“怎样做”。

因此它应描述数据加工实现加工的策略而不是实现加工的细节。

图2.13给出一个制造车间的数据和控制流的顶层流图。

事件可以作为普通数据加工的输入数据流,控制也可以接收普通的输入数据流。

动作警告

每个部件的状态

部件状态缓冲器

机器人命令文件

部件监

控与操

作界面

处理激

活信号

起动∕停止

信号

位串

机器人动作记录

机器人

初始化

控制

移位命

令处理

定位命令

操作设置

操作命令

图2.13使用Ward&Mellor符号的数据流和控制流

(3)行为建模

行为建模给出需求分析方法的所有操作原则,但只有结构化分析方法的扩充版本才提供这种建模的符号。

状态—迁移图

利用如图2.15所示的状态—迁移图(STD)或状态—迁移表来描述系统或对象的状态,以及导致系统或对象的状态改变的事件,从而描述系统的行为。

图2.15状态—迁移图与其等价的状态—迁移表例

(4)数据词典

分析模型中包含了对数据对象、功能和控制的表示。

在每一种表示中,数据对象和控制项都扮演一定的角色。

为表示每个数据对象和控制项的特性,建立了数据词典。

数据词典精确地、严格地定义了每一个与系统相关的数据元素,并以字典式顺序将它们组织起来,使得用户和分析员对所有的输入、输出、存储成分和中间计算有共同的理解。

例题分析

【例1】软件需求分析阶段的工作,可以分为以下4个方面:

对问题的定义、分析与综合、编写需求分析文档以及()。

供选择的答案:

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

答案:

C.

分析:

作为需求分析阶段工作的复查手段,在需求分析的最后一步,应该对功能的正确性、完整性和清晰性,以及其它需求给予评价。

一般,评审的结果都包括了一些修改意见,待修改完成后再经评审通过,才可进入设计阶段。

【例2】各种需求方法都有它们共同适用的()。

供选择的答案:

A.说明方法B.描述方式C.准则D.基本原则

答案:

D.

分析:

虽然各种分析方法都有独特的描述方法,但所有的分析方法还是有它们共同适用的基本原则。

这些基本原则包括:

需要能够表达和理解问题的信息域和功能域;

要能以层次化的方式对问题进行分解和不断细化;

要分别给出系统的逻辑视图和物理视图。

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

供选择的答案:

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

答案:

A.

分析:

数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,所以,它不是描述数据的静态结构,而是描述数据流的传递和变换。

数据词典主要用于定义数据和控制对象的细节,结构化英语、判定表和判定树主要用于描述加工规格说明,都不是表达数据在系统内运动情况的工具。

【例4】在结构化分析方法中用状态―迁移图表达系统或对象的行为。

在状态―迁移图中,由一个状态和一个事件所决定的下一状态可能会有()个。

供选择的答案:

A.1B.2C.多个D.不确定

答案:

C.

分析:

在状态―迁移图中,由一个状态和一个事件所确定的下一状态可能会有多个。

实际会迁移到哪一个状态,是由更详细的内部状态和更详细的事件信息来决定的,此时在状态―迁移图中可能需要使用加进判断框和处理框的记法。

状态―迁移图的优点:

第一,状态之间的关系能够直观地捕捉到,这样用眼睛就能看到是否所有可能的状态迁移都已纳入图中,是否存在不必要的状态等。

第二,由于状态―迁移图的单纯性,能够机械地分析许多情况,可很容易地建立分析工具。

【例5】在结构化分析方法中用实体―关系图表达系统中的对象及其关系。

在实体―关系图中,表达对象的实例之间的关联有三种类型:

一对一联系、()联系、多对多联系。

供选择的答案:

A.多对一B.一对多

分析:

使用实体―关系图,可以建立系统中各个数据对象及对象之间的关系。

对象的实例间的关联称为“基数”,共有3种类型的基数:

一对一,一对多,多对多。

它反映了现实世界中实体之间的联系,多对一的情况可以归入一对多的关联中去。

【例6】软件需求分析的任务不应包括(A)。

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

在需求分析中,分析员要从用户那里解决的最重要的问题是(C)。

需求规格说明书的内容不应当包括(D)。

该文档在软件开发中具有重要的作用,但其作用不应当包括(E)。

供选择的答案:

A.①问题分析②信息域分析③结构化程序设计④确定逻辑模型

B.①数据流图②判定表③PAD图④数据词典

C.①要让软件做什么②要给该软件提供哪些信息

③要求软件工作效率如何④要让软件具有什么样的结构

D.①对重要功能的描述②对算法的详细过程性描述

③软件确认准则④软件的性能

E.①软件设计的依据②用户和开发人员对软件要“做什么”的共同理解

③软件验收的依据④软件可行性分析的依据

答案:

A.③,B.③,C.①,D.②,E.④

分析:

软件需求分析的任务是通过与用户的合作,了解用户对待开发系统的要求;根据对用户要求的系统所在的信息域的调查、分析,确定系统的逻辑模型;并对求解的问题做适当的分解,使之适合于计算机求解。

需求分析的结果是软件需求规格说明书。

结构化程序设计是在详细设计和编码阶段所采用的技术,而不是需求分析阶段要采用的技术。

在需求分析阶段,分析人员可以用数据流图描述系统的数据流的变换和流向,用数据词典定义在数据流图中出现的数据流、数据文件、加工或处理,用判定表表示复杂条件和动作组合的情况。

但PAD图是在详细设计阶段使用的描述加工逻辑的工具,不适用于需求分析。

此外,软件需求分析阶段只确定软件系统要“做什么”,完成对重要功能、性能、确认准则的描述,至于“怎么做”由后续的设计阶段完成,对算法的详细过程性描述也是在设计阶段给出。

软件可行性分析应在需求分析之前,所以需求分析规格说明不能成为可行性分析的依据。

【例7】原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于(A)系统。

它从用户界面的开发入手,首先形成(B),用户(C),并就(D)提出意见,它是一种(E)型的设计过程。

供选择的答案:

A.①需求不确定性高的②需求确定的③管理信息④决策支持

B.①用户界面使用手册②用户界面需求分析说明书

③系统界面原型④完善的用户界面

C.①改进用户界面的设计②阅读文档资料

③模拟用户界面的运行④运行用户界面原型

D.①同意什么和不同意什么②使用和不使用哪一种编程语言

③程序的结构④执行速度是否满足要求

E.①自外向内②自顶向下③自内向外④自底向上

答案:

A.①B.③C.④D.①E.①

分析:

通常,原型是指模拟某种产品的原始模型。

在软件开发中,原型是软件的一个早期可运行的版本,它反映最终系统的部分重要特性。

使用原型的原型化方法特别适用于需求不确定性较高的软件系统的开发。

它的基本思想是根据用户给出的基本需求,通过快速实现构造出一个小型的可执行的模型,满足用户的基本要求,这就是系统界面原型。

让用户计算机上实际运行这个用户界面原型,在试用的过程中得到亲身感受和受到启发,做出反应和评价,提出同意什么和不同意什么。

然后开发者根据用户的意见对原型加以改进。

随着不断试验、纠错、使用、评价和修改,获得新的原型版本,如此周而复始,逐步减少分析和通信中的误解,弥补不足之处,进一步确定各种需求细节,适应需求的变更,从而提高了最终产品的质量。

它是一种自外向内型的设计过程。

第3章

一、软件设计方法:

1、基本概念原则:

设计活动:

数据设计,体系结构设计,接口设计(界面设计),程序级(构件级)设计

设计原则:

全局考虑,依据分析,尽量复用,风格一致,可构造,健壮性,依据质量标准,评审应注重概念错误,不要太细节

设计的基本思想方法:

抽象,逐步求精,模块化:

划分的考虑(模块成本,集成成本)

模块划分的5个原则(分解性,组装性,理解性,连续性,保护性)

软件体系结构设计概念:

组成元素:

元素层次,元素交互方式,元素数据结构

框架(模型):

多方位的表示(结构,动态,行为,过程,功能)

设计的控制层次:

深度层次,宽度层次,扇入层次,扇出层次

模块的扇入和扇出:

扇出表示一个模块直接调用(或控制)的其它模块数目。

扇入则定义为调用(或控制)一个给定模块的模块个数。

多扇出意味着需要控制和协调许多下属模块,表明程序复杂性。

而多扇入的模块通常是公用模块。

表明程序重用性好

设计结构的划分:

水平划分,垂直划分

设计用的数据结构:

作用?

;经典的数据结构(表,数组,栈…)

2、结构化的设计方法:

总体设计:

模块设计:

信息隐蔽

内聚性(偶然逻辑,时间过程,通讯,顺序,功能)

耦合性(内容,公共,控制,标记,数据)

体系结构设计:

DFD的变换(形式)映射

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1