Je dizajn mŕtvy?

Original: http://martinfowler.com/articles/designDead.html

Pre mnohých že krátko prísť do styku s Extrémne Programovanie, zdá sa, že XP vyzýva na smrť návrhu softvéru. Nie je to len je oveľa projektová činnosť zosmiešňovaný ako "Big Up Front Design", ale také konštrukčné techniky ako je UML, flexibilné rámca, a dokonca aj vzory sú de-zdôraznený alebo vyslovene ignorovaná. V skutočnosti XP zahŕňa mnoho prevedení, ale že nie iným spôsobom, než ako sa zistilo softvérových procesov. XP sa zotavil predstavu evolučného návrhu s praktikami, ktoré umožňujú evolúcie, aby sa stala životaschopnou návrh stratégie. Poskytuje tiež nové výzvy a zručnosti návrhári potrebujú naučiť, ako urobiť jednoduchú konštrukciu, ako používať refaktorování, aby návrh v čistote, a ako používať vzory v evolučnom štýle.


Obsah

Plánované a Evolučnej Dizajn
Splnomocňujúce Praktiky XP
Hodnota Jednoduchosti
Čo na Zemi je Jednoduchosť Rovnako
Má refaktoring porušovať YAGNI?
Vzory a XP
Rastúce Architektúru
UML a XP
Na Metafora
Chceš byť Architekt, až vyrastieš?
Reverzibilita
Vôľa Navrhnúť
Veci, ktoré sú ťažko refaktorovat
Je Designu Deje?
Takže je Návrh Mŕtva?


Extrémne Programovanie (XP) napáda veľa spoločných predpokladov o vývoji softvéru. Z nich jeden z najkontroverznejších je jej odmietnutie významné úsilie v up-front dizajnu, v prospech viacerých evolučného prístupu. K jeho kritikom sa jedná o návrat k "kódu a opraviť" Rozvoj - obvykle posmieval sa ako hacking. K jeho fanúšikov to je často videný ako odmietnutie konštrukčných techník (ako je UML), princípy a vzory. Nebojte sa o dizajn, keď budete načúvať kódu objavia dobrý dizajn.

Sa ocitám v stredu tohto argumentu. Veľká časť mojej kariéry bola zapojená grafický dizajn jazykov - Unified Modeling Language (UML) a jeho predchodca - a vo vzoroch. V skutočnosti som napísal knihy na oboch UML a vzory. Má moje objatie XP povedať, že odvolať všetko, čo som napísal o týchto predmetoch, čistiace moju myseľ všetkých týchto kontrarevolučných predstáv?

No Nebudem očakávať, že vám môžem nechať visieť na háku dramatické napätie. Stručná odpoveď znie nie. Dlhšie odpoveď je zvyšok tohto dokumentu.

Plánované a Evolučnej Dizajn

Z tohto príspevku budem popisovať dva štýly, ako je konštrukcia vykonaná vo vývoji softvéru. Snáď najčastejšou je evolučná návrh. V podstate evolučný návrh znamená, že návrh systému rastie, ako je implementovaný systém. Dizajn je súčasťou procesu programovania a ako program vyvíja konštrukčné zmeny.

Vo svojom bežnom zvyku, evolučnej návrh je katastrofa. Konštrukcia skončí byť agregácie banda ad-hoc taktické rozhodovanie, z ktorých každý robí kód ťažšie zmeniť. V mnohých spôsobov, ako by mohol namietnuť, to nie je dizajn, iste to zvyčajne vedie k zlému dizajnu. Ako to Kent hovorí, dizajn je tu, aby vám umožní neustále mení softvér ľahko v dlhodobom horizonte. Ako vzor sa zhoršuje, takže sa vaša schopnosť efektívne vykonávať zmeny. Máte stav softvéru entropie v priebehu času dizajn dostane horšie a horšie. Nielen to, aby sa softvér ťažšie zmeniť, to tiež robí chyby jednoduchšie na chov a ťažšie nájsť a bezpečne zabiť. Jedná sa o "kód a opraviť" nočná mora, kde sa hmyz stáva exponenciálne drahšie opraviť, ako projekt pokračuje.

Plánované Design je proti tomu a obsahuje pojem narodené od ostatných strojárskych odboroch. Ak chcete postaviť psia búda, môžete len získať nejaké drevo dohromady a získať hrubý tvar. Ak však chcete postaviť mrakodrap, nemôžete pracovať týmto spôsobom - to bude len zbaliť ešte predtým, než dostanete na pol cesty hore. Takže začnete s technických výkresov, podpísaná v inžinierske kancelárii ako tá moja žena pracuje v v centre Bostone. Keď sa robí dizajn ona vyrieši všetky problémy, čiastočne matematickej analýzy, ale väčšinou pomocou stavebných predpisov. Stavebné kódy sú pravidlá o tom, ako navrhnúť štruktúry na základe skúseností, čo funguje (a niektoré základné matematiky). Akonáhle je dizajn je hotovo, potom sa jej inžinierska firma môže odovzdať návrh off na inú spoločnosť, ktorá buduje.

Plánovaný návrh v oblasti softvéru by mal fungovať rovnakým spôsobom. Návrhári vymyslieť veľkých otázok v predstihu. Nepotrebujú písať kód, pretože nie sú stavebné softvér, sú to projektovanie. Aby mohli používať konštrukčné techniku, ako je UML, ktorý dostane od niektoré detaily programovania a umožňuje návrhárom pracovať na viac abstraktné úrovni. Akonáhle je dizajn je vykonané môžu odovzdať ho do samostatnej skupiny (alebo dokonca samostatné spoločnosti) s cieľom vybudovať. Vzhľadom na to, že návrhári myslí vo väčšom meradle, môžu sa vyhnúť rad taktických rozhodnutí, ktoré vedú k softvéru entropia. Programátori môžu sledovať smer dizajnu a za predpokladu, že nasledovať návrh, majú dobre postavený systém

Teraz je plánovaný prístup k dizajnu bol asi od 70. rokov, a veľa ľudí ju používa. Je lepšie v mnohých ohľadoch ako kód a opraviť evolučnej dizajn. Ale má niektoré nedostatky. Prvá chyba je, že je nemožné si myslieť, cez všetky problémy, ktoré je potrebné riešiť, keď ste programovanie. Takže je to nevyhnutné, že pri programovaní nájdete veci, ktoré spochybňujú dizajn. Avšak, ak sa vykonáva návrhári, presunutý do iného projektu, čo sa stane? Programátori začať písať kód okolo dizajnu a entropia sád v. Aj keď je návrhár nešlo, to si vyžaduje určitý čas vyriešiť problémy návrhu, zmena kresby a potom zmeniť kód. Tam je zvyčajne rýchlejší opravu a časový tlak. Teda entropia (opäť).

