Er hönnun dauður?

Source page: https://martinfowler.com/articles/designDead.html

Fyrir marga sem koma stuttlega í snertingu við Extreme Programming, það virðist sem XP kallar dauða hönnun hugbúnaðar. Ekki bara er miklu hönnun virkni gys eins og “Stór Upp að Framan Hönnun”, en slíkar aðferðir hönnun og UML, sveigjanlegt ramma, og jafnvel mynstur eru de-áherslu eða nánast hunsað. Í raun XP felur í sér mikið af hönnun, en gerir það á annan hátt en viðurkenndum ferlum hugbúnaður. XP hefur yngjast hugmyndina um þróun hönnunar með venjur sem gera þróun á að verða raunhæfur hönnun stefnu. Það veitir einnig nýjar áskoranir og færni sem hönnuðir þurfa að læra hvernig á að gera einfalda hönnun, hvernig á að nota refactoring að halda hönnun hreinn, og hvernig á að nota mynstur í þróun stíl.


Heimilt 2004

Photo of Martin Fowler

(Þessi grein var skrifuð fyrir grunntónn míns í XP 2000 ráðstefnunni og upprunalega form hennar var gefin út sem hluti af málsmeðferð.)

 


Extreme Programming (XP) skorar margir af the sameiginlegur forsendum um þróun hugbúnaðar. Af þeim einn af mest umdeild er höfnun hennar á verulegum átak í upp-andlit hönnun, í favor af a fleiri þróun nálgun. Til úrtölumenn sínum að þetta er aftur að “kóða og festa” þróun – yfirleitt gys sem reiðhestur. Til aðdáenda sinna og það er oft talin höfnun hönnun tækni (ss UML), meginreglur og mynstrum. Ekki hafa áhyggjur af hönnun, ef þú hlusta á númerið þitt góð hönnun birtist.

Mér finnst ég sjálfur á miðju þessa röksemdafærslu. Mikið af mínum ferli hefur þátt myndræna tungumál Design – Unified Modeling Language (UML) og fyrirrennarar hennar – og í mynstrum. Reyndar hef ég skrifað bækur bæði á UML og mynstrum. Er faðma minn XP meina ég recant allt það sem ég hef skrifað um þessi málefni, hreinsun huga minn allra slíkra gegn byltingarkennd hugmyndir?

Jæja ég ætla ekki að búast við því að ég get skilið þig hangandi á krókinn stórkostlegar spennu. Stutta svarið er nei. Langa svarið er restin af þessari grein.

Skipulögð og þróunar hönnun

Fyrir þetta grein sem ég ætla að lýsa tveimur stíll hvernig hönnun er gert í þróun hugbúnaðar. Kannski er algengasta þróunar hönnun. Í meginatriðum þróunar hönnun þýðir að hönnun kerfisins vex þar sem kerfið er hrint í framkvæmd. Hönnun er hluti af forritun ferli og eins og the program þróast hönnun breytingar.

Í sameiginlegri notkun þess, þróunar hönnun er hörmung. Hönnunin endar að vera samansafn af fullt af Beintenging taktísk ákvarðanir, sem hver um sig gerir kóðann erfiðara að breyta. Á margan hátt sem þú gætir rökrætt þetta er engin hönnun, vissulega leiðir það yfirleitt til léleg hönnun. Eins og Kent setur það, hönnun er að gera þér kleift að breyta hugbúnaði auðveldlega til lengri tíma litið. Sem hönnun versnar, svo er hæfni til að gera breytingar á áhrifaríkan hátt. Þú hefur ástand hugbúnaður óreiðu, en tíminn hönnun verður verri og verri. Ekki eini hjartarskinn this gera hugbúnað erfiðara að breyta, gerir það einnig galla bæði auðveldara að rækta og erfiðara að finna og örugglega drepa. Þetta er “númer og festa” martröð, þar sem galla verða veldishraða dýrara að laga sem verkefnið fer á.

Fyrirhuguð hönnun er teljari á þessu, og inniheldur hugmynd fæddur frá öðrum greinum verkfræði. Ef þú vilt að byggja upp doghouse, getur þú bara að fá smá timbur saman og fá gróft form. Hins vegar ef þú vilt að byggja upp skýjakljúfur, er ekki hægt að vinna þannig – það verður bara að hrynja áður en þú færð jafnvel hálfa leið upp. Svo þú byrjar með teikningum verkfræði, gert í verkfræði skrifstofu eins og einn konan mín vinnur á í miðbæ Boston. Eins og hún gerir í myndinni sem hún tölur úr öllum málum, ma með stærðfræðigreiningu, en að mestu leyti með því að nota byggingarreglugerðum. Building kóðar eru reglur um hvernig þú hannar mannvirki byggt á reynslu hvað virkar (og einhverja aðra stærðfræði). Þegar hönnun er lokið, þá verkfræði fyrirtæki hennar getur hönd hönnun burt til annars fyrirtækis sem byggir það.

Skipulögð hönnun í hugbúnaði ætti að vinna á sama hátt. Hönnuðir hugsa út stóru mál fyrirfram. Þeir þurfa ekki að skrifa kóðann vegna þess að þeir eru ekki að byggja hugbúnað, sem þeir eru að hanna það. Svo þeir geta notað hönnun tækni eins og UML sem fær burt frá sumir af the smáatriði af forritun og gerir hönnuðir að vinna á fleiri abstrakt stigi. Þegar hönnun er lokið og þeir geta afhenda það burt til sérstakan hóp (eða jafnvel sérstakt fyrirtæki) til að byggja. Þar sem hönnuðir eru að hugsa á stærri skala, þeir geta forðast röð taktísk ákvarðanir sem leiða til hugbúnaðar óreiðu. Forritarar geta fylgja stefnu hönnun og veita þeir fylgja hönnun, hafa vel byggð kerfi

Nú er fyrirhuguð hönnun nálgun hefur verið í kring síðan 70s, og hellingur af fólki hefur notað það. Það er betra á margan hátt en númerið og festa þróunar hönnun. En það hefur sumir galla. Fyrsti galli er að það er ómögulegt að hugsa um öll mál sem þú þarft að takast á við þegar þú ert forritun. Svo er það óhjákvæmilegt að þegar forritun þú munt finna það sem sniðgengnar hönnun. Hins vegar ef hönnuðir gert, flutt yfir í annað verkefni, hvað gerist? Forritarar byrja kóðun um hönnun og óreiðan setur í. Jafnvel þótt hönnuður er ekki farinn, það tekur tíma að raða út hönnun málefni, breyta teikningum, og þá breyta kóðann. Það er yfirleitt fljótari festa og tími þrýstingi. Þess vegna óreiðuuppsprettunum (aftur).

Ennfremur er það oft menningarleg vandamál. Hönnuðir eru gerðar hönnuði vegna kunnáttu og reynslu, en þeir eru svo uppteknir að vinna á hönnun sem þeir fá ekki mikinn tíma til að kóða lengur. Hins vegar verkfæri og efni breytinga hugbúnaðarþróun á hratt. Þegar þú er ekki lengur númer ekki bara hægt að missa af breytingum sem eiga sér stað með þessari tækni hreyfingu, þú missir líka virðingu þeirra sem ekki kóða.

