Pregled vzorčnih jezikov načrtovanja programov

Pregled vzorčnih jezikov načrtovanja programov

ki sta jih uredila James O. Coplien in Douglas C. Schmidt
Addison Wesley, 1995, 562 strani

Pregledal:
Eugene Wallingford
Oddelek za računalništvo
Univerza Severne Iowe
Cedar Falls, Iowa 50614-0507
wallingf@cs.uni.edu


V zadnjih petih letih se je pojavila živahna skupnost raziskovalcev in strokovnih delavcev okoli ideje vzorcev. Prvotno raziskoval arhitekt Christopher Alexander, vzorci in vzorčni jeziki zajemajo skupno modrost o dobrem dizajnu in ga predstavijo v literarni obliki, ki drugim omogoča, da ponovno uporabijo to izkušnjo. Vsak vzorec obravnava določen problem oblikovanja v določenem kontekstu, obravnava sile, ki otežujejo iskanje dobre rešitve, in predstavlja rešitev, za katero je bilo ugotovljeno, da je uspešna pri posredovanju teh sil. Nič o vzorcih ni povsem objektivno usmerjeno, vendar velika večina dela v skupini vzorcev vključuje analizo in oblikovanje OO.

S to knjigo uredniki Jim Coplien in Doug Schmidt predstavljajo svet na splošno različnim vzorcem skupnosti. Poglavja vzorčnih jezikov programskega oblikovanja temeljijo na dokumentih, predstavljenih na prvi letni konferenci vzorčnih jezikov programov, ki je potekal avgusta 1994. To je bila nova vrsta konference, kjer ljudje niso predstavljali novih raziskav, temveč “starih” rešitev, ki so jih večkrat uporabili v lastnih programskih praksah. Osrednja značilnost PLoP je bila uporaba pisateljske delavnice namesto tradicionalnih predstavitev papirja. Na delavnicah so pisci poslušali majhno skupino recenzentov, ki so se pogovarjali o svojih dokumentih, njihovih idejah in učinkovitosti njihove oblike. Kot rezultat, Coplien in Schmidt trdita, da so poglavja v tej knjigi zagotovo med najbolj intenzivno urejena dela v sodobni programski literaturi. To ni prazninski zahtevek; vsako poglavje knjige je informativno, dobro napisano in prijetno branje.

Oddelki 1, 5 in 7 predstavljajo vzorce, ki so večinoma splošni za pojem objektno usmerjenega razvoja programske opreme. V prvem poglavju se štiri poglavja nanašajo na uporabo vzorcev pri razvoju okvirov in komponent, ki jih je mogoče ponovno uporabiti. Ta poglavja kažejo tudi veliko širino vzorčne literature. Poglavje 2 z Riehle in Zullighoven opisuje vzorec jezik za oblikovanje okvirov z vidika orodij in materialov. Ekstrapolirajo iz zanimive metaforke v niz modelov, ki predstavljajo vpogled v zasnovo večine vseh aplikacijskih okvirov. Po drugi strani pa poglavje 1, ki ga je predstavil Adams, predstavlja samo en vzorec <Funkcionalnost Ala Carte <na samo dveh straneh. Ta vzorec obravnava težavno vprašanje, kako razširiti zmogljivosti okvira, ne da bi privedli do neželenih kompromisov v uspešnosti.

Poglavja v 5. razdelku se poglabljajo v vprašanje klasifikacije vzorcev. Dva od teh poglavij se osredotočata na različne dimenzije, na podlagi katerih se lahko organizirajo vzorci, tako da lahko oblikovalci programske opreme prepoznajo ustrezne vzorce v pravem trenutku. Poglavje, ki sem ga zanimalo najbolj zanimivo, je bil katalog Robertovih vzorcev vzorcev, ki jih je našel v velikem številu obstoječih kod. Martinovi vzorci praktično obravnavajo vrste odločitev razvijalcev v vseh velikih programskih projektih. Končno, 7. poglavje vključuje vzorce pri oblikovanju posameznih predmetov. ki spodbujajo ponovno uporabo. Dve od teh poglavij so med najboljšimi v knjigi. Opis Viljamaa vzorca Client-Specified Self v poglavju 26 jasno razlaga rešitev problema prenosa odgovornosti v kontekstih, kjer se lahko vloga, ki jo ima predmet, dinamično spremeni. V poglavju 27 Auer daje vzorčni jezik za oblikovanje objektov, ki uporabljajo samokapacilo. Ta tehnika privede do objektov, ki se v okviru prihodnjih podrazredov maksimalno ponovno uporabijo. To poglavje je tako dobro in obravnava tako pomemben problem, da bi bilo treba branje za vse objektno usmerjene programerje.

Oddelki 2, 6 in 8 se nanašajo na vzorce porazdeljenih računalnikov. Bogastvo te domene je vodilo k bogatenju dela v skupini vzorcev o vprašanjih sinhronizacije, vzporednosti, integracije aplikacij in obravnave dogodkov. Poglavja v teh oddelkih predstavljajo vzorce, ki zanimajo tudi oblikovalci, ki ne delujejo na tem področju, od katerih je ta pregledovalec eden. Njihova vrednost izhaja iz vrednosti vzorca, ki spodbuja razpravljanje o problemih in rešitvah na ravni, ki naredi zanimive oblikovne odločitve eksplicitne in jasne. Mnoge od teh odločitev se pojavljajo, čeprav v nekoliko drugačnih oblikah, v drugih vrstah sistemov, zato vzorci zagotavljajo obliko navdiha, ki morda drugače ni na voljo. Med bolj splošno dostopnimi poglavji v teh oddelkih so razprave Meszaros o vzorcu Half-Object Plus protokola za razgradnjo posameznega predmeta na več gostiteljih na način, ki je pregleden za uporabnike, in Schmidtov reaktorski vzorec za prepoznavanje in pošiljanje večje obravnave dogodkov v dogodek usmerjen sistem.