Okrem toho tam je často kultúrny problém. Návrhári sú vyrobené návrhárom kvôli zručnosti a skúsenosti, ale oni sú tak zaneprázdnení pracuje na návrhoch sa im nedostáva veľa času na kód nič viac. Avšak nástroje a materiály zmeny vývoja softvéru rýchlym tempom. Keď už kódu a to nielen môžete prísť o zmenách, ktoré sa vyskytujú u tohto toku, môžete tiež stratiť rešpekt tých, ktorí kód.

Toto napätie medzi stavebníkmi a projektantov sa deje v dome taky, ale je to intenzívnejšie v softvéri. Je to intenzívne, pretože tam je hlavný rozdiel. V budove je jasnejšie rozdelenie do zručností medzi tými, ktorí navrhnúť a tí, ktorí stavať, ale v softvéri, ktorý je menej tento prípad. Akékoľvek programátor pracujúci vo vysokých dizajnových prostredí musí byť veľmi zručný. zručný dosť pochybovať návrhy projektanta, zvlášť keď projektant je menšia vedomosti o každodennú realitu vývojovú platformu.

Teraz by mohla byť stanovená tieto problémy. Možno by sme mohli vysporiadať s ľudským napätím. Možno by sme mohli dostať návrhárom dostatočne zručný, aby si poradiť s väčšinou záležitosťou a používať postup disciplinovaný dosť pre zmenu výkresov. Je tu ešte ďalší problém: meniacim sa požiadavkám. Meniace sa požiadavky sú číslo jedna veľký problém, ktorý spôsobuje bolesti hlavy v softvérových projektoch, ktoré som naraziť.

Jeden spôsob, ako sa vysporiadať s meniacimi sa požiadavkami je vybudovať flexibilitu do konštrukcie tak, aby ho bolo možné ľahko zmeniť, ako sa menia požiadavky. To však vyžaduje vhľad do Aké zmeny očakávate. Dizajn môže byť plánovaná vysporiadať s oblasťami volatilitou, ale zároveň, že pomôže k predpokladanej zmeny požiadaviek, nebude to pomôže (a môže ublížiť) pre nepredvídateľné zmeny. Takže musíte pochopiť požiadavky dosť dobre oddeliť nestabilných oblastí, a môj postreh je, že je to veľmi ťažké.

Teraz niektoré z týchto problémov požiadavky sú spôsobené nie rozumieť požiadavkám dostatočne jasne. Takže mnoho ľudí sa zameriavajú na požiadavky technických procesov získať lepšie podmienky v nádeji, že to bude zabrániť potrebu zmeniť návrh neskôr. Ale aj tento smer je ten, ktorý nesmie viesť k vyliečeniu. Mnoho nepredvídateľné požiadavky na zmeny nastávajú v dôsledku zmien v podnikaní. Tí, nedá zabrániť, ale starostlivé vaše požiadavky konštrukčné proces.

Takže to všetko robí plánovanej podoby znieť nemožné. Iste sú veľké výzvy. Ale nie som naklonený tvrdiť, že plánovaná konštrukcia je horší ako evolučného návrhu, ako sa najčastejšie realizovaná v "kóde a opraviť" spôsobom. V skutočnosti som radšej plánoval dizajn do "kódu a opraviť". Avšak som si vedomý problémov plánovanej podoby a som hľadajú nový smer.

Splnomocňujúce Praktiky XP

XP je sporná z mnohých dôvodov, ale jeden z kľúčových červenými vlajkami XP je to, že presadzuje evolučná dizajn skôr než plánovaný dizajn. Ako vieme, evolučné návrh nemôže fungovať kvôli rozhodnutiu ad hoc projekt a softvér entropia.

Jadrom pochopenie tohto tvrdenia je zmena softvér krivka. Zmena Krivka hovorí, že ako projekt beží, to stane sa exponenciálne drahšie vykonať zmeny. Zmena krivka je zvyčajne vyjadrená fázou "zmeny vykonané v analýze $ 1 bude stáť tisíce opraviť vo výrobe". To je ironické, pretože väčšina projektov stále pracovať v procese ad-hoc, ktorá nemá k fáze analýzy, ale umocňovanie je tam stále. Exponenciálny zmena krivky znamená, že evolučná návrh nemôže fungovať. To tiež sprostredkuje prečo plánované usporiadanie musí byť vykonané opatrne, pretože prípadné chyby v plánovanej podoby čelí rovnakému umocňovanie.

Základným predpokladom je základom XP je, že je možné sploštiť na zmenu krivky natoľko, aby sa evolučnej projekčné práce. Táto sploštenie ako povolený XP a využívaný XP. Jedná sa o časť spojky z praktík XP: konkrétne nemôžete robiť tie časti XP, ktoré využívajú sploštené krivky, bez robili tie veci, ktoré umožňujú sploštenie. Ide o spoločný zdroj spore XP. Mnohí ľudia kritizujú zneužívanie bez pochopenia, že sprostredkovací. Často Týkala sa kritikov vlastných skúseností, kde sa nerobil umožňujúce postupov, ktoré umožňujú vykorisťovateľské praktiky do práce. V dôsledku toho spálil, a keď vidí XP si pamätajú oheň.

Existuje mnoho diely na aktivačných postupov. V jadre sú postupy testovania a Kontinuálne integrácie. Bez bezpečnosti stanovené testovanie zvyšok XP by bolo nemožné. Kontinuálne integrácie je nutné udržať tím v synchronizáciu, takže môžete vykonať zmenu, a nie mať strach o integráciu s inými ľuďmi. Dohromady tieto praktiky môžu mať veľký vplyv na krivke zmien. Spomenul som si to opäť tu na ThoughtWorks. Predstavenie testovanie a kontinuálne integrácie mal výrazné zlepšenie oproti vývojového úsilia. iste dosť vážne spochybňujú XP tvrdenie, že budete potrebovať všetky postupy získať veľké zlepšenie.

Refaktorování má podobný účinok. Ľudia, ktorí Refaktor svoj kód v disciplinované, ktorý XP nájsť výrazný rozdiel v ich efektívnosti v porovnaní s tým voľnejšie, viac reštrukturalizácia ad-hoc. To bolo určite moja skúsenosť raz Kent ma naučila správne refaktorovat. Koniec koncov, by len taká silná zmena ma motivovalo, aby som napísať celú knihu o tom.