Þessi spenna milli smiðirnir og hönnuðir gerist í húsinu líka, en það er háværari í hugbúnaði. Það er mikil vegna þess að það er lykillinn munur. Í að byggja er skýrari skipting í færni á milli þeirra sem hanna og þeir sem byggja, en í hugbúnaði sem er minna raunin. Allir forritari að vinna í háum umhverfi hönnun þarf að vera mjög þjálfaður. Þjálfaður nóg að spyrja hönnun hönnuður, sérstaklega þegar hönnuður er minna fróður um degi til dags veruleika í þróun pallur.

Nú þessi mál gæti verið fastur. Kannski getum við að takast á við mannlega spennu. Kannski getum við fengið hönnuði kunnátta nóg til að takast á við flest málefni og hafa ferli aga nóg til að breyta teikningum. Það er samt annað vandamál: að breytast kröfur. Breyting kröfur eru númer eitt stórt mál sem veldur höfuðverk í hugbúnaðarverkefnum sem ég hlaupa inn.

Ein leið til að takast á við breyttum kröfum er að byggja sveigjanleika í hönnun þannig að þú getur auðveldlega breyta því eins og kröfur breytast. Þó þarf þetta innsýn í hvers konar breytingar sem þú átt von á. Hönnun hægt að skipuleggja til að takast á við svæði óstöðugleika, en á meðan það mun hjálpa til fyrirséðar kröfur breytingar, það mun ekki hjálpa (og getur skaðað) til ófyrirséðra breytinga. Svo þú þarft að skilja kröfur nógu vel til að skilja rokgjörn sviðum, og athugun mín er að þetta er mjög erfitt.

Nú sumir af þessum kröfum vandamálum eru vegna ekki skilja kröfur greinilega nóg. Svo mikið af fólki áherslu á kröfur verkfræði aðferð til að fá betri kröfur í þeirri von að þetta muni koma í veg fyrir þörf á að breyta hönnun síðar. En jafnvel þessi átt er eitt sem má ekki leiða til lækna. Margar ófyrirséð kröfur breytingar eiga sér stað vegna breytinga á fyrirtækinu. Þeir geta ekki komið í veg fyrir, þó varkár kröfur þínar verkfræði aðferð.

Svo gerir þetta fyrirhuguð hönnun hljóð ómögulegt. Vissulega eru þeir stór viðfangsefni. En ég er ekki hneigðist að halda því fram að fyrirhuguð hönnun er verri en þróun hönnunar eins og það er oftast stunduð í “kóða og festa” hátt. Reyndar ég frekar skipulagt hönnun til “kóða og laga”. Hins vegar er ég meðvituð um vandamál fyrirhuguð hönnun og er að reyna nýja stefnu.

Virkjun venjur XP

XP er umdeild fyrir mörgum ástæðum, en ein af helstu rauðum flöggum í XP er að það talsmenn þróunarsaga hönnun frekar en fyrirhuguð hönnun. Eins og við vitum, þróunar hönnun getur ekki hugsanlega vinnu vegna tilfallandi ákvarðanir hönnun og hugbúnaður óreiðu.

Í kjarna skilja þetta rifrildi er hugbúnaður breyting ferill. Breytingin bugða segir að þegar verkefnið keyrir, það verður veldishraða dýrara að gera breytingar. Breytingin ferillinn er yfirleitt sett fram sem áföngum “breytingu sem gerð er í greiningu fyrir $ 1 myndi kosta þúsundir að festa í framleiðslu.” Þetta er kaldhæðnislegt eins og flestir verkefni enn vinna í ad-hoc ferli sem hefur ekki greiningu áfanga, en Veldi er enn þar. Veldisvísis Breytingin bugða þýðir að þróunar hönnun getur ekki hugsanlega vinna. Það veitir einnig hvers vegna fyrirhuguð hönnun verður að vera vandlega vegna þess að allir mistök í fyrirhugaðri hönnun frammi fyrir sama Veldi.

Æðsti forsenda undirliggjandi XP er að það er hægt að fletja breyta feril nóg að gera þróunarsaga hönnun vinnu. Þetta fletja er bæði virkt með XP og nýtt af XP. Þetta er hluti af festingu á XP venjur: sérstaklega ekki hægt að gera þá hluta af XP sem nýta sér fletja ferilinn án þess að gera þá hluti sem gera sér fletja. Þetta er algeng uppspretta deilur XP. Margir gagnrýna misnotkun án þess að skilja kleift. Oft gagnrýni stafað af eigin reynslu gagnrýnenda þar sem þeir hafi ekki gert þær kleift venjur sem leyfa áframhaldandi nýting venjur til að vinna. Þess vegna fékk brenndu þeir og þegar þeir sjá XP þeir muna eldinn.

Það eru margir hlutar til sem gerir starfshætti. Í kjarna eru venjur Eista og Continuous Sameining. Án öryggis hjá prófa restina af XP væri ómögulegt. Stöðug Sameining er nauðsynlegt til að halda liðinu í sync, þannig að þú getur gert breytingar og ekki að vera áhyggjufull um að samþætta það við annað fólk. Saman þessar aðferðir geta haft mikil áhrif á breytingar ferlinum. Ég var minntur á þetta aftur hér á ThoughtWorks. Kynna prófanir og samfelld sameining hafði veruleg framför á þróun áreynsla. Vissulega nóg að alvarlega í efa XP fullyrðingu sem þú þarft alla starfshætti til að fá stór framför.

Refactoring hefur svipuð áhrif. Fólk sem refactor númer þeirra í öguð hátt leiðbeinandi XP finna marktækan mun á árangri miðað við að gera looser, meiri Sértækt endurskipulagningu. Það var vissulega mín reynsla þegar Kent hafði kennt mér að refactor almennilega. Eftir allt saman, aðeins svo mikil breyting hefði hvetja mig til að skrifa heila bók um það.

Jim Highsmith, í frábæru samantekt hans XP, notar líkingar af a setja af vog. Í einu bakki er áætlað hönnun, hitt er Refactoring. Í fleiri hefðbundnum aðferðum fyrirhuguð hönnun drottnar því forsenda er að þú getur ekki breytt um skoðun síðar. Og kostnaður við breytingar lækkar þá er hægt að gera meira af hönnun síðar refactoring. Fyrirhuguð hönnun hverfur ekki alveg, en það er nú jafnvægi á tveimur hönnun aðferðir til að vinna með. Fyrir mig það er eins að áður Refactoring ég var að gera allt hönnun mína einn-hönd.

Þessi sem gerir venjur samfellt sameining, prófanir og refactoring, veita nýja umhverfi sem gerir þróunar hönnun trúverðug. Þó einn hlutur sem við höfum ekki enn mynstrağur út er þar sem jafnvægi lið er. Ég er viss um að þrátt fyrir utan far, XP er ekki bara próf, kóða og refactor. Það er pláss fyrir hanna fyrir kóðun. Sumt af þessu er áður en það er einhver kóðun, mest af því kemur í endurtekningar áður kóðun fyrir tiltekið verkefni. En það er nýtt jafnvægi milli hönnunar upp að framan og refactoring.

