12、简述两种不同集成测试策略的比较? 13、什么是类?类与对象间是什么关系? 14、面向对象方法特征有哪些?
15、可行性研究的目的?应该从哪些方面研究目标系统的可行性? 16、什么是软件工程?构成软件工程的要素是什么? 17、简述软件测试的步骤? 18、对象有哪几种定义?
19、类—&—对象间的关系可以概括为哪三种? 20、简述渐增模型的特点? 21、总体设计的过程如何? 22、有几种效益的分析方法? 23、面向对象方法的主要优点有哪些?
五、论述题
1、假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。对于每个需要再次定货的零件应该列出下述数据:零件编号,零件名称,定货数据,目前价格,主要供应者,次要供应者。零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就应该再次定货。画出上述定货系统的数据流图?
2、根据统计,软件维护工作量占软件整个生存周期工作量的10%~70%,这个比例随着时间的退役还在增加,为什么软件维护需要这么大的工作量?
3、某仓库的业务工作流程如下:职工填写领料单,主任审查签名,职工拿单领料,管理员审查单是否有签名,填写是否正确,不正确的退回,正确则给料并修改库存清单,产生定货报表,当某零件的数量低于临界值时,登记信息,下班和前为采购部门采购订单。请画出数据流图表示。
4、 计算机技术已不再是单一学科的发展,它是许多相关学科的融合和渗透。举例说明你所熟悉的这方面的技术、方法和应用。
5、某商店派出采购员分赴全国十大城市采购100类畅销产品,共有10张“采购单”,每张“采购单”中列出这100类产品的采购量,要求汇总成一张总的“进货表”,并计算每类产品的平均价格?(用结构图表示) 6、为什么说软件测试是软件开发中不可缺少的重要的环节,但不是软件质量保证的“安全网”? 7、画出下列伪码N—S图。 START
IF p1 THEN
11
WHILE q DO f END DO
ELSE IF p2 g
END IF
WHILE p3 DO h END DO END IF STOP
8、测试的具体任务是什么?为什么说调试是软件开发过程中最艰巨的任务?151 9、 将下列PAD图转换成N—S图。
10、 影响软件维护工作的因素有哪些?并举例说明?
复习题参考答案
三、名词解释
1、软件:在计算机系统中,与硬件相互依存的逻辑部件,它由程序、数据及相关文档组成。
2、软件工程:是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。 3、数据字典:是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
4、模块化:是把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集总起来组成一个整体,可能完成指定的功能满足问题的需求。
5、类:对具有相同数据和相同操作的一组相似对象的定义。
6、软件危机: 是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 7、软件维护:在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程. 8、继承:子类自动地共享基类中定义的数据和方法的机制.
9、投资回收期: 就是使累计的经济效果等于最初投资的需要的时间。
10、结构化分析方法: 就是面向数据流自顶向下逐步求精进行需求分析的方法。
11、软件的生命周期:一个软件从定义、开发、使用和维护,直到最终被废弃所经历的一系列时期。 12、投资回收期:就是使累计的经济效果等于最初投资的需要的时间。 13、结构化分析方法:就是面向数据流自顶向下逐步求精进行需求分析的方法。
12
14、模块:数据说明、可执行语句等程序对象的集合,它是单独命名的而且可通过名字来访问。 15、宽度:是软件结构内同一个层次上的模块总数的最大值。
16、事务流:数据沿输入通路到达一个处理,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这类数据流应该划分为一类特殊的数据流,称为事务流。 17、耦合:衡量不同模块彼此间互相依赖的紧密程度。
18、事件:是某个特定时刻所发生的事情,它是对引起对象从一种状态转换到另一种状态的现实世界中的事件的抽象。
19、函数重载:指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字。 20、存根模块:用以模拟被测模块运行过程中所调用模块或是被测模块下层模块的替代程序。
21、变换流:信息沿输入通呼进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统,当数据流图具有这些特征时,这种信息流就叫变换流。
22、内聚:衡量一个模块内部各个元素彼此结合的紧密程度 23、扇出:是一个模块直接控制的模块数目。
24、多态性:子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。 25、驱动模块:用以模拟被测模块的上级调用模埠,或向被测模块输以数据输出一些必要信息,调用被测模块。 四、简答题
1、答:软件定义时期,开发时期,维护时期。 定义时期的任务:问题定义;可行性研究;需求分析。
开发时期的任务:总体设计;详细设计;编码与单元测试;综合测试。 维护时期的任务:使软件持久地满足用户的需要。 2、答:软件定义时期,开发时期,维护时期。 定义时期的任务:问题定义;可行性研究;需求分析。
开发时期的任务:总体设计;详细设计;编码与单元测试;综合测试。 维护时期的任务:使软件持久地满足用户的需要。
3、答:结构程序设计:是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。顺序,选择,循环。
4、答:1、名字说明 2、类型说明 3、初始化 4、程序对象的局部性 5、程序模块
6、循环控制结构 7、分支控制结构 8、异常处理 9、独立编译
5、答:任务是在软件投入生产性运行之前,尽可能多地发现软件中的错误。
13
与测试的区别:测试是为了发现软件中的错误,而调试是诊断并改正错误。
6、管理复审:复查各个阶段的经费、开销、成本以及进度,投资回收期前景的展望。
技术审查:对每个阶段进行严格的审查,从而保证了各个阶段技术的正确性,防上错误的积累和复审。 7、答:(1)复查系统规模和目标。 (2)研究目前正在使用的系统。 (3)导出新系统的高层逻辑模型。 (4)重新定义问题。
(5)导出和评价供选择的解法。 (6)推荐行动方针。 (7)草拟开发计划。 (8)书写文档提交审查
8、答:(1)一致性,即所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。 (2)完整性,需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。 (3)现实性,指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。 (4)有效性,必须证明需求是正确有效的,确实能解决用户面对的问题。 9、对象的特点?
答:(1)以数据为中心。(2)对象是主动的。(3)实现了数据封装。(4)本质上具有并行性。 (5)模块独立性好。
10、答:(1)描述系统数据结构的对象模型。(2)描述系统控制结构的动态模型。(3)描述系统功能的功能模型。
11、答:模块的作用域定义为受该模块内一个判定影响的所有模块的集合。模块的控制域是这个模块本身以及所有直接或间接从属于它的模块的集合。
12、答:自顶向下测试方法主要优点是不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能在早期发现上层模块的接口错误。自顶向下测试方法的主要缺点是需要存根程序,可能遇到与此相联系的测试困难,低层关键模块中的错误发现较晚,而且用这种方法在早期不能充分展开人力。自底向上测试言法的优缺点与自顶向下测试方法的优缺点刚好相反。
13、答:类是对具有相同数据和相同操作的一组相似对象的定义。类是对具有相同属性和行为的一个或多个对象的描述,而对象是某个特定类所描述的一个具体对象。 14、答:(1)客观世界是由各种对象组成的。
(2)所有对象都划分成各种对象类,每个对象类都定义了一组数据和一组方法。 (3)按照子类与父类的关系,把若干个对象类组成一个层次结构的系统。
14
(4)对象彼此之间仅能通过传递消息互相联系。
15、答:用最小的代价在尽可能短的时间内确定问题是否能够解决。
(1)技术可行性 (2)经济可行性 (3)操作可行性 (4)法律可行性
16、答:软件工程:是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。要素是:方法、工具、过程。
17、答:(1)模块测试(2)子系统测试(3)系统测试(4)验收测试(5)平行运行
18、答:(1)对象是具有相同状态的一组操作的集合。(2)对象是对属性值和操作的封装。(3)对象::=
19、答:1、归纳关系:它反映了一个类与若干个互不相容的子类之间的分类关系。 2、组合关系:它反映了对象之间的构成关系。
3、关联关系:反映对象之间相互依赖、相互作用的关系。
20、答:(1)在整个开发过程中需求都可能有变化。(2)对应用领域不熟悉。 (3)高风险项目(4)用户完全参与到整个开发过程中。 (5)使用面向对象语言或第四代语言。
21、答:(1)设想供选择的方案。(2)选取合理的方案。
(3)推荐最佳方案。(4)功能分解。(5)设计软件结构。(6)数据库设计。 (7)制定测试计划(8)书写文档(9)审查和复审
22、答:(1)货币的时间价值(2)投资回收期(3)纯收入(4)投资回收率 23、答:(1)与人类习惯的思维方法一致。
(2)稳定性好。(3)可重用性好。(4)可维护性好。 五、论述题
2、答 :(1)在任何大型程序的使用期间,用户必然会发现程序错误,并且把他们遇到的问题报告给维护人员。我们把诊断和改正错误的过程称为改正性维护。
(2)计算机科学技术领域的各个方面都在迅速进步,经常推出新的操作系统或旧的系统的修改版本,时常增加或修改外部设备和其他系统部件;另一方面,应用软件的使用寿命却很容易超过十年,远远长于最初开发这个软件时的运行环境的寿命。因此为了和变化了的环境适当的配合就需要进行修改软件的活动。 (3)在使用软件的过程中用户往往提出增加新功能或修改已有功能的建议,还可能提出一般性的改进意见。为了满足这类要求需要进行完善性维护。
(4)当为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件。
15