面向对象软件工程_第1页
面向对象软件工程_第2页
面向对象软件工程_第3页
面向对象软件工程_第4页
面向对象软件工程_第5页
已阅读5页,还剩244页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一个比较复杂的类图示例:,2)受限泛化给泛化关系(继承关系)附加约束条件,说明该泛化关系的使用方法和扩充方法。约束有:多重、不相交、完全和不完全。,多重继承:一个子类可以同时多次继承同一个上层基类。,和多重继承相反的是不相交继承:一个子类不能多次继承同一个上层基类(图中没有指定多重约束)(默认为不相交继承),完全继承:指父类的所有子类都已经在类图中穷举出来了。不完全继承:指父类的所有子类并没有在类图中穷举出来了。随着对问题理解的深入,不完全继承中可以不断扩充子类。(默认为不完全继承),4.依赖和细化1)依赖关系,描述两个模型元素(类、用例)之间的关系,其中一个模型元素是独立的(被箭头指),另一个依赖于该独立的模型元素。如,一个类使用另一个类的对象作为自己的函数的参数;一个类向另一个类发消息等。,(友元:依赖类可以使用独立类中私有的或保护的成员),2)细化关系:对同一个事物在不同抽象层次上描述时,这些描述之间的关系。,细化用来协调不同阶段模型之间的关系,表示各个开发阶段不同抽象层次模型之间的相关性,通常用于跟踪模型的演变。,例子:,动态模型,动态模型表示瞬时的、行为化的系统的控制性质,它规定了对象模型中的对象的合法变化序列。对象模型建立后,考察对象的动态行为。每个对象在生命周期的每个特定阶段都有一组运行规律和行为规则。状态:状态就是对象在其生命周期中的某个特定阶段所处的某种情形,即属性值的抽象。行为:行为是指对象达到某种状态时所做的一系列处理操作。事件:各对象之间相互触发(作用)形成了一系列的状态变化,一个触发行为称为事件。,通常用UML提供的状态图来描绘动态模型。注意:每个类的动态行为用一张状态图来描绘,各个类的状态图通过共享事件合并起来,从而构成系统的动态模型。动态模型是基于事件共享而互相关联的一组状态图的集合。,状态图,书3.6节,实例:电话的状态图,功能模型,表示变化的系统的“功能”描述,指明系统应该做什么通常,功能模型由一组数据流图组成。UML提供的用例图也是进行需求分析和建立功能模型的有力工具。以用例图建立起来的系统模型称为用例模型,它描述的是外部行为者所理解的系统功能。用例模型的建立是系统开发者和用户反复讨论的结果,它描述了开发者和用户对需求规格所达成的共识。,方框,椭圆,线条人,和他们之间的连线:一副用例图包含的模型有系统、行为者、用例和用例之间的关系。,用例图,用例图,1、系统:提供用例的黑盒子;内部工作的细节、如何实现都不重要;方框表示系统边界,划定系统功能范围;用例在框内,外部实体的行为者在框外。2、用例(usecase)定义:行为者感受到的、系统的一个完整的功能。UML中把用例定义为系统完成的一系列动作,动作的结果被特定的行为者观察到。这些动作除了完成系统内部的计算与工作外,还包括与一些行为者的通信。用例通过关联与行为者连接,关联指出一个用例与那些行为者交互,这种交互是双向的。用例特征:代表某些用户可见的功能,实现一个具体的用户目标;被行为者启动并向行为者提供可识别的值;必须是完整的。用例是类,代表一类功能,而不是某功能的具体实例;用例的实例(系统的一种实际使用方法)称为脚本,脚本是系统的一次具体执行过程。例如售货机中,张三投币买饮料等。,行为者(actor),定义:与系统交互的人或其他系统(代表外部实体)。使用用例并且与系统交互的任何人和物都是行为者。它代表一种角色,不是具体的人或物(一个具体人可以充当不同角色)。例如自动售货机中,使用售货功能的可以是张三或李四,但是张三李四这样的个体对象不是行为者。在用例图中用直线连接行为者和用例,表示两者之间交换信息,称为通信联系。行为者触发用例,并与用例交换信息。单个行为者可与多个用例联系,反之,一个用例也可以与多个行为者联系。对于同一个用例而言,不同行为者起的作用也不同。可以把行为者分成主行为者和副行为者,或者主动行为者和被动行为者。,4、用例之间的关系(泛化的两种不同形式)1)扩展关系向一个用例中添加一些动作后构成另一个用例,它们之间构成扩展关系。2)使用关系一个用例使用另一个用例,它们之间构成使用关系。,扩展:自动售货机中,“售货”是一个基本用例,购买灌装饮料很顺利。如果顾客要购买纸杯装的散装饮料,就需要进行一些改动。如果修改用例,会造成该用例和一些特殊的判断和逻辑混杂一起,使正常的流程晦涩难懂。解决办法:把常规动作放在“售货”用例中,把非常规动作放在“售散装饮料”里,这两个用例之间的关系就是扩展关系。,使用:自动售货机中,“供货“和”取货款”2个用例的开始动作都是去掉保险打开机器,结束动作都是关闭机器并上保险,可以从这两个用例中把开始的动作抽象成用例“打开机器”,把结束动作抽象成“关闭机器”。于是,“供货”和“取货款”用例在执行时必须使用上述的两个抽象用例,他们之间构成了使用关系。,扩展与使用的异同点,相同点:从几个用例中抽取那些公共的行为放入一个单独的用例中。不同点:目的不同。描述一般行为的变化时采用扩展关系;两个或多个用例中出现重复描述又打算避免这种重复时可采用使用关系。,用例在任何情况下都要使用。通过用例可以获取用户需求,规划和控制项目。获取用例是需求分析的主要工作。大部分用例在需求分析阶段产生,随着开发工作深入,会发现更多用例。每一个用例都是对系统一个潜在的需求。一个用例模型由若干幅用例图组成。创建用例模型的工作包括:定义系统、寻找行为者、寻找用例、描述用例、定义用例之间的关系、确认模型。其中寻找行为者和用例是关键。,用例建模,1、寻找行为者请用户回答下述问题有助于发现行为者:1)谁将使用系统的主要功能?2)谁需要借助系统的支持来完成日常工作?3)谁来维护和管理系统?4)系统控制哪些硬件设备?5)系统需要与哪些其他系统交互?6)哪些人或系统对本系统产生的结果感兴趣?,2、寻找用例一旦找到行为者,可以通过每个行为者回答下述问题来获取用例:1)行为者需要系统提供哪些功能?2)行为者自身需要做什么?3)行为者是否需要读取、创建、删除、修改或存储系统中的信息?4)系统中发生的事件需要通知行为者吗?5)行为者需要通知系统某些事情吗?6)系统需要哪些输入输出?输入来自哪里,输出到哪里去?7)当前使用的系统存在的主要问题是什么?,三种模型之间的关系,面向对象技术所建立的3种模型,分别从三个不同侧面描述了要开发的系统。这三个模型相互补充,相互配合,使人们对系统的认识更加全面:功能模型指明了系统应该做什么;动态模型明确规定了什么时候(在何种状态下接受了什么时间的触发)做;对象模型定义了做事情的实体。其中,对象模型是最基本最重要的,为其他两种模型奠定了基础。人们依靠对象模型完成三种模型的集成。,三种模型之间的关系,1)针对每个类建立的动态模型,描述了实例的生命周期或运行周期。2)状态转换驱使行为发生,这些行为在数据流图中被映射成处理,在用例图中被映射成用例,它们同时与类图中的服务相对应。3)功能模型中的处理(或用例)对应于对象模型中的类所提供的服务。,4)数据流图中的数据存储,以及数据的源点/终点,通常是对象模型中的对象。5)数据流图中的数据流,往往是对象模型中对象的属性值,也可能是整个对象。6)用例图中的行为者,可能是对象模型中的对象。7)功能模型中的处理(或用例)可能产生动态模型中的事件。8)对象模型描述了数据流图中的数据流、数据存储以及数据源点/终点的结构。,以CMS(内容管理系统)为例:“内容”包括文件、表格、图片、数据库中的数据,甚至图片、动画、视频等一切要发布到网站的信息。内容管理系统是一种位于Web服务器和后端办公系统或流程(内容创作、编辑)之间的软件系统。重点解决各种数字资源的采集、管理、利用、传递和增值。内容的创作人员、编辑人员、发布人员使用内容管理系统来提交、修改、审批、发布内容。,UML面向对象分析与设计一般过程举例,1.从需求到业务用例图OOA不改变Account类状态的操作:balance,summarize,creditLimit测试用例:1.open.setup.deposit.deposit.withdraw.withdraw.close;2.open.setup.balance.summarize.creditLimit.close;,2)基于属性的划分根据类操作使用的属性来划分操作。例,按属性Balance分可三类:使用Balance的操作;不使用Balance的操作;不使用也不修改balance的操作。,3)基于功能的划分依据类操作完成的功能来划分类操作。例,初始化操作:open,setup计算操作:deposit,withdraw查询操作:balance,summarize,creditLimit3.基于故障的测试一般依靠经验和直觉,类似于错误推测测试法。,12.4.2集成测试方法测试类协作可以使用随机测试方法、划分测试方法、行为测试等。1.多类测试,2.从动态模型导出测试用例,应使Account类实例遍历所有允许的状态转换:测试用例1:open.setupacct.deposit(initial).withdraw(final).Close测试用例2:open.setupacct.deposit(initial).deposit.blance.credit.withdraw(final).Close测试用例3:open.setupacct.deposit(initial).deposit.withdraw.AcctInfo.withdraw(final).Close,第13章:软件评价与管理,ANSI/IEEEStd729-1983定义的“软件质量”为:与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体。M.J.Fisher定义的“软件质量”为:所有描述计算机软件优秀程度的特性的组合。,13.1软件质量,在计算机发展早期,计算机内存容量有限,运行速度慢,人们设计软件时特别强调时间、空间效率。现今对软件质量已经开始形成较全面的评价。,13.1.1软件质量标准,一般说来,应从三个方面考虑软件质量:1)功能与性能方面软件应该能够按照既定的要求进行工作,与明确规定的功能和性能需求一致。软件要保证能够可靠的工作,合法的输入下正确运行,非法输入和意外事件可安全处理。,2)软件结构方面软件应该具备良好的结构:1)要求系统内部结构清晰,易于软件人员阅读和理解,方便对软件的修改和维护;2)要求系统具备良好的人机交互界面,方便用户使用。与明确规定的功能和性能要求相比,这些需求是隐含的,也是“软件质量”概念中所定义的。,3)开发标准与文档方面软件开发应该与明确成文的开发标准相一致,而且要遵循一些软件开发准则,软件文档资料也必须齐全。,以上三方面是相辅相成的,但还必须指出:A不同的人对软件质量的要求不同。用户要求软件使用方便,执行效率高;而维护人员要求软件文档资料清晰、完整。B不同的软件系统,它的关键特性有所不同。例如,可移植性是某类软件系统的重要特性,而对于另外一些系统却不是最重要的。,C质量的不同特性之间可能是矛盾的。例如,片面强调软件执行效率,设计出来的软件就可能结构复杂;追求良好的可靠性,就不一定能获得较高的运行速度。,大型软件系统的质量应该从可靠性、易理解性、易维护性和效率等几个方面评价。具体开发时应使诸多的质量特性最大限度地满足。,软件质量保证(SQA)主要做好几方面:1)应用技术手段软件质量保证活动开始于帮助分析员获得高质量的规格说明书,帮助设计员应用高效的技术方法和工具,并且始终贯穿整个开发过程。,13.1.2软件质量保证,2)组织技术评审在软件开发过程的每个阶段结束后,都需要组织技术评审,可以及早发现软件开发过程中可能引起的潜在错误,并对质量进行评价。,3)加强软件测试软件测试是软件质量保证的重要手段,可以发现软件中大多数隐蔽的错误。,4)推行软件工程标准标准是由用户或委托单位确定的,有时是设计者自定的。一旦标准确定,就应该重视标准,并在软件开发中统一遵循。因此,可以将软件规范情况作为软件技术评审的一项内容。,5)控制软件变更软件质量的一个主要威胁来自于对软件的修改和变更。在修改的过程中常常会引起一些新的潜在错误。因此,应严格控制软件的修改和变更。,6)对软件质量进行度量软件质量保证的一个重要目标也是对软件质量进行跟踪,这就需要对软件质量进行度量,并对软件质量情况及时记录和报告。,Boehm在1976年提出了定量评价软件质量的概念,并给出了60个质量度量公式,还第一次提出了软件质量的层次模型。,一、Boehm模型,13.2软件质量度量模型,McCall于1979年提出了包括软件质量要素、软件评价准则、软件质量度量的三个层次的McCall软件质量度量模型。,二、McCall模型,这个模型提出了11个软件质量要素,22个软件属性(评价准则)。其中11个质量要素分别面向软件产品的运行、修正和转移等三个主要用途。,软件的质量因素定义如下:1)正确性:软件满足设计规格说明及用户预期目标的程度,它要求软件没有错误。2)可靠性:软件按设计要求,在规定时间和条件下不出故障、持续运行的程度。3)效率:为完成预定功能,软件系统所需的计算机资源的多少。,4)完整性:为某一目的而保护数据,避免它受到有意、偶然的破坏或遗失的能力。5)可使用性:用户学习、使用软件以及为程序准备输入和解释输出所需工作量的大小。6)可维护性:对一个已投入运行的软件进行相应诊断和修改所需工作量的大小。7)可测试性:测试软件以确保其能够执行预定功能所需工作量的大小。,8)灵活性:修改或改进一个已投入运行的软件所需工作量的大小。9)可移植性:将一个软件系统从一个计算机系统移植到另一个计算机系统或环境所需工作量的大小。10)复用性:一个软件(或软件的部件)能再次用于其它应用的程度。11)互连性:连接一个软件或其他系统所需工作量的大小。,通常,对以上11个质量要素直接度量是困难的,因此McCall定义了一些评价准则,使用它们来估计软件质量要素的值。,三、ISO质量度量模型1985年,国际标准化组织(ISO)提出建议,软件质量度量模型由三层组成:1)高层是软件质量需求评价准则(SQRC)2)中层是软件质量设计评价准则(SQDC)3)底层是软件质量度量评价准则(SQMC),ISO的三层结构来源于McCall的模型,其高层、中层、底层分别与McCall模型的质量因素、评价准则、度量相对应。其中SQRC由8个质量因素组成,SQDC选用了23个评价准则。,ISO认为,高层和中层应建立国际标准,以便在国际范围内推广应用SQM技术。而底层SQMC则可以由各使用单位根据实际情况制定。,图13.4ISO建议的质量度量模型,1991年ISO发布的ISO/IEC9126质量特性国际标准中:SQRC(高层)改称为“质量特性”;SQDC(中层)称为“质量子特性”;SQMC(底层)称为“度量”。,高层质量特性降为6个,分别是:1)功能性;2)可靠性;3)可维护性;4)效率;5)可使用性;6)可移植性。中层子特性推荐使用21个。,软件的各种质量因素之间相互存在有利和不利的影响,所以没有一种软件的设计能同时使所有的质量因素都是最佳的。在实际中,应根据软件的不同类型和不同要求,对不同的评价准则给出不同的权重。,软件质量度量(SQM)技术,仍然处于发展和完善阶段。关于软件质量因素的选用,有面向用户的,有面向软件开发人员的,有面向管理人员的。根据ISO今年来讨论的趋势,逐渐向面向用户靠拢。因为,软件质量因素是在软件需求分析和定义阶段,由用户根据需要提出来的要求。,13.3软件工程管理,软件工程管理就是指对整个软件开发运行过程,包括分析、设计、编码、测试及维护各个阶段的一切活动进行有效的管理和控制。它主要包括开发人员、组织机构、用户、文档资料、计划进度、经费开支等方面的管理。,一、组织机构软件开发没有统一的模式,但是一个好的软件开发组织应该具有好的组织机构、合理的人员分工、有效的通讯。,13.3.1组织机构与人员管理,在大型软件开发组织结构中,软件经理负责管理软件开发部门,在各个项目间分配和协调各种资源。项目经理领导1到6个程序小组,管理一个具体项目的各个方面(包括计划、进度、审查、复审等)。,每个程序小组负责项目的一部分开发工作。审查小组从事质量保证活动,在项目开发每个阶段结束之前进行技术审查和管理复审。,二、主程序员组主程序员组由IBM公司在70年代初期提出,它是一种程序小组的较为流行的组织形式。,主程序员组中选用经验丰富、技术好的程序员担任主程序员。他负责主持计划、协调和复审该程序小组中的全部技术活动。技术人员一般由2到5人组成,负责软件分析和开发活动。后备工程师支持高级工程师(主程序员)的工作,必要时代替主程序员工作。,根据应用的规模和类型,程序小组可能还需要临时或长期地增加一些具体领域的专家、辅助人员(初级程序设计员、秘书、打字员等)、资料管理员。,三、用户用户是应用软件开发中一个重要的,不可忽视的因素。在软件开发过程中必须得到用户的密切配合与支持。项目负责人必须特别留意与用户保持联系,掌握用户的心理和动态,防止来自用户的一些干扰。,用户的干扰,如:1)不配合。这种表现来自于对软件持怀疑态度或抵触心理的用户。2)急于求成。3)变化无常。这种表现来自于个别用户不假思索,不断改变原有的需求,提出新的要求和修改意见。,为了保证软件开发能按预定的时间表进行,必须对软件开发过程加以控制:1)进度控制项目进度的制定应在软件定义与分析阶段完成,一旦制定,要严格执行,不要随意更改。,13.3.2软件工程控制,2)人员控制人员的频繁变动或流动将会大大增加软件出错机会,因此要保证开发人员的稳定性。至少要保证软件项目每一期工程,或者软件生存周期每一阶段中人员的相对稳定性。还要努力调动每一个开发人员的积极性。,3)经费控制要编制详细的经费预算,并在各个阶段进行经费的核算,尽量避免预算超支。4)质量控制认真抓好各个阶段的复审工作。,软件工程管理很大程度上是通过对文档资料的管理来实现的。每个阶段的文档资料是对前面工作的总结和审核,又是后一阶段的工作基础。所以,应该建立一套完整的文档资料体系,描述和记录整个开发过程。文档资料标准化是文档管理的重要课题。,13.3.3文档资料管理,13.4软件产权,软件产品的特殊性是:软件开发工作量大、周期长、投资高,然而软件复制却相当容易,而且复制费用很低。所以长期以来,软件产品的侵权行为非常严重,严重挫伤了人们开发软件的积极性。,计算机软件是一种人类智力的创作成果,享有的经济权利和精神权利主要靠知识产权来保护。有关软件产权保护的法律有:1)版权法2)专利法3)商标法4)商业秘密法,13.4.1软件知识产权的法律保护,1)版权法版权法主要保护对象是文字作品。计算机软件中的文档资料大部分是文字作品,源程序中的注释部分也是文字作品。如果将代码看作是特殊的文字,整个程序就是文字作品了。所以,版权法保护计算机软件。,版权法要求受保护的软件产品具有独创性(也称为初创性、原创性),不能抄袭或复制他人的软件。,2)专利法版权法保护的只是文字作品的表达形式,不保护作品中反映出的作者的构思、方案。软件产品的作者在软件构思上的工作是创造性劳动,类似于发明成果,可以使用专利法来保护。,对软件产品的保护,专利法比版权法要求严格。它要求受保护的软件具有三个特性:新颖性、技术先进性、实用性。对于已经获

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论