﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-&lt;font color="red"&gt;中國男人&lt;/font&gt;&lt;font color="lightgreen"&gt;大鹏一曰同风起，扶摇直上九万里&lt;/font&gt;-随笔分类-UML</title><link>http://www.blogjava.net/liaojiyong/category/11499.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 16:56:57 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 16:56:57 GMT</pubDate><ttl>60</ttl><item><title>Use Case 中 include 与 extend 的区别 </title><link>http://www.blogjava.net/liaojiyong/archive/2007/01/18/94662.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Thu, 18 Jan 2007 07:21:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/01/18/94662.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/94662.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/01/18/94662.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/94662.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/94662.html</trackback:ping><description><![CDATA[
		<div>
				<span class="content">最近上论坛，看到在争论 Use Case 中 <b><font color="red">include</font></b> 与 <font color="red"><b>extend</b></font> 的区别。其实这两者是很容易区分的。<br /><br /><font color="red"><b>include</b></font> 是指用例中的包含关系，通常发生在多个用例中，有可以提取出来的公共部分（就象提取公因式一样），例如 UseCaseA 中包括了 a 和 b 两个流程，而 UseCaseC 中包含了 c 和 b 两个流程。为了提高复用性，可以把 b 提取出来，形成另一个用例 UseCaseB，此时，UseCaseA include UseCaseB（表现为一条指向 UseCaseB 的虚线，箭头在 UseCaseB 侧），UseCaseC 也 include UseCaseB。因而，当有 include 关系时，被 include 的用例通常会被两个以上的其他用例 include（否则就不需要重用，也就不需要提取出来了），用例图如下：<br /><div align="center"><b></b><br /><img height="200" src="http://blog.ccidnet.com/attachment/Mon_0604/10_6504_7c1175b06b5382c.jpg" width="367" border="0" /><br /></div><br />在 include 关系中，“UseCaseA 和 UseCaseC 知道 UseCaseB 的存在，而 UseCaseB 根本不知道有 UseCaseA 和 UseCaseC）；<br /><br /><font color="red"><b>extend</b></font> 则恰好相反。假设 UseCaseA 的功能描述为“发送一条通知”，可是，发送通知的方式可能有许多种，例如通过邮件发送、通过短信发送等。在需求分析阶段，可能无法明确到底有多少种方式，在用例分析阶段，UseCaseA 需要留出扩展接口，然后把已知的发送方式作为扩展用例给出，例如 UseCaseB 是“通过短信发送”，而 UseCaseC 是“通过邮件发送”，此时，UseCaseB 和 UseCaseC extend 了 UseCaseA，表现为两根虚线，箭头指向 UseCaseA，用例图如下：<br /><div align="center"><b></b><br /><img height="180" src="http://blog.ccidnet.com/attachment/Mon_0604/10_6504_57e2551f690bf77.jpg" width="373" border="0" /><br /></div><br />在 extend 关系中，UseCaseA 不知道 UseCaseB 和 UseCaseC 的存在，但 UseCaseB 和 UseCaseC 却是知道 UseCaseA 并且知道如何在 UseCaseA 中作扩展的。<br /><br />另：在用例图中，有时会看到两个用例之间有依赖关系（表现为一条单向或双向的实线），这是错误的，说明用例没有提纯。<br /><div align="center"><b></b><br /><img height="85" src="http://blog.ccidnet.com/attachment/Mon_0604/10_6504_936465ca263e4f3.jpg" width="297" border="0" /><br /></div><br />也许有人会问“如果两个用例之间，一个要调用另一个时，怎么办？”（有可能是混淆了用例和模块的关系），那么，首先要区分概念，用例就是用例，用例不是模块，也不是组件（虽然一个用例能发展成为“一个或多个”模块或组件）；其次，从用例分析的角度来看，如果用例 A 确实要调用到用例 B，那么，可以进一步分析：A 是调用了 B 的所有流程呢，还是其中一部分流程？<br />（1）如果是调用了一部分，此时可以把 B 中的那部分流程提取出来，形成用例 C，然后 A 和 B 都 include C；<br />（2）如果是调用了所有流程，那么，A 直接 include B 即可；<br />（3）如果 A 没有调用 B 中的任何流程……faint，那还画那条代表依赖的实线干嘛？<br /></span>
		</div>