Gildi einfaldleika

Tveir af stærstu fjöldafundur grætur í XP er slagorð “Ekki Einfaldasta hlutur sem gæti hugsanlega vinna” og “Þú ert ekki að fara að þurfa það” (þekkt sem YAGNI). Báðir eru einkenni af XP framkvæmd einföld hönnun.

Leiðin YAGNI er yfirleitt lýst, segir það að þú ættir ekki að bæta við kóða dag sem verður aðeins notað af lögun sem þarf morgun. Á the andlit af það þetta hljómar einfalt. Útgáfan kemur með slíka hluti eins ramma, einnota hluti og sveigjanlega hönnun. Slík atriði eru flóknar að byggja. Þú borgar aukalega upp að framan kostnað til að byggja þá, í ​​von um að þú munt fá til baka sem kosta síðar. Þessi hugmynd um að byggja sveigjanleika upp-framan er talin lykilatriði í árangri hugbúnaður hönnun.

Hins ráð XP er að þú ekki að byggja sveigjanleg hluti og umgjörð fyrir fyrsta tilfelli sem þarf að virkni. Láta þessar stofnanir vaxa eins og þeir eru þörf. Ef ég vil Money flokki í dag að annast viðbót en ekki margföldun svo ég byggja bara viðbót í peningum bekknum. Jafnvel þótt ég er viss um að ég þarf margföldun á næsta endurtekning, og skilja hvernig á að gera það auðveldlega, og held að það verður mjög fljótur að gera, ég ætla samt að láta hana fyrr að næsta endurtekning.

Ein ástæða fyrir þessu er efnahagslega. Ef ég þarf að gera allir vinna sem er aðeins notaður í lögun sem þarf á morgun, sem þýðir að ég tapa áreynsla af lögun sem þarf að gera fyrir þetta endurtekning. The gefa út áætlun segir hvað þarf að vera unnið núna, vinna á öðrum hlutum í framtíðinni er andstætt verktaki samkomulagi við viðskiptavininn. Það er hætta á að sögur þessa endurtekningu gæti ekki fá gert. Jafnvel þótt sögur þessa endurtekningu eru ekki í hættu að það er allt til viðskiptavinarins að ákveða hvaða auka vinna ætti að vera – og það gæti enn ekki falið margföldun.

Þetta efnahagslega disincentive er samsett af tækifæri sem við megum ekki fá það rétt. Hins viss um að við kann að vera um hvernig þessi aðgerð virkar, getum við samt fá það rangt – sérstaklega þar sem við höfum ekki nákvæmar kröfur ennþá. Vinna á röngum lausn snemma er jafnvel meira eyðslusamur en að vinna á réttu lausnina snemma. Og XPerts almennt trúa því að við erum mun líklegri til að vera rangt en rétt (og ég er sammála með þessi viðhorf.)

Hin ástæðan fyrir einfalda hönnun er að flókið hönnun er erfiðara að skilja en einföld hönnun. Því allir breytingar á kerfinu er gert erfiðara með því að auka flækjustig. Þetta bætir kostnað á tímabilinu þegar flóknara hönnun var bætt við og þegar það var þörf.

Nú slær þetta ráð mikið af fólki sem bull, og þeir hafa rétt til að hugsa það. Hægri enda sem þú ímyndað venjulega þróun heimi þar sem gera kleift venjur XP eru ekki til staðar. Hins vegar þegar jafnvægi milli áformuðum og þróunar breytir hönnun, þá verður YAGNI góða starfshætti (og aðeins þá).

Svo að draga. Þú vilt ekki að eyða fyrirhöfn að bæta við nýjum möguleika sem verður ekki þörf fyrr en framtíð endurtekning. Og jafnvel þótt kostnaður er núll, enn þú vilt ekki að bæta við það vegna þess að það eykur kostnað við breytingu, jafnvel þótt það kostar ekkert að setja inn. Hins vegar getur þú aðeins skynsamlega haga með þessum hætti þegar þú ert að nota XP, eða svipuð tækni sem minnkar kostnað breytinga.

Hvað í ósköpunum er einfaldleiki samt

Þannig að við viljum kóða okkar til að vera eins einfalt og mögulegt er. Þetta hljómar ekki eins og það er of erfitt að halda því fram að, eftir allt sem vill vera flókið? En auðvitað er þetta bidur spurningunni “hvað er einfalt?”

Í XPe Kent gefur fjórar forsendur fyrir einfalt kerfi. Í því skyni (mikilvægast fyrst):

  • Keyrir öll próf
  • Engin endurtekning
  • Veitir allar ætlun
  • Fæst fjölda flokka eða aðferðum

Gangi öll próf er frekar einfalt viðmiðun. Nei tvíverknað er einnig mjög einfalt, þó að fullt af forriturum þarf leiðbeiningar um hvernig á að framkvæma það. The erfiður einn hefur að gera með sýna ætlun. Hvað nákvæmlega þýðir það?

Grunn gildi hér skýrleika kóða. XP leggur mikla áherslu á kóða sem er auðvelt að lesa. Í XP “snjöllum kóða” er hugtak um misnotkun. En ætlunin sýna númer Sumt fólk er í slungin annars er.

Í hans XP 2000 pappír, Josh Kerievsky bendir gott dæmi um þetta. Hann lítur á hugsanlega mest opinber XP kóða allra – JUnit. JUnit notar skreytingamenn að bæta valfrjáls virkni til að prófa tilvikum, svo hlutir sem concurrency samstillingu og hópur sett upp kóðann. Með því að aðskilja þennan kóða inn málara gerir það almenn kóða til að vera skýrari en annars væri.

En þú verður að spyrja sjálfan þig hvort leiðir númer er mjög einfalt. Fyrir mér er það, en þá er ég kannast við Decorator mynstri. En fyrir marga sem eru ekki það alveg flókið. Á sama hátt JUnit notar Pluggable aðferðir sem ég hef tekið eftir að flestir upphaflega fundið neitt nema skýr. Þannig gætum við ályktað að hönnun JUnit er einfaldara fyrir reynda hönnuði en flóknari fyrir minna reynda fólki?

Ég held að áhersla á að koma í veg fyrir tvíverknað, bæði með XP er “einu sinni og aðeins einu” og raunsærri Forritari er þurr (Ekki endurtaka þig) er eitt af þeim augljós og frábærlega öflugur stykki af góðum ráðum. Bara eftir að einn getur tekið þig langan veg. En það er ekki allt, og einfaldleiki er enn flókinn hlutur til að finna.

Nýlega var ég að taka þátt í að gera eitthvað sem gæti vel verið yfir hönnuð. Það fékk refactored og sumir sveigjanleika var fjarlægður. En eins og einn af the verktaki sagði “það er auðveldara að refactor yfir-hönnun en það er að refactor engin hönnun.” Það er best að vera svolítið einfaldara en þú þarft að vera, en það er ekki hörmung að vera svolítið flóknari.

