第一部分-绪论.._第1页
第一部分-绪论.._第2页
第一部分-绪论.._第3页
第一部分-绪论.._第4页
第一部分-绪论.._第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

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

文档简介

1、第一部分第一部分 绪论绪论主讲:主讲: 郑郑 艳艳2Software School of Xiamen University第1章:(补充内容) 1.1 面向对象基本概念 1.2 面向对象分析与设计 1.3 UML 简介第2章 迭代、进化和敏捷第3章 案例研究3Software School of Xiamen University1.1 面向对象基本概念1. 类和对象的基本概念类和对象的基本概念类:具备相同属性和行为的一组对象的集合,即所谓的”物以类聚“对象:对象(Object)是面向对象的基本构造单元.是一些变量和方法的集合,用于模拟现实世界中的一些事物模型.如一台电脑,一个人,一间房子等

2、.当然也可以模拟一些虚拟的东西,比如一个学号,一个编号,一个院系等.4Software School of Xiamen University类本来是不存在的,是抽象的,类本来是不存在的,是抽象的,对象是具体的实实在在的对象是具体的实实在在的 一个个对象也不是孤立的存在在这个世界上的。一个个对象也不是孤立的存在在这个世界上的。如:人类(如:人类(class Person)是不存在的,它是我们对你,我)是不存在的,它是我们对你,我,他这些活生生存在这个世界上的人的一个归类,称为,他这些活生生存在这个世界上的人的一个归类,称为“人人类类”。 在这个世界存在的是活生生的小张,小李这些人,称在这个世界

3、存在的是活生生的小张,小李这些人,称为为“人类人类”的对象。我们这些人类的对象不是孤立存在这个的对象。我们这些人类的对象不是孤立存在这个世界上的,我们要开车,需要用到世界上的,我们要开车,需要用到”车车“的对象,我们用工的对象,我们用工具,要用到具,要用到”工具工具“的对象。的对象。5Software School of Xiamen University客观世界客观世界对象对象(实体)(实体)范畴范畴(类)(类)万事万物皆是对象万事万物皆是对象6Software School of Xiamen University类与对象的关系类与对象的关系 类类 对象对象 抽象定义抽象定义 实例实例 例

4、如:例如: 模具模具 由模具压出的工件由模具压出的工件 学生学生 学生王强学生王强 模板模板 应用模板产生的文件应用模板产生的文件 类型类型 变量变量, , 如如 C C 语言中的语言中的 int int int x; int x; 2. 类与对象的关系类与对象的关系类:类:( class ) 是具有相同属性和服务的集合是具有相同属性和服务的集合, ,它提供对它提供对对象的对象的抽象描述抽象描述 7Software School of Xiamen University3:消息和事件:消息和事件消息是对象与对象之间相互作用的方式.消息一般包括消息的发送对象,消息的接收对象,消息的传递方式,消息

5、的内容,消息的返回五部分组成.w 比如张三对李四说:今天我们来喝一杯.事件是系统预先定义的,通过指定的条件触发的动作.w 比如我打一下你的头,你头痛了. 这里我通过“打”这个行为来传递了一个消息对你产生了作用,你触动了痛这个事件.8Software School of Xiamen University4. 面向对象的基本思想面向对象的基本思想面向对象是一种新兴的程序设计方法,或者是一种新的程序设计规范(paradigm),其基本思想是使用对象、类、继承、封装、消息等基本概念来进行程序设计。从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式。力

6、图使对计算机语言中对事物的描述与现实世界中该事物的本来面目尽可能的一致。开发一个软件是为了解决某些问题,这些问题所涉及的业务范围称作该软件的问题域。其应用领域不仅仅是软件,还有计算机体系结构和人工智能等。 面向对象和面向过程的区别.doc9Software School of Xiamen University5. 面向对象的基本特征面向对象的基本特征(1)抽象(abstract) 将要描述的事物进行简化,将事物特征进行概括,以事物层次结构来组织模型.w 比如:狗.我们在软件中不可能把狗的所有信息都描述出来,我们把它简化为有四条腿,一个头,一个尾巴,还有一个躯杆. 这样我们就像画画一样画出了一

7、个抽象的模型图. 然后对它的特征进行概括,比如它会叫,会吃,会走. 然后狗还分哈巴狗,狼狗等很多种.所以这里又分出了狗的层次.10Software School of Xiamen University 将对象的状态和行为绑到一起,并且尽可能的隐藏对象的内部细节.w 比如:一台电视机,它的所有特征和内部结构都封装起来,我们不需要知道它的内部原理是怎么的,我们只需要知道怎么打开它,怎么换台就够了.(2) 封装性封装性(Encapsulation)11Software School of Xiamen University 继承是反映客观世界中对象的层次关系.正如上面狗的例子中,我们的狼狗,哈巴狗

