软件工程概念PPT_第1页
软件工程概念PPT_第2页
软件工程概念PPT_第3页
软件工程概念PPT_第4页
软件工程概念PPT_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

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

文档简介

目录一、软件工程概念二、软件开发模型三、结构化需求分析四、结构化设计方法五、面向对象方法六、软件测试七、软件过程八、ISO9000-3与CMM简介九、软件工具、平台与环境软件-计算机系统中的程序及其文档。程序是计算任务的处理对象和处理规则的描述;文档是为了便于了解程序所需的阐明性资料。工程-将理论和所学的知识应用于实践的科学。软件工程-应用计算机科学、数学及管理科学等原理,开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。软件工程是一门交叉性学科。一、软件工程概念软件工程框架软件工程可定义为三元组:<目标,原则,活动>

给出了软件所涉及的工程要素给出了各要素之间的关系给出了软件工程学科所研究的主要内容1、需求定义问题,即建立系统模型

主要任务包括:需求获取=>需求定义系统功能的一个正确的陈述需求规约=>系统需求规格说明主要成分:系统模型系统功能的一个精确、系统的描述需求验证软件工程的基本活动(1/3)2、设计在需求分析的基础上,给出系统的软件解决方案

总体设计=>系统的软件体系结构C/S结构以数据库为中心的结构管道结构面向对象的结构……

详细设计针对总体设计结果,给出每一构件的详细描述软件工程的基本活动(2/3)3、实现选择可用的构件;或以一种选定的语言,对每一构件进行编码

4、确认贯穿软件开发的整个过程主要体现为:软件测试

5、支持完善性维护纠错性维护软件工程的基本活动(3/3)1、概念软件过程、活动、任务的结构框架。瀑布模型演化模型增量模型螺旋模型喷泉模型

……外延-软件开发活动的组织内涵-求解软件的计算逻辑二、软件开发模型分析编码50年代末:二级模型“做什么”“编程-实现”需求分析设计编码测试运行瀑布模型雏型1、瀑布模型系统需求软件需求需求分析设计编码测试运行1970年,W.Royce将雏型进一步精化其中,每一阶段具有以下特征:从上一阶段接受工作对象,即输入;对这一输入实施本阶段的工作;给出本阶段的结果作为输出。系统需求软件需求需求分析设计编码测试运行归纳逻辑:

PQPQ

活动如瀑布流水式的组织规定每一活动的工作对象和输出评审、确认和反馈问题:无法通过开发活动澄清本来不确切的软件需求

=>维护、甚至返工的代价需求设计编码测试集成开发反馈开发反馈……核心系统开发第二次迭代2、演化模型针对事先不能完整地定义需求针对用户的核心需求,开发核心系统根据用户的反馈,实施活动的迭代需求设计编码测试集成13245678121110913增量1

1,2,5,9增量2

3,6,7,4,10,11增量3

8,12,13管理增量规约增量设计纠错性分析增量实现增量1增量2增量33、增量模型将项目分为若干个里程碑阶段定义稳定、灵活的体系结构,并为构件和子系统的开发提供统一的接口开发构件,始终维持一个可发布的系统版本可以准确把握项目进展情况增强开发人员的信心和成就感可以随时根据市场情况及时作出调整微软“同步-稳定的

产品开发模型”演化维护确认实现设计分析4、喷泉模型特征:迭代、无缝与面向对象技术的关系USDP体现了UseCase