Oddelek 3 je edini oddelek, ki je specifičen za določeno domeno, to je poslovanje. Kot oseba z izkušnjami, ki gradijo modele poslovnih procesov in strokovnega znanja, sem ugotovila, da je to tanko poglavje treh poglavij izredno zanimivo. Ta poglavja ponovno prikazujejo veliko širino vzorčne literature. Poglavje 11, ki ga pripravi Wake, prikazuje posamezen vzorec za predmete številke računa. Njegova kratka razprava o vprašanjih, na katerih temeljijo specifikacije, ustvarjanje in uporaba teh objektov, je lucidna in polna pomembnih točk. V poglavju 10 Cunningham obravnava temo navidezne preprostosti <preverjanje podatkov v vstopnih sistemih <in obvlada razumljiv jezik enajstih vzorcev, ki zajame temeljno strokovno znanje za ohranjanje celovitosti informacij v raznolikem programskem sistemu.

Oddelek 4 razširi temo oblikovanja programov v naslov knjige v najširšem pomenu, procesu in organizaciji razvoja programske opreme. Vsako od štirih poglavij v tem poglavju bo veliko zanimanje za vsakogar, ki se ukvarja z gradnjo velikih programskih sistemov. V poglavju 13 Copliena je opisan jezik štiridesetih vzorcev za generativni razvoj kakovostne programske opreme, ki temelji na obsežni študiji uspešnih programskih projektov. Ti vzorci pokrivajo celotno paleto dejavnosti velikosti organizacije, da nadomestijo uspeh. Poglavje 14, ki so ga predstavili Foote in Opdyke, predstavlja vzorce, ki obravnavajo vprašanja evolucije v objektnih sistemih in kako lahko oblikovalci olajšajo naravni tok iz prototipa z razširitvijo odgovornosti na konsolidacijo zrelega predmeta v dostavljenem sistemu. Whitenack opisuje začetek vzorčnega jezika za analizo zahtev v poglavju 15. Končno, v poglavju 16, Kerth poroča o vzorčnem jeziku, katerega cilj je “čiščenje” analize faze razvoja programske opreme. Njegova trditev je, da so bili pred oblikovanjem takih vzorčnih jezikov proces analize in oblikovanja tako težko opisati, da so se razmišljanja o načrtovanju (kot so kategorije objektov) v analizi mešale.

Glede knjige kot celote je skupno osem oddelkov, ki so v večini zbirk konferenčnih dokumentov občasni. Tema vzorca je še vedno sveža v skupnosti, avtorji vseh tridesetih poglavij pa so napisali o vzorcih na način, ki zagotavlja presenetljivo enotnost v knjigi. Na žalost se ta enotnost manifestira tudi v precejšnji odvečnosti v poglavjih in v bibliografijah. Narativni opisi Alexanderovih vzorcev in navdiha do programske skupnosti dejansko dajejo dober občutek domačnosti v postopkih, vendar ponavljajoči se bibliografski zapisi naredijo naslednje citate v papirnicah težko nalogo. Eden stranski učinek je, da je mogoče dokumente prebrati sorazmerno neodvisno drug od drugega, čeprav bi predlagal veliko branje knjige, da bi lahko dobil celoten učinek vzorcev, ki jih ponujajo.

Novost polja tudi pomeni, da mnogi avtorji opisujejo vzorce, ki so zelo podobni drugim, opisanim drugje v besedilu. Naloga, ki ostaja za vzorčno skupnost, je integracija različnih, vendar podobnih vzorčnih jezikov v skladne celote. Toda ta naloga ne bo enostavna, saj se v poglavju 16 razpravlja o Kerthu. Nazadnje, knjiga kaže dobro ravnovesje vzorcev, ki niso jezikovno osredotočeni, vendar se pogosto poročajo v kontekstu enega samega jezika (običajno Smalltalk ali C + + ).

Coplien in Schmidt sta sestavila zelo berljivo in informativno raziskavo dela, ki se opravlja na vzorcih za načrtovanje programske opreme. Priznavajo v svojem predgovoru, da je širok spekter problemov in rešitev, predstavljenih v tem prvem delu, zahteval bralca in da zato vsa poglavja ne bodo enako zanimiva za vsakega bralca. S tem ocenjevanjem se strinjam, vendar se strinjam tudi s svojo spodbudo, da se udeležim vseh osem poglavij. Po skeniranju skozi knjigo prvič, moj um je tekel z idejami, ki so jih posadili ali prebudili različni dokumenti v knjigi. Te zamisli so zahtevale moje drugo branje, v katerem sem lahko precej globlje razumel pomen nekaterih poglavij. In če imate le omejen čas, vas prosimo, da preberete poglavje 4 o procesu in organizaciji. Ponazarja vzorčni pristop, zajame duh proučevanja procesa za artefaktom in je primeren za bralce vseh okolij. Po branju, boste skoraj zagotovo želeli iti nazaj za več.