uml精粹——1.介绍 & 2.开发过程

1.介绍

【使用uml的方式】

把uml当做草图sketch。顺向工程forward engineering在写代码前会绘制uml。而逆向工程reverse engineering根据已有的代码绘制uml来帮助理解。

把uml当做设计图blueprint是为了完整性completeness。在顺向工程中工作是构建详细设计的设计师会绘制设计图来让程序员更好的写代码实现。这个设计需要足够完整,里面所有的设计决策design decisions都被列出laid out,让程序员能够轻松的照着做而只需要一点点思考(the programmer should be able to follow it as a pretty straightforward activity that requires little thought)。

【标记和元模型notation and meta-model】

记号notation就是在模型中的图形材料graphic stuff,比如类图中的class、association、multiplicity。

方法论者寻找方式来提供方法的严谨性而不想牺牲其用处,一种方式就是定义一个元模型meta-model:经常是一个类图,定义该语言的观念。

【uml图】

activity procedural and parallel behavior

class class, features, and relationships

communication interaction between objects; emphasis on links

component structure and connections of components

composite structure runtime decomposition of a class

deployment deployment of artifacts to nodes

interaction mix of sequence and activity diagram

object example configuration of instances

package compile-time hierachic structure

sequence interaction between objects; emphasis on sequence

state machine how events change an object over its life

timing interaction between objects; emphasis on timing

use case how users interact with a system

2.开发过程

当你听到人们讨论uml,你经常听他们讨论统一软件开发过程(RUP = rational unified process)。

【迭代iterative和瀑布模式watarfall process】

两者必要的区别是你怎样将一个项目分解成小块(small chunk)。

瀑布模式分解项目基于活动activity。开发软件,需要进行某些活动:需求分析、设计、写代码、测试。我们1年的项目可能有2月的分析阶段、4月的设计阶段、3月的编写代码、3月的测试阶段。

迭代模式通过功能子集subsets of functionality来分解项目。你可将一年分层多个3月迭代。第一个迭代中,你完成需求的1/4,并进行1/4的完整的软件周期循环:分析、设计、代码、测试。第一个迭代完成的时候,你有一个完成了1/4功能需求的系统。

你也可以混合模式,阶段交付staged delivery:分析和高级设计先以瀑布模式完成,然后代码和测试分成迭代完成。

一个跌代的普遍技术是使用时间限制time boxing,这强制一个迭代在一个固定时间长度完成。

·自动化回归测试automated regression tests:允许你很快检测出在你做改动时引起的问题。一个好的规则是单元测试的代码和产品代码差不多大。

·重构refactor

·持续集成continuous integration:保持一个团队同步team in sync,避免惨痛的集成循环painful integration cycle。

【预测和适应计划predictive and adaptive planning】

使用预测计划,一个项目有两个阶段:第一个阶段完成计划而且很难预估,但第二个阶段更好预估因为计划已经完成。

使用适应性计划,预测被视为错误的。我们需要面对现实,在一个软件项目中会有持续的改动。改动是被项目的交付者deliver控制的,但尽管项目可控,但不可预测。

但适应性计划也进行计划,但这些计划被当做一个基线baseline来评估assess改变带来的结果 而不是对未来的预测。适应性计划过程可以固定fix价格。

两条建议:

·不要做预测性计划,除非你有精确的需求而且你有自信他们不会严重的改变。

·如果你得不到精确、稳定的需求,使用一个适应性计划方式。

一个适应性计划当然需要一个迭代过程。

【敏捷开发agile process】

敏捷是一个涵盖性术语,包括共享同一个公用的值value和准则principle的集合 的许多过程。这些过程的例子有:极限编程extreme programming(XP),scrum,功能驱动开发feature driven development(FDD),crystal,DSDM(dynamic systems development method)。

敏捷过程很好的适应他们的本质nature,也是非常以人为中心。他假设一个项目的成功的关键因素是项目中人们的质量和他们怎样更好的以人类的方式工作在一起。

