《软件工程》习题
第一章习题
1、计算机软件系统4个不同的发展阶段是:程序设计、程序系统、软件工程、面向对象阶段 。 2、软件危机发生在那个阶段?主要指哪两方面的问题?
程序系统阶段
原因:1、如何开发软件,以满足对软件日益增长的需求。2、如何维护数量不断膨胀的已有软件。
3、软件危机有几方面的典型表现?
○1、对软件开发成本和进度的估计常常很不准确
○2、用户对“已完成的”的软件系统不满意的现象经常发生 ○3、软件产品的质量往往靠不住 ○4、软件常常是不可维护的 ○5、软件通常没有适当的文档资料
○6、软件成本在计算机系统总成本中所占的比例逐年上升
○7、软件开发效率提高的速度,远远跟不上计算机应用迅速普及及深入的趋势
4、软件危机产生的原因是 、 。
与软件本身的特点有关 、软件开发与维护的方法不准确有关
5、软件是 、 和 的完整集合。
程序、数据 、相关文档
6、如何解决软件危机?
○1、一个软件必须是由一个完整的配置组成,事实上,软件是程序,数据及相关文档的完整集合 程项目
○3、推广使用在实践中总结出来的开发软件的成功的技术和方法 ○4、应该开发和使用良好的开发软件工具
○5、总之,为了解决软件危机,既要有必要的技术措施又要有必要的组织管理措施
○2、要充分认识到软件开发应该是一种组织良好、管理严密、各类人员协同合作、共同完成的工
7、软件工程的定义?(以教材定义为准)
采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护他,这就是软件工程。
8、软件工程的本质特征有 、 、 、 、 、 和 。
关注大型程序的构造、中心课题是控制复杂性、软件经常变化、开发软件的效率非常重要、和谐地合作是开发软件的关键、软件必须有效地支持它的用户和由具有一种文化背景的人替另一种文化背景的人创造产品
9、软件工程的基本原理有 、 、 、 、 、 和 。
用分阶段的生命周期计划严格管理、坚持进行阶段评审、实行严格的产品控制、采用现代程序设计技术、结果应能清楚地审查 、开发小组的人员应该少而精和承认不断改进软件工程实践的必要性。
10、软件工程学的三个基本要素是 、 、 。
方法 、工具 、过程
11、软件工程学分为传统方法学和面向对象的方法学两大类。前者强调 ,而后者强
调 。
自顶向下顺序的完成软件开发的各阶段任务、多次反复迭代的演化过程
12、软件工程学中的面向对象的方法学有四个基本要点。它们是 对象 、 类 、 系统 、 消
息。
把对象作为融合了数据及数据上的操作行为的统一软件构件 、把所有对象都划分成类、按照父类与子类的关系把若关干个相关类组成一个层次结构的系统、对象彼此间仅能发送消息互相联系。
13、什么是软件生命周期?
软件从生产到软件报废的过程
14、软件生命周期划分为几个时期几个阶段?各阶段主要任务是什么?
软件定义、软件开发、软件为维护3个时期组成。 软件定义:问题定义,可行性研究,需求分析;
软件开发阶段:总体设计,详细设计、编码和单元测试,综合测试; 软件维护:使软件持久地满足用户的需求
15、软件生命周期中的软件维护分为几大类?哪类维护所占比重最大?
改正性维护,适应性维护,完善性维护,预防性维护 完善性维护占比重最大
16、什么是软件过程?其任务集合主包括哪些内容?
软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。包括一组软件工程任务、里程碑和应该交付的产品。
17、瀑布模型、快速原型模型、增量模型、螺旋模型和喷泉模型格有什么特点和优缺点?
1、瀑布模型:
特点:
○1、阶段间具有顺序性和依赖性 ○2、推迟实现的观点 ○3、质量保证的观点
优点:
可强迫开发人员采用规范的方法;严格的规定了每个阶段必须提交文档;要求每个阶段的交出的所
有产品必须经过质量保证小组的仔细验证
缺点:
瀑布模型是由文档驱动的是瀑布模型的主要缺点
2、快速还原模型:
特点:快速还原模型是快速建立起来的可直接在计算机上运行的程序,他所能完成的功能是最终产品的一个子集
优点:软件产品的开发基本上是线性顺序进行的 缺点:一旦需求确定了需求,原来的需求将被抛弃
3、增量模型:
优点:
逐步增加产品功能可以使用户有比较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲突
缺点:
○1、把每个新的增量构件集成到现有的软件体系结构中时,必须不破坏原来已经开发出来的
产品。
○2、必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过
程必须简单,方便,也就是说,软件体系结构必须是开放的
○3、从某种意义上来说,增量模型是自相矛盾的
4、螺旋模型
优点 :
○1、对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开
发的一个项目指标;
○2、减少过多测试或测试不足所带来的风险
○3、在螺旋模型中维护只是模型的另一个周期,在维护和开发之间的并没有什么区别
5、喷泉模型
喷泉模型体现了面向对象软件开发过程迭代和无缝的特性
18、为什么说喷泉模型较好地体现了面向对象软件开发过程中的无缝和迭代特征?
喷泉模型图中的代表不同阶段的圆圈相互重叠,这明确表示两个活动之间的交叠;而面向对象方法在这种概念和表示方法上的一致性,保证了各项开发活动之间的无缝过度。
第二章习题
1、可行性研究的目的是什么?可行性研究的内容是什么?
确定问题是否值得去解决
技术、经济、操作、法律等的可行性
3
2、可行性研究中对问题的解法可行性包括主要和次要方面。两者分别包含 、 、 可行性和 、 可行性几个方面。
技术可行性、经济可行性、操作可行性 法律可行性 、社会效益
3、可行性研究过程主要有 、 、 、 、 、 、 和 几个步骤。
复查系统规模和目标 、研究目前正在使用的系统、导出新系统的高层逻辑模型、进一步定义问题、 导出和评价供选择的解法、推荐行动方针、草拟开发计划和书写文档提交审查几个步骤。
4、可行性研究过程中的第三步“导出新系统的高层次逻辑模型”涉及到 、 、 、 几种模型。
现有的物理系统、现有的逻辑模型、目标系统的逻辑模型、新的物理系统模型
5、可行性研究过程中的第五步中如何排定问题解法三种可行性的顺序?
技术可行性操作可行性经济可行性
6、系统流程图是描绘 的传统工具。它用 符号以 形式描绘组成系统的每个部件(程序,文档,数据库,人工过程等)。表达的是数据在系统各部件之间 情况,而不是对
数据进行 的控制过程。
物理系统、图形、黑盒子、流动、加工处理 7、系统流程图与程序流程图的异同?
系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据加工处理的过程; 而程序流程图是指程序指令控制流的流动(即算法描述)
8、系统流程图包含 和 两大类图形符号。其名称和符号分别是什么?
基本符号、系统符号 P39
9、在面对复杂的系统中,比较好的方法是采用什么策略来描述?
分层次地描绘这个系统
10、数据流图是一种 技术,它描绘 和 从输入移动到输出的过程中所经受的 。在数据流图中没有任何具体的 ,它只是描绘数据在软件中流动和被处理的 。
图形化、信息流、数据、变换、物理部件、逻辑过程
11、数据流图的4种基本符号为 、 、 、 。附加符号有 、
和 。分别代表什么含义?
正方形、圆角矩形、开口矩形、箭头 星号、加号、○+(带圈加号)
正方形表示数据的源点或终点;圆角矩形代表变换数据的处理;开口矩形代表数据存储;箭头代表数据流;
星号表示数据流之间是“与”关系;加号表示“或”关系;○+号表示只能从中选一个。
12、画数据流图的步骤为(1)从问题描述中提取数据流图的4种成分(2)
(3) (4) 。
(1)从问题描述中提取数据流图的4种成分(2)画功能级数据流图
(3) 对功能级数据流图中描绘的系统主要功能进一步细化(功能级分解)(4) 对处理进行编号 。
13、为数据流或数据存储命名要注意哪些?为处理命名要注意哪些内容?
为数据流命名:
1、名字应代表整个数据流的内容,而不是仅仅反映它的某些成分; 2、不要使用空洞的、缺乏具体含义的名字;
3、如果在为某个数据流起名时遇到困难,则很可能是因为对数据流图分解不恰当造成的,应该试试重新分解,看是否能克服这个困难。 为处理命名:
1、通常先为数据流命名,然后再为与之相关的处理命名; 2、名字应该反映整个处理的功能,而不是他的一部分功能; 3、名字最好有一个工具的及物动词加上一个具体的宾语组成;
4、通常名字中仅包含一个动词,如果必须用两个动词才能描述整个处理的功能,则把这个处理再分解成两个处理可能更恰当;
5、如果在为某个处理命名时遇到困难,则很可能是发现了分解不当的现象,应考虑重新分解。
14、数据流图的作用有(1) (2) 。
作为交流信息的工具、作为分析和设计的工具
15、 和 共同构成了系统的逻辑模型。
数据流图 、数据字典
16、数据字典是关于 的集合,也就是对数据流图中包含的 定义的集合。涉及到的元素有 、 、 、 四类。
数据信息、所有元素
数据流、数据流分量 、数据存储、处理
17、数据字典中定义数据的方法有为 。
对数据自顶向下的分解
18、数据字典中数据元素组成数据方式有 、 、 和 。使用的图形符
号有哪些?分别代表什么含义?
顺序、选择、重复和 可选 = 等价于 + 和 [] 或 {} 重复 ()可选
19、简要叙述数据字典的用途是什么?
5
作为分析阶段的工具
20、成本估计技术有 、 和 。
代码行技术、任务分解技术和 自动估计成本技术
第三章习题
1、需求分析是确定系统 。其最终成果是 。
必须做什么、需求分析规则说明书
2、需求分析的任务有 、 、 、 和 。、
确定对系统的综合要求 、分析系统的数据要求、导出系统的逻辑模型、修正系统的开发计划。
3、需求分析任务中的综合要求包含哪些内容?数据要求包含哪些内容?
综合要求:
1、功能要求 2、性能要求 3、可靠性和可用性要求 4、出错处理要求 5、接口要求 6、约束 7、逆向要求 8、将来可能提出的要求 数据要求:
1、建立数据模型:数据流图、E-R图 2、数据规范化描述
4、需求分析过程中与用户沟通获取需求的方法有 、 、 、 和 。
访谈、面向数据流自顶向下求精、简易的应用规格说明技术快速建立软件原型。
5、需求分析过程中“面向数据流自顶向下求精”是采用 进行需求分析;“简易的应用规格说明技术”就是一种 需求收集法。“快速建立软件原型”是 、 、 的需求分析技术。
结构化分析方法、面向团队、最准确 、最有效、最强大
6、“快速建立软件原型” 需求分析技术主要使用了 、 和 方法和工具。
技术、可重用的软件结构和形式化规格说明和原型环境
7、需求分析过程中的“分析建模”应该建立 、 和 3种模型。所谓模型由一组 和组织这些符号的 组成。
数据模型、功能模型和行为模型 图形符号、规则
8、DFD、ER图和状态转换图分别对应 、 和 模型。
功能模型、数据模型和行为模型
9、 是分析模型的核心,它描述软件使用或产生的所有数据对象。
数据字典
10、数据模型(ER图)中主要涉及到的信息有 、 和 。
数据对象、 属性和联系
11、数据对象的联系可分为 、 和 3种类型。
一对一联系、一对多联系和 多对多联系
12、ER图有三种基本成分:实体,用 图形符号表示;关系,用连接相关实体的 表示;属性,用 表示,并用 把实体(或关系)与其属性连接起来。
矩形、菱形框、椭圆形或圆角矩形、直线
13、简述ER图的优点。
ER模型比较接近人的习惯思维方式。此外,ER模型使用简单的图形符号表示系统分析员对问题域的理解,不熟悉计算机的用户也能理解他,因此ER模型可以作为用户个分析员之间的交流工具。
14、数据规范化主要目的是 。其中第一范式:每个 都必须是原子值,即仅仅是一个简单值而不含内部结构,即列的惟一。第二范式:满足第一范式条件,而且每个 属性都由整个关键字决定(而不是由关键字的一部分来决定),即不能有 的重复。第三范式:符合第二范式的条件,每个非关键字属性都仅由 决定,而且一个非关键字属性不能仅仅是对另一个非关键字属性的进一步描述。
较少数据冗余
属性值、非关键字、行、关键字
15、状态转换图是通过描绘系统的 及引起系统状态转换的 ,来表示系统的 。
状态、事件、行为
16、状态转换图中的状态主要有 、 和 ,分别用用什么图形符号表示?
初态、终态、中间态
初态用实心圆表示,终态用一对同心圆表示,中间态用圆角矩形表示。
17、状态转换图中的状态转换用什么图形符号表示?其 表明了状态转换的方向。一般要在上面标明触发转换的 。如果未有标明,则表示了 。
带箭头的连线、箭头方向、触发转换事件表达式、在源状态的内部活动执行完之后自动触发转换
18、状态转换图中的中间状态由 、 和 组成。底层为“活动表”,其语法格式为 。
状态、状态变量和 活动表 事件名(参数表)/动作表达式
19、层次方框图是用来建立 模型的。它用 的一系列多层次的 框描绘数据的层次结构。顶层是一个单独的矩形框,它代表完整的 ;下面的各层矩形框代表这个数据的 ;最底层的各个框代表组成这个数据的实际 (不能再分割的元素)。
数据、树形结构、子集、数据元素
20. 比较层次方框图与结构图是的差异。
不同点:
○1、层次图描绘软件的层次结构,层次方框图描绘的是数据结构
○2、层次图的方框表示模块或子模块。层次方框图的方框表示数据结构整体或其子集
7
○3、层次图的连线表示调用关系,层次方框图表示组成关系
21、Warnier图和层次方框图类似,Warnier图也用树形结构描绘信息, Warnier图可以表明 的逻辑组织,也可以表示特定信息在某一类信息中是有 地出现的。
信息、条件
22、IPO图是输入、处理、输出图的简称。能够方便地描绘输入数据、对数据的处理和输出数据之间的关系。是显然是建立 模型的工具之一(与DFD类似)。
功能模型
23、从 、 、 和 方面验证软件需求的正确性。验证软件需求的方法 有 、 和 。
一致性 、完整性、现实性和有效性
验证需求的一致性、验证需求的现实性和验证需求的完整性和有效性
第四章习题
1、软件工程中对需求分析进行说明的技术分为 、 和 三类。分别用 、 和 进行描述。
非形式化、半形式化、形式化
自然语言、数据流图或者是E-R图和基于数学的技术
2、非形式化方法的缺点及形式化方法的优点分别是什么?
非形式化的缺点:可能产生矛盾、二义性、含糊性、不完整性、抽象层次混乱 形式化方法的优点:
○1、数学最有用的一个性质是:他能够简洁的准确的描述物理现象、对象或动作的结果,因此是
理想的建模工具
○2、可以在不同的软件工程活动之间平滑的过度 ○3、它提供了高层确认的手段
3、判断:使用了形式化的说明技术后就能保证说明的完整性了?错 4、应用形式化方法的准则有哪些?
○1、应当选用适当的表示方法
○2、应该形式化,但不要过分形式化 ○3、应该估算成本
○4、应该有形式化方法顾问随时提供咨询 ○5、不应该放弃传统的开发方法 ○6、应该建立详细的文档 ○7、不应该放弃质量标准 ○8、不应该盲目依赖形式方法 ○9、应该测试、测试再测试
1○0、应该重用
5、有穷状态机包括 、 、 、 和 5个部分。
态机J、输入集K、转换函数T、初始状态S和终态集F
6、目前使用的状态转换规则形式为: + + => 。
当前状态[菜单] +事件[所选择的项] + 谓词=>下个状态
7、Petri网包括 、 、 和 4个元素。其中位置用 代表,转换用 表示。输入函数用由 指向 的箭头表示,输出函数用由 指向 的箭头表示。它解决了状态转换中的 时间 问题。
位置P 、转换T 、输入函数I和输出函数O 圆圈、直线、位置、转换、转换、位置
8、带标记的Petri网中,主要是位置中设置了 。状态转换规则是:当每个 所拥有的权标数 从该位置到转换的线数时,就允许转换。
权标、输入位置、大于
9、加入禁止线的Petri网中,用一个 而不是用箭头标记的输入线表示禁止线。状态转换规则是:当每个输入线上至少有一个权标,而禁止线上 的时候,相应的转换才是允许的。
小圆圈、没有权标
10、用Z语言描述的、最简单的形式化规格说明含有 、 、 和 4个部分。
给定的集合、状态定义、初始状态和操作
第五章习题
1、从工程管理的角度,可以将软件设计分为 阶段和 阶段。从技术的角度,传统的结构化方法将软件设计划分为 、 、 和 4部分。面向对象方法则将软件设计划分为 、 、 和 4部分。
概要设计、详细设计
体系结构设计、数据设计、接口设计和过程设计
体系结构设计、类设计/数据设计 、接口设计 和 构件级设计
2、简述总体设计的必要性。
可以站在全局角度上,花较少成本,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从而用较低成本开发出较高质量的软件系统
3、 是各种设计方案的基础。总体设计过程分为 阶段和 阶段,前者确定 ,后者则确定 。
数据流图、系统设计、结构设计、系统具体实现方案、软件结构
9
4、典型的总体设计过程包括的步骤有哪些?
○1、设想供选择的方案 ○2、选取合理的方案 ○3、推荐最佳方案 ○4、功能分解 ○5、设计软件结构 ○6、设计数据库 ○7、指定测试计划 ○8、书写文档 ○9、审查和复审
5、在总体设计中要准备组成系统的物理元素清单。包括哪些内容?
程序、文件、数据库、人工过程和文档
6、在总体设计中书写文档步骤,通常的文档有哪些?
○1、系统说明 ○2、用户手册 ○3、测试计划 ○4、详细的实现计划 ○5、数据库设计结果
7、总体设计的设计原理有 、 、 、 和 五个部分。随着软件工程过程向前进行,其抽象程度随之而 。 是抽象的最底层。
模块化 、 抽象 、 逐步求精 、 信息隐藏和局部化和 模块 减少 、 源程序
8、简述系统设计采用模块化的优点和模块的重要性。
模块化的优点:
(1). 采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。 (2). 模块化使软件容易测试和调试,因而有助于提高软件的可靠性。 (3). 模块化能够提高软件的可修改性。
(4). 模块化也有助于软件开发工程的组织管理。
模块的优点:
○1、有效的模块化的软件比较容易开发出来 ○2、的模块化标胶容易测试和维护
9、模块是 、 、 和 的直接结果。模块程度的两个定性标准度量是 和 。
模块化 、抽象、信息隐藏 和 局部化 耦合 和 内聚
10、耦合是衡量 彼此间互相依赖(连接)的紧密程度,内聚是衡量一个 各个元素
彼此结合的紧密程度。好的设计方案,应该是由高 和低 的模块构建的系统结构。
模块、模块内、内聚、耦合
11、按耦合程度由低到高,常见的耦合形式有哪些?分别对应的模块性变化是?其中公共环境耦合的类型主要包括 和 。两者有何区别?
常见的耦合形式有:
数据耦合->控制耦合->特征耦合->公共环境耦合->内容耦合 分别对应的模块性变化是:由强变弱 松散公共耦合、紧密公共耦合,
差异是:前者一个模块往公共环境送数据 另一个模块从公共环境取数据 和 两个模块既往公共环境送数据又从里面取数据
12、耦合是影响软件 程度的一个重要因素,应该采取下述设计原则:尽量使用 耦合,少用 耦合和 耦合, 耦合的范围,完全不用 耦合。
复杂、数据、控制、特征、、 环境、内容 、
13、内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合。实践表明内聚更重要,应该把更多注意力集中到提高模块的 程度上。
内聚
14、模块内部聚合形式从内聚程度从低到高有哪些?
偶然内聚->逻辑内聚->时间内聚->过程内聚->通信内聚->顺序内聚->功能内聚
15、使用程序流程图确定模块的划分,这样得到的往往是 内聚的模块。根据数据流图划分模块时,通常得到 内聚的模块。
过程内聚、顺序内聚
16、在总体设计时提供了哪些启发规则?
○1、改进软件结构 ○2、模块规模应该适中
○3、深度、宽度、扇入和扇出都应该适当 ○4、模块的作用域应该在控制域之内 ○5、力争降低模块接口的复杂程度 ○6、设计单入口出口的模块 ○7、模块功能应该可以预测
17、描述软件结构的一些度量指标有 深度 、 宽度 、扇入 和扇出 。其中 和程序长度之间应该有粗略的对应关系。 越大系统越复杂。扇出过大意味着 过分复杂, 越大则共享该模块的上级模块数目越多。
深度、宽度、模块、扇入
18、名词解释:深度、宽度、扇入和扇出。
深度:软件结构中控制的层数
11
宽度:软件结构内同一个层次上的模块总数的最大值 扇入:有多少个上级模块直接调用它 扇出:一个模块直接控制的模块数目
19、常用语的描绘软件结构的图形工具有 和 。
层次图或 HIPO图 和 结构图
20、简单描述层次图(P102)和层次方框图(P68)的区别。
作用 矩形框 连线 层次图 描绘软件结构 模块 调用关系 层次方框图 描绘数据结构 数据元素 组成关系
21、结构图是描绘软件结构的图形工具,其基本符号有: 代表一个模块,方框之间的 表
示模块的调用关系;尾部是 表示传递的是数据;尾部 圆箭头表示传递的是控制信
息。其附加符号有 和 。
方框、直线、空心、、实心、棱形、环绕箭头
22、判断正误:
层次图和结构图并不指明何时调用下层模块?层次图和结构图只表明一个模块调用那些模块,没有表示模块内还有没有其他成分。
正确(P104)
23、面向数据流的设计方法中定义了一些映射,利用它可把 变换成 。
数据流图、软件结构图、
24、面向数据流的设计方法中信息流的 决定了映射的方法。信息流有 和 两种类型,分别对应的 和 分两种方法。
类型、变换流、事务流、变换分析 和 事务分析
25、变换分析是一系列设计步骤的总称,经过这些步骤把具有具有“变换中心”的 按预先确定的模式映射成 结构。明显可以分割为“导入” 、“加工变换”和“导出” 三部分。对应软件结构的“ 子系统”、“ 子系统”和“ 子系统”三部分。
数据流图、软件、输入、变换中心、输出
26、面向数据流的总体设计有七个步骤。它们分别是什么?
○1、复查基本系统模型
○2、复查并精华数据流图
○3、确定数据流图具有变化特性还是事务特性 ○4、确定输入流和输出流的边界从而孤立出变换中心 ○5、完成第一级分解 ○6、完成第二级分解
○7、使用设计度量和启发式规则对第一次分隔得到的软件结构进一步精化
27、面向数据流的总体设计中,确定输入流和输出流的边界,从而孤立出 。第一级分解是位于软件结构最顶层的控制模块Cm协调下面的哪些控制模块?第二级分解是从 开始分别向输入开始和输出结束方向把每个 映射成一个模块。
变换中心
Cm协制模块:输入信息处理控制模块Ca、变换中心控制模块Ct、输出信息处理控制模块Ce 变换中心的边界、处理
28、事务分析的设计步骤和变换分析的设计步骤大部分相同或类似,主要差别仅在于由数据流图到软件结构的映射方法不同。由事务流映射成的软件结构包括一个 分支和一个 分支。前者从 中心的边界开始,把沿着接收流通路的处理映射成模块;而后者的结构包含一个 模块,它控制下层的所有活动模块;然后把数据流图中的每个活动流通路映射成与它的流特征相对应的结构。(P112)
接收、发送、事务、调度
29、简述设计优化原则。
○1、在不考虑时间因素的前提下开发并精化软件结构
○2、在详细设计阶段选出最耗时间的哪些模块,仔细的涉及他们的处理过程,以求提高效率 ○3、使用高级程序设计语言编写程序
○4、在软件中鼓孤立出哪些大占处理机资源的哪些模块
○5必要时重新设计或依赖于机器的语言重写那些大量占用资源的的模块的代码,以求提高效率
第六章习题
1、简述经典的结构程序设计、扩展的结构程序设计和修正的结构程序设计。(P119)
经典的结构程序设计:只允许使用顺序、IF-THEN-ELSE型分支和DO-WHILE型循环这3种基本控制结构; 扩展的结构程序设计:如果除了上述3种基本控制结构之外,还允许使用DO-CASE型多分支结构和DO-UNTIL型循环结构;
修正的结构程序设计:再加上允许使用LEAVE(或BREAK)结构。
2、判断:结构程序的目的是不使用GOTO语句?错
3、人机界面设计主要的设计问题是 、 、 、 。(P120)
13
系统响应时间、用户帮助设施、出错信息处理、命令交互
4、人机界面设计中的“系统响应时间”的重要属性有 、 。
长度、易变性
5、为什么用户界面设计过程是一个迭代过程?
通常先创建设计模型,再用原型实现这个设计模型,并由用户试用和评估,然后根据用户意见进行修改
6、详细设计阶段使用的设计工具有 、 、 。通过它们可以对概要设计阶段的获得的模块结构图的每一个模块的 进行详细的描述。
图形、表格、语言 算法
7、详细设计阶段中的过程设计主要采用面向 的设计方法,它是在 、 、 完成之后进行的,它的主要任务是设计解题的 。(P140)
过程设计、数据设计、体系结构设计、接口设计、详细步骤(即算法)
8、过程设计工具中的图形工具主要有 、 、 ;表格工具有 ;语言工具有 。在表示多重嵌套的条件选择时,一般选用 、 工具。
程序流程图、盒图(N-S图)、问题分析图(PAD图) 判定表、 PDL、
判定表、判定树
9、简述程序流程图、N-S图、PAD图各自的特点。
程序流程图:
主要优点是对控制流程的描绘很直观,便于初学者掌握。 主要缺点:
(1)程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考
虑程序的全局结构。
(2)程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,
随意转移控制。
(3)程序流程图不易表示数据结构
N-S图:
(1). 功能域明确。
(2). 不可能任意转移控制。
(3). 很容易确定局部和全程数据的作用域。
(4). 很容易表现嵌套关系,也可以表示模块的层次结构 PAD图:
(1). 使用表示结构化控制结构的PAD符号设计出来的程序必然是结构化程序。 (2). PAD图所描绘的程序结构十分清晰。
(3). PAD图表现程序逻辑易读、易懂、易记。
(4). 容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成。 (5). 即可表示程序逻辑,也可描绘数据结构。
(6). PAD图的符号支持自顶向下、逐步求精方法的使用。
10、简述Jackson图和层次图的区别。
作用 Jackson图 层次图 ①描绘数据结构 描绘软件结构 ②描绘程序结构 ①数据元素 ②几个语句 组成关系 模块 调用关系 矩形框 连线
11、画出改进的Jackson图表示顺序、选择和重复的数据结构图。
顺序结构
选择结构
循环结构
12、简述Jackson方法进行模块算法设计过程(设计步骤)。
(1) 分析并确定输入数据和输出数据的逻辑结构,用Jackson图描绘数据结构 (2) 找出输入数据结构和输出数据结构中有对应关系的数据单元
(3) 根据一定规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图
(4)列出所有操作和条件(包括分支条件和循环结束条件),并且把它们分配到程序结构图的适当位置。 (5) 用伪码表示程序算法。
13、Jackson方法的核心是从数据结构图导出 。进行算法设计最后主要采用 工具进行描述的。
程序结构图、PDL
14、程序复杂程度的定量度量方法主要有 、 。
McCabe方法和Halstead方法
15、McCabe方法根据程序 的复杂程度定量度量程序的复杂程度,这样度量出的结果称
15
为程序的 。其中用 突出表示程序中的控制流。
程序控制流、环形复杂度、流图
16、流图的主要构成有 、 、 。其中点代表 ,边代表 。
结点、箭头线、区域 一条或多条语句、控制流
17、流图是根据程序过程设计结果转化而来的。请画出下面程序结构对应的流图。
18、根据下面的程序流程图试画出相应的流图。
19、当过程设计中包含复合条件(包含了一个或多个OR,AND,NAND,NOR)时,应该把复合条件分解为若干个简单条件,每个简单条件对应流图中一个结点。试画出下面复合条件对应的流图。
17
(1)V(G)=流图中的区域数
(2)V(G)=E-N+2 其中E是流图中的边数,N是结点数 (3)V(G)=P+1 其中P是流图中判定结点的数目
20、环形复杂度定量度量程序的逻辑复杂度。如何从流图中计算环形复杂度V(G)?
21、环形复杂度的用途
(1). 定量度量程序内分支数或循环个数,即程序结构的复杂程度; (2). 定量度量了测试难度;
(3). 能对软件最终的可靠性给出某种预测。
22、Halstead方法根据程序中的 和 的总数来度量程序的复杂程度。
运算符 操作数
第七章习题
1、软件的实现阶段主要包括 和 阶段。
编码 测试
2、软件工程过程是一个从抽象走向具体的一个过程。编码是对设计的最终 。而编码并不决定程序的质量,决定程序质量的主要因素是 。但编码阶段所选用的程序设计语言和编码风格对程序的 、 、 和 有深远的影响。
实现(具体化)、设计的质量、可靠性、可读性、可测试性、可维护性
3、简述编码阶段选择语言的理想标准有哪些?首要的实用标准是 。
(1). 为了使程序容易测试和维护以减少软件的总成本,所选用的高级语言应该有理想的模块化机制,以及
可读性好的控制结构和数据结构;
(2). 为了便于调试和提高软件可靠性,语言特点应该使编译程序能够尽可能多地发现程序中的错误; (3). 为了降低软件开发和维护的成本,选用的高级语言应该有良好的编译机制。 首要的实用标准是满足系统用户的要求。
4、一般来说,编码风格主要涉及 、 、 、 和 几个方面。
程序内部的文档、数据说明、语句构造、输入输出、效率
5、简述G.Meyers关于测试的目标或定义。
(1). 测试是为了发现程序中的错误而执行程序的过程;
(2). 好的测试方案是能够发现迄今为止尚未发现的错误的测试方案; (3). 成功的测试是发现了至今为止尚未发现的错误的测试。
6、以下说法的正误:
(1)软件测试,是为了发现错误而执行程序的过程。(T)
(2)好的测试方案是能够发现迄今为止尚未发现的错误的测试方案。(T) (3)成功的测试是发现了至今为止尚未发现的错误的测试(T) (4)测试是为了表明程序是正确的(F) (5)成功的测试是没有发现错误的测试(F)
(6)程序测试只能证明错误的存在,但不能证明错误不存在(T) (7)程序员应避免检查自己的程序(T)
(8)在设计测试用例时,应包括合理的合理条件和不合理的输入条件(T) (9)应长期保留测试用例,直至系统废弃(T) 7、简述软件测试的基本准则。
(1). 所有测试都应该能追溯到用户需求 (2). 应该远在测试开始之前就制定出测试计划 (3). 把Pareto(柏拉图)原理应用到软件测试中
(4). 应该从“小规模”测试开始,并逐步进行“大规模”测试 (5). 穷举测试是不可能的
(6). 为了达到最佳的测试效果,应该由的第三方从事测试工作
8、软件测试的方法主要有 、 。前者分为 、 。后者又可分为 、 。 静态测试、动态测试、静态分析器分析、代码评审 、白盒测试方法 、黑盒测试方法
9、黑盒测试又称为 测试,它完全不考虑程序的 和 ,是在 处进行的测试。白盒测试又称为 测试,它按照程序的 测试程序,检测程序中的主要 是否都能按预定要求正确工作。
功能测试、内部结构、处理过程、程序接口 结构测试、内部逻辑、执行通路
10、测试的基本步骤有 、 、 、 和 。
模块测试(单元测试)、子系统测试、系统测试、验收测试(确认测试)、平行运行(并行运行)
11、测试阶段的输入信息应包括 、 。它们又分别包含哪些内容?测试方案由哪
19
些组成?测试用例由 和 组成。
软件配置:需求说明书、设计说明书和源程序清单等 测试配置:包括测试计划和测试方案 测试方案:输入数据、功能说明、输出数据 测试用例:输入数据、输出数据
12、单元测试横跨软件生命周期的 、 两个阶段。可以应用 测试和 测试这样两种不同类型的测试方法。其中主要采用 技术,主要检测模块的 、 、 、 和 五个方面。
编码、测试、人工测试、计算机测试、白盒测试
模块接口、局部数据结构、重要的执行通路 、出错处理通路、边界条件
13、单元测试中在进行计算机测试时,应为每个模块单元测试开发 和(或) 才能进行。
驱动软件(驱动模块) 存根软件(桩模块)
14、集成测试是一种 和 同时进行的系统化技术。主要目标是发现与 有关的问题。根据组装的方式方法分另有 、 两种方法。这两种各有什么特点?
测试和组装软件、接口、非渐增式测试方法、渐增式测试方法 非渐增式测试:
(1)一下子把所有模块放在一起,并把庞大的程序作为一个整体来测试,测试者面对的情况十分复杂。 (2)在庞大的程序中想要诊断定位一个错误是非常困难的,改正错误更是极端困难,而且一旦改正一个错误之后,马上又会遇到新的错误。 渐增式测试:
(1)实际上同时完成单元测试和集成测试;
(2)把程序划分成小段来构造和测试,在这个过程中比较容易定位和改正错误; (3)对接口可以进行更彻底的测试;
(4)可以使用系统化的测试方法(输入-处理-输出)
15、渐增式测试方法有两种集成策略,分别是 、 。简述一下两种方式的特点(优缺点)。
自顶向下、自底向上
方法 优点 具有错误隔离手段 自顶 主要设计错误发现早 向下 不需要驱动程序 自底 具有错误隔离手段 主要设计错误发现迟 需要驱动程序 需要存根程序 潜在可重用代码测试不充分 缺点 向上 潜在可重用代码能充分测试 不需要存根程序
16、确认测试也称为 ,它的目标是验证软件的 。 是进行确认测试的基础。确认测试除了有测试人员参与外,必须有 积极参与。确认测试通常使用 测试法进行测试。在测试前应该仔细设计 和 。
验收测试、有效性、软件需求规格说明书、用户、黑盒、测试计划、测试过程
17、简述确认测试中软件配置复查的测试内容(P161)。
(1)软件配置的所有成分都齐全,质量符合要求;
(2)文档与程序完全一致,具有完成软件维护所必须的细节,而且已经编好目录; (3)仔细记录发现的遗漏或错误
18、简述Alpha测试和Beta测试。
Alpha测试:由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。显是在受控的环境中进行的。
Beta测试:由软件的最终用户们在一个或多个客户场所进行。开发者通常不在Beta测试的现场,因此,Beta测试是软件在开发者不能控制的环境中的“真实”应用
19、设计测试方案是测试阶段最关键的技术问题。测试方案包括 和 ,而后者又包括 和预期的输出结果。
测试目的、测试用例、输入数据
20、白盒法基于两种策略设计测试用例,即 逻辑覆盖 和 控制结构设计。逻辑覆盖根据测试数据覆盖 程序语句 的程度划分出五种覆盖标准,从低到高分别是 、 、 、 和 。控制结构设计是描述了测试数据覆盖源程序中控制结构的程度分为。 、 和 。
语句覆盖 、判定覆盖 、条件覆盖 、判定/条件覆盖 、条件组合覆盖 基本路径测试、条件测试、循环测试
21、简述语句覆盖、判定覆盖、条件覆盖、 判定/条件覆盖、条件组合覆盖和路径覆盖的定义。
语句覆盖:选择足够多的测试数据,使被测程序中每个语句至少执行一次
判定覆盖:不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果(每个分支)都应该至少执行一次。
条件覆盖:不仅每个语句至少执行一次,而且使每一个判定条件中的每一个条件至少获得过一次可能的值的测试 。
判定/条件覆盖:指选择足够的测试用例,使得判定表达式中的每个条件都取到各种可能的值,每个判定表达式也都取到各种可能的结果。
21
条件组合覆盖:要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。
22、针对下面的程序流程图设计了多组测试用例,它们分别满足了哪些覆盖标准(多选题)。
第一组: A=2,B=0,X=1 A=1,B=1,X=2 第二组: A=2,B=0,X=4 A=1,B=1,X=1
第一组: A、C
(A)语句覆盖(B)判定覆盖(C)条件覆盖(D) 判定/条件覆盖(E)条件组合覆盖(F)路径覆盖 第二组: A、B、C、D
(A)语句覆盖(B)判定覆盖(C)条件覆盖(D) 判定/条件覆盖(E)条件组合覆盖(F)路径覆盖 23、基本路径测试是Tom McCabe提出的一种白盒测试技术。简述该方法的设计测试用例的步骤。
(1). 根据过程设计结果画出相应的流图; (2). 计算流图的环形复杂度。 (3). 确定线性路径的基本集合。
(4). 设计可强制执行每条路径的测试用例。
24、黑盒测试着重测试软件功能,能够检测的错误类型有哪些?
(1). 功能不正确或遗漏了功能; (2). 界面错误;
(3). 数据结构错误或外部数据库访问错误; (4). 性能错误; (5). 初始化和终止错误。
25、黑盒测试法设计测试用例的方法主要有 、 和 。等价划分法把程序的输入、输出域划分成若干个 类和 类。使用边界值分析方法设计测试方案首先应该确定边界情况。选取的测试数据应该 、 和 边界值。
等价划分、边界值分析、错误推测法
26、调试是在 发现错误之后 的过程。主要有 、 和 调试途径。
测试、排除错误、蛮干法、回溯法、原因排除法
27、一个软件系统用可靠性和可用性来衡量其优劣程序。两者的主要差别是什么?综合两者的定量指标是 稳态可用性(Ass) 。
软件的可靠性:程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率 软件的可用性:程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。
28、通过计算出来的平均无故障时间,可以估算出应该改正的错误数,从而判断测试阶段何时可以结束。
第八章习题
1、在软件生命周期中,维护的工作量占软件开发成本的 左右。
4倍
2、软件维护共分为 、 、 和 四种类型。
改正性维护 、适应性维护 、完善性维护 、预防性维护
3、诊断和改正软件中错误的过程称为 ;适应环境变化而进行的修改活动称为 ;需要增加新功能而对软件系统进行的改动称为 ;为了适应未来的发展而进行的维护活动称为 。统计,它们各占整个维护工作量的百分比分别是 、 、 和 。
改正性维护 、适应性维护 、完善性维护 、预防性维护 17%~21%、18%~25%、50%~66%、4%
4、简述什么是结构化维护和非结构化维护。
非结构化维护:软件配置的惟一成分是程序代码,那么维护活动从艰苦地评价程序代码开始进行的维护。这种维护由于程序内部文档不足而使评价更困难。
结构化维护:如果有一个完整的软件配置存在,那么维护工作从评价设计文档开始,确定软件重要的结构特点、性能特点以及接口特点;估量要求的改动将带来的影响,并且计划实施途径。这种维护称为结构化维护。
5、维护的代价主要表现在 、 和 三个方面。维护工作量的数学模型为 。
软件维护的费用 、无形费用 、造成生产率下降
6、软件维护过程分为 、 、 、 和 重要的几项内容。
维护组织、维护报告、维护的事件流、保存维护记录、评价维护活动
7、简述改正性维护的事件流(过程)。
改正性维护过程:对一项改正性维护要求的处理,从估量错误的严重程度开始。如果是一个严重的错误(例如,一个关键性的系统不能正常运行),则在系统管理员的指导下分派人员,并且立即开始问题分析过程;如果错误并不严重,那么改正性的维护和其他要求软件开发资源的任务一起统筹安排。
8、所有维护工作进行同样的技术工作,这些工作包括哪些内容?
23
修改软件设计复查、必要的代码修改单元测试集成测试(包括使用以前的测试方案的回归测试) 验收测试复审。
9、决定软件可维护性的主要因素有 、 、 、 和 。
可理解性、可测试性、可修改性、可移植性、可重用性
10、文档是软件维护的主要对象之一。一般包含 和 两类文档。
用户文档和系统文档
11、以一叙述是否正确?
(1)可维护性复审仅在维护阶段进行。(F) (2)软件维护的对象是程序代码。(F)
(3)软件维护前必须由用户填写维护要求表。(T) (4)用户通常根据用户文档来使用和评价软件。(T) (5)软件再工作过程由一种严格顺序的六类活动组成。(F)
(6)在一个正在工作的软件上重新开发一个大型程序是一种浪费” (F) 12、怎么理解“在一个正在工作的软件上重新开发一个大型程序不是一种浪费”?
(1)维护费用高,开发成本低(前者是后者的10~40倍) (2)重新设计的软件结构更适应未来的维护 (3)旧版本可为原型,提高开发生产率
(4)用户的经验可为开发人员提供更新更好的变更需求和范围 (5)有工具,一部份工作可自动化进行 (6)可以建立完整 软件配置
13、软件再工程过程模型定义的活动类型有 、 、 、 、 和 。
库存目录分析、文档重构、逆向工程、代码重构、数据重构、正向工程
14、软件再工程过程实质上就是 维护过程。
预防性
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo7.cn 版权所有 湘ICP备2022005869号-9
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务