Besta ráðið sem ég heyrði um þetta kom frá Uncle Bob (Robert Martin). Ráð hans var ekki að fá of hengdur upp um hvað einfaldasta hönnun er. Eftir allt sem þú getur, ætti, og mun refactor það síðar. Í lok vilji til refactor er miklu meira máli en að vita hvað einfaldasta hlutur er strax.

Er refactoring í bága YAGNI?

Þetta umræðuefni kom upp XP póstlista nýlega, og það er þess virði að koma út eins og við lítum á hlutverk hönnunar í XP.

Í grundvallaratriðum spurning byrjar með punkti sem refactoring tekur tíma en ekki bæta virka. Þar sem benda á YAGNI er að þú ert að ætlast til að hanna fyrir núverandi ekki í framtíðinni, er þetta brot?

Að benda á YAGNI er að þú ekki bæta flókið það er ekki þörf fyrir núverandi sögur. Þetta er hluti af framkvæmd einföld hönnun. Refactoring þarf að halda hönnun eins einfalt og þú getur, svo þú ættir refactor þegar þú grein fyrir að þú getur gert hlutina einfaldari.

Einföld hönnun bæði nýtir XP starfshætti og er einnig kleift æfa. Aðeins ef þú ert próf, stöðuga aðlögun og refactoring hægt að æfa einföld hönnun á áhrifaríkan hátt. En á sama tíma að halda í hönnun einfalt er nauðsynlegt að halda breytingar bugða íbúð. Allir óþarfa flækjustig gerir kerfið erfiðara að breyta í allar áttir nema einn þú von við flókin sveigjanleika sem þú setur inn. Hins vegar eru ekki góðir í að sjá, þannig að það er best að reyna fyrir einfaldleika. Þó fólk mun ekki fá einfaldast fyrsta skipti, þannig að þú þarft að refactor til að komast nær því markmiði.

Mynstur og XP

The JUnit dæmi leiðir mig óhjákvæmilega í uppeldi mynstrum. Sambandið milli mynstrum og XP er áhugavert, og það er algeng spurning. Joshua Kerievsky heldur því fram að mynstur eru undir áherslu á XP og hann gerir rök áhrifamikil, svo ég vil ekki að endurtaka það. En það er vert að hafa í huga að fyrir mörgum mynstur virðist stangast á við XP.

Kjarni þessarar röksemdafærslu er að mynstur eru oft yfir-notaður. Heimurinn er fullur af Legendary forritari, ferskur burt fyrsta lestur hans GOF sem felur sextán mynstur í 32 línum af kóða. Ég man eitt kvöld, drifinn af mjög fallegu einni malt, keyra í gegnum með Kent pappír til að vera kölluð “Not hönnun mynstur: 23 ódýr bragðarefur” Við vorum að hugsa um slíka hluti eins og að nota ef staðhæfing frekar en stefnu. Brandari hafði lið, mynstur eru oft overused, en það þýðir ekki að gera þá slæm hugmynd. Spurningin er hvernig þú notar þær.

Ein kenning um þetta er að öfl einföld hönnun mun leiða þig inn í mynstur. Margir refactorings gera þetta skýrt, en jafnvel án þeirra með því að fylgja reglum um einfalda hönnun sem þú munt koma upp með mynstri, jafnvel ef þú veist ekki þá þegar. Þetta kann að vera satt, en það er í raun besta leiðin til að gera það? Víst það er betra ef þú veist nokkurn veginn hvar þú ert að fara og er með bók sem getur hjálpað þér í gegnum málefni í stað þess að þurfa að finna upp það allt sjálfur. Ég vissulega enn að ná til GOF þegar ég finn mynstur koma á. Fyrir mig skilvirk hönnun heldur því fram að við þurfum að vita verð á mynstri er þess virði að borga – það er eigin færni sína. Á sama hátt, eins og Jósúa kynna, þurfum við að vera fleiri kunnugleg um hvernig á að vellíðan í mynstri smám saman. Í þessu sambandi XP skemmtun hvernig við notum mynstur öðruvísi við því hvernig sumir nota þær, en vissulega ekki að fjarlægja verðmæti þeirra.

En að lesa sum the póstlista ég fá sérstakt tilfinninguna að margir sjá XP eins letjandi mynstur, þrátt fyrir kaldhæðni að flestir talsmenn XP voru leiðtogar munstur hreyfingu líka. Er þetta vegna þess að þeir hafa séð út mynstur, eða vegna þess að mynstur eru svo fellt í hugsun þeirra að þeir átta sig á því ekki lengur? Ég veit ekki svörin fyrir aðra, en fyrir mig mynstur eru enn afar mikilvægt. XP getur verið ferli fyrir þróun, en mynstur eru burðarás hönnun þekkingu, þekkingu sem er mikils virði hvað aðferð getur verið. Mismunandi aðferðum getur notað mynstur í mismunandi vegu. XP er lögð áhersla á bæði nota ekki munstur þar til það er þörf og þróast leið í mynstur með einfaldri útfærslu. En mynstur eru enn lykillinn stykki af þekkingu til að afla.

Mitt ráð til XPers nota mynstrin væri

  • Að fjárfesta tíma í að læra um mynstrum
  • Einbeita sér hvenær á að beita mynstur (ekki of snemma)
  • Einbeita sér hvernig á að framkvæma mynstur í einföldustu mynd fyrst, þá bæta flókið síðar.
  • Ef þú setur mynstur í, og síðar átta sig á að það er ekki að toga þyngd sína – ekki vera hræddur við að taka það út aftur.

Ég held XP ættu að leggja áherslu á að læra um mynstrum fleiri. Ég er ekki viss um hvernig ég myndi passa að inn í venjur XP, en ég er viss um Kent getur komið upp með a vegur.

Vaxandi arkitektúr

Hvað er átt við með hugbúnaði arkitektúr? Fyrir mér er hugtakið arkitektúr miðlar hugmynd um helstu þætti kerfisins, the stykki sem erfitt er að breyta. A grunnur sem restin verður reist.

Hvaða hlutverki gegnir arkitektúr spila þegar þú ert að nota þróunarlega hönnun? Aftur XPS gagnrýnendur segja að XP hunsar arkitektúr, sem leið XP er að fara að kóða hratt og treysta því að refactoring sem mun leysa öll hönnun málefni. Athyglisvert að þeir eru rétt, og það gæti vel verið veikleiki. Vissulega árásargjarn XPers – Kent Beck, Ron Jeffries, og Bob Martin – eru að koma fleiri og meiri orku í að forðast eitthvað upp fyrir framan byggingarlistar hönnun. Ekki setja í gagnagrunni þar til þú veist í raun að þú þarft hana. Vinna með skrár fyrst og refactor gagnagrunninn í á síðari endurtekning.

Samstarfsmaður minn Neal Ford hefur delved dýpra í tækni fyrir þróun hönnunar í fimmtán grein röð fyrir IBM DeveloperWorks. Hann er líka delved vídeó með verkstæði á Agile aðferðir verkfræði fyrir O’Reilly.