驱动的、增量的、迭代的三、结构化需求分析需求分析位于软件开发的前期,它的基本任务是准确地定义未来系统地目标,确定为了满足用户的需要系统必须做什么。要回答:如何定义问题?就如何定义问题而言,如何获得需求如何规约需求如何验证需求1、关于需求获取需求面临的挑战:问题空间理解人与人之间的通信需求的不断变化(1)需求目标(1/2)在任何一个设计中,精确地陈述问题总是第一步。需求的目标是要简洁而精确地说明所要解决的问题:软件人员的注意力应在做什么和为什么做,而不是如何做。与用户和该领域的专家进行交流,导引出他们对软件产品的要求。基于对用户要求的理解,结合计算机软件的特有能力,创造出对用户有价值的,能提高产品的质量与可用性的新的产品要求。分析所定出的产品要求,判断其正确性、一致性、完整性和可行性。(1)需求目标(2/2)决定解决方案,完成高层次的设计,确定出功能子系统及子系统之间的接口界面。把产品要求以用户手册及工程设计技术要求的形式表达出来(可能还包括测试的标准),用于在开发的全过程中验证核实所开发的产品确能满足用户的要求,支持技术文档的管理,更重要的是支持需求变化的管理。(2)需求工程的重要性StandishGroup对350家公司的8000个软件项目作过一次调查。其中,31%的项目的结局是被取消。导致这些项目失败的原因是:13.1%不完整的产品要求;12.4%缺乏用户的参与;10.6%缺少资源(人力、财力);9.9%不现实的期望;9.3%高层领导支持不足;8.7%产品要求与指标的改变;8.1%没有制订计划;7.5%不再需耍该开发中的系统。其中,与产品需求有关的(1,2,4和6项)占了44.1%。这些数据突出地显示了软件产品需求在软件开发中的重要性。需求工程包括需求的引出、创造、分析、表述、验核和管理。软件需求工程做得好,它可以降低软件产品的成本和提高其质量,有助于产品按时完成;做得不好,它可以导致软件项目的失败。软件需求工程-这种发生在软件生命周期的初始阶段的错误是非常难于改正,并且是代价极高的。最新的研究兴趣聚焦于“需求引出”,因为它涉及到软件开发人员与非软件专业人员合作的问题。(3)需求工程的原则分析问题和需求的能力与思维和经验有关。好的思维包括:a>抽象:捕获问题空间的“一般/特殊”关系是认识、构造问题的一般途径b>划分:捕获问题空间的“整体/部分”关系是降低问题复杂性的基本途径之一c>投影:捕获问题空间的多维“视图”是描述问题的基本手段之一好的思维来源于:严谨、逻辑和“活跃”的思考习惯。严谨要求思考的对象应该是不放过任何一个“小”问题逻辑要求思考的过程应该是一种符合规则的推导过程活跃思维要求思考的方式应该是并行的,即不是仅一个角度,而是多个角度来思考问题经验来源于:开发了一些软件并善于总结-创新与教训跟踪最新技术具体地说,软件人员必须先在一定程度上熟悉并学习未来系统所涉及的专业领域,以满足工作的要求为目标。软件人员要懂得如何帮助用户去表达出他们对产品的耍求。因为需求获取是一个交互的过程。软件人员面对的用户是:他们不是计算机或软件的专业人员,他们不能完全清楚软件能带来一些什么新的功能可以帮助提高工作效率和提供新的服务,因此必须在需求规约中包括用户对产品工作性能、可靠性、可维护性和可扩展性等的需求。使用清楚而良构的语言完成需求规约。必须完全用问题领域方面的词汇来表达,不应该出现软件领域内的词汇。通过浏览文档,能够完全理解所要解决的具体问题和该问题的一般性解决方案。开始问题定义时,通常是建立一个词汇表。对于具有模糊含义的术语,或者在目前的问题中用于有限范围内的术语,要给出专门的定义。在词汇表中加入精化细节也是很有帮助的-那些通常归入功能性需求规范的东西,常体现在精化细节中。集中在公司的关键任务的目标上,一个新项目的开始,可能是执行一个已有的长期系统计划的结果,或来自于一系列高层战略信息系统计划编制的建议。因此,由此产生的建造,应该尽量基于长期的方向和目标,而不是针对商业危机或技术潮流而做出的反应。应该直接集中在公司的业务需要上,而不是技术人员的理想软件列表上。应该通过考察现在的应用情况,并根据其业务性能和任何预计的未来的市场影响,对每个系统进行分类。需求分类根据软件产品的性能指标和实现难度,对问题和需求进行分类:核心需求基本功能需求高级功能需求组合功能需求恰当地选取问题和需求的切入点所有问题和需求都有发生的根源,其表面现象往往是开发者思路的切入点。如果切入点是狭隘的,那么围绕着问题和需求的分析往往局限于自身的思路范围,问题和需求产生的原因就很难发现。所以当不能理解分析的问题和需求时,不妨先跳出思维惯例,寻求存在这样的问题和需求的原因,然后再分析理解之。交替反复分析多个问题和需求,寻找问题间的共性和特性。问题复杂化,是一个抽象问题或需求的逆过程。提出问题需求的许多可能的假设,丰富问题需求的形式。问题复杂化的意图是许多问题应该从更多的方面去验证不同环境下问题是否同样存在。问题抽象化,继而简化问题。众多的问题和需求变成程序式过程,就是公式化问题和需求。类模板就是一个抽象问题很好的例子。(4)需求获取技术的特征好的需求获取技术应具有的基本特征:方便通讯(使用易于理解的语言)提供定义系统边界的方法提供划分、抽象、投影等方法支持使用问题空间的术语,思考问题和编制文档允许采用多种可供选择的设计方法适应需求的变化需求获取技术示例-UseCase(IvarJacobson,1994)UseCase主要用于促进和用户的交流、沟通,为此使用了一种用户和开发人员都能理解的方式描述系统功能和行为。UseCase可以划分系统与外部实体的界限,是系统开发的起点,而最终应该落实到类和实现代码上。UseCase既然是对系统行为的动态描述,因此它是类、对象、操作的来源,是系统分析和设计阶段的输入之一,是分析和设计、制定开发计划、测试计划、设计测试用例的依据之一。UseCaseModel是系统需求分析阶段的成果之一。UseCase不但有助于帮助分析员理清思路,验证用户需求,而且也是开发人员之间进行交流的重要手段。(1)USECASE语义(1/2)一个USECASE是系统或其它语义实体(例如子系统或一个类)所提供的一块(unit)高内聚的功能,表示该系统和一个或多个外部交互者(称为操作者)交替出现的消息序列,以及该系统所执行的动作。可见,USECASE用于定义一个系统或一个其它语义实体的行为,没有揭示该实体的内部结构。每一USECASE说明(specifies)该实体与其操作者进行交互所执行的一个动作序列,以及其它动作(序列)的变体。(1)USECASE语义(2/2)USECASE包含一组操作和属性,这些操作和属性规约了该USECASE的实例所执行的那个动作序列。动作包含状态的改变以及该USECASE与其环境的通讯。如:执行该动作序列的前置条件

