UML - 1 用于敏捷开发的总结

UML的使用方式 
草稿 
蓝本 
开发语言

在敏捷开发中我们常以草稿的方式来使用UML。 
 
敏捷开发中我们常用到的图是类图跟序列图。我们用这两种图来分析识别领域模型。这些图形识别出来的概念将形成我们对相关领域描述的一套语言。

1.类图(Class Diagram)

用来描述对象的类型,是对静态信息的描述。这些静态的信息包括类的特性(Features)跟类之间的关系及限制。

- 相关概念

类的特性包括性质(Property)跟操作(Operation)。

 Property包括类的属性(Attribute)跟关联(Association)。

 注意操作(Operation)跟方法(Method)的区别。

Operation是过程的声明。Method是过程的具体实现。这个区别在存在多态的时候比较容易解释。比如,我们父类里有doAction(),在不同的子类中有不同的实现。在这种情况下,我们可以说我们有一个operation,并有多个Method的实现。

Generalization, 从软件开发的角度来看,用继承(inheritance)可以很好地阐述这个问题。判断继承的一个重要原则是李氏替换原则(Liskov Substitution Principle - LSP)。

依赖(Dependency),如果一个单元的相关定义的变换会引起其他单元的变化,我们就可认定着两者间存在依赖。在软件设计时。
通过辨识依赖我们可以分析设计在依赖方面的问题。通常我们要做到单向的依赖,环状依赖的形成是需要我们特别注意避免的。另外,我们尽量要依赖于稳定的单元。接口相对于具体实现要稳定。
根据依赖的定义,其实association,generalization都确立了类之间的依赖关系。但在图形表达时我们要根据想要表达的核心意图来选择是用依赖来表示还是association或generalization。
依赖的传递性上是根据具体依赖的种类不同决定的。一般的依赖不具传递性。有的也有传递性,比如继承。

-注意点 
在我们识别generalization关系时,注意区分分类(classification)这个概念。原因是generalization是可传递的,classification是不传递的,它是描述对象跟类型之间的关系。比如,猴子是灵长目,灵长目是动物。灵长目是动物按目的一种分类。我们尝试应用传递关系来组织一下。我们可以说猴子是动物,但我们不能说猴子是动物按目的一种分类。注意这里“灵长目是动物按目的一种分类”是classification。所以注意这里“是”的关系不都是generalization。

2.序列图(Sequence Diagram) 
序列图是交互图(Interaction Diagram)的一种。交互图描述某些行为上对象之间(注意是对象之间,不是类。另外有可能不仅仅是类的对象之间,可能还有其他参与者)的相互协作的关系。序列图用来帮助我们捕获一个场景下的行为。画序列图时,我们常针对一个use case进行,找出实例对象以及他们之间交互的信息来进行图示。

-作用 
此图不能清楚地描述算法,但它能清楚地描述出调用关系。这很符合我们敏捷开发的需求。作为草图我们无需关注太多算法细节。 
此图能清楚地辨析出各个对象的职责。作为OO开发的入门或初级用户,往往容易写出集中控制(centralized control)的代码,因为这样更加贴合过程式的思维习惯。而我们提倡分布的逻辑控制(distributed control),就是把数据跟行为紧密结合到单一职责的对象上。

时间: 2024-10-13 23:17:50

UML - 1 用于敏捷开发的总结的相关文章

敏捷开发之燃尽图

燃尽图是在项目完成之前,对需要完成的工作的一种可视化表示.燃尽图有一个Y轴(工作)和X轴(时间).理想情况下,该图表是一个向下的曲线,随着剩余工作的完成,“烧尽”至零.燃尽图向项目组成员和企业主提供工作进展的一个公共视图.这个词常常用于敏捷开发(敏捷开发是指以用户的需求进化为核心,采用迭代.循序渐进的方法进行软件开发.在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视.可集成和可运行使用的特征). 功能:描述随着时间的推移而剩余的工作数量,可用于表示开发速度

腾讯敏捷开发及快速迭代

腾讯敏捷开发及快速迭代 http://www.edu-hb.com     2013-6-4 15:23:50     来源: itwriter      从 2006 年开始,腾讯的研发规模开始膨胀,开发模式急需规范和标准化,到底走 IPD(集成产品开发)还是 Agile(敏捷)的开发路线,公司管理层也在为拿不定主意而犯愁,之后研发管理部开始与 ThoughtWorks 公司接触,逐渐将敏捷产品开发引入进来,并正式命名为 TAPD(Tencent Agile Product Developme