Jim Highsmith, v jeho vynikajúce zhrnutie XP, používa analógiu sady mierok. V je vybavený jedným zásobníkom plánovanej podoby, druhý je refaktorování. Vo viac tradičných prístupov plánovanej konštrukcie dominuje, pretože je predpoklad, že nemôžete zmeniť svoj názor neskôr. Vzhľadom k tomu, náklady na zmeny znižuje potom môžete urobiť viac vášho návrhu neskôr ako refaktoring. Plánovaná konštrukcia nezmizne úplne, ale teraz existuje rovnováha dvoch dizajnových prístupov s ním pracovať. Pre mňa to vyzerá, že pred refaktoroval som robil celý svoj návrh jednou rukou.

Tieto praktiky umožňujú nepretržité integrácie, testovanie a refactoring, poskytujú nové prostredie, ktoré umožňuje evolučné návrh prijateľný. Avšak jedna vec, ktorú sme doteraz prišiel na to, ak je zostatok bod. Som si istý, že napriek vonkajším dojmom, XP nie je len test, kód a Refactor. Je tu priestor pre projektovanie pred kódovanie. Čiastočne je to skôr, ako existuje kódovanie, väčšina z nich sa vyskytuje v iterácií pred kódovanie pre určitú úlohu. Ale je tu nová rovnováha medzi up-dizajnu prednej časti vozidla a refaktoring.

Hodnota Jednoduchosti

Dva najväčšie rely plače XP sú slogany "Urob tá najjednoduchšia vec, ktoré by mohli prácu" a "Nie ste bude potrebovať It" (známy ako YAGNI). Obaja sú prejavy praxe XP jednoduchý dizajn.

Spôsob, akým yagna je zvyčajne popisovaný, hovorí, že by ste nemali pridať ľubovoľný kód dnes, ktorá bude použitá len funkciu, ktorá je potrebná zajtra. Na prvý pohľad to znie jednoducho. Problém je dodávaný s takými vecami ako rámcov, opakovane použiteľných komponentov a flexibilného dizajnu. Takéto veci sú zložité stavať. Platíte navyše počiatočné náklady na ich vybudovanie, v očakávaní, že budete získať späť, že náklady na neskôr. Táto myšlienka budovania flexibilitu up-front je vnímaný ako kľúčovú súčasť efektívneho návrhu softvéru.

Avšak rada xp je, že nebude stavať flexibilné komponenty a rámcov pre prvý prípad, ktorý potrebuje túto funkciu. Nech tieto štruktúry rastú, keď sú potrebné. Ak chcem triedu Money Dnes, ktorý spracováva sčítanie, ale nie násobenie potom som stavať iba prírastok do triedy Money. Dokonca aj keď som si istý, že budem potrebovať množenie v nasledujúcej iterácii, a pochopiť, ako to urobiť jednoducho, a myslím, že to bude naozaj rýchlo robiť, budem aj naďalej ponechať do tej nasledujúcej iterácii.

Jedným z dôvodov pre to je ekonomický. Ak budem musieť robiť žiadnu prácu, ktorá sa používa iba na funkciu, ktorá je potrebná zajtra, to znamená, že stratí úsilia z prvkov, ktoré je potrebné urobiť pre túto iteráciu. Plán uvoľnenia hovorí, čo je potrebné pracoval na teraz pracuje na iné veci v budúcnosti, je v rozpore s dohodou o vývojárovi so zákazníkom. Existuje riziko, že príbehy iterácii sa nemusí stihnúť. Dokonca aj keď príbehy iterácii sú nie je v ohrození je na zákazníkovi, aby rozhodol, aké ďalšie práce by malo byť vykonané - a to možno ešte nezahŕňajú násobenie.

Táto ekonomická prekážka je ešte umocnený náhodou, že sme sa nemusí to dopadnúť dobre. Avšak istá, že môže byť o tom, ako táto funkcia funguje, môžeme ešte dostať to zle - najmä preto, že nemáme podrobnejšie požiadavky doteraz. Práca na zlé riešenie čoskoro je ešte nehospodárne než pracovať na správne riešenie čoskoro. A Xperts všeobecne verí, že sme oveľa pravdepodobnejšie, že bude zle, ako je právo (a s tým sentimentom Súhlasím).

Druhým dôvodom pre jednoduché konštrukcie je to, že zložitá konštrukcia je ťažké pochopiť, ako jednoduchej konštrukcie. Preto každá modifikácie systému sa robí ťažšie zvýšením zložitosti. To pridáva náklady v čase medzi okamihom, kedy bol pridaný zložitejšie konštrukcie, a keď to bolo potrebné.

Práve táto rada zasiahne mnoho ľudí ako nezmysel, a majú pravdu, aby si myslia, že. Pravá za predpokladu, že si predstaviť, že obvyklý vývoj svete, kde umožňujúci praktiky XP nie sú na svojom mieste. Avšak keď rovnováha medzi plánovanými a evolučnej návrh oltárov, potom yagna stáva najlepších postupov (a len vtedy).

Takže zhrnúť. Vy nechcete stráviť úsilie pridanie nové funkcie, ktoré nebudú potrebné, aby budúce iterácie. A aj keď cena je nulová, stále nechcú pridať, pretože to zvyšuje náklady na úpravy, aj keď to nič nestojí, aby v. Avšak je možné len rozumne správať týmto spôsobom, ak používate XP alebo podobnú technika, ktorá znižuje náklady na zmenu.

Čo na Zemi je Jednoduchosť Rovnako

Takže chceme, aby náš kód byť tak jednoduché, ako je to možné. To neznie ako to je príliš ťažké argumentovať pre, po tom všetkom, ktorí chcú byť zložité? Ale samozrejme to vyvoláva otázku "čo je jednoduché?"

V XPE Kent dáva štyri kritériá pre jednoduchý systém. Za účelom (najdôležitejšie prvé):

  • Spustí všetky testy
  • žiadne duplikácia
  • Odhalí všetky zámer
  • Najmenší počet tried alebo metód

Beh všetky testy je celkom jednoduchý kritériom. Žiadne duplikácia je tiež celkom jednoduché, aj keď veľa vývojári potrebujú návod, ako to dosiahnuť. Najťažšie z nich má čo do činenia s odhaľujúce zámer. Čo presne to znamená?

Základná hodnota je tu zrozumiteľnosť kódu. XP kladie veľký dôraz na kód, ktorý je ľahko prečítať. V XP "chytré kódu" je nadávka. Ale zámer odhaľujúce kód niektorých ľudí je iný je chytrosť.

Vo svojom príspevku XP 2000, Josh Kerievsky poukazuje na dobrý príklad tohto. Pozerá sa na možno najviac verejné XP kódu zo všetkých - JUnit. JUnit používa maliari pridať voliteľnou funkcií do testovacích prípadov, také veci ako je synchronizácia súbežnosť a dávky nastavený kód. Oddelením tento kód do dekoratérov, že umožňuje všeobecný kód byť jasnejšie, než by inak bolo.