Ég er þekktur fyrir að vera ragir XPer, og eins og svo ég verð að vera ósammála. Ég held að það sé hlutverk fyrir breiðan upphafið arkitektúr. Slíkt sem fram kemur snemma um hvernig á að lag umsókn, hvernig þú munt hafa samskipti við gagnagrunn (ef þú þarft einn), hvaða aðferð á að nota til að meðhöndla vefþjón.

Í meginatriðum Ég höfð að margir af þessum svæðum eru mynstur sem við höfum lært í gegnum árin. Eins þekking þín á mynstrum vex, ættir þú að hafa hæfilegan fyrst að taka á hvernig á að nota þær. Hins vegar er lykillinn munurinn að þessar fyrstu byggingarlistar ákvarðanir eru ekki gert ráð fyrir að vera sett í stein, eða öllu heldur liðið veit að þeir geta skjátlast í byrjun ákvörðunum sínum, og ætti að hafa hugrekki til að festa þá. Aðrir hafa sagt söguna af einu verkefni að nærri dreifing, ákvað það þarf ekki EJB lengur og fjarlægt það úr sínu kerfi. Það var töluverð refactoring, það var gert seint, en sem gerir venjur gerði það ekki bara hægt, en þess virði.

Hvernig myndi þetta hafa unnið á hinn veginn. Ef þú hefur ákveðið að nota EJB, væri erfiðara að bæta því seinna? Ættir þú því aldrei að byrja með EJB fyrr en þú hefur reynt það án og fannst það vantar? Það er spurning sem felur í sér marga þætti. Vissulega vinna án flókið hluti eykur einfaldleika og gerir hlutirnir fara hraðar. Hins vegar er það stundum auðveldara að rífa út eitthvað svona en það er að setja það í.

Svo mitt ráð er að byrja á því að meta hvað líklegt arkitektúr er. Ef þú sjá a stór magn af gögnum með mörgum notendum, fara á undan og nota gagnagrunn frá 1. degi, ef þú sérð flókin viðskipti rökfræði, setja í domain fyrirmynd. Hins vegar í virðingu við guðum YAGNI, þegar hún er í vafa skjátlast á hlið einfaldleika. Einnig að vera tilbúin til að einfalda vélina þína eins fljótt og þú sérð að hluti af arkitektúr er ekki að bæta neitt.

UML og XP

Af öllum þeim spurningum sem ég fengið um þátttöku mína með XP eitt af stærstu snýst um tengslum mínum við UML. Eru ekki tveir ósamrýmanleg?

There ert a tala af stöðum ósamrýmanleiki. Vissulega XP de-áherslu skýringarmyndir að miklu leyti. Þótt opinber staða er á sömu nótum og “nota þá ef þeir eru gagnlegar”, það er mikil subtext af “alvöru XPers gera ekki skýringarmynd”. Þetta er styrkt af þeirri staðreynd að fólk eins Kent eru alls ekki ánægð með skýringarmynd, reyndar hef ég aldrei séð Kent frjálsum teikna hugbúnaður skýringarmynd í fasta merki

Ég held að málið kemur úr tveimur aðskildum orsökum. Eitt er staðreynd að sumir finna hugbúnað skýringarmyndir gagnlegar og sumir gera það ekki. Hættan er sú að þeir sem gera held að þeir sem ekki ætti að gera og öfugt. Þess í stað ættum við bara að taka því að sumir vilja nota skýringarmyndir og sumir ekki.

Önnur mál er að hugbúnaður skýringarmyndir tilhneigingu til að fá í tengslum við þungavigtar ferli. Slík aðferð eyða miklum tíma að teikna skýringarmyndir sem hjálpa ekki og getur í raun valdið skaða. Þannig að ég held að fólk ætti að ráðleggja hvernig á að nota skýringarmyndir vel og forðast gildrur, frekar en “ef þú verður (wimp)” skilaboð sem yfirleitt kemur út úr XPerts.

Svo er hér mitt ráð fyrir að nota skýringarmyndir vel.

Fyrsta að hafa í huga hvað þú ert að teikna skýringarmyndir um. Aðal gildi er samskipti. Árangursrík samskipti þýðir að velja mikilvæg atriði og vanrækja minna máli. Þessi sértækni er lykillinn að því að nota UML vel. Ekki draga ekki hvert bekknum – aðeins mikilvæg sjálfur. Fyrir hvern flokk, ekki sýna hvert eigindi og rekstur – aðeins mikilvæg sjálfur. Ekki draga ekki röðina skýringarmyndir fyrir öll notkun tilvikum og aðstæðum – aðeins … þú færð mynd. Algeng vandamál með sameiginlega notkun skýringarmyndir er að fólk reynir að gera þá tæmandi. Kóðinn er besta uppspretta af alhliða upplýsingar, sem kóðinn er auðveldasta hlutur til viðurværi í sync með kóða. Fyrir teikningar comprehensiveness er óvinur comprehensibility.

Algengt er að nota skýringarmyndir er að kanna hönnun áður en þú byrjar erfðaskrá það. Oft þú færð á tilfinninguna að slík starfsemi sé ólöglegt í XP, en það er ekki satt. Margir segja að þegar þú ert með Sticky verkefni það er þess virði að fá saman að hafa a fljótur hönnun fundur fyrst. Hins vegar þegar þú gerir svo fundur:

  • halda þeim stutt
  • ekki að reyna að takast á öll smáatriði (bara mikilvægustu sjálfur)
  • meðhöndla leiðir hönnun eins og skissu, ekki eins og a lokahönnun

Síðasta lið er þess virði vaxandi. Þegar þú gera sumir upp-framan hönnun, munt þú óhjákvæmilega komast að því að sumir þættir hönnunar eru rangar, og þú uppgötvar bara þetta þegar erfðaskrá. Það er ekki vandamál að veita sem þú þá breyta hönnun. Vandræði koma þegar fólk heldur að hönnun er gert, og þá ekki taka þá þekkingu sem þeir fengist í gegnum forritun og keyra það aftur í hönnun.

Breyting á hönnun þýðir ekki endilega að breyta skýringarmyndir. Það er fullkomlega eðlilegt að draga skýringarmyndir sem hjálpa þér að skilja hönnun og þá henda skýringarmyndir burt. Teikning þá hjálpaði, og það er nóg að gera þá virði. Þeir þurfa ekki að verða varanleg artifacts. Besta UML skýringarmynd eru ekki artifacts.

A einhver fjöldi af XPers nota CRC spil. Það er ekki í bága við UML. Ég nota blöndu af CRC og UML allra tíma, með því að nota hvort sem tækni er gagnlegur fyrir starfið á hendi.

Önnur notkun UML skýringarmyndir er viðvarandi skjöl. Í venjulegum formi er þetta líkan búsettir á CASE tól. Hugmyndin er sú að halda þessum gögnum hjálpar fólki að vinna á kerfinu. Í reynd oft hjálpar ekki á öllum.

  • það tekur of langan tíma að halda skýringarmyndir upp til dagsetning, svo að þeir falla út af sync með kóða
  • þeir eru falin í CASE tól eða þykka bindiefni, þannig að enginn lítur á þá

