﻿<?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;span style="color: black; font-family: 'Blackadder ITC'"&gt;走在架构师的大道上 Jack.Wang's home&lt;/span&gt;</title><link>http://www.blogjava.net/Jack2007/</link><description>Java, C++, linux c, C#.net 技术,软件架构,领域建模,IT 项目管理
&lt;span id="dict_daily"&gt;
&lt;a href="http://dict.cn/" target="_blank"&gt;Dict.CN 在线词典, 英语学习, 在线翻译&lt;/a&gt;
&lt;/span&gt; 
&lt;script language="JavaScript" src="http://dict.cn/daily.php" defer="defer"&gt;
&lt;/script&gt; </description><language>zh-cn</language><lastBuildDate>Sun, 15 Mar 2026 12:06:06 GMT</lastBuildDate><pubDate>Sun, 15 Mar 2026 12:06:06 GMT</pubDate><ttl>60</ttl><item><title>软件架构设计参考文件</title><link>http://www.blogjava.net/Jack2007/archive/2009/10/21/299238.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Wed, 21 Oct 2009 12:04:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2009/10/21/299238.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/299238.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2009/10/21/299238.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/299238.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/299238.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&lt;项目名称&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;项目编号：XXXXX软件架构设计说明书&nbsp;                                    文档状态:                           ...&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2009/10/21/299238.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/299238.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2009-10-21 20:04 <a href="http://www.blogjava.net/Jack2007/archive/2009/10/21/299238.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常见Oracle HINT的用法[转]</title><link>http://www.blogjava.net/Jack2007/archive/2009/08/23/292250.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sun, 23 Aug 2009 01:02:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2009/08/23/292250.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/292250.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2009/08/23/292250.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/292250.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/292250.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 常见Oracle HINT的用法，标记在这里&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2009/08/23/292250.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/292250.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2009-08-23 09:02 <a href="http://www.blogjava.net/Jack2007/archive/2009/08/23/292250.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>伟大架构师的秘密【转载】</title><link>http://www.blogjava.net/Jack2007/archive/2009/05/30/279007.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sat, 30 May 2009 05:06:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2009/05/30/279007.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/279007.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2009/05/30/279007.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/279007.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/279007.html</trackback:ping><description><![CDATA[<div class="overview" align="left">
<p>By Don Awalt and Rick McUmber<br />
RDA Corporation</p>
</div>
<div align="left">
<h5 style="padding-top: 2px">本页内容</h5>
</div>
<div align="left">
<table style="margin-top: 7px; margin-bottom: 12px" border="0" cellspacing="0" cellpadding="0">
    <tbody>
        <tr valign="top">
            <td><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#E5AA"><img border="0" hspace="4" alt="将抽象层次应用到 IT 解决方案" vspace="2" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width="7" height="9" /></a></td>
            <td class="onThisPage"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#E5AA">将抽象层次应用到 IT 解决方案</a></td>
        </tr>
        <tr valign="top">
            <td><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#E2AA"><img border="0" hspace="4" alt="抽象层次：所有工程师的强大武器" vspace="2" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width="7" height="9" /></a></td>
            <td class="onThisPage"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#E2AA">抽象层次：所有工程师的强大武器</a></td>
        </tr>
        <tr valign="top">
            <td><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#EYAA"><img border="0" hspace="4" alt="应用抽象层次时的核心原则" vspace="2" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width="7" height="9" /></a></td>
            <td class="onThisPage"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#EYAA">应用抽象层次时的核心原则</a></td>
        </tr>
        <tr valign="top">
            <td><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#EVAA"><img border="0" hspace="4" alt="将抽象层次应用到 IT 系统" vspace="2" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width="7" height="9" /></a></td>
            <td class="onThisPage"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#EVAA">将抽象层次应用到 IT 系统</a></td>
        </tr>
        <tr valign="top">
            <td><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#ESAA"><img border="0" hspace="4" alt="简单框架：四个抽象层次" vspace="2" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width="7" height="9" /></a></td>
            <td class="onThisPage"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#ESAA">简单框架：四个抽象层次</a></td>
        </tr>
        <tr valign="top">
            <td><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#EPAA"><img border="0" hspace="4" alt="通过迭代发展层次" vspace="2" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width="7" height="9" /></a></td>
            <td class="onThisPage"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#EPAA">通过迭代发展层次</a></td>
        </tr>
        <tr valign="top">
            <td><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#EMAA"><img border="0" hspace="4" alt="重访抽象层次核心原则" vspace="2" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width="7" height="9" /></a></td>
            <td class="onThisPage"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#EMAA">重访抽象层次核心原则</a></td>
        </tr>
        <tr valign="top">
            <td><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#EJAA"><img border="0" hspace="4" alt="扩展层次以支持企业解决方案" vspace="2" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width="7" height="9" /></a></td>
            <td class="onThisPage"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#EJAA">扩展层次以支持企业解决方案</a></td>
        </tr>
        <tr valign="top">
            <td><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#EIAA"><img border="0" hspace="4" alt="优点" vspace="2" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width="7" height="9" /></a></td>
            <td class="onThisPage"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#EIAA">优点</a></td>
        </tr>
        <tr valign="top">
            <td><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#EFAA"><img border="0" hspace="4" alt="小结" vspace="2" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width="7" height="9" /></a></td>
            <td class="onThisPage"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#EFAA">小结</a></td>
        </tr>
        <tr valign="top">
            <td><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#ECAA"><img border="0" hspace="4" alt="自我评估" vspace="2" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width="7" height="9" /></a></td>
            <td class="onThisPage"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#ECAA">自我评估</a></td>
        </tr>
    </tbody>