主要路径

可选择的路径

执行该动作序列的后置条件一个操作者定义了一组高内聚的角色,当用户与该实体交互时,用户可以扮演这一角色。对于每一USECASE,一个操作者有一种角色,即每一USECASE与具有一种角色的操作者进行通讯。操作者语义(2)USECASE产品结构(4)USECASE获取仿真法(Simulation)掌握用户的所有输入与输出的数据种类,通过仿真的方法,找出它们之间的对应关系,与及相应的数据处理过程。包括任何计划中将要新增加的数据类型与处理过程。原型法(Prototyping)从用户处取得一组基本的USECASE产品要求之后,立即建造USECASE产品的原型(这个原型可以是实际可运行的软件(外壳),或是一个用描述来表达的产品),然后让用户去模拟使用这个原型,提出修改的意见。其中,值得注意的是,不要忽略将要新增加的数据类型与处理过程。场景法(ScenarioGeneration)让用户穷举他们现有的所有的数据处理实践以及任何计划中将要新增加的数据类型与处理过程。从以上三种方法可以看出,UseCase的功能划分均要以角色为主体,行为是角色触发的。USECASE中包含的信息名称(Name)标识(Identifier)描述(Description)角色(Actor)状态(Status)活动及时序频度(Frequency)(6)关系在USECASE之间,或在操作者与USECASE之间,存在一些标准的关系:关联:参与关系,即操作者参与一个USECASE。例如,操作者的实例与USECASE实例相互通讯。关联是操作者和USECASE之间的唯一关系。扩展:USECASEA到USECASEB的一个扩展关系,指出了USECASEB的一个实例可以由A说明的行为予以扩展(根据该扩展所说明的特定条件),并依据该扩展点定义的位置,A说明的行为被插入到B中。包含:USECASEA到USECASEB的一个包含,指出A的一个实例将包含B说明的行为,即这一行为将包含在A定义的那部分中。泛化:USECASEA到USECASEB的泛化,指出A是B的特殊情况。1*<<include>><<include>><<include>><<extend>>thesalespersonasksforthecatalog

PlaceOrderextensionpointsadditionalrequests:aftercreationoftheorder

SupplyCustomerData

OrderProduct

ArrangePayment

RequestCatalogsalespersonSupervisor

EstablishCredit1*USECASE、Actor关系USECASE图USECASE图给出了操作者和USECASE以及它们之间的关系。即图中给出了一些操作者、一组关系、一些接口和这些元素之间的关系。关系是操作者和USECASE之间的关联是操作者之间的泛化是USECASE之间的泛化、扩展和包含可以将一些USECASE用一矩形括起,以表示所包括的那个系统或其它语义实体的边界。CheckstatusPlaceorderFillorder

EstablishcreditTelephoneCatalogSalespersonShippingClerkSupervisorCustomerUSECASE图示例(7)使用USECASE图的

建模类型使用USECASE图所建造的类型,可以从两个层面上进行分类,它们是“整体/部分”关系。系统建模(systemmodeling)系统建模用于描述软件系统的结构和行为业务建模(businessmodeling)业务建模用于企业或组织过程的优化和再工程业务建模的图形元素不仅包括普通的Actor和UseCase,还包括Worker、Artifact、Business过程描述时还应结合时序图(sequencediagram)和任务图(activitydiagram)结构化分析方法(1)概念数据流:加工:数据存储:数据源:数据潭:

概念是完备的。(2)建模过程

建立系统的DFD-功能模型建立系统环境图,确定系统边界自顶向下,逐层分解

建立数据字典

给出加工小说明2、关于需求规约数据流图-表达系统模型的工具结构符:+|{}AAABCB0C0B*

-用于定义数据结构判断表与判定树-用于给出加工小说明

ⅠⅡⅢⅣ(3)表示工具简化的商业自动化系统营业员收款员经理销售的商品现金额现金余额销售情况日销售额查询要求录入、修改或删除商品信息录入、修改现金额,并计算余额查询商品销售情况计算日销售额销售的商品现金额现金余额查询要求销售情况日销售额销售文件123判定要求查询要求统计销售情况计算日销售额销售文件查询要求2查询要求1销售情况日销售额加工3:数据字典:1、数据流:销售的商品=商品名+商品编号+单价+数量+日期现金额=余额=日销售额=非负实数查询要求=[商品编号|日期]查询要求1=商品编号查询要求2=日期销售情况=商品名+商品编号+金额2、数据存贮:销售文件={销售的商品}