Svo ráðgjöf á áframhaldandi skjöl rennur úr þessum vart vandamálum:

  • Aðeins skal nota skýringarmyndir sem þú getur haldið upp til dagsetning án áberandi sársauka
  • Setja skýringarmyndir þar sem allir geta auðveldlega séð þær.  Ég eins og að birta þær á vegg. Hvetja fólk til að breyta vegg eintak með penna fyrir einföldum breytingum.
  • Borga eftirtekt til hvort fólk er að nota þær, ef ekki henda þeim í burtu.

Síðasti þáttur notkun UML er til skjöl í handover aðstæður, svo sem þegar einn hópur hendur yfir til annars. Hér er XP lið sem framleiða skjöl er notandi saga eins og allir aðrir, og þannig virði hennar ræðst af viðskiptavininum. Aftur UML er gagnlegt hér, enda eru skýringarmyndir eru sérhæfðir til að hjálpa samskipti. Mundu að kóðinn er geymsla nákvæmar upplýsingar, sem skýringarmyndir athöfn að draga saman og varpa ljósi mikilvæg mál.

Á samlíking

Allt í lagi ég gæti eins vel sagt það opinberlega – ég hef enn ekki fengið að hanga á þessu samlíking hlutur. Ég sá það að vinna, og vinna vel á C3 verkefnið, en það þýðir ekki að ég hafa allir hugmynd hvernig á að gera það, hvað þá hvernig á að útskýra hvernig á að gera það.

Í XP æfa samlíking er byggð á aðferðum Ward Cunninghams sig á kerfi nöfnum. Aðalatriðið er að þú kemur upp með vel þekkt mengi nöfnum sem virkar eins og orðaforða til að tala um lén. Þetta kerfi nöfn spilar inn í the vegur þú nafn bekkjum og aðferðir í kerfinu

Ég hef byggt upp kerfi nöfn með því að byggja upp hugmyndafræðilegs líkan af léninu. Ég hef gert þetta með léninu sérfræðinga með UML eða forveri hans. Ég hef fundið að þú verður að vera varkár að gera þetta. Þú þarft að halda að lágmarki einföldum setja af merki, og þú verður að verja gegn því að láta einhverjar tæknileg vandamál creeping í líkaninu. En ef þú gerir þetta sem ég hef komist að því að hægt er að nota þetta til að byggja upp orðaforða lénsins að ríki sérfræðingar geta skilið og notað til að hafa samskipti við hönnuði. Líkanið passar ekki í bekknum hönnun fullkomlega, en það er nóg til að gefa sameiginlega orðaforða á öllu ríki.

Nú er ég ekki séð neina ástæðu fyrir því að þetta orðaforða getur ekki verið metafórísk einn, eins og C3 samlíking sem breyttist launaskrá í verksmiðju færiband. En ég líka skil ekki af hverju byggja vélina þína af nöfnum á orðaforða lénsins er svo slæm hugmynd heldur. Né er ég hallast að yfirgefa tækni sem virkar vel fyrir mig í að fá kerfi nöfn.

Oft er fólk að gagnrýna XP á þeim grundvelli að þú þarft að minnsta kosti sumir útlínur hönnun kerfis. XPers bregðast oft við svarið “það er samlíking”. En ég samt held ekki að ég hef séð samlíking útskýrt á sannfærandi hátt. Þetta er alvöru skarð í XP, og einn að XPers þarft að raða út.

Viltu vera arkitekt þegar þú vaxa upp?

Fyrir mikið af síðasta áratug, hugtakið “hugbúnaður arkitekt” hefur orðið vinsæll. Það er hugtak sem erfitt er persónulega fyrir mig að nota. Konan mín er burðarvirki verkfræðingur. Sambandið milli verkfræðinga og arkitekta er … áhugavert. Uppáhalds mitt var “arkitektar eru góð fyrir þriggja B áratugnum: perur, runnum, fuglar”. Sú hugmynd er að arkitektar koma upp með öllum þessum fallegum teikningum, en það er að verkfræðingar sem hafa til þess að tryggja að þeir í raun og veru getur staðið upp. Þess vegna hef ég forðast hugtakið hugbúnaður arkitekt, eftir allt ef eigin konan mín getur ekki meðhöndla mig með faglega virðingu sem tækifæri get ég stend með öðrum?

Í hugbúnaði, hugtakið arkitektinn þýðir margt. (Í hugbúnaði hvaða orð þýðir margt.) Almennt er þó miðlar það ákveðna gravitas, eins og í “ég er ekki bara aðeins forritari – Ég er arkitekt”. Þetta gæti þýtt “ég er arkitekt núna – ég er of mikilvægt að gera allir forritun”. Spurningin verður þá einn af hvort aðgreina þig frá mundane forritun viðleitni er eitthvað sem þú ættir að gera þegar þú vilt æfa tæknilega forystu.

Þessi spurning býr gríðarlegt magn af tilfinningum. Ég hef séð fólk fá mjög reiður á þeirri hugsun að þeir hafa ekki hlutverki lengur eins arkitekta. “Það er enginn staður í XP fyrir reynda arkitekta” er oft gráta Ég heyri.

Mikið og í hlutverki hönnunar sig, ég held ekki að það er raunin að XP er ekki að meta reynslu eða góða færni hönnun. Reyndar margir talsmenn XP – Kent Beck, Bob Martin, og auðvitað Ward Cunningham – eru þeim, sem ég hef lært mikið um hvað hönnun er um. Þó það þýðir að hlutverk þeirra breytist frá því sem fullt af fólki að sjá sem hlutverk tæknilegra forystu.

Sem dæmi, ég vitnað einn af tæknilegum leiðtogum okkar í ThoughtWorks: Dave Rice. Dave hefur verið í gegnum nokkur líf-hringrás og hefur gert ráð fyrir óopinber skikkju tæknilega leiða á fimmtíu manna verkefni. Hlutverk hans sem leiðtogi þýðir að eyða miklum tíma með öllum forriturum. Hann mun vinna með forritara þegar þeir þurfa hjálp, hann lítur í kring til að sjá sem þarfnast hjálpar. Verulegur merki er þar sem hann situr. Sem langan tíma ThoughtWorker, hann gæti nokkuð vel hafa allir skrifstofu hann vildi. Hann deildi einn um stund með Cara, að gefa út stjórnanda. Hins vegar á undanförnum mánuðum flutti hann út í buskann stæði þar sem forritarar vinna (með opna “stríð room” stíl sem XP favors.) Þetta er mikilvægt að honum vegna þess að þetta hætti hann sér hvað er að gerast, og er í boði að lána hendi þar sem það er þörf.

Þeir sem þekkja XP mun átta sig á að ég er að lýsa skýr XP hlutverk þjálfara. Örugglega einn af nokkrum leikjum með orðum sem XP gerir er að það kallar leiðandi tæknilega mynd sem “Coach”. Merkingin er skýr: í XP tæknilega forystu er sýnt með því að kenna forriturum og hjálpa þeim að taka ákvarðanir. Það er eitt sem krefst góða fólk færni sem og góða tæknikunnáttu. Jack Bolles á XP 2000 sagði að það er lítið pláss nú fyrir Lone meistara. Samstarf og kennsla eru lykillinn að velgengni.