</table>
</div>
<a name="E5AA"></a>
<div align="left">
<h2>将抽象层次应用到 IT 解决方案</h2>
</div>
<div align="left">企业架构师正受到其所面临的大量复杂性的挑战。开发一个能够自动处理企业任务的独立的部门应用程序是一回事。而设计并组成一个支持上万 IT 使用者的满是应用程序、服务器和数据库（全都支持多种企业活动）的 IT 实验室全球网络，则完全是另外一回事。要组合这些复杂性，IT 网络必须随时可用、响应迅速并保护企业宝贵的信息资产。除所有这些之外，IT 网络还必须足够灵活以支持企业永远变化的需要，并且采用出现的新技术。</div>
<div align="left">一些架构师在这种复杂性方面明显非常出色，而且在不断进步。在我们的职业生涯中，能与一些真正伟大的分析师和架构师并肩工作是非常幸运的。反思这些经验，我们已经分析出是什么造就了杰出的架构师。 </div>
<div align="left">无一例外，所有伟大的架构师都掌握了在截然不同的抽象层次上概念化解决方案的技能。通过将解决方案组织到离散的层次，架构师可以将精力集中在解决方案的单个方面而忽略所有剩余的复杂性。他们一旦稳定了解决方案的某个部分，接下来就能继续处理其他方面，从而不断地将层次发展并完善到最终可以被实现的粘合模型中。</div>
<div align="left">大多数软件开发人员懂得应该将解决方案分解到抽象层次。但是在实际的项目中，这是非常难于付诸实践的。当遇到第一个困难时，在急于开始编码时是很容易放弃这些层次的。伟大的架构师会经受这些挑战并在整个项目的生命周期中严格保持这些层次。他们意识到，如果不这样做，最终将淹没在复杂性中。</div>
<div align="left">本文展示了将抽象层次应用到 IT 解决方案的技术。首先，我们会通过一个简单的示例演示此方法，然后提出一个基于正式抽象层次的系统产品的结构。 </div>
<div style="margin-top: 3px; margin-bottom: 10px" align="left"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#top"><img border="0" alt="返回页首" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif" width="7" height="9" /></a><a class="topOfPage" href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#top">返回页首</a></div>
<a name="E2AA"></a>
<div align="left">
<h2>抽象层次：所有工程师的强大武器</h2>
</div>
<div align="left">其他的工程学科，比如土木工程师，几个世纪以来一直利用抽象层次复制复杂性。让我们学习一下其他更成熟的工程学科是如何应用抽象层次的，就从电子工程师开始吧，他们设计每次更新换代都变得更加复杂的计算机系统。</div>
<div align="left">
<h3>硬件工程师</h3>
</div>
<div align="left">系统设计师使用抽象层次为计算机系统建模。每个层次都是定义完善的，并提供了该系统的一个不同角度。许多系统是在三个主要层次上设计的：系统、子系统和组件，如<strong>图</strong><strong> 1 </strong>所示。</div>
<div align="left">分层使工程师能够将庞大数量的复杂性集成到一个单一的工作计算机系统中。在其原子部分的层次上确切了解一台计算机是不可能的。在单独一块 Intel Itanium_ 芯片上有大约 25,000,000 个晶体管。 </div>
<div align="left">对 IT 相关学科来说，这种把复杂性分解到抽象层的方法当然不是惟一的。类似的方法被用于从航空工程到微生物学的无数其他学科。</div>
<div style="margin-top: 3px; margin-bottom: 10px" align="left"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#top"><img border="0" alt="返回页首" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif" width="7" height="9" /></a><a class="topOfPage" href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#top">返回页首</a></div>
<a name="EYAA"></a>
<div align="left">
<h2>应用抽象层次时的核心原则</h2>
</div>
<div align="left">所有工程师在应用抽象层次时都遵循这套核心原则。当把抽象层次应用到软件时，这些原则也同样适用。</div>
<div align="left">这些层次的数量和范围是定义完善的，以便工程师能够在复杂的系统上协作，所有团队成员必须共享对层次的同一理解。只要设计师做出设计决定，他们必须将那些决定归档到相应的细节层次。</div>
<div align="left">三个抽象层次定义如下：</div>
<div align="left">
<div style="width: 477px"><img border="0" alt="greatarchitect_figithumb" src="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/art/greatarchitect_figithumb.gif" width="477" height="382" /><br />
<p class="figureCaption"><strong>图</strong><strong> i. </strong><strong>定义的三个抽象层次</strong></p>
<div class="figureRule"></div>
</div>
</div>
<div align="left">
<div style="width: 450px"><img border="0" alt="greatarchitect_figiithumb" src="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/art/greatarchitect_figiithumb.gif" width="450" height="290" /><br />
<p class="figureCaption"><strong>图</strong><strong> ii.</strong><strong>抽象层次的一个简单框架</strong></p>
<div class="figureRule"></div>
</div>
</div>
<div align="left">
<h3>每个层次内的多个视图</h3>
</div>
<div align="left">一个单个层次内的复杂性可以变得非常多，以至于使人无法一次全部掌握。在这种情况下，工程师通过多个视图将设计展现于单个层次内。每个视图展现设计的一个单独方面，但保持在相同的抽象层次上。举例来说，母板工程师为板的每个层创建一个视图，从而为每层的连接路径的设计建模。 </div>
<div align="left">
<div style="width: 351px"><img border="0" alt="greatarchitect_fig1" src="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/art/greatarchitect_fig1.gif" width="351" height="459" /><br />
<p class="figureCaption"><strong>图</strong><strong> 1. </strong><strong>计算机系统的抽象层次</strong></p>
<div class="figureRule"></div>
</div>
</div>
<div align="left">
<h3>必须保持层次间的一致性</h3>
</div>
<div align="left">为了让系统按预期方式运行，每个后续的层必须是其父层的适当改进。如果计算机系统设计师从 IDE 总线切换到 SCSI 总线，那么所有设备的接口规范也必须切换到 SCSI。如果层次没有同步，那么系统就不会按预期方式在顶层执行。</div>
<div style="margin-top: 3px; margin-bottom: 10px" align="left"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#top"><img border="0" alt="返回页首" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif" width="7" height="9" /></a><a class="topOfPage" href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#top">返回页首</a></div>
<a name="EVAA"></a>
<div align="left">
<h2>将抽象层次应用到 IT 系统</h2>
</div>
<div align="left">既然我们已经分析了其他学科是如何应用抽象层次的，现在就让我们将此技术应用于 IT 解决方案<sup>1</sup>。下列部分展示了应用抽象层次为典型 IT 应用程序的需求、设计和实现建模的技术。这些技术是通过一个针对假想零售商的简单的、指导性的在线定单系统示例来展示的。在我们的示例中，我们不仅包括了体系结构，而且扩展了范围以包括系统需求和业务环境 — 如同由零售业所定义的。</div>
<div style="margin-top: 3px; margin-bottom: 10px" align="left"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#top"><img border="0" alt="返回页首" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif" width="7" height="9" /></a><a class="topOfPage" href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#top">返回页首</a></div>
<a name="ESAA"></a>
<div align="left">
<h2>简单框架：四个抽象层次</h2>
</div>
<div align="left">我们的简单示例定义 IT 解决方案的如下四个抽象层次： </div>
<div align="left">
<table border="0" cellspacing="0" cellpadding="0">
    <tbody>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p>域 </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p>业务处理 </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p>逻辑 </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p>物理 </p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</div>