(4)建模中需注意的问题i.模型平衡规则父图和子图必须平衡每个数据流和数据存储必须在数据字典中予以定义“叶”加工(最低层)必须给出加工小说明小说明和数据流图的图形表示必须一致例如:在小说明中,必须说明“输入数据流”如何使用如何产生“输出数据流”如何选取、使用、修改“数据存储”ii.控制复杂性规则上层数据可以“打包”上、下数据流对应关系在数据字典中给出,但包内数据流的性质(输入、输出)必须一致一幅图中的图元个数应控制在7+/-2以内与每一加工相关的数据流的数目应适中(与层次有关)分析数据内容,确定是否所有的输入信息都用于产生输出信息分析加工,确定一个加工所产生的输出,是否都能由该加工的输入信息导出3、关于需求验证SRS-SoftwareRequirementsSpecification有关SRS内容方面:(1)正确性:指的是SRS中陈述的每个需求是否都表达了系统的某个要求。(2)无二义性:指的是SRS中陈述的每个需求是否都只有一种解释。(3)完整性:未来系统所做的任何事情都包含在SRS的陈述中未来系统响应所有可能的输入(包括有效和无效)SRS中没有被标识为“待定”的内容(4)可验证性:SRS中陈述的每个需求都是可验证的,即当且仅当存在一个有限代价的过程(人工或机器)可以检查构造的软件产品是否符合用户的需求。(5)一致性:SRS中陈述的需求没有与以前的文档发生冲突SRS中陈述的各个需求之间没有发生冲突(6)可理解性有关SRS格式与风格方面:(7)可修改性:指的是SRS的结构和风格使任何对需求的必要修改都易于完整、一致的进行。(8)可被跟踪性:指的是SRS中的每个需求的出处都是清楚的,这意味着SRS中包含对前期支持文档的引用表。(9)可跟踪性:指的是SRS的书写方式有助于对其中陈述的每个需求进行引用。(10)设计无关性:指的是SRS不暗示特定的软件结构和算法。四、结构化设计要回答如何解决问题,即给出软件解决方案分为总体设计和详细设计两部分总体设计的任务:如何将DFD转化为MSD分两步实现,第一步:如何将DFD转化为初始的MSD

分类:变换型数据流图=>变换设计事务型数据流图=>事务设计变换型:事务型:12345678abcdefhgyxz123546abcdefgy数据流图分类XX系统变换模块geteputhputggetcgetdc,d->ee->ff->g,hh->yputyg->xputxx->zputzgetagetbb->da->ceeg,hhgzzxxgyyhdbcacdeefg,hfxab变换设计事务中心输入模块路径1路径2输出模块aycgbfc->ecee->gegb->dbdd->fdf事务设计第二步:如何将初始的MSD转化为最终可供详细设计使用的MSD模块的概念模块化模块化度量:内聚耦合设计规则-经验规则精化初始的MSD-体现设计人员的创造耦合不同模块之间相互依赖程度的度量。内容耦合:一个模块直接修改或操作另一个模块的数据。公共耦合:两个以上的模块共同引用一个全局数据项。控制耦合:一个模块向另一模块传递一个控制信号,接受信号的模块将依据该信号值进行必要的活动。标记耦合:两个模块至少有一个通过界面传递的公共有结构的参数。数据耦合:模块间通过参数传递基本类型的数据。内聚一个模块之内各成分之间相互依赖程度的度量。偶然内聚:一个模块之内各成分之间没有任何关系。逻辑内聚:几个逻辑上相关的功能放在同一模块中。时间内聚:一个模块完成的功能必须在同一时间内完成,而这些功能只是因为时间因素关联在一起。过程内聚:处理成分必须以特定的次序执行。通信内聚:各成分都操作在同一数据集或生成同一数据集。顺序内聚:各成分与一个功能相关,且一个成分的输出作为另一成分的输入。功能内聚:模块的所有成分对完成单一功能是最基本的,且该模块对完成这一功能而言是充分必要的。启发性规则经验的总结:改进软件结构,提高模块独立性;模块规模适中-每页60行语句;深度、宽度、扇入和扇出适中;模块的作用域力争在控制域之内;降低模块接口的复杂性;模块功能应该可以预测。详细设计详细设计的任务是定义每一模块。结构化程序设计三种控制结构:顺序

begins1;s2;…snend;选择

if条件表达式

thens1elses2;循环

while条件表达式dos;s1s2s1s2...s几种表示工具流程图、PAD、N-S图、伪码等。流程图:伪码伪码是一种混合语言,外部采用形式语言的控制结构内部使用自然语言例如,begin

输入一元二次方程的系数a,b,c;ifb2-4acothen计算两实根