Á ráðstefnunni kvöldmat, Dave og ég talaði við söngvara andstæðingi XP. Eins og við ræddum hvað við gerðum, líkt í nálgun okkar voru alveg merkt. Við líkaði aðlagandi, endurtekningu þróun. Próf var mikilvægt. Þannig að við vorum undrandi á ákafa andstöðu sína. Þá kom yfirlýsing hans, á sömu nótum “það síðasta sem ég vil er forritari refactoring mín og monkeying kring með hönnun”. Nú var allt skýrt. Huglæg Gulf var frekar explicated af Dave sagði við mig eftir “ef hann treystir ekki forritari hans hvers vegna hann ráða þá?”. Í XP er mikilvægast að reynslu verktaki getur gert er að fara á eins marga hæfileika og hann getur að fleiri yngri hönnuði. Í stað þess að arkitekt sem gerir allar mikilvægar ákvarðanir, þarftu þjálfara sem kennir verktaki til að taka mikilvægar ákvarðanir. Eins Ward Cunningham bent, eftir að hann magnar færni sína, og bætir meira að verkefni en nokkur einn hetja dós.

Baka

Á XP 2002 Enrico Zaninotto gaf heillandi ræðu sem fjallað er bind-ins milli lipur aðferðir og halla framleiðslu. útsýni hans var að eitt af helstu þætti báðum aðferðum var að þeir glíma flókið með því að minnka óafturkræf í ferlinu.

Í þessu ljósi einn af the aðalæð uppspretta af flókið er óafturkræf af ákvörðunum. Ef þú getur auðveldlega breytt ákvarðanir þínar, þetta þýðir að það er síður mikilvægt að fá þá rétt – sem gerir lífið miklu einfaldara. Afleiðingin fyrir þróun hönnunar er að hönnuðir þurfa að hugsa um hvernig þeir geti forðast óafturkræf í ákvörðunum sínum. Frekar en að reyna að fá rétta ákvörðun nú, að leita að leið til að annaðhvort setja á ákvörðun fyrr en seinna (þegar þú ert meiri upplýsingar) eða gera ákvörðun á þann hátt sem þú munt vera fær um að snúa henni seinna án mikilla erfiðleika.

Þessi ákvörðun að styðja viðsnúningshæfni er ein af ástæðum þess að lipur aðferðir setja mikið af áherslum á kóðann eftirlitskerfi, og setja allt í slíku kerfi. Þó að þetta tryggir ekki til baka, sérstaklega fyrir þráði-bjuggu ákvarðanir, er það veita grunn sem gefur sjálfstraust til lið, jafnvel ef það er sjaldan notað.

Hönnun fyrir afturkræfni einnig felur í sér ferli sem gerir villur mæta hratt. Eitt af gildum endurtekningu þróun er að hraður endurtekningar leyfa viðskiptavinum að sjá kerfið eins og það vex, og ef mistök eru gerð í kröfur er hægt að sást og fastur fyrir að kostnaður við að ákveða verður prohibitive. Þetta sama hröð blettablæðingar er einnig mikilvægt fyrir hönnun. Þetta þýðir að þú þarft að setja það upp þannig að hugsanlega vandamál svæði eru ört prófaðar til að sjá hvað mál koma. Það þýðir líka að það er þess virði að gera tilraunir til að sjá hvernig harður framtíð breytingar geta verið, jafnvel ef þú ert ekki í raun að gera alvöru breytingar núna – í raun að gera innkast burtu frumgerð á grein á kerfinu. Nokkur lið hafa skýrslur reyna út í framtíðinni breytingu snemma í frumgerð ham til að sjá hversu erfitt það væri að vera.

Viljinn til að hanna

Þó að ég hef einbeitt mikið af tæknilegum venjur í þessari grein, eitt sem er of auðvelt að fara út er mannlegur þáttur.

Til þess að vinna, þróunar hönnun þarf afl sem knýr hann að renna. Þetta afl getur aðeins komið frá fólki – einhver í liðinu verður að hafa staðfestu til að tryggja að hönnun gæði helst hátt.

Þetta mun ekki hafa komið frá öllum (þó það sé gott ef það gerist), yfirleitt bara einn eða tveir menn í liðinu að taka á ábyrgð að halda hönnun heild. Þetta er eitt af þeim verkefnum sem venjulega fellur undir hugtakið “arkitekt”.

Þessi ábyrgð þýðir að halda stöðugt auga á kóða basa, að leita að sjá hvort einhver svæði henni eru að fá sóðalegur, og þá taka skjótt við til að leiðrétta þetta vandamál áður en það fær úr böndunum. Umsjónarmaður hönnun þarf ekki að vera sá sem fastur það – en þeir þurfa til að tryggja að það gerist fastur við einhvern.

Skortur á vilja til að hanna virðist vera mikil ástæða þróunar hönnun getur mistekist. Jafnvel þótt fólk þekkir því sem ég hef talað um í þessari grein, án þess að vilja hanna muni ekki eiga sér stað.

Hlutir sem erfitt er að refactor í

Getum við notað refactoring að takast á við allar ákvarðanir hönnun, eða eru nokkur atriði sem eru svo útbreiddur að þeir eru erfitt að bæta við í seinna? Á því augnabliki, XP rétttrúnaði er að allir hlutir eru auðvelt að bæta þegar þú þarft þá, svo YAGNI gildir alltaf. Ég velti því ef það eru undantekningar. Gott dæmi um eitthvað sem er umdeilt að bæta síðar er alþjóðavæðingu. Er þetta eitthvað sem er svo sársauki til að bæta seinna að þú ættir að byrja með það strax?

Ég gæti auðveldlega ímynda sér að það eru nokkur atriði sem myndu falla í þennan flokk. Hins vegar er sú staðreynd að við höfum enn mjög lítið af gögnum. Ef þú ert að bæta við eitthvað, eins og alþjóðavæðingu, í seinna þú ert mjög meðvitaður um fyrirhöfn sem það tekur að gera það. Þú ert minna meðvituð um átak það væri í raun hafa tekið, viku eftir viku, til að setja það í og ​​halda það áður en það var í raun þörf. Einnig þú ert minna meðvitaðir um þá staðreynd að þú getur vel hafa fengið það rangt, og þannig þarf að gera sumir refactoring engu að síður.

Hluti af réttlætingu YAGNI er að margir af þessum möguleika þörfum enda ekki verið þörf, eða að minnsta kosti ekki á þann hátt sem þú vilt búast. Með því að gera þeim, munt þú spara heilmikið átak. Þó að það verði átak þarf til að refactor einföld lausn í það sem þú þarft í raun og veru, þetta refactoring er líklegt til að vera minni vinna en að byggja allar vafasama aðgerðir.