Ale to sa musíte spýtať sami seba, či výsledný kód je naozaj jednoduchá. Pre mňa to je, ale potom som oboznámený so vzorom dekoratéra. Ale pre mnohých, ktoré nie sú to celkom zložité. Podobne JUnit využíva zásuvné metódy, ktoré som si všimol, že väčšina ľudí spočiatku nájsť nič iné než jasné. Takže môžeme konštatovať, že JUnit dizajn je jednoduchšie pre skúsených dizajnérov, ale zložitejšie pre menej skúsených ľudí?

Domnievam sa, že zameranie na odstránenie prekrývania činností, a to ako s XP je "iba raz" a pragmatického programátora suché (urob nie je Repeat) je jedným z tých zrejmých a úžasne mocných kúsky dobrých rád. Len nasledujúceho to samo o sebe vám môže trvať dlhú cestu. Ale to nie je všetko, a jednoduchosť je stále komplikovaná vec nájsť.

Nedávno som bol zapojený v tom niečo, čo môže dobre byť over-navrhnutý. Sa dostal refactored a niektoré z flexibility bola odstránená. Ale ako jeden z vývojárov povedal: "je to jednoduchšie refaktorovat nad-design, než je refaktorovat žiaden návrh." Je lepšie byť trochu jednoduchšie, než budete musieť byť, ale nie je to katastrofa byť trochu zložitejšie.

Najlepšia rada, ktorú som počul na to všetko prišiel z Uncle Bob (Robert Martin). Jeho rada bola, aby sa nedostala príliš zavesil čo najjednoduchšie dizajn. Koniec koncov je to možné, mali a bude ju Refactor neskôr. Na konci ochota refaktorovat je oveľa dôležitejšie ako vedieť, čo tá najjednoduchšia vec je hneď.

Má refaktoring porušovať YAGNI?

Táto téma prišiel na XP mailing listu v poslednej dobe, a stojí za to prinášať tak, ako sa pozeráme na úlohu dizajnu v XP.

V podstate otázka, začína v mieste, ktoré refaktorování potrebuje čas, ale nepridáva funkciu. Vzhľadom k tomu, bod yagna je to, že ste mal navrhnúť za to, že súčasná do budúcnosti, je to porušenie?

Bodom yagna je, že nepridáte zložitosť, ktorá nie je potrebný pre súčasné príbehy. To je súčasťou praxe jednoduchej konštrukcie. Refaktoring je potreba zachovať dizajn tak jednoduché, ako je to možné, takže by ste mali refaktorovat vždy, keď si uvedomíte, že môžete robiť veci jednoduchšie.

Jednoduchý dizajn obaja využíva XP praktiky a je tiež umožňuje praxe. Iba vtedy, ak máte testovanie, kontinuálne integráciu a refaktoring môžete precvičiť jednoduchý dizajn efektívne. Ale zároveň udržať navrhovať jednoduché je zásadné pre udržanie zmena krivky byt. Akékoľvek nepotrebné zložitosť je systém horšie zmena vo všetkých smeroch, s výnimkou tej, ktorú predvídať s komplexnou flexibilitou ste vložili dovnútra. Ale ľudia nie sú dobrí v predvídanie, takže je najlepšie usilovať o jednoduchosť. Avšak ľudia nebudú mať tá najjednoduchšia vec prvýkrát, takže je potrebné refaktorovat s cieľom dostať sa bližšie k cieľu.

Vzory a XP

Príklad JUnit ma vedie nevyhnutne do vychovávať vzory. Vzťah medzi vzormi a XP je zaujímavý, a to je častá otázka. Joshua Kerievsky tvrdí, že vzory nie sú dostatočne zdôraznené v XP a on robí argument výrečne, takže nechcem opakovať, že. Ale je dobré mať na pamäti, že pre mnoho ľudí vzory zdať v rozpore s XP.

Podstatou tohto argumentu je, že vzory sú často viac než použiť. Svet je plný legendárny programátor, čerstvé zo svojho prvého čítania GOF ktorý zahŕňa šestnásť vzoriek v 32 riadkov kódu. Spomínam si na jeden večer, ktoré stoja na veľmi peknom single malt, pretekajúci s Kent papier byť nazývaný "Nie návrhových vzorov: 23 lacné triky" Boli sme na mysli také veci, ako použiť if skôr než stratégie. Vtip mal pravdu, vzory sú často nadužívaniu, ale to neznamená, že je zlý nápad. Otázkou je, ako ich používate.

Jedna teória je to, že sily jednoduchým dizajnom vás zavedie do vzorov. Mnoho refaktorování to výslovne, ale aj bez nich podľa nasledujúcich pravidiel jednoduchým dizajnom budete prísť s vzormi, aj keď ich nepoznáte už. To môže byť pravda, ale je to naozaj najlepší spôsob, ako to urobiť? Určite je to lepšie, keď viete zhruba kam idete a majú knihu, ktorá vám môže pomôcť cez problémy, namiesto toho, aby musel vymyslieť všetko sám. Určite ešte siahnuť po GOF, keď sa cítim vzorom prichádza na. Pre mňa efektívny návrh argumentuje, že musíme vedieť, cena vzoru stojí za to platiť - to je jeho vlastný zručnosť. Podobne ako Joshua napovedá, musíme byť viac oboznámení o tom, ako zmierniť do vzoru postupne. V tomto ohľade XP považuje spôsob, akým používame vzory inak, než niektorí ľudia, ktorí ich používajú, ale rozhodne neodstráni ich hodnotu.

Ale čítal niektoré z e-mailových konferencií mám neodbytný pocit, že mnohí ľudia vidia XP ako odradiť vzory, a to napriek iróniou, že väčšina zástancov XP boli vodcovia hnutia vzory taky. Je to preto, že videli mimo vzory, alebo preto, že vzory sú tak zakotvené v ich myslení, že oni už nie si to uvedomiť? Neviem odpovede pre ostatné, ale pre mňa vzory sú stále životne dôležité. XP môže byť proces vývoja, ale vzory sú chrbticou dizajnu vedomostí, poznanie, že je cenný bez ohľadu na svoj proces môže byť. Rôzne procesy sa môžu používať vzory v rôznych spôsoboch. XP dôraz kladie nie pomocou šablóny, kým je to potrebné a vyvíja svoju cestu do vzoru cez jednoduchú implementáciu. Ale vzory sú stále kľúčový poznatok získať.

