资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,软件建模技术,软件建模技术,软件建模技术,第一部分 基 础 篇,1,第二部分 实 践 篇,2,第三部分 工 具 篇,3,软件建模技术第一部分 基 础 篇1 第,第1章 软件工程概述,1.1,软件、软件危机和软件工程的定义,1.1.1,软件及其特点,1.1.2,软件危机,1.1.3,软件工程的定义,1.1.4,软件工程的基本原理,1.2,软件开发生命周期,1.3,软件过程模型,1.3.1,常见的生命周期模型,1.3.2,生命周期模型的应用,1.4,软件工程方法学,第1章 软件工程概述 1.1 软件、软件危机和软件工程的,教学要求,理解:软件和软件工程的概念;软件开发生命周期。,掌握:软件过程模型运用的原则。,第,1,章 软件工程概述,教学要求第1章 软件工程概述,开发出来的软件往往与用户的需求有偏差;,往往在看到最终交付的产品时,用户才真正明确自己的需求;,在软件开发过程中,需求可能经常在变,原因可能是用户本身需求的变化,也可能是我们对需求的理解在发生变化,但结果是每次需求变化会带来软件系统的开发延迟,甚至出现变更反复,被推倒了的内容又要重新确立;,在软件没有最终交付时,用户如何了解开发进展情况;,系统难以维护和扩展,经常重复开发类似的功能;,项目经常延期,实际成本往往远远高于估计成本;,开发团队内部使用了不同的技术,在交流时常常有障碍;,软件危机的影响,开发出来的软件往往与用户的需求有偏差;软件危机的影响,1.1软件、软件危机和软件工程的定义,1.1.1,软件及其特点,软件,=,程序,+,数据,+,文档,软件是计算机系统中与硬件相互依存的另一部分,与硬件合为一体完成系统功能,1.1软件、软件危机和软件工程的定义 1.1.1 软件及其特,1.1软件、软件危机和软件工程的定义,1.1.1,软件及其特点,软件的特点,软件是脑力劳动的产品,但它不同于追求个性化的艺术作品;软件是产品,但它又不同于工业化生产得到的有形产品,1.1软件、软件危机和软件工程的定义 1.1.1 软件及其特,1.1软件、软件危机和软件工程的定义,软件的特点,描述,抽象性,软件是一种逻辑实体而不是具体的物理实体,必须通过测试、分析、思考、判断来了解它的功能、性能及其他特性,可复制性,软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的。一旦某一软件项目研制成功,以后就可以大量地复制同一内容的副本,即其研制成本远远大于其生产成本,不会磨损,在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题,但软件也会出现故障,软件维护比硬件维护要复杂得多,与硬件的维修有着本质的差别,依赖性,软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖。为了消除这种依赖,在软件开发中提出了软件移植的问题,并且把软件的可移植性作为衡量软件质量的因素之一,开发效率低,软件的开发尚未完全摆脱手工的方式,依然有大量重复性的劳动,开发费用高,软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,需要较高的成本。软件的开发是一个复杂的过程,因而管理是软件开发过程中必不可少的内容,1.1.1,软件及其特点,1.1软件、软件危机和软件工程的定义 软件的特点描述抽象性,1.1软件、软件危机和软件工程的定义,什么是软件危机,在计算机软件的开发和维护过程中所遇到的一系列严重问题。,软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断增加的已有软件。,消除软件危机的途径,正确认识软件。,加强管理。,使用软件工具。,1.1.2,软件危机,1.1软件、软件危机和软件工程的定义 什么是软件危机 1.1,1.1软件、软件危机和软件工程的定义,软件工程的定义,软件工程 = 管理 + 技术,软件工程的目标,1.1.3,软件工程的定义,1.1软件、软件危机和软件工程的定义 软件工程的定义1.1.,1.1软件、软件危机和软件工程的定义,软件工程的基本原理,(,1,)用分阶段的生命周期计划严格管理。,(,2,)坚持进行阶段评审。,(,3,)实行严格的产品控制。,(,4,)采用现代程序设计技术。,(,5,)结果应能清楚地审查。,(,6,)开发小组的人员应该少而精。,(,7,)不断改进软件工程实践的经验和技术。,1.1.4,软件工程的基本原理,1.1软件、软件危机和软件工程的定义 软件工程的基本原理1.,1.2软件开发生命周期,如何盖一栋大楼?,1.2软件开发生命周期 如何盖一栋大楼?,1.2软件开发生命周期,软件开发生命周期可以划分成计划、设计、开发和运行维护,4,个时期,1,问题定义,“,要解决的问题是什么?”,2,可行性论证及软件计划,“,有行得通的解决办法吗?”,3,需求分析,“,系统必须做什么?”,4,总体设计,“,概括地说,应该怎样做?”,5,详细设计,“,具体怎样做?”,6,编码和单元测试,7,综合测试,8,运行,/,维护,1.2软件开发生命周期 软件开发生命周期可以划分成计划、设计,1.3 软件过程模型,1,建造,-,修补模型,早前,软件开发人员在进行软件开发时不使用规格说明,或者不尝试进行设计;只是简单地建造了一个软件产品,但为满足客户的要求,只能不断地改写该软件,这就是所谓的建造,-,修补模型。,1.3.1,常见的生命周期模型,1.3 软件过程模型 1建造-修补模型1.3.1 常见,1.3 软件过程模型,2,瀑布模型,核心思想是阶段性的评审和验证,每一阶段结束时都要给出完整的文档。,缺点是该模型缺乏灵活性,后一阶段出现的问题需要通过前一阶段的重新确认来解决。,1.3.1,常见的生命周期模型,1.3 软件过程模型2瀑布模型1.3.1 常见的生命周,1.3 软件过程模型,3,原型模型,快速设计软件中对用户可见部分的表示,构造原型,由用户评估,逐步调整原型,使之满足用户需要。,其优点是开发者和用户可以充分沟通,开发过程也是学习过程,可以低风险开发柔性较大的计算机系统。,1.3.1,常见的生命周期模型,1.3 软件过程模型3原型模型1.3.1 常见的生命周,1.3 软件过程模型,4,螺旋模型,把软件开发过程组成为一个逐步细化的螺旋周期,每经历一个周期,系统就得到进一步的细化和完善;整个模型紧密围绕开发中的风险分析,推动软件设计向深层扩展和求精。该模型要求开发人员与用户能经常直接进行交流,通常用来指导内部发行的大型软件项目的开发,1.3.1,常见的生命周期模型,1.3 软件过程模型4螺旋模型1.3.1 常见的生命周,1.3 软件过程模型,5,增量模型,一种渐近式的模型 ,它把软件产品作为一系列的增量构件来设计、编码、集成和测试。,第一个增量构件往往实现软件的基本需求,提供最核心的功能。,1.3.1,常见的生命周期模型,1.3 软件过程模型5增量模型1.3.1 常见的生命周,1.3 软件过程模型,6,迭代模型,迭代模型也是一种渐近式的模型。就对风险的消除上,增量和迭代模型都能够很好地控制前期的风险,但迭代模型在这方面更有优势。迭代模型可以更多地从总体方面思考系统问题,一开始就给出相对完善的框架或原型,后期的每次迭代都是针对上次迭代的逐步精化。,1.3.1,常见的生命周期模型,1.3 软件过程模型6迭代模型1.3.1 常见的生命周,1.3 软件过程模型,7,喷泉模型,认为软件生命周期的各个阶段是相互重叠和多次反复的,就像水喷上去又可以落下来,水既可以落在中间,也可以落在最底部。,整个开发过程中都使用统一的概念“对象”进行分析,使用统一的概念和符号表示分析设计过程,各阶段间没有明显的边界,即“无缝”衔接,因此各开发步骤可以多次反复迭代,逐步深化。,1.3.1,常见的生命周期模型,1.3 软件过程模型7喷泉模型1.3.1 常见的生命周,1.3 软件过程模型,8,MSF,过程模型,吸收了瀑布模型的里程碑和螺旋模型的反复迭代的思想 。,分为,5,个阶段,每一阶段结束时都有明确的交付成果。,1.3.1,常见的生命周期模型,1.3 软件过程模型8MSF过程模型1.3.1 常见的,1.3 软件过程模型,(,1,)总体上说,面向对象的程序设计采用的是喷泉模型,但局部可以结合其他模型。,(,2,)在前期需求明确、资料完整的情况下尽量采用瀑布模型。,(,3,)在用户无信息系统使用经验、需求分析人员技能不足的情况下要借助原型。,(,4,)在不确定性因素很多、很多东西前面无法计划的情况下尽量采用增量模型和螺旋模型。,(,5,)在需求不稳定的情况下尽量采用增量迭代模型。,(,6,)在资金和成本无法一次到位的情况下可以采用增量模型,将产品分多个版本进行发布。,(,7,)增量、迭代和原型可以综合使用,但每一次增量或迭代都必须有明确的交付内容。,1.3.2,生命周期模型的应用,1.3 软件过程模型(1)总体上说,面向对象的程序设计采用,1.4 软件工程方法学,研究如何通过分解和抽象,将复杂问题转化成一系列可以理解和实现的简单问题。,1.4 软件工程方法学研究如何通过分解和抽象,将复杂问题转化,1.4 软件工程方法学,面向过程的程序,=,算法,+,数据结构。,面向对象的程序,=,对象,+,类,+,继承,+,消息通信。,面向构件的程序,=,构件,+,架构。,形式化方法是建立在严格的数学基础上,以逻辑推理为出发点,具有精确数学语义的开发方法。,1.4 软件工程方法学面向过程的程序 = 算法 + 数据结构,本章,小结,软件不仅仅是程序,软件,=,程序,+,数据,+,文档。软件工程是为了尽可能消除软件危机的影响,克服软件缺乏,“,可见性,”,的缺点,借鉴工业化生产的成功经验,对软件产品的生产过程加以严格管理和控制的一门学科。它的最终目的是实现软件的工业化生产。,传统软件工程将软件开发生命周期划分为问题定义、可行性分析、需求分析、概要设计、详细设计、编码、测试、运行维护,8,个阶段,每一阶段都有具体的任务和交付成果。,软件过程模型指如何具体地组织衔接软件开发生命周期的各个阶段。常见的有瀑布模型、螺旋模型、喷泉模型等。,本章小结软件不仅仅是程序,软件=程序+数据+文档。软件工程是,软件建模技术,第一部分 基 础 篇,1,第二部分 实 践 篇,2,第三部分 工 具 篇,3,软件建模技术第一部分 基 础 篇1 第,第2章 结构化程序设计与面向对象程序设计,2.1,概述,2.2,结构化方法的基本原理,2.2.1,结构化分析过程,2.2.2,结构化分析工具,2.3,面向对象方法学的基本概念和原则,2.3.1,基本概念,2.3.2,主要原则,2.4,面向对象方法与结构化方法比较,2.4.1,实例,2.4.2,面向对象方法与结构化方法比较,2.4.3,两种方法的综合运用,第2章 结构化程序设计与面向对象程序设计 2.1 概述,教学要求,掌握:软件结构化分析方法中常用的方法及工具。,理解:结构化设计及面向对象设计的思路及特点;在面向对象设计中如何运用结构化设计的方法及工具。,了解:结构化分析过程;面向对象方法学的基本概念。,第,2,章 结构化程序设计与面向对象程序设计,教学要求第2章 结构化程序设计与面向对象程序设计,2.1,概 述,面向过程的方法,面向对象的方法,20,世纪,60,年代提出的结构化程序设计思想曾为解决“软件危机”立下过汗马功劳,它在一定程度上解决了软件的可靠性、可理解性、可维护性等问题 。,面向对象的程序设计思想后来居上,在软件的模块化、可重用、可扩展性等方面体现出了强大的优势,2.1 概 述 面向过程的方法20世纪60年代提出的结构化,2.2,结构化方法的基本原理,结构化程序设计主要观点是采用自顶向下、逐步求精的程序设计方法。,使用三种基本控制结构构造程序,任何程序都可由顺序、选择、重复三种基本控制结构构造。,详细描述处理过程常用三种工具:图形、表格和语言;使用的手段主要有数据流图、数据字典、层次方框图、结构化语言、判定表和判定树等。,2.2 结构化方法的基本原理 结构化程序设计主要观点是采用,2.2,结构化方法的基本原理,结构化程序设计一般步骤是:分析业务流程及信息走向;画出数据流图;建立数据字典;提出系统的总体逻辑方案;细化数据流图;确定模块的接口;为每个模块确定采用的算法和数据结构;根据,E-R,图设计数据库等。,2.2 结构化方法的基本原理 结构化程序设计一般步骤是:分,2.2,结构化方法的基本原理,2.2.1,结构化分析过程,阶段,拟解决的关键性问题,工具手段,交付成果,问题定义,要解决的问题是什么,可行性论证及软件计划,有行得通的解决办法吗,数据流图、数据字典、数据流程图、成本,/,效益分析,可行性分析报告、多种解决方案、系统高层逻辑模型,需求分析,系统必须做什么,数据流图、数据字典、算法描述,需求规格说明书、系统逻辑模型,总体设计,概括地说,应该怎样做,数据流图、系统流程图、成本,/,效益分析、系统结构图、层次方框图,几种可能的解法,详细设计,具体怎样做,数据流图、,HIPO,图,模块及其接口设计、数据字典,2.2 结构化方法的基本原理 2.2.1 结构化分析过程,2.2,结构化方法的基本原理,2.2.2,结构化分析工具,数据流图,数据字典,E-R,图,IPO,图,层次图与,HIPO,图,状态图,成本,/,效益分析,程序流程图与盒图(,N-S,图),2.2 结构化方法的基本原理 2.2.2 结构化分析工具,2.2,结构化方法的基本原理,2.2.2,结构化分析工具,1.,数据流图(,DFD,图),描绘信息流和数据从输入移动到输出的过程中所经受的变换。,基本符号,处理,数据存储,外部实体,数据流,2.2 结构化方法的基本原理 2.2.2 结构化分析工具,2.2,结构化方法的基本原理,2.2.2,结构化分析工具,基本符号的含义,矩形方框表示数据的源点或终点。是系统的外部实体。,圆形表示变换数据的处理。它可以代表一系列程序、单个程序或者程序的一个模块。,平行横线代表数据存储。数据存储并不等同于一个文件,它可以表示一个文件、文件的一部分、数据库的元素或记录的一部分等。,数据存储和数据流都是数据,仅仅所处的状态不同。数据存储是处于静止状态的数据,数据流是处于运动中的数据。,2.2 结构化方法的基本原理 2.2.2 结构化分析工具,2.2,结构化方法的基本原理,2.2.2,结构化分析工具,画数据流图的基本原则,自顶向下,逐层细化,完善求精,2.2 结构化方法的基本原理 2.2.2 结构化分析工具,2.2,结构化方法的基本原理,2.2.2,结构化分析工具,具体步骤,:,(,1,)绘顶层数据流图。找出对整个系统而言的输入、输出数据,确定外部实体,它们决定了系统与外界的接口。,(,2,)为数据流命名,为加工命名。,(,3,)检查核对。,(,4,)核对无误后,进行分解,画处理的内部。,在(,2,)至(,4,)步之间反复迭代,直到处理无法进一步分解为止。,2.2 结构化方法的基本原理 2.2.2 结构化分析工具,2.2,结构化方法的基本原理,2.2.2,结构化分析工具,书店借书系统的顶层数据流图,2.2 结构化方法的基本原理 2.2.2 结构化分析工具,2.2,结构化方法的基本原理,2.2.2,结构化分析工具,书店借书系统的第一次分解后的数据流图,2.2 结构化方法的基本原理 2.2.2 结构化分析工具,2.2,结构化方法的基本原理,2.2.2,结构化分析工具,“,借书,”,处理分解后的数据流图,2.2 结构化方法的基本原理 2.2.2 结构化分析工具,2.2,结构化方法的基本原理,2.2.2,结构化分析工具,书店借书系统的层次图,2.2 结构化方法的基本原理 2.2.2 结构化分析工具,2.2,结构化方法的基本原理,2.2.2,结构化分析工具,2,数据字典,数据字典是对所有与系统相关的数据元素的一个有组织的列表,精确、严格地定义各个数据元素,使得用户及开发人员对于输入、输出、存储和处理形成共同的理解,例如,:,借阅制度表,=,读者类别,+,允许借阅册数,+,罚款规定,+,丢失图书罚款规定,读者类别,= ,金卡,|,银卡,|,铜卡,又如,:,预订请求,=,客人数据,+,住宿期限,+,客房类别,客人数据,=,客人姓名,+,地址,+,身份证号码,+,护照号码, +,支付方式,身份证号码,= 15,十进制数字,18,护照号码,=,字母,+ 8,十进制数字,8,字母,= AZ,十进制数字,= 09,2.2 结构化方法的基本原理 2.2.2 结构化分析工具,2.2,结构化方法的基本原理,2.2.2,结构化分析工具,3,E-R,图,(,实体关系图,),例如,2.2 结构化方法的基本原理 2.2.2 结构化分析工具,2.2,结构化方法的基本原理,2.2.2,结构化分析工具,4,IPO,图,IPO,是输入、处理、输出的简称,,IPO,图能方便地描绘输入数据、数据的处理和输出数据的关系。,2.2 结构化方法的基本原理 2.2.2 结构化分析工具,2.2,结构化方法的基本原理,2.2.2,结构化分析工具,主文件更新的,IPO,图,2.2 结构化方法的基本原理 2.2.2 结构化分析工具,2.2,结构化方法的基本原理,2.2.2,结构化分析工具,5,层次图与,HIPO,图,层次图用来描绘软件的层次结构,图中的一个矩形框代表一个模块,方框间的连线表示调用关系。它适于在自顶向下设计软件的过程中使用,描述模块的划分。,2.2 结构化方法的基本原理 2.2.2 结构化分析工具,2.2,结构化方法的基本原理,2.2.2,结构化分析工具,书店借书系统的层次图,2.2 结构化方法的基本原理 2.2.2 结构化分析工具,2.2,结构化方法的基本原理,2.2.2,结构化分析工具,书店借书系统的,H,图,2.2 结构化方法的基本原理 2.2.2 结构化分析工具,2.2,结构化方法的基本原理,2.2.2,结构化分析工具,6,状态图(略),2.2 结构化方法的基本原理 2.2.2 结构化分析工具,2.2,结构化方法的基本原理,2.2.2,结构化分析工具,7,成本,/,效益分析,目的,从经济角度分析开发一个特定的新系统是否划算,从而帮助客户组织的负责人正确地作出是否投资于这项开发工程的决定,2.2 结构化方法的基本原理 2.2.2 结构化分析工具,2.2,结构化方法的基本原理,2.2.2,结构化分析工具,实例,2.2 结构化方法的基本原理 2.2.2 结构化分析工具,2.2,结构化方法的基本原理,2.2.2,结构化分析工具,8,程序流程图与盒图(,N-S,图),是表达语句执行过程的主要工具,基本符号:,2.2 结构化方法的基本原理 2.2.2 结构化分析工具,2.3,面向对象方法学的基本概念和原则,2.3.1,基本概念,1,对象(,object,),2,类(,class,),3,实例(,instance,),4,消息(,message,),5,方法(,method,),6,属性(,attribute,),7,封装(,encapsulation,),8,继承(,inheritance,),9,多态性(,polymorphism,),10,重载(,overloading,),2.3 面向对象方法学的基本概念和原则 2.3.1 基本,2.3,面向对象方法学的基本概念和原则,2.3.2,主要原则,(,1,)抽象,(,2,)分类,(,3,)聚合,(,4,)关联,(,5,)消息通信,(,6,)粒度控制,(,7,)行为分析,2.3 面向对象方法学的基本概念和原则 2.3.2 主要,2.4,面向对象方法与结构化方法比较,2.4.1,实例,结构化方法与面向对象的方法的共性,2.4 面向对象方法与结构化方法比较 2.4.1 实例,2.4,面向对象方法与结构化方法比较,2.4.1,实例,实例,“,书店借书系统,”,的分析与设计(详见教材),2.4 面向对象方法与结构化方法比较 2.4.1 实例,2.4,面向对象方法与结构化方法比较,2.4.1,实例,(,1,)面向对象方法,反复迭代完善需求。,对已有的需求(参见附录,1,)进行整理,列出需求列表。,与用户交流得到有效的需求列表。,画出初始用例模型,表达系统的主要功能及主要业务流程。,完善需求列表,完善用例,模型。,反复迭代进行逻辑设计。,识别系统中的对象及其关系,画初始类模型。,确定类的职责、属性和方法。,表示出主要业务过程的动态模型。,由动态模型反复映射,完善类模型。,2.4 面向对象方法与结构化方法比较 2.4.1 实例,2.4,面向对象方法与结构化方法比较,2.4.1,实例,面向对象方法(续),物理设计。,确定整个系统的拓扑结构(部署图)。,修订类模型。,相应修订动态模型。,完成反映程序模块的包图。,完成反映程序软件构成的组件图。,设计界面,设计数据库。,2.4 面向对象方法与结构化方法比较 2.4.1 实例,2.4,面向对象方法与结构化方法比较,2.4.1,实例,(,2,)结构化方法。,获取完整的需求。,自顶向下、逐层分解,画出数据流图。,书写数据字典。,映射出系统的层次结构,进行系统结构(模块及其接口)设计。,逐层细分,细化出每个处理。,设计界面,设计数据库。,2.4 面向对象方法与结构化方法比较 2.4.1 实例,2.4,面向对象方法与结构化方法比较,2.4.2,面向对象方法与结构化方法比较,结构化程序设计方法的特点是自顶向下、逐步求精,在获取完整的需求之后才能开始系统的分析和设计,面向对象的程序设计方法的特点是根据现实问题直接抽象出对象,分析对象的行为和与行为相关的数据,对象间通过传递消息进行通信,协作完成相应的功能,从问题出发,模拟现实问题建立系统模型,易于理解和实现。,2.4 面向对象方法与结构化方法比较 2.4.2 面向对,2.4,面向对象方法与结构化方法比较,2.4.3,两种方法的综合运用,(,1,)内在的一致性。,1,)目标一致。,2,)使用分解和抽象的原则。,3,)局部化和信息隐蔽。,4,)模块独立。,(,2,)应用的互补性。,1,)成熟的理论。,2,)有效的方法。,3,)实用的工具。,4,)严谨的开发过程。,2.4 面向对象方法与结构化方法比较 2.4.3 两种方,本章,小结,本章将面向对象的方法学与传统结构化程序设计方法学进行了对照。结构化方法和面向对象的方法是当前两种主流的软件开发方法。其中,面向对象的程序设计方法根据现实问题直接抽象出对象,分析对象的行为和与行为相关的数据,对象间通过传递消息进行通信,从问题出发,模拟现实问题,建立系统模型,易于理解和实现;结构化程序设计方法有一套成熟的理论基础,,“,自顶向下、逐步求精,”,,在获取完整的需求之后才能开始系统的分析和设计。在进行面向对象的程序设计时,要善于吸收、借鉴传统结构化程序设计的方法工具。,在进行面向对象的设计时,从需求分析到系统设计都是一个反复迭代的过程。数据流图(,DFD,图)是分析数据存储的有效工具。,本章小结本章将面向对象的方法学与传统结构化程序设计方法学进行,Thank You !,中国水利水电出版社,Thank You !中国水利水电出版社,软件建模技术,第一部分 基 础 篇,1,第二部分 实 践 篇,2,第三部分 工 具 篇,3,软件建模技术第一部分 基 础 篇1 第,第3章 统一建模语言与现代软件工程,3.1,软件工程的发展趋势及成功经验,3.1.1,现代软件工程研究中的热点内容,3.1.2,现代软件工程的成功经验,3.2,统一建模语言概述,3.2.1,什么是软件建模,3.2.2,什么是,UML,3.2.3 UML,的历史,3.2.4 UML,中的五类图,3.2.5 UML,建模的基本过程,3.2.6,统一建模语言在现代软件工程中的作用,第3章 统一建模语言与现代软件工程 3.1 软件工程的发,教学要求,理解:什么是统一建模语言;统一建模语言的作用;统一建模过程。,了解:现代软件工程研究中的热点内容;面向对象的建模思想。,第,3,章 统一建模语言与现代软件工程,教学要求第3章 统一建模语言与现代软件工程,3.1 软件工程的发展趋势及成功经验,3.1.1,现代软件工程研究中的热点内容,研究方面,具体内容,软件过程模型,瀑布模型、增量模型、快速原形模型、螺旋模型、喷泉模型、,MSF,过程模型等,软件开发方法,面向对象的方法、面向构件的方法、极限编程等,项目管理过程,MSF,过程模型、企业文化,设计模式,工厂模式、命令模式等,辅助工具,各种软件建模工具,(如,Rational Rose,、,Visio,、,Rational XDE,)、项目计划工具(如,Project,)、,文档自动生成工具(如,SODA,),等,3.1 软件工程的发展趋势及成功经验 3.1.1 现代软,软件过程的研究,在实际开发中如何合理的运用各种经典的过程模型,构造出与具体开发方法相适应的严格的应用步骤。,软件开发方法的研究,如面向构件的方法、极限编程,面向服务的方法、轻型计划的方法、以及针对具体行业的特殊开发方法等,管理过程的研究,为了使软件项目能够按照预定的成本、进度、质量要求顺利完成项目开发,而对成本、人员、进度、质量、风险等因素进行分析、控制和管理的活动,旨在整个企业的开发能力。,设计模式研究,每一个设计模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心,辅助工具的研究,3.1 软件工程的发展趋势及成功经验,3.1.1,现代软件工程研究中的热点内容,3.1 软件工程的发展趋势及成功经验 3.1.1 现代软,现代软件工程的成功经验,文档可视化,迭代式开发,使用模式,基于组件的架构,变更管理(变更文档),3.1 软件工程的发展趋势及成功经验,3.1.2,现代软件工程的成功经验,现代软件工程的成功经验3.1 软件工程的发展趋势及成功经验,3.2 统一建模语言概述,模型的三个特点,是一种简化;,通过不同的视角看问题;,使用通用的符号。,软件建模的实现过程,3.2.1,什么是软件建模,3.2 统一建模语言概述 模型的三个特点3.2.1 什么,面向对象的软件建模机制,3.2 统一建模语言概述,3.2.1,什么是软件建模,面向对象的软件建模机制 3.2 统一建模语言概述 3.,统一建模语言(,Unified Modeling Language,,,UML,)是一种通用的可视化面向对象的建模语言,适用于对任何面向对象的事物的建模,如面向对象的软件建模、业务建模。,3.2 统一建模语言概述,3.2.2,什么是,UML,统一建模语言(Unified Modeling Langua,最初的阶段是专家的联合行动,由三位,OO,(面向对象)方法学家将他们各自的方法结合在一起,形成,UML 0.9,。,第二阶段是公司的联合行动,由十几家公司组成的“,UML,伙伴组织”将各自的意见加入,UML,,形成,UML 1.0,和,1.1,,并作为向,OMG,申请成为建模语言规范的提案。,第三阶段是在,OMG,控制下的修订与改进,,OMG,于,1997,年,11,月正式采纳,UML 1.1,作为建模语言规范。,第四阶段是作出重大修订后于,2003,年推出,UML 2.0,,,UML,得到了广泛认可和使用。,3.2 统一建模语言概述,3.2.3 UML,的历史,最初的阶段是专家的联合行动,由三位OO(面向对象)方法学家将,用例图,静态图,类图(,Class Diagram,),对象图(,Object Diagram,),包图(,Package Diagram,),行为图,状态图(,Statechart Diagram,),活动图(,Activity Diagram,),交互图,顺序图(,Sequence Diagram,),协作图(,Collaboration Diagram,),实现图,组件图(,Component Diagram,),部署图(,Deployment Diagram,),3.2 统一建模语言概述,3.2.4 UML,中的五类图,用例图3.2 统一建模语言概述 3.2.4 UML中的五,UML,建模机制,3.2 统一建模语言概述,3.2.5 UML,建模的基本过程,UML建模机制 3.2 统一建模语言概述 3.2.5,不同开发阶段的,UML,模型,3.2 统一建模语言概述,3.2.5 UML,建模的基本过程,不同开发阶段的UML模型 3.2 统一建模语言概述 3.2,它是优秀的文档可视化工具,符号形象直观。,能体现文档的连贯性(即需求设计实现的自然过渡,且能较灵活地应对变更)。,贯穿软件开发生命周期的各个阶段。,能清楚地表达设计模式。,与最好的软件工程实践经验集成。,为面向对象的设计与开发中涌现出的高级概念(如协作、框架、模式和组件)提供支持,强调在软件开发中对架构、框架、模式和组件的重用。,与具体的实现无关,可应用于任何语言平台和工具平台。,与具体的过程无关,可应用于任何软件开发的过程。,3.2 统一建模语言概述,3.2.6,统一建模语言在现代软件工程中的作用,它是优秀的文档可视化工具,符号形象直观。3.2 统一建模语,本章,小结,现代软件工程的成功经验中,强调文档的可视化、软件的重用性、代表多方利益的人员之间无障碍地交流。在这些环节中,统一建模语言发挥着很大的作用。统一建模语言(,UML,)是一种通用的可视化面向对象的建模语言,它使用通用的符号,通过反复迭代的建模机制分析需求,进行系统的分析和设计。,本章小结现代软件工程的成功经验中,强调文档的可视化、软件的重,Thank You !,中国水利水电出版社,Thank You !中国水利水电出版社,软件建模技术,第一部分 基 础 篇,1,第二部分 实 践 篇,2,第三部分 工 具 篇,3,软件建模技术第一部分 基 础 篇1 第,第4章 用例图,4.1,用例图概述,4.1.1,用例建模的目的,4.1.2,定义用例图,4.1.3,用例图的主要组件,4.2,识别参与者,4.2.1,捕获需求,4.2.2,识别参与者,4.3,识别用例,4.3.1,识别用例的方法,4.3.2,用例的命名规则,第4章 用例图 4.1 用例图概述,第4章 用例图,4.4,用例间的关系,4.4.1,泛化关系,4.4.2,包含关系,4.4.3,扩展关系,4.5,用例文档,4.6,重构系统的用例模型,第4章 用例图 4.4 用例间的关系,教学要求,掌握:用例图定义、用例图的标记符组件以及如何建立用例图模型。,理解:用例图建模的原因、泛化技术,以及包含与扩展关系。,了解:描述用例的方法。,第,4,章 用例图,教学要求第4章 用例图,用例建模的目的,利用“系统”的观点来分析问题、解决问题。,使用计算机逻辑来模拟描述系统本身,包括系统的组成、关系、系统的各种可能状态以及系统中可能产生的过程和过程引起的切换。,可以利用一个容易理解的模型来描述用户如何使用这个系统、系统和客户以及系统和外部系统之间的交互过程,这个模型也就是通常我们所说的使用,UML,设计新系统的起始点,用例图。,4.1 用例图概述,4.1.1,用例建模的目的,用例建模的目的 4.1 用例图概述 4.1.1 用例建,定义用例图,用例图是有关系统细节的最高形式。它能准确地说明客户对他们要开发的应用程序期望有什么样的功能,用例图是一种在系统完成后能使管理机构、用户和其他干系人了解其功能的极好方法。,登录系统,存款,取款,查询余额,修改密码,转账,退出系统,客户,4.1 用例图概述,4.1.2,定义用例图,定义用例图 登录系统存款取款查询余额修改密码转账客户4.1,用例图的主要组件,用例图包含,4,个基本组件:参与者(,Actor,)、用例(,Use Case,)、关系、系统。,(,1,)参与者。参与者是系统外部的一个实体,它以某种方式参与用例的执行过程。,(,2,)用例。用例代表系统的某项完整的功能,是动作步骤的集合。系统的功能是通过参与者使用用例来实现的。,4.1 用例图概述,4.1.3,用例图的主要组件,用例图的主要组件 4.1 用例图概述 4.1.3 用例,用例图的主要组件,用例图包含,4,个基本组件:参与者(,Actor,)、用例(,Use Case,)、关系、系统。,(,3,)关系。除了用例和参与者之间的关联关系以外,还可以定义参与者之间的泛化关系,用例之间有包含、扩展和泛化关系。,(,4,)系统。系统指一个软件系统、一项业务、一个商务活动、一台机器等。,(,图见书,),4.1 用例图概述,4.1.3,用例图的主要组件,用例图的主要组件 4.1 用例图概述 4.1.3 用例,捕获需求,收集需求的方式有访谈、问卷调查、实地观察、使用原型、特定群体调查、用户指导等。需求的来源主要是人、各种现有成品(如报表、培训手册、视频记录等)、现有的软件系统或人工系统。,通过各种形式记录下收集到的需求信息,经过整理,从中获取有价值的信息来建立系统模型。,4.2 识别参与者,4.2.1,捕获需求,捕获需求 4.2 识别参与者 4.2.1 捕获需求,识别参与者的方法,识别参与者的思路,可以从以下几个方面来考虑:,(,1,)谁使用系统的主要功能?,(,2,)谁改变系统的数据?,(,3,)谁从系统获取信息?,(,4,)谁需要系统的支持以完成日常工作任务?,(,5,)谁负责维护、管理并保持系统正常运行?,(,6,)系统需要处理哪些硬设备?,(,7,)系统需要和哪些外部系统交互?,(,8,)谁对系统运行产生的结果感兴趣?,(,9,)有无时间、气温等内部或外部条件?,4.2 识别参与者,4.2.2,识别参与者,识别参与者的方法 4.2 识别参与者 4.2.2 识别,识别用例的方法,在识别用例的过程中,可以从以下几个方面来考虑:,(,1,)特定参与者希望系统提供什么功能。,(,2,)系统是否存储和检索信息,如果是,由哪个参与者触发。,(,3,)当系统改变状态时,是否通知参与者。,(,4,)是否存在影响系统的外部事件。,4.3 识别用例,4.3.1,识别用例的方法,识别用例的方法 4.3 识别用例 4.3.1 识别用例的,用例的命名规则,用例名是一个字符串,用例是从用户的角度来描绘系统的功能,因此命名的基本原则是:从参与者的角度出发进行命名(如使用“登录”而不用“身份验证”),使用动词加宾语的结构,尽量使用行业术语(如使用“报销”,而不用“交钱”)。,系统中用例太多时需求要适当分组(包),这时可以通过在用例名后面加上双冒号和包名来表示该用例是属于哪个包的。,4.3 识别用例,4.3.2,用例的命名规则,用例的命名规则 4.3 识别用例 4.3.2 用例的命,泛化关系,用例与用例之间也存在着泛化关系,通常用于表示同一业务目的(父用例)的不同技术实现(各个子用例)。,4.3.2,用例的命名规则,4.4 用例间的关系,4.4.1,泛化关系,泛化关系 4.3.2 用例的命名规则 4.4 用例间的,包含关系,在包含关系中,基本用例吸收了被包含的用例的行为,如果没有后者它将是不完整的。,包含关系的划分有两个好处:一是被包含用例被抽取出来,基本用例得以简化;二是可以抽象出公共事件流,实现功能代码的复用。,4.4 用例间的关系,4.4.2,包含关系,包含关系 4.4 用例间的关系 4.4.2 包含关系,扩展关系,如果在完成某个功能的时候有时会执行另一个功能,则用扩展关系来表示。扩展关系表示为虚线箭头加“,”,字样,箭头指向被扩展的用例。,教师在保存成绩的时候,如果有学生成绩不合格将打印补考通知单,4.4 用例间的关系,4.4.3,扩展关系,扩展关系 教师在保存成绩的时候,如果有学生成绩不合格将打印,用例文档,用例图不足以表达更多的细节,对于系统中的每一个用例,还需要了解详细的执行情况,以便完整地理解创建系统时的设计任务。用例文档为我们提供了一个很好的模板 。,用例编号:,用例名:,用例描述:,参与者:,前置条件:,后置条件:,事件路径:,扩展点:,补充说明:,4.5 用例文档,用例文档4.5 用例文档,用例建模的过程本身就是一个反复迭代和逐步精化的过程。,如果你对以下问题都回答“是”的话,那么这个用例就是合理的;否则,这个用例需要拆分为几个小的用例。,这个用例是否能够带来一个独立的好处?,是否可以用简洁的文字来描述这个好处?,参与者是否能够仅通过一次会话就完成这个用例?,能否想象在一个连贯的测试计划中,这个用例将是一个测试用例?,4.6 重构系统的用例模型,用例建模的过程本身就是一个反复迭代和逐步精化的过程。 4.6,用例建模的过程本身就是一个反复迭代和逐步精化的过程。,如果你对以下问题都回答“是”的话,那么这个用例就是有效的和独立的;否则,这个用例实际上可能是其他用例的一个部分。,参与者是否得到了明确的信息或者以某种可度量的方式改变系统?,执行这个用例之后,参与者是否可以在确定的时间内停止使用这个系统?,4.6 重构系统的用例模型,用例建模的过程本身就是一个反复迭代和逐步精化的过程。 4.6,订餐预约系统的最终用例模型,4.6 重构系统的用例模型,订餐预约系统的最终用例模型 4.6 重构系统的用例模型,本章,小结,用例模型是分析功能需求的一个有力工具。它由用例图和每个用例的文档组成。用例图可以可视化地表达出用例功能,使分析员与用户之间的交流更加容易。在用例图中,用例的表示符号是一个椭圆,参与者的图符是一个直立人形,参与者与用例之间用关联线连接,通常用例都位于表示系统边界的矩形框之中。,用例之间存在各种关系:包含关系用带关键字,的虚线箭头线表示;扩展关系用带关键字,的虚线箭头线表示;还有一种泛化关系,表示一个用例继承了另一个用例的属性和行为。,分析过程开始于和客户交谈,产生系统高层用例图。用例图在分析过程中起着很重要的作用,它能反映系统基本的功能需求。但要创建完整的用例模型,还要对每个高层用例进行细化,建立用例文档。对于复杂的系统可以先画出表达系统整体功能的顶层用例模型,再画出各个功能的用例模型子图。用例模型是后期设计和开发的基础。,本章小结用例模型是分析功能需求的一个有力工具。它由用例图和每,Thank You !,中国水利水电出版社,Thank You !中国水利水电出版社,软件建模技术,第一部分 基 础 篇,1,第二部分 实 践 篇,2,第三部分 工 具 篇,3,软件建模技术第一部分 基 础 篇1 第,第5章 静态模型,5.1,静态模型的基本概述,5.2,类图,5.2.1,类图概述,5.2.2,类图的基本组件,5.2.3,关系,5.2.4,关联关系的不同重数与代码的映射,5.2.5,如何建模类图,5.2.6,实例,“,饮料自动售货机系统”的类图,第5章 静态模型 5.1 静态模型的基本概述,第5章 静态模型,5.3,对象图,5.3.1,对象图的概念,5.3.2,对象图和类图的区别,5.4,包图,5.4.1,包图的概念,5.4.2,包图建模,第5章 静态模型5.3 对象图,第5章 静态模型,教学要求,掌握:类图的标记符组件,如何建模类,如何建模类图。,理解:如何表现类的特性、职责和约束,类之间的关系。,了解:如何建模对象图、包图。,第5章 静态模型 教学要求,5.1 静态模型的基本概述,静态模型的基本概述,静态模型包括类图、对象图、包图、组件图和部署图。,类图描述系统中类的静态结构,它不仅定义系统中的类,表示类之间的关系(如关联、依赖、聚集等),也表达类的内部结构(即类的属性和操作)。类图描述的这种静态关系涉及软件系统开发的整个生命周期。,对象图是类图的实例,符号与类图非常相似,可以认为对象图是类图在程序执行的某个过程中一瞬间的快照。,包图由包或类组成(有时也包括组件),表示包与包之间的关系。包图可以用于描述系统的分层结构。,组件图和部署图涉及程序的物理实现。,5.1 静态模型的基本概述 静态模型的基本概述,5.1 静态模型的基本概述,采用面向对象技术设计系统步骤,描述需求,根据需求建立系统的静态模型以构造系统的结构,描述系统的行为,5.1 静态模型的基本概述 采用面向对象技术设计系统步骤,5.1 静态模型的基本概述,静态模型的基本概述,用例图、类图(包含包)、对象图、组件图和部署图,5,类图形,是统一建模语言,UML,的静态建模机制。,状态图、活动图、顺序图和协作图,4,类图形,是统一建模语言,UML,的动态建模机制 。,5.1 静态模型的基本概述 静态模型的基本概述,5.2 类图,类图概述,类图是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型,它用于描述系统的结构。,类图的建模贯穿系统的分析和设计阶段的始终,通常从商务伙伴能够理解的用例开始建模,最终往往成为只有开发小组能够完全理解的类。,建模类图也是一个反复迭代的过程。,类图包含两个元素:类、关系 。,5.2.1,类图概述,5.2 类图 类图概述 5.2.1 类图概述,当对系统的静态模型建模时,通常以下面的,3,种方式之一使用类图:,对系统的静态对象建模。如书店借书系统的,Book,类、学生管理系统的,Student,类等。,对简单的协作建模。协作是一些共同行为的类、接口和其他元素的群体。如数据库连接类、用户验证类、过滤字符串类等。,对逻辑数据库模式建模。在很多领域中,都需要在关系数据库或面向对象数据库中存储永久信息,系统分析者可以用类图对这些需要永久化的实体建模。,5.2 类图,5.2.1,类图概述,当对系统的静态模型建模时,通常以下面的3种方式之一使用类图:,类图的基本组件,类,5.2 类图,5.2.2,类图的基本组件,类图的基本组件 5.2 类图 5.2.2 类图的基本组,类,命名时应该遵守以下几条准则:,使用标准术语。,使用具有确切含义的名词。,必要时用名词短语作名字。,对于类图中的类而言,它的类名、属性、操作也有一定的书写规范。,类名:正体字说明类是可被实例化的,斜体字说明类为抽象类。,属性:按照“可见性 属性名,:,类型, =,初始值,”,的书写顺序。,操作:按照“可见性 方法名称,( ,参数列表,) :,返回类型,”,的书写顺序。,5.2 类图,5.2.2,类图的基本组件,类5.2 类图 5.2.2 类图的基本组件,类的表示方法,5.2 类图,5.2.2,类图的基本组件,类的表示方法5.2 类图 5.2.2 类图的基本组件,隐藏属性部分或操作部分,或者两者都隐藏,5.2 类图,5.2.2,类图的基本组件,隐藏属性部分或操作部分,或者两者都隐藏 5.2 类图 5,通过在属性名称和数据类型之后添加等号来为属性指定默认值,在,UML,中,可以通过, ,符号表示类的某些属性的多重性,5.2 类图,5.2.2,类图的基本组件,通过在属性名称和数据类型之后添加等号来为属性指定默认值 5.,类图中还可以指明另一种类的信息。在操作部分下面的区域,可以用来说明类的职责,也就是类的属性和操作能完成什么任务,5.2 类图,5.2.2,类图的基本组件,类图中还可以指明另一种类的信息。在操作部分下面的区域,可以用,使用一个用花括号括起来的自由文本,括号中的文本指定了该类所要满足的一个或多个约束,5.2 类图,5.2.2,类图的基本组件,使用一个用花括号括起来的自由文本,括号中的文本指定了该类所要,使用注释为类的属性或操作添加更详细的说明,5.2 类图,5.2.2,类图的基本组件,使用注释为类的属性或操作添加更详细的说明 5.2 类图,UML,中的类可以作为面向对象语言中的类,public class TaxCalculator,private longtaxRate ;,private intsalary;,public TaxCalculator (long taxRate) this.taxRate = taxRate ; ,public long countTax ( ) return taxRate*salary ; ,public int getSalary ( ) return salary; ,public void setSalary (int salary) this.salary = salary; ,5.2 类图,5.2.2,类图的基本组件,UML中的类可以作为面向对象语言中的类 5.2 类图 5,接口,在,UML,中,接口是用一个带有名称的小圆圈表示的,并且通过一条实线与它的模型元素相连。,当一个接口是在某个特定的类中实现时,使用该接口的类通过一个依赖关系(一条带箭头的虚线)与该接口的小圆圈相连接。,5.2 类图,5.2.2,类图的基本组件,接口 5.2 类图 5.2.2 类图的基本组件,接口对应的,Java,代码映射,interface Callback,void callback(int param);,class Client implements Callback,public void callback(int p) ,public void nonIfaceMeth( ) ,class TestIface, public static void main(String args),Callback c = new Client( );,c.callback(42);,5.2 类图,5.2.2,类图的基本组件,接口对应的Java代码映射 5.2 类图 5.2.2,关系,泛化关系:一个类(子类)继承另外的一个类(超类)的同一功能,并增加它自己的新功能。泛化关系就是用来表示类与类、接口与接口之间的继承关系的。关系中的实线空心封闭箭头由子类指向父类,5.2 类图,5.2.3,关系,关系 5.2 类图 5.2.3 关系,关系,实现关系:,实现关系指定两个实体之间的一个合同。换言之,一个实体定义一个合同,而另一个实体保证履行该合同。关系中的箭头由实现接口的类指向被实现的接口。,在,Java,中,实现关系可以直接用接口,,implements,关键字表示。,在有些程序语言中不支
展开阅读全文