Annað mál að hafa í huga í þessu er hvort þú veist í raun hvernig á að gera það. Ef þú hefur gert alþjóðavæðingu nokkrum sinnum, þá veistu munstur sem þú þarft að ráða. Eins og svo þú ert líklegri til að fá það rétt. Bæti Fyrirsjáanlegar mannvirki er sennilega betra ef þú ert í þeirri stöðu, en ef þú ert nýr til the vandamál. Svo mitt ráð væri að ef þú veist hvernig á að gera það, þú ert í aðstöðu til að dæma úr kostnaði við að gera það núna til að gera það síðar. Hins vegar ef þú hefur ekki gert það áður, ekki bara þú ert ekki fær um að meta kostnað nógu vel, þú ert einnig ólíklegri til að gera það vel. Í því tilviki sem þú ættir að bæta við það síðar. Ef þú bætir það þá, og finna sárt, þú munt sennilega vera betri en þú hefði verið þú bætt því snemma. Liðið er reyndari, þú veist lénið betur, og þú skilja kröfur betur. Oft í þessari stöðu sem þú horfir aftur á hversu auðvelt það hefði verið með 20/20 hyggja. Það kann að hafa verið miklu erfiðara að bæta við það fyrr en þú heldur.

Þegar við byrjuðum ferðina okkar í þróun hönnun á ThoughtWorks við hljóp rétt í þeirri spurningu hvort það væri hægt að hanna gagnasafn í þróun tísku. Takk fyrir viðleitni Pramod Sadalage, uppgötvuðum við að það er greinilega gæti verið, og að þekking hafi staðið okkur vel nú síðan. Fyrir frekari upplýsingar er hægt að lesa greinina þar sem við sýndum þessar aðferðir til heimsins á síðuna mína.

Þessi tengsl einnig í spurningunni um röðun á sögum. Í skipulagi XP, Kent og ég ætlað opinskátt ágreiningi okkar. Kent er í þágu láta virði að vera eini þátturinn í akstri röðun af sögum. Eftir fyrstu ágreiningur Ron Jeffries sammála núna með þetta. Ég er enn í vafa. Ég held að það er jafnvægi á milli virði fyrirtækja og tæknilega áhættu. Þetta myndi keyra mig til að veita að minnsta kosti sumir alþjóðavæðingu snemma til að draga úr þessari áhættu. Hins vegar er þetta aðeins sönn ef þurfti alþjóðavæðingu í fyrstu útgáfu. Fá að gefa út eins hratt og mögulegt er afar mikilvægt. Allar viðbótarupplýsingar flókið er þess virði að gera eftir að fyrstu útgáfu ef það er ekki þörf fyrir fyrstu útgáfu. Máttur flutt, gangi kóða er gríðarlegur. Það fjallar viðskiptavina athygli, vex trúverðugleika, og er gegnheill uppspretta náms. Gera allt sem þú getur til að koma þann dag nær. Jafnvel ef það er meira átak til að bæta eitthvað eftir fyrstu útgáfu, það er betra að sleppa fyrr.

Með hvaða nýja tækni og það er eðlilegt að talsmenn hennar eru í vafa um Mörkin skilyrði hennar. Flestir XPers hefur verið sagt að þróunar hönnun er ómögulegt fyrir ákveðinn vanda, aðeins til að uppgötva að það er örugglega hægt. Að sigra á “ómögulegt” aðstæður leiðir til trausti þess að allar slíkar aðstæður er hægt að sigrast á. Auðvitað er ekki hægt að gera slíka alhæfingu, en þangað til XP samfélagið hits mörkum og ekki getum við aldrei verið viss um hvar þessi mörk liggja, og það er rétt að reyna að ýta út hugsanlega mörk sem aðrir kunna að hafa.

(Í nýlegri grein eftir Jim Shore fjallar sumum tilvikum, þar á meðal alþjóðavæðingu, þar sem hugsanlegir mörkin reyndist ekki vera hindranir eftir allt saman.)

Er hönnun gerast?

Einn af þeim erfiðleikum af þróun hönnunar er að það er mjög erfitt að segja hvort hönnunin er í raun að gerast. Hættan á að blanda hönnun með forritun er að forritun getur gerst án þess að hönnun – þetta er staðan sem þróunar hönnun víkur og mistekst.

Ef þú ert í þróun lið, þá skynja hvort hönnun er að gerast með gæðum kóða basa. Ef kóðinn stöð er að fá flóknari og erfiðara að vinna með, það er ekki nóg hönnun að fá gert. En því miður er þetta huglægt sjónarmið. Við höfum ekki áreiðanlegar mælingar sem geta gefið okkur óhlutdrægt mat á hönnun gæði.

Ef þetta skortur á sýnileika er erfitt fyrir tæknilega fólk, það er miklu meira ógnvekjandi fyrir non-tæknilegur meðlimum lið. Ef þú ert umsjónarmaður eða viðskiptavinur hvernig getur þú sagt ef hugbúnaðurinn er vel hannaður? Það skiptir þig því illa hönnuð hugbúnaður vilja vera dýrara að breyta í framtíðinni. Það er ekkert auðvelt svar við þessu, en hér eru nokkrar vísbendingar.

  • Hlusta á tæknilegum fólk. Ef þeir eru að kvarta um erfiðleika á að gera breytingar, þá taka slíkar kvartanir alvarlega og gefa þeim tíma til að laga hlutina.
  • Hafðu auga á hversu mikið númer er hent. A verkefni sem er heilbrigt refactoring verður stöðugt að eyða slæmt kóða. Ef ekkert er að fá eytt, þá er það nánast örugglega merki um að það er ekki nóg refactoring gerast – sem mun leiða til hnignunar hönnun. Hins vegar eins og allir mælikvarða getur verið misnotuð, að mati góð tæknilega fólk trumps hvaða mælikvarðann, þrátt fyrir huglægni þess.

Svo er hönnun dauður?

Ekki með neinum hætti, en eðli hönnun hefur breyst. XP hönnun lítur út fyrir eftirfarandi færni

  • A stöðug löngun til að halda kóða eins skýr og einföld og mögulegt er
  • Refactoring færni þannig að þú getur öryggi gera úrbætur þegar þú sérð þörf.
  • Góð þekking á mynstri: Ekki bara lausnir heldur einnig styrkjast þegar á að nota þá og hvernig á að þróast í þá.
  • Hönnun með auga til framtíðar breytingum, vitandi að ákvarðanir nú verður að breyta í framtíðinni.
  • Vitandi hvernig á að senda hönnun til the fólk sem þarf að skilja það, og nota kóða, skýringarmynd og umfram allt: samtal.

Það er ógnvekjandi úrval af færni, en þá að vera góður hönnuður hefur alltaf verið sterkur. XP er í raun ekki að gera það auðveldara, að minnsta kosti ekki fyrir mig. En ég held XP hjartarskinn gefa okkur nýja leið til að hugsa um árangursríka hönnun vegna þess að það hefur gert Evolutionary hanna plausible stefnu aftur. Ég er stór aðdáandi af þróun – annars hver veit hvað ég gæti verið?


© Martin Fowler