<div align="left">在每个层次内，我们既展示了该特定层次行为的动态视图，又展示了其静态视图。动态视图为对象之间的消息建模，而静态视图为对象之间的结构和关系建模。</div>
<div align="left">
<h3>域抽象层次</h3>
</div>
<div align="left">应用了上面的范围规则，零售商就会作为域层次中的黑盒子中心的演员。客户作为外部的演员。域层次是从客户的角度来建模的。只为购买交互建模。用于完成购买的通讯形式不包括在这个层次，但是会在业务处理层次引入。</div>
<div align="left">
<div style="width: 326px"><img border="0" alt="greatarchitect_fig2" src="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/art/greatarchitect_fig2.gif" width="326" height="352" /><br />
<p class="figureCaption"><strong>图</strong><strong> 2. </strong><strong>关于从零售商处购买物品的域层次动态视图</strong></p>
<div class="figureRule"></div>
</div>
</div>
<div align="left">
<div style="width: 428px"><img border="0" alt="greatarchitect_fig3" src="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/art/greatarchitect_fig3.gif" width="428" height="201" /><br />
<p class="figureCaption"><strong>图</strong><strong> 3. </strong><strong>关于从零售商处购买物品的域层次静态视图</strong></p>
<div class="figureRule"></div>
</div>
</div>
<div align="left">
<h4>动态视图</h4>
</div>
<div align="left">域层次内的动态视图为客户和零售商之间的交互建模。下图汇总了域环境，并包含了简单的业务交互使用案例描述。</div>
<div align="left">
<div style="width: 375px"><img border="0" alt="greatarchitect_fig4" src="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/art/greatarchitect_fig4.gif" width="375" height="978" /><br />
<p class="figureCaption"><strong>图</strong><strong> 4. </strong><strong>关于从零售商处购买物品的业务处理层次动态视图</strong></p>
<div class="figureRule"></div>
</div>
</div>
<div align="left">
<h4>静态视图</h4>
</div>
<div align="left">域层次的静态视图为类结构和在使用案例中出现的它们的对象的关系建模。换句话说，它说明了在这个抽象层次上，为了完成购买交易客户需要了解什么对象。 <strong>图</strong><strong> 5 </strong>展示了域层次静态视图的类关系图。</div>
<div align="left">
<div style="width: 447px"><img border="0" alt="greatarchitect_fig5" src="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/art/greatarchitect_fig5.gif" width="447" height="339" /><br />
<p class="figureCaption"><strong>图</strong><strong> 5. </strong><strong>关于从零售商处购买物品的业务处理层次静态视图</strong></p>
<div class="figureRule"></div>
</div>
</div>
<div align="left">客户是 Person 的实例。客户和零售商之间的关系被具体化为 Account。所有的 Purchase 都与客户的 Account 相关。Purchase 与每个被购买的 Item 相关。每个 Item 都与特定的 Product 相关，这里 Product 遵循元类模式。Product 的实例实际上本身就是类。将其他 Product 添加到 Catalog 完全是一个数据驱动过程，而且不会对类模型产生影响，因此将 Product 建模为一个元类会使我们的模型更加灵活。围绕这些类，每个 Payment 都与其 Purchase 相关。</div>
<div align="left">如您可能看到的，这个层次的模型对大多数零售商（无论类型为在线或传统，大型或小型）来说是有代表性的。这说明了为什么 [Industry] 域模型确实应该将公司定义为黑盒子中心的演员。同一个行业中的公司倾向于支持带有其外部演员的同一套业务交互。此外，域模型排除了公司的特定业务处理，这是因为在同一行业中的公司之间它们会有相当大的变化。 </div>
<div align="left">域层次严格集中在从外部演员的角度看到的业务交互。对此我们必须注意，不要将用于完成交互的实现机制包括进来。这些细节属于下一个抽象层次。因此，在本例中，我们只为浏览、选择、购买和支付建模。我们不为如何完成这些交互（通过电话、美国邮政、电子邮件、Web 应用程序、亲自前往、支票、信用卡或现金）建模。</div>
<div align="left">
<h3>业务处理抽象层次 </h3>
</div>
<div align="left">下一个抽象层次为公司的业务处理建模，以实现在域层次捕获的交互。系统层次&#8220;内部缩放&#8221;公司的黑盒子，并标识为完成业务交易而协作的所有员工和系统。在这个层次，要开发的系统作为黑盒子中心的演员。 </div>
<div align="left">应用了系统层次的范围规则，在线定单系统就作为黑盒子中心的演员。客户和员工作为外部演员。系统层次是从客户和员工的角度来建模的。客户在线执行购买。支付是通过信用卡完成的。通过将物品运送到客户的收货地址履行定单。出货通知是由电子邮件发送的。 </div>
<div align="left">
<h4>动态视图</h4>
</div>
<div align="left">动态视图重演了域层次购买交易，这次公开了零售商的内部业务处理。<strong>图</strong><strong> 4 </strong>汇总了业务处理环境，并包含了关于系统及其演员之间的交互的简单使用案例描述。</div>
<div align="left">
<h4>静态视图</h4>
</div>
<div align="left">这个层次的静态视图对类模型做了改进，以捕获在业务处理层次使用案例中出现的对象。换句话说，&#8220;为了在线创建一个定单并履行该定单，客户和雇员需要理解哪些对象？&#8221;<strong>图</strong><strong> 5 </strong>展示了业务处理层次静态视图的类关系图。我们修改域类模型以捕获在这个抽象层次上的角度。Person、Account 和 Company 抽象保持不变，Catalog 和 Product 也一样。但是，用 Order 替换了来自域模型的抽象 Purchase 事件。</div>
<div align="left">Order 包括 LineItem，它与 Catalog 中的 Product 相关联。因为这个层次为公司的内部业务处理建模，所以我们需要获得现有的库存（最小库存单元 (SKU) 的一个属性，它表示在一个特定位置的物品的库存）。我们也为客户的 UserAccount 建模，它提供对在线系统的访问。Payment 是通过使用 CreditCardAccount 来完成的。Location 代表美国的一个地理位置，它作为账单邮寄地址，同时也作为 Order 的收货地址。Shipment 包含 Shipment 中包括的 Item。 </div>
<div align="left">我们在系统抽象层次创造方法来简化业务处理，因此该层次通常需要很多创造力。为此，通常使用业务处理层次上的若干不同形式来实现单个域层次交易。举例来说，一次购买可以通过在线、电话、邮件、传真一个定单表格或者亲自到零售店来完成。对于每一种形式，都需要在业务处理层次为其建模。请注意，尽管对零售商来说 Credit Authorizer 是一个外部演员，但是它还是在这个层次引入，这是因为只需要它实现在该层次首次出现的业务处理。 </div>
<div align="left">最后，请注意该系统是技术独立的。我们的在线购买系统可以用任何 Web 技术实现。在系统黑盒子内选择技术是一个体系结构决策。 </div>
<div align="left">
<h3>逻辑抽象层次</h3>
</div>
<div align="left">逻辑层在系统黑盒子内缩放，从而公开高级别的系统设计。架构师选择技术并定义高级系统结构。在我们的简单示例中，系统是由承载表示层、业务层和数据访问层的 Microsoft IIS/Microsoft ASP.NET 服务器和承载持久性数据的 Microsoft SQL Server 数据库服务器组成的。</div>
<div align="left">
<h4>动态视图</h4>
</div>
<div align="left">逻辑层上的动态视图跟踪通过系统主要组件的消息流。如示例所示，在提交 ConfirmOrder Web 表单的时候，<strong>图</strong><strong> 6 </strong>跟踪这一消息流。</div>
<div align="left">
<div style="width: 359px"><img border="0" alt="greatarchitect_fig6" src="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/art/greatarchitect_fig6.gif" width="359" height="920" /><br />
<p class="figureCaption"><strong>图</strong><strong> 6. </strong><strong>从零售商处在线购买物品的逻辑层次动态视图</strong></p>
<div class="figureRule"></div>
</div>
</div>
<div align="left">
<h4>静态视图</h4>
</div>
<div align="left">这个层次的静态视图也将我们的视角切换到系统内部。尽管业务处理层次为出现在业务处理中的真实抽象建立了模型，这个层次将抽象建模为其在系统中所要被表示的那样。在实际的系统中，架构师会为每个软件层（表示层、业务层和数据访问层）设计类。为了保持本文的简洁，<strong>图</strong><strong> 7</strong> 只展示了业务层的静态设计，以便说明系统层抽象是如何针对设计进行改进的。 </div>
<div align="left">
<div style="width: 434px"><img border="0" alt="greatarchitect_fig7thumb" src="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/art/greatarchitect_fig7thumb.gif" width="434" height="306" /><br />
<p class="figureCaption"><strong>图</strong><strong> 7. </strong><strong>从零售商处在线购买物品的逻辑层次静态视图</strong></p>
<div class="figureRule"></div>
</div>
</div>
<div align="left">架构师对系统层类进行改进以设计业务层接口。 </div>
<div align="left">因为系统中的所有账户和客户都是零售商的，所以创建一个单一的 Company 实例并使其与所有账户相关联是不切实际的，因此该层次中省略了 Company。我们只是存储 Payment 所带的信用卡号和账单邮寄地址，并非为每个 CreditCardAccount 创建一个单独的实例。此外，对系统来说，为每个出售的 Item 创建一个实例是不切实际的，因此从模型中删除了 Item，并改为由模型跟踪 LineItem 中订购的物品数量以及在新 <strong>ShippedItems</strong> 类中附带的物品数量。 </div>
<div align="left">架构师还定义业务层公开的服务间隔。对于本示例，业务层为 Account、UserAccount、Order、Shipment 和 Catalog 导出了 Create、Read、Update 和 Delete (CRUD) 服务。椭圆形指出了 CRUD 间隔。 </div>
<div align="left">请注意，即使本层次的类不是业务处理类的合适超集，架构师也可以通过直接改进业务处理类、将视角由系统外部更改为系统内部来实现这个设计。</div>
<div align="left">
<h3>物理抽象层次</h3>
</div>
<div align="left">物理抽象层次捕获系统实现的结构。系统作为一个节点的网络实现，每个节点都配置有硬件和软件。逻辑视图中的三个软件层（表示层、业务层和数据层）是以代码形式被物理实现，并部署到这些节点上。逻辑视图中的持久类物理存储在 SQL Server 数据库的关系表中。</div>
<div align="left">
<h4>动态视图</h4>
</div>
<div align="left">动态视图跟踪经过物理配置节点的消息流。ConfirmOrder HTTP post 从客户的浏览器通过 Internet 通过零售商的防火墙流动到 Web 服务器，在那里 Microsoft Windows 将其转发到 IIS，IIS 又将其传递到 Microsoft ASP.NET，然后 ASP.NET 调度 ConfirmOrder.aspx。幸运的是，现代开发工具将我们与多数物理网络隔离开来。但是，架构师需要了解物理层以避免网络瓶颈和安全暴露。 </div>
<div align="left">
<h4>静态视图</h4>
</div>
<div align="left">静态视图（<strong>图</strong><strong> 8</strong>）将逻辑视图中的持久类改进为其物理表示形式。在我们的零售示例中，业务层类存储在下列 SQL Server 表中。</div>
<div align="left">
<div style="width: 439px"><img border="0" alt="greatarchitect_fig8thumb" src="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/art/greatarchitect_fig8thumb.gif" width="439" height="287" /><br />
<p class="figureCaption"><strong>图</strong><strong> 8. </strong><strong>从零售商处在线购买物品的物理层次静态视图</strong></p>
<div class="figureRule"></div>
</div>
</div>
<div align="left">映射到关系表和属性的类作为列实现。一对一关系和一对多关系使用一个外键来实现。开放式并发通过给每个被&#8220;凝结&#8221;的父类分配一个 datetime 字段来实现。</div>
<div align="left">在设计逻辑层次时，架构师主要集中关注于实现系统功能。在确信包含了系统功能之后，架构师就能够专注于在物理层次优化实现。</div>
<div style="margin-top: 3px; margin-bottom: 10px" align="left"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#top"><img border="0" alt="返回页首" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif" width="7" height="9" /></a><a class="topOfPage" href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#top">返回页首</a></div>
<a name="EPAA"></a>
<div align="left">
<h2>通过迭代发展层次</h2>
</div>
<div align="left">建立了这个框架后，架构师通过几次迭代对解决方案加以发展。每次迭代都合并额外的功能 — 发票、待交定单、亲自订购、电话订购等等。在每种情况下，架构师都更新适当的抽象层次，然后将这些更新改进到物理实现层。</div>
<div style="margin-top: 3px; margin-bottom: 10px" align="left"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#top"><img border="0" alt="返回页首" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif" width="7" height="9" /></a><a class="topOfPage" href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#top">返回页首</a></div>
<a name="EMAA"></a>
<div align="left">
<h2>重访抽象层次核心原则</h2>
</div>
<div align="left">让我们对照核心抽象层次原则来测试我们的示例。 </div>
<div align="left">
<table border="0" cellspacing="0" cellpadding="0">
    <tbody>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p><strong>这些层次的数量和范围是定义完善的</strong>：我们有四个不同的层次：公司黑盒子、系统黑盒子、系统内的逻辑设计以及物理实现。 </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p><strong>每个层次内的多个视图：</strong>在这个简单示例中，我们在每个层次上展示了一个动态视图和静态视图。 </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p><strong>必须保持层次间的一致性：</strong>如果对域模型作出了更改，则更改也一定会影响到较低层次。举例来说，如果零售商决定为其产品提供维护合同，分析师就会将MaintenanceContract 添加到域模型，并将其改进为其物理表现形式。对于维护大型系统来说，同步所有层次是很重要的。因为提交了增强请求，所以分析师执行对相应细节层次的影响评估。一些增强请求影响域层次（并且因此影响所有后续层次）。其他请求只影响物理层次。 </p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</div>