else输出无实根;end.S1S2S3S1S2X5X<5S顺序:选择:循环:注:支持逐步求精设计PAD图

支持逐步求精设计举例顺序:选择:循环:条件FTS1S2循环条件循环体N:=1..10

X>5TFFTS1S2S3S4S5S6S8S7S9S10

X>10&Y>3N-S图五、面向对象方法1.核心概念2.行为描述3.关于过程4.UML要点5.面向对象方法与结构化方法的比较OO方法看待世界的观点世界是由对象构成的;对象有其自己的属性和内部运动规律;对象之间的相互作用,构成了大千世界的各式各样的不同系统。掌握面向对象方法的“技巧”知识=概念+关系+条件/过程建模=(实际事物概念)+表示(形式化或半形式化符号)抽象:关注一个事物的重要的或主要方面,而忽略或去掉不重要的或没意义的细节。其中,就软件开发而言,根据当前情况和需要,应以细节的不同层次来观察问题控制复杂性,并考虑正确性、可维护性、可复用性和可理解性模型:anyabstractionthatincludesallessentialcapabilities,properties,oraspectsofwhatisbeingmodeledwithoutanyextraneousdetails[Firesmith,Henderson-Sellers]实践1、核心概念对象(Object)分析层:对客观事物的抽象。设计层:面向对象系统中的基本成分,是数据和操作(或谓属性和行为)的封装通信单位。数据表示对象的属性状态,操作(或称方法)决定了对象的行为和与其它对象进行通信的接口。实现层:类的实例。Anyabstractionthatmodelsasinglething.[Coad,Coleman,…OMG]Anyperson,place,orthing.[Embley]Anyidentifiable,encapsulatedentitythatprovidesoneormoreservicesthatcanberequestedbyaclient.[Jacobson,OMG]Anyencapsulationofproperties(e.g.,data,state)andbehavior(e.g.,operations).[Booch,Coad,Firesmith,Jacobson,OMG]对象的三个基本特征:自治性封闭性通信性举例说明(1/3)例如,在一个特定领域中,域对象包括:ApplicationObjectAnyobjectthatmodelsanyinterfaceswithanend-userapplication.[OMG]Anyobjectencapsulatinganentireapplication.[ODMG]BusinessObjectAnyobjectthatmodelssomeessentialaspectoftheapplicationdomain.[OMG]举例说明(2/3)ControllerObjectAnydomainobjectthatexisttoeithercontroloneormoreobjectsorcaptureuserinputasinthemodel-view-controller(MVC)framework.[Coleman,Firesmith]EntityObjectAnyobjectinabusinesssystemthatrepresentoccurrencesthatarehandledinthebusiness.[Jacobson]举例说明(3/3)ModelObjectAnydomainobjectthatmodelsanapplicationdomainthings.[Firesmith]Problem-DomainObjectAnydomainobjectthathasadirectcounterpartintheapplicationenvironmentaboutwhichthesystemshouldhandleinformation.[Jacobson]ViewObjectAnydomainobjectthatexiststoprovideauserviewof(i.e.,informationaboutandcontrolover)oneormoremodelobject.[Firesmith]

还可以从不同角度(例如,构造、环境响应等方面)引入特定的对象分类。属性表示对象状态的一组值。Anynamedpropertyusedasadataabstractiontodescribeitsenclosingobject,class,orextent.[Firesmith,Rumbaugh]Anynamedpropertyofanobjectthattakesaliteralasitsvalue,definestheabstractstateofitsobject,andappearwithintheinterfaceratherthentheimplementation.[ODMG]举例说明(1/2)基属性:不能由其他属性导出的属性类属性限定符(Qualifier)Anyattributeofanobjectthatdistinguishesitfromotherobject,therebyactingasarelationshipcardinalityconstraint.[Firesmith,Rumbaugh]举例说明(2/2)AttributeSignatureThesignatureofanyattributedeclaresits-name-type-initialvalue(ifany)[ODMG]AttributeTypeAnytypeofobjectusedanattribute.[Firesmith,Jacobson]AttributeAssociationAnyassociationwhichcapturestherelationshipfromtheobjecttothatpartofitsattributethatholdthevalueoftheattribute.[Jacobson]

操作(Operation)为其它对象提供的服务。Anydiscreteactivity,action,orbehaviorthatisperformedby(i.e.,belongsto)anobjectorclass.[Ada95,Firesmith,Hender-Sellers]Anyservicethatcanberequested.[Jacobson,Martin,OMG]同义词:功能(Function)

方法(Method)

服务(Service)举例说明AbstractOperationAnyoperationthatisdeclaredby,butnotimplementedin,anabstractclass.ConcurrentOperationAnyoperationthatcontainsoneormoreseparatethreadsofcontrol.AggregateOperationAnyoperationthathasbeenfunctionallydecomposedintotwoormoresub-operations.连接(1/2)AssociationAnysemanticrelationshipbetweentwoormoreclassortypes.[Booch]ConnectionAnyproblemdomainassociationormappingbetweenobjectsthatrepresentswhatoneobjectneedstoknowaboutsomenumberofotherobjectsinordertofulfillitsresponsibilities.[Coad]连接(2/2)属性关联

对象与其自身有值的部分属性之间的关系。基关联

不能用其它关联定义的关联。被导出的关联

由其它关联定义的关联。函数

返回一个值的操作。关系

Anyobjecttypemodelinganassociationwhoseextensionisasetoftuples.[Martin/Odell]c1c2c3c4c5c6c7p1p3p2p4p5拥有关系:{<p1,c3>,<p1,c4>,<p2,c1>,<p3,c2>,<p4,c6>,<p5,c7>}模型化为1..20..1

拥有关系连接概念解析注意:其中的连接标识和约束其他概念为了控制信息组织的复杂性,引入了:类(class)

一组具有共同特征的相似对象的抽象描述,即相似的结构,相似的行为和相似的关系。类是面向对象语言的基本成分面向对象程序的唯一构造单位抽象数据类型的具体实现对象的生成模板Anyuniquely-identifiedabstraction(i.e.,model)ofasetoflogically-relatedinstancesthatsharethesameorsimilarcharacteristics.[Firesmith,Lorenz,Rumbaugh]Anyconceptthathasmembers.[Henderson-Sellers]举例说明(1/2)抽象类聚合类Collection(toholdcomponentobjectsofasingletypeanditssubtypes.[Firesmith])Container(toholdunrelatedcomponentobjectsofmultipleunrelatedtypes.[Booch,Firesmith,Rumbaugh])Structure(class)(componentobjectsofwhichareinterrelated.[Firesmith])基类,超类复合类(Compositeclass)Anyclassthatcomposedofotherclasses.[Wirfs-Brock]举例说明(2/2)并发类(ConcurrentClass)

Anyclasswhoseinstancesareconcurrentobjects.[Firesmith]activeclass:anyconcurrentclassofactiveobjectthatexecutewithouttheneedforincomingmessages.[Firesmith]guardedclass:anyconcurrentclass,theinstancesofwhichprovideandenforcemutuallyexclusiveaccessinaconcurrentenvironment.[Firesmith]synchronousclass:anyclasswhoseinstancesguaranteetheirsemanticsviamutualexclusioninthepresenceofmultiplethreadsofcontrol.[Booch]

还可以从不同角度(例如:地位和作用等方面)引入特定的类。继承(Inheritance)面向对象中的复用机制。Theincrementalconstructionofanewdefinitionintermofexistingdefinitionswithoutdisturbingtheoriginalconstructionsandtheirclient.[Ada95,Firesmith]例如:类继承事件继承单继承/多继承动态继承(需要动态绑定的继承)2、行为描述行为分类准则(三条):有相同(相似)的导致行为状态变迁的原因集有相同(相似)的状态变迁历史有相同(相似)的功能

状态1

状态2

状态3

状态4条件1条件2条件3条件4操作1操作2操作3操作4操作5操作6操作7操作8蕴含蕴含蕴含COAD方法依据行为分类准则(三条)以状态图和服务流程图来表达类的行为为了表示对象动态行为,引入了:状态:表示对象所处的阶段、活动和外征

Statesmaybeusedtomodelanon-discreteorlong-runningactivity,oracontinuousactivitythatmustbeinterruptedtoallowaresponsetoeventsorconditionsthataffectanobject.转换:在事件的激发下,状态的变迁事件:引起状态变迁的条件、动作(action)协作、交互、消息……状态1@或/和条件Action状态2@或/和条件Action状态3状态4@或/和条件Action状态6状态5状态7@或/和条件Action状态8条件条件OMT/OSA以状态网来表示类的行为协作(Collaboration)在介绍协作概念之前,先说明以下分类符(classifier)这一概念。分类符(Classifier)是一个元素,它描述了行为和结构的特性(Feature)。分类符有不同的形式,包括类、数据结构、接口、构件以及定义在其他元模型包中的元素。Classifier

DataType

ClassisActive:BooleanInterface

Node

Component