Moja rada pre XPers s využitím vzorov by bolo

  • Investovať čas do učenia o vzoroch
  • Sústreďte sa na tom, kedy použiť vzor (nie príliš skoro)
  • Sústrediť sa na tom, ako sa najprv vykonať vzor v jeho najjednoduchšej forme, potom pridajte zložitosť neskôr.
  • Ak dáte vzor, ​​a neskôr si uvedomiť, že to nie je ťahanie svoju váhu - nebojte sa opäť vybrať.

Myslím, že XP by mal zdôrazňovať učenie o vzoroch viac. Nie som si istý, ako by som sa zmestili, že do praktík XP, ale som si istý, Kent môže prísť s takým spôsobom.

Rastúce Architektúru

Čo máme na mysli softvérovú architektúrou? Pre mňa je termín architektúra sprostredkuje predstavu o základných prvkov systému, kusy, ktoré je ťažké zmeniť. Nadácie, na ktorom musí byť zvyšok postavená.

Akú úlohu hrá architektúra pri použití evolučnej dizajn? Opäť XPS kritici hovoria, že XP ignoruje architektúru, ktorá trasa XP je ísť do kódu rýchlo a veríme, že refaktoring, že vyrieši všetky problémy designu. Je zaujímavé, že majú pravdu, a to môže byť aj slabosť. Iste najagresívnejší XPers - Kent Beck, Ron Jeffries a Bob Martin - kladú čoraz viac energie do vyhnúť sa akejkoľvek up predné architektonické riešenie. Nedávajte do databázy, kým si naozaj viete, že ju budete potrebovať. Práca so súbormi prvý a Refactor databáze v priebehu neskoršieho iterácii.

Som známy tým, že zbabelo Xper, a ako taký musím nesúhlasiť. Myslím, že je úloha pre širokú Východiskovým bodom architektúry. Také veci ako uvedie skoro na to, ako k vrstve aplikáciu, ako budete komunikovať s databázou (ak budete potrebovať jeden), aký prístup použiť k manipulácii s webový server.

Môj kolega Neal Ford sa ponoril hlbšie do techník pre evolučnú návrh v pätnásť článku série pre IBM developerWorks. On tiež ponoril do videa s dielňou na agilných technické postupy pre O'Reilly.

V podstate myslím, že mnoho z týchto oblastí sú vzory, ktoré sme sa naučili v priebehu rokov. Ako sa vaše znalosti vzorov rastie, mali by ste mať rozumný prvá zaujme na tom, ako ich používať. Avšak hlavný rozdiel je, že tieto skoré architektonické rozhodnutie sa neočakáva, že bude vytesané do kameňa, alebo skôr tím vie, že môžu chybovať v ich ranom rozhodovaní, a mal by mať odvahu ich opraviť. Iní rozprával príbeh o jednom projekte, ktorý, v blízkosti nasadenie, sa rozhodol, že nepotreboval EJB a už sa odstráni ju z ich systému. Bol to značný refaktoring, bolo vykonané neskoro, ale umožňujúce praktiky robil to nielen možné, ale stojí za to.

Ako by to mohlo fungovalo opačne. Ak ste sa rozhodli nepoužívať EJB, že by bolo ťažšie ho pridať neskôr? Ak by ste teda nikdy začať s EJB, kým ste vyskúšali veci, bez toho, aby a našiel to chýba? To je otázka, ktorá zahŕňa mnoho faktorov. Iste prácu bez komplexné súčasť zvyšuje jednoduchosť a robí veci ísť rýchlejšie. Avšak niekedy je to jednoduchšie vytrhnúť niečo také, ako je dať do.

Takže moja rada je začať tým, že posúdenie toho, čo pravdepodobné, že architektúra je. Ak uvidíte veľké množstvo dát s viacerými užívateľmi, pokojne použite databázy z 1. Ak vidíte komplexné obchodné logiku, dať do modelu domény. Avšak v úcte k bohom yagna, v prípade pochybností chybu na strane jednoduchosti. byť pripravení zjednodušiť svoju architektúru, akonáhle vidíte, že súčasťou architektúry sa nepridáva nič.

UML a XP

Zo všetkých otázok, ktoré som dostať o svojom zapojení s XP jedným z najväčších točí okolo môjho vzťahu s UML. Nie sú dve nezlučiteľné?

Existuje celý rad bodov nekompatibility. Iste XP de-zdôrazňuje diagramy do značnej miery. Hoci oficiálny postoj je v duchu "je použiť v prípade, že sú užitočné", existuje silný podtext "skutočné XPers nerobia diagramy". Táto skutočnosť je posilnená tým, že ľudia ako Kent nie sú vôbec spokojní s diagramy, naozaj som nikdy nevidel Kent dobrovoľne nakresliť softvéru diagram v akomkoľvek pevnom notácie

Myslím, že problém pochádza z dvoch samostatných príčin. Jedným z nich je skutočnosť, že niektorí ľudia nájdu softvérové ​​diagramy užitočné a niektorí ľudia nemajú. Hrozí nebezpečenstvo, že tí, ktorí si myslia, že tí, ktorí nemajú robiť a naopak. Namiesto toho by sme mali pripustiť, že niektorí ľudia budú používať diagramy a niektorí nie.

Druhým problémom je, že softvérové ​​diagramy majú tendenciu byť spájaný s heavyweight procesu. Takéto procesy trávia veľa času kreslenie schém, ktoré nepomáhajú a môže skutočne spôsobiť škodu. Takže si myslím, že ľudia by mali byť poučení, ako používať diagramy dobre a vyhnúť sa pasce, skôr než "len vtedy, ak je potrebné (Wimpy)" správy, ktorá zvyčajne vychádza zo Xperts.

Takže tu je moja rada pre používanie diagramov dobre.

Po prvé, majte na pamäti to, čo ste kreslenie diagramov pre. Primárna hodnota je komunikácia. Efektívne komunikačné prostriedky výberu dôležitých vecí a zanedbanie menej dôležité. Táto selektivita je kľúčom k použitie UML dobre. Nekreslite každá trieda - len dôležité tie. Pre každú triedu, neukazujú každý atribút a prevádzku - iba dôležité tie. Nekreslite sekvenčné diagramy pre všetky prípady použitia a scenáre - len ... dostanete obrázok. Častým problémom pri spoločnom využívaní diagramov je, že ľudia sa snažia, aby boli komplexné. Kód je najlepším zdrojom komplexných informácií, pretože tento kód je najjednoduchšia vec, ktorú by ste mali mať na synchronizáciu s kódom. Diagramov komplexnosť je nepriateľom zrozumiteľnosti.