<img src ="http://www.blogjava.net/liaojiyong/aggbug/94662.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-01-18 15:21 <a href="http://www.blogjava.net/liaojiyong/archive/2007/01/18/94662.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UML程序列表 </title><link>http://www.blogjava.net/liaojiyong/archive/2007/01/18/94649.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Thu, 18 Jan 2007 07:06:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/01/18/94649.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/94649.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/01/18/94649.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/94649.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/94649.html</trackback:ping><description><![CDATA[
		<p>免费/开源程序</p>
		<ul>
				<li>
						<font color="#ff0000">ArgoUML</font> - 一个功能非常完整的基于Java的UML开发工具。 
</li>
				<li>Dia - 一个基于GTK/GNOME的图形绘制工具，同时支持UML。  
</li>
				<li>Eclipse建模框架 (Eclipse Modeling Framework)   
</li>
				<li>
						<font color="#ff0000">FUJABA</font> - UML和Java开发平台；同时提供Eclipse插件。（逆向工程做得不错）  
</li>
				<li>
						<font color="#000000">Gaphor</font> - C/GTK/GNOME UML编辑工具。支持导出到SVG  
</li>
				<li>MonoUML - 一个前沿的非常活跃基于最新的Mono的工程，Gtk#和ExpertCoder  
</li>
				<li>Umbrello - UML Modeller KDE的一部分  
</li>
				<li>UMlet - 使用Java  
</li>
				<li>UMLpad  
</li>
				<li>UniMod - 可执行的UML对于Eclipse  
</li>
				<li>Violet </li>
		</ul>
		<p>商业程序</p>
		<ul>
				<li>Altova UModel 2005 - 一个简单，cost effective way to draw on UML 
</li>
				<li>
						<font color="#ff0000">Borland Together</font>
				</li>
				<li>Cadifra UML Editor - 一个轻量级的UML图形工具，用在Windows系统上 
</li>
				<li>DotNet2UML 
</li>
				<li>Enterprise Architect 
</li>
				<li>Jude 
</li>
				<li>Jumli - 使用Java编写 
</li>
				<li>MagicDraw UML - 一个可视化的UML建模和CASE工具。 
</li>
				<li>Microsoft Visio - 一个图形绘制工具，同时支持UML 
</li>
				<li>Objecteering/UML 
</li>
				<li>OmniGraffle - 使用在Mac OS X系统上 
</li>
				<li>
						<font color="#ff0000">Omondo</font> UML - 作为Eclipse的一个插件 
</li>
				<li>Poseidon for UML - ArgoUML的商业化版本。 
</li>
				<li>Rhapsody - 针对实时的，嵌入式应用。 
</li>
				<li>Rational Rose 
</li>
				<li>System Architect 
</li>
				<li>Unimodeler 
</li>
				<li>Visual Paradigm </li>
		</ul>
<img src ="http://www.blogjava.net/liaojiyong/aggbug/94649.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-01-18 15:06 <a href="http://www.blogjava.net/liaojiyong/archive/2007/01/18/94649.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UML 类图介绍(转)</title><link>http://www.blogjava.net/liaojiyong/archive/2006/05/25/47959.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Thu, 25 May 2006 01:38:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2006/05/25/47959.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/47959.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2006/05/25/47959.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/47959.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/47959.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一、														UML														简介																UML				（				Unified Modeling Language				）即统一建模语言，是				OMG				（				Object Management Group				）发表的图标式软件设计语言。	...&nbsp;&nbsp;<a href='http://www.blogjava.net/liaojiyong/archive/2006/05/25/47959.html'>阅读全文</a><img src ="http://www.blogjava.net/liaojiyong/aggbug/47959.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2006-05-25 09:38 <a href="http://www.blogjava.net/liaojiyong/archive/2006/05/25/47959.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>