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