敏捷开发倾向于使用短的、时间限制的迭代,经常1个月或更少。因为他们不附加太多重心到文档上,他们不把uml绘制蓝图blueprint mode。他们大多把uml用作草图sketch mode。

敏捷开发少于形式,认为形式ceremony让改变变得困难,并违背有天赋的人的成果works against the grain of talented people。

【统一软件开发过程rational unified process】

尽管rup叫过程,但实际上是一个过程框架,提供一个词汇和宽松的结构来谈论过程。用rup第一件事是选择一个开发案例development case:你将在项目中使用的过程。

所有RUP项目应该有下面4个阶段:

·inception开端 给一个项目一个初始的评估evaluation。这里你决定是否提交足够的钱去做一个详细制作elaboration phase

·elaboration 指出项目的主要用例,并迭代开发软件。at the end of elaboration, you should have a good sense of the requirements and a skeletal working system that acts as the seed of development.In particular, you should have found and resolved the major risks  to the project

·construction 继续构建过程,开发足够的功能以发布

·transition 包括不同的不需要迭代的后期活动,包括部署到数据中  心、用户培训等。

【找到项目合适的过程fitting a process to a project】

模式:describe common ways of doing things and are collected by people who spot repeating themes in designs.模式是一些设计的例子。

在每个迭代的最后,进行一次迭代回顾iteration retrospective。团队集合一起考虑事情进展怎样、能够怎样改善。列出下面3类:

·keep保持:进行得好的事情,确保继续

·problem问题:工作不好的方面

·try尝试:进程中用于改善的改变changes to your process to improve it

【在过程中找到合适的uml】

【需求分析】

指出软件的用户和消费者想要系统做的,可能需要的uml技术:

·用例:描述用户和系统怎样交互

·例图:从概念角度,是构建一个领域严格词汇的好方式

·活动图:展示组织的工作流,显示软件和人类活动的交互,显示用例的内容

·状态图:如果一个概念有一个有趣的生命周期,且不同的状态和事件会改变状态

需求分析最重要的是合用户和消费者交流。记住重要的是用最少的标记来绘制uml。

【设计】

有用的技术:

·类图:从软件角度,显示类和相互联系

·时序图:为普遍场景scenario。从用例中找出最重要和有趣的场景,来指出在软件中发生了什么

·包图:显示软件的大规模组织

·状态图:类的复杂生命历史

·部署图:软件的物理布局

【文档】

package diagram makes a good logical road map of the system.帮助我理解系统的逻辑片、看到其中的依赖关系、更好的控制他们。 部署图显示高级的物理图。

如果一个类有复杂的生命周期行为,绘制一个状态机来描述。

如果引入一个特别复杂的算法,我考虑使用一个活动图,只要他能让我更好的理解这块代码。

如果发现概念来了很多次,我使用模式pattern来抓取其基本思想。

写文档的一个重要事情是你没有采用的设计选项和你没有选择的原因。

时间: 2024-10-09 20:00:54

uml精粹——1.介绍 & 2.开发过程的相关文章

Eclipse UML 工具 ObjectAid 介绍