<div style="margin-top: 3px; margin-bottom: 10px" align="left"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#top"><img border="0" alt="返回页首" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif" width="7" height="9" /></a><a class="topOfPage" href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#top">返回页首</a></div>
<a name="EJAA"></a>
<div align="left">
<h2>扩展层次以支持企业解决方案</h2>
</div>
<div align="left">既然我们已经展示了带有四个抽象层次的简单示例，现在就让我们扩展这个方法来支持 IT 企业的解决方案。<strong>图</strong><strong> 9</strong> 展示了一个 Rational 统一过程 (Rational Unified Process，RUP) 配置，它将项目产品组织到定义完善的抽象层次中。 </div>
<div align="left">表中的层次描述如下。</div>
<div align="left">
<div style="width: 438px"><img border="0" alt="greatarchitect_fig9thumb" src="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/art/greatarchitect_fig9thumb.gif" width="438" height="276" /><br />
<p class="figureCaption"><strong>图</strong><strong> 9. </strong><strong>将项目产品组织到定义完善的抽象层次中的</strong><strong> RUP </strong><strong>配置</strong></p>
<div class="figureRule"></div>
</div>
</div>
<div align="left">
<table border="0" cellspacing="0" cellpadding="0">
    <tbody>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p><strong>域</strong>。域层次捕获项目的业务环境。 </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p><strong>项目洞察力</strong>。项目洞察力对系统将会有的对企业的业务影响进行通讯。它以投资回报分析量化了这个影响。项目洞察力表示该项目的最高抽象层次。 </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p><strong>业务处理</strong>。系统层次为公司内的业务处理建模。对于极其复杂的单位来说，这个层次可以再细分到子层次：部门、部门间以及部门内。 </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p><strong>UI </strong><strong>规范</strong>。UI 规范设计了实现业务处理的用户界面。它是由 UI 设计文档和功能 UI 原型组成的。 </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p><strong>详细要求</strong>。详细要求指定了系统要求的最低层次抽象。它包括诸如数据类型格式和详细业务规则等详细信息。它还包括专业性要求，例如，性能、可用性、安全性、国际化、配置、可扩展性和灵活性要求等。 </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p><strong>体系结构</strong>。系统的体系结构被组织到六个视图中： </p>
            </div>
            <table border="0" cellspacing="0" cellpadding="0">
                <tbody>
                    <tr>
                        <td class="listBullet" valign="top">&#8226;</td>
                        <td class="listItem">
                        <div>
                        <p><strong>逻辑</strong>。定义软件层和执行系统功能的主要抽象。 </p>
                        </div>
                        </td>
                    </tr>
                    <tr>
                        <td class="listBullet" valign="top">&#8226;</td>
                        <td class="listItem">
                        <div>
                        <p><strong>并发</strong>。捕获系统的并行方面，包括交易、服务器场和资源争用。 </p>
                        </div>
                        </td>
                    </tr>
                    <tr>
                        <td class="listBullet" valign="top">&#8226;</td>
                        <td class="listItem">
                        <div>
                        <p><strong>安全性</strong>。定义用于身份验证、授权、保护机密和日志记录的方法。 </p>
                        </div>
                        </td>
                    </tr>
                    <tr>
                        <td class="listBullet" valign="top">&#8226;</td>
                        <td class="listItem">
                        <div>
                        <p><strong>部署</strong>。定义网络拓扑和系统的部署配置。 </p>
                        </div>
                        </td>
                    </tr>
                    <tr>
                        <td class="listBullet" valign="top">&#8226;</td>
                        <td class="listItem">
                        <div>
                        <p><strong>组件</strong>。定义系统组件、其接口以及依赖项。 </p>
                        </div>
                        </td>
                    </tr>
                    <tr>
                        <td class="listBullet" valign="top">&#8226;</td>
                        <td class="listItem">
                        <div>
                        <p><strong>数据</strong>。定义持久性数据的设计结构。 </p>
                        </div>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
