版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程概述软件工程软件工程的定义和基本原则软件危机和软件工程软件过程模型(上)软件过程模型(下)软件的概念、特点和分类软件的概念、特点和分类1.1软件的概念、特点和分类软件是计算机系统中与硬件相互依存的另一部分,它包括程序、数据、相关文档的完整集合以及完善的售后服务。软件=程序+数据+文档+服务软件就是程序,开发软件就是编写程序。软件的概念:1.1软件的概念、特点和分类软件的概念:软件=程序+数据+文档+服务程序:用计算机程序设计语言描述的。数据:是程序加工的对象和结果。文档:记录软件开发的活动和中间制品,记录软件配置及变更,用于软件专业人员和用户的交流,用于软件开发、过程管理和运行阶段的维护。服务:完善的售后服务1.1软件的概念、特点和分类1)软件是一种逻辑实体,不是具体的物理实体2)软件产品的生产过程主要是研制3)软件具有“复杂性”,其开发和运行常受到计算机系统的限制4)软件成本昂贵,其开发目前尚未完全摆脱人工的开发方式5)软件不存在磨损和老化问题,但存在退化问题软件的特点:1.1软件的概念、特点和分类失效率时间磨合调整磨损用坏硬件失效曲线图软件失效曲线图软件的特点:1.1软件的概念、特点和分类软件的分类:1.1软件的概念、特点和分类软件的分类——按软件的功能划分:(3)应用软件商业数据处理软件工程与科学计算软件地理信息系统软件系统仿真软件智能产品嵌入软件医疗、制药软件(1)系统软件操作系统数据库管理系统设备驱动程序通信处理程序等(2)支撑软件文本编辑程序图形处理软件数据库管理软件CASE工具软件工程概述软件工程软件工程的定义和基本原则软件危机和软件工程软件过程模型(上)软件过程模型(下)软件的概念、特点和分类软件危机和软件工程1.2软件危机和软件工程1.2.1软件危机软件危机的概念、表现、原因、解决途径1.2.2软件工程
软件工程的概念、发展阶段1.2.1软件危机什么是软件危机?20世纪60年代末,西方工业发达国家经历了一场“软件危机”。1968年,由北大西洋公约组织(NATO)在德国召开的国际学术会议上首次提出。这场软件危机表现为:一方面,软件十分复杂,价格昂贵,供需差日益增大;另一方面,软件开发时又常常受挫,质量差,指定的进度表和完成日期很少能按时实现,研制过程很难管理,即软件的研制往往失去控制。软件危机是指:落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。1.2.1软件危机软件危机的表现:(1)对软件开发成本和进度的估计常常很不准确。(2)用户对“已完成的”软件系统不满意的现象经常发生。(3)软件产品的质量往往靠不住。(4)软件常常是不可维护的。(5)软件通常没有适当的文档资料。(6)软件成本在计算机系统总成本中所占的比例逐年上升。(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。1.2.1软件危机软件危机的产生原因:(1)客观:软件本身特点软件的规模庞大、复杂性高。没有完善的质量保证体系。(2)主观:软件开发和维护方法不正确忽视需求分析认为:软件开发=程序编写轻视软件维护1.2.1软件危机软件危机的产生原因:1.2.1软件危机软件危机的解决途径:组织管理工程项目管理方法技术措施软件开发技术与方法软件工具结论:按工程化的原则和方法组织软件开发工作是必要的、有效的,也是摆脱软件危机的一个主要出路。1.2.2软件工程软件工程(SoftwareEngineering)是在克服60年代末所出现的“软件危机”的过程中逐渐形成与发展的。
随着互联网平台和环境的迅速发展,对软件工程的发展产生了变革性的巨大影响,网格计算、普适计算、中间件、网构软件等一批新技术和理念,从网络资源共享与管理,人机交互及软件服务等各方面提出了软件技术的新课题。1.2.2软件工程
40多年来,软件工程已经历了四个重要发展阶段:4.第四代软件工程
组件工程3.第三代软件工程
过程工程2.第二代软件工程
对象工程1.第一代软件工程
传统的软件工程1.2.2软件工程软件工程的发展阶段:
40多年来,软件工程已经历了四个重要发展阶段:4.第四代软件工程
—组件工程3.第三代软件工程
—过程工程2.第二代软件工程
—对象工程1.第一代软件工程
—
传统的软件工程20世纪60年代末,为了克服软件危机,提出“软件工程”术语,将软件开发纳入工程化的轨道,基本形成软件工程的概念、框架、技术和方法。这一阶段称为传统的软件工程。1.2.2软件工程软件工程的发展阶段:
40多年来,软件工程已经历了四个重要发展阶段:4.第四代软件工程
—组件工程3.第三代软件工程
—过程工程2.第二代软件工程
—对象工程1.第一代软件工程
—
传统的软件工程20世纪80年代中到90年代,面向对象的方法与技术得到发展,研究的重点转移到面向对象的分析与设计,演化为一种完整的软件开发方法和系统的技术体系,称为对象工程。1.2.2软件工程软件工程的发展阶段:
40多年来,软件工程已经历了四个重要发展阶段:4.第四代软件工程
—组件工程3.第三代软件工程
—过程工程2.第二代软件工程
—对象工程1.第一代软件工程
—
传统的软件工程20世纪80年代中开始,人们在软件开发的实践过程中认识到:提高软件生产效率,保证软件质量的关键是“软件过程”,是软件开发和维护中的管理和支持能力,逐步形成软件过程工程。1.2.2软件工程软件工程的发展阶段:
40多年来,软件工程已经历了四个重要发展阶段:4.第四代软件工程
—组件工程3.第三代软件工程
—过程工程2.第二代软件工程
—对象工程1.第一代软件工程
—
传统的软件工程20世纪90年代起,基于组件(Component)的开发方法取得重要进展,软件系统的开发可通过使用现成的可复用组件组装完成,而无须从头开始构造,以此达到提高效率和质量,降低成本的目的。这一阶段称为组件工程。软件工程概述软件工程软件工程的定义和基本原则软件危机和软件工程软件过程模型(上)软件过程模型(下)软件的概念、特点和分类软件工程的定义和基本原则1.3软件工程的定义和基本原则软件工程的提出:“软件工程”一词是1968年北大西洋公约组织(NATO)在联邦德国召开的一次会议上首次提出的,这个会议专门讨论了软件危机问题。它反映了软件人员认识到软件危机的出现及谋求解决这一危机的努力。因此,这次会议被看作是软件发展史上一个重要的里程碑。1.3
软件工程的定义和基本原则1968年德国人Bauer在北大西洋公约组织会议上的定义:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。1983年IEEE的软件工程定义:软件工程是开发,运行,维护和修复软件的系统方法。1993年IEEE的一个更加综合的定义:将系统化的,规范的,可度量的方法应用于软件的开发,运行和维护的过程,即将工程化应用于软件中+
这些方法的研究。软件工程的定义:1.3软件工程的定义和基本原则软件工程是指导软件开发和维护的工程性学科,它以计算机科学理论和其他相关学科的理论为指导,采用工程化的概念、原理、技术和方法进行软件的开发和维护,把经过时间考验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,以较少的代价获得高质量的软件并维护它。简言之:工程方法+管理技术+技术方法+经济软件工程的定义:1.3软件工程的定义和基本原则软件工程的层次:1.3软件工程的定义和基本原则软件工程的目标:(1)付出较低的开发成本;(2)达到要求的软件功能;(3)取得较好的软件性能;(4)开发的软件易于移植;(5)需要较低的维护费用;(6)能按时完成开发工作,及时交付使用。1.3软件工程的定义和基本原则软件工程的基本原则:著名的软件工程专家B.W.Boehm提出了软件工程的七条基本原理。这七条原理是确保软件产品质量和开发效率的原理的最小集合。这七条原理是互相独立的,其中任意六条原理的组合都不能代替另一条原理,因此,它们是缺一不可的最小集合,然而这七条原理又是相当完备的,人们虽然不能用数学方法严格证明它们是一个完备的集合,但是,可以证明在此之前已经提出的100多条软件工程原理都可以由这七条原理的任意组合蕴含或派生。1.3软件工程的定义和基本原则软件工程的基本原则:1.用分阶段的生命周期计划严格管理不成功的软件项目中有一半左右是由于计划不周造成的。2.坚持进行阶段评审软件的质量保证工作不能等到编码阶段结束之后再进行。3.实行严格的产品控制在软件开发过程中不应随意改变需求,因为改变一项需求往往需要付出较高的代价。4.采用现代程序设计技术采用先进的技术既可提高软件开发的效率,又可提高软件维护的效率。1.3软件工程的定义和基本原则软件工程的基本原则:5.结果应能清楚地审查根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得所得到的结果能够清楚地审查。6.开发小组的人员应该少而精开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。小组人员增加,交流情况和讨论问题而造成的通讯开销也急剧增加。7.承认不断改进软件工程实践的必要性不仅要积极主动地采纳新的软件技术,而且要注意不断总结经验。1.3软件工程的定义和基本原则软件工程的其他原则:抽象信息隐藏模块化局部化一致性完整性可验证性软件工程概述软件工程软件工程的定义和基本原则软件危机和软件工程软件过程模型(上)软件过程模型(下)软件的概念、特点和分类软件过程模型(上)1.4软件过程模型(上)软件工程过程的定义:软件工程过程是为获得软件产品,在软件工具的支持下由软件工程师完成的一系列软件工程活动。软件过程是一个任务集合,包括一组软件工程任务、里程碑和应该交付的产品。软件过程主要是定义了运用方法的顺序,应该交付的文档资料,为保证软件质量和协调变化所需要采取的管理措施,以及标志软件开发各个阶段任务完成的里程碑。1.4软件过程模型(上)软件过程示意图:方法与规范工具和设备有技能、经过培训的开发人员软件过程1.4软件过程模型(上)软件过程模型也称为软件生存期模型或软件开发模型,是描述软件过程中各种活动如何执行的模型。定义了软件开发活动,给出了它们之间的逻辑关系,为软件工程管理提供里程碑和进度表;为软件开发提供框架和方法。软件过程模型的定义:1.4软件过程模型(上)由于吸取了开发早期的教训,人们开始将软件开发视为工程来管理。类似于其他的工程管理,软件开发也具有一定的工序。“软件生命周期”这一概念真正被提了出来。瀑布模型是最早的过程模型。1、瀑布模型1.4软件过程模型(上)1、瀑布模型可行性研究可行性论证论告需求分析需求说明书运行与维护维护报告测试测试报告编码程序详细设计详细设计文档概要设计
概要设计文档运行阶段计划阶段问题定义目标与范围说明书开发阶段产生的文档1.4软件过程模型(上)例:某个老师(T)想要考察一个同学(S)的学习情况和技术水平,于是交给该学生一个任务。1、瀑布模型T:我有一个朋友想要一个图象浏览软件,能够查看多种格式的图像,包括BMP、TIFF、JPG、PNG,并且能够支持一般的放大、缩小。你能做这样一个软件吗?S:就是类似ACDSEE这样的软件吗?T:差不多,不过不需要那么强大的功能,我这个朋友计算机是外行,最好能做的比较方便,傻瓜型的,但是自动翻页这种功能还是要的。S:我以前学过BMP和JPG的图像格式解析,我想没有问题。T:好的,给你30天时间,下周你再来一趟,跟我讲一下你的工作进度。1.4软件过程模型(上)1、瀑布模型这位同学非常明白老师的意图,回去后想了一下,并列出了一个清单:
一、功能:1.读取、显示、另存四种格式图片(BMP、TIFF、JPG、PNG)2.放大、缩小3.列出当前目录下所有四种格式图片文件名4.PAGEUP(PAGEDOWN)自动调出当前目录上一张(下一张)图片二、其它说明:1.界面尽量简洁,容易操作2.不要图片预览和打印三、开发工具:VC++
四、开发环境:普通PC机;Windows7
五、工作计划:1.研究一下四种图片的格式2.设计一个解析器类,解析这四种格式3.设计一个文档类,实现读取、另存和目录浏览功能4.设计一个视图类,实现显示、缩放功能1.4软件过程模型(上)1、瀑布模型1.4软件过程模型(上)特点:(1)从上一项开发活动接受该项活动的工作对象,作为输入。(2)利用这一输入,实施该项活动应完成的工作内容。(3)给出该项活动的工作成果,作为输出传给下一项活动。(4)对该项目活动实施的工作成果进行评审。若工作得到确认,则继续进行下一次开发活动,否则返回前一项,甚至更前项的活动。1、瀑布模型1.4软件过程模型(上)1、瀑布模型优点:(1)消除非结构化软件。(2)降低软件的复杂度。(3)促进软件开发工程化。缺点:(1)阶段与阶段划分完全固定,阶段间产生的大量文档,极大地增加了工作量。(2)由于开发模型呈线性,所以当开发成果尚未经过测试时,用户无法看到软件的效果。这样,软件与用户见面的时间较长,也增加了一定的风险。(3)前面未发现的错误传到后面的开发活动中,可能会扩散,进而可能会造成更不理想的效果。1.4软件过程模型(上)增量模型是一种非整体开发的模型。软件在该模型中是“逐渐”开发出来的。该模型有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。2、增量模型定义概要需求把需求分配给需要设计系统结构开发系统增量验证增量组装增量验证系统系统不完全最终系统1.4软件过程模型(上)增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程。相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。2、增量模型1.4软件过程模型(上)2、增量模型问:增量模型和瀑布模型之间的本质区别是什么?答:增量模型包含了瀑布模型的基本活动,但是瀑布模型属于整体开发模型,它规定在开始下一个阶段的工作之前必须完成前一阶段的所有细节;而增量模型属于非整体开发模型,即它推迟某些阶段或所有阶段中的细节,然后不断将细节补充进去,每次增量过程都会发布一个可运行的产品,直到产生工作软件。1.4软件过程模型(上)2、增量模型优点:(1)客户不必等到整个系统全部完成就能得到他们所需要的东西。第一个增量构件满足他们最关键的需求,软件可以直接使用。(2)客户可以使用较早的增量构件作为原型,用于取得经验,从而获得稍后的增量构件的需求。(3)项目失败的风险较低。虽然在某些增量构件中可能遇到一些问题,但其他增量构件将能够成功地交付给客户。(4)优先级最高的服务首先交付,然后再将其他增量构件逐次集成进来。一个必然的事实是:最重要的系统服务将接受最多的测试。这意味着系统最重要的部分一般不会遭遇失败。1.4软件过程模型(上)2、增量模型缺点:要求待开发的软件系统可以被模块化。如果待开发的软件系统很难被模块化,那么将会给增量开发带来很多麻烦。1.4软件过程模型(上)2、增量模型适用于具有以下特征的软件开发项目:-软件产品可以分批次地进行交付-待开发的软件系统能够被模块化-软件开发人员对应用领域不熟悉,难以一次性地进行系统开发-项目管理人员把握全局的水平较高软件工程概述软件工程软件工程的定义和基本原则软件危机和软件工程软件过程模型(上)软件过程模型(下)软件的概念、特点和分类软件过程模型(下)1.5软件过程模型(下)3、快速原型模型
快速原型的工作模型是一个循环的模型,分为以下4步:1.快速分析:快速确定软件系统的基本要求,确定原型所要体现的特征(界面、总体结构、功能、性能)2.构造原型:考虑主要特征,快速构造一个可运行的系统。有三类原型:用户界面原型、功能原型、性能原型。3.运行和评价原型4.修改与改进运行和评价修改改进构造原型快速分析1.5软件过程模型(下)3、快速原型模型适用于具有以下特征的软件开发项目:-已有产品或产品的原型(样品),只需客户化的工程项目-简单而熟悉的行业或领域-有快速原型开发工具-进行产品移植或升级1.5软件过程模型(下)螺旋模型将瀑布模型与原型模型结合起来,并且加入两种模型均忽略了的风险分析。螺旋模型适应于风险较大的大型软件项目的开发。它的优点是将风险分析扩展到各个阶段中,大幅度降低了软件开发的风险。但是这种模型的控制和管理较为复杂,可操作性不强,对项目管理人员的要求较高。4、螺旋模型1.5软件过程模型(下)4、螺旋模型1.5软件过程模型(下)实施工程:按照确定的方案开发验证产品;风险分析:评估方案、标识风险和解决风险;客户评估:客户运行原型并评价后,计划下一周期工作。4、螺旋模型螺旋模型的每个螺旋周期可分为4个工作步骤:制定计划:确定当前周期的目标、方案和限制条件;1.5软件过程模型(下)该模型克服了瀑布模型不支持软件重用和多项开发活动集成的局限性,喷泉模型使开发过程具有迭代性和无间隙性。适宜面向对象的方法。迭代性:软件的某部分常常被重复工作多次,相关对象在每次迭代中随之加入渐进的软件成分。无间隙性:分析和设计活动等各项活动之间没有明显的边界。5、喷泉模型1.5软件过程模型(下)喷泉模型以面向对象的软件开发方法为基础,以用户需求作为喷泉模型的源泉。5、喷泉模型1.5软件过程模型(下)喷泉模型的特点:1.规定开发过程有分析、系统设计、软件设计和实现4个阶段。2.各阶段相互重叠,它反映了软件过程并行性的特点。3.以分析为基础,资源消耗成塔型,在分析阶段消耗的资源最多。4.反映了软件过程迭代性的自然特性,从高层返回低层无资源消耗。5.喷泉模型强调增量式开发,它依据分析一部分就设计一部分的原则,不要求一个阶段的彻底完成。整个过程是一个迭代的、逐步细化的过程。6.喷泉模型是对象驱动的过程,对象是所有活动作用的实体,也是项目管理的基本内容。7.喷泉模型在实现时,由于活动不同,可分为对象实现和系统实现,不但反映了系统的开发全过程,而且也反映了对象族的开发和复用的过程。
5、喷泉模型1.5软件过程模型(下)智能模型是基于知识的软件开发模型,它把瀑布模型和专家系统综合在一起。该模型在各个开发阶段都利用了相应的专家系统来帮助软件人员完成开发工作。智能模型是知识工程与软件工程在开发模型上结合的产物,是以瀑布模型和专家系统的综合应用为基础建立的模型。该模型通过应用系统的知识和规则帮助设计者认识一个特定的软件的需求和设计,这些专家系统已成为开发过程的伙伴并指导开发过程。6、智能模型1.5软件过程模型(下)6、智能模型获取需求需求分析具体描述优化程序调整验证维护知识库/专家系统程序1.5软件过程模型(下)智能模型的优点:通过领域的专家系统,可使需求说明更完整、准确和无二义性。通过软件工程专家系统,提供一个设计库支持,在开发过程中成为设计人员的助手。通过软件工程知识和特定应用领域知识和规则的应用帮助系统的开发。6、智能模型本章主要内容回顾1.1软件的概念、特点和分类1.2软件危机和软件工程1.3软件工程的定义和基本原则1.4软件过程模型(上)——瀑布模型、增量模型1.5软件过程模型(下)——原型模型、螺旋模型、喷泉模型、智能模型软件设计概述软件工程软件设计的任务和目标软件设计是软件开发的关键步骤,直接影响软件质量。软件设计阶段要解决“如何做”的问题。一、软件设计阶段的任务
将分析阶段获得的需求说明转换为计算机中可实现的系统。软件设计的工作流程如下图所示:1、软件设计的任务
软件设计的任务和目标确定软件结构确定系统的数据结构设计用户界面软件设计的目标就是构造一个高内聚低耦合的软件模型。软件设计高可靠性高可维护性高可理解性高效率软件设计的目标衡量软件设计的目标的准则:
软件实体有明显的层次结构,利于软件元素间控制;软件实体应该是模块化的,模块具有独立功能;设计规格说明清晰、简洁、完整和无二义性。软件实体与环境的界面清晰;软件设计的目标软件设计的过程大致包括如下活动:
体系结构设计抽象说明书接口设计构件设计数据结构设计算法设计软件设计过程软件体系结构设计(一)软件工程软件体系结构设计软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、元素间的相互作用、指导元素集成的模式,以及这些模式的约束组成。软件体系结构不仅指定了系统的组织结构和拓扑结构,显示了系统需求和构成系统的元素之间的对应关系,而且提供了一些设计决策的基本原理。软件体系结构设计系统结构设计(SystemStructuring)。将系统划分为一些主要的独立子系统,确定子系统间的通信方式。控制建模(ControlModeling)。建立系统各部分之间的控制关系。模块分解(ModularDecomposition)。将子系统分解为模块。体系结构的设计过程的主要活动:1仓库模型(Therepositorymodel)中央数据仓库(Repository)子系统1子系统2子系统n
仓库结构体系结构模型
应用系统用一个中央数据仓库来存储各个子系统共享的数据,其他的子系统可以直接访问这些共享数据。体系结构模型
在早期,仓库模型采用的硬件平台结构是主机/终端(Host/Terminal)结构,其拓扑结构如图所示。主机一般是一台大型甚至超级计算机,终端是一些功能有限、一般只负责数据输入输出的设备,常被称为“哑(dumb)终端”。仓库模型
层次结构模型将系统划分为若干层次,每个层次提供相应的服务,并且下层的服务只向它的直接上层提供。这种结构非常适合增量的软件开发,新增加的部分将位于原有的系统之上或将原系统包裹起来,进而扩展了原系统的功能。体系结构模型2层次模型(Thelayeredmodel)
分布式结构中的节点可以是同构的(即具有相同的软/硬系统),也可以是异构的,只要系统的所有节点采用相同的网络协议,能够无障碍地交换数据就能达到要求。下图是分布式系统的网络拓扑结构。体系结构模型3分布式模型(Thedistributedsystemmodel)优点:资源共享开放性高可伸缩性好容错能力强透明性高体系结构模型分布式模型的主要优缺点:缺点:复杂性安全性。可管理性不可预知性体系结构模型分布式模型的主要优缺点:3.1客户机/服务器模型(Client/ServerArchitecturalModel)客户机向服务器发出请求服务器响应请求用户界面层业务逻辑层数据访问层三种逻辑之间的关系体系结构模型
C/S结构是一种分布式模型,采用发请求、得结果的模式(1)两层客户机/服务器模型
TwoTierClient/ServerArchitecturalModel体系结构模型
三种情况:网络用户界面客户端逻辑应用服务端逻辑应用客户端用户界面逻辑应用数据访问用户界面逻辑应用数据访问服务器用逻辑层的映射情况数据访问C/S应用3C/S应用1C/S应用2体系结构模型应用逻辑层的映射情况(2)三层/多层应用模型(Three/MultiTierModel)数据库管理结点、商业逻辑结点、用户界面结点Databasemanagementnode(数据库管理结点)businesslogicnode(商业逻辑结点)Security(安全)
Event(事件)
Search(搜索)
ClientAClientDClientBClientC服务器客户机第一级第二级第三级体系结构模型3.2浏览器/服务器模型(Browser/ServerModel)
B/S模型实际上是一种典型的瘦客户结构。此结构中,客户端简单到只是一个浏览器;服务器是能够传送HTML页面的Web服务器。B/S结构应用系统的工作原理是:用户通过浏览器向Web服务器发出页面请求;服务器响应请求,并将指定的页面文件传送给客户浏览器;浏览器在接受到页面后,解释页面的内容,并将解释的结果显示在浏览器的窗口之中。
体系结构模型
云计算模型是对分布式处理、并行处理和网格计算及分布式数据库的改进和商业化处理,其前身是利用并行计算解决大型问题的网格计算和将计算资源作为可计量的服务提供的公用计算,在宽带技术和虚拟化技术高速发展成熟后云计算技术得以萌生。下图示意了云计算模式的拓扑结构。体系结构模型4云计算(CloudComputing)模型
为了支持大量用户,“云”中设置了服务器集群。集群可能由数量庞大的PC服务器组成,并采用虚拟化技术向用户推送服务。虚拟化是为某些对象创造的虚拟化(相对于真实)版本,比如操作系统、计算机系统、存储设备和网络资源等。它是表示计算机资源的抽象方法,通过虚拟化可以用与访问抽象前资源一致的方法访问抽象后的资源,从而隐藏属性和操作之间的差异,并允许通过一种通用的方式来查看和维护资源。体系结构模型云计算模型考虑子系统之间的控制流,控制方式分为:集中控制和事件驱动控制1.集中控制主程序程序1程序2程序3程序11程序12程序31程序32调用—返回模型系统控制器计算进程用户界面故障处理器传感器进程传动装置进程实时系统的管理者模型控制建模控制模型—由外部产生的事件来驱动系统分为:广播模型、中断驱动的模型事件/消息监听器子系统1子系统n子系统2事件处理器事件处理器事件处理器事件驱动系统控制模型
模块(Module)是命名的程序对象的集合,如过程、函数、类等。模块是构成软件系统结构的基本元素。一个大的系统总是由若干稍小的功能模块聚合而成的,而这些子模块可能又由更小的模块构成。模块分解模块分解模块分解的目的是将系统“分而治之”,以降低问题的复杂性,使软件结构清晰,便于阅读和理解,易于测试和调试,因而也有助于提高软件的可靠性。1.模块分解的目的模块分解模块具有如下三个基本属性:功能:指该模块实现什么功能,做什么事情。逻辑:描述模块内部怎么做。状态:该模块使用时的环境和条件。所谓模块的独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他的模块的接口是简单的。即独立性的模块应具有专一功能,模块之间无过多的相互作用的模块。2.模块的独立性模块分解
耦合性用于描述模块之间联系的紧密程度。内聚性用于描述模块内部联系的紧密程度。软件独立性的度量标准是两个定性指标:耦合性的几种类型内容耦合公共耦合控制耦合复合耦合数据耦合高耦合性低弱内聚性强偶然型逻辑型瞬时型通讯型顺序型功能型内聚性的几种类型模块分解(1)面向对象模型(Object-OrientedModel)在此模型中,系统被分解为若干能互相通信的、松耦合的对象,这些对象都具有精心设计的接口。(2)数据流模型(Data-flowModel)在模型中,一种称为函数转换(FunctionalTransformation)的单元处理数据的输入和输出。3.分解模型模块分解结构化设计方法软件工程结构化设计是一种软件开发活动,定义实现需求规约所需的软件结构
总体设计:确定系统的整体模块结构,即系统实现所需要的软件模块以及这些模块之间的调用关系。详细设计:详细描述模块内部设计与实现逻辑结构化设计概述
模块化抽象逐步求精信息隐藏一致性结构化设计原则
模块化
结构化方法下,模块被认为是构成软件系统的基本组件。模块的公共属性如下:每个模块都有输入输出;每个模块都有特定的逻辑功能,完成一定的任务;模块内部有属于自己的内部数据,其逻辑功能由一段可执行的代码实现。结构化设计原则
抽象
在结构化设计中,抽象起着非常重要的作用,可以先用一些宏观的概念构造和理解一个庞大、复杂的系统,然后再逐层用一些较为直观的概念去解释宏观概念,直到最底层的元素。结构化设计原则
逐步求精
在面对一个新问题时,开发人员先关注于与本质的宏观概念,集中精力解决主要问题,再逐步关注问题的非本质细节。结构化设计原则信息隐藏
在结构化方法下,程序由大小不一的模块构成,每个模块有自己的逻辑功能和数据结构。其他模块调用该模块时,无需知道其内部细节。
结构化设计原则一致性
整个软件系统(包括文档和程序)的各个模块均应使用一致的概念、符号和术语;程序内部接口应保持一致;软件与硬件接口应保持一致;系统规格说明与系统行为应保持一致。结构化设计原则结构化设计的启发性原则有:
模块的规模要适中;
降低模块之间的耦合;
提高模块的内聚程度;
加强模块的保护性
;结构化设计原则结构化方法下,设计模型由功能结构图、IPO图、系统流程图和配置图来描述。功能结构图从用户角度描述系统能够完成的任务。系统流程图从用户和开发人员角度,反映系统的构成。IPO图反应模块的外在形式。将系统的构成分布在网络上,得到系统部署图。结构化设计方法
结构化方法下,总体设计阶段必须以需求分析的结果(数据流图+数据字典)为基础进行设计,以得到系统的框架。结构化总体设计
一、详细设计任务详细设计阶段的任务是开发一个可以直接转换为程序的软件表示,即对系统中每个模块的内部过程进行设计和描述。
结构化详细设计二、常用的描述方法工具
1、流程图
2、结构化流程图(N-S图)
3、PAD图—问题分析图
4、PDL语言结构化详细设计流程图结构化流程图(N-S图)由顺序、选择、循环三种基本结构组成。顺序结构块1块2块3块4条件TF块1块2选择结构CaseI=1,2,3T块1块2多分支选择结构F块3块当条件成立时当型循环块直到条件成立时直到型循环结构化详细设计PAD图—问题分析图(problemAnalysisDiagram)条件then部分else部分选择结构TF任务1任务2任务3
顺序结构WHILE型条件循环体先判定型循环结构UNTIL型条件循环体后判定型循环结构控制变量
任务1任务2任务n多分支选择结构值1值2值n结构化详细设计例1:对数组X进行排序。“自顶而下,逐步求精”J:=hk:=h+1,nJ:=kH:=1,n-1排好第h个X[h]W:=X[h]X[h]:=X[j]X[j]:=w
1、循环一次,排好一个X[h]排好第H个X[h]找X[J]=MAX(X[h]…X[n])交换X[J]和X[h]2、细化X[k]>X[J](a)(b)(b)(a)3、连接各图,构成完整的PAD图H:=1,n-1H:=1,n-1H:=1,n-1H:=1,n-1H:=1,n-1结构化详细设计PDL语言(ProgrammingDefinitionLanguage)结构化详细设计面向对象设计方法软件工程面向对象的系统开发分为三个阶段:面向对象分析(Object-OrientedAnalysis,OOA);面向对象设计(Object-OrientedDesign,OOD);面向对象程序设计(Object-OrientedProgramming,OOP)。面向对象设计面向对象设计准则:1)抽象2)信息隐蔽3)弱耦合 4)强内聚5)可重用1、OOD的准则和基本任务面向对象设计基本任务在OOD中为了实现系统,需要以OOA模型为基础,重新定义或补充一些新的类,或在原有类中补充或修改一些属性及操作。因此,OOD的目标是产生一个满足用户需求的可实现的OOD模型。面向对象设计基本任务OOD的主要任务是对象设计。对象是一种封装了其状态以及改变状态的一系列操作的实体。在面向对象技术中,状态用一系列对象属性(Attribute)来表示;操作常称为方法(Method),用来描述对象可以提供的服务。对象由其关联的类创建。面向对象设计系统上下文(SystemContext)是一种静态模型,它描述系统结构的概貌。我们可以用一个框图(关联模型,AssociationModel)来刻画系统上下文。1.理解和定义系统上下文及用例模型【例1】一个报表系统的扼要功能模型面向对象设计过程【例2】报表系统的用例图1.理解和定义系统上下文及用例模型2.设计系统体系结构【例3】报表系统的结构3.标识系统中的主要对象【例4】报表系统中主要的类接下来的过程是标识系统中主要的对象。这里所说的对象实际上指对象所属的类。设计模型(DesignModel)展示了对象(类)之间的关系,是桥接系统需求与实现的关键。
有两种设计模型可共选择:静态模型:描述系统中对象静态关系的结构;动态模型:描述系统中对象交互的动态结构。4.形成设计模型【例5】报表系统的动态模型对象的接口(对外暴露的方法)是各对象之间交互的界面。一旦接口定下来,那么这些接口就应该有相当的稳定性,并且其他对象的开发者应该确信这些接口能够实现。报表系统中类Analyser的接口说明classAnalyser{publicdataset; //数据集publicreport; //报表publicdataimporter;//数据输入器publicdataexporter;//报表输出器publicanalyze();//数据分析器publicgenerateReport();//报表生成器};5.说明对象接口单一职责原则(SRP,TheSingleResponsibilityPrinciple)开放封闭原则(OCR,TheOpen-ClosedPrinciple)依赖倒置原则(DIP,TheDependencyInversionPrinciple)接口分离原则(ISP,TheInterfaceSegregationPrinciple)里氏替换原则(LSP,LiskovSubstitutionPrinciple)组合/聚合复用原则(CARP,Composite/AggregateReusePrinciple)最少知识原则(LKP,LeastKnowledgePrinciple)对象设计设计原则用户界面设计软件工程用户界面应具有的特性—什么是友好的用户界面。用户界面设计的任务—用户界面设计应该完成的工作。用户界面的基本类型—用户界面的工作模式。用户界面设计用户界面设计的特性可使用性灵活性界面的复杂性与可靠性用户界面设计的任务用户特性分析——建立用户模型用户界面的任务分析——建立任务模型(DFD图)确定用户界面类型用户界面设计的特性与任务争取保持一致性。满足普遍可用性的需求。提供信息反馈。设计对话框已产生结束信息。预防错误。允许动作回退。支持内部控制点。减轻短期记忆负担。用户界面设计原则用户界面设计要以人为本
用户界面设计迭代过程分析和理解用户活动在纸上设计原型与最终用户一起评价设计原型产生动态设计原型与最终用户一起评价实现最终的用户界面可执行原型用户界面设计原则按照显示方式分:正文菜单、图标菜单、正文和图标混合菜单,如:开始菜单。按屏幕位置和操作风格固定位置、浮动位置(弹出)、下拉式、嵌入式固定及下拉菜单固定菜单下拉菜单开始菜单用户界面基本元素1、菜单2、图像图形用户界面基本元素
对话框是在需要时,显示在屏幕上一个矩形区域内的图形和正文信息。以实现系统和用户之间的通信。有三种对话形式:
必须回答式如图1所示无需回答式如图2所示警告式如图3所示图1必须回答式对话框图2无需回答式对话框图3警告式对话框用户界面基本元素3、对话框图形学中称为视图区(Viewport),视为虚拟屏幕。一个实用窗口,可包含部件:菜单区(menubar)图标区(iconbar)标题区(titlebar)
移动区(movebar)大小区(sizebar)
退出区(quitbar)用户工作区(user’sworkbar)横向滚动区(horizontalscrollbar)纵向滚动区(verticalscrollbar)用户界面基本元素4、窗口
窗口窗口举例用户界面基本元素
1.交互风格交互类型主要优点主要缺点应用实例直接操纵快速直观,容易学习实现较难,适于对象和任务有视觉隐喻视频游戏CAD系统菜单选择避免用户错误只需很少键盘输入对有经验的用户操作较慢,菜单项多时操纵复杂一般用途的系统表格填写简单的数据人口易学习占较多的屏幕空间库存控制个人贷款处理命令语言强大灵活较难学习错误管理差操作系统,图书馆信息检索系统自然语言适合偶然用户容易控制需要键入的太多,自然语言理解的系统不可靠时刻表系统,WWW信息检索系统用户交互声频的使用小尺寸屏幕说明目标域:说明界面为何种操作设置专用设备意味着专用界面适当分配功能:考虑使用频率和重要性简化设计:关注主要功能为响应性设计:为中断做计划,提供持续的反馈用户交互
2.其他考虑因素出错信息尽量具体、精准,不要使用会让用户感到疑惑不解的专业术语、缩写等,不过用户的行话可能会有必要。尽可能使用主动语态而不是被动语态;肯定的语气比否定的语气容易让人接受;用一种客气的但不过分的语气。给出必要的提示或建议。需要考虑用户的经验甚至文化、地域背景。如果有可能应提供声音提示。功能与时尚的平衡2.显示设计显示内容的选择安排显示结构信息的表示方法3.颜色的使用限制使用的颜色数目并且用一种保守的方式使用它们。认识到颜色也是一种编码技术。使用颜色的改变来表示系统状态的改变。考虑颜色的生理作用。尽量不要用颜色来表示信息。功能与时尚的平衡数据库设计软件工程数据库设计概述在结构化方法下,需求分析阶段的数据字典是设计目标系统数据库概念结构的源泉;在面向对象方法下,分析类(实体类)是设计目标系统数据库概念结构的源泉。数据库结构设计包括:
概念结构设计
逻辑结构设计
物理结构设计数据库设计概述数据库概念结构设计
应用系统的概念结构数据模型通常用ER模型进行描述,ER图表示系统所管理的问题域概念。联系实体1属性实体2数据库逻辑结构设计数据库的逻辑结构就是数据表结构。将概念结构中ER模型的实体、关系、属性映射为数据表。实体映射为表,实体的属性映射为表的列,实体的主关键字作为表的主键;一对一关联可以引申为一个独立的表,也可以与关联的部分或全部实体组成表;一对多关联可以映射为一个独立表,或与多端实体组成表;多对多关联可映射为一个独立表,该表主键是关联实体的主关键字组合。数据库逻辑结构设计进行数据库的逻辑设计时,必须在检索效率(查找速度快)和存储效率(重复数据存储少)之间进行平衡,即进行必要的规范。范式是用来评价数据存储效率的规则,范式越高,规范性越强,数据存储效率越高。常见的范式从低到高是:1NF、2NF、3NF、BCNF和4NF。数据库物理结构设计得到数据库的逻辑结构之后,可以进一步表现为实际数据系统上物理空间的表、存储过程、字段、视图、触发器、索引等等。在采用面向对象技术开发应用系统时,设计人员要保证实体类和对应的数据表之间的映射关系。数据库设计实例
--以图书管理系统为例数据库概念结构设计ER模型实体-联系图数据库设计实例实体-属性图数据库概念结构设计ER模型数据库设计实例数据库逻辑结构设计表名称:
Administrator表说明:图书馆系统管理员数据项数据类型长度备注Administrator-no字符型10管理员唯一标识号Administrator-id字符型20管理员身份证Administrator-name字符型15管理员姓名Administrator-address字符型30管理员地址Administrator-telephone字符型30管理员电话Administrator-memo字符型300管理员备注数据库设计实例数据库逻辑结构设计表名称:
Reader表说明:图书馆读者数据项数据类型长度备注Reader-no字符型10读者唯一标识号Reader-id字符型20读者身份证明Reader-name字符型15读者名称Reader-sex字符型4读者性别Reader-age整型10读者年龄Reader-address字符型30读者地址Reader-telephone字符型30读者电话程序设计语言的选择软件工程软件的详细设计,完成了软件的过程性的描述,接下来进入程序编码阶段。软件构造(SoftwareConstruction)指通过编码、验证、单元测试、集成测试和排错的组合,创建一个可以工作的、有意义的软件。在本章中,我们将聚焦在该领域当中的程序设计语言、设计、编码和复用这几个话题,其余的将在后续章节中讨论。软件构造
低级语言包括机器语言和汇编语言。机器语言是直接用CPU二进制基本指令集或者是用经过符号化的基本指令集写成的代码,其存储由语言本身决定。无疑,用机器语言编写程序是所有程序员的噩梦。汇编语言是机器语言中地址部分符号化的结果,比机器语言更直观。汇编语言程序中可以包括一些宏构造,使其显得比机器语言更容易理解和使用。不过,即使汇编语言存在着生产效率低、维护困难、容易出错等缺点,但是在实现与硬件系统接口部分时,因其易于实现且效率高,仍然被频繁使用。5.1程序设计语言的选择5.1.1程序设计语言的分类
高级语言的表示方法要比低级语言更接近于待求解的问题,其特点是在一定程度上与具体硬件无关,易学、易用、易维护。高级语言的使用极大地提高了软件的生产效率。高级语言按语义分类:命令式、函数式、逻辑式按数据类型检查的时机分类:静态、动态按语言对类型的约束分类:强类型、弱类型按思维方式分类:面向过程、面向对象、混合型5.1程序设计语言的选择1.项目的应用领域。应尽量选取适合某个应用领域的语言。2.算法和计算复杂性。3.软件的执行环境。要选取机器上能运行且具有相应支持软件的语言。4.性能因素。应结合工程具体性能来考虑。5.数据结构的复杂性。要根据不同语言构造数据结构类型的能力选取。6.软件开发人员的知识水平以及心理因素。要特别注意选择语言时,尽量避免受外界的影响,盲目追求高、新的语言。
5.1.2程序设计语言选择准则5.1程序设计语言的选择程序设计方法1软件工程结构程序设计的概念最早是由E.W.Dijkstra提出来的。结构化程序设计方法(StructuredProgram),即SP法是结构化开发方法的重要组成部分。基本思想是自顶向下、逐步求精。基本原则是功能的分解与抽象。5.2程序设计方法5.2.1结构化程序设计
1.自顶而下、逐步求精这种逐步求精的思想符合人类解决复杂问题的普遍规律,从而可以显著提高软件开发的效率。体现了先全局,后局部、先抽象后具体的方法,使开发的程序层次结构清晰,易读、易理解还易验证,因而提高了程序的质量。2.单入口和单出口的控制结构结构化的程序是由且仅由顺序、选择、循环三种基本控制结构组成,既保证了程序结构清晰,又提高了程序代码的可重用性。
一、结构化程序设计特点提出和分析问题确定数学模型设计算法模块化编程程序整个编译、运行结构化程序设计步骤
三、优化设计
优化设计有多方面的内容,例如结构的优化,功能的优化,算法的优化和时间、效率的优化等等。二、结构化程序设计的基本原理
⑴不考虑时间因素的前提下开发并精简软件结构。⑵寻求软件设计结构中的“关键路径”和“关键事件”。仔细的设计该模块的实现算法。⑶选择合适的高级编程语言,提高程序的编译效率。⑷在效率和实现功能之间寻求平衡点。所谓的平衡点指的是,不要求为了一些不必要的功能而耗费大量的时间,从而降低效率,以致得不偿失。常用的软件优化方法程序设计方法2软件工程5.2.2面向对象程序设计
由于软件变得越来越庞大,设计过程也愈加复杂,对软件的可重用和可扩展性的需求越来越强烈。而结构化程序设计无法满足这样的需求。因此,面向对象的程序设计方法应运而生。面向对象的程序设计语言都支持面向对象技术的四个核心概念:数据封装、继承、多态和泛型编程。1.数据封装
将一组数据和这组数据有关的操作集合封装在一起,形成一个实体,称为“对象”。例如:有关时间的信息,面向对象技术定义1个数据类型:
classTimer{
时分秒等时间数据成员;
操作时间数据的成员函数;};
用户不必知道类的实现细节,只需根据类所提供的外部特性接口访问。2.继承
继承是面向对象语言的重要的概念,是软件可重用和可扩充问题的基础
。继承实现了一般和特殊的关系。在面向对象语言中,类功能支持这种层次机制。除了根结点外,每个类都有它的基类(baseclass)。除了叶结点外,每个类都有它的派生类(derivedclass)。一个派生类可以从它的基类那里继承所有的数据和操作,并扩充自己的特殊数据和操作。
3.多态性
所谓多态,是指一个名字(或符号)具有多种含义。即相同的操作的消息发送给不同的对象时,每个对象将根据自己所属类中定义的操作去执行,产生不同的结果。
这对仿真客观世界以及提升软件的灵活性有相当重要的意义。
在面向对象的程序设计语言中,多态是通过函数重载(overload)来实现的。4.泛型编程
所谓泛型编程(genericprogramming),是以独立于任何特定数据类型的方式编写代码。这就为程序员在编写可重用代码时提供了有用的工具。
泛型其实是一种运算符的多态,实现方式是类型参数化。
用一个类或者函数就能够处理具有不同数据类型的类或函数,且其实现细节相同。
泛型编程主要依托模板(template)来实现。模板有函数模板和类模板之分。
程序设计风格与代码审查软件工程5.3程序设计风格5.3.1源程序文件符号的命名。尽量用与实际意义相同或接近的标识符命名。源程序中的注释注释可分为序言性注释和解释性注释。错误的注释宁可不要。源程序的书写格式
讨论程序设计风格,是力图从编码原则的角度来探讨提高程序的可读性、改善程序质量的方法和途径。语句构造,尤其是流程控制语句的构造技术,直接影响到程序的可读性及效率。应采用直接、清晰的构造方式,而不要为了提高效率或者显示技巧而降低程序的清晰性和可读性。5.3.2语句构造方法
为使程序中的数据说明更易于理解和维护,数据说明的次序应当规范化:
可按说明类型(常量,简单变量类型,复杂类型)
一个语句说明多个变量时,按字母顺序排列。复杂的数据结构,要加注释。
输入输出技术输入和输出格式应尽可能统一。输出信息中应该反映输入的数据。输入和输出应尽可能集中安排。数据说明方法在高级别的警告模式下编译程序尽量采用自动化的编程工具交叉审阅代码只让一个功能模块完成一个任务正确性、简单性和清晰性是第一位的尽量避免全局和共享数据的使用总是初始化变量避免编写行数很多的函数,避免过深的嵌套编码策略
为保证代码开发的质量,在编码完成后,进行代码审查或称Review。审查内容:
1.程序的版式
2.文件结构
3.命名规则
4.表达式与基本语句软件代码审查软件测试概述软件工程
造成各类损失的新闻层出不穷,有些甚至带来灾难性的后果,软件质量问题已经成为所有使用软件的人和开发软件功能的人共同关注的焦点问题。“”软件缺陷或者软件故障软件测试,贯穿软件开发的整个过程,得到了越来越多的重视。IT行业中不可缺少得一环软件测试软件测试日益被重视的行业软件开发软件测试软件质量保证测试工程师软件测试发展历程软件调试独立的软件测试定义软件测试成为专门学科开发与测试的融合软件开发与软件测试关系软件测试与开发各阶段关系人们常常不把软件当回事,没有真正意识到它已经深入渗透到我们的日常生活中,软件在电子信息领域里无处不在。现在有许多人如果每天不上网查看电子邮件,简直就没法过下去。我们已经离不开24小时包裹投递服务、长途电话服务和最先进的医疗服务了。软件缺陷软件缺陷问题在哪里BECDA测试不够结构复杂设计错误技术本身编码错误软件缺陷产生原因软件本身团队工作缺陷产生原因项目管理问题技术问题需求不清晰结构太复杂数据备份通信问题新技术需求理解不一致开发水平不一致算法错误语法错误时间管理文档管理质量管理缺陷产生原因软件缺陷严重性致命的致命的错误,造成系统或应用程序崩溃、死机、数据丢失,主功能完全丧失等。严重的严重错误,功能或特性没有实现、主要功能丧失、会导致严重的问题等。一般的不太严重的错误,不影响系统的基本使用,但没有很好地实现功能,没有达到预期效果微小的一些小问题,对功能几乎没有影响.古人云:“说不出则做不到”为什么软件需求说明书引起缺陷最多?软件缺陷的构成测试用例(TestCase)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。测试用例=输入输出测试环境++什么是测试用例输入:实际上输入有两类,即前置条件和用某些测试方法所构建的实际输入。期望输出:即软件或程序的实际输出和后置条件。经济性有效性可仿效性独立性可跟踪性可修改性测试用例评价标准按是否需要执行被测软件的角度静态测试动态测试按测试方法划分白盒测试黑盒测试灰盒测试软件测试的分类按阶段划分单元测试集成测试系统测试验收测试回归测试Alpha测试Beta测试软件测试的分类谢谢大家!theend黑盒测试软件工程什么是黑盒测试黑盒测试方法黑盒测试概述黑盒测试等价类边界值决策表因果图正交试验法黑盒测试方法
等价类方法等价类是输入域的某个子集合,而所有的等价类的并集是整个输入域。在子集合中,各个输入数据对于揭露程序中的错误是等效的。等价类的特点完备性无冗余等价性等价类定义有效等价类
——是指对软件规格说明而言,是有意义的、合理的输入数据所组成的集合。无效等价类
——是指对软件规格说明而言,是无意义的、不合理的输入数据所构成的集合。检验正常功能检验异常功能划分等价类从对等价类的覆盖程度从是否对无效数据进行检测弱组合形式强组合形式一般等价类测试健壮等价类测试弱一般强一般弱健壮强健壮在有多个输入的情形等价类划分原则
边界值方法单边界值取值分析:在最小值、略高于最小值、正常值、略低于最大值和最大值处取输入变量值表示方法min、min+、nom、max-、和max边界值分析边界值组合分析:
一个有两个变量x1和x2的程序F,其中x1∈[a,b]和x2∈[c,d]。程序F的输入空间(定义域)如图所示。带阴影矩形中的任何点都是程序F的有效输入。基于“单故障”的假设使所有变量取正常值,只使一个变量分别取最小值、略高于最小值、略低于最大值和最大值。边界值分析测试方法决策表的构成决策表的化简决策表方法
条件桩:列出了问题的所有条件。条件项:针对条件桩给出的条件列出所有可能的取值。203动作桩:给出了问题规定的可能采取的操作。动作项:和条件项紧密相关,指出在条件项的各组取值情况下应采取的动作。决策表的构成规则任何一个条件组合的特定取值及其相应要执行的操作称为规则;在决策表中贯穿条件项和动作项的一列就是一条规则;决策表中列出多少组条件取值,也就有多少条规则,即条件项和动作项有多少列。决策表的构成(续)规则合并就是决策表的简化。有两条或多条规则具有相同的动作,并且其条件项之间存在着极为相似的关系,就可以将规则合并。条件项“—”表示与取值无关决策表的化简
因果图方法207原因与结果之间的关系恒等、非、或、与原因与原因之间的约束关系异、或、唯一、要求结果与结果之间的关系M约束因果图208
恒等c1
e1
e1=1
c1=1
e1=0
c1=0
非c1
e1
e1=0
c1=1
e1=1
c1=0
若c1是1,则e1也为1,否则e1为0。若c1是1,则e1为0,否则e1为1。4种基本符号(一)209
或c1e1c2c3e1=1c1=1或c2=1或c3=1否则e1=0与e1c2e1=1c1=1且c2=1否则e1=0c14种基本符号(二)E约束(异):原因a和原因b不会同时成立,两个中最多有一个可能成立。I约束(或):a、b、c这三个原因中至少有一个必须成立。O约束(惟一):原因a和b中必须有一个,且仅有一个成立。4种约束(一)R约束(要求):原因a出现时,原因b也必须出现,a出现时,不可能b不出现。输出条件的约束只有M约束,如果a为1,则结果b为0。当a为0,b的值不确定。4种基本符号(二)
正交表方法行数(Runs):正交表中的行的个数,即试验的次数。因子数(Factors):正交表中列的个数。水平数(Levels):任何单个因素能够取得的值的最大个数。正交表中的包含的值为从0到数“水平数-1”或从1到“水平数”正交表是一个二维数字表格。其形式为:式中L表示正交表,其余术语如下:L行数(水平数因子数)正交表概念和特征网址:http://www.york.ac.uk/depts/maths/tables/orthogonal.htm(单一)/techsup/technote/ts723_Designs.txt(混合水平正交表)如何查找正交表构造要因表:有哪些因素(变量)每个因素有哪几个水平(变量的取值)选择一个合适的正交表把变量的值映射到表中编写测试用例,并补充测试用例正交试验法设计测试用例的步骤谢谢大家!theend白盒测试软件工程白盒测试:White-boxTesting又称逻辑驱动测试或者结构测试把测试对象看作一个打开的盒子利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。白盒测试定义白盒测试分类(1)白盒测试分类静态白盒测试代码检查法静态结构分析法静态质量度量法动态白盒测试基于逻辑覆盖的测试,尽可能覆盖程序的结构特性和逻辑路径保证一个模块中的所有独立路径至少被使用一次;对所有逻辑值均需测试true和false;对程序进行边界检查;在上下边界及可操作范围内运行所有循环;检查内部数据结构以确保其有效性。白盒测试的动态测试要根据程序的控制结构设计测试用例,其原则是:白盒测试原则分类:根据覆盖目标的不同和覆盖源程序语句的详尽程度,逻辑覆盖又可分为:1.语句覆盖(StatementCoverage,SC):可执行语句2.判定覆盖(DecisionCoverage,DC):每个判定true、false3.条件覆盖(ConditionCoverage,CC):每个逻辑条件4.条件判定覆盖(Condition/DecisionCoverage,C/DC):每个判定的每个条件的所有可能5.条件组合覆盖(ConditionCombinationCoverage,CCC)几种逻辑覆盖标准发现错误的能力呈由弱至强的变化逻辑覆盖定义语句覆盖是白盒测试的一种。语句覆盖SC(StatementCoverage),就是设计尽可能少的测试用例,运行被测程序使得程序中每一可执行语句至少执行一次。语句覆盖在测试中主要发现缺陷或错误语句。可执行语句:不包含空白行【语句覆盖率计算】语句覆盖率=被评价到的语句数量/可执行的语句总数x100%【缺点】对程序执行逻辑的覆盖很低语句覆盖语句覆盖判定覆盖是白盒测试的一种。判定覆盖SC(Decisioncoverage),就是设计尽可能少的测试用例,运行被测程序使得程序中每个判定节点的取真和取假分支至少执行一次。【判定节点】菱形框【判定覆盖率计算】被评价到的判定路径数量/判定路径的总数X100%【缺点】判定覆盖虽然把程序所有分支均覆盖到了,但其主要对整个表达式最终取值进行度量,忽略了表达式内部取值。定义:判定覆盖判定覆盖比语句覆盖有更强的测试能力单分支条件结构:判定覆盖比语句覆盖会增加几乎一倍的测试路径。双分支或多分支条:判定覆盖和语句覆盖测试路径类似或相同。判定覆盖不需要仔细分析每个判定节点。并未深入到测试符合判定表达式的细节,并未测试到每个简单逻辑判定条件的正确性判定覆盖能够避免语句覆盖的第3个缺点(对隐式分支无效)。但仍然不能避免其余的2个缺点。判定覆盖与语句覆盖分析条件覆盖是白盒测试的一种。条件覆盖CC(ConditionCoverage),设计足够多的测试用例,运行被测程序,使得每一判定语句中每个逻辑条件的可能取值至少满足一次。逻辑条件【条件覆盖率计算】条件覆盖率的公式:条件覆盖率=被评价到的条
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年青年干部英雄烈士保护法应知应会测试题
- 2026年文化创意产业人才选拔策略及面试准备
- 2026年县级农村生活垃圾治理题库
- 2026年乡镇干部动物检疫申报流程竞赛题
- 塑料软包装用无溶剂复合聚氨酯胶粘剂生产项目可行性研究报告
- 2026年个人职业发展及职业规划指导试题
- 大学生争当老师演讲稿
- 2026年艺术学科知识脉络梳理与习题
- 油品数质量培训
- 王健林谈马云的演讲稿
- 安徽华师联盟2026届高三4月质量检测数学试卷(含答案详解)
- 2026年云南省戎合投资控股有限公司社会招聘8人笔试参考题库及答案解析
- 招21人!大通县2026年公开招聘编外临聘工作人员考试参考试题及答案解析
- 2025年山东省委党校在职研究生招生考试(政治理论)历年参考题库含答案详解(5卷)
- GB/T 7631.14-1998润滑剂和有关产品(L类)的分类第14部分:U组(热处理)
- GB/T 12008.2-2010塑料聚醚多元醇第2部分:规格
- 选择性必修一Unit1comfort-food课件(2020牛津译林版)
- 脊柱解剖学基础课件
- 高考历史考前备考指导课件:小论文方法指导-自拟论题、观点评析
- DB4401-T 19-2019涉河建设项目河道管理技术规范-(高清现行)
- 人保财险《保险基础知识》专题多选和简答
评论
0/150
提交评论