8、都继承自一个虚拟的狗的概念中.继承在很大程度上简化了我们的工作,也清淅的展示出了对象的层次关系. 在Java语言中,通常我们称一般类(虚拟类)为父类(superclass,超类),特殊类为子类(subclass)。(3) 继承性继承性(Inheritance)12Software School of Xiamen University 对象的多态性是指在一般类中定义的属性或服务被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或服务在一般类及其各个特殊类中具有不同的语义。 例如:“几何图形”的“绘图”方法,“椭圆”和“多边形”都是“几何图”的子类,其“绘图”方法功能不

9、同;”人类的“职业“方法,”学生“和”老师“都是”人类“的子类,其”职业“方法不同,学生是学习,老师是教书。(4) 多态性多态性(Polymorphism)13Software School of Xiamen University6. 类与类之间的关系1.泛化泛化(Generalization)表示类与类之间的继承关系,接口与接口之间的继承关系,表示类与类之间的继承关系,接口与接口之间的继承关系,一般化的关系是从子类指向父类的,一般化的关系是从子类指向父类的, 具体表现具体表现父类父类 父类实例父类实例new 子类子类()UML图图14Software School of Xiamen Un

10、iversity2. 实现实现(Realization)表示类对接口的实现关系。表示类对接口的实现关系。 UML图图15Software School of Xiamen University2.依赖依赖(Dependency)依赖依赖对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。具体表现具体表现依赖关系表现在局部变量,方法的参数,以及对静态方法的调用现实例子现实例子比如说你要去拧螺丝,你是不是要借助(也就是依赖)螺丝刀(Screwdriver)来帮助你完成拧螺丝(screw)的工作16Software School

