⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xpdoesdesign.html

📁 极限编程 Extream Programing
💻 HTML
字号:
<head><title>Xp Does Design</title></head><body><h1><img src="logo.gif"> Xp Does Design</h1><em>In <a href="DoesXpDoDesign.html">DoesXpDoDesign</a>, <a href="http://c2.com/cgi/wiki?AlistairCockburn">AlistairCockburn</a> says: &quot;I think there are some mixed messages about design and XP floating around wiki. I for one am confused as to what you mean to convey, and it appears there is quite some argumentation on pages where people have interpreted your words as being that XP means no design up front. &quot;</em>
<p>I see no real contradictions in any of the writings you refer, to, Alistair, and I didn't realize you were a lawyer. ;-&gt;  
<p><em>One doesn't have to be a lawyer to be confused. :-)  --Alistair</em>
<p>I did modify <a href="http://c2.com/cgi/wiki?DesignBeforeCode">DesignBeforeCode</a> to say: &quot;In the olden days, the rule was to <strong>do a lot of</strong> design before coding,&quot; which better expresses the starting idea on that page.  And I'll look at the other places to see whether they need fine tuning.
<p>We in XP are strongly opposed to <a href="BigDesignUpFront.html">BigDesignUpFront</a>, for at least these reasons:
<p><OL><li> It lengthens the time between when you think of some design component and when you find out how bad it is.  We aren't smart enough to design with as little feedback as <a href="BigDesignUpFront.html">BigDesignUpFront</a> provides.  
<p><li> It is wasteful of resources, in that you can [mostly] do without the effort and documentation that BDUF implies. We hold that you can design more effectively and less expensively by combining lightweight approaches like CRC,  early coding, and <a href="RefactorMercilessly.html">RefactorMercilessly</a>.
<p></OL>Rather than <a href="BigDesignUpFront.html">BigDesignUpFront</a>, design in XP is a tightly-integrated part of the day to day process.  We do as much or more design than other methodologies, because we do it every day.  And every day, there are a number of design aspects to the development of software that require different approaches:
<p><OL><li> We need a decent architecture for the system.  We refer to this as the &quot;metaphor&quot;.  The metaphor is a sketch of the key classes in the system and how they interact.  We expect to be able to define the metaphor in a few evocative paragraphs of text, and to describe it with around four classes.  It took us one day, if I recall correctly, to select the C3 metaphor from a menu of some 20 possibilities.  YMMV.
<p><li> Sometimes, when adding some new capability to the system, we may need to shape our thoughts around the new objects we will add and how they relate to the objects that are already there.  Similarly when refactoring for reliability, performance, or distribution.  In these cases, we use CRC.  Again, we would expect to be dealing with a small number of classes at a time, typically around four.  We assume that if we're dealing with more than that, that we haven't broken the problem down far enough.
<p><li> Often, when adding some new capability to the system, we can immediately &quot;see&quot; what needs to be done.  In C3, we have added so many transactions that most of us immediateley know we'll need a boundary, an input station, a processing station, a recon collection, and so on.  When the need is so clear, we recommend moving directly to coding.  This is not blind, stupid, idiotic coding, but experimental coding, with an eye to sensing what the objects really want to do.
<p></OL>In XP, <a href="TheSourceCodeIsTheDesign.html">TheSourceCodeIsTheDesign</a>.  We create very few other design artifacts: in the case of C3, we have done none for months, because the ones we did turned out to be useless.  To make this work, the source code needs to be kept very clean, and the heads of the developers have to be kept updated with very proactive communication.
<p><em>Do you think the design artifacts were useless in themselves, or was it because you needed tools to make them accessible? Can you conceive of any useful <a href="DesignToolsForXp.html">DesignToolsForXp</a> ? -- <a href="http://c2.com/cgi/wiki?JohnDaniels">JohnDaniels</a></em>
<p><em>On <a href="http://c2.com/cgi/wiki?DesignBeforeCoding">DesignBeforeCoding</a>, responding to, &quot;Doing zero design ... seems to be a bad idea&quot;, you write &quot;Why? What problem are you imagining will happen?&quot; but a few paragraphs down, &quot;In the first week of the project we considered several architecture.&quot; --<a href="http://c2.com/cgi/wiki?AlistairCockburn">AlistairCockburn</a> again, feeling there's a conflict in our ideas.</em>
<p>Actually, *I* said &quot;Doing zero design seems to be a bad idea&quot;, and *Kent* asked what problem I was imagining would happen.  Whether he was hitting me with a rolled-up newspaper or thinking I was someone else, I don't know.
<p>For sure, we do push on the design assumption coming from non XP people, where it implies lots of thinking, documents, long cycles, and so on.  We ask the question in that form because we so many of the problems addressed by BUFD are in fact imaginary.  When you think about what could go wrong, and when you are experienced in sensing what the code is telling you, you can do a better job with far less conventional design.  If CRC isn't conventional, you can do a better job with <em>no</em> conventional design.
<p>So anyway ... I don't see contradictions, though there surely isn't complete clarity, in the things I've said, or that Kent has said, on the pages you've mentioned.  If you still see some, please try again to draw them out.  A centralized statement of what XP believes and does not believe regarding design is started on <a href="DesignInXp.html">DesignInXp</a>.  These discussion pages are part of getting there, as we pull out of ourselves what we believe and teach. Thanks for your help in dragging us forward!
<p>--<a href="RonJeffries.html">RonJeffries</a><hr><a href="http://c2.com/cgi/wiki?edit=XpDoesDesign">EditText</a> of this page (last edited January 28, 1999)<br><a href="http://c2.com/cgi/wiki?FindPage&value=XpDoesDesign">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 + -