软件工程概论面向对象与业务过程建模软件工程概论2/61回顾基于计算机的系统可行性研究的任务和步骤项目可行性研究报告的写法软件工程概论3/61主要内容面向对象的分析与设计UML概念与内容业务系统分析与建模小结、思考与实验软件工程概论4/61Why?“话说三国时期,曹操带领百万大军攻打东吴,大军在长江赤壁驻扎,军船连成一片,眼看就要灭掉东吴,统一天下,曹操大悦,于是大宴众文武,在酒席间,曹操诗性大发,不觉吟道:‘喝酒唱歌,人生真爽。……’。众文武齐呼:‘丞相好诗!’于是一臣子速命印刷工匠刻版印刷,以便流传天下。”软件工程概论5/61Why?“样张出来给曹操一看,曹操感觉不妥,说道:‘喝与唱,此话过俗,应改为‘对酒当歌’较好!’,于是此臣就命工匠重新来过。工匠眼看连夜刻版之工,彻底白费,心中叫苦不迭。只得照办。”软件工程概论6/61Why?“样张再次出来请曹操过目,曹操细细一品,觉得还是不好,说:‘人生真爽太过直接,应改问语才够意境,因此应改为‘对酒当歌,人生几何?……’当臣转告工匠之时,工匠晕倒……!”软件工程概论7/61Why?“这里面问题出在哪里?”软件工程概论8/61Why?“因为三国时期活字印刷还未发明,所以要改字的时候,就必须要整个刻板全部重新刻。”“如果是有了活字印刷,则只需更改四个字就可,其余工作都未白做。岂不妙哉。”软件工程概论9/61Why?第一,要改,只需更改要改之字,可维护;第二,这些字并非用完这次就无用,完全可以在后来的印刷中重复使用,可复用;第三,此诗若要加字,只需另刻字加入即可,可扩展;第四,字的排列其实可能是竖排可能是横排,此时只需将活字移动就可做到满足排列需求,灵活性好。”软件工程概论10/61面向对象方法面向对象方法的思想将世界看作一个个相互独立的对象,通过封装、继承、多态等对象把程序的耦合度降低,使得程序更加的灵活,容易修改,并且易于复用。面向过程方法的思想将世界看作一个个相互关联的小系统组成,通过分析小系统的每个步骤和影响小系统走向的所有因素,来定义系统行为,不能适应需求的变更,可维护、可复用、灵活性和可扩展性差软件工程概论11/61面向对象的分析与设计面向对象的概念面向对象的分析与设计用例驱动、模型驱动软件工程概论12/61基本概念面向对象(ObjectOriented,OO)首先根据客户需求抽象出业务对象;然后对需求进行合理分层,构建相对独立的业务模块;之后设计业务逻辑,利用多态、继承、封装、抽象的编程思想,实现业务需求;最后通过整合各模块,达到高内聚、低耦合的效果,从而满足客户要求。面向对象的分析(Object-OrientedAnalysis,OOA)根据抽象关键的问题域来分解系统,不考虑与系统的具体实现有关的确因素。面向对象的设计(Object-OrientedDesign,OOD)是一种提供符号设计系统的面向对象的实现过程,它用非常接近实际领域术语的方法把系统构造成“现实世界”的对象。软件工程概论面向对象的分析与设计1使用UMLUML给出了面向对象建模的符号表示和规则,但未给出使用的过程和方法,因此,需要有使用UML的过程。过程描述做什么、怎么做、何时做及为什么做,即描述一组特定次序的活动使用UML过程的基本特征是:用例驱动,以体系结构为中心,反复,渐增式。用例包含了功能描述,它们将影响后面所有阶段及视图。软件工程概论以体系结构为中心在开发的早期建立基础的体系结构(原型)是十分重要的,进一步对原型进行精化,建立一个易于修改、易理解和允许复用的系统。主要是在逻辑上将系统划分为若干个子系统(UML包)反复UML的建模型过程要经过若干次的反复渐增式渐增式开发是在多次反复迭代的过程中,每次增加一些功能(或用例)的开发,每次迭代都包含了分析、设计、实现和测试。面向对象的分析与设计2软件工程概论体系结构建模(architecturemodeling)首先要建立基本的模型,并将该模型映射到软硬件单元上体系结构概括了整体系统结构、功能部件分解、部件的本质和特性、部件的界面、部件之间的通讯协议和整体性布局策略及法则。面向对象的体系结构与传统的体系结构不同,它强调的是分布式对象的分配、部件及其界面、持久对象和面向对象通讯方法面向对象的体系结构软件工程概论子系统的分解可以有分层和分块分层:将软件系统组织为层次结构,每层是一个子系统。分层结构又分为封闭式和开放式。分块:垂直分块是将系统分解为若干个相对独立的、弱耦合的子系统。每个子系统相当于一个块,每块实现一类服务。常常使用分层和分块的混合结构,如图所示:将系统分解为子系统应用程序包人机对话控制窗口图形仿真程序包屏幕图形点阵图形操作系统计算机硬件软件工程概论用包图进行系统建模包是系统的一种分组机制,包由关系密切的一组模型元素构成,包还可以由其它包构成(嵌套)包图是维护和控制系统总体结构的重要建模工具应用包图要解决的问题如何组织包?•应将概念或语义相近的模型元素(对象类)纳入一个包。即包具有高内聚性,包中的类具有功能相关性。如何确定包之间的关系?•包之间的联系有两种:依赖和泛化。描述系统的体系结构数据库表示层应用逻辑层存储层UML包表达的体系结构单元软件工程概论MDA(Model-DrivenArchitecture)模型驱动架构软件工程概论CIM(ComputationIndependentModel)聚焦于系统环境及需求,不涉及系统内部的结构与运作细节PIM(PlatformIndependentModel)聚焦于系统内部细节,不涉及实现系统的具体平台PSM(PlatformSpecificModel)聚焦于系统落实于特定具体平台的细节.如Sping、EJB3、.NET都是一种具体平台MDA开发的三个阶段软件工程概论20/61本课程采用方法定义业务流程,业务用例模型分析业务流程,业务活动图定义系统范围,系统用例图分析系统流程,用例规约,活动图分析业务规则,状态图或活动图定义静态结构,类图软件工程概论面向对象的分析与设计软件工程概论22/61UML概念与内容UML概念与定义UML发展现状UML主要内容UML建模工具软件工程概论23/61TheUML软件工程概论1.UML—YouMustLearn2.UML—UnifiedModelingLanguage3.UML是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示TheUML软件工程概论25/61UML定义是对象管理组织(OMG)制定的一个通用的、可视化的建模语言标准,可以用来可视化(visualize)、描述(specify)、构造(construct)和文档化(document)软件密集型系统的各种工件(artifacts,又译制品)由UML表示法指南、UML语义、OCL规范和用户定义的UML扩展组成软件工程概论是一种语言用来获取关于某一主题的知识和表达关于该主题的知识,以便于进行交流基于面向对象范型应用于建模和系统用于对系统进行描述、可视化、构造和文档化是一种通用的、广泛适应的、得到工具支持和工业标准化的革命性的建模语言统一了信息系统和技术工程的最佳工程实践的成果应用于大量不同类型的系统、领域和方法或过程UML是软件工程概论27/61UML的目标成为一种易用、表达能力强的可视化建模语言,并且是简单的和可扩展的具备扩展和特化机制独立于实现(程序设计语言)独立于过程(开发)促进面向对象工具市场的成长支持高级概念(协作、框架、模式和组件)通过使用组建技术、可视化程序设计、模式和框架,解决反复出现的体系结构复杂性问题可升级、广泛适用融合了最佳的工程实践软件工程概论28/61UML的目标系统构造描述可视化文档化软件工程概论29/61UML的诞生与发展统一分裂工业化标准化软件工程概论30/61UML二十世纪八十年代初期,开始用不同的方法进行面向对象分析与设计。GradyBooch和JamesRumbaugh在1994年10月共同合作把他们的工作统一起来,到1995年成为“统一方法(UnifiedMethod)”版本0.8。随后,UM方法又吸纳了IvarJacobson提出的用例(usecase)思想,到1996年,成为“统一建模语言”版本0.9。1997年1月,UML版本1.0被提交给OMG组织,作为软件建模语言标准化的候选。发展历程软件工程概论31/61UML的组成结构图软件工程概论32/61UML图图diagrams类图classdiagrams对象图objectdiagrams构件图componentdiagrams部署图deploymentdiagrams用例图usecasediagrams顺序图sequence`diagrams协作图collaborationdiagrams状态图statechartdiagrams活动图activitydiagrams静态模型(系统结构)动态模型(系统行为)Uml2.0复合结构compositestructure交互概观interactiveoverview定时图timingdiagrams软件工程概论33/614+1视图ProcessViewDeploymentViewLogicalViewUse-CaseViewImplementationViewEnd-userFunctionalityProgrammersSoftwaremanagementPerformanceScalabilityThroughputSystemintegratorsSystemtopologyDelivery,installationcommunicationSystemengineeringAnalysts/DesignersStructure软件工程概论34/61业务系统分析与建模定义业务流程业务用例模型活动图业务流程建模软件工程概论目标:尽快确定系统范围,以便估算开发成本及时间。关注点:跟系统有关的业务流程制品业务用例模型---定义业务流程活动图---分析业务流程系统用例图---定义系统范围定义业务流程软件工程概论图书馆信息管理系统主要业务文献的收集保存文献的交流(图书馆之间)读者服务(图书的借阅)其他业务财务管理工资管理采购管理.............软件工程概论图书馆部门结构图XX图书馆采购部采编部流通部人力资源办公室财务部技术支持后勤服务图书采购文献收集图书编目文献保护与处理图书上架图书借阅软件工程概论图书馆业务流程图软件工程概论业务用例模型软件工程概论业务用例图元素•业务用例:代表一条业务流程•业务执行者:业务组织外但会启动或参与业务流程的人业务用例简述针对每一个业务用例,用几句话简单说明它是作什么用的图书借阅•注册读者可以在图书馆工作期间通过工作人员借书和还书.....业务用例模型软件工程概论图书借阅流程图软件工程概论活动图示例-处理销售软件工程概论特殊活动的一种,用于表示活动之间的同步。一般有一个或多个信息流向它引入,有一个或多个信息流从它引出,表示引入的信息流同时到达,引出的信息流被同时触发。同步条软件工程概论44/61同步条属性定义名称:该同步条的名字。用于标识,不显示。描述:关于该同步条的详细描述,不显示。同步条件:表示该同步条所要遵循的条件,亦即各引出信息流被同时触发的条件。一般是针对各引入信息流的。显示在同步条图元旁边。软件工程概论45/61活动图—汇合为对象运行时的并发控制流建模软件工程概论46/61活动图—泳道将活动分组,指定给负责活动的对象同一组的活动由一个或多个对象负责完成。这是活动图引入的一个面向对象机制,可为提取类及分析各个对象之间的交互提供方便。软件工程概论活动图元语-1起点表示活动图中所有活动的起点(一般每幅活动图有且仅有一个起点)终点表示活动图中活动的终点。一般每幅活动图有一个或多个终点活动表示活动