📄 systemmetaphor.html
字号:
<head><title>System Metaphor</title></head><body><h1><img src="logo.gif"> System Metaphor</h1>What <a href="ExtremeProgramming.html">ExtremeProgramming</a> (XP) uses instead of a formal architecture. A simple shared story of how the system works. This story typically involves a handful of classes and patterns that shape the core flow of the system being built.
<p><hr>
<p>Ask yourself, what more familiar things is this problem like? Is it really like ordering coffee from a fancy coffee machine? Is it really mostly like steering (tacking) a sailboat across a lake? driving from Toronto to Paris? (just to avoid the <a href="http://c2.com/cgi/wiki?AmericanCulturalAssumption">AmericanCulturalAssumption</a>)
<p><em>You mean Paris, Kentucky, right? :)</em>
<p>Surely the problem, at its core, is rather like something your team already knows how to experience. Uh, this may take some brainstorming... And, you then have to code up a <a href="SpikeSolution.html">SpikeSolution</a> to check whether the metaphor actually holds water for your problem (pardon the metaphor). --<a href="http://c2.com/cgi/wiki?AlistairCockburn">AlistairCockburn</a>
<p><hr>
<p>From the OOPSLA 97 paper (see: <a href="ExtremeArticle.html">ExtremeArticle</a>):
<p>''Chrysler is a manufacturing company; we make cars. Using a manufacturing metaphor to define the project was an important first step in getting the team (and management) on a level playing field. The concepts of
<strong>lines</strong>,
<strong>parts</strong>,
<strong>bins</strong>,
<strong>jobs</strong>, and
<strong>stations</strong> are metaphors understood throughout the company. The team had the benefit of a very rich domain model developed by members of the team in the project's first iteration. It gave the members of the project an edge in understanding an extremely complex domain.''
<p><hr>
<hr>
<p>As best I can discern from the limited description of <a href="SystemMetaphor.html">SystemMetaphor</a> here on the wiki, the <a href="SystemMetaphor.html">SystemMetaphor</a> only really describes the logical architecture of the system. The logical architecture is, in the case of OO systems, the most important classes and objects and how they interact. <a href="SystemMetaphor.html">SystemMetaphor</a> does not seem to address bigger architectural issues such as if the system should even be implemented using objects, the hardware component of architecture, the process and inter-process communication component of architecture, or the separation of the system into layers and/or components. I don't mean to suggest <a href="ExtremeProgramming.html">ExtremeProgramming</a> (XP) does not address some or all of these issues, it just isn't done in the <a href="SystemMetaphor.html">SystemMetaphor</a>.
<p><hr>
<p>Isn't the intent of the <a href="SystemMetaphor.html">SystemMetaphor</a> to improve communication among the entire team (customers and non-programmers included) by creating a common way for all to view the system, rather than just expressing an architecture to the programmers?
<p>"The system is a bakery" jives better than "The system interprets text as commands and executes them against builders that produce resultant objects and attach assorted decorators, sorting them via pipes and filters to the correct bins; the user can than browse and eat them as needed" -- <a href="http://c2.com/cgi/wiki?RodneyRyan">RodneyRyan</a>
<p><hr>
<p>In <a href="http://c2.com/cgi/wiki?ObjectOrientedSoftwareConstruction">ObjectOrientedSoftwareConstruction</a>, <a href="http://c2.com/cgi/wiki?BertrandMeyer">BertrandMeyer</a> points out that as powerful and useful as metaphors are, they can be dangerous. Specifically, if metaphors are taken too much at face value, one may mistakenly make "proofs by analogy":
<p><PRE> A resembles B
B has property p
Therefore A has property p
</PRE>Is there a danger in taking the <a href="SystemMetaphor.html">SystemMetaphor</a> too far and drawing false insights from it? If so, how does one know when the line is being crossed? --<a href="http://c2.com/cgi/wiki?TimVoght">TimVoght</a>
<p><em>The point is also made that the more compelling the metaphor, the greater the danger of crossing the line. -tv</em>
<hr>
<a href="http://c2.com/cgi/wiki?DesigningAnAuthenticationSystem">DesigningAnAuthenticationSystem</a> illustrates (by a story) how a <a href="SystemMetaphor.html">SystemMetaphor</a> can be used.
<hr>
The notion of <a href="SystemMetaphor.html">SystemMetaphor</a> is inescapable, since the system is always the MACHINE (See Michael Jackson's <em>Software Requirements and Specifications</em>) and the representation of the Application Domain is always a metaphor built over data and process physically represented by memory cells and a CPU. --<a href="http://c2.com/cgi/wiki?RaySchneider">RaySchneider</a>
<p><em>hmmm, I think we've lost sight of what a Metaphor really is. I believe a SystemModel<a href="http://c2.com/cgi/wiki?edit=SystemModel">?</a> is inescapable, but <a href="SystemMetaphor.html">SystemMetaphor</a> is not. Fundamentally all players in a system development will, as a bare minimum, be working with a <a href="http://c2.com/cgi/wiki?MentalModel">MentalModel</a> of the system, but to describe the system by analogy (the <a href="SystemMetaphor.html">SystemMetaphor</a>) is extra work that may or not be carried out (or required) (or useful)</em> -- PaulGallagher<a href="http://c2.com/cgi/wiki?edit=PaulGallagher">?</a>
<p><strong>See also:</strong> <a href="http://c2.com/cgi/wiki?AttributeBasedArchitecturalStyles">AttributeBasedArchitecturalStyles</a>, <a href="http://c2.com/cgi/wiki?ProblemFrame">ProblemFrame</a>, <a href="http://c2.com/cgi/wiki?EightSystemMetaphors">EightSystemMetaphors</a>, <a href="http://c2.com/cgi/wiki?MetaphorsWeLiveBy">MetaphorsWeLiveBy</a>
<p>=
<hr>
Can "J2EE Blueprints" be a system metaphor?
-- <a href="http://c2.com/cgi/wiki?JefNewsom">JefNewsom</a>
<hr>
<a href="http://c2.com/cgi/wiki?TopicGlossaryComputerScience">TopicGlossaryComputerScience</a> | <a href="http://c2.com/cgi/wiki?TopicGlossaryXp">TopicGlossaryXp</a><hr><a href="http://c2.com/cgi/wiki?edit=SystemMetaphor">EditText</a> of this page (last edited December 25, 2000)<br><a href="http://c2.com/cgi/wiki?FindPage&value=SystemMetaphor">FindPage</a> by browsing or searching<p><font color=gray size=-1>This page mirrored in <a href="index.html">ExtremeProgrammingRoadmap</a> as of March 31, 2001</font></body>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -