1、湖南科技大学建筑与城乡规划学院 地理信息系统1BY:落夜一、 何谓软件生命周期,它分为哪些阶段(P11)答:同 任 何 事 物 一 样 , 一 个 软 件 产 品 或 软 件 产 品 也 要 经 历 孕 育 、 诞 生 、 成 长 、成 熟 、 衰 亡 等 阶 段 , 一 般 把 软 件 从 开 始 定 义 到 最 后 停 止 使 用 的 整 个 时 期 称 为软 件 生 命 周 期 。 软件生命周期由软件定义、软件开发和运行维护三个时期组成。每个时期有进一步划分成若干个阶段:1. 软件定义时期划分为三个阶段:问题定义、可行性研究和需求分析2. 开发时期:总体设计、详细设计、编码和单元测试、综
2、合测试。3. 维护时期:主要任务是使软件持久地满足用户的需要。二、 画出实际的瀑布模型(P16 图 1.3)三、 画出快速原型模型 (P17 图 1.4)湖南科技大学建筑与城乡规划学院 地理信息系统2BY:落夜四、 画出增量模型(P18 图 1.5)五、 画出简化的螺旋模型(P20 图 1.7)湖南科技大学建筑与城乡规划学院 地理信息系统3BY:落夜六、 画出喷泉模型(P22 图 1.9)湖南科技大学建筑与城乡规划学院 地理信息系统4BY:落夜七、 可行性研究的工作过程及内容(P37)答:1、复查系统规模和目标;2、研究目前正在使用的系统;3、导出新系统的高层逻辑模型;4、进一步定义问题;5、
3、导出和评价供选择的解法;6、推荐行动方针;7、草拟开发计划;8、书写文档提交审查。可行性研究的内容:通过导出系统的逻辑模型,然后从逻辑模型出发,研究技术可行性、经济可行性(成本/效益分析)和操作可行性。必要时还包括法律、社会效益等更广泛的方面的可行性。八、 可行性研究的目的是什么?要如何进行? (P36)答:可行性研究的目的:就是用最小的代价在尽可能短的时间内确定问题是够解决。进行步骤:1、复查系统规模和目标;2、研究目前正在使用的系统;3、导出新系统的高层逻辑模型;4、进一步定义问题;5、导出和评价供选择的解法;6、推荐行动方针;7、草拟开发计划;8、书写文档提交审查。九、 需求分析的任务是
4、什么?进行需求分析时要重点考虑哪些方面的问题? (P56)该题可简答,去掉/湖南科技大学建筑与城乡规划学院 地理信息系统5BY:落夜答:需求分析的任务不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。1、 确定对系统的综合要求;2、分析系统的数据要求;3、导出系统的逻辑模型;4、修正系统开发计划。/一、 确定对系统的综合要求1. 功能需求这方面的需求指定系统必须提供的服务。通过需求分析应该划分出系统必须完成的所有功能。2. 性能需求性能需求指定系统必须满足的定时约束或容量约束,通常包括速度(响应时间)、信息量速率、主存容量、磁盘容
5、量、安全性等方面的需求。3. 可靠性和可用性需求可靠性需求定量地指定系统的可靠性。可用性与可靠性密切相关,它量化了用户可以使用系统的程度。4. 出错处理需求这类需求说明系统对环境错误应该怎样响应。例如,如果它接收到从另一个系统发来的违反协议格式的消息,应该做什么?注意,上述这类错误并不是由该应用系统本身造成的。5. 接口需求接口需求描述应用系统与它的环境通信的格式。常见的接口需求有:用户接口需求;硬件接口需求;软件接口需求;通信接口需求。6. 约束设计约束或实现约束描述在设计或实现应用系统时应遵守的限制条件。在需求分析阶段提出这类需求,并不是要取代设计(或实现)过程,只是说明用户或环境强加给项
6、目的限制条件。常见的约束有:精度;工具和语言约束;设计约束;应该使用的标准;应该使用的硬件平台。7. 逆向需求逆向需求说明软件系统不应该做什么。理论上有无限多个逆向需求,我们应该仅选取能澄清真实需求且可消除可能发生的误解的那些逆向需求。8. 将来可能提出的要求应该明确地列出那些虽然不属于当前系统开发范畴,但是据分析将来很可能会提出来的要求。注意:举例让学生理解:这样做的目的是,在设计过程中对系统将来可能的扩充和修改预做准备,以便一旦确实需要时能比较容易地进行这种扩充和修改。二、分析系统的数据要求任何一个软件系统本质上都是信息处理系统,系统必须处理的信息和系统应该产生的信息在很大程度上决定了系统
7、的面貌,对软件设计有深远影响,因此,必须分析系统的数据要求,这是软件需求分析的一个重要任务。分析系统的数据要求通常采用建立数据模型的方法(举例)。湖南科技大学建筑与城乡规划学院 地理信息系统6BY:落夜三、导出系统的逻辑模型综合上述两项分析的结果可以导出系统的详细的逻辑模型,通常用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型。四、 修正系统开发计划根据在分析过程中获得的对系统的更深入更具体的了解,可以比较准确地估计系统的成本和进度,修正以前制定的开发计划。/需要重点考虑的方面:1、一致性:所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。2、完整性:需求
8、必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。3、现实性:指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。4、有效性:必须证明需求是正确有效的,确实能解决用户面对的问题。十、 典型的总体设计过程包括哪些步骤?(P91)答:典型的总体设计过程包括下述 9 个步骤:1、设想供选择的方案;2、选取合理的方案;3、推荐最佳方案;4、功能分解;5、设计软件结构;6、设计数据库;7、制定测试计划;8、书写文档;包括(1)系统说明、(2)用户手册、 (3)测试计划、 (4)详细的实现计划、 (5)数据库涉及结果;9、审查和复查。十一、 总体设计的主要任务是什么?总体设计的主要过程有
9、哪些?(P91 )答:总体设计的主要任务:划分出组成系统的物理元素程序、文件、数据库、人工过程和文档等等;设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。总体设计过程通常由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构。主要过程包括以下:系统设计阶段:1、设想供选择的方案;2、选取合理的方案;3、推荐最佳方案;结构设计阶段:1、功能分解;2、设计软件结构 3、设计数据库;4、制定测试计划;5、书写文档;6、审查和复查。十二、 何谓耦合?有哪些类型?软件设计应该取哪种类型? (P97 )答:耦合是对一个软件结构内不同模块
10、之间互联程度的度量。根据模块间耦合程度的强弱分为:数据耦合、控制耦合、特征耦合、公共环境耦合和内容耦合五类。软件设计时应该尽量选取数据耦合。十三、 何谓内聚?有哪些类型?软件设计应该取哪种类型?湖南科技大学建筑与城乡规划学院 地理信息系统7BY:落夜(P98 ) 答:内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。根据模块内各个元素结合的紧密程度分为:偶然内聚、逻辑内聚、时间内聚、过程类聚、通信内聚、顺序内聚和功能内聚七类。其中前四个属于低内聚,最后两个属于高内聚,剩下两个属于中内聚。软件设计时应该力求做到高内聚。十四、 何谓白盒测试和黑盒测试?(P151)
11、答:黑盒测试:又称为功能测试或数据驱动测试,其测试是把程序看作是一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息(例如,数据库或文件)的完整性。白盒测试:它与黑盒测试相反,它的前提是可以把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。白盒测试又称为结构测试或逻辑驱动测试。十五、 单元测试要着重从哪几个方面进行。 (
12、P153)答:在单元测试期间着重从下述 5 个方面对模块进行测试:1、模块接口:首先应该对通过模块接口的数据流进行测试,如果数据不能正确地进出,所有其他测试都是不切实际的。内部检查:传输参数的数目、属性、次序是否匹配;全程变量的定义是否一致;只做输入的变元有无被修改等。外部检查:打开、结束、关闭文件的操作;文件和属性;I/O 错误处理;输出拼写等。2、局部数据结构:对于模块来说,局部数据结构是常见的错误来源。应该仔细设计测试方案,以便发现局部数据说明、初始化、默认值等方面的错误。3、重要的执行通路:由于通常不可能进行穷尽测试,因此,在单元测试期间选择最有代表性、最可能发现错误的执行通路进行测试
13、就是十分关键的。4、出错处理通路:好的设计应该能预见出现错误的条件,并且设置适当的处理错误的通路,以便在真的出现错误时执行相应的出错处理通路或干净地结束处理。着重测试的错误有:(1) 对错误的描述是难以理解的;(2) 记下的错误与实际遇到的错误不同;(3) 在对错误进行处理之前,错误条件已经引起系统干预;(4) 对错误的处理不正确;(5) 描述错误的信息不足以帮助确定造成错误的位置。5、边界条件:单元测试中最后,也可能是最重要的任务,因为软件常在其边界失效。湖南科技大学建筑与城乡规划学院 地理信息系统8BY:落夜十六、 何谓系统测试?系统测试又称为什么测试?(P152)答:系统测试是把经过测试
14、的子系统装配成一个完整的系统来测试,检查整个系统是否能正确、稳定运行。 (在这个过程中不仅应该发现设计和编码的错误,还应该验证系统确实能提供需求说明书中指定的功能,而且系统的动态特性也符合预定要求。 )系统测试兼有检测和组装两重含义,通常称为集成测试。十七、 验收测试的主要目标是什么?主要特点是什么?(P160)答:验收测试的主要目标是:通过测试和调试验证软件能否满足所有功能需求,能否达到每个性能需求,文档资料是否准确而完整,即验证软件的有效性。验收测试的主要特点:必须有用户积极参与,以用户为主,由用户参与设计测试用例,使用用户界面输入测试数据,并分析测试的输出结果(一般采用实际数据测试) ,
15、且测试之前系统已通过了系统测试。十八、 测试过程由哪些步骤组成?并分别加以说明。 (P151)答:测试过程分为以下几个步骤:1、 模块测试:把每个模块作为一个单独的实体来测试,消除每个模块的逻辑和功能错误,相当于分调;2、 子系统测试:子系统测试是把经过单元测试的模块放在一起形成一个子系统来测试,测试模块间的接口和各模块间的联系,相当于联调;3、 系统测试:系统测试是把经过测试的子系统装配成一个完整的系统来测试,检查软件是否能正确、稳定运行,同时还验证系统确实能提供需求说明书中指定的功能,而且系统的动态特性也符合要求。4、 验收测试:验收测试把软件系统作为单一的实体进行测试,测试内容与系统测试
16、基本类似,但是它是在用户积极参与下进行的,而且可能主要使用实际数据(系统将来要处理的信息)进行测试;5、 平行运行:同时运行新开发出来的系统和将被它取代的旧系统,以便比较新旧两个系统的处理结果。十九、 自顶向下集成步骤(P158)答:第一步:对主控制模块进行测试,测试时用存根程序代替所有直接附属于主控制模块的模块;第二步:根据选定的结合策略(深度优先或宽度优先) ,每次用一个实际模块代换一个存根程序(新结合进来的模块往往又需要新的存根程序) ;第三步:在结合进一个模块的同时进行测试;第四步:为了保证加入模块没有引起新的错误,可能需要进行回归测试(即,全部或部分地重复以前做过的测试) ;第五步:
17、从第二步开始不断地重复进行上述过程,直到构造起完整的软件结构为止。二十、 自底向上的结合策略(P158)湖南科技大学建筑与城乡规划学院 地理信息系统9BY:落夜答:自底向上测试从“ 原子 ”模块(即在软件结构最低层的模块)开始组装和测试。第一步:把低层模块组合成实现某个特定的软件子功能的族;第二步:写一个驱动程序(用于测试的控制程序) ,协调测试数据的输入与输出;第三步:对由模块组成的子功能族进行测试;第四步:去掉驱动程序,沿软件结构自下向上移动,把子功能族组合起来形成更大的子功能族。二十一、 逻辑覆盖包括哪些内容?(P162)答:逻辑覆盖是对一系列测试过程的总称,这组测试过程逐渐进行越来越完
18、整的通路测试。包括以下内容:1、 语句覆盖:选择足够多的测试数据,使被测程序中每个语句至少执行一次;2、 判定覆盖:不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次,也就是每个判定的每个分支都至少执行一次;3、 条件覆盖:不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果;4、 判定/条件覆盖:选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果;5、 条件组合覆盖:要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次;6、 点覆盖:要求选取足够多的测试数据,使
19、得程序执行路径至少经过流图的每个结点一次;7、 边覆盖:要求选取足够多的测试数据,使得程序执行路径至少经过流图中每条边一次;8、 选取足够多的测试数据,使得程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次) 。二十二、 控制结构测试主要包括哪些方面?(P165)/答:主要包括以下几个方面:1、 基本路径测试:首先计算程序的环形复杂度,并用该复杂度为指南定义执行路径的基本集合,从该基本集合导出的测试用例可以保证程序中的每条语句至少执行一次,而且每个条件在执行时都将分别取真、假两种值。2、 条件测试:检查程序模块中包含的逻辑条件是否存在错误。3、 循环测试:白盒测试的一
20、种,专注于测试循环结构的有效性。二十三、 设计黑盒测试方案时,主要应该考虑哪些方面的问题?湖南科技大学建筑与城乡规划学院 地理信息系统10BY:落夜(P172 )答:设计黑盒测试方案时,应该考虑下述问题:1、 怎样测试功能的有效性?2、 哪些类型的输入可构成好测试用例?3、 系统是否对特定的输入值特别敏感?4、 怎样划定数据类的边界?5、 系统能够承受什么样的数据率和数据量?6、 数据的特定组合将对系统运行产生什么影响?二十四、 软件的可靠性和可用性以及他们的区别(P179)答:软件的可靠性:软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。软件的可用性:软件可用性是程
21、序在给定的时间点,按照规格说明书的规定,成功地运行的概率。可靠性和可用性之间的主要差别是:可靠性意味着在 0 到 t 这段时间间隔内系统没有失效,而可用性只意味着在时刻 t,系统是正常运行的。二十五、 决定软件可维护性的因素有哪些?(P194)答:决定软件可维护性的因素主要有下述 5 个:1、 可理解性:表现为外来读者理解软件的结构、功能、接口和内部处理过程的难易程度。2、 可测试性:诊断和测试的容易程度取决于软件容易理解的程度。良好的文档对诊断和测试是至关重要的,此外,软件结构、可用的测试工具和调试工具,以及以前设计的测试过程也都是非常重要的。3、 可修改性:软件容易修改的程度和总体设计时的设计原理和启发规则直接有关。4、 可移植性:把程序从一种计算环境(硬件配置和操作系统)转移到另一种计算环境的难易程度。5、 可重用性:指同一事物不做修改或稍加改动就在不同环境中多次重复使用。二十六、 现要设计一个教学管理系统,系统中有三个主要对象:老师,学生,课程。请画出其 ER 图。 (P64)