﻿<?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>C++博客-luqingfei@C++-随笔分类-软件工程</title><link>http://www.cppblog.com/luqingfei/category/10152.html</link><description>Be water, my friends!</description><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2009 11:24:35 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2009 11:24:35 GMT</pubDate><ttl>60</ttl><item><title>PIM-2：分析业务规则，生成状态图</title><link>http://www.cppblog.com/luqingfei/archive/2009/04/10/79528.html</link><dc:creator>路青飞</dc:creator><author>路青飞</author><pubDate>Fri, 10 Apr 2009 10:07:00 GMT</pubDate><guid>http://www.cppblog.com/luqingfei/archive/2009/04/10/79528.html</guid><wfw:comment>http://www.cppblog.com/luqingfei/comments/79528.html</wfw:comment><comments>http://www.cppblog.com/luqingfei/archive/2009/04/10/79528.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/luqingfei/comments/commentRss/79528.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/luqingfei/services/trackbacks/79528.html</trackback:ping><description><![CDATA[&nbsp;<span>企业通过一组业务规则（</span><span>Buisness Rules</span><span>）来控制整体的动作，包括人员、流程、系统、概念的动作，皆受制于业务规则。</span>
<p>&nbsp;</p>
<p><span>企业领域中任何一项必须遵守的条件（</span><span>Conditions</span><span>）、约束（</span><span>Constraints</span><span>）或政策（</span><span>Policies</span><span>）都算是业务规则。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>可以将业务规则分为两大类，分别为：约束规则（</span><span>Constraint Rules</span><span>）与衍生规则（</span><span>Derivation Rules</span><span>）。</span></p>
<p><span>约束规则主要用来约束对象结构和行为；衍生规则主要是推论约束和计算公式。细分类如下：</span></p>
<p><span><span>1）&nbsp;</span></span><span>约束规则（</span><span>Constraint Rules</span><span>）</span></p>
<p><span><span>a）&nbsp;</span></span><span>刺激</span><span>/</span><span>反应规则（</span><span>Stimulus/ Response Rules</span><span>）</span></p>
<p><span><span>b）&nbsp;</span></span><span>操作规则（</span><span>Operation Constraint Rules</span><span>）</span></p>
<p><span><span>c）&nbsp;</span></span><span>结构规则（</span><span>Structure Constraint Rules</span><span>）</span></p>
<p><span><span>2）&nbsp;</span></span><span>衍生规则（</span><span>Derivation Rules</span><span>）</span></p>
<p><span><span>a）&nbsp;</span></span><span>推论规则（</span><span>Inference Rules</span><span>）</span></p>
<p><span><span>b）&nbsp;</span></span><span>计算规则（</span><span>Computation Rules</span><span>）</span></p>
<p>&nbsp;</p>
<p><span>刺激</span><span>/</span><span>反应规则</span></p>
<p><span>当（</span><span>WHEN</span><span>）某个重要的外界事件发生，而且（</span><span>and</span><span>）对象如果（</span><span>IF</span><span>）恰好处于某种状态下时，（</span><span>THEN</span><span>）对象就会做出某种事先约定好的行为。简言之，</span><span>WHEN and IF</span><span>条件成立时，对象就会有</span><span>THEN</span><span>的反应。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>操作规则</span></p>
<p><span>操作规则（</span><span>Operation Constraint Rules</span><span>）用来保证操作会正确执行，通常又分为&#8220;操作前规则&#8221;（</span><span>Operation Precondition Rules</span><span>）及&#8220;操作后规则&#8221;（</span><span>Operation Postcondition Rules</span><span>）。</span></p>
<p><span>只要（</span><span>ONLY IF</span><span>）&#8230;&#8230;且（</span><span>and</span><span>）&#8230;&#8230;执行（</span><span>Execute</span><span>）</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>结构规则</span></p>
<p><span>结构规则（</span><span>Structure Constaints Rules</span><span>）用来约束对象种类或关联关系必须永远遵守规则。在类图里，最容易表达结构规则。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>推论规则</span></p>
<p><span>推论规则（</span><span>Inference Rules</span><span>）指出某事实（</span><span>Facts</span><span>）为真（</span><span>True</span><span>）时，结论（</span><span>Conclusion</span><span>）可被推论得出。</span></p>
<p><span>IF </span><span>&#8230;&#8230;</span><span> THEN </span><span>&#8230;&#8230;</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>计算规则</span></p>
<p><span>计算规则（</span><span>Computation Rules</span><span>）就是一般所谓的计算公式。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>业务规则散落四处，系统分析员可以通过不同的的</span><span>UML</span><span>图，重新组织且呈现业务规则，如下：</span></p>
<p><span><span>a）&nbsp;</span></span><span>PIM-1</span><span>的系统用例叙述，以系统流程为主，记录约束流程的业务规则。</span></p>
<p><span><span>b）&nbsp;</span></span><span>PIM-2</span><span>的状态图，以对象行为为主，记录刺激对象反应的业务规则。</span></p>
<p><span><span>c）&nbsp;</span></span><span>PIM-3</span><span>的类图，以静态结构为主，记录约束对象种类或关联关系的业务规则。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>在进行</span><span>PIM-1</span><span>时，系统分析员已经广泛地记下一些重要的业务规则了。接着，系统分析员可以从中找出涉及多项业务规则的业务对象（</span><span>Business Object</span><span>），并于此处的</span><span>PIM-2</span><span>，再进一步通过状态图，组织且记录更多重要的业务规则。</span></p>
<p>&nbsp;</p>
<p><span>同时，系统分析员经过了建立状态图的思考过程之后，可以对重要业务对象的状态变化更加清楚。系统分析员可以用一张状态图呈现某一种重要对象一生的行为。从对象诞生到灭亡期间，它会对哪些事件（</span><span>Event</span><span>）有所反应，因而转换（</span><span>Transition</span><span>）其内在状态（</span><span>State</span><span>），和执行某些特定的动作（</span><span>Action</span><span>）。</span></p>
<p>&nbsp;</p>
<p><span>针对对象一生中可能执行的一组动作，系统分析员使用状态来分组这些动作。因此，对象一旦转换进入某一个状态之后，其可执行的动作就会被约束，直到发生了重要事件之后，对象才会转换到另一个状态，同时也执行新状态内部规定好的动作。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/luqingfei/aggbug/79528.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luqingfei/" target="_blank">路青飞</a> 2009-04-10 18:07 <a href="http://www.cppblog.com/luqingfei/archive/2009/04/10/79528.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PIM-1：分析系统流程，生成系统用例叙述</title><link>http://www.cppblog.com/luqingfei/archive/2009/04/10/79510.html</link><dc:creator>路青飞</dc:creator><author>路青飞</author><pubDate>Fri, 10 Apr 2009 07:15:00 GMT</pubDate><guid>http://www.cppblog.com/luqingfei/archive/2009/04/10/79510.html</guid><wfw:comment>http://www.cppblog.com/luqingfei/comments/79510.html</wfw:comment><comments>http://www.cppblog.com/luqingfei/archive/2009/04/10/79510.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/luqingfei/comments/commentRss/79510.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/luqingfei/services/trackbacks/79510.html</trackback:ping><description><![CDATA[&nbsp;<span>在</span><span>CIM</span><span>阶段后，系统分析员已初步生成了系统用例，让相关的决策人员从中挑选出首期开发的系统用例，这也就是首期的系统范围。</span>
<p>&nbsp;<br><span>随后，项目正式进入</span><span>PIM</span><span>阶段，也是正式进入分析阶段，系统分析员将针对首期的系统用例详述细节规格，作为正式需求文件的一部分，也作为业务人员与开发人员之间的沟通文件。</span></p>
<p>&nbsp;</p>
<p><span>PIM-1~PIM-4</span><span>的</span><span>UML</span><span>产生结果，将作为需求文件中的一部分，而其余非</span><span>UML</span><span>产生的结果，系统分析员视项目规定或以往经验自行产生。</span></p>
<p>&nbsp;</p>
<p><span>在</span><span>PIM</span><span>阶段中，系统分析员负责生成</span><span>PIM-1~PIM-4</span><span>，至于其余的</span><span>PIM</span><span>或</span><span>PSM</span><span>，则由其他开发人员负责生成。</span></p>
<p>&nbsp;</p>
<p><span>PIM-1~PIM-4</span><span>的产生结果如下：</span></p>
<p><span>PIM-1</span><span>：分析系统流程（系统用例叙述）</span></p>
<p><span>PIM-2</span><span>：分析业务规则（状态图）</span></p>
<p><span>PIM-3</span><span>：定义静态结构（类图）</span></p>
<p><span>PIM-4</span><span>：定义操作及方法（序列图）</span></p>
<p>&nbsp;</p>
<p><span>在进入</span><span>PIM</span><span>阶段之后，系统分析员将所有系统用例依相关性分成若干组，以组别方式生成该组系统用例涉及的</span><span>PIM-1~PIM-4</span><span>产生的结果，随后交给后续的开发人员进行设计，编码及测试。然后逐步生成一组一组的</span><span>PIM-1~PIM-4</span><span>产生结果，跟</span><span>CIM</span><span>的生成方式不同。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>系统分析员逐步生成</span><span>PIM</span><span>的可能情况：</span></p>
<p><span>第一阶段，进行</span><span>CIM-1</span><span>，生成业务用例</span></p>
<p><span>第二阶段，进行</span><span>CIM-2</span><span>，生成活动图</span></p>
<p><span>第三阶段，进行</span><span>CIM-3</span><span>，生成系统用例</span></p>
<p><span>第四阶段，决策人员从</span><span>CIM-3</span><span>挑选出一些系统用例，作为首期系统范围。接着，系统分析员将挑选出来的系统用例，以其领域知识的相关性分组。</span></p>
<p><span>第五阶段，生成第一组系统用例相关的</span><span>PIM-1~PIM-4</span><span>分析文件，并交由后续的开发人员进行设计、编码及测试。</span></p>
<p><span>第六阶段：依次生成其它组的系统用例相关的</span><span>PIM-1~PIM-4</span><span>分析文件，并交由后续的开发人员进行设计、编码及测试。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>PIM-1</span><span>：系统用例叙述</span></p>
<p><span>针对每一个系统用例，系统分析员分析其内部细节，并编写成系统用例叙述（</span><span>UC Description</span><span>）。</span></p>
<p><span>一份用例叙述格式里头包含多项字段，系统分析员可以从中挑选适用的字段组成自己的用例叙述格式。</span></p>
<p>&nbsp;</p>
<p><span><span>1、&nbsp;</span></span><span>用例基本数据</span></p>
<p><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span><span>用例名称</span></p>
<p><span><span><span><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span></span></span></span><span>用例编号</span></p>
<p><span><span><span><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span></span></span></span><span>用例简述</span></p>
<p><span><span><span><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span></span></span></span><span>用例图</span></p>
<p><span><span><span><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span></span></span></span><span>系统</span></p>
<p><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span><span>执行者</span></p>
<p><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span><span>相关用例</span></p>
<p><span><span>2、&nbsp;</span></span><span>执行流程</span></p>
<p><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span><span>主要流程（</span><span>Basic Flow</span><span>）</span></p>
<p><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span><span> </span></span></span><span>替代流程（</span><span>Alternate Flows</span><span>）</span></p>
<p><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span><span> </span></span></span><span>例外流程（</span><span>Exception Flows</span><span>）</span></p>
<p><span><span>3、&nbsp;</span></span><span>条件及规则</span></p>
<p><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span><span>启动事件或条件（</span><span>Triggers</span><span>）</span></p>
<p><span><span><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span></span></span><span>前置条件（</span><span>Preconditions</span><span>）</span></p>
<p><span><span><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span></span></span><span>后置条件（</span><span>Post conditions on Success</span><span>）</span></p>
<p><span><span><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span></span></span><span>失败时状态（</span><span>Status on Failure</span><span>）</span></p>
<p><span><span><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span></span></span><span>业务规则（</span><span>Business Rule</span><span>）</span></p>
<p><span><span>4、&nbsp;</span></span><span>相关文档</span></p>
<p><span><span><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span><span> </span></span></span><span>用例叙述的历史版本</span></p>
<p><span><span><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span></span></span><span>UML</span><span>图</span></p>
<p><span><span><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span></span></span><span>参考画面</span></p>
<p><span><span><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span></span></span><span>其他非</span><span>UML</span><span>文档</span></p>
<p><span><span>5、&nbsp;</span></span><span>其他事项</span></p>
<p><span><span><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span></span></span><span>优先性（</span><span>Priority</span><span>）</span></p>
<p><span><span><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span></span></span><span>迭代等级（</span><span>Iteration</span><span>）</span></p>
<p><span><span><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span></span></span><span>待解决问题（</span><span>Issues</span><span>）</span></p>
<p><span><span><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span><span> </span></span></span><span>基本假设（</span><span>Assumptions</span><span>）</span></p>
<p><span><span><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span></span></span><span>相关人员</span></p>
<p><span><span><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>●</span></span></span></span></span></span><span>特殊需求（</span><span>Special Requirements</span><span>）</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>相关用例：常见的相关性有两方面，其一是执行用例前必须先行执行过某相关用例，其二是执行用例期间可能驱动其他的包含用例（</span><span>Inclusion Use Case</span><span>），或是因条件符合驱动其他的扩展用例（</span><span>Extension Use Case</span><span>）。</span></p>
<p>&nbsp;</p>
<p><span>就系统内部而言，各用例在其幕后都是共享同一群对象。也就是说，</span><span>UC</span><span>之间自然就具有&#8220;共享对象&#8221;之关系。但是，由于用例图只呈现系统外观，所以在用例图里看不到这种关系。在外观方面，</span><span>UC</span><span>之间有两种关系，分别是&#8220;包含&#8221;（</span><span>Include</span><span>）和&#8220;扩展&#8221;（</span><span>Extend</span><span>）关系。</span></p>
<p>&nbsp;</p>
<p><span>两个用例之间可以有&#8220;包含&#8221;关系，用以表示某一个用例的对话流程中，包含着另一个用例的对话流程。一旦出现数个用例都有部分相同的对话流程时，将相同的流程记录在另一个用户中；前者称为&#8220;基用例&#8221;（</span><span>Base UC</span><span>），后者称为&#8220;包含用例&#8221;（</span><span>Inclusion UC</span><span>）。</span></p>
<p>&nbsp;</p>
<p><span>如此一来，这些基用例就可以共享包含用例了。</span></p>
<p><span>简言之，包含关系是来自于抽象（</span><span>Abstraction</span><span>），即从数个不同的用例之中，抽离出共同的部分，而成为可以重用的用例。</span></p>
<p>&nbsp;</p>
<p><span>两个用例之间还可以有&#8220;扩展&#8221;关系，用以表示某一个用例的对话流程，可能会依条件临时插入另一个用例的对话流程中。前者称为&#8220;扩展用例&#8221;（</span><span>Extension UC</span><span>），后者称为&#8220;基用例&#8221;（</span><span>Base UC</span><span>）。</span></p>
<p>&nbsp;</p>
<p><span>简言之，扩展关系来自于用例内执行活动的过程分为主要过程（</span><span>Main Course</span><span>）及可选择性过程（</span><span>Alternative Course</span><span>）。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>执行流程</span></p>
<p><span>主要流程：这是用例叙述最核心的部分，其记载了整个用例正常的执行过程。</span></p>
<p><span>替代流程：一个用例叙述里面，通常会包含一段主要流程，同时可以包含数段替代流程。</span></p>
<p><span>例外流程：用例执行失败的情况。</span></p>
<p>&nbsp;</p>
<p><span>用例成功执行的过程中，正常流程就是主要流程，期间出现的小插曲就是替代流程。但是，例外流程处理的是，用例执行失败的情况。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>条件及规则</span></p>
<p><span>启动事件或条件：记录启动用例的重要事件或条件。</span></p>
<p><span>前置条件：这是执行用例之前的检验，唯有在满足某些重要条件时，才会执行该用例，以确保用例可以正确执行。</span></p>
<p><span>后置条件：相对于前置条件，后置条件代表用例执行完毕时，可以通过后置条件自行检验是否执行成功。</span></p>
<p><span>失败时状态：记录用例执行失败时的状态。</span></p>
<p><span>业务规则：重要的业务规则或计算公式都要记录下来。</span></p>
<p>&nbsp;</p>
<p><span>业务人员在执行业务流程时，会使用到许多重要的业务规则或计算公式，这些也都是系统必须遵守的条件及规则，所以必须记录下来。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>相关文档</span></p>
<p><span>由于用例驱动（</span><span>Use Case Driven</span><span>）是当今软件开发的基础模型，所以用例叙述常作为系统开发文件的汇集点，同它链接到相关的文档。</span></p>
<p>&nbsp;</p>
<p><span>用例叙述的历史版本：用例改版时，用例叙述也跟着同步改版。用例叙述是参与人员的智慧成果，也是业务组织的重要资产。所以如果有需要保留用例叙述的历史版本时，可以在现行版本里多加一个字段，以链接旧有的历史版本及改版说明。</span></p>
<p>&nbsp;</p>
<p><span>UML</span><span>图：跟该用例相关的业务用例图、活动图、系统用例图、状态图、类图或序列图，等等。</span></p>
<p><span>参考画面：有时候附上画面设计的图片，让阅读者可以对该用例有更具体的想象。</span></p>
<p><span>其他非</span><span>UML</span><span>文档：例如会议记录、</span><span>表设计等。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>其他事项</span></p>
<p><span>优先性：替用例标示其重要度或优先性，可以协助订定开发用例的顺序，越重要的越优先开发。</span></p>
<p><span>迭代等级：替用例标示其细致度或迭代等级，方便开发人员经过多次迭代的过程逐步定义出用例的细节。</span></p>
<p><span>待解决问题：在用例分析与开发期间，可能会出现还没有定论的问题，这时候通过用例叙述把问题记录起来，方便指派负责人员以及日后查阅。</span></p>
<p><span>基本假设：如果该用例是基于某个基本假设而设计出来的，记下这个重要的基本假设。</span></p>
<p><span>相关人员：每一份用例叙述都涉及几种不同身份的相关人员，包括制作者、阅读者和审核者，等等。</span></p>
<p><span>特殊需求：跟该用例相关的非功能性需求等特殊需求，都可以记录在这个字段中。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/luqingfei/aggbug/79510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luqingfei/" target="_blank">路青飞</a> 2009-04-10 15:15 <a href="http://www.cppblog.com/luqingfei/archive/2009/04/10/79510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CIM：定义业务流程-&gt;分析业务流程-&gt;定义系统范围</title><link>http://www.cppblog.com/luqingfei/archive/2009/04/09/79324.html</link><dc:creator>路青飞</dc:creator><author>路青飞</author><pubDate>Thu, 09 Apr 2009 03:29:00 GMT</pubDate><guid>http://www.cppblog.com/luqingfei/archive/2009/04/09/79324.html</guid><wfw:comment>http://www.cppblog.com/luqingfei/comments/79324.html</wfw:comment><comments>http://www.cppblog.com/luqingfei/archive/2009/04/09/79324.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/luqingfei/comments/commentRss/79324.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/luqingfei/services/trackbacks/79324.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;定义及分析业务流程（Business Process）是为了尽快理清系统范围，以便估算开发成本及时间，可不是为了要改造业务流程，系统分析员千万别误解了此步骤之目的。所以，系统分析员在定义及分析业务流程时，记得挑选跟系统有关的业务流程。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 无法确定系统范围，就无法估算系统开发所需的成本及时间，当然整个项目也就无法全面展开。所以，系统分析员要尽快完成此项目，最好在一、两周内可以依次生成下列UML文件：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ●CIM-1：定义业务流程（业务用例图）<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ●CIM-2：分析业务流程（活动图）<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ●CIM-3：定义系统范围（系统用例图）<br><br>CIM-1：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 系统分析员经过了CIM1~3阶段之后，将定义出一堆的系统用例，随后从中挑选出首批开发的系统用例，这才算确定了系统范围，也才能够估算开发成本及时间，并且正式进入PIM阶段。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 业务用例图的主要组成元素是业务用例和业务执行者。每一个业务用例代表一条业务流程，业务执行者则代表位于业务组织外但会启动或参与业务流程的人（或其它系统）。<br><br>CIM-2：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 通过CIM-1圈出了系统将参与的业务流程之后，针对每一个业务用例，系统分析员得开始分析它的工作流程，并且绘制活动图（Activity Diagram）与业务人员取得共识。随后到了CIM-3时，才能够依此定义出系统可以协助之处，并且规划出系统范围。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 选用活动图作为分析业务流程的工具，主要是因为它能够让系统分析员聚焦在流程内部的一连串工作。在这一连串的工作项目中，有些工作项目可能是纯人工操作，另一些工作项目则可能有系统的协助。找出可信息化的工作项目，并以此定义出系统未来可以提供的服务项目，也就定义出初步的系统范围了。<br><br>CIM-3：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 经过了CIM-1的定义业务程序以及CIM-2的分析业务流程之后，终于进入到CIM-3这场压轴戏了。CIM-1和CIM-2的生成文件，跟CIM-3的生成文件之间，有如下的关联性：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ●CIM-1中的业务执行者，以及CIM-2中的动作负责人，都可能成为CIM-3的系统执行者（System Actor）。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ●CIM-2活动图中的每一个动作，都可能成为CIM-3的系统用例。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在CIM-3中，系统分析员将分析CIM-2生成的所有活动图，定义出一堆的系统用例。随后，待项目经理及相关人士从中挑选一批系统用例，作为首期发布（Release）的系统用例。此外，系统分析员也将带着这批选中的系统用例进入PIM-1，开始详述每一个系统用例的详细规格。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 系统分析员在定义系统用例时，可以参考下列建议：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、每一个系统用例最好只有一个启动者。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、系统用例执行时间，如果有联机其他系统，将它们列为支持者。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、遇到定时启动的系统用例，可以定义一个名为&#8220;定时启动者（Timer）&#8221;的虚拟启动者。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 启动用例的执行者，特称为&#8220;启动者&#8221;（Initiator），其余不具有启动特质的执行者，可称之为&#8220;支持者&#8221;（Support）。直接操作计算机的用户，通常就是系统用例的启动者。而且在系统用例执行期间，有时会需要联机其他系统以取得协助，这些联机系统就是支持者。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 系统分析员可以先从&#8220;CIM-1的业务执行者&#8221;和&#8220;CIM-2的动作负责人&#8221;这两处先找寻激活者。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 系统分析员在绘制系统用例图时，可以采用下列几项常见做法：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、采用带箭头关系线，让启动者指向用例，用例指向支持者。这样一来，从图上就可以明确分辨出启动者与支持者。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、一个用例通常只有一个启动者，不过可能出现多个支持者。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、如果有多个启动者的情况，尝试切割成一人一会话（One user, One Session）。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4、有时不同用户都具有启动用例的特性，建议在图上绘出最重要或最主要的启动者，基余启动者记录在用例叙述里，这样可以降低图的复杂度。<br><br><br><br><br>
<img src ="http://www.cppblog.com/luqingfei/aggbug/79324.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luqingfei/" target="_blank">路青飞</a> 2009-04-09 11:29 <a href="http://www.cppblog.com/luqingfei/archive/2009/04/09/79324.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MDA开发程序</title><link>http://www.cppblog.com/luqingfei/archive/2009/04/08/79282.html</link><dc:creator>路青飞</dc:creator><author>路青飞</author><pubDate>Wed, 08 Apr 2009 09:17:00 GMT</pubDate><guid>http://www.cppblog.com/luqingfei/archive/2009/04/08/79282.html</guid><wfw:comment>http://www.cppblog.com/luqingfei/comments/79282.html</wfw:comment><comments>http://www.cppblog.com/luqingfei/archive/2009/04/08/79282.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/luqingfei/comments/commentRss/79282.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/luqingfei/services/trackbacks/79282.html</trackback:ping><description><![CDATA[<p>&nbsp; </p>
<p><span>MDA</span><span>（</span><span>Model-Driven Architecture</span><span>）与</span><span>UML</span><span>（</span><span>Unified Modeling Language</span><span>）同为</span><span>OMG</span><span>（</span><span>Object Management Group</span><span>）机构之标准。</span><span><br>MDA</span><span>主要将生成的</span><span>UML</span><span>模型，分为下列三个阶段：</span><span><br></span><span>●</span><span> CIM</span><span>（</span><span>Computation Independent Model</span><span>）——聚焦于系统环境及需求，但不涉及系统内部的结构与动作细节。</span></p>
<p><span>● PIM</span><span>（</span><span>Platform Independent Model</span><span>）——聚焦于系统内部细节，但不涉及实现系统的具体平台（</span><span>Platform</span><span>）。</span></p>
<p><span>● PSM</span><span>（</span><span>Platform Specific Model</span><span>）——聚焦于系统落实于特定具体平台的细节。例如，</span><span>Spring</span><span>、</span><span>EJB2</span><span>或</span><span>.NET</span><span>都是一种具体平台。</span></p>
<p>&nbsp;</p>
<p><span>最后，程序员会依据</span><span>PSM</span><span>的</span><span>UML</span><span>模型内容，按图施工，编写出适用于特定具体平台的代码。</span></p>
<p>&nbsp;</p>
<p><span>MDA</span><span>提出的解决方法——将企业及应用系统与实现技术平台分离，且以统一建模语言</span><span>UML</span><span>来表达与平台无关的</span><span>PIM</span><span>，然后再设计出适用于特定平台的模型</span><span>PSM</span><span>。如此一来，因为分隔且封装了企业与技术两方面的变化，所以降低了两者之间的牵动。</span></p>
<p>&nbsp;</p>
<p><span>MDA</span><span>主张将设计切分成</span><span>PIM</span><span>和</span><span>PSM</span><span>。</span></p>
<p>&nbsp;</p>
<p><span>MDA</span><span>项目开发的第一步骤从</span><span>CIM</span><span>开始，不同于</span><span>PIM</span><span>和</span><span>PSM</span><span>，</span><span>CIM</span><span>试图表达信息系统的应用环境，而非信息系统本身。</span></p>
<p><span>在进行</span><span>CIM</span><span>时，关切的是与企业相关的营运目标、实现条件及运作流程等，先了解信息系统的应用环境，才有可能为企业量身打造出完善的信息系统。</span></p>
<p>&nbsp;</p>
<p><span>在经历构建</span><span>CIM</span><span>的过程中，除了可以逐步了解企业，同时也建立与业务人员之间的沟通方式及默契，还让业务人员可以参与信息系统的开发。</span></p>
<p>&nbsp;</p>
<p><span>CIM</span><span>旨在记录企业领域里的重要需求与概念。</span></p>
<p><span>PIM</span><span>和</span><span>PSM</span><span>之间的界限，比较容易混淆，两者所关切的主体都是信息系统，分别的界限在于&#8220;平台&#8221;（</span><span>Platform</span><span>）一词。</span></p>
<p><span>简言之，</span><span>PIM</span><span>与</span><span>PSM</span><span>的界限在于，是否支持特定的具体平台。前者与具体平台无关，后者则得适合某一个特定的具体平台。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>分析步骤参考：（</span><span>CIM</span><span>、</span><span>PIM</span><span>阶段）</span></p>
<p><span>CIM-1</span><span>：定义业务流程，产生业务用例模型。</span></p>
<p><span>CIM-2</span><span>：分析业务流程，产生活动图。</span></p>
<p><span>CIM-3</span><span>：定义系统范围，产生系统用例图。</span></p>
<p><span>PIM-1</span><span>：分析系统流程，产生系统用例叙述。</span></p>
<p><span>PIM-2</span><span>：分析业务规则，产生状态图</span></p>
<p><span>PIM-3</span><span>：定义静态结构，产生类图。</span></p>
<p><span>PIM-4</span><span>：定义操作及方法，生成序列图。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/luqingfei/aggbug/79282.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luqingfei/" target="_blank">路青飞</a> 2009-04-08 17:17 <a href="http://www.cppblog.com/luqingfei/archive/2009/04/08/79282.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>