《软件建模技术》课件.ppt
《《软件建模技术》课件.ppt》由会员分享,可在线阅读,更多相关《《软件建模技术》课件.ppt(332页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件建模技术软件建模技术讲讲 义义云南大学软件学院云南大学软件学院 梁志宏博士梁志宏博士l 模模型型是理解、分析、开发或改造现实系统的一种常用手段是理解、分析、开发或改造现实系统的一种常用手段。 建模包含两建模包含两个问题:个问题: 怎么建怎么建? “模模”是是什么?什么?1、怎么建?、怎么建?l 依赖于两个方面依赖于两个方面 方法论方法论 建模方向建模方向l 筷子,勺子和盘子的相同点和不同点?筷子,勺子和盘子的相同点和不同点?2、“模模”是什么?是什么? 静态静态的事物(物)的事物(物)+特定的条件(规则)特定的条件(规则)+特定的动作特定的动作(参与者的驱动)(参与者的驱动)=特定的场景(
2、事件特定的场景(事件) 一一个个游戏游戏:每个每个同学发四张纸条,在第一张纸条上写同学发四张纸条,在第一张纸条上写上上XXX的名字,在第二张纸条上写上在什么地方,在第的名字,在第二张纸条上写上在什么地方,在第三张纸条上写上一个动作,在第四张纸条上写上一个物三张纸条上写上一个动作,在第四张纸条上写上一个物体,然后将这些纸条分开放在四个箱子里,再体,然后将这些纸条分开放在四个箱子里,再随意随意从从这这四个箱子里各取出一张纸条,就能组成很多非常搞笑的四个箱子里各取出一张纸条,就能组成很多非常搞笑的句子句子。1.1 模型和建模模型和建模1.2 软件模型软件模型1.2.1 软件模型的概念软件模型的概念1
3、.2.2 软件模型的内容软件模型的内容1.3 面向对象方法基础面向对象方法基础可行性研究与计划可行性研究与计划需求分析需求分析设计设计编码编码运行维护运行维护测试测试定义定义阶段阶段开开发发阶阶段段维护阶段维护阶段瀑布模型瀑布模型 1.1 模型和建模模型和建模1.2 软件模型软件模型1.3 面向对象方法基础面向对象方法基础1.3.1 面向过程还是面向对象面向过程还是面向对象1.3.2 抽象抽象Abstraction1.3.3 层次层次Arrangement1.3.4 继承继承 Inheritance1.3.5 耦合耦合 Couple1.3.6 运作运作 Moving一、看世界一、看世界 1、过
4、程论与对象论的共识、过程论与对象论的共识 不论是过程论还是对象论,都承认一点,那就是程序世界本质上只有两种东西数据和逻辑。数据天性喜静,构成了程序世界的本体和状态;逻辑天性好动,作用于数据,推动程序世界的演进和发展。尽管上述观点是统一的,但是在数据和逻辑的存在形式和演进形式上,过程论还是对象论的观点截然不同。 2、过程论过程论 过程论过程论数据和逻辑是分离的、独立的,各自形成程序世界的一个方面(Aspect)。所谓世界的演变,是在逻辑作用下,数据做改变的一个过程。这种过程有明确的开始、结束、输入、输出,每个步骤有着严格的因果关系。过程是相对稳定的、明确的和预定义的,小过程组合成大过程,大过程还
5、可以组合成更大的过程。所以,程序世界本质是过程,数据作为过程处理对象,逻辑作为过程的形式定义,世界就是各个过程不断进行的总体。 3、对象对象论论 对象论对象论认为数据和逻辑不是分离的,而是相互依存的。相 关 的 数 据 和 逻 辑 形 成 个 体 , 这 些 个 体 叫 做 对 象对 象(Object),世界就是由一个个对象组成的。对象具有相对独立性,对外提供一定的服务。所谓世界的演进,是在某个“初始作用力”作用下,对象间通过相互调用而完成的交互;在没有初始作用力下,对象保持静止。这些交互并不是完全预定义的,不一定有严格的因果关系,对象间交互是“偶然的”,对象间联系是“暂时的”。世界就是由各种
6、对象组成,然后在初始作用力下,对象间的交互完成了世界的演进。 二、一道智力题引发的思考二、一道智力题引发的思考 甲、乙、丙三人住店,一间房30元,于是每人10元,共计给店老板30元住进一间房。后来店老板发现弄错了,房价应该是25元,于是给小二5元让小二退给房客。小二黑心,贪污了2元,退给甲乙丙每人1元。这样房客每人付了10-1=9元,三九27,加上小二贪污的2元,共29元,问那1元哪里去了? 过程论看待过程论看待这件事情这件事情对象论看待对象论看待这件事情这件事情 对象的概念对象的概念 对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。对象既可以描述客观存在客观存在的事物的事
7、物,也可以表示由人主观构造的抽象观念抽象观念。 汽车汽车灯泡灯泡扳手扳手农村农村汽车汽车客观世界:客观世界:(客观事物)(客观事物)主观世界:主观世界:(概念)(概念) 软件世界:软件世界: (对象)(对象)灯泡灯泡扳手扳手农村农村共产共产主义主义共产共产主义主义 软件中对象由一组属性和操作组成。软件中对象由一组属性和操作组成。 软件中的对象及性质对象名属性操作对象名称对象的静态性质对象的动态性质雇员姓名身份雇佣日期雇员( )雇员对象 封装封装是把某些可以独立存在的内容封裹起来,构成一个整体,并把内部细节隐藏起来,仅向外部提供可以提供的外在描述。 对象封装对象封装是把对象的属性和操作结合成一个
8、独立的系统单位,并隐藏对象的内部细节,向外部提供对象的接口。对象的封装对象的封装在类的外部不能访问在类的外部可以访问私有公有类封装封装三、总结三、总结l 过程论和对象论是两种看世界的观点,没有孰对孰错、孰好孰坏之分。l 过程论和对象论不是一种你死我活的绝对对立,而是一种辩证统一的对立,两者相互渗透、在一定情况下可以相互转化,是一种“你中有我、我中有你”的对立。l 过程论相对确定,有利于明晰演进的方向,但当事物过于庞大繁杂,将很难理清思路。l 对象论相对不确定,但是因为以对象为基本元素,即使很庞大的事物,也可以很好地分离关注,在研究一个对象的交互时,只需要关心与其相关的少数几个对象,不用总是关注
9、整个流程和世界。 “金、木、水、火、土元素,构成宇宙万金、木、水、火、土元素,构成宇宙万物,并作为各种自然现象变化之基础物,并作为各种自然现象变化之基础五行五行说说”一、类是怎么来的一、类是怎么来的 和真实世界中构成和衍生方式不同,程序世界中,最重要的衍生方式是抽象抽象。 类(类(Class)用来描述具有相同性质的一组对象。 二、为什么要有类二、为什么要有类 类类可以帮助我们方便地认识和定义世界中的对象。上天只给了这个世界各种对象,但我们用抽象去更好地认识世界。 “道生一,一生二,二生三,三生万物道生一,一生二,二生三,三生万物老老子子” 关键在于:抽象是有层次的。关键在于:抽象是有层次的。
10、世界是一棵树。世界是一棵树。 这是一棵单根树,最顶层这是一棵单根树,最顶层“本体本体”为唯一的根,为唯一的根,最下层叶子节点为基本对象。一切中间节点都为最下层叶子节点为基本对象。一切中间节点都为类。类。 越往上的类抽象层次越高,具体度越低,其内涵越往上的类抽象层次越高,具体度越低,其内涵越小,外延越大;越往下的类抽象层次越低,具越小,外延越大;越往下的类抽象层次越低,具体度越高,其内涵越大,外延越小。体度越高,其内涵越大,外延越小。 抽象层次树不是从根部向下长的,而是从叶子节抽象层次树不是从根部向下长的,而是从叶子节点向上归纳生成的。点向上归纳生成的。 某一个叶子节点所代表的对象可以归入所有其
11、祖某一个叶子节点所代表的对象可以归入所有其祖先结点所代表的类先结点所代表的类 一一、原来原来是先有儿子才有父亲是先有儿子才有父亲l 泛化(泛化( Generalization )优于继承()优于继承(Inheritance)的概)的概念。念。l 从哲学和认识论角度来说,是先有对象,然后有类;从哲学和认识论角度来说,是先有对象,然后有类;l 继承是自顶向下的。继承是自顶向下的。l 我们需要继承这个概念,本质上是因为对象论中世界我们需要继承这个概念,本质上是因为对象论中世界的运作往往是在某一抽象层次上进行的,而不是在最的运作往往是在某一抽象层次上进行的,而不是在最低的基本对象层次上。低的基本对象层
12、次上。l 继承的哲学作用就是:规定了抽象与具体之间的可映继承的哲学作用就是:规定了抽象与具体之间的可映射性。射性。 开放-关闭原则(OCP):软件实体应该可以扩展可以扩展,但不可以修改不可以修改。l “可以扩展”四字从哲学上其实是要我们在设计和开发软件时提高抽象层次,不要总在具体对象层面上进行处理。l “不可以修改”,因为如果随便乱改,那就天下大乱了。软件世界中也会发生这种牵一发而动全身的问题。 里里氏代换原则(氏代换原则(LSP):子类型应该能代替掉其父类型,):子类型应该能代替掉其父类型,且代替后程序运行情况不会且代替后程序运行情况不会错乱错乱Barbara Liskov。 凡是系统中有继
13、承关系的地方,子类型一定能代替父类型,而且替换后程序运行要正常。换言之,继承是一种严格的“IS-A”关系,也是“一般和特殊”的哲学原理在程序世界中的体现。 “一只蝴蝶在巴西轻拍翅膀,可以导致一个月后一只蝴蝶在巴西轻拍翅膀,可以导致一个月后德克萨斯州的一场龙卷风德克萨斯州的一场龙卷风蝴蝶效应蝴蝶效应”。形形色色的形形色色的耦合耦合l 泛化泛化耦合耦合(Generalization Couple):由于泛化(继承)关系的存在,在两个有祖孙、父子关系的类间形成的一种逻辑关联。l 包含耦合:这种耦合出现的哲学基础是,对象本身固有的包含关系,在进行事物抽象时被同时抽象到了类中。聚合聚合(Aggregat
14、ion):一种弱的拥有关系,体现A对象可以包含B对象,但B对象不是A对象的一部分。组合组合(Composition):一种强的拥有关系,体现了严格的部分和整体的关系,部分和整体具有一样的生命周期。 依赖依赖(Dependency):由于逻辑上相互协作可能,而形成的一种关系。耦合示例耦合示例泛化聚合组合依赖“运动是绝对的运动是绝对的牛顿牛顿”l 对象论认为:世界的演进,是而且只是各种对对象论认为:世界的演进,是而且只是各种对象通过互相调用其他对象的公开服务而完成交象通过互相调用其他对象的公开服务而完成交互。互。l 时刻铭记,参与真正世界运行的,只有对象,时刻铭记,参与真正世界运行的,只有对象,没
15、有类!对象在世界中,类在我们心中!没有类!对象在世界中,类在我们心中!程序世界与现实世界第一点区别:现实世界的依依赖赖以对象为单位,程序世界的依赖依赖以类为单位。 现实世界中的依赖是以对象为单位的,这种依赖关系不会随着泛化过程而被泛化到类里面去。 程序世界中的依赖是以类为单位的,这种依赖关系会随着泛化过程而被泛化到类里面去。并且,只要两个类建立了依赖,那么两个类之间的所有对象都两两依赖了。两个世界中依赖的区别两个世界中依赖的区别l 程序程序世界里的对象没有选择权。世界里的对象没有选择权。l 程序世界里的对象不认识对象。程序世界里的对象不认识对象。l 有奶就是娘有奶就是娘 不不以其他对象实体本身
16、为交互准则,而以其他以其他对象实体本身为交互准则,而以其他对象的行为作为交互准则,与一个对象是否进行对象的行为作为交互准则,与一个对象是否进行交互纯粹是从其行为判断,而不对对象本体有任交互纯粹是从其行为判断,而不对对象本体有任何概念。何概念。l 接口(Interface):对象行为的抽象。l 类与接口的不同点有以下几点: 抽象范畴不同。类是对象“体征”的抽象,接口是对象行为的抽象。 抽象动机不同。抽象出类是为了帮助记忆、认识世界,抽象出接口是为了实现低耦合交互。 关注不同。类关注共同的体征,接口关注用来交互的行为。 存在范畴不同。类存在于抽象层次树上,接口存在于接口网。 应用范畴不同。类应用于
17、结构范畴,是静态概念,接口应用于运作范畴,是动态概念。1)没有接口的依赖。 依赖是有方向的,客户类依赖于服务类。2)引入接口的依赖 接口的哲学意义:对客户类的保证,对服务类的约束。3)服务类拥有接口5)依赖倒置原则()依赖倒置原则(DIP):客户类和服务类都应):客户类和服务类都应该依赖于抽象(接口),并且客户类拥有接口。该依赖于抽象(接口),并且客户类拥有接口。4)客户类拥有接口 程序世界是有这么一个统治者,他就是大名鼎鼎程序世界是有这么一个统治者,他就是大名鼎鼎的的“依赖注入容器依赖注入容器(DI)”,也有人叫做,也有人叫做“控制反转控制反转容器容器(IOC)”。 依赖依赖注入就是容器挑选
18、符合接口的服务类为客户注入就是容器挑选符合接口的服务类为客户类提供类提供服务服务 一个符合一个符合OO原则的、低耦合的程序世界的运作原则的、低耦合的程序世界的运作形式是这样的:首先参与运作的本质只有对象,形式是这样的:首先参与运作的本质只有对象,对象不直接依赖,没有选择权,互相不知道,而对象不直接依赖,没有选择权,互相不知道,而只知道各个接口。客户类制定接口,对象间通过只知道各个接口。客户类制定接口,对象间通过接口交互,形成运作。世界的统治者依赖注入容接口交互,形成运作。世界的统治者依赖注入容器决定选择哪个服务类给客户类使用。器决定选择哪个服务类给客户类使用。 面向对象(面向对象(Object
19、 Oriented,简称,简称OO)方法将世界看作一个个相互独立的对象,相互之间并无因果关系,他们平时是“鸡犬之声相闻,老死不相往来”的,只有在某个外部力量的驱动下,对象之间才会依据某种规律相互传递信息。这些交互构成这个生动世界的一个“过程”,在没有外力的情况下,对象则保持着“静止”状态。 从微观的角度,从微观的角度,这些对象保持着一系列奇妙的特性,例如,对象有着坚硬的外壳,从外部看,除了它用来与外界交互信息的通道外,对象内部就是一个黑匣子,什么也看不到,这被称为封装封装;对象可以结合在一起形成新的对象,结合后的对象具有前两者特性的总和,称为聚合聚合;对象可以繁育,产下的孩子拥有父辈全部的本领
20、,称为继承继承;对象都是多面派,他会根据不同的要求展现其中的一个面,这就是接口接口;多个对象可能长着相同的脸,而这张脸背后却有不同的行为,这就是“多态多态”。从宏观的角度,对象是“短视”的,他不知道他身处的世界是怎么回事,也不知道他的行为是如何贡献给这一个世界的。它只知道它身边有一群与它有联系的小伙伴(称为依赖依赖),并与伙伴之间保持着信息交流的关系(称为耦合耦合),同时对象也是“自私”的,即便在伙伴之间,每个对象仍然顽固地保护着自己的领地,只允许其它人通过它打开的小小的窗口(称为方法方法)进行交流,从不会向对方敞开心扉。1.3.1 面向过程还是面向对象面向过程还是面向对象1.3.2 抽象抽象
21、Abstraction1.3.3 层次层次Arrangement1.3.4 继承继承 Inheritance1.3.5 耦合耦合 Couple1.3.6 运作运作 Moving2.1 关于关于UML 2.1.1 UML的含义的含义 2.1.2 UML的发展历史的发展历史2.2 UML构成构成 UML: Unified Modeling Language UML: Unified Modeling Language 统一建模语言统一建模语言. . 作用作用: 建立软件模型建立软件模型 建模语言建模语言: 提供交流的词汇和规提供交流的词汇和规则则 可视化可视化: 通过标准图符构成图形来描述模型通过
22、标准图符构成图形来描述模型 建模语言而非编程语言建模语言而非编程语言 通用标准通用标准: 成为软件建模的标准语言成为软件建模的标准语言, ,并且在并且在其他领域也得到应用。其他领域也得到应用。 UML是面向对象思想和方法的具体化和符号化是面向对象思想和方法的具体化和符号化。 Whats UML52Booch 91Booch 93Unified Method 0.8UML 1.0OMT - 2OMT - 1OOSEUML 0.9 & 0.919595年年96.1 96.1 到到 96.1096.1097.1297.12 OMG Standard OMG StandardOther methods
23、Other methods向上向上96.1296.12UML PartnersUML PartnersUML 1.1UML 1.3UML 1.4UML 2.0 工工业业化化 标标准准 集成集成 多种方法多种方法UML的创建人的创建人: OMT方法方法 Booch方法方法 OOSE方法方法UML Rumbaugh Booch Jacobson (朗伯夫) (布奇) (雅各布森) UML之父 IBM Rational部门首席科学家 现代语言学家2.1 关于关于UML2.2 UML构成构成 2.2.1 UML构成概述构成概述 2.2.2 UML基本语言基本语言要素要素 2.2.3 UML的基本语义规
24、则的基本语义规则 2.2.4 UML的通用机制的通用机制图图基本语言构成基本语言构成语义语义规则规则要素要素结构: (共7种)行为: (消息, 状态)分组: (包)注释: (注释)关系关系依赖关联泛化实现类图, 对象图, 用例图, 顺序图, 协作图, 状态图, 活动图, 构件图, 部署图命名命名范围范围可见性可见性完整性完整性执行执行规范说明规范说明修饰修饰通用划分通用划分扩展机制扩展机制(版型版型, 标记值标记值,约束约束)通用机制通用机制图图基本语言构成基本语言构成语义语义规则规则要素要素结构: (共7种)行为: (消息, 状态)分组: (包)注释: (注释)关系关系依赖关联泛化实现类图,
25、 对象图, 用例图, 顺序图, 协作图, 状态图, 活动图, 构件图, 部署图命名命名范围范围可见性可见性完整性完整性执行执行规范说明规范说明修饰修饰通用划分通用划分扩展机制扩展机制(版型版型, 标记值标记值,约束约束)通用机制通用机制 UMLUML语言的基本构成要素语言的基本构成要素, ,包括四类包括四类: : 结构结构: : 语言的静态构成要素语言的静态构成要素, ,有有7 7种种 行为行为: : 语言的动态构成要素语言的动态构成要素, ,表示事物表示事物 的变化和状态的变化和状态 分组分组: : 对模型中事物分组组织的要素对模型中事物分组组织的要素 注释注释: : 对模型中事物标注和解释
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件建模技术 软件 建模 技术 课件
限制150内