13软件工程基础.docx
《13软件工程基础.docx》由会员分享,可在线阅读,更多相关《13软件工程基础.docx(30页珍藏版)》请在冰豆网上搜索。
13软件工程基础
第3章 软件工程基础
3.1软件工程基本概念
计算机软件(software)是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。
国标(GB)中对计算机软件的定义为:
与计算机系统的有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。
一软件是程序、数据和文档的集合。
103_4)软件是【4】、数据和文档的集合。
25.1.79_1软件是指
A程序B程序和文档
C算法加数据结构
D程序、数据与相关文档的完整集合
软件的特点:
1、软件是一种逻辑实体,具有抽象性;
2、软件没有明显的制作过程,一旦研制开发成功,可以大量拷贝;
3、软件在开发和运行、使用期间不存在磨损、老化问题
4、软件的开发、运行对计算机系统具有依赖性,并受计算机系统的限制;
5、软件复杂性高,成本昂贵;
6、软件开发涉及到诸多的社会因素。
54_8下列描述中正确的是
A)程序就是软件
B)软件开发不受计算机系统的限制
C)软件既是逻辑实体,又是物理实体
D)软件是程序、数据与相关文档的集合
软件按功能可以分为:
应用软件、系统软件、支撑软件(工具软件)。
93_5)软件按功能可以分为:
应用软件、系统软件和支撑软件(或工具软件)。
下面属于应用软件的是
A)编译程序员 B)操作系统 C)教务管理系统 D)汇编程序
C
99_8.数据库管理系统是( )。
A.操作系统的一部分B.在操作系统支持下的系统软件C.一种编译系统D.一种操作系统
答案B
103_3)软件按功能可以分为:
应用软件、系统软件和支撑软件(或工具软件)。
下面属于系统软件的是
a)编辑软件
b)操作系统
c)教务管理系统
d)浏览器
b
软件工程的概念的出现源自软件危机。
所谓软件危机是泛指计算机软件的开发和维护过程中所遇到的一系列严重问题。
主要表现在:
(1)软件需求的增长得不到满足。
用户对系统不满意的情况经常发生。
(2)软件开发成本和进度无法控制。
开发成本超出预算,开发周期大大超过规定日期的情况经常发生。
(3)软件质量难以保证。
(4)软件不可维护或维护程序非常低。
(5)软件的成本不断提高。
(6)软件开发生产率的提高赶不上硬件的发展和应用需求的增长。
总之,可以将软件危机归结为成本、质量、生产率等问题。
软件工程就是试图用工程、科学和数学的原理和方法研制、维护计算机软件的有关技术及管理方法。
国标(GB)中对软件工程的定义为:
软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。
软件工程3个要素:
方法、工具和过程。
方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。
25.1.89_3)软件工程三要素包括方法、工具和过程,其中,___________支持软件开发的各个环节的控制和管理。
过程
2下列不属于软件工程的3个要素的是(d)
A)工具B)过程
C)方法D)环境
软件工程的核心思想是把软件产品看作是一个工程产品来处理计划、可行性研究、工程审核、质量监督等工程化的概念引入到软件生产当中,以期达到工程项目的基本要素:
进度、经费和质量的目标。
软件工程过程(SoftwareEngineeringProcess)是把输入转化为输出的一组彼此相关的资源和活动。
资源包括人员、硬软件工具、时间等;通常包含4个基本活动:
1)P(Plan)——软件规格说明。
规定软件的功能及其运行时的限制。
2)D(Do)——软件开发。
产生满足规格说明的软件。
3)C(Check)——软件确认。
确认软件能够满足客户提出的要求。
4)A(Action)——软件演进。
为满足客户的变更要求,软件必须在使用过程中演进。
软件生命周期(SoftwareLifeCycle)是指将软件产品从提出、实现、使用维护到停止使用退役的过程。
也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。
一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。
这些活动可以重复,执行时也可以有迭代。
也可以将软件生命周期分为软件定义、软件开发及软件运行维护有一个阶段。
如下图所示。
上图所示的软件生命周期可以划分为如下的几个主要活动阶段:
1)可行性研究与计划制定。
确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成开发任务的实施计划。
2)需求分析。
对待开发软件提出的需求进行分析并给出详细定义。
编写软件规格说明书及初步的用户手册,提交评审。
3)软件设计。
系统设计人员和程序设计人员应该在反复理解软件需求的基础上,给出软件的结构、模块的划分、功能的分配以及处理流程。
在系统比较复杂的情况下,设计阶段可分解成概要设计和详细设计两个阶段。
编写概要设计说明书、详细设计说明书和测试计划初稿,提交评审。
4)软件实现。
把软件设计转换成计算机可以接受的程序代码。
即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划。
5)软件测试。
在设计测试用例的基础上,检验软件的各个组成部分。
编写测试分析报告。
6)运行和维护。
将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。
25.1.74_4)软件生命周期可分为多个阶段,一般分为定义阶段、开发阶段和维护阶段。
编码和测试属于【4】阶段。
开发
25.2.69_3)下列选项中不属于软件生命周期开发阶段任务的是
A)软件测试B)概要设计C)软件维护D)详细设计
103_6)软件生命周期可分为定义阶段,开发阶段和维护阶段。
详细设计属于
a)定义阶段
b)开发阶段
c)维护阶段
d)上述三个阶段
b
软件工程的目标是在给定成本、进度的前提下,开发出具有有效性、可行性、可理解性、可维护性、可重用性、可移植性、可追踪性和可互操作性且满足用户需求的产品。
软件工程需要达到的基本目标是:
付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发,及时交付使用。
软件工程的理论和技术性研究的内容主要包括:
软件开发技术和软件工程管理。
4.软件工程研究的内容主要包括:
软件开发技术和软件工程管理。
27.3.59_5下列描述中正确的是
A)软件工程只是解决软件项目的管理问题
B)软件工程主要解决软件产品的生产率问题
C)软件工程的主要思想是强调在软件开发过程中需要应用工程化原则
D)软件工程只是解决软件开发中的技术问题
为了达到软件工程目标,在软件开发过程中,必须遵循如下基本原则:
P24
1)抽象。
抽取事物最基本的特性和行为,忽略非本质细节。
采用分层次抽象,自顶向下,逐步求精的方法控制软件开发过程的复杂性。
2)信息隐蔽。
采用封装技术,将程序模块的实现隐藏起来,使模块接口尽量简单。
3)模块化。
4)局部化。
应保证模块间具有松散的耦合关系,模块内部有较强的内聚性。
5)确定性。
软件开发过程中所有概念的表达应是确定的、无歧义的,规范的。
6)一致性。
程序内外部接口应保持一致,系统规格说明与系统行为应保持一致。
7)完备性。
应实现系统所需的全部功能。
8)可验证性。
应容易检查、测评、评审。
5.下面不属于软件设计原则的是(c)
A)抽象性B)模块化
C)自底向上D)信息隐蔽
软件开发环境或称软件工程环境是全面支持开发全过程的软件工具集合。
计算机辅助软件工程(CASE,ComputerAidedSoftwareEngineering)是当前软件开发环境中富有特色的研究工作和发展方向。
3.2结构化分析方法
软件开发方法是软件开发过程所遵循的方法和步骤,包括分析方法、设计方法和程序设计方法。
结构化方法是一种系统的、成熟的软件开发方法,包括结构化分析、结构化设计方法和结构化编程方法,其核心和基础是结构化程序设计理论。
3.2.1需求分析与需求分析方法
软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。
需求分析的任务是发现需求、求精、建模和定义需求的过程。
需求分析将创建所需的数据模型、功能模型和控制模型。
在面向对象方法学中,直接反映了用户对目标系统的要求的模型是功能模型
需求分析阶段的工作可概括为四个方面:
1、需求获取;2、需求分析;3、编写需求规格说明书;4、需求评审。
红62_12、软件的需求分析阶段的工作,可以概括为四个方面:
______、需求分析、编写需求规格说明书和需求评审。
答:
需求获取
2在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是(d)
A)概要设计B)详细设计
C)可行性分析D)需求分析
10软件需求分析阶段的工具,可分为四个方面:
需求获取,需求分析,编写需求规格说明书,以及(b)
A)阶段性报告B)需求评审
C)总结D)都不正确
常见的需求分析方法有:
1)结构化分析方法,包括:
面向数据流的结构化分析方法(SA----Structuredanalysis),面向数据结构的Jackson方法(JSD----Jacksonsystemdevelopmentmethod),面向数据结构的结构化数据系统开发方法(DSSD----Datastructuredsystemdevelopmentmethod)。
3.Jackson方法是一种面向数据结构的结构化分析方法。
2)面向对象的分析方法(OOA----Object-Orientedmethod)。
2.常用的需要分析方法有分析方法和面向对象的分析方法。
3.2.2.结构化分析方法
结构化分析方法是结构化程序设计理论在软件需求分析阶段的运用,其实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。
结构化分析的常用工具有:
1)数据流图(DFD----DataFlowDiagram),数据流图是描述数据处理过程的工具,主要包含如下图形元素。
数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。
32.1.89_5)数据流图中带有箭头的线段表示的是()。
A)控制流
B)事件驱动
C)模块调用
D)数据流
D
103_5)数据流程图(dfd图)是
a)软件概要设计的工具
b)软件详细设计的工具
c)结构化方法的需求分析工具
d)面向对象方法的需求分析工具
c
4下列图符名标识的图符不属于数据流图合法图符的是
A控制流B加工C数据存储D源和潭
建立数据的步骤如下:
第一步:
由外向里(先画系统的输入和输出,然后画系统的内部)
第二步:
自顶向下(顺序完成顶层、中间层、底层的数据流图)
第三步:
逐层分解。
检查和修改数据流图的原则
●数据流图上所有图形符号只限于前述四种基本图形元素
●数据流图的主图必须包括前述四种基本元素,缺一不可
●数据流图的主图上的数据流必须封闭在外部实体之间
●每个加工至少有一个输入数据流和一个输出数据流
●在数据流图中,需按层给加工框编号。
编号表明该加工所处层次及上下层的亲子关系
●规定任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致。
此即父图与子图的平衡
●可以在数据流图中加入物质流,帮助用户理解数据流图
●图上每个元素都必须有名字
●数据流图中不可夹带控制流
●初画时可以忽略琐碎的细节,以集中精力于主要数据流
5.结构化程序设计的一种基本方法是()
A)筛选法B)递归法C)归纳法D)逐步求精法
红57_5在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是______。
A.可行性分析B.需求分析C.详细设计D.程序编码
[答案]B
2)数据字典(DD----DataDictionary)。
它是结构化分析方法的核心,是对DFD中出现的被命名的图形元素的确切解释。
31.2.74_5)在结构化分析使用的数据流图(DFD)中,利用 【5】 对其中的图形元素进行确切解释。
存折=户名+所号+帐号+开户日+性质+(印密)+1{存取行}50
户名=2{字母}24
所号=“001”..“999”
帐号=“00000001”..“99999999”
开户日=年+月+日
性质=“1”..“6”注:
“1”表示普通户,“5”表示工资户等
印密=“0”注:
印密在存折上不显示
存取行=日期+(摘要)+支出+存入+余额+操作+复核
红62_8、数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。
答:
数据存储
3)判定树。
4)判定表。
3.2.3、软件需求规格说明书
软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文挡之一。
31.1.79_一软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的是无歧义性
32.6.84_4)在软件开发中,需求分析阶段产生的主要文档是
A可行性分析报告 B软件需求规格说明书
99_3)软件开发过程主要分为需求分析、设计、编码与测试四个阶段,其中【3】阶段产生“软件需求规格说明书“。
3.3结构化设计方法
3.3.1软件设计的基本概念
软件设计是软件工程的重要阶段,是一个把软件需求转换为软件表示的过程。
软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,即软件设计是确定系统的物理模型。
从技术观点来看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。
61_23软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指______。
A.模块间的关系
B.系统结构部件转换成软件的过程描述
C.软件层次结构D.软件开发过程
[答案]B
从工程管理角度来看,软件设计分两步完成:
概要设计和详细设计。
30.8.69_2)从工程管理角度,软件设计一般分为两步完成,它们是
A)概要设计与详细设计B)数据设计与接口设计
C)软件结构设计与数据设计D)过程设计与数据设计
软件设计的一般过程是:
软件设计是一个迭代的过程;先进行高层次的结构设计;后进行低层次的过程设计;穿插进行数据设计和接口设计。
软件设计应遵循的基本原理及相关概念:
(1)抽象。
(2)模块化。
(3)信息隐蔽。
(4)模块独立性。
(衡量软件的模块独立性使用内聚性和耦合性两个度量标准,应尽量做到高内聚,低耦合)
耦合是模块之间的互相连接的紧密程度的度量。
内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。
93_7)耦合性和内聚性是模块独立性试题的两个标准,下列叙述正确的是
A)提高耦合性降低内聚性有利于提高模块的独立性
B)降低耦合性提高内聚性有利于提高模块独立性
C)耦合性是一个模块内部元素间彼此结合的紧密程序
D)内聚性是指模块可互相连接的紧密程序
B
99_5.软件设计中划分模块的一个准则是( )。
A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合 D.高内聚高耦合
答案B
解析:
模块内部各元素之间的联系要紧密,高内聚,模块间的连接的紧密程度要低,低耦合,这样可以提高模块的独立性.
4.信息隐蔽的概念与下述哪一种概念直接相关?
(b)
A)软件结构定义B)模块独立性
C)模块类型划分D)模块耦合度
19.2.69_1下列选项中不符合良好程序设计风格的是
A)源程序要文档化B)数据说明的次序要规范化
C)避免滥用goto语句
D)模块设计要保证高耦合、高内聚
31.9.64_2)两个或两个以上模块之间关联的紧密程度称为
A)耦合度 B)内聚度
C)复杂度 D)数据传输特性
7.模块独立性是评价软件设计好坏的重要度量标准,应尽量做到内聚,耦合性。
30.7.74_2)在结构化程序设计中,模块划分的原则是
A)各模块应包括尽量多的功能
B)各模块的规模应尽量大
C)各模块之间的联系应尽量紧密
D)模块内具有高内聚度、模块间具有低耦合度
54_7为了使模块尽可能独立,要求
A)模块的内聚程度要尽量高,且各模块间的耦合程序要尽量强
B)模块的内聚程度要尽量高,且各模块间的耦合程序要尽量弱
C)模块的内聚程度要尽量低,且各模块间的耦合程序要尽量弱
D)模块的内聚程度要尽量低,且各模块间的耦合程序要尽量强
30.5.84_3)软件设计中模块划分应遵循的准则是
A低内聚低耦合 B高内聚低耦合
C低内聚高耦合 D高内聚低耦合
3.3.2概要设计
1、概要设计的任务
软件概要设计的基本任务是:
设计软件系统结构;数据结构及数据库设计;编写概要设计文档;概要设计文档评审。
6在结构化方法中,软件功能分解属于下列软件开发中的阶段是(c)
A)详细设计B)需求分析
C)总体设计D)编程调试
常用的软件结构设计工具是结构图(SC----StructrueChart),也称程序结构图,它包含如下几个基本图符:
经常使用的结构图有四种模块:
传入模块,传出模块,交换模块和协调模块。
34.3.69_1)下列软件系统结构图
的宽度为_____3
2、面向数据流的设计方法
典型的数据流类型有两种:
变换型和事物型。
变换型数据处理问题的工作过程大致分为三步,即取得数据、变换数据和输出数据。
变换型数据流
变换型的系统结构图
在一个事物型的数据流中,事物中心接收数据,分析每个事物以确定它的类型,根据事物类型选取一条活动通路。
事务型数据处理问题
事务型系统结构图
5.数据流的类型有变换型和事务型两种。
设计准则:
提高模块独立性
模块规模适中
深度、宽度、扇出和扇入适当
模块的作用域在该模块的控制域内
减少模块的接口和界面的复杂性
设计成单入口、单出口的模块
3.3.3详细设计
详细设计的任务是为软件结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。
常见的过程设计工具有:
(1)图形工具:
程序流程图,N-S,PAD。
7程序流程图(PFD)中的箭头代表的是(b)
A)数据流B)控制流
C)调用关系D)组成关系
30.3.84_1)程序流程图中带箭头的线段表示的是
A图元关系 B数据流 C控制流 D调用关系
99_7.软件详细设计产生的图如下
该图是( ).
A.N-S图B.PAD图C.程序流程图D.E-R图
答案C
32.2.89_6)在软件开发中,需求分析阶段可以使用的工具是()。
A)N-S图
B)DFD图
C)PAD图
D)程序流程图
b
31.10.59_6在软件设计中,不属于过程设计工具的是
A)PDL(过程设计语言)B)PAD图
C)N-S图D)DFD图
(2)表格工具:
判定表。
(3)语言工具:
PDL(伪码)。
PROCEDUREspellcheckIS查找错拼的单词
BEGIN
splitdocumentintosinglewords把整个文档分离成单词
loodupwordsindictionary在字典中查这些单词
displaywordswhicharenotindictionary显示字典中查不到的单词
createanewdictionary造一新字典
ENDspellcheck
对程序流程图,N-S图,PAD图要求有所了解,能看懂简单的图形。
4下列工具中为需求分析常用工具的是(d)
A)PADB)PFD
C)N-SD)DFD
3.4软件测试
软件测试是保证软件质量的重要手段,其主要过程涵盖了整个软件生命期的过程,包括需求定义阶段的需求测试、编码阶段的单元测试、集成测试以及后期的确认测试、系统测试,验证软件是否合格,能否交付用户使用等。
8.在下列软件生命周期的各阶段中,涵盖了整个软件生命周期的阶段是(c)
A)需求分析B)详细设计
C)软件测试D)系统维护
软件测试要以查找错误为中心,而不是为了演示软件的正确功能。
软件测试是为了发现错误,一个成功的测试是发现了至今尚未发现的错误的测试。
红9.软件测试的目的是()
A)发现错误B)改正错误C)改善软件的性能D)挖掘软件的潜能
54_6下列对于软件测试的描述中正确的是
A)软件测试的目的是证明程序是否正确
B)软件测试的目的是使程序运行结果正确
C)软件测试的目的是尽可能地发现程序中的错误
D)软件测试的目的是使程序符合结构化原则
3.4.2软件测试的准则
1.所有测试都应追溯到需求
2.严格执行测试计划,排除测试的随意性
3.充分注意测试中的群集现象
4.程序员应避免检查自己的程序
5.穷举测试不可能
6妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方案
36.2.74_3)下列叙述中正确的是
A)软件测试的主要目的是发现程序中的错误
B)软件测试的主要目的是确定程序中错误的位置
C)为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作
D)软件测试是证明软件没有错误
3.4.3软件测试技术与方法综述
软件测试的方法和技术多种多样。
按是否需要执行被测软件分为静态测试(静态测试不实际运行软件,主要通过人工进行)和动态测试(是基于计算机的测试,是为了发现错误而执行程序的过程);
64_4)程序测试分为静态分析和动态测试。
其中 【4】 是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。
36.2.84_1)测试用例包括输入值集和____[1]_____值集。
输出
按功能划分为白盒测试和黑盒测试。
1.白盒测试
白盒测试方法也称结构测试或逻辑驱动测试,是根据软件产品的内容工作过程,检查内部成分,以确认每种内部操作符合设计规格要求。
它在程序内部进行,主要用于完成软件内部操作的验证。
白盒测试的基本原则是:
保证所测试模块中每一独立路径至少执行一次;保证所测模块所有判断的每一分支至少执行一次;保证所测模块每一循环都在边界条件和一般条件下至少各执行一次;验证所有内部数据结构的有效性,因而白盒测试是穷举路径测试。
白盒测试的主要方法有逻辑覆盖、基本路径测试等。
逻辑覆盖是泛指一系列以程序内部的逻辑结构为基础的测试用例设计技术,包括语句覆盖、路径覆盖、判定覆盖、条件覆盖、判断-条件覆盖等。
基本路径测试:
对每一条独立执行路径进行测试
环