Obyčajné použitie diagramov je preskúmať ešte predtým, než začnete ju kódovania. Často sa dostanete dojem, že táto činnosť je nezákonný v XP, ale to nie je pravda. Mnoho ľudí hovorí, že keď máte lepkavý úloha stojí za to schádzania mať rýchly konštrukčné relácii ako prvý. Avšak, keď robíte takéto sedenie:

  • držať je krátky
  • nesnažte sa riešiť všetky detaily (len najdôležitejšie)
  • liečiť výsledný dizajn ako náčrtok, nie ako konečného návrhu

Posledný bod má hodnotu rozširuje. Ak tak urobíte nejaké up-front designu, budete nevyhnutne zistili, že niektoré aspekty návrhu sú zlé, a zistíte len to pri kódovaní. To nie je problém, za predpokladu, že vám potom zmeniť dizajn. Problém nastáva, keď si ľudia myslia, dizajn je robený, a potom neberte znalosti, ktoré získali prostredníctvom kódovania a spustite ho späť do dizajnu.

Zmena dizajnu nemusí nutne znamenať zmenu diagramy. Je to absolútne rozumné kresliť diagramy, ktoré vám pomôžu pochopiť navrhovanie a potom hodiť diagramy preč. kreslil pomohol, a to je dosť, aby sa im vyplatilo. Nemajú stáť stálymi artefakty. Najlepšie UML diagramy nie sú artefakty.

Mnoho XPers používať CRC karty. To nie je v rozpore s UML. Aj použiť kombináciu CRC a UML po celú dobu, používať podľa toho, ktorá metóda je najužitočnejší pre prácu v ruke.

Ďalšie použitie UML diagramov je on-prebiehajúce dokumentácie. Vo svojej obvyklej forme sa jedná o model s bydliskom na prípadovej nástroj. Predpokladá sa, že vedenie tejto dokumentácie pomáha ľuďom pracovať v systéme. V praxi sa často nepomôže vôbec.

  • to trvá príliš dlho, aby diagramov aktuálne, takže spadajú mimo synchronizáciu s kódom
  • sú skryté v prípadu nástroja alebo husté spojiva, takže nikto sa na ne pozrie

Takže rada pre pokračujúce dokumentáciu beží z týchto pozorovaných problémov:

  • Používajte len diagramy, ktoré môžete držať krok k dnešnému dňu bez badateľného bolesti
  • Dajte diagramy, kde si každý môže ľahko vidieť. Páči sa mi po nich na stenu. Povzbudiť ľudí, aby upraviť steny kópiu s perom pre jednoduché zmeny.
  • Venovať pozornosť tomu, či ľudia ich používajú, ak nie je vyhodiť.

Posledným aspektom použitie UML je dokumentácia v odovzdanie situácie, napríklad keď jedna skupina odovzdá do druhého. Tu XP je, že produkuje dokumentáciu užívateľ príbeh, ako každý iný, a tým aj jej obchodná hodnota je určená zákazníkom. Opäť UML je tu užitočná, poskytuje diagramy sú selektívne na pomoc komunikáciu. Nezabudnite, že kód je prameň Podrobnejšie informácie diagramy konať tak, aby zhrnúť a upozorniť na dôležité otázky.

Na Metafora

Dobre by som to rovnako povedať verejne - som ešte nedostal na kĺb tejto metafora vec. Videl som, že to funguje a funguje dobre na C3 projekte, ale to neznamená, že nemám potuchy, ako to urobiť, nieto ako vysvetliť, ako to urobiť.

Prax XP metafora je postavená na prístupe Ward Cunninghams zo systému mien. Ide o to, že ste prísť s dobre známou sadu názvov, ktorý pôsobí ako slovník hovoriť o doméne. Tento systém mien hrá na cestu zadať názov triedy a metódy v systéme.

Som postavil systém mien vybudovaním koncepčný model domény. Urobil som to s odborníkmi domén pomocou UML ani jeho predchodcov. Zistil som, že musíte byť opatrní robiť. Musíte dodržiavať minimálne jednoduchého súboru notáciu, a máte chrániť pred nechať nejaké technické problémy zakrádajú do modelu. Ale ak to budete robiť Zistil som, že môžete použiť na vybudovanie slovnú zásobu domény, že odborníci domény môže pochopiť a používať na komunikáciu s vývojármi. Tento model nezodpovedá trieda navrhuje perfektne, ale je to dosť, aby spoločný slovník pre celú doménu.

Teraz nevidím žiadny dôvod, prečo to môže slovíčok nemal byť metaforický jedno, ako je napríklad C3 metafory, ktoré sa obrátili miezd do montážnej továreň linky. Ale tiež nechápem, prečo založiť svoj systém mien na slovnú zásobu domény je tak zlý nápad jeden. Rovnako tak mám tendenciu opustiť techniku, ktorá funguje dobre pre mňa v získavaní systém mien.

Často ľudia kritizujú XP na základe toho, že vy potrebujete aspoň niektoré osnovy návrhu systému. XPers často reagujú s odpoveďou: "To je metafora". Ale stále si nemyslím, že som videl metafora je vysvetlené v presvedčivým spôsobom. To je skutočný rozdiel v XP, a ten, ktorý sa XPers je potrebné vyriešiť.

Chceš byť Architekt, až vyrastieš?

Pre veľa z posledných desiatich rokov, termín "softvérový architekt" sa stala populárnou. Je to pojem, ktorý je ťažké osobne pre mňa použiť. Moja žena je stavebný inžinier. Vzťah medzi inžinierov a architektov je ... zaujímavé. Môj obľúbený je "architekti sú dobré pre tri B rokov: žiarovky, kríky, vtáky". Predstava je, že architekti prísť so všetkými týmito krásnymi kresby, ale je to inžinieri, ktorí musia zabezpečiť, že v skutočnosti môže vstať. V dôsledku toho som sa vyhol termín softvérový architekt, po tom všetkom, či moja vlastná žena ma nemôže zaobchádzať s profesionálnym vzhľadom akou šancu mám stánok s niekým iným?

V softvéri, termín architekt znamená veľa vecí. (V softvéri akýkoľvek termín znamená veľa vecí.) Všeobecne však vyjadruje určité vážnosti, ako v "Ja nie som len obyčajný programátor - Som architekt". To môže preložiť do "Som architekt teraz - Som príliš dôležité robiť žiadne programovanie". Otázkou sa potom stáva jedno, či oddeľovanie sa od svetského programovacieho úsilia, je niečo, čo by ste mali robiť, keď chcete vykonávať technické vedenie.

Táto otázka generuje obrovské množstvo emócií. Videl som ľudí dostať k myšlienke veľmi nahnevaný, že nemajú svoju úlohu viac ako architekti. "Neexistuje žiadne miesto v XP pre skúsených architektov" je často krik som počul.