概述 本文介绍如何使用 ObjectAid(http://www.objectaid.com/) UML Explorer 创建 UML 图,快速阅读代码. 安装 ObjectAid ObjectAid 是 Eclipse 插件,首先需要安装 Eclipse, 然后根据 http://www.objectaid.com/installation 安装插件. 使用 ObjectAid 基于某一 Project,选择 New -> Other -> ObjectAid UML Diagram -&

uml精粹——11.活动图(及整个读书笔记分享)

11.活动图activity diagram 活动图是描述过程化逻辑procedural logic.业务过程business process和工作流work flow的技术.他和流程图flowchart类似,但不同是他们支持并行行为parallel bahavior. 见图11.1 我们从初始节点initial node动作开始,然后做Receive Order的动作.完成后遇到一个fork分叉.一个分叉fork有一个收入流incoming flow和一些外出的并行流outgoing conc

UML精粹读书笔记(1)

我决定每次读一下书,还是来说说一些想法的好.漫画就先算了吧,等我把火影补完再说吧. 如果什么时候我的主站建好了的话,我会在我自己的主站上去更新. 今天终于把这本书的简体中文版搞到手了,有几个小插曲: 1.这本书是盗版的,从淘宝买的.就是那种图书馆复印出来的书,我发现一个有意思的点是,复印的书都会把封皮做一个特别的处理,我一直不知道这样做的用意.另外,这不是我第一次在淘宝上买这样的盗版书了,和工作相关的一些经典的书,很多都绝版了,我也搞不清为什么.明明还是有很多需求的啊,可能我这个结论是从自己的窄

UML精粹2 - 开发过程

迭代和瀑布过程 两者的本质区别是,你如何将一个项目分解为更小块. 瀑布风格基于活动来分解项目.为了构建软件,你不得不做某些活动:需求分析.设计.编码和测试.为期一年的项目可能有2个月的分析阶段,然后是4个月的设计阶段,接着是3个月的编码阶段,再接着是3个月的测试阶段. 迭代风格根据功能子集来分解项目.你可能会把一年分解为3个月的迭代.第一个迭代,处理1/4的需求,并对这1/4做完整的软件生命周期:分析.设计.编码和测试.在第一个迭代结束时,你拥有了一个做1/4所需功能的系统.然后,你再做第二个迭

UML类图介绍以及PlantUML使用方法

类的UML表示方法 UML介绍 类图,是UML(统一建模语言)中用于描述"类"以及"类与类"之间的示意图.它形象的描述出了系统的结构,帮助人们理解系统. 类图是在"所有的UML图"中,实用频率非常之高:掌握它对于我们软件设计,以及交流都很有帮助. 对于类图而言,它的基本单位是类.类主要由三部分组成:类名.属性.操作(函数).UML类的表示大致如下: 类名 类的名称 属性 UML类图中,属性的基本格式: 可见性 名称: 类型 [=缺省值] 可见性

UML常用图例介绍

UML中有正式图:13种,但是常用的并不多,软件开发在用UML设计时,注重的是软件设计,而不是注重UML,因此一个软件的设计不需要将UML中所有图都用到,UML只是一种工具,辅助我们进行软件设计的工具. 每个人都不一样,我常用的有六种图,但是最常用的只有三种. 看这篇博文的朋友,应该对面向对象都有一定的了解,那么我们应该知道下面这个等式: 类=属性(成员变量)+行为(成员方法) 例如:人类,有属性:姓名,性别,年龄等:有行为:吃,喝,拉,撒,睡等. 其实常用的就三种:用例图,类图,顺序图,活动图

uml精粹——5.类图(高级概念)

[关键字keyword] uml接口interface是一个只有公共操作public operations没有方法体method body的类.他用类图标class icon和关键字<<interface>>表示. <<interface>>简写为<<I>>,{abstract}简写为{A}. uml1中引号guillemets主要用于原型stereotype. 原型被用作概况profile的一部分. [分类和一般化classific

uml精粹——3.类图(必需)

3.类图class diagram(必需) 一个类图描述了系统中对象的类型及他们间存在的各种静态关系static relationship.类图也展示了一个类的属性和操作properties and operations以及对象相互连接的限制.uml使用属于feature特性来表示一个类的属性和操作. 类图中的盒子box表示类,它分成3部分:类名(粗体),属性attribute,操作operation. [属性property] property属性代表一个类的结构形态,但它以两种不同的标记出现

《UML精粹》笔记-第一章

第一章 UML简介 1.定义 统一模型语言(Unified Modeing Language,UML)代表同一家族的图形表示法,在这些表示法背后有一个共通的超模型(meta model)存在.它们可以帮助我们描述与设计软件系统,特别是那些用面向对象风格设计的软件系统. 模型背后的基本原因:编程语言无法以够高的抽象度,方便我们讨论设计的相关议题. UML是相当开放的一种标准,有对象管理协会负责管理它,此协会是一个有多家公司所组成的开放性联合组织.成立的宗旨是为了简历支援互通性的相关标准,特别是对象