NodeElementname:NameElementResidecevisibility:visibilityKind+deploymentLocation+resident+implementationLocation+resident****协作的概念thecooperativeinteractionoftwoormoreobjectorclassesforsomecommonpurpose(e.g.,toprovidesomehigher-levelbehavior).[Booch,Firesmith]目标:规约一个操作或一个分类符(如usecase)怎样通过一组分类符和关联来细化之。协作定义了一个语境,在这一语境内,被细化的那个行为可以利用它们之间的交互予以说明。因此,当一个模型描述整个系统时,一个协作是该系统模型的一个切片,一个设计。一个协作定义了该模型内容的一个子集的用法。可以在两个层次上,表示一个协作,在规格说明层,协作图将给出分类符角色和关联角色在实例层,协作图将给出与该协作内那些角色相一致的实例和链在一个协作中,要规约必须包含的分类符;要规约参与协作的实例必须具有的性质,即规约每一参与者所需要的特性;要规约参与者之间必须存在的关联。分类符与分类符角色的关系当一个分类符是实例的完整描述时,则一个分类符角色是对一个特定协作中所需要的那些特性的描述;如此的分类符仅表述它们是特定分类符角色的基本分类符。由于一个实例可以源于多个分类符,因此一个分类符角色可以有不同的基本分类符。不同分类符角色,甚至在同一协作中,可以有同一基本分类符,但它们的特性和所包含的元素可以是不同的特性子集和该分类符所包含的不同元素。因此,这些分类符角色规约了同一分类符的实例扮演了不同的角色。协作与其规约的“对象”当一个协作用于规约一个分类符(例如一个USECASE)时,则该分类符的基类可以是任意类型的分类符,如类或子系统;当在一个协作中规约了一个操作的细化,则这些基本分类符是该操作的参数类型(包含属性类型)和拥有该操作的分类符所包含的其他分类符。在一个协作中的关联角色在一个协作中,关联角色定义了在这一语境中分类符之间需要的关联。每一关联角色表示了在该协作中的一个关联的用法,并定义了分类符角色之间表示关联的分类符。该关联称为那个关联角色的基关联。当该关联角色规约了一个关联的特定用法时,由该关联端所表达的所有约束,对于完成所指定的用法而言不是必需的。在该协作中,该关联端的多重性可以减少。关于协作中的关联在一个特定的协作中,一个关联可以被旋转方向,但不是所有的关联都允许旋转。一个关联端的可变性和定序,在关联端角色中可以增强,即在一个特定的用法中,该端点可以以更严格的方式(与该关联端的定义相比)予以使用。如果一个关联有一组限定符,则其中一些可以用于一个特定的协作。因此,一个关联端角色可以包括那些限定符的子集,其中这些限定符是由该基类的所对应的关联端定义的。协作实例中的实例与角色在协作实例中,一个实例扮演一个特定的角色。在一个协作实例中,扮演一个特定角色的多个实例,由该分类符的多重性予以说明。一个实例在一个协作的不同实例中,可以扮演不同的角色。事实上,该实例可以在一个协作的同样实例中,可以扮演多个角色。关于“不同的实例扮演同一角色”不同的实例可以扮演同一角色,但它们在不同的协作实例中;由于这些实例扮演同样角色,因此它们都必须与说明该角色的分类符角色一致。它们经常是该分类符角色的基分类符的实例,或是它的后裔的实例。由于它们必须具有对应与该分类符角色所说明的那些属性的值,并且必须参与在对应连接到该分类符角色那些关联角色的链,因此它们可以是满足以上要求任意分类符的实例。当然,这些实例有比该分类符角色更多的属性值。例如,它们可以源于该基类子类的一个分类符。另外,如此的实例还可以有比它源于的多重分类符更多的属性值。协作之间的关系协作对其它协作可以有一般关系,这意味着一个协作指出了另一协作任务的特殊任务。即子协作不仅包含父协作任务的所有角色,而且还可以包含新的角色;父协作任务的角色也可能以新的特性予以说明。对此,有二种办法将一个协作特殊化:对现存的角色增加新的特性或增加新的角色。关于角色的交互与一个协作的角色相一致的这些实例,应相互交互,以实现要具体化的那个分类符的行为,这个可用一组交互说明之。因此,该协作说明了一个语境,在该语境下,这些交互被执行。如果该协作表示一个操作,则该语境包括了像参数、属性、包含在具有该操作的分类符中的一些分类符。因此该交互说明了这些参数、属性值、实例等将如何协作,实现该操作所说明的行为。如果一个协作是另一协作的特殊(specialization)协作,则由父协作说明的通讯也被包含在子协作中,子协作包括了父协作的所有交互。然而,可以在这些通讯中插入新的消息,即子协作可以具有新的角色。当然,子协作还可以包括父协作中没有的新的交互关于协作的组合目的两个或多个协作可以组合在一起,以精化一个高层协作。例如,当精化一个高层usecase时,可以将规约每一个usecase的协作组合在一起,成为一个协作,它将是该高层协作的一个简单精化。如何组合只要将一个实例参与这两个协作实例,就可以实现这一组合协作。这一实例必须与这两个协作中的一个分类符角色一致。在组合协作中,这两个分类符角色合并为一个新的分类符角色,它将包含两个源分类符角色的所有特性。新的分类符角色将能满足原来二个协作的需求,如此的实例将与新的分类符角色一致。关于“协作”的小结(1/2)一个协作定义了如何以特定的方式使用一些分类符和关联,来细化一个操作或一个分类符,如一个usecase。协作定义了由一组实例或链所扮演的角色,同时定义了一组交互,这组交互定义了扮演角色的那组实例之间的通讯。协作给出了分类符模型的一个视图(限制,切片,具体化),该视图描述了扮演角色的那些实例所需要的关系,也描述了所需要的包含在这些分类符中的特性。关于“协作”的小结(2/2)不同的协作可以描述同一组分类符各种不同的具体化方案。因此,一个分类符可以作为多个不同分类符角色。协作可以引用多个模型元素,通常是分类符和一般关系,以便表达结构上的需求,例如实现一个协作的那些分类符之间可能就需要一般特殊关系。协作是一个可一般化元素,这意味着一个行为可以说明一个任务,而这个任务是另一个协作的子任务。交互(Interaction)交互规约了执行一个特定任务的实例之间的一个通讯。每一个交互是在一个协作中定义的,即该协作定义了一个语境,在这一语境中,发生这一交互。执行由该交互说明的通讯之实例,与该交互的分类符角色相一致。一个交互说明发送一组激发。基于偏序关系,这些激发执行它们所属的线程。在每一个线程中,激发以一定次序被发送,而不同线程的激发可以并发的予以发送或以任意的次序被发送。消息(1/2)一个消息是一个通讯的规格说明,即消息定义了交互中实例之间的特定通讯。一个通讯可以是发出一个信号,可以是引用一个操作,可以是创建或删除一个实例等。一个消息指出发送者实例和接受者实例,也指出哪一个关联规约了该通讯链。即可以用于说明发送者和接受者的角色、消息分派活动、通讯链所扮演的角色。消息关联一个动作,该动作给出一个陈述:当执行时,导致该消息说明的通讯发生。如果该动作是一个调用或是raise动作,则该动作指出该通讯中被发送的信号或被调用的操作。该动作还包含变量表达式,当动作执行时,该表达式将确定在该通讯中被转送的变量。另外,该通讯的任意条件和重复也由该动作指出。消息(2/2)除了调用或raise动作外,还有与一个消息相关的动作如生成动作和删除动作。在这些情况下,通讯将不会引发一个信号或调用一个操作,但导致创建一个新的实例或删除已有的实例。在创建一个实例的情况里,由消息说明的接受者是被创建的实例所扮演的角色,当该动作被执行时。一个动作执行时被发送的激发,与一个消息是一致的,这意味着该激发的发送者和接受者实例,与由该消息说明的发送者和接受者的角色是一致的。另外,分派该激发的动作与贴付于该消息的动作是一样的。如果与该消息相关的动作是一个创建动作或删除动作,则该消息的接受者角色说明了由该实例所扮演的角色。交互说明了每一个消息的活化者(activator)和后裔。活化者产生一个过程(procedure),该过程依次产生当前消息。除了交互的初始消息外,其它消息均有一个活化者。后裔是一组消息,这组消息必须在当前消息可以执行之前予以完成。当然,在一个过程中的第一个消息没有后裔。如果一个消息有多个后裔,则表示二个控制线程的结合(joining)。如果一个消息有多个前启者,它指出一个控制fork,形成多重线程。后裔关系对一个过程中的消息强加了一个偏序,而活化者关系对操作的激活强加了一棵树。根据由后裔和活化者的关系对该顺序约束,消息可以并发地执行。可见,交互包含了一组消息,这些消息说明了扮演分类符角色的那些实例之间的通讯。分类符角色

