数据库原理及应用教程总结笔记课件

上传人:仙*** 文档编号:241431121 上传时间:2024-06-25 格式:PPT 页数:124 大小:1.55MB
返回 下载 相关 举报
数据库原理及应用教程总结笔记课件_第1页
第1页 / 共124页
数据库原理及应用教程总结笔记课件_第2页
第2页 / 共124页
数据库原理及应用教程总结笔记课件_第3页
第3页 / 共124页
点击查看更多>>
资源描述
数据数据库原理及原理及应用教程用教程总结笔笔记一、软件工程基本原理1.1 软件危机 1.2 软件工程 1.3 软件生命周期1.4 软件过程软件及软件工程为什么要讲软件和软件工程只有对软件和软件的开发过程有充分的认识,才能更好的开发出过程受控、质量受控的软件产品。对于软件和软件开发过程的认识是困难的,存在很多困惑,需要对此有深刻的认识。一些对软件的偏见或误解软件就是程序,软件开发就是编写程序。编完了程序,就一切OK了。掌握了最新的语言和工具,就能写程序了。软件是灵活的,软件的修改很容易。只要会编程,就能写软件,就是程序员;一个公司,只要召些程序员,就能开发好的软件产品。只要有几个有经验的程序员,再找些兼职的大学生,就能组成一个软件公司。什么是软件软件的定义软件是计算机系统中与硬件相互依存的另一部分,软件由三部分组成:程序:在运行时,能提供所希望的功能和性能的指令集数据:使程序能够正确运行的数据文档:描述程序研制过程、方法及使用的文档软件的开发,绝不仅仅是编写程序软件可看做一个信息交换器,产生、管理、获取、修改、显示或传送信息1.1 软件危机软件危机的介绍随着计算机应用的日益普及,软件数量急剧膨胀软件开发和维护成本越来越大,令人吃惊地高失败的软件开发项目屡见不鲜什么是软件危机、软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题1.1 软件危机软件危机的表现对软件开发成本和进度的估计常常很不准确用户对“已完成的”软件系统不满意的现象经常发生软件产品的质量往往靠不住 软件常常是不可维护的软件通常没有适当的文档资料软件成本在计算机系统总成本中所占的比例逐年上升软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势1.1 软件危机软件危机的原因软件规模越来越大,软件复杂度越来越高 软件开发缺乏正确的理论指导,过分依靠个人技巧和创造性没有充分的文档资料(软件配置主要包括程序、文档和数据等)软件可靠性缺少度量的标准,质量无法保证轻视软件维护(维护费用占软件总费用的55%-70%)用户需求没有完整准确的认识,就匆忙着手编写程序(主要原因)1.1 软件危机软件危机的原因软件本身的特点软件开发与维护的方法不正确如何克服软件危机:软件工程概念:软件生命周期1.1 软件危机消除软件危机的途径对计算机软件正确认识。(软件不仅仅是程序)推广使用开发软件成功的技术和方法,研究探索更好更有效的技术和方法,消除错误概念和做法。开发和使用更好的软件工具。需要组织管理措施。软件工程正是从技术和管理两方面研究如何更好地开发和维护计算机软件的一门新兴学科。无章法(个人英雄主无章法(个人英雄主义)工程工程项目管理模式(目管理模式(团队合作开合作开发)1.2 软件工程软件工程1968年秋,提出软件工程IEEE 1993年给出定义:1)将系统化、规范化、可量化的工程原则和方法,应用于软件的开发、运行和维护。2)对1)中方法的理论研究。1.2 软件工程 概括地说,软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,经济地开发出高质量的软件并有效地维护它。软件工程基本原理(开发与维护的指导)1.用分阶段的生命周期计划严格管理2.坚持进行阶段评审3.实行严格的产品控制4.采用现代程序设计技术5.结果应能清楚地审查6.开发小组的人员应该少而精7.承认不断改进软件工程实践的必要性1.2 软件工程把在软件生命周期全过程中使用的一整套技术的集合称为方法学(methodology),也称范型(paradigm)。软件工程方法学三个要素:方法、工具和过程。方法是完成软件开发各项任务的技术,回答“如何做”;工具是为方法的运用提供自动或半自动软件支撑环境,回答“用什么做”;过程是为获得高质量的软件要完成的一系列任务的框架,规定完成各项任务步骤,回答“如何控制、协调、保证质量”。目前使用得最广泛的软件工程方法学传统方法学:也称为生命周期方法学或结构化范型。面向对象方法学1.2 软件工程传统方法的特点生命周期模型软件过程划分为若干个阶段每个阶段有各自的任务阶段之间有某种顺序性传统方法的缺点当软件规模较大,或对软件的需求是模糊的或随时间变化的时候,使用结构化范型开发软件往往不成功;此外,使用传统方法学开发出的软件,维护起来通常都很困难。1.2 软件工程面向对象方法:1.对象作为融合数据及在数据之上的操作行为的统一的软件构件。2.把所有对象都划分成类(Class)。每个类都定义了一组数据和一组操作。3.按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。在类等级中,下层派生类自动拥有上层基类中定义的数据和操作,称为继承。4.对象彼此间仅能通过发送消息互相联系封装性。1.2 软件工程面向对象的特点面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式。用面向对象方法学开发软件的过程,是一个主动地多次反复迭代的演化过程。概念和表示方法上的一致性,阶段间平滑(无缝)过渡。特殊到一般的归纳思维过程;一般到特殊的演绎思维过程。(继承的思想)最终产品中的对象与现实世界中的实体相对应,降低了复杂性,提高了可理解性,简化了软件的开发和维护工作。对象是相对独立的实体,容易在软件产品中重复使用,促进了软件重用。面用对象方法特有的继承性,也进一步提高了面向对象软件的可重用性。1.3 软件生命周期 软件生命周期由软件定义、软件开发和运行维护三个时期组成,每个时期又可进一步划分成若干个阶段,每个阶段有各自的任务。1软件定件定义2软件开件开发3运行运行维护1.问题定义(领域分析1)确定要开发软件系统的总目标必须回答的关键问题是:“要解决的问题是什么”。2024/6/25大连理工大学软件学院192.可行性研究(领域分析2,问题背景)给出功能、性能、可靠性以及接口等方面的要求估计可利用的资源(计算机硬件、软件、人力等)、成本、效益、开发进度制定出完成开发任务的实施计划,连同可行性研究报告,提交管理部门审查回答的关键问题是:“上一个阶段所确定的问题是否有行得通的解决办法”。2024/6/25203.需求分析对待开发软件提出的需求进行分析并给出详细的定义用正式文档准确地记录对目标系统的需求,这份文档通常称为规格说明(specification)。提交管理机构评审仍然不是具体地解决客户的问题,而是准确地回答“目标系统必须做什么”。了解问题,不能准确表达,不知道怎样利用计算机实现了解软件实现,不清楚用户要求与用户配合,充分交流,得出系统需求需求分析4.概要设计概括地回答“怎样实现目标系统?”这个问题。概要设计又称为初步设计、逻辑设计、高层设计或总体设计。可以给出实现目标系统的几种可能的方案。另一项主要任务是设计程序的体系结构,即确定程序由哪些模块组成以及模块间的关系。5.详细设计任务是把解法具体化,回答“应该怎样具体地实现这个系统”这个关键问题。还不是编写程序,而是设计出程序的详细规格说明。又称为模块设计、物理设计或低层设计。6.编码和单元测试关键任务是写出正确的容易理解、容易维护的程序模块,并测试。7.综合测试关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。主要包括:集成测试和验收测试分析系统的可靠性记录测试计划、详细测试方案及实际测试结果,作为软件配置的一部分。8.软件维护维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。通常有四类维护活动改正性维护,也就是诊断和改正在使用过程中发现的软件错误;适应性维护,即修改软件以适应环境的变化;完善性维护,即根据用户的要求改进或扩充软件使它更完善;预防性维护,即修改软件为将来的维护活动预先做准备。1.4 软件过程在实际软件开发时,软件规模、种类、开发环境及开发时使用的技术方法等因素,影响阶段的划分。软软件开件开发发软软件件维护维护软软件定件定义义生命周期模型生命周期模型规定了把生命周期划定了把生命周期划分成哪些分成哪些阶段及各个段及各个阶段的段的执行行顺序,因此,也称序,因此,也称为过程模型程模型。瀑布模型 在20世纪80年代之前,唯一被广泛采用的生命周期模型现在仍然是软件工程中应用得最广泛的过程模型。瀑布模型传统的瀑布模型开发软件特点:1.阶段间具有顺序性和依赖性前一阶段完成后开始后一阶段前一阶段输出作为后一阶段输入瀑布模型传统的瀑布模型开发软件特点:2.推迟实现不可急于求成清楚地区分逻辑设计与物理实现尽可能推迟程序的物理实现瀑布模型传统的瀑布模型开发软件特点:3.质量保证每个阶段都必须完成规定的文档每个阶段结束前都要对所完成的文档进行评审瀑布模型不希望有“变化”变化来的越晚,付出的代价越高。设计阶段过多的假设,导致理想化、一厢情愿的东西过多。瀑布模型传统的的瀑瀑布布模模型型 实际的的瀑瀑布布模模型型瀑布模型带“反反馈环”(实线箭箭头表示开表示开发过程,程,虚虚线箭箭头表示表示维护过程程)发现错误时,需要沿,需要沿图中左中左侧的反的反馈线返返回前面的回前面的阶段,修正前面段,修正前面阶段的段的产品之后品之后再再继续完成后面完成后面阶段的任段的任务。瀑布模型优点:一定程度解决点:一定程度解决“变化化”的的问题。缺点:文档缺点:文档驱动,完全依,完全依赖书面面文字。文字。快速原型模型快速建立起可以在计算机上运行的程序,其功能往往是最终产品功能的子集。模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户试用,通过实践来了解目标系统的概貌。(实线箭头表示开发过程,虚线箭头表示维护过程)。快速原型模型用户试用提出修改意见快速地修改原型系统用户再次试用一旦用户认为原型系统确实能做他们所需要的工作,开发人员便可据此书写规格说明文档,根据这份文档开发出的软件可以满足用户的真实需求。快速原型模型快速原型的本质是“快速”。开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用途是获知用户的真正需求,一旦需求确定了,原型将被抛弃。(原型通常没有严格的规范化,缺少文档,难以维护)快速原型模型快速原型模型增量模型每个构件由多个相互作用的模块构成,并且能够完成特定的功能。第一个增量构件往往实现软件的基本需求,提供最核心的功能。(滚雪球方式)增量模型,也称增量模型,也称渐增模型。增模型。把把软件件产品作品作为一系列的增量构件来一系列的增量构件来设计、编码、集成和、集成和测试。增量模型增量模型:逐步增加系统功能。较短时间内提交可以工作的产品。减少全新产品带给客户的冲击。困难:需要开放的架构设计。瀑布、快速原型:力求一次性瀑布、快速原型:力求一次性给用用户完整的系完整的系统。逐个构件逐个构件进进行分析、行分析、设计设计。风险风险更大。更大。实现各个构件之前完成全部需求分析、规格说明、概要设计。螺旋模型应采取适当措施消除或减少开发软件时的风险。螺旋模型的基本思想:使用原型及其他方法来尽量降低风险。可以理解为在每个阶段之前都增加了风险分析过程的快速原型模型。简简化的螺旋模型化的螺旋模型螺旋模型带箭头的点划线的长度代表当前累计的开发费用。螺线旋过的角度值代表开发进度。每周期对应一个开发阶段完整的螺旋模型完整的螺旋模型螺旋模型优点:对可选方案和约束条件的强调有利于软件的重用,也有助于把软件质量作为软件开发的目标减少过多测试或测试不足带来的风险维护作为开发的一个周期,与开发没有本质区别风险驱动:及时终止项目适用于内部开发的大规模软件项目弱点:风险驱动:需要专业的风险评估人员,花费风险分析的费用喷泉模型迭代是软件开发过程中普遍存在的一种内在属性。软件过程各个阶段之间的迭代或一个阶段内各个工作步骤之间的迭代,在面向对象范型中比在结构化范型中更常见。喷泉模型是典型的面向对象生命周期模型。喷泉模型面向对象方法:围绕面向问题的“对象”展开,分析、设计、编码不存在明显的边界。圆圈重叠:开发活动之间存在交迭。向下箭头:阶段内的迭代(求精)。概念和表示方法的一致性:保证无缝过渡。体现了面向对象软件开发过程迭代和无缝的特性。喷泉模型把一个线性过程作为总目标避免开发过程过分无序。快速原型模型图中的中心垂线思考题假设要你开发一个软件,该软件的功能是把读入的浮点数开平发,所得结果应该精确到小数点后4位。一旦实现并测试完之后,该产品将被抛弃。你打算选用哪种软件生命周期模型?请说明理由。思考题答案:瀑布模型。需求明确、算法成熟,无需通过原型来分析需求。实现之后即被抛弃,无需使用有助于提高软件可维护性的增量模型或螺旋模型。2024/6/2549思考题假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本开发。由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。你打算采用哪种软件生命周期模型?请说明理由。2024/6/2550思考题2、增量模型。时间紧,需要选择能够加速产品开发的模型,增量模型可以实现任务并行。开发软件的新版本,旧版本即相当于原型。已经被广泛应用,以后可能扩充,体系结构设计成开放式。二、可行性研究2.1 可行性研究的任务2.2 可行性研究过程2.3 系统流程图2.4 数据流图许多问题不可能在预定的系统规模或时间期限内解决目的:使用最小的代价,尽可能在短的时间内,确定问题是否能够解决2.1 可行性研究的任务确定问题是否值得去解分析可能的解法判定系统规模和目标是否能够实现效益是否可观较高层次的系统分析和设计过程2.1 可行性研究的任务进一步分析和澄清“问题定义”是否正确如有错误加以改正如有约束和限制必须清楚的列出导出系统逻辑模型探索实现方案(若干种)每种方案分别研究可行性2.1 可行性研究的任务可行性的4个方面技术可行性经济可行性操作可行性法律可行性预期工程总成本的5%10%3.1 需求分析的任务需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的“做什么”的问题。软件需求分析阶段的工作,可以分为以下4个方面:对问题的识别分析与综合编写需求分析文档需求分析评审 结构化设计传统的软件工程方法学采用结构化设计(Structured Design,SD)技术完成软件设计工作,分为两阶段。总体设计(概要设计、初步设计)详细设计总体设计基本目的:概括地说,系统应该如何实现。划分系统的物理元素程序、文件、数据库、人工过程、文档。设计软件的结构每个程序由哪些模块组成,这些模块相互间的关系结构化设计与结构化分析关系软件设计必须依据对软件的需求来进行,结构化分析的结果为结构化设计提供了最基本的输入信息。分析模型的每个元素都提供了创建设计模型时所需要的信息。下图描绘了软件设计过程中的信息流。由数据模型、功能模型和行为模型清楚地表示的软件需求被传送给软件设计者,他们使用适当的设计方法完成数据设计、体系结构设计、接口设计和过程设计。结构化设计与结构化分析关系在软件设计期间所做出的决策,将最终决定软件开发能否成功,更重要的是,这些设计决策将决定软件维护的难易程度。设计是软件开发过程中决定产品质量的关键阶段:提供了可以进行质量评估的软件表示把用户需求准确转变为最终产品是后续所有软件开发与维护步骤的基础设计的重要性设计过程总体设计的两个阶段系统设计阶段,确定系统的具体实现方案结构设计阶段,确定软件结构1、设想供选择的方案2、选取合理的方案系统流程图组成系统的物理元素清单成本/效益分析实现这个系统的进度计划 设计过程3、推荐最佳方案对比各种合理方案,推荐一个最佳方案制定详细的实现计划4、功能分解设计所有程序和文件(或数据库)结构设计程序由哪些模块组成、模块间的关系过程设计确定每个模块的处理过程(详细设计阶段任务)设计过程从实现角度把复杂功能进一步分解将数据流图细化使用IPO图描述每个算法5、设计软件结构把模块组织成良好的层次(层次图、结构图)6、设计数据库7、制定测试计划模块独立“模块独立化”原因:易于开发易于测试和维护模块的独立程度可以由两个定性标准来度量,这两个标准分别称为内聚和耦合。耦合衡量不同模块彼此间互相依赖(连接)紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。在软件设计中应该追求尽可能松散耦合的系统。在这样的系统中可以研究、测试或维护任何一个模块,而不需要对系统的其他模块有很多了解。此外,由于模块间联系简单,发生在一处的错误传播到整个系统的可能性就很小。因此,模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性。耦合常见的耦合程度:无耦合:任何一个模块都独立工作,现实系统中不存在数据耦合:模块间交换的信息只有数据(例如:函数参数传递)控制耦合:模块间传递控制信息(例如:传递参数flag,用于控制不同功能)特征耦合:把整个数据结构作为参数传递,而被调用的模块只需要使用其中一部分数据(例如:日期结构)公共环境耦合:多个模块通过公共数据环境相互作用(公共环境包括:全局变量、共享的通信区、内存的公共覆盖区、文件、物理设备等)松散的公共环境耦合(一个读数据,一个取数据)紧密的公共环境耦合(两个既读数据又取数据)内容耦合:一个模块访问另一个模块的内部数据一个模块不通过正常入口而转到另一个模块的内部两个模块有一部分程序代码重迭一个模块有多个入口耦合总之,耦合是影响软件复杂程度的一个重要因素。应该采取下述设计原则:尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。高耦合:一个程序员完成一个大任务低耦合:两个程序员各完成一个小任务耦合思考题确定模块之间的耦合类型。假设模块P、T、U 更新同一个数据库数据耦合控制耦合数据 or 特征P、T、U公共环境耦合内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件事情。力求高内聚;通常中等程度的内聚也是可以采用的,而且效果和高内聚相差不多;低内聚很不好,不要使用。内聚内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合。内聚和耦合都是进行模块化设计的有力工具,但是实践表明内聚更重要,应该把更多注意力集中到提高模块的内聚程度上。低内聚:偶然内聚:一个模块任务间关系松散或者没有关系逻辑内聚:一个模块完成的任务在逻辑上属于相同或者相似的一类时间内聚:模块包含的任务必须在同一段时间内执行内聚中内聚过程内聚:一个模块内的处理元素相关,并且以特定的次序执行通信内聚:模块中所有元素都使用同一个输入数据、产生同一个输出数据高内聚顺序内聚:一个模块内的处理元素和同一个功能密切相关,并且必须顺序执行功能内聚:模块内所有处理元素属于一个整体,完成一个单一的功能内聚事实上,没有必要精确确定内聚的级别。重要的是设计时力争做到高内聚,并且能够辨认出低内聚的模块,有能力通过修改设计提高模块的内聚程度,降低模块间的耦合程度,从而获得较高的模块独立性。内聚思考题确定每个模块的内聚类型。功能内聚偶然内聚启发规则软件工程师们在开发计算机软件的长期实践中积累了丰富的经验,总结这些经验得出了一些启发规则。启发规则虽然不像前两节讲述的基本原理那样普遍适用,但是在许多场合仍然能给软件工程师有益的启示,往往能帮助他们找到改进软件设计提高软件质量的途径,因此有助于实现有效的模块化。1 改进软件结构提高模块独立性2 模块规模应该适中3 深度、宽度、扇出和扇入都应适当4 模块的作用域应该在控制域之内5 力争降低模块接口的复杂程度6 设计单入口单出口的模块7 模块功能应该可以预测启发规则1 改进软件结构提高模块独立性软件初步结构审查分析模块分解或合并降低耦合提高内聚比如:多个模块共有的子功能可以独立成一个模块2 模块规模应该适中规模过大:理解不充分,进行分解规模过小:系统接口复杂启发规则3 深度、宽度、扇出和扇入都应适当深度:软件结构中控制的层数宽度:软件结构中同一个层次上的模块总数最大值扇出:一个模块直接控制(调用)的模块数目扇入:有多少个上级模块直接调用它启发规则启发规则4 模块的作用域应该在控制域之内启发规则作用域:受作用域:受该模模块内一个判定影响的所有模内一个判定影响的所有模块的集合。的集合。控制域:控制域:这个模个模块本身以及所有直接或者本身以及所有直接或者间接从属于它的模接从属于它的模块的集合。的集合。4 模块的作用域应该在控制域之内启发规则例:模例:模块A A做出的判定影响模做出的判定影响模块G G。模模块G G在模在模块A A的控制域中的控制域中模模块G G不在模不在模块A A的作用域中的作用域中出出现控制耦合控制耦合,如何如何调整?整?方案方案1 1:模:模块A A移到模移到模块M M中中方案方案2 2:模:模块G G移移动模模块A A底下底下5 力争降低模块接口的复杂程度仔细设计模块接口信息传递简单、和模块的功能一致例:求一元二次方程的根模块QUAD_ROOT(TBL,X),其中TBL为系数数组,X为根数组。参数含义不清晰,容易引起混淆产生错误,改为:QUAD_ROOT(A,B,C,ROOT1,ROOT2),其中A、B、C为系数,ROOT1和ROOT2为根。启发规则5 力争降低模块接口的复杂程度接口复杂接口不一致(即看起来传递的数据之间没有联系)是紧耦合或低内聚的征兆。启发规则6 设计单入口单出口的模块避免内容耦合7 模块功能应该可以预测模块可预测:相同的输入产生相同的输出启发规则五、系统实现1、实现2、白盒测试3、黑盒测试通常把编码和测试统称为实现。所谓编码就是把软件设计翻译成计算机可以理解的形式用某种程序设计语言书写的程序。作为软件工程过程的一个阶段,编码是设计的自然结果,因此,程序的质量主要取决于软件设计的质量。但是,所选用的程序设计语言的特点和编码风格也会对程序的可靠性、可读性、可测试性和可维护性产生深远的影响。无论怎样强调软件测试的重要性和它对软件可靠性的影响都不过分人的主观认识不可能完全符合客观现实与工程密切相关的各类人员之间的通信和配合也不可能完美无缺在软件生命周期的每个阶段都不可避免地会产生差错阶段审查,尽可能早地发现并纠正差错经验表明阶段审查并不能发现所有差错此外在编码过程中还不可避免地会引入新的错误2024/6/2588测试的目的 就是在软件投入生产性运行之前,尽可能多地发现软件中的错误目前软件测试仍然是保证软件质量的关键步骤,它是对软件规格说明、设计和编码的最后复审。软件测试在软件生命周期中横跨两个阶段。在编写出每个模块之后就对它做必要的测试,称为单元测试,模块的编写者和测试者是同一个人,编码和单元测试属于软件生命周期的同一个阶段。对软件系统还应该进行各种综合测试,这是软件生命周期中的另一个独立的阶段,通常由专门的测试人员承担这项工作。2024/6/2590大量统计资料表明,软件测试的工作量往往占软件开发总工作量的40%以上,在极端情况,测试那种关系人的生命安全的软件所花费的成本,可能相当于软件工程其他步骤总成本的35倍。测试目标是发现软件中的错误,但是,发现错误并不是最终目的。软件工程的根本目标是开发出高质量的完全符合用户需要的软件,因此,通过测试发现错误之后还必须诊断并改正错误,这就是调试的目的。调试是测试阶段最困难的工作。在对测试结果进行收集和评价的时候,软件所达到的可靠性也开始明朗了。软件可靠性模型使用故障率数据,估计软件将来出现故障的情况并预测软件的可靠性。思考题根据下面的规格说明,利用等价类划分的方法,给出测试用例。一个程序读入3个整数,它们分别代表一个三角形的3个边长。该程序判断所输入的整数是否构成一个三角形,以及该三角形是一般的、等腰的或等边的,并将结果打印出来。要求:设三角形的3条边分别为A、B、C,列出等价类,设计测试用例。思考题答案(1)用例1(3,4,5),输出构成三角形(2)用例2(0,4,4),输出不构成三角形(3)用例3(3,4,10),输出不构成三角形(4)用例4(3,3,4),输出构成等腰三角形(5)用例5(3,4,5),输出不构成等腰三角形(同用例1)(6)用例6(3,3,3),输出构成等边三角形(7)用例7(,3,4,5),输出不构成等边三角形(同用例1)Chap.1 软件工程学概述何谓软件危机产生软件危机的原因及解决途径软件工程定义及基本原理软件工程方法学包含哪三个要素软件生命周期阶段划分及各阶段的任务各种生命周期模型的概念和特点了解敏捷过程和极限编程的基本思想练习题软件工程中描述生存周期的瀑布模型一般包括计划、需求分析、设计、编码、测试、维护等几个阶段,其中设计阶段在管理上又可以依次分成概要设计和()两步。A.方案设计 B.代码设计 C.数据设计 D.详细设计答案:D练习题软件工程方法学包括三个要素:方法、工具和()。A.程序开发环境 B.文档 C.过程 D.人员答案:C练习题喷泉模型对软件复用和生存周期中多项开发活动的集成提供了支持,主要支持面向对象的开发方法。“喷泉”一词本身体现了迭代和()特性。A.从上至下 B.无缝 C.灵活 D.顺序答案:B练习题软件需求分析阶段的工作,可以分为以下4个方面:对问题的识别、分析与综合、编写需求分析文档以及()。A.总结 B.阶段性报告 C.需求分析评审 D.以上答案都不正确答案:C练习题在结构化分析方法中,用以表达系统内数据的运动情况的工具有()。A.数据流图 B.数据词典 C.结构化英语 D.判定表与判定树答案:A练习题在结构化分析方法中用状态图表达系统或对象的行为。在状态图中,由一个状态和一个事件所决定的下一状态可能会有()个。A.1 B.2 C.多个 D.不确定答案:C练习题需求规格说明书的内容不应当包括()。A.对重要功能的描述 B.对算法的详细过程性描述C.软件确认准则 D.软件的性能答案:B练习题()是模块独立性最弱的耦合。A.内容耦合 B.控制耦合 C.数据耦合 D.公共耦合答案:A练习题将几个逻辑上相似的成分放在同一个模块中,通过模块入口处的一个判断决定执行哪一个功能。该模块的内聚性是()的。A.功能内聚 B.通信内聚 C.过程内聚 D.逻辑内聚答案:D练习题下列关于模块化程序设计的叙述中错误的是()。A.便于由多个人分工编制大型程序。B.软件的功能便于扩充。C.程序易于理解,也便于排错。D.模块越小,模块化的优点越明显。答案:D练习题按照软件工程的原则,模块的作用域和模块的控制域之间的关系是:()A.模块的作用域应在模块的控制域之内B.模块的控制域应在模块的作用域之内C.模块的控制域与模块的作用域互相独立D.以上说法都不对答案:A练习题结构化程序之所以具有易于阅读,并且有可能验证其正确性,这是由于()。A.良好的编程风格 B.良好的数据结构和算法 C.GOTO语句的灵活性 D.只有三种基本流程结构答案:D练习题程序的三种基本控制结构是()。A.过程,子程序,分程序 B.顺序,条件,循环C.递归,堆栈,队列 D.调用,返回,转移答案:B练习题某程序功能说明中列出“每名学生的参赛作品为15项”,应用黑盒法中的等价分类法确定等价类是()。A.1作品数5 B.作品数5 D.以上都是答案:D练习题软件的集成测试工作最好由()承担,以提高集成测试的效果。A.该软件的设计人员 B.该软件开发组的负责人C.不属于该软件开发组的软件设计人员D.该软件的编程人员 答案:C练习题下列叙述中错误的是()。A.用黑盒法测试时,测试用例是根据程序内部逻辑设计的。B.尽量采用复合的条件测试,以避免嵌套的分支结构。C.GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序更加简洁。D.一般来说发现错误多的程序模块,残留在模块中的错误也多。答案:A练习题()覆盖比其他条件都要严格,但它不能保证覆盖程序中的每一条路径。A.判定 B.条件 C.判定/条件 D.条件组合答案:D练习题面向对象的程序设计语言具有数据抽象、信息隐蔽、()等特征。A.对象调用 B.非过程性 C.继承 D.并发性答案:C2024/6/25大连理工大学软件学院113工工工工资计资计算系算系算系算系统统的的的的顶层顶层(0(0层层)数据流数据流数据流数据流图图思考题(1)分分分分层层画出工画出工画出工画出工资计资计算系算系算系算系统统的数据流的数据流的数据流的数据流图图2024/6/25大连理工大学软件学院114工工资计算系算系统第一第一层数据流数据流图2024/6/25大连理工大学软件学院115工工资计算算系系统的的第第二二层数数据据流流图“计算工算工资”子数据流子数据流图“工工资转存存”子数据流子数据流图2024/6/25大连理工大学软件学院116工工工工资计资计算系算系算系算系统统的第三的第三的第三的第三层层数据流数据流数据流数据流图图思考题(4)思考题答案判定覆盖用例(1,1,2,3)(-1,-1,-2,0)条件覆盖用例(1,1,2,2)(-1,-1,-2,-2)判定/条件覆盖(1,1,2,0)(-1,-1,-2,0)思考题答案条件组合覆盖用例 A0,B0 A0,B=0 A0 A=0,B A,DA,D=B C=A,DB C=B思考题答案条件组合覆盖用例 A0,B0 A0,B=0 A0 A=0,B A,DA,D=B C=A,DB C=B条件组合覆盖用例(1,1,2,0)实现 (1,0,2,1)实现 (0,1,-1,0)实现 (0,0,-1,1)实现 提醒提醒:设计测试用例的时候别忘了预期输出思考题(5)思考题答案环形复杂度:V(G)=5独立路径上限为51-2-3-4-6-7-9-11-121-2-5-6-7-9-11-121-2-3-5-6-7-9-11-121-2-3-4-6-7-8-9-11-121-2-3-4-6-7-8-10-11-12区区别程序流程程序流程图和流和流图(教材(教材137页)思考题答案1-2-3-4-6-7-9-11-12(1,1,2,2),(2,0)1-2-5-6-7-9-11-12(0,1,2,0),(-1,2)1-2-3-5-6-7-9-11-12(1,0,2,0),(1,2)1-2-3-4-6-7-8-9-11-12(1,1,0,-1),(2,1)1-2-3-4-6-7-8-10-11-12(1,1,0,2),(2,2)汇报结束谢谢大家!请各位批评指正
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!