📄 xpdesign.html
字号:
<head><title>Xp Design</title></head><body><h1><img src="logo.gif"> Xp Design</h1>Our lead customer asked me yesterday, "In XP, who does the design?" I answered, "The team."
<p><a href="ExtremeProgramming.html">ExtremeProgramming</a> doesn't designate a role like Architect or Designer or Chief Cook And Bottle Washer. There is no final authority bearing all responsibility for design.
<p>"But wait," a critic cries. "It's obvious that some people are much better designers than others. Even more scary is that some are much worse. You can't just let everyone design their own stuff. Even with <a href="PairProgramming.html">PairProgramming</a>, you'll get a wide range of quality, and some of it will suck!"
<p>Right on, dude. It would be possible, perhaps, to get more code entered that way, but some of it would indeed, as our rough-hewn interlocutor suggests, be less than adequate. And in a big long-lived system, inadequate goes a long way. Remember the advice of the unnamed master: "Code rots".
<p>It is very important that all new development tasks, certainly those requiring new classes or changes in relationships between existing classes, begin with a bit of design. The team should sit around the table and do a CRC session to fix in their minds how the task is to be done.
<p>This process will provide the programmers with the best thoughts of the entire group. These will converge to something better than even the best designer would have produced.
<p>The effect is that all programmers are working with good, often great designs, which are custom-fitted to the situation.
<p>A warning, however. In the press of time, it's easy to get too busy to do CRC for things. A programmer may feel under pressure to get something done, or may be reluctant to interrupt other busy programmers. Everyone starts kind of keeping their head down so they won't see a face pining for help.
<p>Do not do it. You'll go from designs that are best of breed to mongrel unrelated designs that have not had the light of review shone upon them. <em>(Unmix <strong>that</strong> metaphor!)</em>
<p>Good design, done minimally, just in time, with CRC. An <a href="ExtremeProgramming.html">ExtremeProgramming</a> Best Practice.
<p><em>In the early days of describing XP here, the XP people were at pains to distinguish their practices from CRC. It was even suggested that XP could be done without CRC at all. Of course no one ever explained how ... so is it now fair to say that CRC is central to XP, or is that still going too far?</em>
<p>Where do we say that? I'll take a look at it and see what I think. --rj
<p><hr>
<p>I am new to <a href="ExtremeProgramming.html">ExtremeProgramming</a> (a recent convert) and I'd like to propose
a way of doing this, namely <a href="http://c2.com/cgi/wiki?DesignInIdl">DesignInIdl</a> - <a href="http://c2.com/cgi/wiki?EwanBirney">EwanBirney</a>
<p><hr>
<p>Where does this leave what <a href="http://c2.com/cgi/wiki?FredBrooks">FredBrooks</a> calls <a href="http://c2.com/cgi/wiki?ConceptualIntegrity">ConceptualIntegrity</a>? Most often, <a href="http://c2.com/cgi/wiki?ConceptualIntegrity">ConceptualIntegrity</a> is achieved by the design proceeding from a single mind. Each compromise (required when many people design and there is <em>no vision</em>) dillutes a system's conceptual integrity. See: <a href="http://c2.com/cgi/wiki?DesignByCommittee">DesignByCommittee</a> --<a href="http://c2.com/cgi/wiki?RobertDiFalco">RobertDiFalco</a>
<p><em>On the <a href="http://c2.com/cgi/wiki?ConceptualIntegrity">ConceptualIntegrity</a> page it says that, 'a system must have a powerful metaphor that is uniformly applied throughout a system'. XP espouses the <a href="SystemMetaphor.html">SystemMetaphor</a> to maintain integrity. Its one of the practices.</em> --<a href="http://c2.com/cgi/wiki?TomAyerst">TomAyerst</a>
<p><em>No one is recommending design by committee for XP, and no one is recommending design "compromises". Perhaps you have never experienced effective teamwork in the design area. As a somewhat expert designer, I find that my designs are improved by exposing them to the ideas of others. I'm pretty smart, but I'm not as smart as me + someone else; most ANYONE else. --<a href="RonJeffries.html">RonJeffries</a></em>
<p>On the contrary, some of my best design experiences have been with teams. However, on large projects, I will have a design team that is smaller than the overall group and I or someone else will always have ultimate say. I don't care if its me, just as long as it is someone. This prevents us all from seeking our lowest point. On ''really' large projects, I might have a design lead (or focus group) for each domain. With a small team, you can often have the whole team work on design refactoring or initial brainstorming. BTW, I want to point out something you just wrote...
<p><DL><dt> <dd>I find that <em>my designs</em> are improved by exposing them to the ideas of others. (emphasis mine)
<p></DL>You are, albeit subtlely and maybe subconsciously, asserting a sense of ownership and further implying an initial (singular) design that was <em>then</em> refactored and improved by a group. This sense of single ownership keeps the <a href="http://c2.com/cgi/wiki?ConceptualIntegrity">ConceptualIntegrity</a> of the design. This actually agrees with the intent of my post, don't you think? I don't think I have said anything against working on Design as a Team -- in practice I require it. What I have responded to is the quote at the top of the page that says "<em>There is no final authority bearing all responsibility for design</em>". I still think this is <em>too extreme</em> a response to egoism and can be bad for <a href="http://c2.com/cgi/wiki?ConceptualIntegrity">ConceptualIntegrity</a>. Regardless of what one calls it and regardless of how many 100's of people one decides to involve in the design process, it is nice to have an <a href="http://c2.com/cgi/wiki?ArchitectAsKeeperOfTheFlame">ArchitectAsKeeperOfTheFlame</a>. --<a href="http://c2.com/cgi/wiki?RobertDiFalco">RobertDiFalco</a>
<p>See <a href="DoesXpDoDesign.html">DoesXpDoDesign</a>, <a href="XpDoesDesign.html">XpDoesDesign</a><hr><a href="http://c2.com/cgi/wiki?edit=XpDesign">EditText</a> of this page (last edited June 14, 2000)<br><a href="http://c2.com/cgi/wiki?FindPage&value=XpDesign">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 + -