1.什么是软件危机?
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题表现在以下几个方面:
(1)用户对开发出的软件很难满意。 (2)软件产品的质量往往靠不住。 (3)一般软件很难维护。
(4)软件生产效率很低。 (5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。 2.为什么会产生软件危机?
(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个
完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没
有统一的、公认的方和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率
不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
3.怎样克服软件危机?
(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效
原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更
有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
(3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发
各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。
总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
4.构成软件项目的最终产品:
应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。 5.什么是软件生存周期?
软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。
1
6.软件生存周期为什么划分成阶段?
(1) 任何一个阶段的具体任务不仅,而且简单,便于不同人员分工协作,
从而降低整个软件开发工作的困难程度。
(2) 可以降低每个阶段任务的复杂程度,简化不同阶段的联系,有利于工程的
组织管理,也便于采用良好的技术方法。
(3) 使软件开发的全过程以一种有条不紊的方式进行,保证软件的质量,特别
是提高了软件的可维护性。
7.应该怎样来划分阶段?
(1)每一个阶段的任务尽可能; (2)同一阶段内的任务性质尽可能相同;
(3)每一个阶段任务的开始和结束有严格的标准。 8.软件开发模型有几种?它们的开发方法有可特点?
软件开发模型有瀑布型、渐增型和变换型。
瀑布型开发方法是按照软件生存周期的划分依次实施,每一个阶段有明确规定的任务。它的特点:
(1)各个阶段的顺序性和依赖性;
(2)划分逻辑设计与物理设计,尽可能推迟程序的物理实现;
(3)每个阶段必须完成规定的文档,对其中问题通过复审及早发现,及早解决。 渐增型开发方法及特点:
(1) 从部分需求出发,先建立一个不完全的系统,通过测试运行该系统取得经
验和信息反馈,加深对软件需求的理解,进一步使系统扩充和完善。如此反复,直至软件人员和用户对所设计完成的软件系统满意为止。 (2) 在渐增型开发下的软件是随软件开发的过程而逐渐形成的。
(3) 渐增型开发方法适合于知识型软件的开发,设计系统时对用户需求的认识
开始不是很清楚的,需要在开发过程中不断认识、不断获得新的知识去丰富和完善系统。多数研究性质的试验软件,一般采用此方法。 变换型开发方法及特点:
(1)从软件需求的形式化规格说明出发,经过一系列的程序变换,得到最终的程序系统。
(2)该方法必须有严格的数学理论和形式化技术的支持。9.什么是软件工程?
软件工程是指导计算机软件开发和维护的工程学科。
(1) 它采用工程的概念、原理、技术和方法来开发和维护软件;
(2) 它将管理技术与当前经过时间考验的而证明是正确的技术方法结合起来; (3) 它强调使用生存周期方法学和结构分析和结构技术; (4) 经过人们长期的努力和探索,围绕着实现软件优质高产这个目标,从技术到管
理两个方面做了大量的努力,逐渐形成了”软件工程学”这一新的学科。
10.什么是软件工程环境:
方法与工具的结合,加上配套的软、硬件支持称为软件工程环境。它能支持开发者按照软件工程的方法,全面完成生存周期中的各项任务。
2
第二章 习题参
1. 问题定义的任务和主要工作?
问题定义的任务:将用户提出的要求具体化、定量化;确定研制系统的
范围,明确研制的边
界。问题定义阶段的工作:
(1) 通过调查研究,了解系统需求;
(2) 确定系统的功能需求、性能需求、可靠性需求、安全及保密性、资源、
开发费用及开发进度等的需求;
(3) 问题定义阶段的产品——系统目标与范围说明书。 2.可行性研究目的?
确定在问题定义中所提出的问题是否值得去解,在条件下,问题能否解决。
3.可行性研究的任务?
(1) 进一步分析和澄清问题的定义,在澄清问题的基础上,导出系统的逻
辑模型;
(2) 从系统逻辑模型中,选择问题的若干种主要解法,研究每一种解法的
可行性,为以后的行动提出建议;
(3) 如果问题没有可行的解,建议停止系统开发;如果问题有可行的解,
应该推荐一个较好的解决方案,并为工程制定一个初步的计划。
4.可行性研究包括哪几方面的内容?
(1)技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足;
(2)经济可行性:经济效益是否超出开发成本; (3)操作可行性:系统操作在用户内部行得通吗?
(4)法律可行性:新系统开发是否会侵犯他人、集体或国家利益,是否违反国家法律。
5.可行性研究的步骤?
(1)复查系统的规模和目标; (2)研究目前正在使用的系统,总结现有系统的优劣,提出新系统的雏形; (3)导出新系统的高层逻辑模型; (4)推荐建议方案; (5)推荐行动方针;
(6)书写计划任务书(可行性报告); (7)提交审查。
6. 可行性研究报告的主要内容?
可行性分析的结果是可行性研究报告,内容包括:
(1) 系统概述:说明开发的系统名称,提出单位和开发单位。
(2) 可行性研究的前提:系统目标;要求;约束和;可行性研究的基
本准则等。
3
(3) 对现有系统的分析:处理流程,图示说明现有系统的处理流程和数据
流程;现有系统存在的问题。
(4) 系统需求:主要功能;主要性能及其要求;操作要求;信息要求;限
制性要求。
(5) 建议系统:系统目标;处理流程;系统结构,功能,性能;系统技术可
行性;投资和效益分析;操作可行性;法律可行性。
(6) 其它可选方案:与国内外同类型方案的比较;提出一两个可行性方案
供论证和探讨。
(7) 制定下一阶段的预算。
(8) 结论性意见:由用户方、设计方和投资方共同签署意见。
第三章 习题答案
1.需求分析的描述工具有哪些? 有数据流图、数据字典、判定表、判定树、结构化自然语言、层次方框图、Warnier图、IPO图和需求描述语言等。 2.需求分析的基本任务是什么?
准确定义未来系统的目标,确定为了满足用户的需要系统必须做什么。 3.怎样建立目标系统的逻辑模型?要经过哪些步骤?
建立目标系统的逻辑模型的过程也就是数据流图的分解过程。它的导出过程如图:
继续分解
有补充修正 无补充修正 不分解 分析追踪 细 化 用户复查 数据流图 数据流图
4.什么是结构化分析?它的结构化体现在哪里?
结构化分析:使用数据流程图、数据字典、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化说明书的目标文档—需求规格说明书。
结构化体现在将软件系统抽象为一系列的逻辑加工单元,各单元之间以数据流发生关联。
5.软件需求规格说明书由哪些部分组成? 组成包括:
(1) 引言:编写目的、背景说明、术语定义及参考资料等。 (2) 概述主要功能、约束条件或特殊需求。 (3) 数据流图与数据字典。
(4) 用户接口、硬件接口及软件接口。 (5) 性能需求、属性等。
(6) 其它需求,如数据库、操作及故障处理等。
6.为什么数据流图要分层?画分层的DFD要遵循哪些原则?
4
分层的目的:便于逐步细化、结构清晰。 画分层的DFD要遵循哪些原则: (1)父图与子图之间数据要平衡。
(2)分解的深度和层次达到使加工足够简单、易于理解的基本加工为止。
(3)区分局部文件和局部外部项(局限于数据流中某一层或某几层的文件和外部项)。
(4)不要把控制流作为数据流。 (5)忽略琐碎的枝节。
(6)每个数据流要有一个合适的名字,尽量使用现实系统中有具体意义的名字。 7.系统流程图与数据流程图有什么区别?
系统流程图描述系统物理模型的工具,数据流程图描述系统逻辑模型的工具。 系统流程图从系统功能的角度抽象的描述系统的各个部分及其相互之间信息流动的情况。
数据流程图从数据传送和加工的角度抽象的描述信息在系统中的流动和数据处理的工作状况。
8.数据字典包括哪些内容?它的作用是什么?
数据字典是描述数据流图中数据的信息的集合。它对数据流图上每一个成分:数据项、文件(数据结构)、数据流、数据存储、加工和外部项等给以定义和说明;它主要由数据流描述、加工描述和文件描述三部分组成。对用户来讲,数据字典为他们提供了数据的明确定义;对系统分析员来讲,数据字典帮助他们比较容易修改已建立的系统逻辑模型。
9.描述加工逻辑的工具有哪些?
有决策树(又称判定树)、决策表(又称判断表)和结构化语言等。
10.某单位拟开发一个计算机房产管理系统,要求系统具有分房、 调房、退房和查询统计等功能。房
产科将用户申请表输入系统 后,系统首先检查申请表的合法性,对不合法的申请表,系统拒绝
接收;对合法的申请表根据类型分别进行处理。
(1) 如果是分房申请,则根据申请者的情况(年龄、工龄、职称、职务、家庭人口
等)计算其分数,当分数高于阀值分数时,按分数高低将申请单插到分房队列的适当位置。在进行分房时,从空房文件中读出空房信息,如房号、面积、等级、单位面积房租等,把好房优先分给排在分房队列前面的符合该等级房条件的申请者;从空房文件中删掉这个房号的信息,并从分房队列中删掉该申请单,再把此房号的信息和住户信息一起写到住房文件中,输出住房分配单给住户,同时计算房租,并将算出的房租写到房租文件中。
(2) 如果是退房申请,则从住房文件和房租文件中删除有关信息,再把此房号的
信息写到空房文件中。
(3) 如果是调房申请,则根据申请者的情况确定其住房等级,然后在空房文件中
查找属于该等级的空房,退掉原住房,再进行与分房类似的处理。
(4) 住户可以向系统查询目前分房的阀值分数,居住某类房屋的条件,某房号的
5
单位面积及房租等信息。房产科可以要求系统打印住房情况的统计表,或更改某类房屋的居住条件、单位面积和房租等。
用数据流图描绘该系统的功能需求;在数据字典中给出主要的数据流、文件和加工说明。
参考第四章4.5应用举例教案之二分析。
第四章 习题参
1. 系统设计包括哪两个阶段?
系统设计包括总体设计与详细设计两个阶段。 2. 总体设计的主要任务是什么?
总体设计的主要任务是完成软件结构的设计,确定系统的模块及其模块之
间的关系。
3. 什么是模块?模块具有哪几个特征?总体设计主要考虑什么特征?
模块是数据说明、可执行语句等程序对象的集合,可以单独命名且可通过名字来访问。
模块具有输入和输出(参数传递)、功能、内部数据结构(局部变量)和程序代码四个特性。
概要设计主要考虑输入、输出(参数传递)和功能两个特性。 4. 什么是模块化?模块设计的准则?
模块化是按规定的原则将一个大型软件划分为一个个较小的、相对但
又相关的模块。
模块设计的准则:
(1) 改进软件结构, 提高模块性:在对初步模块进行合并、分解和移动
的分析、精化过程中力求提高模块的内聚,降低藕合。
(2) 模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理
解性和可维护性;过小的模块,合并到上级模块中。
(3) 软件结构图的深度、宽度、扇入和扇出要适当。一般模块的调用个数
不要超过5个。
(4) 尽量降低模块接口的复杂程度; (5) 设计单入口、单出口的模块。 (6) 模块的作用域应在控制域之内。 5. 变换型数据流由哪几部分组成?
变换型结构由三部分组成:传入路径、变换(加工)中心和传出路径。 6. 变换分析设计的步骤?
(1) 区分传入、传出和变换中心三部分,划分DFD图的分界线; (2) 完成第一级分解:建立初始SC图的框架; (3) 完成第二级分解:分解SC图的各个分支; (4) 对初始结构图按照设计准则进行精化与改进。 7. 事务型数据流由哪几部分组成?
事务型结构由至少一条接受路径、一个事务中心与若干条动作路径组成。
6
8. 事务分析设计的步骤?
(1) 在DFD图中确定事务中心、接收部分(包含全部接收路径)和发送部分
(包含全部动作路径);
(2) 画出SC图框架,把DFD图的三部分分别”映射”为事务控制模块,接收
模块和动作发送模块.一般得到SC图的顶层和第一层(如果第一层简单可以并入顶层);
(3) 分解和细化接收分支和动作分支,完成初始的SC图; (4) 对初始结构图按照设计准则进行精化与改进。 9. 比较层次方框图与结构图是的异同?
(1) 层次方框图描绘数据的层次结构, 结构图描绘的是软件结构。
(2) 二者都采用多层次矩形框树形结构。层次方框图的顶层矩形框代表完
整的数据结构, 下面各层矩形框依次代表上个框数据的子集;结构图是在层次图的每一个方框内注明模块的名字或主要功能,方框之间的直线表示模块的调用关系,用带注解的箭头表示模块调用过程中传递的信息。
10.欲开发一个银行的活期存取款业务的处理系统:储户将填好的存/取款单和存折交给银行工作人员,然后由系统作以下处理;
(1)业务分类处理:系统首先根据储户所填的存/取款单,确定本次业务的性质,并将存/取款单和存折交下一步处理;
(2)存款处理:系统将存款单上的存款金额分别记录在存折和帐目文件中,并将现金存入现金库;最后将存折还给储户;
(3)取款处理:系统将取款单上的取款金额分别记录在存折和帐目文件中,并从现金库提取现金;最后将现金和存折还给储户。
绘制该系统的数据流图和软件结构图。
顶层
存取单、存折 存取款 业务系统 存折 一层
储户 存折、存款单
存折、存款单
7 存款 处理
存折、存取单 帐目文件 现金帐 .审查 储户
存折、取款单
存折 取款 处理 分类 二层
修改存折 修改1 处理存款单 修改1 B
合格存折 存款单 A
存取单 合格存取单 帐目文件 现金帐 审查 业务 储户 存折 存折 单据 分类
不合格单据 合格存折 取款单 修改2 修改存折 处理取款单 A 修改2 B
软件结构图
注:A—文件帐目及存折;B—现金帐
存取款业务系统 2 2 获得合理单据 分类处理 1 1 2,3 3 4 5
输审退存款处理 取款处理 入核回4 5 单单据据 4 4 5 5
1 存取单、存折 2 合格单据
8 修改 帐目文件 修改 存折 修改 现金帐 3 不合格单据 4合格存折、存款单 5合格存折、取款单
五章 习题参
一.回答问题
1.详细设计的目的?
为软件结构图(SC图或HC图)中的每一个模块确定采用的算法和块内数据结构,用某种选定的表达工具给出清晰的描述. 2.详细设计的主要任务?
编写软件的“详细设计说明书”.软件人员要完成的工作:
(1) 为每一个模块确定采用的算法, 选择某种适当的工具表达算法的过程,
写出模块的详细过程描述.
(2) 确定每一模块使用的数据结构.
(3) 确定模块结构的细节,包括对系统外部的接口和用户界面,对系统内部其
它模块的接口,以及关于模块输入数据、输出数据及局部数据的全部细节.
(4) 为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)
进行预定的测试.
3.结构化程序设计的基本原则?
在详细设计中所有模块都使用单入口、单出口的顺序、选择、循环三种基本控制结构.
4.比较面向数据流和面向数据结构两类设计方法的异同? 相同点:
(1) 遵守结构程序设计“由顶向下”逐步细化的原则,并以其为共同的基础; (2) 均服从“程序结构必须适应问题结构”的基本原则,各自拥有从问题结构(包
括数据结构)导出程序结构的一组映射规则。 不同点:
(1) 面向数据流的设计以数据流图为基础,在分析阶段用DFD表示软件的逻辑
模型,在设计阶段按数据流类型,将数据流图转换为软件结构。面向数据结构的设计以数据结构为基础,从问题的数据结构出发导出它的程序结构 。
(2) 面向数据流的设计的最终目标是软件的最终SC图,面向数据结构的设计的
最终目标是程序的过程性描述。 5.比较Jackson方法和LCP方法的异同?
Jackson与LCP设计方法都是以数据结构为出发点,以程序的过程描述为最终目标,设计步骤基本相似。它们的主要差别是:
(1)使用不同的表达工具,其中LCP方法中的表达工具Warnier图 比Jackson设计方法中的表达工具Jackson图有更大的通用性;
9
(2)Jackson方法的步骤和指导原则有一定的灵活性,而LCP设计 方法则更加严密。
6.详细设计的描述工具应具备什么功能?
无论哪类描述工具不仅要具有描述设计过程,如控制流程、处理功能、数据组织及其它方面的细节的能力,而且在编码阶段能够直接将它翻译为用程序设计语言书写的源程序。
二.给出一组数从小到大的排序算法,分别用下列工具描述其详细过程:
(1) 流程图;(2)N—S图;(3)PAD图;(4)PDL语言。
输出A(m) A( m) j=i+1 j=i+1
输入n i=1 i=1 F i<n T m=1 m=1 j>n T F F A(j)A(j)A(m) A(m) T S=A(i) S=A(i) m=j m=j A(i)=A(m) A(i)=A(m) A(m)=SA(m)=S 10
PDL语言略
N-S图
i=1 TO m =i j=i+1 TO
n
A(j) > A(m)
T m
=j
S=A(i)
A(i)=A(
m) A(m)=S
输出
PAD图
m
=i
i=1
TO
j=i+1 TO
F
S=A(i) A(i)=A(m)
PETU
m
A(j) > A(m)
j=i+1 TO
三.根据后面给出“卡片的分类及统计”项目说明,完成下列工作:
(1)用Jackson图表示输入与输出数据结构,找出它们之间的对应单元; (2)画出用Jackson图表示的程序结构;
(3)列出程序所需用的操作,并加到上一步画出的程序结构图上; (4)用Jackson伪代码写出程序的过程表示。
输入卡片分析程序。一叠输入卡片按内容分为K1、K2、K3三类,卡片的排列规则是:以K1卡始,以K2卡终。起始卡之前属前置部分,不含K1卡;起始卡与终了卡之间属分批部分,不含K2卡。 如图: K3 K2 … K3 前置部分 K1 起始卡 K1 K3…K3 K1…K1 分批部分 … K2 终了卡 11
试用Jackson方法编一程序,要求依次完成下列分析工作: -----统计起始卡前卡片的张数,存入A; -----打印起始卡的内容;
-----统计起始卡后出现的K1卡和K3卡总批数,存入B; -----统计起始卡后出现的K1卡的张数,存入C; -----统计起始卡后出现的K3卡的批数,存入D; -----打印终了卡的内容;
-----打印A、B、C、D四个统计值。
输入卡片文件的数据结构图
输入卡片文件 前置部分 起始卡(K1) 分批部分 终了卡(K2) I 非K1卡* 批S 0 0 K1批K3批I I K1卡* K3卡* 输出卡片文件的数据结构图 打印文件 起始卡内容 终了卡内容 ABCD统计值 上述两个结构图有三组对应单元: 顶层单元、起始卡单元和终了卡单元。 按映射规则,可导出下页程序结构图。
12
由上步导出的程序结构 将输入与输出中的两模块细化
处理批部输入卡片
I
2 处理
处理前置打印起处理批打印终 统计总批处理批I I
S
3 处理前置部处理K1处理K3 处理处理K1
I I S
1 4 处理K1统计批处理K1处理K1处理K3
I I 统计张统计张
处理K1处理K3程序的过程表示及伪代码略
打印A、B、C、处理批I 处理K35 第六章 习题参
1. 编码的任务?
使用选定的程序设计语言,把模块的过程性描述翻译为用语言书写的源程序(源代码)。
2. 对源程序基本要求?
源程序要求:正确可靠、简明清晰、效率高。 (1) 源程序的正确性是对程序质量的最基本要求;
(2) 源程序的简明清晰,便于验证源代码和模块规格说明的一致性,容易进
行测试和维护;
(3) 对于大多数模块,编码时应该把简明清晰放在第一位;
(4) 除了编码阶段产生源代码外,在测试阶段也需要编写一些测试程序,用
于对软件的测试。
3. 程序设计语言的特点?
(1) 名字说明:程序中使用对象的名字,能为编译程序所检查和识别; (2) 类型说明:定义对象的类型,确定该对象的使用方式;
13
(3) 初始化:为变量提供适当的初始值或由系统给变量赋一特殊的表明未初
始化的值;
(4) 对象的局部性:程序中真正需要的那部分才能访问的对象; (5) 程序模块:控制程序对象的名字;
(6) 循环控制结构:如FOR语句、WHILE-DO语句、REPEAT-UNTIL语句等; (7) 分支控制结构:如IF语句、CASE语句等;
(8) 异常处理:为程序运行过程中发生的错误和意外事件提供检测和处理上
的帮助;
(9) 编译:能分别编译各个程序单元。 4. 选择程序设计语言需要考虑的因素?
(1) 选择用户熟悉、便于用户维护的语言。
(2) 选择目标系统的环境中可以提供的编译程序所能选用的语言。 (3) 选择可以得到的软件工具,能支持程序开发中可以利用的语言。
(4) 根据工程规模的大小、目标系统应用范围,如实时应用选择Ada语言或
汇编语言,系统软件开发选择C语言或汇编语言,软件开发中若含有大量数据操作则选择SQL、dBASE等数据库语言等。 (5) 选择程序员熟悉的语言。
(6) 选择标准化程度高、程序可移植性好的语言。
(7) 根据算法与计算的复杂性、数据结构的复杂性选择。如对于系统程序和
结构复杂的应用程序,选择支持数组、记录(或结构)与指针动态数据结构的Pascal语言或C语言。
(8) 根据实时要求系统需要的响应速度和效率选择相应的语言。 5. 编码风格的指导原则。
(1) 源程序:包括适当的标识符、适当的注解、程序清单的合理布局与清晰; (2) 数据说明:数据结构或数据类型的说明次序标准化;变量名称尽量有意
义;对复杂的数据结构在注解中要说明在程序设计中实现这个数据结构的方法。
(3) 语句的构造简单明了:不要为节省空间将多个语句写在同一行;尽量避
免复杂的条件及“非”条件的测试;避免大量使用循环嵌套和条件嵌套;括号的使用是为了使逻辑表达式和算术表达式的运算顺序清晰直观。 (4) 效率:考虑程序运行的时间存储器效率、输入/输出的效率;在处理程序
正确性、清晰与效率之间的关系时先求程序正确后求快;先求清楚后求快;保持程序简单以求快;书写清楚,不为“效率”牺牲清晰。
6. 语言(4GL)应具备哪些的特征?
(1) 具有很强的数据管理能力,能对数据库进行有效的存取、查询和其它有
关操作;
(2) 能提供一组高效的、非过程化的命令,组成语言的基本语句,编程时用
户只需用这些命令说明“做什么”,不必描述实现的细节;
(3) 能满足多功能、一体化的要求。为此,语言中除必须含有控制程序逻辑
与实现数据库操作的语句外,还应包括生成与处理报表、表格、图形,
14
以及实现数据运算和分析统计功能的各种语句,共同构成一个一体化的语言,以适应多种应用开发的需要。
7.修改右表中的程序结构。
改进如下程序的结构 改进后的程序结构: if (A>B) then if (A<B) then
if (X>Y) then A:=B;
B:=Y; else if (X>Y) then else B:=Y; A:=X; else endif; A:=X;
else endif;
A=:B;
endif;
将如下的多出口循环结构改为单出口程序结构 改进后的单出口程序结构 WHILE C1 DO exit1:=false; exit2:=false;
BEGIN WHILE C1 AND (NOT exit1) AND (NOT exit2) DO
… BEGIN IF C2 THEN GOTO 20; …
… IF C2 THEN exit1:=true;
IF C3 THEN GOTO 30; …
… IF C3 THEN exit2:=true;
END; …
20:{code for C2 exit} END ;
GOTO 40; IF (exit1) THEN GOTO 20; 30:{code for C3 exit} IF (exit2) THEN GOTO 30;
40: 20:{code for C2 exit} GOTO 40;
30:{code for C3 exit} 40:
第七章 习题参
一.回答问题
1.软件测试的基本任务?
软件测试是按照特定的规则,发现软件错误的过程;好的测试方案是尽可能发现迄今尚未发现错误的测试;成功的测试方案是发现迄今尚未发现错误的测试; 2.测试与调试的主要区别?
(1) 测试从一个侧面证明程序员的失败;调试证明程序员的正确;
(2) 测试从已知条件开始,使用预先定义的程序,且有预知的结果,不可预见
15
的仅是程序是否通过测试;调试从不可知内部条件开始,除统计性调试外,结果是不可预见的;
(3) 测试有计划并且要进行测试设计;调试不受时间约束;
(4) 测试是发现错误、改正错误、重新测试的过程;调试是一个推理的过程; (5) 测试执行是有规程的;调试执行要求程序员进行必要的推理;
(6) 测试由的测试组在不了解软件设计的件下完成;调试由了解详细设计
的程序员完成;
(7) 大多数测试的执行和设计可由工具支持;调试用的工具主要是调试器。 3.人工复审的方式和作用?
人工复审的方式:代码会审、走查和排练和办公桌检查; 人工复审的作用:检查程序的静态错误。
4.什么是黑盒测试?黑盒测试主要采用的技术有哪些?
黑盒测试也称为功能测试,它着眼于程序的外部特征,而不考虑程序的内部逻辑结构。测试者把被测程序看成一个黑盒,不用关心程序的内部结构。黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
黑盒测试主要采用的技术有:等价分类法、边沿值分析法、错误推测法和因果图等技术。
5.什么是白盒测试?白盒测试主要采用的技术有哪些?
测试者了解被测程序的内部结构和处理过程,对程序的所有逻辑路径进行测试,在不同点检查程序状态,确定实际状态与预期状态是否一致。
白盒测试主要采用的技术有:路径测试技术和事务处理流程技术,对包含有大量逻辑判断或条件组合的程序采用基于逻辑的测试技术。 6.路径测试技术中几种主要覆盖的含义?举例说明?
语句覆盖:至少执行程序中所有语句一次。
判定覆盖:使被测程序中的每一个分支至少执行一次。故也称为分支覆盖。 条件覆盖:执行所有可能的穿过程序的控制路流程。 条件组合测试:设计足够的测试用例,使每个判定中的所有可能条件取值组合至少执行一次。
(例略)
7.等价分类法的测试技术采用的一般方法?举例说明?
(1) 为每个等价类编号;
(2) 设计一个新的测试方案,以尽可能多的覆盖尚未被覆盖的有效等价类,重复
这一步骤,直到所有有效等价类被覆盖为止。
(3) 设计一个新的测试方案,使它覆盖一个尚未被覆盖的无效等价类, 重复这
一步骤,直到所有无效等价类被覆盖为止。 (例略)
8.软件测试的一般步骤?
单元测试、子系统测试、系统测试、验收测试、平行测试。
16
9.比较集成试的两种方式的优劣?
非渐增式测试方式:分别测试模块,再把所有模块按设计要求放在一起组成所要的程序。该方法编写测试软件工作量大,模块间的接口错误发现得晚,错误定位较难诊断,总体测试有的错误容易漏掉,测试时间相对较少,可以并行测试所有模块,能充分利用人力,加快工程进度。。
渐增式测试方式:把下一个要测试的模块,同已经测试好的那些模块结合起来进行测试。该方法利用已测试过的模块作测试软件,开销小,较早发现模块间的接口错误,错误定位往往和最近入的模块相关,对已测试好的模块可在新加入模块的条件下受到新的检验,测试更彻底,需要较多的测试时间,不能并行测试。
总的来说,渐增式测试方法比较好。 10.软件测试的策略?
(1) 在任何情况下都应使用边界值分析的方法。 (2) 必要时用等价类划分法补充测试方案。 (3) 必要时再用错误推测法补充测试方案。 (4) 对照程序逻辑,检查已设计出的测试方案。
(5) 根据对程序可靠性的要求采用不同的逻辑覆盖标准,再补充一些测试方案。 二.某电力公司有A、B、C、D共四类收费标准,并规定,居民用电每月200度以下按A类收费, 200度以上按B类收费。动力电以每月1万度为分界,非高峰用电不足1万度按B类收费,达到或超过1万度按C类收费。高峰用电不足1万度按C类收费,达到或超过1万度按D类收费。试用基于逻辑的测试方法为它设计足够的测试用例实现条件组合的完全覆概。 规则号 居民 用电 200度以下 200度以上 动非高力峰 用电 1万度以下 1万度以上 1 Y ▲ 2 Y ▲ 3 Y ▲ 4 Y ▲ 5 Y ▲ 6 Y ▲ 高峰 1万度以下 1万度以上 收费 标准
A类 B类 C类 D类 17
测试用例
用电类型 居民 用电 动力用电 非 高峰 高峰 输入数据 90度/月 110度/月 8000度/月 12000度/月 9000度/月 11000度/月 预期结果 A B B C C D 三.如图显示某程序的逻辑结构。 试为它设计足够的测试用例,分别实现对程序的判定覆概、条件覆概和条件组合覆概。
T F A>0 and B=0
S1 S2
设计测试方案 覆盖种类 需满足的条件 测试数据 A=2,B=0 A=2,B=1或 A=1,B=0或 A=1,B=1 A=2,B=0 A=1,B=1 A=2,B=0 A=2,B=1 A=1,B=0 A=1,B=1 18
期望结果 执行S1 执行S2 执行S1 执行S2 执行S1 执行S2 执行S2 执行S2 A>1,B=0 判定覆盖 A>1,B0或 A1,B=0或 A1,B0 条件覆盖 以下四种情况各出现一次 A>1 A1 A>1,B=0 条件组合 A>1,B0 覆盖 A1,B=0 A1,B0
B=0 B0 四.某城市电话号码由三部分组成。它们的名称和内容分别是: 地区码:空白或三位数字;
前 缀:非‘0’或‘1’的三位数字; 后 缀:4位数字。
假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。根据该程序的规格说明,作等价类的划分,并设计测试方案。 1.划分等价类
输入条件 地区码 前 缀 有效等价类 1.空白; 2.三位数; 3.从200到999之间的三位 4.四位数字。 无效等价类 1. 有非数字字符;2.少于三位数字; 3.多于三位数字。 4.有非数字字符;5.起始位为‘0’; 6.起始位为‘1’; 7.少于三位数字; 8.多于三位数字。 9.有非数字字符;10.少于四位数字; 11.多于四位数字。 设计测试方案 方案 内容 地区码 前缀 200~999之间的三位数字 有非数字字符 起始位为‘0’ 起始位为‘1’ 少于三位数字 多于三位数字 后缀 四位数字 四位数字 ( )276-2345 (635)805-9321 (20A)723-4567 (33 )234-5678 (5555)345-67 (345)5A2-3456 (345)012-3456 (345)132-3456 (345) 92-3456 (345)4562-3456 输 入 预期 输出 有效 有效 无效 无效 无效 无效 无效 无效 无效 无效 无效 无效 无效 后 缀
1 空白 2 三位数字 3 有非数字字符 4 少于三位数字 5 多于三位数字 6 7 8 9 10 11 12 13
有非数字字符 (345)342-3A56 少于四位数字 (345)342- 356 多于四位数字 (345)562-34567 19
第八章 习题参
1.为什么说软件的维护是不可避免的?
因为软件的开发过程中,一般很难检测到所有的错误,其次软件在应用过程中需要随用户新的要求或运行环境的变化而进行软件的修改或完成功能的增删等,为了提高软件的应用水平和使用寿命,软件的维护是不可避免的。 2.软件的维护一般分为哪几类?
改正性维护:满足用户对已开发产品的性能与运行环境不断提高的要求,进而达到延长软件寿命的目的。
适应性维护:对程序使用期间发现的程序错误进行诊断和改正的过程,配合变化了的环境进行修改软件
的活动;
完善性维护:满足用户在使用过程中提出增加新的功能或修改已有功能的建议而进行的工作;
预防性维护:为了改善未来的可维护性或可靠性而修改软件的工作。 3.影响软件维护的因素有哪些?
开发方法:采用模块化详细设计文档有助于理解软件的结构、界面功能和内部流程;开发过程中严格而科学的管理规划及清晰可靠的文档资料对发生错误后的理解与纠错是至关重要的;开发过程中模块的程度越高,对软件修改越容易,对软件的改进和移植越方便。
开发条件:软件开发及维护人员的水平决定了软件开发的质量和维护的效率;开发过程中使用标准的程序设计语言和标准的操作系统接口,可以大大提高软件的可维护性;在测试过程中用例的有效性,可极大地减少软件存在的错误;其次使用规范化的文档资料可为维护提供更好的依据。 4.软件维护困难主要表现在什么方面?
(1) 一般来讲,维护人员对开发人员写的程序及文档,理解都比较困难,对维护
工作不会喜欢;
(2) 维护持续时间都很长,在开发人员不在现场的轻快下,维护软件通常是很困
难的;
(3) 绝大多数软件在设计时对将来的软件修改都没有考虑或考虑不多,尤其未能
在设计中强调并认真解决好模块的性,使软件的修改既困难又易发生差错。
5.决定软件可维护性的因素?
(1) 软件的可理解性、可测试性、可修改性;
(2) 文档描述符合要求、用户文档简洁明确、系统文档完整并且标准。 6.软件价格应该计入维护成本吗?为什么?
在软件的生命周期中,软件维护的工作量非常大,不同应用领域的维护成本差别也很大。一般大型软件的维护成本远远高于开发成本若干倍。因此软件价格中应该计入维护成本。
7.对前面各章中分析的各应用系统,提出改进和扩充功能的要求?
20
(1) 教材销售采购系统; (2) 图书管理系统; (3) 房产管理系统。 (略)
第九章 习题参
1.软件工程管理的内容?
(1) 费用管理: 对软件开发进行成本核算,使软件生产按照商品生产的规律办事。
包括:以简单、科学方法估算软件开发费用,作为签定开发合同的根据;管理开发费用的有效使用,即用经济手段来保证产品如期按质完成。
(2) 质量管理: 按项目的质量保证计划,确保各个开发阶段的开发和维护工作全
部按软件工程的规范进行,保证软件产品的质量。
(3) 配置管理:通过对于程序、文档和数据的各种版本所进行的管理,保证资料的
完整性与一致性。
(4) 项目管理:制定《项目实施计划》,按照计划的内容组织和实施软件的工程化
生产。最终目标是以合理的费用和进度,完成计划所规定的软件项目。 2.软件项目有哪些特点?
(1) 软件项目与其他任何产业项目不同,它是算法、思想、概念、组织、流程、
效率、优化等的融合体;
(2) 开发软件项目产品,在多数情况下,用户给不出明确的想法和要求。
(3) 在开发过程中,程序及其相关的文档资料常常需要修改,在修改过程中又可
能带来新的问题,且这些问题要在很久以后才会发现。
(4) 在研制开发过程中,文档资料是不可缺少的,但工作量又是巨大的,往往也是
人们不愿去作的。
(5) 参加软件项目的工作人员,要求具有一定的业务水平和实际工作经验,而很
难完全避免的人员流动,对工作的影响是很大的。离开的人员不仅带走了重要的信息,而且带走了工作经验。 3.软件成本估算的一般方法?
自顶向下估计: 首先估算出项目总的开发成本,然后在项目内部进行成本分配。由少数专家参与,依靠他们过去的经验,将要开发的软件与过去开发过的软件进行“类比”,以估计新的软件开发所需要的工作量和成本。
自底向上估计: 将开发任务分成若干子任务,子任务又分成子子任务,直到每一个单元内容足够明确为止;把各个任务单元的成本估计出来,汇合成项目的总成本。该方法得到的结果比较接近实际。
4.为什么在软件开发中,不能用简单增加人员的方法来缩短开发时间?
大量软件开发实践说明:向一个已经延迟的项目追加开发人员,可能使它完成得更晚。因为当开发人员以算术级数增长时,而人员之间的通信将以几何级数增长,往往“得不偿失”。
5.影响软件质量的主要因素有哪些?
(1) 产品运行:正确性、风险性、效率、完整性、健壮性和可用性;
21
(2) 产品修改:可理解性、可维护性、灵活性、可测试性; (3) 产品转移:可移植性、可重用性和互运行性。 6.本章第四节的例子是某个软件项目的PERT图。 (1)找出关键路径和完成项目的最早时间;
(2)标出每项活动的最早起止时间与最迟起止时间。 (见该章教案举例)
7.将上题的内容改用Gantt图来表示。 (见该章教案举例)
第十章 习题参
1.软件工具是什么?按照软件生存周期可将其分为几类?
软件工具是指为支持计算机软件及其文档的开发、维护、模拟、移植或管理而研制的程序系统。按照软件生存周期可将其分为如下几类:
(1) 需求分析:如数据流图绘制与分析工具、状态转换图绘制与分析工具、面向
对象的模型和分析工具、快速原型构造工具、数据字典与数据库工具等。 (2) 软件设计:如HIPO图、PDL(程序设计语言)或PAD(问题分析图)支持工具等。 (3) 编码:集成化的程序员工作平台。如各种正文编辑器和常规的编译程序、汇
编程序、连结程序及符号调试器等。
(4) 软件测试:如静态分析器、动态覆盖率测试器、测试用例生成器、测试报告
生成器及环境模拟器等。
(5) 软件维护:如反汇编程序、反编译程序、程序结构分析器、源程序格式化工
具、文档生成工具、源程序至PAD(问题分析图)或流程图的自动转换工具等。 2.评价软件工具的原则?
(1) 易用性:友好的用户界面,用户乐于使用;
(2) 对开发方法的支持:能满足预期的任务和功能需求,且能支持完成该任务所
遵循的方法学;
(3) 稳健性:具备自检测机制,即使在故障情况下也不会导致严重后果; (4) 性能:能使资源得到充分有效的利用;
(5) 工具结构柔性:工具结构是柔软的、可修改的和可扩充的。 3.什么是软件开发环境?按技术发展方向分为哪几类环境?
将一组相关的软件工具按照一定的软件开发方法、软件生产和维护模型有机的组合起来,为特定的领域所使用,以支持从需求分析、设计、编码、测试直到维护的整个软件生命周期的计算机辅辅助开发程序系统称为软件开发环境。
按技术发展方向软件开发环境可分为以语言为中心的环境、面向结构化的环境和工具箱环境。
4.工具箱类软件工具的基本特点?
(1) 在某种OS基础上通过一组小的实用工具构成;
(2) 虽然各工具之间相互,但系统能提供统一的用户命令界面及工具之间统
一的数据交换方式;
(3) 工具箱中各工具之间是相互的,用户可根据需要进行灵活的增加和裁减;
22
(4) 工具箱环境中一般除了包括支持编码阶段的工具(如编辑程序、编译程序、汇
编程序、连结程序调试程序等)外,还可包括支持大型软件开发方面的工具; (5) 由于工具箱环境具有较强的通用性和灵活性,因而目前商品化的算机系系统
上配置的软件环境大多属于这一类。如:UNIX程序设计环境、及VAX/VNS SET、PCDE、APCE等程序设计环境。 5.软件开发环境的组成与各成分的作用?
软件开发环境的构成:交互式人机界面、工具集及软件环境数据库。
交互式人机界面:人机界面(也称用户界面或人机对话)是用户与计算机系统之间相互交流的中间媒介。
工具集:工具集中软件工具是构成软件开发环境的基本成分。包含在软件开发环境中的工具不是各自封闭和分离的,而是与某种软件开发方法或某种软件加工模型相适应,并以一种综合的、一致的和整体连贯的形态来支持软件开发的全过程。 软件环境数据库:是各个软件工具之间共享数据及相互连结的统一媒介。 6.软件开发环境数据库在软件开发中的作用?
软件环境数据库是用于支持软件项目的大型数据库;软件环境数据库中主要存储软件开发过程中产生的有关产品或半成品的数据及各种项目数据,如源程序、测试数据和各种文档等,它构成软件开发和维护过程中所有项目数据的集中化的存储设施,是集成化软件开发环境的核心组成部分,也是各个软件工具之间共享数据及相互连结的统一媒介。
7.集成化项目支持环境IPSE的主要特征是什么? (1) 集成化和相互兼容的工具集; (2) 支持项目的管理和控制; (3) 支持配置管理;
(4) 支持多种语言的软件开发; (5) 支持硬件开发;
(6) 允许宿主机和目标机使用分布式系统。 8.CASE的含义是什么?
CASE是计算机辅助软件工程的简称。简单的说,可以将CASE理解为: CASE=软件工程+自动化工具.从狭义角度解释它是一组工具和方法的结合;从广义角度解释它是辅助软件开发的任何计算机技术;从学术研究角度解释:它是软件开发方法、软件开发管理和软件工具等方面多年研究和发展的产物;从软件产业角度解释它是种类繁多的软件开发和系统集成的产品和软件工具的集合。 9.CASE工具一般分为几类?有什么区别?
CASE工具可以理解为除OS外的所有软件工具的总称。按对软件过程的支持范围CASE工具分为三类:一是工具: 支持单个任务;二是工作台:支持某一软件过程或一个过程中的某些活动;三是环境:支持某些软件过程及相关的大部分活动。 10.工作台实现软件工具集成的方式?
工作台实现软件工具集成的方式是通过共享文件、共享仓库或共享数据结构来集成。
23
模拟试卷一参
一.名词解释
数据流图:描述数据处理过程的工具。它从数据传送和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。
模块化:按规定的原则将一个大型软件划分为一个个较小的、相对但又相关的模块。
总体设计: 主要完成软件结构的设计,确定系统的模块及其模块之间的关系. 软件测试:为了发现软件错误而执行程序的过程。
软件维护:在软件运行和维护阶段对软件产品进行的修改。
软件工程:采用工程的概念、原理、技术和方法来开发软件的方法。 二.填空
1.软件工程包括的三个要素:方法、工具和过程。
2.软件生存周期的主要步骤:制定计划、需求分析、设计、程序编码、测试和运行维护。
3.软件开发的主要方法和技术:瀑布型、渐增型和变换型。 4.度量模块性的准则:模块间的耦合性和模块的内聚性。
5.面向数据结构的设计,考虑问题的出发点是数据结构,最终目标是得出程序的过程性描述;解决问题的焦点是实体的结构分析。
6.软件维护的目的:满足用户对已开发产品的性能与运行环境不断提高的要求,延长软件的寿命. 三.回答问题
1.数据字典的作用是什么?
(1) 数据字典对数据流图上每一个成分:数据项、文件(数据结构)、数据流、
数据存储、加工和外部项等给以定义和说明;
(2) 它主要由数据流描述、加工描述和文件描述三部分组成; (3) 对用户来讲,数据字典为他们提供了数据的明确定义;
(4) 对系统分析员来讲,数据字典帮助他们比较容易修改已建立的系统逻辑
模型。
2.概要设计与详细设计任务的主要区别?
概要设计的任务是将软件需求转换为数据结构和软件的系统结构。
详细设计的任务是对上述结构表示进行细化,得到软件的详细的数据结构和算法。
3.软件工程项目的主要目标?
(1)以较低的开发成本,达到要求的软件功能和较好的软件性能; (2)开发的软件易于移植; (3)较低的维护费用;
(4)按时完成工作,及时交付使用。 3.软件工程标准化对软件开发的作用?
(1) 提高软件的可靠性、可维护性和可移植性;
24
(2) 提高软件的生产率;
(3) 提高软件人员的技术水平;
(4) 提高软件人员之间的通信效率,减少差错和误解;
(5) 有利于软件管理、降低软件产品的成本和运行维护成本; (6) 有利于缩短软件开发周期。
4.语言(4GL)应具备哪些的特征?
(1) 具有很强的数据管理能力,能对数据库进行有效的存取、查询和其它有
关操作;
(2) 能提供一组高效的、非过程化的命令,组成语言的基本语句,编程时用
户只需用这些命令说明“做什么”,不必描述实现的细节;
(3) 能满足多功能、一体化的要求。为此,语言中除必须含有控制程序逻辑
与实现数据库操作的语句外,还应包括生成与处理报表、表格、图形,以及实现数据运算和分析统计功能的各种语句,共同构成一个一体化的语言,以适应多种应用开发的需要。
5.什么是黑盒测试?黑盒测试主要采用的技术有哪些?
(1) 黑盒测试也称为功能测试,它着眼于程序的外部特征,而不考虑程序的内
部逻辑结构。测试者把被测程序看成一个黑盒,不用关心程序的内部结构。
(2) 黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格
说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
(3) 黑盒测试主要采用的技术有:等价分类法、边沿值分析法、错误推测法和
因果图等技术。
6.什么是软件开发环境?按技术发展方向分为哪几类环境?
(1) 将一组相关的软件工具按照一定的软件开发方法、软件生产和维护模型
有机的组合起来,为特定的领域所使用,以支持从需求分析、设计、编码、测试直到维护的整个软件生命周期的计算机辅辅助开发程序系统称为软件开发环境。
(2) 按技术发展方向软件开发环境可分为以语言为中心的环境、面向结构化
的环境和工具箱环境。 7.影响软件维护的因素有哪些?
(1) 开发方法:采用模块化详细设计文档有助于理解软件的结构、界面功能
和内部流程;开发过程中严格而科学的管理规划及清晰可靠的文档资料对发生错误后的理解与纠错是至关重要的;开发过程中模块的程度越高,对软件修改越容易,对软件的改进和移植越方便。
(2) 开发条件:软件开发及维护人员的水平决定了软件开发的质量和维护的
效率;开发过程中使用标准的程序设计语言和标准的操作系统接口,可以大大提高软件的可维护性;在测试过程中用例的有效性,可极大地减少软件存在的错误;其次使用规范化的文档资料可为维护提供更好的依据。
25
四.应用题
1.欲开发一个银行的活期存取款业务的处理系统:储户将填好的存/取 款单和存折(含现金)交给银行
工作人员,然后由系统作以下处理 A.业务分类处理:系统首先根据储户所填的存/取款单,确定本次业务的性质,并将存/取款单和
存折(含现金)交下一步处理;
B.存款处理:系统将存款单上的存款金额分别记录在存折和帐目文件中,并将现金存入现金库;最
后将存折还给储户;
C.取款处理:系统将取款单上的取款金额分别记录在存折和帐目文件中,并从现金库提取现金;最
后将现金和存折还给储户。 要求完成下列工作:
(1) 用数据流图描绘该系统的功能需求; (2) 用面向数据流的方法导出系统结构图;
(3) 用你熟悉的一种方法写出模块“获得合理单据”及“分类处理”的算法。 数据流程图 顶层
存取款 存取单、存折 储户 业务处 存折、现金 理系统
一层 存折 存折、存款单
2.存款 处理 1 业务分 存折 D1 帐目 D2 现金帐 类处理
存取单 储户
存折、取款单
26
3.取款 处理
存折(现金)
二层
已处理存折单 已处理存款单 2.1.修2.2.修 合格存折、存款单 改帐 存取单存折 储户 不合格 合格 D1 帐目 D2 现金帐
1.1.审核单1.2.业务分3.2.修改现 单据 单据 3.1.修 合格存折、取款 已处理取款单 改现 已处理存折单 改帐 软件结构图 存取款业务系统 2 2 获得合理单据 分类处理 1 1 2,3 3 4 5 退审存款处理 取款处理 输回入核 单单据据 4 6 6 5 7 7 修改 修改现 修改 修改现 1 存取单、存折 2 合格单据 帐目1 金帐1 帐目2 金帐2 3 不合格单据 4合格存折、存款单 5合格存折、取款单 6 已处理存款单 7 已处理取款单 8/9已处理存折单 模块“获得合理单据”的IPO图 打印存折单
系统名:存取款业务系统。 编 号:1.1。 加工名:审核单据。 模块名:获得合理单据。 被调用:存取款业务系统。 调 用:输入单据、审核单据。 输 入:存取单和存折。 输 出:合格单据。 处 理:(1)读入“存取单和存折”中姓名。 (2)审核单据填写是否正确; 27 若正确,加注“合格”,输出“合格单据”; 否则,加注“不合格”,退出。 模块“分类处理”的IPO图
系统名:存取款业务系统。 编 号:1.2。 加工名:业务分类。 模块名:分类处理。 被调用:存取款业务系统。 调 用:存款处理、取款处理. 输 入:合理单据。 输 出:合格存单与存折或合格取款单与 存折。 ,复核各项数据。 处 理:(1)查询“合理单据” (2)将单据分类。 (3)是合格存单与存折,作存款处理;
2.将如下的基本文件:考生基本情况文件(简称考生情况文件)和考生高考成绩文件(简称考分文件)合并成考生新文件。
考生情况文件 考分文件 准考证号 姓 名 准考证号 通讯地址 考生新文件 姓 名 通讯地址 考 分 准考证号 考 分 试用面向数据结构的Jackson方法完成下列工作 (1)画出输入和输出的数据结构图; (2)画出程序结构图;
(3)写出程序的过程性表示,列出所有操作和条件.
(4)用Jackson伪代码写出与程序结构图对应的过程性表示 (1)输入数据结构图
考生情况文件 考分文件
I I
*
考生记录 考生记录*
准考证号 姓 名 通讯地址 准考证号 考 分
输出数据结构图 考生情况文件
I
考生记录*
28 准考证号 姓 名 通讯地址 考 分
(2) 程序结构图如下 产生新文件
I(1)
处理考生记录*
产生准考证号 产生姓名 产生通讯地址 产生考分
(3)程序的过程性表示,所有操作和条件:
①停止 ⑤生成一条新记录
②打开两个输入文件 ⑥将新记录写入输出文件 ③建立输出文件 ⑦关闭全部文件 ④从输入文件中各读一条记录 I(1)文件结束 把它们分配到程序结构图的适当位置,如图: 产生新文件
分析考生记录 2 3 4 7 1
I(1)
处理考生记录
(4)Jackson伪代码写出的过程性表示 产生新文件seq 打开两个输入文件产生姓名 产生通讯地址 产生考分 5 6 4 产生准靠证号
建立输出文件 从输入文件中各读一条记录
分析考生记录iter until文件结束 处理考生记录seq 产生准靠证号 产生姓名 产生通讯地址 产生考分
生成一条新记录
将新记录写入输出文件
29
从输入文件中各读一条记录
处理考生记录end
关闭全部文件 停止
产生新文件end
模拟试卷二参
一.名词解释
软件生存周期:从软件定义、开发、使用、维护到淘汰的全过程。 数据字典: 描述数据流图中所有命名元素的集合。 详细设计:主要完成各个模块内部的算法和数据结构.
系统测试:将经过测试的子系统装配成一个完整的系统来测试,检验系统是否确实能实
现需求说明书中的功能,以及系统的动态特征是否符合预定要求。
软件工程环境: 能支持开发者按照软件工程的方法,全面完成生存周期中的各项任务要求的环境.
CASE:是计算机辅助软件工程的简称。简单的说,可以将CASE理解为:
CASE=软件工程+自动化工具.
二.填空
1.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。
2.软件生存周期的三个阶段:定义阶段、开发阶段和维护阶段。
3.需求分析的技术主要有:结构化分析技术、面向对象的分析(OOA)技术和原型开发技术。
4.模块具有输入和输出(参数传递)、功能、内部数据结构(局部变量)和程序代码四个特性。
5.面向数据流的设计,考虑问题的出发点是数据流,最终目标是软件的最终SC图;解决问题的焦点
是模块的合理划分,最佳适用范围是概要设计中确定软件的结构.
6.软件维护的种类:完善性维护、适应性维护、纠错性维护和预防性维护。 三.回答问题
1.解决软件危机的途径?
(1) 吸收其它工程项目中积累的丰富经验、科学原理、技术与方法,在开发
软件的过程中应有良好的组织,严格的管理,相互的友好协作; (2) 不断总结经验,探索软件开发中应遵循的原理、过程、技术和方法; (3) 根据不同的应用领域,使用用户常用的自然语言,描述问题,由计算机
自动完成推理和运算,从而解决用户提出的问题,即软件开发工程化的方法。
2.可行性研究包括哪几方面的内容?
(1)技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系
30
统的资源能否满足;
(2)经济可行性:经济效益是否超出开发成本; (3)操作可行性:系统操作在用户内部行得通吗?
(4)法律可行性:新系统开发是否会侵犯他人、集体或国家利益,是否违反国家法律。
3.选择程序设计语言需要考虑的因素?
(1) 选择用户熟悉、便于用户维护的语言;
(2) 选择目标系统的环境中可以提供的编译程序所能选用的语言; (3) 选择可以得到的软件工具,能支持程序开发中可以利用的语言; (4) 根据工程规模的大小、目标系统应用范围; (5) 选择程序员熟悉的语言;
(6) 选择标准化程度高、程序可移植性好的语言;
(7) 根据算法与计算的复杂性、数据结构的复杂性选择;
(8) 根据实时要求系统需要的响应速度和效率选择相应的语言。 4.什么是白盒测试?白盒测试主要采用的技术有哪些?
(1) 测试者了解被测程序的内部结构和处理过程,对程序的所有逻辑路径进
行测试,在不同点检查程序状态,确定实际状态与预期状态是否一致。 (2) 白盒测试主要采用的技术有:路径测试技术和事务处理流程技术,对包
含有大量逻辑判断或条件组合的程序采用基于逻辑的测试技术。 5.软件工程管理的内容
(1) 费用管理:对软件开发进行成本核算,使软件生产按照商品生产的规律办
事;
(2) 质量管理:按项目的质量保证计划,确保各个开发阶段的开发和维护工作
全部按软件工程的规范进行,保证软件产品的质量;
(3) 配置管理:通过对于程序、文档和数据的各种版本所进行的管理,保证资
料的完整性与一致性;
(4) 项目管理:制定《项目实施计划》,按照计划的内容组织和实施软件的工
程化生产。最终目标是以合理的费用和进度,完成计划所规定的软件项目。
6.模块设计的准则:
(1) 改进软件结构, 提高模块性:在对初步模块进行合并、分解和移动的
分析、精化过程中力求提高模块的内聚,降低藕合;
(2) 模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解
性和可维护性;过小的模块,合并到上级模块中;
(3) 软件结构图的深度、宽度、扇入和扇出要适当。一般模块的调用个数不
要超过5个;
(4) 尽量降低模块接口的复杂程度; (5) 设计单入口、单出口的模块。 (6) 模块的作用域应在控制域之内。 四.应用题
31
1.公司的折扣为:
(1) 只对一次交易额在四万元(含四万元)的客户实施折扣;
(2) 如果客户的支付信用好,折扣率为10%;否则要根据客户与公司的业务史
定折扣率;
(3) 如果客户与本公司的交易史在五年以上(含五年),折扣率为5%,否则,折
扣率为2%.
绘制上述问题的决策树和决策表. (S:交易额,单位:万元) 决策树
交易额 支付信用 交易年限 折扣额
好 - - - - - - - - - - - - - - -S*10% S=4 5年 - - - - - -S*5% 折 不好 扣方 5年 - - - - - -S*2% 案 S4 - - - - - - - - - - - - - - - - - - - - - - S*0% 决策表
交易额4万元吗? 条件 支付信用好吗? 交易年限5年吗? 决策 方案 10% 5% 2% 不折扣(0%) Y Y 选 Y N Y 选 Y N N 选 N 选 决策 规则 状态 2.欲开发一个书店的图书预订系统,问题定义为:书店向顾客发征订单,顾客将所填订单交由系统处理;
在处理过程中,根据订单数目和顾客情况将订单分为优先订单和正常订单两种;随时处理优先订单,定
期处理正常订单;最后,系统根据所处理的订单按出版社的要求汇总发给出版社.
请绘制该系统的数据流程图和软件结构图. 数据流程图 顶层
一层
顾客 图书预申请订单 汇总订单 订系统 出版社 F1 分类标准文件 顾客
1.订单2.订单申请订单 合格订单 汇总订单 分类 32 处理 出版社
二层
F3 定期处理订单文件
F1分类标准文件 F5 订单汇总文件 2.1定定期处理订单 期处 正常订 不合格订单 合格订单 1.1订1.2订
单检单分2.2临
2.3定期汇总 申请订单 时处 优先订 临时处理订单 汇总表 顾客
F4 临时处理订单文件 软件结构图
出版社 图书预订子系2 2 6,7 6,7
1 1 2,3 3 4 6 5 7 6,7 8 8 获得订单订订单分类 输出汇总表
输入订单订单审核退回定期处理输入订单临时处理分类汇总打印输出 1 申请订单 2 合理订单 3 不合理订单 4 正常订单 5 优先订单 6 定期处理订单 7 临时处理订单 8 汇总表
模拟试题三参
一、1、数据字典和数据流图2、调试3、工具4、封装性、继承性、多态性5、关键路径
6、设计工具、计划工具7、时间与人员未必能互换8、总体设计
二、过程设计语言、结构化设计方法、盒图、基于构件的软件工程、计算机辅助软件工程、软件配置管理、工程网络技术、面向对象分析、结构化程序设计、面向对象设计
33
三、1、一组具有相同数据结构和相同操作的对象的集合 2、调用被测试模块的模拟模块,或结构图中给出的上级模块
3、一个软件从定义、开发、使用和维护,直到陈旧退役,要经历一个漫长的时期。称为软件的生存周期。
4、每个模块的实现细节对于其他模块来说是隐蔽的。
5、在软件交付使用之后,为了改正错误或满足新的需要而修改软件的过程。 四、1、略,定义,评价标准略 2、略
3、包含、排斥;继承;整体与部分、实例连接。 4、略 5、略
五、处理、流程图;判断;端点(开始与结束);while循环。 六1、在范围内,V(G)=9,流程图略 2、答案不唯一,可根据实际情况理解。略 3、 教授 副教授 讲师 助教 专职 60 50 40 30 20 T F F F T F F F F T F F F T F F F F T F F F T F F F F T F F F T T T T T F F F F X X X X X X X X 教授 50 专职 副教授 40 讲师 30 课时津贴 助教 20 教授 50 兼职 副教授 40 讲师 30 助教 20 判定表 判定树 4、答案不唯一
模拟试题四参
一、1、非直接耦合、功能内聚 2、包含、排斥 3、瀑布模型 4、序言性注释、功能性注释 5、驱动模块、桩模块 6、可维护性
7、顺序、条件、循环、只有一个入口和一个出口 8、发现程序中的错误
二、横道图、数据流图、数据字典、结构化分析方法、结构图、软件配置管理、计算机辅助软件工程、基于构件的软件工程、面向对象分析方法、层次图+输入/处理/输出图
三、1、略 2、略 3、开发、运行、维护和修复软件 和系统方法
34
4、面向对象=对象+类+继承+通信,如果一个软件系统包含这四方面技术,则称这个软件是面向对象的。5、测试是为了发现程序中的错误而执行程序的过程。 四、1、略 2、白盒 测试是针对逻辑结构的,黑盒是针对功能的。略。 3、软件维护,略
4、20世纪60年代中期到70年代中期,略。 5、略 五、
1、因果图法,略 2、略
3、答案不唯一,可以列举相类似的不同测试用例。
35
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务