</div>
<div style="margin-top: 3px; margin-bottom: 10px" align="left"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#top"><img border="0" alt="返回页首" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif" width="7" height="9" /></a><a class="topOfPage" href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#top">返回页首</a></div>
<a name="EIAA"></a>
<div align="left">
<h2>优点</h2>
</div>
<div align="left">将系统产品组织到离散的抽象层次有若干优点： </div>
<div align="left">
<table border="0" cellspacing="0" cellpadding="0">
    <tbody>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p>它将系统要求分离到三个不同的抽象层次：业务处理、UI 规范和详细要求。我们不会再用令企业用户感到不知所措的单个整体功能规范了。取而代之，我们在三个改进的详细层次中对系统要求进行通讯。 </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p>分析师和架构师可以将复杂性控制在一个单一的、集成的系统模型中。 </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p>架构师可以专注于系统的单个方面，并将那些决策集成到整个解决方案中。 </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p>抽象层次形成了系统产品的结构。举例来说，软件体系结构文档为每个视图专设了一个小节。 </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p>抽象层次提供从要求到设计再到实现的直接可跟踪能力。可跟踪能力使小组能够在评测更改请求时执行精确的影响评估。 </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p>在使用同一框架开发几个系统之后，会在每个抽象层次形成模式。单位可以编录这些模式和每个抽象层次内的其他最佳实践。这个最佳实践的目录会作为过程改进计划的基础。 </p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</div>
<div style="margin-top: 3px; margin-bottom: 10px" align="left"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#top"><img border="0" alt="返回页首" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif" width="7" height="9" /></a><a class="topOfPage" href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#top">返回页首</a></div>
<a name="EFAA"></a>
<div align="left">
<h2>小结</h2>
</div>
<div align="left">为了处理复杂性，所有工程学科都应用正式抽象层次。软件也不例外。为了实现抽象层次的优点，项目必须： </div>
<div align="left">
<table border="0" cellspacing="0" cellpadding="0">
    <tbody>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p>正式标识层次，每个层次都有定义完善的范围。 </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p>将一个层次内的复杂性分开到多个视图。 </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p>在层次间保持一致性。 </p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</div>
<div align="left">通过一个简单的示例，本文演示了如何应用抽象层次，然后将该方法扩展到支持企业 IT 解决方案。它提供了一个 RUP 配置框架，该框架将系统产品组织到定义完善的抽象层次。</div>
<div style="margin-top: 3px; margin-bottom: 10px" align="left"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#top"><img border="0" alt="返回页首" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif" width="7" height="9" /></a><a class="topOfPage" href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx#top">返回页首</a></div>
<a name="ECAA"></a>
<div align="left">
<h2>自我评估</h2>
</div>
<div align="left">
<table border="0" cellspacing="0" cellpadding="0">
    <tbody>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p>您当前的项目是否应用了抽象层次？ </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p>层次是否定义完善？ </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p>项目团队是否很好地理解了这些层次？ </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p>如果复杂性在一个层次中变得过大，团队是否将其分离到视图中呢？ </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p>团队是否在层次间保持一致性？ </p>
            </div>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&#8226;</td>
            <td class="listItem">
            <div>
            <p>您的项目会从抽象层次中获益吗？ </p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</div>
