感谢:《软件工程——技术、方法与环境》一书的作者王立福等,《统一软件开发过程》一书的作者Ivar
Jacobson等和译者周伯生等,《面向对象系统分析与设计》一书的作者Ronald
J.Norman和译者周之英等,《面向对象分析和设计》一书的作者宛延闿等,《可视化面向对象建模技术》一书的作者刘超等(本文中指明引用书目时依次简记作《北》《RUP》《Norman》《清》《可》)
-----------------------------------前言---------------------------
1. 本文以“层次思维”方法论为工具,思考RUP定制实质,分析RUP定制原理。
2. 记得有“RUP也支持非OO开发方法”的说法,但本文将RUP看作一种纯粹的OO开发方法。
-----------------------------------层次思维方法论---------------------------
今天这篇笔记是铆足了劲儿解决问题的,但也要照顾一下严谨,说几句原理。
1. 树是层次结构的同义词,树枝其实有3种:派生、组合、绑定。
![](images/2006511111641789.gif)
![](images/200651111173230.gif)
2.
层次思维方法论意义重大(本文就是想让该原理再做一把贡献帮我搞清RUP定制),我感觉到的有以下几点:
2.1. “触类旁通”的猫腻在“共性”二字。认识了“猫”后,你抽象出“动物”的一些特征,再见到“狗”,你知道喂喂它是个好注意。
2.2. “原理”往往以“抽象”为代名词。抽象的父节点往往是原理性的东西,人必死,伯拉图是人所以伯拉图会死。
2.3. “原理节点”可以“化零散为结构”。一大堆叶子节点,不经过思考抽象出父节点把它们连起来,还乱。有了“结构”,有了“体系”,就清楚了。
2.4. “探究实质”就是“定性”,就是“找到父节点”。
![](images/2006511111748882.gif)
-----------------------------------老祖宗节点---------------------------
1. 名叫“软件工程”的老祖宗节点是个什么样?
《北》p2
![](images/2006511111823464.gif)
2. 老祖宗节点经过<<bind>>的子节点什么样?
![](images/2006511111833659.gif)
-----------------------------------过程开发理论---------------------------
1. 按照Osterweil的观点:软件过程也是软件,软件过程与软件产品具有广泛的类同性,对软件过程的描述也是一种程序设计的形式。
《北》p169
2. Processes are Software, they have reqts., architecture, design,
encoding, evaluations, etc
3. 过程开发的结果是过程产品,过程产品有4要素:功能要素(即活动),行为要素(即活动间通过依赖等关联构成活动模型,其实4大经典开发模型的图级别都是活动模型),组织要素(即人和活动间的关联),信息要素(即产品)。
《北》p170
![](images/2006511111857240.gif)
-----------------------------------RUP实质:过程产品---------------------------
1. RUP是一个“过程产品”,该过程产品是可以在线查找的知识库,总共大约××××页的资料。《RUP》p324
2. RUP将活动称为工作流(其实RUP将活动分为activity和workflow,后者是前者的网状结构,本质上是活动和子活动的概念,这样做是为了更好地支持并发:9大workflow间可并发,小activity也可并发)。
3. RUP的活动模型是喷泉模型。喷泉模型体现了软件开发所固有的迭代和无间隙的特征。从“活动”角度,各活动多次重复(RUP称之为迭代);从“产品”角度,各产品不断“演进/进化”(RUP称之为增量),原来的劳动成果并未浪费(比如需求捕获:在初始阶段,只捕获了典型的usecase,到细化阶段,捕获其余usecase)。
《北》p8
![](images/2006511111935477.gif)
![](images/2006511111946360.gif)
4. RUP将人称为角色(当然,实际是增加了一层抽象,目的是灵活:不同的人担任相同或不同的角色,恐怕也有IT人士老跳槽的缘故,呵呵)。
5. RUP将产品称为工件(更内体现有些是半成品,和喷泉模型的迭代开发向匹配)。
-----------------------------------RUP vs
SA&D---------------------------
仅对比一个子集:分析模型。
1. 二者分析模型的不同点:
1.1. 结构化分析(SA)的模型:主模型为数据流图,数据描述用数据字典,处理描述用小说明。
《北》p15
1.2. 面向对象分析(OOA)的模型:对象模型充当主模型、数据描述、处理描述。
2.
以上不同点之中,蕴含着共同点:分析模型都包含主模型、数据描述、处理描述。
《Norman》p38
![](images/2006511112019989.gif)
-----------------------------------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所说,软件过程要“文档化”、“制度化”。
![](images/2006511112046881.gif)
------------------------------------RUP退化定制3例--------------------------
1. 彻底退化,成为一个线性瀑布模型
2. 比较退化,成为4阶段瀑布模型,每阶段内部还是迭代模型
《可》p30
3. 轻微退化,成为经典螺旋模型 《北》p8
![](images/2006511112123206.gif)
![](images/2006511112129549.gif)
------------------------------------RUP非退化定制2例--------------------------
上面的3例都是“退化定制”,它们都有或多或少的“多个活动要串行化”,即
2. 比较退化,成为4阶段瀑布模型,每阶段内部还是迭代模型
《可》p30
|
|