1、填空1软件测试的目的是尽可能多地发现软件中存在的 错误 ,将 测试结果 作为纠错的依据。 2测试阶段的基本任务是根据软件开发各阶段的 和程序的 ,精心设计一组 ,利用这些实例执行 ,找出软件中潜在的各种 和 。3测试用例由 和预期的 两部分组成。4软件测试方法一般分为两大类: 方法和 方法。5动态测试通过 发现错误。根据 的设计方法不同,动态测试又分为 与 两类。6静态测试采用 和 的手段对程序进行检测。7人工审查程序偏重于 的检验,而软件审查除了审查 还要对各阶段 进行检验。8计算机辅助静态分析利用 工具对测试程序进行 分析。9黑盒法只在软件的 处进行测试,依据 说明书,检查程序是否满足 要
2、求。10白盒法必须考虑程序的 和 ,以检查 的细节为基础,对程序中尽可能多的逻辑路径进行 。11白盒测试是 测试,被测对象是 ,以程序的 为基础设计测试用例。12逻辑覆盖是对程序内部有 存在的逻辑结构设计测试用例,根据程序内部的逻辑覆盖程度又可分为 、 、 、 、 和 6种覆盖技术。13实际的逻辑覆盖测试中,一般以 覆盖为主设计测试用例,然后再补充部分用例,以达到 覆盖测试标准。14循环覆盖是对程序内部有 存在的逻辑结构设计测试用例,它通过限制 来测试。15基本路径测试是在程序 基础上,通过分析控制构造的 复杂性,导出 集合,从而设计测试用例。16黑盒测试是 测试,用黑盒技术设计测试用例有4种
3、方法: 、 、 和 。17等价类划分从程序的 说明,找出一个输入条件(通常是 或 ),然后将每个输入条件划分成两个或多个 。18边界值分析是将测试 情况作为重点目标,选取正好等于、刚刚大于或刚刚小于 的测试数据。如果输入或输出域是一个有序集合,则应选取集合的 元素和 元素作为测试用例。19在测试程序时,根据经验或直觉推测程序中可能存在的各种错误,称为 。20因果图的基本原理是通过画 图,把用自然语言描述的 转换为 ,最后为 每一列设计一个测试用例。21测试的综合策略是在测试中,联合使用各种 方法。通常先用 法设计基本的测试用例,再用 法补充一些必要的测试用例。22软件测试过程中需要3类信息:
4、、 和 。23软件测试一般经过4个测试: 、 、 和 。24 指对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误,它涉及 和 的文档。25单元测试主要测试 的5个基本特征: 、 、 、 和 。26在单元测试中,需要为被测模块设计 模块和 模块。 用来模拟被测模块的上级调用模块, 用来代替被测模块所调用的模块。27集成测试指在 测试基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试。也称 测试或 测试。28集成测试的方法有两种: 和 。29渐增式测试有两种不同的组装模块的方法: 和 。30自顶向下渐增式测试不需要编写 模块,只需要
5、编写 模块,其步骤是从 模块开始,沿着被测程序的 的控制路径逐步向下测试,它有两种组合策略: 和 。31自底向上渐增式测试不需要编写 模块,只需要编写 模块。32确认测试指检查软件的 与 是否与 说明书中确定的指标相符合,又称 测试。33确认测试在模拟环境下运用 测试方法,由 和 参加的测试。34确认测试开始前需要制定 计划,结束后要写出 报告。其测试用例要选用 的数据。35软件配置审查的任务是检查软件的所有文档资料的 和 。36调试也称 ,是在成功的测试之后才开始进行,其目的是确定错误的 和 ,并改正错误。37调试技术包括 、 、 和 。38回溯法调试是从 出发,而归纳法调试是从 入手。39
6、被测试程序不在机器上运行,而是采用人工检测和计算机辅助分析检测的手段称为 测试。40用等价类划分法设计一个测试用例时,使其覆盖 尚未被覆盖的合理等价类。41用等价类划分法设计一个测试用例时,使其覆盖 不合理等价类。42在单元测试时,需要为被测模块设计 。43在集成测试时有两种测试方法,它们是 。44软件测试是为了 而执行程序的过程。45运行被测程序的方法称为 测试。46动态测试中,主要测试软件功能的方法称为 法。47选择测试用例,使得被测程序中每个判定的每个分支至少执行一次,这种逻辑覆盖标准称为 。48要覆盖含循环结构的所有路径是不可能的,一般通过限制 来测试。49用等价类划分法设计测试用例时
7、,如果被测程序的某个输入条件规定了取值范围,则可确定一个合理的等在和 。50凭经验或直觉推测程序中可能存在的错误而设计测试用例的方法是 。51集成测试中的具体方法是 。52确认测试阶段的两项工作是 。53在单元测试中,测试一个模块时,需要设计 。54软件配置管理,简称SCM,它用于整个软件工程过程。其主要目标是: 、 、 、 。55SCM是一组管理整个软件生存期各阶段中 的活动。56基线的作用是把各阶段的开发工作划分得更加明确,便于检查与确认阶段成果。因此,基线可以作为项目的一个 。2. 文档资料 内部结构 测试用例 程序 错误 缺陷3. 输入数据 输出数据4. 动态测试 静态测试5. 运行程
8、序 测试用例 黑盒测试 白盒测试6. 人工检测 计算机辅助静态分析7. 编码质量 编码 软件产品8. 静态分析 特性9. 接口 需求规格 功能10. 内部结构 处理过程 处理过程 测试11. 结构 源程序 内部逻辑12. 判定 语句覆盖 判定覆盖 条件覆盖 判定/条件覆盖 条件组合覆盖 路径覆盖13. 条件组合 路径14. 循环 循环次数15. 控制流程图 环路 基本路径16. 功能 等价类划分 边界值分析 错误推测 因果图17. 功能 一句话 一个短语 等价类18. 边界 边界值 第一个 最后一个19. 错误推测法20. 因果 功能说明 判定表 判定表21. 测试 黑盒 白盒22. 软件配置
9、 测试配置 测试工具23. 单元测试 集成测试 确认测试 系统测试24. 单元测试 编码 详细设计25. 模块 模块接口 局部数据结构 重要的执行路径 错误处理 边界条件26. 驱动 桩 驱动模块 桩模块27. 单元 组装 联合28. 非渐增式测试 渐增式测试29. 自顶向下结合 自底向上结合30. 驱动 桩 顶层 软件结构图 深度优先策略 宽度优先策略31. 桩 驱动32. 功能 性能 需求规格 有效性33. 黑盒 专门测试人员 用户34. 测试 测试分析 实际运用35. 完整性 正确性36. 纠错 原因 位置37. 简单调试 归纳法调试 演绎法调试 回溯法调试38. 程序产生错误的地方 测
10、试结果发现的线索39静态40尽可能多的41一个42驱动模块与桩模块43渐增式和非渐增式44发现错误45动态测试46黑盒法47判定覆盖48循环次数49两个不合理的等价类50错误推测法51渐增式和非渐增式测试方法52进行确认测试和软件配置审查 53驱动模块和桩模块54标识变更控制变更确保变更正确地实现报告有关变更55变更56检查点1程序设计语言的特性主要有心理特性、工程特性和 技术特性 三个方面。2程序语言的工程特性主要表现为可移植性、 开发工具的可利用性 、软件的可重用性和可维护性。3为了提高程序的易读性,同时为减少错误,提高软件开发效率,编码时应注意养成良好的 程序设计风格 。4程序加注释对理
11、解程序提供了明确指导,根据作用不同注释分 序言性注释 和 功能性注释 。5软件需求分析之后,软件的设计、编码、测试与语言的特性有很大的关系,这个特性主要是语言的 技术 特性。6语句构造的原则是 简单直接 ,不能为了追求效率而使代码复杂化。7 FORTRAN 语言上世界上第一个被正式推广应用的计算机语言,它不仅面向科学计算,数据处理能力也极强。8 汇编语言 是面向机器的,可以完成高级语言无法满足要求的特殊功能,如与外部设备之间的一些接口操作。9为了使数据定义更容易理解和维护,一个语句说明多个变量时,各变量名按 字典 排列。10 编码 是将详细设计得到的处理过程的描述转换为基于某种计算机语言的程序
12、。1软件原来没有帮助信息,使用不方便,现在要增加帮助信息。这种维护性活动称之为 完善性维护 。2调试也称 纠错 ,是在成功的测试之后才开始进行,其目的是确定错误的原因 和 位置 ,并改正错误。3调试技术包括 简单调试 、 归纳法调试 、 演绎法调试 和 回溯法调试 。4回溯法调试是从 程序产生错误的地方 出发,而归纳法调试是从 测试结果发现的线索 入手。简答题1简述1983年IEEE为软件下的定义。5822926计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据。2简述软件危机的表现有哪些?以及解决软件危机的途径有哪些? 软件危机的主要表现包括:(1) 软件开发进度难以
13、预测,开发成本难以控制,导致超预算、超时;(2) 产品功能难以满足用户需求;(3) 软件产品质量无法保证;(4) 软件缺少适当的文档资料,维护困难;(5) 软件成本超过硬件成本;(6) 软件开发生产率的提高速度跟不上计算机应用普及深入的趋势;解决软件危机的途径有:1管理措施:项目管理、配置管理、过程管理、质量控制 2技术措施:开发过程、开发技术与方法和开发工具 3 软件工程的定义1993年IEEE给出的定义:软件工程是: 系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件; 研究中提到的途径。”软件工程是围绕软件开发的一门交叉学科:软件工程=计算机科学+工程学+
14、管理学4 软件工程的10个知识领域软件工程过程 ( Software Engineering Process)软件工程工具和方法 ( Software Engineering Tools and Methods )软件需求(Software Requirement)l 软件设计 (Software Design )软件构造 (Software Construction)软件测试 (Software Testing)软件维护 (Software Maintenance)软件配置管理 (Software Configuration management)软件工程管理 ( Software Engi
15、neering management )软件质量 ( Software Quality)5 软件工程的目标是什么,软件工程的三要素都是什么?软件工程的目标:软件工程必须以有组织的质量保证为基础,进行全面质量管理,不断地过程改进使软件工程方法走向成熟。软件工程的三要素包括:过程、方法和工具过程为及时合理地开发出满足用户需求的计算机软件而进行一系列有组织的活动。过程定义了技术方法的采用、工程产品(包括模型、文档、数据、报告、表格等)的产生、里程碑的建立、质量的保证和变更的管理。方法为软件开发提供“如何做”的技术,它涵盖了项目计划、需求分析、系统设计、程序实现、测试与维护等一系列的开发活动如何来做。
16、开发方法经历了从面向结构、面向对象、面向组件到面向服务的发展工程。 工具为过程和方法提供自动的或半自动的支持。这些软件工具被集成起来,建立起一个支持软件开发的系统,称之为计算机辅助软件工程 (CASE ,Computer Aided Software Engineering)。6 软件工程的七条基本原理美国著名的软件工程专家巴利玻姆(Barry Boehm) 提出了软件工程的七条基本原理: 1用分阶段的生命周期计划严格管理; 2坚持进行阶段评审; 3实行严格的产品控制; 4采纳现代程序设计技术; 5结果应能清楚地审查; 6开发小组的人员应少而精; 7承认不断改进软件工程实践的必要性。7 简述软
17、件过程的定义,软件过程又可以分为那几个类型?软件过程(Software Procedure)是为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动。软件过程可概括为基本过程、支持过程和组织过程等三种类型。其中,基本过程包括:获取过程、供应过程、开发过程、运作过程和维护过程。支持过程包括:文档编制过程、配置管理过程、质量保证过程、验证过程、确认过程、联合评审过程和问题解决过程等过程。 组织过程包括:管理过程、基础设施过程、改进过程和培训过程。 8 里程碑( Mile Stone )思想阶段工作的目标进行总结、评审、调整和部署下一个里程碑。目的:合理分配,细化管理“粒度”,降低项目
18、风险。9 基线思想基线是指一个(或一组)配置项在项目生命周期的不同时间点的一种状态,各阶段有各阶段的基线:需求基线、设计基线、测试基线等。基线一旦建立后变化需要受控制。10 简述软件生存周期的概念,说明软件生存周期划分为那几个主要时期?每个时期有包括哪些主要阶段?软件生存周期是指软件产品从定义到开发、使用和维护,直到最终被弃用的时期,称为生存周期。生存周期的可划分为计划时期、开发时期和运行时期等三个主要时期。其中计划时期包括问题定义和可行性研究两个阶段。开发时期包括需求分析、总体设计、详细设计和实现等四个阶段。运行时期的又称为运行和维护阶段。11 简述教材中介绍了那些软件开发模型?这些模型各有
19、什么特点?教材中重点介绍了瀑布、原型、增量、螺旋四个传统模型和RUP、XP两个现代模型。其中,瀑布模型严格按照生存周期开发软件,每个阶段必须完成规定的、完整、准确的合格文档,前一阶段的输出文档就是后一阶段的输入文档。其主要特点包括:活动间具有顺序性和依赖性;推迟实现的观点;质量保证的观点;快速原型模型法是开发人员在一个基本的需求的基础上快速开发出一个软件原型,然后由用户使用和评价原型、开发人员根据用户意见再修改原型,然后再使用评价再修改、直至将原型进化为最终产品。快速原型模型的特点包括: 做出系统原型,及早向用户展示系统要实现的界面及功能,增强用户的合作信心; 直观化的表达,容易交流,消除理解
20、上的歧义; 修改集中在前期的原型确认上,较大程度减少后期实施中的返工。 入手快,加快开发进度;增量模型是一种演化模型,先完成一个系统子集的开发,再按同样的开发步骤增加子集,如此递增下去直至满足全部系统需求。每个增量可按快速原型法进行。增量模型的特点包括: 无须等待获取完整需求就可入手,尽快见到成果,增强双方信心; 分步开发,降低复杂性和难度,减少技术风险,并可并行开发; 边开发边投入,可及早发现问题,减少投资风险; 各个子集是逐渐并入已有的系统中,加入子集不能破坏已构造好的部分,这需要软件具备开放式的体系结构; 适用于需求不完整的软件开发,指的是需求逐渐摸清、逐步完善,并非随意改变,需求改变过
21、大会导致整体性失控。后面要介绍的XP(极限编程)属于该模型。螺旋模型(Spiral model)是一种融合了瀑布模型、快速原型模型和增量模型的演进模型,并引入风险分析机制。适合大型复杂的系统开发。螺旋模型特点 包括:多种模型结合的一种演进模型,融合了瀑布模型、快速原型和增量模型的所有特点,融进了循环往复、迭代演进的思想; 增加风险分析,一旦风险成立,原方案应终止、修订,力求风险可控 客户始终参与每个阶段的开发,每个阶段的成果需客户确认,避免错误的积累。 统一过程RUP (Rational Unified Process)是由Rational 公司在推出统一建模语言UML后,推出的一个软件开发框
22、架RUP,称为软件统一开发过程。12 统一过程RUP定义了那几个主要阶段?l 初始阶段(Inception):主要完成商业需求,确定项目边界。里程碑是生命周期目标(Lifecycle Objective),评价项目基本的生存能力。 l 细化阶段(Elaboration):主要完成领域问题分析和软件设计。获取用户需求(功能和非功能需求),建立需求模型;进一步确立体系结构和设计软件结构等工作。里程碑是生命周期结构(Lifecycle Architecture)。l 构造阶段(Construction):主要完成系统实现、测试,里程碑是初始功能(Initial Operational),产品版本常被
23、称为“beta”版。 l 交付阶段(Transition):重点是确保软件对最终用户是可用的。里程碑:产品发布(Product Release)13 统一过程RUP工作流 6个核心过程工作流(Core Process Workflows)l 商业建模(Business Modeling):弄清项目边界和约束,做出计划。 l 需求(Requirements):描述系统应做什么,开发人员和用户达成需求基线。l 分析和设计(Analysis & Design):将需求转化成计算机可以实现的模型。l 实现(Implementation):用程序设计语言将设计模型组织成可执行的文件、数据。l 测试(Te
24、st):是发现软件中的错误,在实验环境下验证所有的需求是否被正确的实现。l 部署(Deployment):将软件分发给最终用户,安装在真实的环境下,由用户操作运行。 3个核心支持工作流(Core Supporting Workflows)是对核心过程工作流的配套支持和管理,保障核心过程工作流顺畅、高效运行。l 配置和变更管理:工作文档的管理,在版本更新、需求变更中做到各类文档及时、同步跟踪,保证各文档内容完整、一致。 l 项目管理(Project Management):资源配置、评估监控、风险控制、计划调整等管理工作,目的效益最大化。 l 环境(Environment):软件开发环境,包括人
25、员、设备、过程和工具,以及各种规范、指导手册和保障措施。 14 简述rup模型中基线与里程碑的概念,二者之间的关系。基线,是软件文档或源码(或其它产出物)的一个稳定版本,它是进一步开发的基础,也可以理解成为一个阶段的起点并已经制定了相应的工作标准,并且只有经过授权后才能变更这个标准。里程碑,是计划中确定的阶段性工作完成目标,要求提交阶段交付物,作为阶段评估的标准。基线和里程牌的关系:基线是为了建立参照点,是阶段的起点;里程牌是建立阶段性目标,是阶段终点,最后的里程牌可能是一次迭代的终结。15 简述软件计划的目标和主要工作.软件计划的目标:研究项目的可行性,研究合理地运用软件项目开发所需的资源
26、、经费,掌握开发进度,控制项目开发过程按此计划进行。主要工作包括:确定项目实施范围、定义递交的工作成果、评估实施过程中主要的风险、制定项目实施的时间计划、成本和预算计划、人力资源计划等。16软件计划的活动有哪些?这些活动的内容是什么?软件计划主要活动包括:问题定义,可行性研究,项目计划。这些活动的内容是:问题定义:确定项目实施范围,回答项目“做什么?”的问题。可行性研究:项目的必要性和可能性。制定项目计划:编制项目开发计划。17 简述问题定义的目的和主要任务。问题定义的目的:弄清要计算机解决的根本问题所在(要解决的问题是什么?),确定新系统的作用域,以及项目所需的资源、工期和经费。问题定义的主
27、要任务:编写项目报告提交审查,作为可行性分析的依据。18 简述可行性分析的目的、任务和内容。 可行性分析的目的:确定项目的必要性和可能性。可行性分析的任务包括:可行性分析;写可行性研究报告;编制开发计划。可行性分析的内容包括:技术 、经济和社会三个方面的可行性:19简述需求分析的目的、必要性和参与角色需求分析的目的是:弄清用户对系统的细节要求,完整、准确、清晰、具体地回答目标系统“做什么”。准确地理解用户提出的软件功能、性能及其环境的要求。需求分析的必要性:用户与开发者的知识领域不同,产生歧义;软件开发失败50%是需求不合理,早期错误易放大。 参与角色:开发方包括分析师、设计师和架构师。用户方
28、包括领域专家、用户和部门负责人。20 需求开发的任务有哪些? 需求开发的任务包括需求获取:收集用户对目标软件系统在功能、性能、行为、设计约束等方面的期望。需求分析:通过符号和文字说明描述系统模型,使用户和开发者间建立共同语言基础,消除理解上的歧义的过程。需求说明:既编写需求文档,也称编写需求规格说明书。需求说明书是需求分析阶段的最终成果,也是需求分析阶段复审的依据;是用户领域专家、软件分析师、软件设计师共同交流的途径和媒介;是交付给用户文档的一部份;需求验证:即需求评审。根据需求说明书,分析师、设计师、客户会审文档,对需求的正确性、一致性、完整性、无二义行进行评审、确认。21 需求的层次软件需
29、求包括三个不同的层次:业务需求、用户需求、功能需求,也包括非功能需求。1业务需求(business requirement)业务需求是反映企业/组织对软件系统的高层次目标要求,即软件系统的建设目标。 业务需求通常是“问题定义”或“可行性研究”阶段获取的内容;在需求规格说明书中反映在项目背景、系统目标或任务概述的描述中。 获取的主要对象是客户方的高管、专家、部门负责人。 2用户需求(user requirement) 用户需求:用来描述用户使用产品必须要完成的任务; 使用业务领域的术语描述,采用开发者与用户都能理解的语言和图形表达。 用户需求是经过调查、归纳后双方认同的结果。 获取的主要对象是部
30、门负责人、软件的操作者或称终端用户。3. 功能需求(functional requirement)功能需求定义了开发人员必须实现的软件功能,结果在需求规格说明书中;功能需求用软件行业术语表达:通常是需求建模的结果即目标系统的逻辑模型,如结构化的功能模型、数据模型、行为模型,面向对象的类模型等。4. 非功能需求 特性是指一些非功能需求,是满足业务需求的性能要求。如界面的交互性、数据的安全性、数据的事务性、用户的并发性、响应的快速性、操作的实时性、错误与异常的恢复性、软件的容错性等等。 项目的失败或拖延一般不是在功能上,而恰恰倒是在性能要求上,因为这些性能与软件的体系结构有关,与构成系统的网路与硬
31、件环境等底层技术有关,往往超越一般开发人员的技术能力。22 需求获取的一般方法 需求获取方法以采访、观察、座谈、对先前的系统版本的测试等。必要时采用快速原型法。先集中在使用者对系统的观点上,以收集用户原始资料,数据、工作方式、工作流程、使用要求等为工作起点,深入到部门、车间、班组,做好原始纪录;然后根据对问题及环境的理解与开发经验,改正用户需求的模糊、歧义和不一致性要求,排除用户的不合理要求,挖掘用户尚未提出但具有价值的潜在需求,使用户需求逐步精确化、一致化和完全化;需求获取非一次完成:需要往复进行、逐步深化。 需求获取的内容:写进“需求规格说明书”,确认。23需求获取的策略 循序渐进的策略;
32、 确定优先级:先进行重点的需求调研,有助于识别出重大的风险,并为制定迭代计划提供指导; 不要陷入技术:需求未明确,应回避对技术问题讨论。 挖掘用户需求: “诱导式”就是挖掘用户需求。客户并非IT专业人士,需求的概念是模糊的、笼统的,而且尺度难以把握,预测潜在需求。 区分不必要的需求:客户对有些需求提不出来,自然也会提出一些不必要的需求。24 简述概要设计和详细设计的内容。软件设计包括概要设计和详细设计。概要设计又分为体系结构设计和领域问题结构设计。体系结构设计:是支撑和管理软件运行的环境设计。由于现代的软件是处在操作系统、网络、各种服务器共同搭建的环境下运行,并且具有并发、安全、事务等多方面的
33、管理,是软件设计优先考虑的问题。领域问题结构设计:满足需求的软件功能设计,核心所在。将领域问题的分析模型细化成软件结构模型,也就是划分软件的模块结构及确定模块之间的关系。详细设计又分为如下三个部分:l 对模块内部的过程和数据结构进行设计。也就是对模块内进行算法分析和程序设计。l 人机交互界面的具体设计,还有与其它外部系统接口设计。l 完成对数据库的物理设计概要设计是根据需求确定软件和数据的总体框架;详细设计是进一步精化成软件的算法和数据结构。25 25 简述衡量软件模块独立性的度量标准有哪些?模块独立性是指模块能够完成独立的功能;模块符合信息隐藏和信息局部化原则;模块间关连和依赖程度尽量小。衡
34、量软件模块独立性的度量标准的指标有取决于模块的内部特征的指标内聚度和取决于模块的外部特征的指标耦合度。内聚度:一个模块内部各个元素间(语句和程序段)彼此的紧密程度的度量。耦合度:指软件结构中各模块间相互联系紧密程度的一种度量。26 简述内聚度的七个等级?内聚度表示一个模块内部各成分之间彼此结合的紧密程度。内聚度按其高低程度可分为七级,高内聚度模块独立性强,设计尽可能提高模块内聚度。 偶然性内聚:是指一个模块内各成分为完成一组功能而组合在一起,它们相互之间即使有关系,也很松散。 逻辑性内聚:模块内完成的诸任务逻辑上相关。该类内聚的缺点是执行中要从模块外引入用 作判断的开关量,从而 增加了块间偶合
35、(控制偶合)。 时间性内聚:如果一个模块包含的诸任务必须在同一时间段内执行,则称之为时间性内聚 过程性内聚:模块的过程性内聚度是指模块内成份彼此相关,并且必须按特定的次序在本模块内执行; 通讯性内聚:是指模块中各组成成分都将对某个数据结构的同一区域进行操作,以达到通信的目的。 顺序性内聚:一个模块内的各处理成分均与同一功能相关,且这些处理必须顺序执行,通常,一个处理成分的输出是另一个处理成分的输入。 功能性内聚:模块内所有成分形成一个整体,完成单个功能,则称功能内聚,功能内聚是最高程度的内聚形式。27耦合度的七个等级耦合度是模块独立性最显著特征。耦合度按其高低程度可分为七级,松耦合是软件设计一
36、直追求的目标。 非直接耦合: 模块不依赖另一个模块能独立工作,这是最松的耦合。 数据耦合: 两模块间通过参数交换数据信息,则称这两模块为数据耦合。 特征耦合: 模块之间除传递关键数据外还附加公共数据。 控制耦合: 如果两模块间通过参数交换信息,此时若传递的信息中含有控制信息,则为控制耦合。 外部耦合: 当若干模块均与同一个外部环境关联,它们之间便存在外部耦合。 公共耦合: 当若干模块通过全局的数据环境相互作用时,它们之间存在公共耦合。 内容耦合:当一个模块使用另一个模块内部的数据或控制信息;一个模块直接转移到另一个模块内部等,模块间的耦合就是内容耦合。28 简述模块的作用域与控制域的概念及其相
37、关设计原则。 模块的作用域:从功能方面考虑,受模块内一个判定影响的所有模块的集合;模块的控制域:从结构方面考虑,包括它自己及其所有下属模块的集合。相关设计原则是:模块的作用域应在控制域之内。29详细设计的表达方式有哪些?1.伪代码(Pseudocode):是一种算法描述语言,也称PDL语言(Program Design Language)。伪代码介于自然语言与编程语言之间,用伪代码描述的算法可以容易用任何一种编程语言实现。伪代码表达算法必须结构清晰、代码简单、可读性好。2.程序流程图:用图形符号表达算法,直观表达循环、分支等复杂结构,是喜闻乐见的表现形式。3.盒图(N-S) (Nassi和Sh
38、neiderman):也是一种图形符号表达方式,同样可以表达各种流向控制,但比程序流程图紧凑、功能域明确。4.PAD图(PAD-Problem Analysis Diagram)28:同样是用图形符号表达算法,但它具有结构化的表达方式,因此结构十分清晰,很容易翻译成程序代码。PAD支持自顶向下,逐步求精方法的使用。判定表与判定树:对于规则较多,判定条件较复杂的情况,宜采用这两种方法表达。 5.判定表与判定树:对于规则较多,判定条件较复杂的情况,宜采用这两种方法表达。 30 简述面向数据流的结构化分析SA方法中,有哪些建模方法?功能建模:数据流图DFD(Data Flow Diagram)+ 数
39、据字典DD(Data Dictionary);数据建模:实体关系图ERD(Entity Relation Diagram);行为建模:状态转换图STD(State Transform Diagram);加工说明PESPEC(Process SPECification)和判定表等辅助工具。31 简述数据流图(DFD)的图形符号有哪些?数据流:表示数据流的名称和数据的流向(从加工出发或流向加工);外部实体:系统外与系统交互的人或实体;数据加工:数据处理;数据存储:数据进行持久保存的环节;32简述数据字典的作用、内容和组成元素有哪些?数据流图描述了数据加工,但没有描述数据的内容。数据流图必须与描述并
40、组织数据条目的数据字典DD(Data Dictionary)配套使用。数据字典描述的对象:描述数据流图中出现的所有数据和加工。这里的数据描述是概念性的,属数据结构的抽象描述;加工采用加工小说明进行概念性的描述。数据字典的组成元素包括:数据流条目、 数据存储条目、数据项条目;加工条目(也称为小说明);33 简述面向对象的基本概念有哪些?1对象与面向对象对象(Object):即表示客观世界中的某个具体的事物。面向对象(Object Oriented):是人类的活动,是人类认知、观察客观事物的方法论。2面向对象的抽象与分类3类的封装与对象的整体性 4关联性与交互性客观事物都不是孤立存在的,万物之间相
41、互依存、相互交流。关联性表达客观事物的社会性、共存性、组织性,是静态的结构描述。消息机制是对象的交互性,表示对象生存环境的依赖性。5继承性对事物的分类本身就体现继承性。软件开发利用继承性可对Object更好地分类,软件结构更严谨,代码的复用性更强。6多态性 对象在不同的条件下,同样的行为会表现不同的效果,这就是Object的多态(polymorphism)。面向对象编程语言提供抽象类、接口、重载等技术支持多态的实现。34面向对象的五大特性有哪些?面向对象的特性有抽象性、封装性、继承性、多态性和消息机制等五大特性。35 简述面向对象开发过程的内容有哪些? 需求获取:开发者以OO的观点(OOV)来
42、观察客观世界的目标即获取需求,然后用自然语言写到需求规格说明(OOS)中,也就是对客观世界的最高层抽象。 面向对象分析OOA (Object Oriented Analysis)与面向对象设计OOD(Object Oriented Design)。 面向对象编程Object Oriented Program(OOP)与面向对象测试Object Oriented Testing (OOT)是代码实现过程,它依赖于编程语言和工具。 软件维护Object Oriented Software Maintenance(OOSM)。36 与传统的软件开发方法相比较,面向对象开发的主要优点有哪些?1自然性即
43、客观性 2操作数据对象而非数据实体 3阶段衔接平滑4结构性好、复用性强 5提高扩展性和维护性37 简述UML中定义了那些图形符号?并简述起作用。用例图(Use Case) 描述系统参与者与领域问题的功能 类图(Class) 描述系统的逻辑结构,类、接口及它们的协作关系 包图(Package )描述类的复用组织分组 对象图(Object) 描述类的实例在某时刻的关系 构件图(Component) 描述系统按构件组成上的关系 配置图(Deployment) 描述系统运行环境的配置情况 时序图(Sequence) 描述某些对象共同合作完成某项功能而按时间顺序进行的消息传递 协作图(Collabora
44、tion) 描述某些对象共同合作完成某项功能的依赖关系 活动图(Activity) 描述某个用例按事件流转所经历的的活动,即业务流程 状态图(State chart) 描述某个业务流程按事件流转所经历的状态,即状态机 38 简述用例图中有哪些模型元素?并简述其含义?参与者:指存在于系统外部并与该系统发生交互的人或其他系统,代表系统的使用者或使用环境。用例(Use Case) ,用例用于表示系统提供的服务,它定义了系统是如何与参与者交互,描述了参与者与系统之间的交互过程。角色与用例间的关系关联 ,它表示参与者与系统中的哪些用例交互。用例之间的关系:包含和扩充关系以及泛化关系。参与者之间的泛化关系。39 简述类图中有哪些模型元素?并简述其含义?提示:一切可以出现在类图中的元素。类:类名、属性、方法(可见性