Rovnako ako v úlohe samotného dizajnu, nemyslím si, že je to pravda, že XP necenia skúsenosti alebo dobrý dizajn zručnosti. V skutočnosti mnoho zástancov XP - Kent Beck, Bob Martin a samozrejme Ward Cunningham - sú tí, od ktorých som sa naučil veľa o tom, čo dizajn je asi. Avšak to neznamená, že ich úloha sa mení z toho, čo veľa ľudí vidí ako role technického vedenia.

Ako príklad, budem citovať jeden z našich technických vedúcich na ThoughtWorks Dave Rice. Dave prešla niekoľkými životných cyklov a prevzal neoficiálne plášť technické olova na päťdesiat osôb projektu je. Jeho úloha ako vodcu znamená, že trávi veľa času so všetkými programátorov. Bude pracovať s programátorom, keď potrebujú pomoc, rozhliadne aby zistili, kto potrebuje pomoc. Významným znakom je, kde sedí. Ako dlhodobo ThoughtWorker, mohol celkom dobre mať žiadnu funkciu sa mu páčila. Zdieľal jednej chvíli sa Cara manažér uvoľňovanie. Avšak v posledných niekoľkých mesiacoch sa odsťahoval do otvorených pozícií, kde programátori pracujú (pomocou open "vojnové pokoj" štýl, ktorý XP uprednostňuje). To je pre neho dôležité, pretože takto vidia, čo sa deje, a je možné zapožičať ruka tam, kde je to potrebné.

Tí, ktorí poznajú XP si uvedomí, že budem popisovať explicitné XP úlohe trénera. V skutočnosti jeden z niekoľkých hier so slovami, že XP robí je, že volá vedúci technický údaj uvádza "tréner". Zmysel je jasný: v technickom vedenie XP je zobrazený tým, že učí programátorov a pomáhajú im prijímať rozhodnutia. Je to ten, ktorý vyžaduje dobrých ľudí zručnosti, ako aj dobré technické zručnosti. Jack Bolles v XP 2000 poznamenal, že existuje len malý priestor teraz pre osamelého pána. Spolupráca a vzdelávanie sú kľúčom k úspechu.

Na konferencii večeru, Dave a ja som hovoril s hlasný oponent XP. Ako sme diskutovali, čo sme urobili, podobnosti v našom prístupe boli celkom označené. Sme všetci radi, adaptívne iteratívny vývoj. Testovanie bolo dôležité. Takže sme boli zmätení na prudkosťou jeho námietok. Potom prišiel jeho vyhlásenie, v duchu "posledná vec, ktorú chcem, je moje programátori refaktoring a monkeying okolo s dizajnom". Teraz všetko bolo jasné. Koncepčné priepasť sa ďalej vyložil Dave hovorí mi neskôr ", keď nebude veriť svojim programátorom prečo sa najímajú?". V XP najdôležitejšia vec, ktorú skúsený autor môže urobiť, je odovzdať čo najviac zručností, ako si môže viac junior vývojárov. Namiesto architekta, ktorý robí všetky dôležité rozhodnutia, máte trénera, ktorý učí vývojári robiť dôležité rozhodnutia. Ako Ward Cunningham poukázal tým, že zosilňuje svoje schopnosti, a pridáva k projektu, než akékoľvek osamelý hrdina.

Reverzibilita

V XP 2002 Enrico Zaninotto dal fascinujúce prednášku, kde sa diskutovalo tie-iny medzi agilných metód a štíhlej výroby. Jeho názor, že jedným z kľúčových aspektov oboch prístupov bolo, že rieši zložitosť znížením nezvratnosť v tomto procese.

V tomto pohľade je jedným z hlavných zdrojov zložitosti je nezvratnosť rozhodnutie. Ak môžete ľahko zmeniť svoje rozhodnutie, to znamená, že je menej dôležité, aby sa prijala dobrá - čo robí váš život oveľa jednoduchší. Dôsledok evolučného návrhu je, že dizajnéri mali premýšľať o tom, ako sa môžu vyhnúť nezvratnosť vo svojich rozhodnutiach. Skôr než sa snaží dostať správne rozhodnutie teraz, hľadať cestu, aby buď odložiť rozhodnutia až neskôr (keď budete mať viac informácií), alebo urobiť rozhodnutie, takým spôsobom, že budete môcť zvrátiť neskôr bez väčších ťažkostí.

Toto odhodlanie podporovať reverzibility je jeden z dôvodov, že svižné metódy dať veľa dôrazy na kontrolných systémov zdrojového kódu, a dávať všetko do takéhoto systému. Aj keď to nie je zárukou reverzibilitu, najmä pre vytúžený žili rozhodnutie, poskytuje základ, ktorý dáva dôveru v tíme, aj keď je to len zriedka.

Navrhovanie pre zvratnosti tiež znamená proces, ktorý robí chyby objavia rýchlo. Jedna z hodnôt opakovaného vývoja je to, že rýchle iterácie umožňuje zákazníkom vidieť systém, ako to rastie, a ak je k omylu v požiadavkách môže byť Videli a pevné, ako náklady na stanovenie sa stáva príliš vysoké. Tento rovnaký rýchle špinenie je tiež dôležité pre návrh. To znamená, že budete musieť pripraviť veci tak, aby potenciálni problémové oblasti sú rýchlo testované, aby videli, čo problémy doraziť. To tiež znamená, že to stojí za to robiť experimenty, aby videli, ako tvrdo budúce zmeny môžu byť, aj keď nemáte skutočne vykonať skutočnú zmenu teraz - v skutočnosti robí Jednorazové prototyp na vetve systému. Niekoľko tímy hlási vyskúšať budúce zmeny čoskoro v režime prototypu, aby bolo vidieť, ako ťažké to bude.

Vôľa Navrhnúť

Aj keď som sa sústredil mnoho technických postupov v tomto článku, jedna vec, ktorá je až príliš jednoduché vynechať je ľudský aspekt.

Aby bolo možné pracovať, evolučné návrh potrebuje silu, ktorá poháňa to konvergovať. Táto sila môže pochádzať iba od ľudí - niekto v tíme musí mať odhodlanie zaistiť, že kvalitný dizajn zostáva vysoká.

To bude nemusí pochádzať z každého (aj keď je to pekné, keby to robí), zvyčajne len jeden alebo dvaja ľudia z tímu prevziať zodpovednosť udržiavanie návrh celok. To je jednou z úloh, ktoré sa zvyčajne pohybuje pod označením "arch".