敏捷开发全程实战(广州站 2014-7-19)

1.课程概述 ?敏捷过于理想,无法实施??项目团队没有凝聚力,除了项目经理其他成员似乎不太关注项目成败:?项目需求变来变去,客户喜欢你先做出来看看,一直无法形成书面的需求文档:?项目计划要么成为摆设,要么没有计划:?……本课程将会针对上述问题,为你分享各种最佳实践!项目管理中存在各式各样的问题,项目管理的大道理几乎人人都懂,但知易行难,我们往往陷入“问题多,想改进,但迫于进度压力,只能暂缓改进,而问题继续滚雪球”的死循环.如何才能打破这个恶性循环呢?我们需要立竿见影的最佳实践! 2.时间.地点

瀑布式开发、迭代开发、敏捷开发、XP与SCRUM的区别

瀑布式开发.迭代开发,区别[都属于,生命周期模型]         两者都是一种开发模式,就像设计模式一样,考虑的角度不一样,个人感觉谈不到取代一说. 传统的瀑布式开发,也就是从需求到设计,从设计到编码,从编码到测试,从测试到提交大概这样的流程,要求每一个开发阶段都要做到最好.特别是前期阶段,设计的越完美,提交后的成本损失就越少.我现在从事的外包项目就是这样的流程. 迭代式开发,不要求每一个阶段的任务做的都是最完美的,而是明明知道还有很多不足的地方,却偏偏不去完善它,而是把主要功能先搭建起来为目

实验三 敏捷开发与XP实践(改)

---恢复内容开始--- 一.敏捷开发与XP 二.编码标准 1.编码标准中的版式就是一个很好的例子,版式虽然不会影响程序的功能,但会影响可读性.程序的版式追求清晰.美观,是程序风格的重要因素.单击Eclipse菜单中的source->Format 或用快捷键Ctrl+Shift+F就可以按Eclipse规定的规范缩进. 2. 代码标准中很重要的一项是如何给包.类.变量.方法等标识符命名,能很好的命名可以让自己的代码立马上升一个档次.Java中的一般的命名规则有: 要体现各自的含义 包.类.变量用

谈谈敏捷开发

我对敏捷开发是源于10多年前看了一本关于迭代开发的书,从而对迭代开发有了一些兴趣.从那时开始有了迭代开发的概念.随着项目经验的增加迭代的重要性也越发觉得明显.随后进入了提倡敏捷开发的公司,被迫式的接触了许多"敏捷开发",随着项目经历越来越多,慢慢的就开始有了更新的认识和想法. 但是在接触敏捷开发这个体系之前,自己有机会做一个项目,那个时候我开始将自己认为更有利于项目的管理工作做了一些应用,那个阶段我的主要做法是: 1.项目中开始划分更短的制品交互周期,而不是以前那样等待产品开发完毕后发

浅谈敏捷软件开发与传统软件工程的对比与敏捷开发产生的原因

引言 在"计算机程序的蛮荒时代",人们对于程序的设计.编写是随想随写.灵活变化的.正如我们初学各种编程语言时那样,似乎把程序写对也不是什么很难的事情.然而,这种程序设计模式或许适用于几百行至几千行的小程序,而当我们面对更大的软件规模.更多的代码行数以及更复杂的人员架构时,这种随想随写的程序开发模式似乎不再适用,于是使人们遇到了「软件危机」,进而促使了软件工程这样一门学科的产生. 在我上一门程序设计的课程的时候,老师讲过,当我们学习各种语言.算法和数据结构时,我们学习的是怎样进行&quo

软件工程到敏捷开发的一点小感想

通过查阅资料和在暑期实习的经历,我了解到敏捷开发中有些实践方式是很好的,值得吸收.例如在敏捷开发的圣经"敏捷软件开发-原则.模式于实现"一书中,很多设计原则,如"单一职责"."开放封闭"."依赖到转"等,它们只是一般.通用的设计原则,应该应用在任何的开发方法中,这些原则并也不是只有敏捷开发方法才能用,在任何的开发方法中都可以.应该使用. 简单介绍一下:敏捷软件开发又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型

敏捷开发方法论述

首先,是敏捷开发的定义:“敏捷开发以用户的需求进化为核心,采用迭代.循序渐进的方法进行软件开发.在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视.可集成和可运行使用的特征.换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态.” 这在我们目前生活中最多看到的就是手机软件每过一小段时间就会提示更新,开发人员并不是开发完就不管了,而是通过对用户的反馈结果以及实际运行中出现的错误,不断修改,推出更新包,这