UML软件工程组织

RUP定制原理
作者:温昱
感谢:《软件工程——技术、方法与环境》一书的作者王立福等,《统一软件开发过程》一书的作者Ivar Jacobson等和译者周伯生等,《面向对象系统分析与设计》一书的作者Ronald J.Norman和译者周之英等,《面向对象分析和设计》一书的作者宛延闿等,《可视化面向对象建模技术》一书的作者刘超等(本文中指明引用书目时依次简记作《北》《RUP》《Norman》《清》《可》)

-----------------------------------前言---------------------------

1. 本文以“层次思维”方法论为工具,思考RUP定制实质,分析RUP定制原理。

2. 记得有“RUP也支持非OO开发方法”的说法,但本文将RUP看作一种纯粹的OO开发方法。

-----------------------------------层次思维方法论---------------------------

今天这篇笔记是铆足了劲儿解决问题的,但也要照顾一下严谨,说几句原理。

1. 树是层次结构的同义词,树枝其实有3种:派生、组合、绑定。





2. 层次思维方法论意义重大(本文就是想让该原理再做一把贡献帮我搞清RUP定制),我感觉到的有以下几点:

2.1. “触类旁通”的猫腻在“共性”二字。认识了“猫”后,你抽象出“动物”的一些特征,再见到“狗”,你知道喂喂它是个好注意。

2.2. “原理”往往以“抽象”为代名词。抽象的父节点往往是原理性的东西,人必死,伯拉图是人所以伯拉图会死。

2.3. “原理节点”可以“化零散为结构”。一大堆叶子节点,不经过思考抽象出父节点把它们连起来,还乱。有了“结构”,有了“体系”,就清楚了。

2.4. “探究实质”就是“定性”,就是“找到父节点”。



-----------------------------------老祖宗节点---------------------------

1. 名叫“软件工程”的老祖宗节点是个什么样? 《北》p2



2. 老祖宗节点经过<<bind>>的子节点什么样?



-----------------------------------过程开发理论---------------------------

1. 按照Osterweil的观点:软件过程也是软件,软件过程与软件产品具有广泛的类同性,对软件过程的描述也是一种程序设计的形式。 《北》p169

2. Processes are Software, they have reqts., architecture, design, encoding, evaluations, etc

3. 过程开发的结果是过程产品,过程产品有4要素:功能要素(即活动),行为要素(即活动间通过依赖等关联构成活动模型,其实4大经典开发模型的图级别都是活动模型),组织要素(即人和活动间的关联),信息要素(即产品)。 《北》p170





-----------------------------------RUP实质:过程产品---------------------------

1. RUP是一个“过程产品”,该过程产品是可以在线查找的知识库,总共大约××××页的资料。《RUP》p324

2. RUP将活动称为工作流(其实RUP将活动分为activity和workflow,后者是前者的网状结构,本质上是活动和子活动的概念,这样做是为了更好地支持并发:9大workflow间可并发,小activity也可并发)。

3. RUP的活动模型是喷泉模型。喷泉模型体现了软件开发所固有的迭代和无间隙的特征。从“活动”角度,各活动多次重复(RUP称之为迭代);从“产品”角度,各产品不断“演进/进化”(RUP称之为增量),原来的劳动成果并未浪费(比如需求捕获:在初始阶段,只捕获了典型的usecase,到细化阶段,捕获其余usecase)。 《北》p8





4. RUP将人称为角色(当然,实际是增加了一层抽象,目的是灵活:不同的人担任相同或不同的角色,恐怕也有IT人士老跳槽的缘故,呵呵)。

5. RUP将产品称为工件(更内体现有些是半成品,和喷泉模型的迭代开发向匹配)。

-----------------------------------RUP vs SA&D---------------------------

仅对比一个子集:分析模型。

1. 二者分析模型的不同点:

1.1. 结构化分析(SA)的模型:主模型为数据流图,数据描述用数据字典,处理描述用小说明。 《北》p15

1.2. 面向对象分析(OOA)的模型:对象模型充当主模型、数据描述、处理描述。

2. 以上不同点之中,蕴含着共同点:分析模型都包含主模型、数据描述、处理描述。 《Norman》p38



-----------------------------------RUP定制实质:reengineering---------------------------

温昱注:本来叫“RUP剪裁”,但除了“剪”掉还是“裁”掉,就不能“增加”吗?于是我叫“RUP定制”,强调可增,毕竟吗,对RUP进行reengineering肯定有减有增有改。

1. reengineering的定义:再工程(reengineering)是重新开发现有软件系统的过程。分3步:逆向工程、新需求的考虑、正向工程。 《清》p402

2. RUP定制的实质是“对过程产品的再工程”。从reengineering的定义可以“派生”出RUP定制的定义:RUP定制是重新开发现有的RUP这个过程产品的过程。

3. RUP定制的必要性:为了更有效地实施软件过程,应该针对特定的领域,甚至特定的一个项目,对选定的过程模型和标准进行剪裁。 《北》p166

4. RUP定制的步骤: 《北》p166

4.1. 指明工程环境。软件类型、软件规模、软件重要程度、vision、scope、SRS、开发人员素质、合作开发单位的素质。

4.2. 收集信息。向所以人收集信息:用户、开发人员、合同确定者、投标者。

4.3. 定制。选取过程、活动、任务。当然也可添加。

4.4. 文档化。如CMM所说,软件过程要“文档化”、“制度化”。



------------------------------------RUP退化定制3例--------------------------

1. 彻底退化,成为一个线性瀑布模型

2. 比较退化,成为4阶段瀑布模型,每阶段内部还是迭代模型 《可》p30

3. 轻微退化,成为经典螺旋模型 《北》p8





------------------------------------RUP非退化定制2例--------------------------

上面的3例都是“退化定制”,它们都有或多或少的“多个活动要串行化”,即

2. 比较退化,成为4阶段瀑布模型,每阶段内部还是迭代模型 《可》p30
 

版权所有:UML软件工程组织