方式落后(5)开发工具落后(6)软件开发费用不断增加
9、说明结构化程序设计的主要思想是什么? 答:(1)自顶向下、逐步求精的程序设计方法
(2)使用3种基本控制结构、单入口、单出口来构造程序。 10、软件测试包括哪些步骤?说明这些步骤的测试对象是什么? 答:(1)单元测试,测试对象对单元模块
(2)集成测试,测试对象为组装后的程序模块
(3)确认测试,测试对象为可运行的目标软件系统(1分) 11、需求分析与软件设计二个阶段任务的主要区别是什么? 答:需求分析定义软件的用户需求,即定义待开发软件能做什么
软件设计定义软件的实现细节以满足用户需求,即研究如何实现软件。 12、说明软件测试和调试的目的有何区别? 答:测试的目的是判断和发现软件是否有错误 调试的目的是定位软件错误并纠正错误。 13、原型法模型一般适应哪些场合
答:它适合于那些不能预先确切定义需求的软件系统的开发,更适合于那些项目组成员(包括分析员,设计员,程序员和用户)不能很好交流或通信有困难的情况. 14、软件工程的目标是什么? 答:在给定成本,进度的前提下,开发出具有可修改性,有效性,可靠性,可理解性,可维护性,可重用性,可适应性,可移植性,可追踪性和可互操作性并满足用户需求的软件产品. 15、什么是数据流图?其作用是什么?其中的基本符号各表示什么含义?
答:数据流图简称DFD,是SA方法中用于表示系统逻辑模型的一种工具。它以图形的方式描述数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。数据流图有四种基本图形符号:―→‖箭头表示数据流;―○‖圆或椭圆表述加工;―=‖双杠表示数据存储;―‖方框表示数据的源点或终点。 16、什么是确认测试?该阶段有哪些工作? 答:确认测试又称有效性测试。它的任务是检查软件的功能与性能是否与需求规格说明书中确定的指标相符合。确认测试阶段有两项工作,进行确认测试与软件配置审查。<1>确认测试一般是在模拟环境中运用黑盒测试方法,由专门测试人员和用户参加的测试。<2>软件配置审查的任务是检查软件的所有文档资料的完整性、正确性。如果发现遗漏和错误,应补充和改正,同时要编排好目录,为以后的软件维护工作奠定基础。 17、详细设计的基本任务是什么?有哪几种描述方法?
答:详细设计是软件设计的第二阶段,其基本任务有:为每个模块进行详细的算法设计;为模块内的数据结构进行设计;对数据库进行物理设计,即确定数据库的物理结构;其它设计,根据软件系统类型,还可能要进行代码设计、输入/输出格式设计、人机对话设计;编写详细设计说明书;评审。详细描述处理过程常用三种工具:图形、表格和语言。如结构化程序流程图、盒图和问题分析图。IPO图也是详细设计的主要工具之一。表格工具如判定表可作为详细设计中描述逻辑条件复杂的算法。过程设计语言(PDL)是一种用于描述模块算法设计和处理细节的语言工具。5、什么是软件危机?其产生的原因是什么?当软件开发技术的进步不能跟上硬件技术的进步,未能满足发展的要求,致软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。主要表现为:<1>经费预算经常突破,完成时间一再拖延;<2>开发的软件不能满足用户要求;<3>开发的软件可维护性差;<4>开发的软件可靠性差。造成软件危机的原因是由于软件产品本身的特点以
及开发软件的方式、方法、技术和人员引起的。共产生原因主要有以下几方面:<1>软件的规模越来越大,结构越来越复杂;<2>软件开发管理困难而复杂;<3>软件开发费用不断增加;<4>软件开发技术落后;<5>生产方式落后;<6>开发工具落后,生产率提高缓慢。6、CASE工作台有哪些分类?一个CASE工作台是一组工具集,支持像设计、实现或测试等特定的软件开发阶段。工作台工具能通过共享文件、共享仓库或共享数据结构来集成。它能支持大多数的软件过程活动。工作台有:<1>程序设计工作台;<2>分析和设计工作台;<3>测试工作台;<4>交叉开发工作台;<5>配置管理(CM)工作台;<6>文档工作台<7>项目管理工作台。7、IDEF0方法有什么特点?<1>采用方框和箭头等简单的图形符号描述系统的活动和数据流,描述活动所受到的约束条件及实现机制。从侧面清楚的反映了系统的功能。故IDEF0图宜全为正式文档。<2>采用严格的自顶向下、逐层分解的方式建立系统功能模型。顶层确定系统范围,采用抽象原则,然后有控制的逐步展开有关活动的细节,符合SA方法的分析策略。同时,IDEF0规定每张图至少有3个、最多有6个方框,上界6保证采用层次性描述复杂问题的可理解性,下界3保证分解有意义。 18、软件维护的特点是什么?
答:主要体现在三个方面:<1>非结构化维护和结构化维护。软件的开发过程对软件的维护有很大的影响。若不采用软件工程的方法开发软件,则软件只有程序而无文档,维护工作非常困难,这是一种非结构化的维护。若采用软件工程的方法开发软件,则各阶段都有相应的文档,容易进行维护工作,这是一种结构化的维护。<2>维护的困难性。软件维护的困难性是由于软件需求分析和开发方法的缺陷。软件生存周期中的开发阶段没有严格而有科学的管理和规划,就会引起软件运行时的维护困难。<3>软件维护的费用。软件维护的费用在总费用中的比重是在不断增加的,这是软件维护有形的代价。另外还有无形的代价,即要占用更多的资源。软件维护费用增加的主要原因是软件维护的生产率非常低。 19、什么是CASE?CASE工具有哪些分类?
答:CASE是一组工具和方法的集合,可以辅助软件开发生命周期各阶段进行软件开发。从学术研究角度讲,CASE是多年来在软件开发管理、软件开发方法、软件开发环境和软件工具等方面研究和发展的产物。CASE把软件开发技术、软件工具和软件开发方法集成到一个统一而一致的框架中,并且吸引了CAD(计算机辅助设计)、软件工程、操作系统、数据库、网络和许多其它计算机领域的原理和技术。因而,CASE领域是一个应用集成和综合的领域。从产业角度讲,CASE是种类繁多的软件开发和系统集成的产品及软件工具的集合。CASE分类:<1>CASE技术种类CASE系统所涉及到的技术有两类:一类是支持软件开发过程本身的技术;另一类是支持软件开发过程管理的技术。从CASE系统产生方式来看,还有一种特殊的CASE技术,即元——CASE技术。他是生成CASE系统的生成器所采用的技术。该生成器可用来创建支持软件开发过程活动及过程管理的CASE系统。<2>CASE工具的分类对CASE工具分类的标准可分为:①功能。功能是对软件进行分类的最常用的标准。②支持的过程。根据支持的过程,工具可分为设计工具、编程工具、维护工具等。③支持的范围。根据支持的范围,可分为窄支持、较宽支持和一般支持工具。窄支持指支持过程中特定的任务,较宽支持是指支持特定过程阶段;一般支持是指支持覆盖软件过程的全部阶段或大多数阶段。1993年,Fuggetta根据CASE系统对软件过程的支持范围,提出CASE系统可分为三类:①支持单个过程任务的工具。工具可能是通用的,或者也可能归组到工作台。②工作台支持某一过程所有活动或某些活动。他们一般以或多或少的集成度组成工具集。③环境支持软件过程所有活动或至少大部分。他们一般包括几个不同的工作台,将这些工作台以某种方式集成起来。
20、说明容错软件的定义与容错的一般方法。
答:归纳容错软件的定义,有以下四种:⑴规定功能的软件,在一定程序上对自身错误的作
用(软件错误)具有屏蔽能力,则称此软件为具有容错功能的软件。⑵规定功能的软件,在一定程序上能从错误状态自动恢复到正常状态,则称之为容错软件。⑶规定功能的软件,在因错误而发生错误时,仍然能在一定程度上完成预期的功能,则把该软件称为容错软件。⑷规定功能的软件,在一定程度上具有容错能力,则称之为容错软件。实现容错技术的主要手段是冗余,通常冗余技术分为四类。⑴结构冗余。结构冗余是通常用的冗余技术。按其工作方式,它分为静态、动态和混合冗余三种。⑵信息冗余。为检查或纠正信息在运算或传输中的错误须外加一部分信息,这种现象称为信息冗余。⑶时间冗余。是指以重复执行指令(指令复执)或程序(程序复算)来消除瞬时错误带来的影响。⑷冗余附加技术。是指为实现上述冗余技术所需的资源和技术。包括程序、指令、数据、存放和调动他们的空间和通道等。 21、软件概要设计阶段的基本任务是什么? 答:⑴设计软件系统结构(简称软件结构),具体为:①采用某种设计方法,将一个复杂的系统按功能划分成模块。②确定每个模块的功能。③确定模块之间的调用关系。④确定模块之间的接口,即模块之间传递的信息。⑤评价模块结构的质量。⑵数据结构及数据库设计,汉数据结构的设计及数据库的设计。⑶编写概要设计文档。主要有:概要设计说明书;数据库设计说明书;用户手册;修订测试计划。⑷评审。5、快速原型模型有几种?各有何特点?根据原型的不同作用,有三类原型模型:⑴探索型原型。这种类型的原型模型是把原型用于开发的需求分析阶段,目的是要弄清用户的需求,确定所期望的特性,并探索各种方案的可行性。它主要针对开发目标模糊,用户与开发着对项目都缺乏经验的情况,通过对原型的开发来明确用户的需求。⑵实验型原型。这种原型主要用于设计阶段,考核实现方案是否合适,能否实现,对于一个大型系统,若对设计方案心中没有把握时,可通过这种原型来证实设计方案的正确性。⑶演化型原型。这种原型主要用于及早向用户提交一个原型系统,该原型系统或者包含系统的框或者包含系统的主要功能。在得到用户的认可后,将原型系统不断扩充演变为最终的软件系统,它将原型的思路扩展到软件开发的全过程。 22、在划分软件生存周期阶段时,应遵循的基本原则是什么?
答:软件生存周期的各个阶段有不同的划分。软件规模、种类、开发方式、开发环境以及开发使用方法都影响软件生存周期的划分。在划分软件生存周期阶段时,应遵循的一条基本原则是各阶段的任务应尽可能相对独立,同一阶段各项目任务的性质尽可能相同,从而降低每个阶段任务的复杂程度,简化不同阶段之间的联系,有利于软件项目开发的组织管理。 23、请说明软件文档的作用?软件开发项目生存期各阶段都包含哪些文档?
答:软件文档的作用是:提高软件开发过程的能见度;提高开发效率;作为开发人员阶段工作成果和结束标志;记录开发过程的有关信息便于使用与维护;提供软件运行、维护和培训有关资料;便于用户了解软件功能、性能。软件开发项目生存期各阶段应包括得文档以及与各类人员的关系如下:可行性研究报告、项目开发计划、软件需求说明书、数据要求说明书、测试计划、概要设计说明书、详细设计说明书、用户手册、操作手册、测试分析报告、开发进度月报、项目开发总结、程序维护手册(维护修改建议)。 24、软件开发成本估算方法有哪几种?
答:<1>自顶向下估算方法。估算人员参照以前完成的项目所耗费的总成本(或总工作量),来推算将要开发的软件的总成本(或总工作量),然后把它们按阶段、步骤和工作单元进行分配,这样方法称为自顶向下的估算方法。<2>自底向上估算方法。自底向上估算方法是将待开发的软件细分,分别估算每一个子任务所需要的开发工作量,然后将它们加起来,得到软件的总开发量。<3>差别估算方法。差别估算是将开发项目与一个或多个已完成的类似项目进行比较,找出与某个相类似项目的若干不同之处,并估算每个不同之处对成本的影响,导出开发项目的总成本。<4>专家估算法。依靠一个或多个专家对要求的项目做出估算。<5>类推估算法。<6>算式估算法。
25、简述SA方法的优缺点? 答:结构化分析方法是软件需求分析中公认的、有成效的、技术成熟、使用广泛的一种方法,它较适合于开发数据处理类型软件的需求分析。该方法利用图形等半形式化工具表达需求,简明、易读,也易于使用,为后一阶段的设计、测试、评价提供了有利的条件。但SA方法也存在有不足之处:⑴传统的SA方法主要用于数据处理方面的问题,主要工具DFD体现了系统―做什么‖的功能,但它仅是一个静态模型,没有反映处理的顺序,即控制流程。因此,不适合描述实时控制系统。⑵SA方法使用DFD在分析与描述―数据要求‖方面是有限的,DFD应与数据库技术中的实体联系图(ER图)结合起来。⑶DFD不是和描述人机界面系统的需求。SA方法则对这一部分用自然语言作补充,对这类系统可采取其它的分析方法。⑷为了更精确地描述软件需求,提高软件系统的可靠性、安全性,也便于实现自动化,SA方法可与形式化方法结合起来。
26、什么是软件工程?它的目标和内容是什么?
答:软件工程是一种用科学知识和技术原理来定义、开发、维护软件的一门学科。软件工程是一门工程性学科,目的是成功的建造一个大型软件系统,所谓成功是要达到以下几个目标:付出较低的开发成本,达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。软件工程研究的主要内容是软件开发技术和软件开发管理两方面,在软件开发技术中,主要研究软件开发方法、软件开发过程、软件开发工具和环境。在软件开发管理中,主要研究软件管理学、软件经济学、软件心理学等。 27、简述容错系统的设计过程?
答:容错系统的设计过程包括以下设计步骤:⑴安设计任务要求进行常规设计,尽量保证设计的正确。⑵对可能出现的错误分类,确定实现容错的范围。⑶按照成本—效益最优原则,选用某种冗余手段来实现对各类错误的屏蔽。⑷分析或验证上述冗余结构的容错效果。如果效果没有达到预期的程度,则应重新进行冗余结构设计。如此重复,直到有一个满意的结果为止。
28、渐增模型有几种?各有何特点?
答:渐增模型是瀑布模型的变种,它有两类:⑴增量构造模型。它在瀑布模型基础上,对一些阶段进行整体开发,对另一些阶段进行增量开发。也就是说在前面的开发阶段按瀑布模型进行整体开发,后面的开发阶段按增量方式开发。⑵演化提交模型。它在瀑布模型基础上,所有阶段都进行增量开发,也就是说不仅是增量开发,也是增量提交。 29、试述系统开发的生命周期。 答:系统开发是管理信息系统建设中最重要的一个阶段,从项目开发开始到结束的整个过程,称为系统开发的生命周期。系统开发的生命周期一般分为以下阶段:⑴系统分析。这一阶段的主要任务是明确用户的信息需求,提出新系统的逻辑方案。需要进行的工作有系统的初步调查,可行性研究,现行系统的详细调查及新系统逻辑模型的提出等。⑵系统设计。这一阶段的主要任务是根据新系统的逻辑方案进行软、硬件系统的设计,其中包括总体结构设计、输出设计、输入设计、处理过程设计、数据存储设计和计算机系统方案的选择等。⑶系统实施。这一阶段将设计的系统付诸实施,主要工作有软件的程序编制与软件包的购置、计算机与通讯设备的购置、系统的安装、调试与测试、新旧系统的转换等。 30、程序设计语言的三种类型和特点是什么? 答:
? 机器语言、汇编语言:依赖于机器,面向机器 ? 高级语言:独立于机器,面向过程或面向对象
? 面向问题语言:独立于机器,非过程式语言(4GL)
31、软件测试过程一般可划分为哪几个主要阶段 ? 单元测试 ? 集成测试 ? 验收测试 ? 系统测试
31、螺旋模型的适应场合有哪些? 答:
适应场合:支持需求不明确、特别是大型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型。
32、软件生存周期 答:
软件从定义开始,经过开发、使用和维护,直到最终退役的全过程称为软件生存周期。 33、软件开发风险分析实际上就是贯穿于软件工程过程中的一系列风险管理步骤,它包括哪些主要内容? 答:
1) 风险标识 2) 风险估算 3) 风险评价
4) 风险驾驭和监控。
34、软件生存周期中的软件开发过程由概要设计和其它哪几个阶段组成? 1) 详细设计 2) 实现 3) 组装设计 4) 验收测试
35、软件工程的目标是什么?
答:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需求的软件产品。 36、软件工程必须遵循那些基本原则? 答: 1) 抽象
2) 信息隐藏 3) 模块化 4) 局部化 5) 一致性 6) 完全性 7)可验证性
37、软件工程的原则有抽象、信息隐藏、模块化和其他那些内容? 答:
1) 局部化 2) 一致性
软件工程习题及参考答案
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)