下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一部分 绪论,主讲: 郑 艳 ,第1章:(补充内容) 1.1 面向对象基本概念 1.2 面向对象分析与设计 1.3 UML 简介 第2章 迭代、进化和敏捷 第3章 案例研究,1.1 面向对象基本概念 1. 类和对象的基本概念,类:具备相同属性和行为的一组对象的集合,即所谓的”物以类聚“ 对象:对象(Object)是面向对象的基本构造单元.是一些变量和方法的集合,用于模拟现实世界中的一些事物模型.如一台电脑,一个人,一间房子等.当然也可以模拟一些虚拟的东西,比如一个学号,一个编号,一个院系等.,类本来是不存在的,是抽象的, 对象是具体的实实在在的 一个个对象也不是孤立的存在在这个世界上的。 如
2、:人类(class Person)是不存在的,它是我们对你,我,他这些活生生存在这个世界上的人的一个归类,称为“人类”。 在这个世界存在的是活生生的小张,小李这些人,称为“人类”的对象。我们这些人类的对象不是孤立存在这个世界上的,我们要开车,需要用到”车“的对象,我们用工具,要用到”工具“的对象。,客观世界,对象(实体),范畴(类),万事万物皆是对象,类与对象的关系 类 对象 抽象定义 实例 例如: 模具 由模具压出的工件 学生 学生王强 模板 应用模板产生的文件 类型 变量, 如 C 语言中的 int int x;,2. 类与对象的关系 类:( class ) 是具有相同属性和服务的集合,它
3、提供对对象的抽象描述,3:消息和事件 消息是对象与对象之间相互作用的方式.消息一般包括消息的发送对象,消息的接收对象,消息的传递方式,消息的内容,消息的返回五部分组成. 比如张三对李四说:今天我们来喝一杯. 事件是系统预先定义的,通过指定的条件触发的动作. 比如我打一下你的头,你头痛了. 这里我通过“打”这个行为来传递了一个消息对你产生了作用,你触动了痛这个事件.,4. 面向对象的基本思想 面向对象是一种新兴的程序设计方法,或者是一种新的程序设计规范(paradigm),其基本思想是使用对象、类、继承、封装、消息等基本概念来进行程序设计。从现实世界中客观存在的事物(即对象)出发来构造软件系统,
4、并且在系统构造中尽可能运用人类的自然思维方式。力图使对计算机语言中对事物的描述与现实世界中该事物的本来面目尽可能的一致。开发一个软件是为了解决某些问题,这些问题所涉及的业务范围称作该软件的问题域。其应用领域不仅仅是软件,还有计算机体系结构和人工智能等。 面向对象和面向过程的区别.doc,5. 面向对象的基本特征,抽象(abstract) 将要描述的事物进行简化,将事物特征进行概括,以事物层次结构来组织模型. 比如:狗.我们在软件中不可能把狗的所有信息都描述出来,我们把它简化为有四条腿,一个头,一个尾巴,还有一个躯杆. 这样我们就像画画一样画出了一个抽象的模型图. 然后对它的特征进行概括,比如它
5、会叫,会吃,会走. 然后狗还分哈巴狗,狼狗等很多种.所以这里又分出了狗的层次.,将对象的状态和行为绑到一起,并且尽可能的隐藏对象的内部细节. 比如:一台电视机,它的所有特征和内部结构都封装起来,我们不需要知道它的内部原理是怎么的,我们只需要知道怎么打开它,怎么换台就够了.,(2) 封装性(Encapsulation),继承是反映客观世界中对象的层次关系.正如上面狗的例子中,我们的狼狗,哈巴狗都继承自一个虚拟的狗的概念中.继承在很大程度上简化了我们的工作,也清淅的展示出了对象的层次关系. 在Java语言中,通常我们称一般类(虚拟类)为父类(superclass,超类),特殊类为子类(subcla
6、ss)。,(3) 继承性(Inheritance),对象的多态性是指在一般类中定义的属性或服务被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或服务在一般类及其各个特殊类中具有不同的语义。 例如:“几何图形”的“绘图”方法,“椭圆”和“多边形”都是“几何图”的子类,其“绘图”方法功能不同;”人类的“职业“方法,”学生“和”老师“都是”人类“的子类,其”职业“方法不同,学生是学习,老师是教书。,(4) 多态性(Polymorphism),6. 类与类之间的关系,1.泛化(Generalization) 表示类与类之间的继承关系,接口与接口之间的继承关系,一般化的关系是
7、从子类指向父类的, 具体表现父类 父类实例new 子类() UML图,2. 实现(Realization) 表示类对接口的实现关系。 UML图,2.依赖(Dependency) 依赖对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。具体表现依赖关系表现在局部变量,方法的参数,以及对静态方法的调用现实例子比如说你要去拧螺丝,你是不是要借助(也就是依赖)螺丝刀(Screwdriver)来帮助你完成拧螺丝(screw)的工作,3.关联(Association) 关联对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实
8、例存在固定的对应关系时,这两个对象之间为关联关系。具体表现关联关系是使用实例变量来实现现实例子比如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司,4. 聚合(Aggregation) 聚合当对象A被加入到对象B中,成为对象B的组成部分时,对象B和对象A之间为聚集关系。聚合是关联关系的一种,是较强的关联关系,强调的是整体与部分之间的关系。具体表现与关联关系一样,聚合关系也是通过实例变量来实现这样关系的。关联关系和聚合关系在语法上是没办法区分的,从语义上才能更好的区分两者的区别。,5. 组合 也表示类之间整体和
9、部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。 “国破家亡”,国灭了,家自然也没有了,“国”和“家”显然也是组合关系,7. 对象构成要素: 对象构成要素: 标识符:是对象的名称,用来区别于其他对象 属性: 是用来描述对象静态特征的一个数据项 服务: 是用来描述对象动态特征和行为的一个操作,是通过方法来实现的。 例1:考虑对象 “学生”,具体描述为:,例2:对象 “课程” 的有关抽象描述。,注意: 1. 属性是对对象的静态描述. 2. 服务是对对象的动态描述.外部是通过调用服务与对象取得联系.,class C
10、ar int speed; /变量定义部分 float weight,height; /变量定义部分 /成员变量在这个类都有效,与它在类体中的书写位置先后无关 void changSpeed(int newSpeed) /方法定义 speed=newSpeed; float getWeight() /方法定义 return weight; float getHeight() return height; ,创建这个类的对象并将之命名为car: Car car = new Car(); car.changSpead(30);/调用car的方法,分析: 强调的是对问题和需求的调查研究,而不是解决方
11、案。如:如何使用系统,具有哪些功能? 设计:强调的是满足需求的概念上的解决方案,而不是其实现。如:对方案和软件对象的描述。 面向对象分析:强调的是在问题领域内发现和描述对象。如:航班系统里包含飞机、航班和飞行员等概念。 面向对象设计:强调的是定义软件对象以及它们如何协作以实现需求。对象plane可以有tailNumber属性和getFlightHistory方法。,1.2 面向对象分析与设计,简单示例,模拟骰子游戏:点数是7则赢得游戏,否则为输,定义用例,定义领域模型,定义交互图,定义设计类图,简单示例(2)定义用例,用例 人们使用应用的情节或场景 不是面向对象制品,只是对情节的记录 用例是需
12、求分析中的一种常用工具 骰子游戏的用例: 骰子游戏:游戏者请求掷骰子。系统展示结果:如果骰子的总点数是7,则游戏者赢;否则游戏者输。,简单示例(3)定义领域模型(概念对象模型),关注从对象的角度创建领域描述,鉴别重要的概念、属性和关联 面向对象分析的结果是领域模型,其中展示重要的领域概念和对象 注意:不是软件对象的描述,而是真实世界领域中的概念和想象可视化 骰子游戏:,简单示例(4)定义交互图,关注对象间的职责和协作 顺序图(sequence diagram) 是描述协作的常见表示法,展示出软件对象之间的信息流,和由消息引起的方法调用。 骰子游戏:,简单示例(5)定义设计类图,设计类图(des
13、ign class diagram) 表示类定义的静态视图,描述类的属性和方法 与领域模型表示的真实世界的类不同,设计类图表示的 是软件类 骰子游戏:,1.3 什么是,UML(统一建模语言)是为软件系统的制品进行描述(specifying)、可视化(visualizing)、构造(constructing)、文档化(documenting)的一种语言。是 面向对象的可视化建模语言 它同样适用于商业模块和其他非软件系统。在大型和复杂系统的建模中,UML成功地描述一些优秀的工程实施。,特点,统一标准 统一了Booch、OMT和OOSE等方法中的基本概念,提供了标准的面向对象的模型元素的定义和表示
14、面向对象 可视化、表达能力强 独立于过程 不依赖于特定的程序设计语言,独立于开发过程 易掌握、易用,应用UML的三种方式,UML作为草图 白板上手绘非正式、不完整的图 用于探讨问题或解决方案的复杂部分 UML作为蓝图 相对详细的设计图,用于: 逆向工程,即以UML图的方式对现有代码进行可视化,使其易于理解 代码生成(前向工程)一般用其生成部分代码,开发人员填充其他代码 UML作为编程语言 用UML完成软件系统可执行规格说明。 可执行代码自动生成 目前在理论、工具的健壮性和可用性方面仍然处于发展阶段,应用UML的三种透视图,同一种表示法可以用来描述模型的三种透视图和类型: 概念透视图: 用图来描
15、述现实世界或关注领域中的事务 规格说明(软件)透视图: 用图(使用与概念透视图中相同的表示法)来描述软件的抽象物或具有规格说明和接口的构件,但是并不约定特定实现 实现(软件)透视图: 用图来描述特定技术中(例如,Java)的软件实现,UML 的不同透视图,,UML 历史,UML建模工具,选择工具的主要考虑因素: 价格 是不是符合UML最新的标准(如:UML2.0) 能不能和数据建模集成 双向工程 HTML 文档化 代码的自动生成 表图操作的容易性 自动化程度 ,UML建模主要工具,主要工具: Rational RoseArgoUMLVisioTogetherPower D
16、esignerJudeEnterprise ArchitectTogether StarUML,UML的构成,UML = UML成员 + UML建模规则 UML成员: UML的基本组成部分,可进一步划分为 UML 基本模型元素(things in UML) 关系(relationship) 模型图(diagram) UML建模规则:相当于建模语言的语法,结构基本模型元素,UML基本模型元素 = 结构模型元素+行为模型元素(交互+ 状态机)+成组元素(包)+注解元素 结构模型元素: 是UML模型里的名词(noun),是模型的静态组成部分,代表软件系统的概念的, 或物理的存在。 结构模型元素一共有
17、七种,它们是: 类 接口( interface) 协同 用例(use case) 主动类(active class) 构件(component) 节点(node) 在这些结构元素中,最常用的包括类、用例、接口、构件,关系,结构模型元素之间存在着某种语义上的联系。 在UML中,这种联系是关系(relationship) UML中共有4种关系,它们是: 关联关系(association) 依赖关系(dependency) 泛化关系(generalization) 实现关系(realization),模型图,UML 借助图形符号展示和表达系统的概观 ,据此可以开发出表示系统各个方面的不同图示。有助于
18、理解系统的行为和状态的典型图有:,用例图,用例为一系列事务,其中的每个事务是从系统外部调用的,需要与内部对象合作,以便在对象与系统周围之间创建关联,类图,此图是系统的静态结构,也是类以及这些类表示的关系的集合,时序图是通过展示系统与其环境之间的交互,描述系统行为的简单而直观的方法,时序图/顺序图,协作图表示特定环境和交互中一系列关联的对象。,活动图是状态机图的变更或特例。用来描述执行算法的工作流程中涉及的活动。,状态图展示方法执行的状态和对象执行的活动。,协作图,活动图,状态图,模型图(2),建模原则,UML的模型图不是UML语言成份(UML成员)的简单堆砌,它必须按特定的规则有机地组合而成,
19、从而构成一个完备的UML模型图。 UML建模规则包括: 名字:任何一个UML成员都必须包含一个名字。 作用域:UML成员所定义的内容起作用的上下文环境。 可见性:UML成员能被其它成员引用的方式。 完整性:UML成员之间互相联接的合法性和一致性。 运行属性:UML成员在运行时的特性。,第2章 迭代、进化和敏捷,2.1 软件开发模型,软件开发模型(Software Development Model) 是指软件开发全部过程、活动和任务的结构框架。 典型的开发模型有: 瀑布模型(waterfall model); 渐增模型/演化/迭代(incremental model); 原型模型(protot
20、ype model); 螺旋模型(spiral model); 喷泉模型(fountain model); 智能模型(intelligent model) ; 混合模型(hybrid model),2.2 瀑布开发模型,试图在编程之前(详细)定义所有或大部分需求。通常于 编程前创建出完整的设计。同样,试图在开始前定义“可 靠的”计划或时间表。,瀑布开发模型(2),缺点: 成品时间长; 缺乏灵活性; 最终得到的产品可能并非满足用户需求。,错误倾向原因: 基于错误假设: 规格说明是可预知的和稳定的,并且能够在项目开始时就正确定义,同时具有低变更率。 变更对于软件来说是永恒的!,瀑布开发模型(3),
21、反馈和改写的必要性 在负责、变更系统中(如大多数软件项目),反馈和调整是成功的关键要素! 来自早期开发中的反馈,利于程序设计人员理解规格说明,客户演示也有助于精化需求。 来自测试中的反馈,有助于开发者精化设计或模型。 来自团队处理早期特性过程中的反馈,有助于精化时间表和估计。 来自客户和市场的反馈,有助于重新定义下一次迭代实现特性的优先级。,2.3 统一过程概述,软件开发过程 描述了构造、部署以及维护软件的方式 统一过程(Unified Process,UP)是一个通用的过程框架,可用于各种不同类型的软件系统、各种不同的应用领域、各种不同类型的组织、各种不同的功能级别以及各种不同的项目规模 R
22、ational 统一过程(Rational Unified Process,RUP)是UP的详细精化,已被广泛采纳,课程采用UP作为探讨迭代和进化式需求分析及OOA/D的 示范过程 因为对该主题的介绍必须在某一过程的语境中进行。 课程核心思想是独立于任何特定过程的 并适用于众多现代的迭代、进化和敏捷方法,如Scrum、Learn Development、DSDM、Feature-Driven Development、Adaptive Software Development等等。,统一过程概述(2)特点,统一过程的特点: 用例驱动 ( UDD) 以构架为中心 迭代和增量,统一过程概述(3)特点
23、之用例驱动,为了捕获附加在需求上的价值 “你希望系统为每个用户做什么” 直观 驱动过程 设计构架:选择适当的用例集合作为稳定的构架基础 编写用户手册的起点,为什么使用用例?,统一过程概述(3)特点之以架构为中心,软件构架作用与建筑物构架所起的作用类似 软件构架受到了软件应用平台,可重用的软件组件、实施问题、与遗留系统的集成等多种因素的影响。 构架刻画整体设计,忽略细节,因而依赖于人的经验的判断“什么是重要的” 过程可以帮助构架设计师确定正确的目标,如易理解性、适于将来变化的柔性以及可重用性等,统一过程概述(4)特点之迭代和增量,统一过程生命周期模型 统一过程是在重复一系列组成系统的生命周期的循
24、环,每次循环都以向用户提供一个产品版本作为终结。 每次循环都包括初始、细化、构造和移交。每个阶段又细分为多次迭代过程,统一过程概述(5)特点之迭代和增量(2),产品的增量化 每次循环都产生系统的一个新的版本,每个版本都是一个准备交付的产品。它包括由能够编译和运行的构件所体现的源代码体、各种手册和相关的交付品。 产品还包括需求、用例、非功能性需求和测试用例,还包括构架和可视化的模型(UML模型),2.4 迭代和进化式开发,迭代和进化式开发(2),如何在迭代项目中处理变更,迭代和进化式开发(3),迭代开发的优点: 减少项目失败可能性,提高生产率,降低缺陷率。 在早期(而不是晚期)缓解高风险(技术、
25、需求、目标、可用性等等)。 早期可见的进展。 早期反馈、用户参与和调整,会产生更接近涉众真实需求的精华系统 可控复杂性;团队不会被“分析瘫痪”或长期且复杂的步骤所淹没。 一次迭代中的经验可以被系统地用于改进开发过程本身,并如此反复进行下去。,迭代和进化式开发(4),迭代型的开发进度计划可以分为两个层次: 总体的计划 总的完成日期 每个里程碑要完成的目标或者功能项 确定迭代周期多长,一般为2-3周 不关注执行细节,粗略的 短期的详细计划 关注执行细节,将具体的任务落实到人,并且由于时间跨度小相对稳定。 只需要制定当前迭代周期的计划即可 时间箱(TimeBoxing)迭代是将迭代的结束日期固定下来
26、并且不允许其改变的实践。 大部分迭代方法建议迭代时间在26周之内。小步骤、快速反馈和调整是迭代开发的主要思想,时间过长会增加风险。,迭代和进化式开发(5)举例,假设将有20次迭代 第一次迭代前两天: 一上午: 高阶需求分析,例如仅仅确定用例和特性的名称,以及关键的非功能性需求。 从高阶需求中选择10(具有重要的架构意义,具有高业务价值,具有高风险) 一天半: 对选出的用例的功能和非功能性需求进行详细的分析,迭代和进化式开发(6)举例(2),第一次迭代前,召开迭代计划会议,选择选出的用例中的子集,在特定时间内进行设计、构造和测试。 严格遵守时间,完成第1次迭代。 在第1次迭代即将结束时,召开第二
27、次需求工作会。选另外1015用例进行详细分析(一到两天) 以相同步骤重复2-4,进行下一次迭代。 或许经过四次迭代,可以精化90%的需求,而只构建了10%的软件。之后需求基本已经稳定,之后每次会议关注下一步应该完成的,最关键的技术和业务特征是什么。,迭代和进化式开发(7),风险驱动和客户驱动的迭代计划 在项目早期就允许客户对可运行的系统进行验证,从而使项目的风险减到最小。 以架构为中心迭代开发的实践。意味着早期迭代要致力于核心架构的构造、测试和稳定。,2.6 敏捷方法及其观点,敏捷开发(agile development)方法通常应用时间定量的迭代和进化式开发、使用自适应计划、提倡增量交付并包
28、含其他提倡敏捷性(快速和灵活的影响变更)的价值和实践。 简言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。,敏捷方法及其观点(2),敏捷宣言 个体和交互 胜过 工具和过程 可以运行的软件胜过 面面俱到的文档 客户合作 胜过 合同谈判 响应变化 胜过 遵循计划,敏捷方法及其观点(3),敏捷原则: 优先级最高的是,通过早期和持续交付有价值的软件来满足客户。 欢迎变更需求,即使在开发的后期提出。敏捷过程为客户的竞争优势而控制变更。 以两周到两月为周期,频繁地交付可运行的软件,首推较短的时间定量。 在整个项目过程中,每一天开发人员都要和业务
29、人员合作。 由个体推动项目的建设,为个体提供所需的环境,支持和信任。 在开发团队中或开发团队间传递信息的最为有效和高效的方法是面对面的交谈。,敏捷方法及其观点(4),敏捷原则 衡量进展的重要尺度是可运行的软件。 敏捷过程提倡可持续的开发。 发起人,开发者和用户应该步调一致。 不断地关注技术上优越的设计会提高敏捷性。 简洁是最重要的,简洁就是尽量减少工作量的艺术。 最佳的架构,需求和设计来自于自组织的团队。 团队要定期反省如何使工作更有效,然后相应地调整行为。,敏捷项目的效益,人们分析了一系列的敏捷项目,其结果表明,产品 上市时间平均减少了69,成本降低了57。此 外,质量也同样令人印象深刻:
30、致命缺陷平均减少 了80,普通缺陷减少了60。,2.7 敏捷建模,建模(构件UML草图)的目的主要是为理解,而非文档。与这种观点一致的敏捷方法成为敏捷建模。 另外: 采用敏捷开发并不意味着不用建模 只需要对设计空间中不常见、困难和棘手的一小部分问题建模和应用UML 尽可能使用简单的工具。 不要单独建模,而是结对(或三个人)在白板上建模 并行创建模型。 白板上画草图时,应使用“足够好”的简单表示法。 先前绘制的模型图都是不完整的 开发者应该为自己进行OO设计建模,2.8 敏捷UP,敏捷UP: UP采纳和应用可适应和轻量级的精神 示例: 推荐使用UP活动和制品的简集,所有均可选。 实现前的需求和设
31、计是不完整的。 以敏捷建模实践应用UML 对整个项目不应有详细的计划,2.9 UP的其他关键实践,核心思想: 短时间定量迭代、进化和可适应性开发。 其他最佳实践和关键概念: 在早期迭代中解决高风险和高价值的问题 不断地让用户参与评估、反馈和需求 在早期迭代中建立内聚的核心架构 不断地验证质量;提早、经常和实际地测试 在适当的地方使用用例 进行一些可视化建模 认真管理需求 实行变更请求和配置管理,2.10 什么是UP的四个阶段,UP项目将其工作和迭代组织为四个主要阶段: 初始(Inception): 大体上的构想、业务案例、范围和模糊评估 可行性研究 细化(Elaboration): 已精化的构想、 核心架构的迭代实现、 高风险的解决、 确定大多数需求和范围以及进行更为实际的评估 构造(Construction): 对遗留下来的风险较低和比较简单的元素进行迭代实现,准备部署 移交(Transition) 进行beta测试,UP的四个阶段(2),UP中面向进度表的术语,2.11 什么是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省遂宁市安居区重点达标名校2025-2026学年初三下学期2月期末统考英语试题含解析
- 陕西省合阳县重点名校2026年初三下学期期中联考物理试题文试题含解析
- 苏州市2025-2026学年中考二模语文试题含解析
- 四川省宜宾市2026年初三入学模拟-数学试题试卷含解析
- 许昌市市级名校2025-2026学年初三英语试题周末限时训练含解析
- 浙江省温州市育英国际实验校2026年初三下第二次测试(物理试题文)试题含解析
- 2025 高中文言文阅读理解之词类活用判断课件
- 2026年SCADA系统安全防护策略
- 发电机运行规范
- 检验科临床检验结果解读要点
- 气管食管瘘麻醉管理
- 行政管理专业毕业论文提纲
- 2025火电企业固废综合利用平台
- DB11∕T 1567-2018 森林疗养基地建设技术导则
- 食堂购买蔬菜合同(标准版)
- 五六年级女生青春期健康讲座内容
- 境外旅游保险知识培训课件
- 实验室实验员述职报告
- 医院环境清洁消毒与监测
- DB44∕T 2331-2021 公路混凝土桥梁火灾后安全性能评定技术规程
- 河南洛阳产融集团有限公司招聘笔试题库2025
评论
0/150
提交评论