<div align="left">伟大的架构师本能地遵循这些原则。我们其余的人就必须有意识地应用抽象层次，并运用规则在整个项目生命周期中保持这些层次。</div>
<div align="left">
<h3>资源</h3>
</div>
<div align="left">Cockburn, Alistair. <em>Writing Effective Use Cases</em>. New Jersey: Addison-Wesley, 2001</div>
<div align="left">Kroll, Per and Kruchten, Philippe. <em>The Rational Unified Process Made Easy: A Practitioner's Guide to the RUP</em>. Boston MA: Pearson Education and Addison-Wesley, 2003</div>
<div align="left">DeMarco, Tom and Plauger, P J <em>Structured Analysis and System Specification</em>. Prentice Hall PTR, 1979</div>
<div align="left">要获得 DoD 标准 2167A 的联机副本，请访问 <a href="http://www2.umassd.edu/SWPI/DOD/MIL-STD-2167A/DOD2167A.html" target="_blank">http://www2.umassd.edu/SWPI/DOD/MIL-STD-2167A/DOD2167A.html</a>。</div>
<div align="left">
<h3>脚注</h3>
</div>
<div align="left">1 很多人已经成功地将抽象层次应用于软件。Ed Yourdon 和 Tom DeMarco 在 1979 年提出了结构化分析和结构化系统设计的概念。美国政府的许多分支机构标准化了 DoD 的 2167A 标准，它要求系统由有层次的硬件和软件配置项组成。DBA 社区经常应用细节层次为关系数据库建模。特别地，Bachman 工具集和 James Martin 的信息工程方法学 (Information Engineering Methodology，IEM) 先为数据库逻辑建模，然后再为其物理建模。在 Google 上键入&#8220;software levels of abstraction&#8221;进行搜索会返回若干个结果，但其中大多数来自于学术社区，而且其内容看起来集中在正式计算机语言方面。</div>
<div align="left">
<h3>关于作者 </h3>
</div>
<div align="left">Don Awalt 是 RDA Corporation 的创始人和 CEO，该公司是一家自定义软件工程公司，成立于 1988 年，在华盛顿特区、巴尔的摩、亚特兰大、费城和芝加哥都设有办事处。作为微软认证金牌伙伴 (Microsoft Gold Certified Partner)，该公司专注于使用 .NET Framework 开发企业 Web 和富客户端系统。Don 目前是 Microsoft 华盛顿特区的区域总监，他以前曾经担任费城首任区域总监。Don 经常在行业活动中演讲，这些活动包括 Tech Ed、Developer Days、MSDN 活动和各种 SQL Server 及 Windows 活动。他是 SQL Server Magazine 和 PC Tech Journal Magazine 的特约编辑，并且也为其它出版物撰写稿件。Don 所擅长的技术领域包括 Web 服务、SQL Server、现代编程语言的发展，以及在 Microsoft 的 Prescriptive Architecture Group (PAG) 中可以看到的许多体系结构和处理工作。可以通过 <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#65;&#87;&#65;&#76;&#84;&#64;&#114;&#100;&#97;&#99;&#111;&#114;&#112;&#46;&#99;&#111;&#109;"><em>AWALT@rdacorp.com</em></a> 联系到 Don。</div>
<div align="left">Rick McUmber 是 RDA 的质量和最佳实践总监。他为 IBM 和 Rational Software Corporation 一共工作了 11 年，致力于为美国运输部、国防部、NASA 和加拿大国防部开发系统。从 1994 年以来，他一直在 RDA 工作，致力于为其客户开发业务解决方案。可以通过 <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#77;&#99;&#85;&#109;&#98;&#101;&#114;&#64;&#114;&#100;&#97;&#99;&#111;&#114;&#112;&#46;&#99;&#111;&#109;"><em>McUmber@rdacorp.com</em></a> 联系到 Rick。</div>
<img src ="http://www.blogjava.net/Jack2007/aggbug/279007.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2009-05-30 13:06 <a href="http://www.blogjava.net/Jack2007/archive/2009/05/30/279007.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>属性驱动的架构设计方法图解【转载】</title><link>http://www.blogjava.net/Jack2007/archive/2009/05/30/278988.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sat, 30 May 2009 02:03:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2009/05/30/278988.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/278988.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2009/05/30/278988.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/278988.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/278988.html</trackback:ping><description><![CDATA[<a href="http://blog.csdn.net/Mr_JBean/archive/2008/12/21/3568373.aspx"><font color="#000000">原文地址：</font>http://blog.csdn.net/Mr_JBean/archive/2008/12/21/3568373.aspx</a><br />
<p>只是笔记存档，不建议阅读。与本图相关的文章：《软件构架实践，第2版》（<a href="http://book.csdn.net/hi/BookClub_BookDetails.aspx?id=21458" target="_blank">http://book.csdn.net/hi/BookClub_BookDetails.aspx?id=21458</a>）</p>
<p><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/Mr_JBean/EntryImages/20081222/无标题.jpg" /></p>
<p><a href="http://p.blog.csdn.net/images/p_blog_csdn_net/mr_jbean/470958/o_%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1%E6%80%9D%E8%B7%AF%20(2).jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="架构设计思路 (2)" border="0" alt="架构设计思路 (2)" src="http://p.blog.csdn.net/images/p_blog_csdn_net/mr_jbean/470958/o_%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1%E6%80%9D%E8%B7%AF%20(2)_thumb.jpg" width="729" height="1125" /></a></p>
<img src ="http://www.blogjava.net/Jack2007/aggbug/278988.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2009-05-30 10:03 <a href="http://www.blogjava.net/Jack2007/archive/2009/05/30/278988.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>浅议DAS、NAS、SAN三种存储架构[转载]</title><link>http://www.blogjava.net/Jack2007/archive/2009/04/20/266620.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Mon, 20 Apr 2009 14:18:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2009/04/20/266620.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/266620.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2009/04/20/266620.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/266620.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/266620.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 目前磁盘存储市场上，存储分类（如下表一）根据服务器类型分为：封闭系统的存储和开放系统的存储，封闭系统主要指大型机，AS400等服务器，开放系统指基于包括Windows、UNIX、Linux等操作系统的服务器；开放系统的存储分为：内置存储和外挂存储；开放系统的外挂存储根据连接的方式分为：直连式存储（Direct-Attached Storage，简称DAS）和网络化存储（Fabric-Attached Storage，简称FAS）；开放系统的网络化存储根据传输协议又分为：网络接入存储（Network-Attached Storage，简称NAS）和存储区域网络（Storage Area Network，简称SAN）。由于目前绝大部分用户采用的是开放系统，其外挂存储占有目前磁盘存储市场的70%以上，因此本文主要针对开放系统的外挂存储进行论述说明。 表一： [url=http://www.wangchao.net.cn/bbsdetail_1782308.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/121&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2009/04/20/266620.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/266620.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2009-04-20 22:18 <a href="http://www.blogjava.net/Jack2007/archive/2009/04/20/266620.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>海量数据处理汇总</title><link>http://www.blogjava.net/Jack2007/archive/2009/04/12/265075.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sun, 12 Apr 2009 01:17:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2009/04/12/265075.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/265075.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2009/04/12/265075.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/265075.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/265075.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2009/04/12/265075.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/265075.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2009-04-12 09:17 <a href="http://www.blogjava.net/Jack2007/archive/2009/04/12/265075.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>架构设计方法及实践</title><link>http://www.blogjava.net/Jack2007/archive/2009/03/03/257678.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Tue, 03 Mar 2009 15:45:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2009/03/03/257678.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/257678.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2009/03/03/257678.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/257678.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/257678.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 描述了一经典的架构设计过程，并在此基础上提出了四层驱动设计模型，在CKM项目中初次进行了实践，想看的可以下载看看&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2009/03/03/257678.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/257678.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2009-03-03 23:45 <a href="http://www.blogjava.net/Jack2007/archive/2009/03/03/257678.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件开发杂谈 001</title><link>http://www.blogjava.net/Jack2007/archive/2009/02/21/255986.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sat, 21 Feb 2009 13:48:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2009/02/21/255986.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/255986.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2009/02/21/255986.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/255986.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/255986.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 分层是软件架构的基本理论。任何软件在逻辑上都可以分层，也可以适当的映射到物理层次上，至于怎么分，分多少层，要不要分等要看你的软件领域（每个领域都有一些现成的架构模式可以参考，所谓领域架构），在拿到需求的时候我们习惯上进行水平和垂直的分割，其实分层技术也是一种基本的架构模式&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2009/02/21/255986.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/255986.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2009-02-21 21:48 <a href="http://www.blogjava.net/Jack2007/archive/2009/02/21/255986.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件架构中的层次依赖</title><link>http://www.blogjava.net/Jack2007/archive/2009/01/30/252746.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Fri, 30 Jan 2009 09:43:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2009/01/30/252746.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/252746.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2009/01/30/252746.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/252746.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/252746.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在描述大而复杂的软件中，最复杂的抽象层次就是软件架构。因此，在这个抽象层次我们能更好的理解构件组装原理和交互方式。软件架构被认为是软件开发方面的驱动力，他允许指定每层那些方面和模型需要依照架构来设计。早期的架构描述语言 ADL，比较独立，侧重结构抽象层次而忽略行为描述层次、观念层次和元模型层次。这篇文章描述了适当的“理性的”软件架构视图并用 C3 元模型描述（最小的并且完整的描述语言），我们提供了一个机制集合以处理不同层次的不同级别，我也提出了一新的用C3元模型描述的连接件的增强定义。&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2009/01/30/252746.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/252746.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2009-01-30 17:43 <a href="http://www.blogjava.net/Jack2007/archive/2009/01/30/252746.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>计算字符串相似度的简易算法</title><link>http://www.blogjava.net/Jack2007/archive/2009/01/19/251984.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Mon, 19 Jan 2009 15:53:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2009/01/19/251984.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/251984.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2009/01/19/251984.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/251984.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/251984.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最近设计知识管理系统的资源导入功能，为了尽量的做到组件化，方便扩展，方便其他模块使用。简化组件提供的和需要的接口，设计并实现了基于 Mapping 机制的导入框架。其中有一功能用到了计算两个字符串相似度的算法。&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2009/01/19/251984.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/251984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2009-01-19 23:53 <a href="http://www.blogjava.net/Jack2007/archive/2009/01/19/251984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>商务智能与知识管理对比分析</title><link>http://www.blogjava.net/Jack2007/archive/2009/01/13/251190.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Tue, 13 Jan 2009 14:03:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2009/01/13/251190.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/251190.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2009/01/13/251190.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/251190.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/251190.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 知识管理是伴随知识经济出现的一种创新管理，知识管理要综合运用战略、组织、流程、技术、变化等多种措施和管理工具，以富有效率的方式动员组织拥有的一切资源来实现其管理目标。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2009/01/13/251190.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/251190.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2009-01-13 22:03 <a href="http://www.blogjava.net/Jack2007/archive/2009/01/13/251190.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个基于可重用构件的软件开发过程模型[翻译]</title><link>http://www.blogjava.net/Jack2007/archive/2008/12/28/248726.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sun, 28 Dec 2008 05:31:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/12/28/248726.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/248726.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/12/28/248726.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/248726.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/248726.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 基于构件的开发（CBD）观念已广泛应用于软件开发中，便于构件的重用。众所周知的CBD体系结构有 ActiveX, CORBA, RMI以及 SOAP 等。文章主要通过与传统软件开发方法的比较研究支持基于CBD的实践，同时也评价了面向对象的过程模型以及提出了一种新型的基于 CBD 的软件开发过程模型，并探讨了仓储的重要概念。&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/12/28/248726.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/248726.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-12-28 13:31 <a href="http://www.blogjava.net/Jack2007/archive/2008/12/28/248726.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于软件体系结构和构件技术的开发过程</title><link>http://www.blogjava.net/Jack2007/archive/2008/12/27/248676.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sat, 27 Dec 2008 14:15:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/12/27/248676.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/248676.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/12/27/248676.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/248676.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/248676.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最大化的重用，在体系结构风格和构件方面形成了经验库，指导后续软件开发。可真正实现快速软件开发，特别是在特定领域中的应用！&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/12/27/248676.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/248676.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-12-27 22:15 <a href="http://www.blogjava.net/Jack2007/archive/2008/12/27/248676.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从建筑角度来看软件体系结构</title><link>http://www.blogjava.net/Jack2007/archive/2008/11/30/243560.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sun, 30 Nov 2008 12:35:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/11/30/243560.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/243560.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/11/30/243560.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/243560.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/243560.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这篇文章说的很好，和大家分享一下，可能一些实战的朋友并不喜欢这种理论的东西，可以不看，这篇文章把软件体系结构和建筑学类比，形象化了体系结构设计。文章提到算法和数据结构有扩张和取代SA的可能，个人觉得有点欠妥，算法和数据结构毕竟是解决细粒度的问题，而体系结构最初从算法和数据结构脱离出来，形成一抽象的分析层次，就是因为软件越来越复杂，单凭算法和数据是很难解决问题的。算法数据结构和体系结构应该是属于不同的层次解决不同的问题罢了。文章也提到了黑盒复用和白盒复用的概念，强调了软件体系结构设计的意义。不过个人并不同意“软件体系结构是一个高层次上的抽象，它并不涉及具体的系统结构（比如B/S还是C/S），也不关心具体的实现。”笔者这句话，B/S和C/S 其实是一种设计风格，是软件体系结构的设计模式，其实模式的目的就是重用。在实际的架构设计中你不仅要可虑体系结构设计风格、框架以及复用构件等等，你也要考虑实现的技术和关键点的决策，这些都是需要在开发前期确定的。所以软件体系结构是高层抽象是不关心实现，但是他要涉及到具体的系统结构。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/11/30/243560.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/243560.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-11-30 20:35 <a href="http://www.blogjava.net/Jack2007/archive/2008/11/30/243560.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>架构相关的论文（近期主要阅读）</title><link>http://www.blogjava.net/Jack2007/archive/2008/11/16/240827.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sun, 16 Nov 2008 08:34:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/11/16/240827.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/240827.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/11/16/240827.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/240827.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/240827.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 由于工作和学习的需要，强制自己这2到3个星期看完40篇论文&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/11/16/240827.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/240827.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-11-16 16:34 <a href="http://www.blogjava.net/Jack2007/archive/2008/11/16/240827.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>架构重构-好文分享</title><link>http://www.blogjava.net/Jack2007/archive/2008/11/16/240804.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sun, 16 Nov 2008 04:09:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/11/16/240804.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/240804.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/11/16/240804.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/240804.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/240804.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 当架构模型进行迭代的过程中，必然伴随着对模型进行修改和改进。我们如何防止对模型的修改，又如何保证对模型进行正确的改进？&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/11/16/240804.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/240804.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-11-16 12:09 <a href="http://www.blogjava.net/Jack2007/archive/2008/11/16/240804.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>架构中的分层技术</title><link>http://www.blogjava.net/Jack2007/archive/2008/11/14/240602.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Fri, 14 Nov 2008 13:14:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/11/14/240602.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/240602.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/11/14/240602.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/240602.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/240602.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 分层对现代的软件开发而言是非常重要的概念。也是我们必须学习的知识。分层的总体思路并没有什么特别的地方，但是要和自己的开发环境、应用环境结合起来，你还需要付出很多的努力才行。<br><br>在完成了分层之后，软件架构其实已经清晰化了。&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/11/14/240602.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/240602.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-11-14 21:14 <a href="http://www.blogjava.net/Jack2007/archive/2008/11/14/240602.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常见计算机类杂志投稿方式[转载]</title><link>http://www.blogjava.net/Jack2007/archive/2008/10/29/237406.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Wed, 29 Oct 2008 08:40:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/10/29/237406.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/237406.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/10/29/237406.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/237406.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/237406.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 常见计算机类杂志投稿方式&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/10/29/237406.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/237406.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-10-29 16:40 <a href="http://www.blogjava.net/Jack2007/archive/2008/10/29/237406.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网构软件-Internetware</title><link>http://www.blogjava.net/Jack2007/archive/2008/10/26/236644.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sat, 25 Oct 2008 16:00:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/10/26/236644.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/236644.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/10/26/236644.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/236644.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/236644.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/10/26/236644.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/236644.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-10-26 00:00 <a href="http://www.blogjava.net/Jack2007/archive/2008/10/26/236644.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Web应用开发方法研究</title><link>http://www.blogjava.net/Jack2007/archive/2008/10/18/235175.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sat, 18 Oct 2008 08:39:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/10/18/235175.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/235175.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/10/18/235175.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/235175.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/235175.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 目前，Web系统开发缺乏严格和系统的方法，大多数应用开发和管理实践在很大程度上依赖于开发人员个人的知识和经验，造成的后果是所开发的Web系统大多是低质量的产品。而传统的软件工程方法不能适应Web设计的要求，为此人们研究提出了众多的Web开发方法。这些研究旨在提供全面支持Web应用开发生命周期的模型和方法，但由于这些方法本身存在的局限性及其它方面的原因，还没有得到广泛的应用。论文首先讨论了成熟的Web开发方法应该具有什么样的特性和功能，然后分析了现有Web开发方法各自的特点，最后总结了这些方法所存在的问题和今后的研究重点。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/10/18/235175.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/235175.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-10-18 16:39 <a href="http://www.blogjava.net/Jack2007/archive/2008/10/18/235175.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>微软面试题---阶乘问题</title><link>http://www.blogjava.net/Jack2007/archive/2008/10/18/235152.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sat, 18 Oct 2008 04:05:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/10/18/235152.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/235152.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/10/18/235152.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/235152.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/235152.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:  阶乘是个很有意思的东西，可能很多朋友看到关于他的计算就怕了，其实没什么，看完下面两个问题您应该有低了。<br>        1.       给定一个 N ，求出N！末尾有多少个零，比如 N=10,N!=3628800,N!末尾有两个零。<br>2.       求N!的二进制表示中最低为1的位置，比如 11010010, 最低为1的位置为2。<br><br>问题一解法：<br><br>    在上一个 blog 中介绍的子数组乘积最大值的问题中，有朋友考虑到溢出的问题，在这个问题中，我们从那些数相乘能得到10这个命题开始思考。比如N！=K×10m那么N！后面就有m个零。这个问题转化为将N！进行分解，如N！=2a×3b×5c 很显然 10=2×5，那么零的个数m=min(a,c), 一个数能够被2整除的机率比5要大很多因此 m=c，因此转化为求 c的问题，具体算法如：<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/10/18/235152.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/235152.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-10-18 12:05 <a href="http://www.blogjava.net/Jack2007/archive/2008/10/18/235152.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>微软面试题---求子数组最大乘积问题</title><link>http://www.blogjava.net/Jack2007/archive/2008/10/17/234870.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Fri, 17 Oct 2008 04:43:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/10/17/234870.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/234870.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/10/17/234870.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/234870.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/234870.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 给定一个长度为N的整数数组，只允许用乘法，计算任意（N-1）个数的组合乘积中最大的一组，并<br>写出算法的时间复杂度。&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/10/17/234870.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/234870.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-10-17 12:43 <a href="http://www.blogjava.net/Jack2007/archive/2008/10/17/234870.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>微软面试题---求出1的个数之小解</title><link>http://www.blogjava.net/Jack2007/archive/2008/10/16/234742.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Thu, 16 Oct 2008 10:10:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/10/16/234742.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/234742.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/10/16/234742.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/234742.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/234742.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:  给定一个十进制数N，写下从1开始，到N的所有整数，然后数一下其中出现的所有"1"的个数。<br> 例如：<br> N=2，写下1，2。这样只出现了1个"1"<br> N=12,写下 1,2,3,4,5,6,7,8,9,10,11,12。这样"1"的个数是5<br> 请写出一个函数，返回1到N之间出现"1"的个数，比如 f(12)=5&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/10/16/234742.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/234742.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-10-16 18:10 <a href="http://www.blogjava.net/Jack2007/archive/2008/10/16/234742.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《怎样成为优秀的软件架构师》解析 （好文转载）</title><link>http://www.blogjava.net/Jack2007/archive/2008/10/15/234449.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Wed, 15 Oct 2008 07:01:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/10/15/234449.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/234449.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/10/15/234449.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/234449.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/234449.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 近来读了一篇《怎样成为优秀的软件模型设计者》的文章，感触颇深。仔细对比分析，发现原来我自己和周围的软件开发人员平常的一些自认为对的做法，有很多是有问题的。&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/10/15/234449.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/234449.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-10-15 15:01 <a href="http://www.blogjava.net/Jack2007/archive/2008/10/15/234449.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>可伸缩性最佳实践：来自eBay的经验（好文转载）</title><link>http://www.blogjava.net/Jack2007/archive/2008/10/12/233852.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sun, 12 Oct 2008 04:42:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/10/12/233852.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/233852.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/10/12/233852.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/233852.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/233852.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 可伸缩性有时候被叫做“非功能性需求”，言下之意是它与功能无关，也就比较不重要。这么说简直错到了极点。我的观点是，可伸缩性是功能的先决条件——优先级为0的需求，比一切需求的优先级都高。<br><br><br>希望以上最佳实践能对你有用，希望能帮助你从新的角度审视你的系统，无论其规模如何。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/10/12/233852.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/233852.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-10-12 12:42 <a href="http://www.blogjava.net/Jack2007/archive/2008/10/12/233852.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>