11、of Xiamen University3.关联关联(Association) 关联关联对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。具体表现具体表现关联关系是使用实例变量来实现现实例子现实例子比如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司17Software School of Xiamen University4. 聚合(聚合(Aggregation)聚合聚合当对象A被加入到对象B中,成为对象B的组成部分时,对象B和对象A之间为聚集

12、关系。聚合是关联关系的一种,是较强的关联关系,强调的是整体与部分之间的关系。具体表现具体表现与关联关系一样,聚合关系也是通过实例变量来实现这样关系的。关联关系和聚合关系在语法上是没办法区分的,从语义上才能更好的区分两者的区别。18Software School of Xiamen University5. 组合组合也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。 “国破家亡”,国灭了,家自然也没有了,“国”和“家”显然也是组合关系 19Software School of Xiamen Un

13、iversity7. 对象构成要素对象构成要素:对象构成要素:标识符:是对象的名称,用来区别于其他对象属性: 是用来描述对象静态特征的一个数据项服务: 是用来描述对象动态特征和行为的一个操作,是通过方法来实现的。例1:考虑对象 “学生”,具体描述为:对象名属性服务学号、姓名、专业、性别、年龄、身份证号、电话等等获取和修改学号、姓名、专业、性别、年龄等等学生20Software School of Xiamen University例2:对象 “课程” 的有关抽象描述。对象名属性服务课程课程名、编号、学时数、选课要求、任课教师等获取并修改课程名、编号、学时数、选课要求、任课教师等注意: 1. 属

14、性是对对象的静态描述. 2. 服务是对对象的动态描述.外部是通过调用服务与对象取得联系.21Software School of Xiamen Universityclass Car int speed; /变量定义部分 float weight,height; /变量定义部分 /成员变量在这个类都有效,与它在类体中的书写位置先后无关 void changSpeed(int newSpeed) /方法定义 speed=newSpeed; float getWeight() /方法定义 return weight; float getHeight() return height; 类体方类体方法

15、成员法成员类体变类体变量成员量成员创建这个类的对象并将之命名为创建这个类的对象并将之命名为car:Car car = new Car(); car.changSpead(30);/调用调用car的方法的方法22Software School of Xiamen Universityw 分析: 强调的是对问题和需求的调查研究,而不是解决方案。如:如何使用系统,具有哪些功能? w 设计:强调的是满足需求的概念上的解决方案,而不是其实现。如:对方案和软件对象的描述。w 面向对象分析:强调的是在问题领域内发现和描述对象。如:航班系统里包含飞机、航班和飞行员等概念。w 面向对象设计:强调的是定义软件对象

16、以及它们如何协作以实现需求。对象plane可以有tailNumber属性和getFlightHistory方法。1.2 面向对象分析与设计面向对象分析与设计23Software School of Xiamen University简单示例简单示例w 模拟骰子游戏:点数是7则赢得游戏,否则为输定义用例定义用例定义领域模型定义领域模型定义交互图定义交互图定义设计类图定义设计类图24Software School of Xiamen University简单示例(简单示例(2)定义用例定义用例w 用例用例人们使用应用的情节或场景人们使用应用的情节或场景不是面向对象制品,只是不是面向对象制品,只是对

17、情节的记录对情节的记录用例是需求分析中的一种常用工具用例是需求分析中的一种常用工具w 骰子游戏的用例:骰子游戏的用例:骰子游戏:游戏者请求掷骰子。系统展示结果:骰子游戏:游戏者请求掷骰子。系统展示结果:如果骰子的总点数是如果骰子的总点数是7,则游戏者赢;否则游戏,则游戏者赢;否则游戏者输。者输。25Software School of Xiamen University简单示例(简单示例(3)定义领域模型(概念对象模型)定义领域模型(概念对象模型)w 关注从对象的角度创建领域描述,鉴别重要的概关注从对象的角度创建领域描述,鉴别重要的概念、属性和关联念、属性和关联w 面向对象分析的结果是领域模型

18、,其中展示重要面向对象分析的结果是领域模型,其中展示重要的领域概念和对象的领域概念和对象w 注意:注意:不是软件对象的描述,而是真实世界领域不是软件对象的描述,而是真实世界领域中的概念和想象可视化中的概念和想象可视化w 骰子游戏:骰子游戏:26Software School of Xiamen University简单示例(简单示例(4)定义交互图定义交互图w 关注对象间的关注对象间的职责和协作职责和协作w 顺序图(顺序图(sequence diagram) 是描述协作的常见表示法,展示出软件对象之间的信息是描述协作的常见表示法,展示出软件对象之间的信息流,和由消息引起的方法调用。流,和由消息

19、引起的方法调用。w 骰子游戏:骰子游戏:27Software School of Xiamen University简单示例(简单示例(5)定义设计类图定义设计类图w 设计类图(设计类图(design class diagram) 表示类定义的静态视图,描述类的属性和方法表示类定义的静态视图,描述类的属性和方法 与领域模型表示的真实世界的类不同,设计类图表示的与领域模型表示的真实世界的类不同,设计类图表示的 是是软件类软件类w 骰子游戏:骰子游戏:28Software School of Xiamen University1.3 什么是什么是w UML(统一建模语言统一建模语言)是为软件系统的

20、制品进行是为软件系统的制品进行描述描述(specifying)、)、可视化可视化(visualizing)、)、构造构造(constructing)、)、文档化文档化(documenting)的一种语言。)的一种语言。是是 面向对象的可视化建模语言面向对象的可视化建模语言w 它同样适用于商业模块和其他非软件系统。在大型和复杂它同样适用于商业模块和其他非软件系统。在大型和复杂系统的建模中,系统的建模中,UML成功地描述一些优秀的工程实施。成功地描述一些优秀的工程实施。29Software School of Xiamen University特点特点w 统一标准 统一了Booch、OMT和OOS

21、E等方法中的基本概念,提供了标准的面向对象的模型元素的定义和表示w 面向对象w 可视化、表达能力强w 独立于过程 不依赖于特定的程序设计语言,独立于开发过程w 易掌握、易用30Software School of Xiamen University应用应用UML的三种方式的三种方式w UML作为作为草图草图 白板上手绘非正式、不完整的图白板上手绘非正式、不完整的图 用于探讨问题或解决方案的复杂部分用于探讨问题或解决方案的复杂部分w UML作为作为蓝图蓝图 相对详细的设计图,用于:相对详细的设计图,用于: 逆向工程,即以逆向工程,即以UML图的方式对现有代码进行可视化,图的方式对现有代码进行可视

22、化,使其易于理解使其易于理解 代码生成(前向工程)代码生成(前向工程)一般用其生成部分代码,一般用其生成部分代码,开发人员填充其他代码开发人员填充其他代码w UML作为作为编程语言编程语言 用用UML完成软件系统可执行规格说明。完成软件系统可执行规格说明。 可执行代码自动生成可执行代码自动生成 目前在理论、工具的健壮性和可用性方面仍然处于发展目前在理论、工具的健壮性和可用性方面仍然处于发展阶段阶段31Software School of Xiamen University应用应用UML的三种透视图的三种透视图w 同一种表示法可以用来描述模型的三种透视图和类同一种表示法可以用来描述模型的三种透视

23、图和类型:型:概念透视图:概念透视图: 用图来描述现实世界或关注领域中的事务用图来描述现实世界或关注领域中的事务规格说明(软件)透视图:规格说明(软件)透视图: 用图(使用与概念透视图中相同的表示法)来用图(使用与概念透视图中相同的表示法)来描述软件的抽象物或具有规格说明和接口的构描述软件的抽象物或具有规格说明和接口的构件,但是并不约定特定实现件,但是并不约定特定实现实现(软件)透视图:实现(软件)透视图: 用图来描述特定技术中(例如,用图来描述特定技术中(例如,Java)的软件)的软件实现实现32Software School of Xiamen UniversityUML 的不同透视图的不

24、同透视图33Software School of Xiamen UWeb - June 1996 OOPSLA 95PublicFeedbackOMG Acceptance, Nov 1997Final submission to OMG, Sept 1997First submission to OMG, Jan 1997UML 1.0UML partnersUML 1.1UML 1.4UML 2.0Planned minor revision (2000)Planned major revision (2001)UML 1.3Current mino

25、r revision 1999UML 历史历史34Software School of Xiamen UniversityUML建模工具建模工具w 选择工具的主要考虑因素:价格是不是符合UML最新的标准(如:UML2.0)能不能和数据建模集成双向工程HTML 文档化代码的自动生成表图操作的容易性自动化程度 35Software School of Xiamen UniversityUML建模主要工具建模主要工具w 主要工具:Rational RoseArgoUMLVisioTogetherPower DesignerJudeEnterprise ArchitectTogether StarUM

26、L36Software School of Xiamen UniversityUML的构成的构成UML = UML成员 + UML建模规则UML成员: UML的基本组成部分,可进一步划分为UML 基本模型元素(things in UML)关系(relationship)模型图(diagram) UML建模规则:相当于建模语言的语法37Software School of Xiamen University结构基本模型元素结构基本模型元素w UML基本模型元素基本模型元素 = 结构模型元素结构模型元素+行为模型元素(交互行为模型元素(交互+ 状态机)状态机)+成组元素(包)成组元素(包)+注解元

27、素注解元素w 结构模型元素结构模型元素: 是是UML模型里的名词(模型里的名词(noun),是模型的静),是模型的静态组成部分,代表软件系统的概念的态组成部分,代表软件系统的概念的, 或物理的存在。或物理的存在。w 结构模型元素一共有七种,它们是:结构模型元素一共有七种,它们是:类类接口(接口( interface)协同协同用例(用例(use case)主动类(主动类(active class)构件(构件(component)节点(节点(node)w 在这些结构元素中,最常用的包括在这些结构元素中,最常用的包括类、用例、接口、构件类、用例、接口、构件Check Pass WordISpelli

28、ngShell.cpp38Software School of Xiamen University关系关系w 结构模型元素之间存在着某种语义上的联系。结构模型元素之间存在着某种语义上的联系。w 在在UML中,这种联系是中,这种联系是关系(关系(relationship)w UML中共有中共有4种关系,它们是:种关系,它们是:关联关系关联关系(association)依赖关系依赖关系(dependency)泛化关系泛化关系(generalization)实现关系实现关系(realization) 39Software School of Xiamen University模型图模型图w UML

29、借助图形符号展示和表达系统的概观借助图形符号展示和表达系统的概观 ,据此可以,据此可以开发出表示系统各个方面的不同图示。有助于理解系统开发出表示系统各个方面的不同图示。有助于理解系统的行为和状态的典型图有:的行为和状态的典型图有:用用例图用例为一系列事务,其中的每个事务是从系统外部调用的,需要与内部对象合作,以便在对象与系统周围之间创建关联类图此图是系统的静态结构,也是类以及这些类表示的关系的集合时序图是通过展示系统与其环境之间的交互,描述系统行为的简单而直观的方法 时序图/顺序图40Software School of Xiamen University协作图表示特定环境和交互中一系列关联的

30、对象。 活动图是状态机图的变更或特例。用来描述执行算法的工作流程中涉及的活动。状态图展示方法执行的状态和对象执行的活动。 协作图活动图状态图模型图(模型图(2)41Software School of Xiamen University建模原则建模原则w UML的模型图不是的模型图不是UML语言成份(语言成份(UML成员)的成员)的简单堆砌,它必须按简单堆砌,它必须按特定的规则特定的规则有机地组合而成,有机地组合而成,从而构成一个完备的从而构成一个完备的UML模型图。模型图。w UML建模规则包括建模规则包括: 名字:任何一个名字:任何一个UML成员都必须包含一个名字。成员都必须包含一个名字。

31、作用域:作用域:UML成员所定义的内容起作用的成员所定义的内容起作用的上下文上下文环境。环境。可见性:可见性:UML成员能被其它成员引用的方式。成员能被其它成员引用的方式。完整性:完整性:UML成员之间互相联接的合法性和一致性。成员之间互相联接的合法性和一致性。运行属性:运行属性:UML成员在运行时的特性。成员在运行时的特性。42Software School of Xiamen University第第2章章 迭代、进化和敏捷迭代、进化和敏捷43Software School of Xiamen University2.1 软件开发模型软件开发模型w 软件开发模型软件开发模型(Softwar

32、e Development Model) 是指软件开发全部过程、活动和任务的结构框架。是指软件开发全部过程、活动和任务的结构框架。w 典型的开发模型有:典型的开发模型有: 瀑布模型瀑布模型(waterfall model); 渐增模型渐增模型/演化演化/迭代迭代(incremental model); 原型模型原型模型(prototype model); 螺旋模型螺旋模型(spiral model); 喷泉模型喷泉模型(fountain model); 智能模型智能模型(intelligent model) ; 混合模型混合模型(hybrid model) 44Software School

33、of Xiamen University2.2 瀑布开发模型瀑布开发模型w 试图在编程之前(详细)定义所有或大部分需求。通常于试图在编程之前(详细)定义所有或大部分需求。通常于 编程前创建出完整的设计。同样,试图在开始前定义编程前创建出完整的设计。同样,试图在开始前定义“可可 靠的靠的”计划或时间表。计划或时间表。45Software School of Xiamen University瀑布开发模型(瀑布开发模型(2)w 缺点:缺点: 成品时间长;成品时间长; 缺乏灵活性;缺乏灵活性; 最终得到的产品可能并非满足用户需求。最终得到的产品可能并非满足用户需求。 变更对于软件来说是永恒的!变更对

34、于软件来说是永恒的!各种规模软件项目的变更百分比项目的功能点规模需求变更46Software School of Xiamen University瀑布开发模型(瀑布开发模型(3)w 反馈和改写的必要性反馈和改写的必要性 在负责、变更系统中(如大多数软件项目),在负责、变更系统中(如大多数软件项目),反馈和调反馈和调整是成功的关键要素!整是成功的关键要素! 来自早期开发中的反馈,利于程序设计人员理解规格来自早期开发中的反馈,利于程序设计人员理解规格说明,客户演示也有助于精化需求。说明,客户演示也有助于精化需求。 来自测试中的反馈,有助于开发者精化设计或模型。来自测试中的反馈,有助于开发者精化设

35、计或模型。 来自团队处理早期特性过程中的反馈,有助于精化时来自团队处理早期特性过程中的反馈,有助于精化时间表和估计。间表和估计。 来自客户和市场的反馈,有助于重新定义下一次迭代来自客户和市场的反馈,有助于重新定义下一次迭代实现特性的优先级。实现特性的优先级。47Software School of Xiamen University2.3 统一过程概述统一过程概述w 软件开发过程软件开发过程 描述了构造、部署以及维护软件的方式描述了构造、部署以及维护软件的方式w 统一过程(统一过程(Unified Process,UP)是一个)是一个通用的过程框通用的过程框架,架,可用于各种不同类型的软件系统

36、、各种不同的应用领可用于各种不同类型的软件系统、各种不同的应用领域、各种不同类型的组织、各种不同的功能级别以及各种域、各种不同类型的组织、各种不同的功能级别以及各种不同的项目规模不同的项目规模w Rational 统一过程(统一过程(Rational Unified Process,RUP)是是UP的详细精化,已被广泛采纳的详细精化,已被广泛采纳48Software School of Xiamen Universityw 课程采用课程采用UP作为探讨迭代和进化式需求分析及作为探讨迭代和进化式需求分析及OOA/D的的 示范过程示范过程 因为对该主题的介绍必须在某一过程的语境中进行。因为对该主题

37、的介绍必须在某一过程的语境中进行。w 课程核心思想是课程核心思想是独立于任何特定过程独立于任何特定过程的的 并适用于众多现代的迭代、进化和敏捷方法,如并适用于众多现代的迭代、进化和敏捷方法,如Scrum、Learn Development、DSDM、Feature-Driven Development、Adaptive Software Development等等。等等。49Software School of Xiamen University统一过程概述(统一过程概述(2)特点特点w 统一过程的特点统一过程的特点:用例驱动用例驱动 ( UDD)以构架为中心以构架为中心迭代和增量迭代和增量5

38、0Software School of Xiamen University统一过程概述(统一过程概述(3)特点之用例驱动特点之用例驱动为了捕获附加在需求上的价值为了捕获附加在需求上的价值 “你希望系统为每个用户做什么你希望系统为每个用户做什么” 直观直观驱动过程驱动过程设计构架:选择适当的用例集合作为稳定的构设计构架:选择适当的用例集合作为稳定的构架基础架基础编写用户手册的起点编写用户手册的起点为什么使用用例?为什么使用用例?51Software School of Xiamen University统一过程概述(统一过程概述(3)特点之以架构为中心特点之以架构为中心w 软件构架作用与建筑物构

39、架所起的作用类似软件构架作用与建筑物构架所起的作用类似w 软件构架受到了软件构架受到了软件应用平台,可重用的软件组软件应用平台,可重用的软件组件、实施问题、与遗留系统的集成件、实施问题、与遗留系统的集成等多种因素的等多种因素的影响。影响。w 构架刻画整体设计,忽略细节,因而依赖于人的构架刻画整体设计,忽略细节,因而依赖于人的经验的判断经验的判断“什么是重要的什么是重要的”w 过程可以帮助构架设计师确定正确的目标,如易过程可以帮助构架设计师确定正确的目标,如易理解性、适于将来变化的柔性以及可重用性等理解性、适于将来变化的柔性以及可重用性等52Software School of Xiamen U

40、niversity统一过程概述(统一过程概述(4)特点之迭代和增量特点之迭代和增量w 统一过程生命周期模型统一过程生命周期模型 统一过程是在重复一系列组成系统的生命周期的循环,统一过程是在重复一系列组成系统的生命周期的循环,每次循环都以向用户提供一个每次循环都以向用户提供一个产品版本产品版本作为终结。作为终结。 每次循环都包括每次循环都包括初始、细化、构造和移交初始、细化、构造和移交。每个阶段又。每个阶段又细分为多次迭代过程细分为多次迭代过程53Software School of Xiamen University统一过程概述(统一过程概述(5)特点之迭代和增量(特点之迭代和增量(2)w 产

41、品的增量化产品的增量化每次循环都产生系统的一个新的版本,每个版本每次循环都产生系统的一个新的版本,每个版本都是一个准备交付的产品。它包括由能够编译和都是一个准备交付的产品。它包括由能够编译和运行的构件所体现的源代码体、各种手册和相关运行的构件所体现的源代码体、各种手册和相关的交付品。的交付品。产品还包括需求、用例、非功能性需求和测试用产品还包括需求、用例、非功能性需求和测试用例,还包括构架和可视化的模型(例,还包括构架和可视化的模型(UML模型)模型)54Software School of Xiamen University2.4 迭代和进化式开发迭代和进化式开发55Software Sch

42、ool of Xiamen University迭代和进化式开发(迭代和进化式开发(2)w 如何在迭代项目中处理变更包括设计、实现、集成和测试的一次迭代早期迭代远离系早期迭代远离系统的统的“真实路径真实路径”。通过反馈和。通过反馈和调整,系统向最调整,系统向最适宜的需求和设适宜的需求和设计收敛计收敛在后期迭代中,很少会在在后期迭代中,很少会在需求上产生显著变化,但需求上产生显著变化,但是存在这种可能性。这种是存在这种可能性。这种后期的变化可能会给组织后期的变化可能会给组织带来业务竞争优势带来业务竞争优势56Software School of Xiamen University迭代和进化式开发

43、(迭代和进化式开发(3)w 迭代开发的优点:迭代开发的优点: 减少项目失败可能性,提高生产率,降低缺陷率。减少项目失败可能性,提高生产率,降低缺陷率。 在早期(而不是晚期)缓解高风险(技术、需求、目标、在早期(而不是晚期)缓解高风险(技术、需求、目标、可用性等等)。可用性等等)。 早期可见的进展。早期可见的进展。 早期反馈、用户参与和调整,会产生更接近涉众真实需早期反馈、用户参与和调整,会产生更接近涉众真实需求的精华系统求的精华系统 可控复杂性;团队不会被可控复杂性;团队不会被“分析瘫痪分析瘫痪”或长期且复杂的或长期且复杂的步骤所淹没。步骤所淹没。 一次迭代中的经验可以被系统地用于改进开发过程

44、本身,一次迭代中的经验可以被系统地用于改进开发过程本身,并如此反复进行下去。并如此反复进行下去。57Software School of Xiamen University迭代和进化式开发(迭代和进化式开发(4)w迭代型的开发进度计划可以分为两个层次:迭代型的开发进度计划可以分为两个层次:1. 总体的计划总体的计划总的完成日期总的完成日期每个里程碑要完成的目标或者功能项每个里程碑要完成的目标或者功能项 确定迭代周期多长,一般为确定迭代周期多长,一般为2-3周周不关注执行细节,粗略的不关注执行细节,粗略的2. 短期的详细计划短期的详细计划关注执行细节,将具体的任务落实到人,并且由于关注执行细节,

45、将具体的任务落实到人,并且由于时间跨度小相对稳定。时间跨度小相对稳定。 只需要制定当前迭代周期的计划即可只需要制定当前迭代周期的计划即可时间箱(时间箱(TimeBoxing)迭代是将迭代的结束日期)迭代是将迭代的结束日期固定下来并且不允许其改变的实践。固定下来并且不允许其改变的实践。大部分迭代方法建议迭代时间在大部分迭代方法建议迭代时间在26周之内。小步周之内。小步骤、快速反馈和调整是迭代开发的主要思想,时间骤、快速反馈和调整是迭代开发的主要思想,时间过长会增加风险。过长会增加风险。58Software School of Xiamen University迭代和进化式开发(迭代和进化式开发(

46、5)举例举例w假设将有假设将有20次迭代次迭代1. 第一次迭代前两天:第一次迭代前两天:一上午:一上午:w 高阶需求分析,例如仅仅确定用例和特性的名称,高阶需求分析,例如仅仅确定用例和特性的名称,以及关键的非功能性需求。以及关键的非功能性需求。w 从高阶需求中选择从高阶需求中选择10(具有重要的架构意义,具有重要的架构意义,具有高业务价值,具有高风险具有高业务价值,具有高风险)一天半:一天半:w 对选出的用例的功能和非功能性需求进行详细的对选出的用例的功能和非功能性需求进行详细的分析分析59Software School of Xiamen University迭代和进化式开发(迭代和进化式开

47、发(6)举例(举例(2)2.第一次迭代前,召开迭代计划会议,选择选出第一次迭代前,召开迭代计划会议,选择选出的用例中的子集,在特定时间内进行设计、构的用例中的子集,在特定时间内进行设计、构造和测试。造和测试。3.严格遵守时间,完成第严格遵守时间,完成第1次迭代。次迭代。4.在第在第1次迭代即将结束时,召开第二次需求工次迭代即将结束时,召开第二次需求工作会。选另外作会。选另外1015用例进行详细分析用例进行详细分析(一到两天)(一到两天)5.以相同步骤重复以相同步骤重复2-4,进行下一次迭代。,进行下一次迭代。6.或许经过四次迭代,可以精化或许经过四次迭代,可以精化90%的需求,而的需求,而只构

48、建了只构建了10%的软件。之后需求基本已经稳定,的软件。之后需求基本已经稳定,之后每次会议关注下一步应该完成的,最关键之后每次会议关注下一步应该完成的,最关键的技术和业务特征是什么。的技术和业务特征是什么。61Software School of Xiamen University迭代和进化式开发(迭代和进化式开发(7)w 风险驱动和客户驱动的迭代计划风险驱动和客户驱动的迭代计划在项目早期就允许在项目早期就允许客户对可运行的系统进行验证客户对可运行的系统进行验证,从而使项目的风险减到最小。从而使项目的风险减到最小。 以以架构为中心架构为中心迭代开发的实践。意味着早期迭代迭代开发的实践。意味着早

49、期迭代要致力于核心架构的构造、测试和稳定。要致力于核心架构的构造、测试和稳定。62Software School of Xiamen University2.6 敏捷方法及其观点敏捷方法及其观点w 敏捷开发(agile development)方法通常应用时间定量的迭代和进化式开发、使用自适应计划、提倡增量交付并包含其他提倡敏捷性(快速和灵活的影响变更)的价值和实践。w 简言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。63Software School of Xiamen University敏捷方法及其观点(敏捷方法及其观点(2

50、)w 敏捷宣言敏捷宣言个体和交互个体和交互 胜过胜过 工具和过程工具和过程可以运行的软件可以运行的软件胜过胜过 面面俱到的文档面面俱到的文档客户合作客户合作 胜过胜过 合同谈判合同谈判响应变化响应变化 胜过胜过 遵循计划遵循计划64Software School of Xiamen University敏捷方法及其观点(敏捷方法及其观点(3)w 敏捷原则:敏捷原则:1.优先级最高的是,通过优先级最高的是,通过早期和持续交付有价值早期和持续交付有价值的软件来满足客户。的软件来满足客户。2. 欢迎变更需求,即使在开发的后期提出。敏捷欢迎变更需求,即使在开发的后期提出。敏捷过程为客户的竞争优势而控制

51、变更。过程为客户的竞争优势而控制变更。3. 以以两周到两月两周到两月为周期,频繁地交付为周期,频繁地交付可运行的软可运行的软件件,首推较短的时间定量。,首推较短的时间定量。4.在整个项目过程中,每一天开发人员都要和业在整个项目过程中,每一天开发人员都要和业务人员务人员合作合作。5.由个体推动项目的建设,为个体提供所需的由个体推动项目的建设,为个体提供所需的环环境,支持和信任。境,支持和信任。6.在开发团队中或开发团队间传递信息的最为有在开发团队中或开发团队间传递信息的最为有效和高效的方法是效和高效的方法是面对面面对面的交谈。的交谈。65Software School of Xiamen Uni

52、versity敏捷方法及其观点(敏捷方法及其观点(4)w敏捷原则敏捷原则7. 衡量进展的重要尺度是衡量进展的重要尺度是可运行的软件可运行的软件。8. 敏捷过程提倡可持续的开发。敏捷过程提倡可持续的开发。9. 发起人,开发者和用户应该步调一致。发起人,开发者和用户应该步调一致。10.不断地关注不断地关注技术上优越的设计技术上优越的设计会提高敏捷性。会提高敏捷性。11.简洁简洁是最重要的,简洁就是尽量减少工作量的是最重要的,简洁就是尽量减少工作量的艺术。艺术。12.最佳的架构,需求和设计来自于自最佳的架构,需求和设计来自于自组织组织的团队。的团队。13.团队要定期团队要定期反省反省如何使工作更有效

53、,然后相应如何使工作更有效,然后相应地调整行为。地调整行为。66Software School of Xiamen University敏捷项目的效益敏捷项目的效益w 人们分析了一系列的敏捷项目,其结果表明,产品人们分析了一系列的敏捷项目,其结果表明,产品 上市时间平均减少了上市时间平均减少了69,成本降低了,成本降低了57。此。此 外,质量也同样令人印象深刻外,质量也同样令人印象深刻: 致命缺陷平均减少致命缺陷平均减少 了了80,普通缺陷减少了,普通缺陷减少了60。 67Software School of Xiamen University2.7 敏捷建模敏捷建模w 建模(构件建模(构件U

54、ML草图草图)的目的主要是为)的目的主要是为理解理解,而,而非文档。与这种观点一致的敏捷方法成为敏捷建模。非文档。与这种观点一致的敏捷方法成为敏捷建模。w 另外:另外: 采用敏捷开发并不意味着不用建模采用敏捷开发并不意味着不用建模 只需要对设计空间中不常见、困难和棘手的一小部只需要对设计空间中不常见、困难和棘手的一小部分问题建模和应用分问题建模和应用UML 尽可能使用简单的工具。尽可能使用简单的工具。 不要单独建模,而是结对不要单独建模,而是结对(或三个人或三个人)在在白板上建模白板上建模 并行创建模型。并行创建模型。 白板上画草图时,应使用白板上画草图时,应使用“足够好足够好”的简单表示法。

55、的简单表示法。 先前绘制的模型图都是不完整的先前绘制的模型图都是不完整的 开发者应该为开发者应该为自己自己进行进行OO设计建模设计建模68Software School of Xiamen University2.8 敏捷敏捷UPw 敏捷敏捷UP:UP采纳和应用可适应和轻量级的精神采纳和应用可适应和轻量级的精神w 示例:示例:推荐使用推荐使用UP活动和制品的简集,所有均可选。活动和制品的简集,所有均可选。实现前的需求和设计是不完整的。实现前的需求和设计是不完整的。以敏捷建模实践应用以敏捷建模实践应用UML对整个项目不应有详细的计划对整个项目不应有详细的计划69Software School o

56、f Xiamen University2.9 UP的其他关键实践的其他关键实践w 核心思想:核心思想: 短时间定量迭代、进化和可适应性开发。短时间定量迭代、进化和可适应性开发。w 其他最佳实践和关键概念:其他最佳实践和关键概念: 在在早期迭代中解决高风险和高价值的问题早期迭代中解决高风险和高价值的问题 不断地让用户参与评估、反馈和需求不断地让用户参与评估、反馈和需求 在早期迭代中建立内聚的核心架构在早期迭代中建立内聚的核心架构 不断地验证质量;提早、经常和实际地测试不断地验证质量;提早、经常和实际地测试 在适当的地方使用用例在适当的地方使用用例 进行一些进行一些可视化建模可视化建模 认真管理需

57、求认真管理需求 实行变更请求和配置管理实行变更请求和配置管理70Software School of Xiamen University2.10 什么是什么是UP的四个阶段的四个阶段w UP项目将其工作和迭代组织为四个主要阶段:项目将其工作和迭代组织为四个主要阶段: 初始(初始(Inception):): 大体上的构想、业务案例、范围和模糊评估大体上的构想、业务案例、范围和模糊评估 可行性研究可行性研究 细化(细化(Elaboration): 已精化的构想、已精化的构想、 核心架构的迭代实现、核心架构的迭代实现、 高风险的高风险的解决、解决、 确定大多数需求和范围以及进行更为实际确定大多数需求

58、和范围以及进行更为实际的评估的评估 构造构造(Construction): 对遗留下来的风险较低和比较简单的元素进行迭对遗留下来的风险较低和比较简单的元素进行迭代实现,准备部署代实现,准备部署 移交移交(Transition) 进行进行beta测试测试71Software School of Xiamen UniversityUP的四个阶段的四个阶段(2)w UP中面向进度表的术语中面向进度表的术语72Software School of Xiamen University2.11 什么是什么是 UP科目科目w 科目(科目(discipline):在一个主题域中的一组活):在一个主题域中的一组

59、活 动(及相关制品),例如需求分析中的活动。动(及相关制品),例如需求分析中的活动。w 我们所关注的三个科目的制品:我们所关注的三个科目的制品: 业务建模业务建模 领域模型制品,是应用领域中的重要概念的可领域模型制品,是应用领域中的重要概念的可视化视化需求需求 用以捕获功能需求和非功能需求的用以捕获功能需求和非功能需求的用例模型及用例模型及其补充性的规格说明制品其补充性的规格说明制品设计设计 设计模型制品,用于对软件对象进行设计设计模型制品,用于对软件对象进行设计73Software School of Xiamen UniversityUP科目(科目(2)图图 UP 科目科目timecont

60、ent74Software School of Xiamen University2.12 如何定制过程和如何定制过程和UP开发案例开发案例w 所有开发活动和制品可选:所有开发活动和制品可选:根据特定问题和需要选择制品根据特定问题和需要选择制品w 开发案例:开发案例:项目选择实践和制品可以编写为简短文档,项目选择实践和制品可以编写为简短文档,这称为开发案例。这称为开发案例。75Software School of Xiamen University定制过程和定制过程和UP开发案例(开发案例(2)s:开始开始r:精化精化DisciplinePracticeArtifactIncep. Elab.

温馨提示

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

评论

0/150

提交评论