Táto zodpovednosť znamená udržiavať konštantnú pozor na kódové základne, ktorí chcú zistiť, či niektoré oblasti informačných technológií sú stále chaotický, a potom brať rýchle opatrenia na odstránenie problému, než sa dostane mimo kontrolu. Prevádzkovateľ designu nemusí byť ten, kto to rieši - ale musí zabezpečiť, že sa dostane fixné niekým.

Nedostatok vôle navrhnúť Zdá sa, že jedným z hlavných dôvodov, prečo evolučnej dizajn môže zlyhať. Dokonca aj keď ľudia sú oboznámení s tým, čo som sa hovorí v tomto článku, bez toho by to navrhne nebude konať.

Veci, ktoré sú ťažko refaktorovat

Môžeme použiť refaktorování sa vysporiadať so všetkými rozhodnutiami dizajnu, alebo sú tam nejaké problémy, ktoré sú natoľko významný, že je ťažké ich pridať neskôr? V súčasnej dobe je pravoslávie XP je, že všetky veci sú ľahko pridať, keď ich potrebujete, takže vždy platí yagna. Zaujímalo by ma, či existujú výnimky. Dobrým príkladom niečoho, čo je kontroverzná pridať neskôr je internacionalizácia. Je to niečo, čo je taká bolesť pridať neskôr, že by ste mali začať s ním hneď?

Mohol by som ľahko predstaviť, že tam sú niektoré veci, ktoré by spadajú do tejto kategórie. Avšak realita je taká, že máme pred sebou ešte veľmi málo údajov. Ak máte pridať niečo ako internacionalizácie, neskôr ste veľmi vedomí úsilie trvá tak urobiť. Si menej vedomí úsilie by vlastne vzali, týždeň po týždni, aby ju a udržiavať ju skôr, než bolo v skutočnosti potrebné. Tiež ste menej vedomý skutočnosti, že ste môže dobre to zle, a preto treba urobiť nejaké refaktoring tak ako tak.

Súčasťou zdôvodnenie yagna je, že mnoho z týchto potenciálnych potrieb skončiť nie je nutná, alebo aspoň nie tak, ako by ste čakali. Tým, že im robí, ušetríte veľa úsilia. Hoci tam bude úsilie potrebné na refaktorovat jednoduché riešenie do toho, čo skutočne potrebujete, toto refaktorování je pravdepodobné, že bude menej práce ako stavba všetky pochybné prvky.

Ďalšou otázkou je treba mať na mysli to, či naozaj viete, ako to urobiť. Ak ste urobili internacionalizácie niekoľkokrát, potom budete vedieť, vzory, ktoré potrebujete zamestnať. Ako taký máte väčšiu pravdepodobnosť, aby si to pravé. Pridanie preventívne štruktúry je asi lepšie, ak ste v tejto pozícii, ako keď ste novým problémom. Takže moja rada by bola, že ak viete, ako to urobiť, ste v pozícii adekvátne posúdiť náklady, ako to urobiť teraz robiť to neskôr. Avšak, ak ste to urobil predtým, a to nielen nie ste schopní posúdiť náklady natoľko dobre, že ste tiež menej pravdepodobné, aby to dobre. V takom prípade by ste mali pridať neskôr. Ak pridať tej doby, a to bolestivé, budete pravdepodobne mať lepšie ako by si bol, keby ho pridaný čoskoro. Váš tím je oveľa skúsenejší, viete, že doména lepšie a lepšie pochopiť požiadavky. Často sa v tejto pozícii budete obzerať na to, aké ľahké by bolo s odstupom času 20/20. To môže byť oveľa ťažšie ho pridať skôr, než si myslíte.

To tiež nadväzuje na otázku o objednanie príbehov. Pri Plánovaní XP, Kent a ja otvorene indikovaná svoj nesúhlas. Kent v prospech nechať obchodnú hodnotu byť jediným faktorom pri jazde objednaní príbehov. Po počiatočnej nesúhlas Ron Jeffries teraz súhlasí s tým. Som stále neistý. Verím, že je rovnováha medzi obchodnej hodnoty a technické riziko. To by ma riadiť poskytnúť aspoň nejaké internacionalizáciu predčasné na zmiernenie tohto rizika. To však platí iba v prípade, bolo potrebné internacionalizácie pre prvé vydanie. Dostáva na vydanie tak rýchlo, ako je to možné, je životne dôležitá. Každá dodatočná komplexnosť stojí za to robiť po tomto prvom vydaní, pokiaľ to nie je nutné pre prvé vydanie. Sila dodaný, spustenie kódu je obrovský. Zameriava pozornosť zákazníkov, rastie dôveryhodnosť, a je masívny zdrojom učenia. Robiť všetko, čo môžete, aby tento dátum bližšie. Aj keď je viac úsilia pridať niečo po prvom vydaní, to je lepšie vydať skôr.

Keď sme začali našu cestu do evolučného návrhu na ThoughtWorks sme narazili hneď na otázku, či bolo možné navrhnúť databázy v evolučnom spôsobom. Vďaka úsiliu Pramod Sadalage sme zistili, že to jasne mohlo byť, a že vedomosti sa nám odvtedy stál v dobrom úžitku. Pre viac informácií si môžete prečítať článok, kde sme zaviedli tieto techniky na svete na mojich stránkach.

Pri každej novej technike je to prirodzené, že jej zástancovia nie ste istí jeho okrajových podmienok. Väčšina XPers bolo povedané, že evolučná návrh nie je možné, aby určitý problém, len aby zistil, že je skutočne možné. Že dobývanie "nemožných" situácia vedie k presvedčeniu, že všetky takéto situácie môžu byť prekonané. Samozrejme nie je možné urobiť takéto zovšeobecnenie, ale kým obec XP hity hranice a zlyhá, nikdy nemôžeme byť istí, kde tieto hranice ležia, a to je správne, aby sa pokúsila posunúť presahujú potenciálne hranice, ktoré iní môžu vidieť.

(Nedávny článok Jim Shore popisuje niektoré situácie, vrátane internacionalizácie, kde potenciálni hranice ukázalo nebyť bariéry po všetkom.)

Je Designu Deje?

Jedným z problémov z evolučného návrhu je, že je veľmi ťažké povedať, či dizajn je skutočne deje. Nebezpečenstvo prelínanie dizajn s programovaním je, že programovanie sa môže stať, bez toho, aby dizajnom - to je situácia, kedy Evolučný návrh rozchádza a zlyhá.

Ak ste vo vývojovom tíme, potom cítite, či návrh sa deje podľa kvality kódu. V prípade, že základné kód je stále zložitejšie a ťažšie pracovať, nie je dostatok konštrukcia stále vykonáva. Ale bohužiaľ to je subjektívne hľadisko. Nemáme spoľahlivé metriky, ktoré nám môže dať objektí

Dátum preklade - 07.06.2016