(ClassifierRole)

分类符角色是一个特定的角色,它参与了一个协作。分类符角色是分类符的一个受限视图,该受限视图由该协作的需要所定义。在元模型中,分类符角色说明了一个参与,即与实例一致的一个角色。分类符角色定义了一组特性,这组特性是该角色对应的那个分类符特性的子集,也是包含在那些分类符中所有模型元素特性的子集。分类符角色可以通过关联端,连接一组关联角色。作为分类符的分类符角色,可以在这类分类符角色之间定义一般关系,子角色可以继承父角色的属性和内容。关联角色

(AssociationRole)

关联角色是一个关联的特定用法,这一用法是一个协作所需要的。在元模型中,关联角色说明了用在协作中的一个关联的受限视图。一个关联角色是一组关联端角色(AssociationEndRole)组合。可见,关联端角色是关联角色的一部分,它把一个关联角色连接到一个分类符角色。关联端角色说明了用于协作中一个关联的端点。关联端角色对应于基关联的那些关联端。协作图

(collaborationdiagram)

Anydiagramthatgraphicallydepictsclasses,subsystems,contracts,andrelationshipbetweenclassesandsubsystems.[Lorenz]在一个协作图中,对象显示为图标(ICON);如同顺序图,箭头线指示了在给定的USECASE中的消息发送,并对消息顺序进行编号。利用适当的“空间”设计,允许表达其他信息。例如,可以给出对象是怎样链接的,该协作所覆盖的包等。可以使用不同的编号模式,例如,使用如同1.1这样的标号,可以清晰地表明:一个操作调用哪个操作。可以填加与顺序图一样的控制

温馨提示

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

评论

0/150

提交评论