rassuzhdeniyah predpolagalos', chto tol'ko pervaya kontrol'naya tochka byla neverno rasschitana. Esli 1 marta sdelat' konservativnoe predpolozhenie, chto ves' grafik byl izlishne optimistichen, kak otrazheno na risunke 2.7, trebuetsya dobavit' 6 chelovek k ishodnoj zadache. Raschet vozdejstviya obucheniya, pereraspredeleniya zadach i sistemnogo testirovaniya predostavlyaetsya sdelat' chitatelyu v kachestve uprazhneniya. Net somnenij, chto pri popytke ulozhit'sya v srok v itoge poluchitsya hudshij produkt, chem pri izmenenii grafika i sohranenii pervonachal'nyh troih chelovek bez usileniya. Krajne uproshchaya, sformuliruem Zakon Bruksa: Esli proekt ne ukladyvaetsya v sroki, to dobavlenie rabochej sily zaderzhit ego eshche bol'she. |to razvenchivaet mif o cheloveko-mesyace. Prodolzhitel'nost' osushchestvleniya proekta zavisit ot ogranichenij, nakladyvaemyh posledovatel'nost'yu rabot. Maksimal'noe kolichestvo razrabotchikov zavisit ot chisla nezavisimyh podzadach. |ti dve velichiny pozvolyayut poluchit' grafik rabot, v kotorom budet men'she zanyatyh razrabotchikov i bol'she mesyacev. (Edinstvennaya opasnost' zaklyuchaetsya v vozmozhnom ustarevanii produkta.) Nel'zya, odnako, sostavit' rabotayushchie grafiki, v kotoryh zanyato bol'she lyudej i trebuetsya men'she vremeni. Programmnye proekty chashche provalivayutsya iz-za nehvatki kalendarnogo vremeni, chem po vsem ostal'nym prichinam vmeste vzyatym. Glava 3. Opracionnaya brigada |ti issledovaniya vyyavili bol'shie individual'nye razlichiya v proizvoditel'nosti mezhdu luchshimi i hudshimi rabotnikami, chasto na poryadok velichin. SAKMAN, |RIKSON I GRANT1 Na vstrechah komp'yuternyh specialistov mozhno postoyanno slyshat' utverzhdeniya molodyh menedzherov programmnyh proektov, chto im predpochtitel'nej nebol'shie deyatel'nye komandy pervoklassnyh specialistov, chem proekty, v kotoryh uchastvuyut sotni programmistov, chto podrazumevaet ih srednij uroven'. I vsem nam tozhe. Takoe naivnoe predstavlenie al'ternativ uhodit ot resheniya slozhnoj zadachi - kak sozdavat' bol'shie sistemy v razumnye sroki? Rassmotrim etot vopros bolee podrobno so vseh storon. Problema Menedzhery programmnyh proektov davno ponyali, chto horoshie i plohie programmisty ochen' sil'no razlichayutsya mezhdu soboj po proizvoditel'nosti. Odnako real'no izmerennye velichiny porazitel'ny. V odnom iz issledovanij Sakman (Sackman), |rikson (Erikson) i Grant (Grant) izmeryali proizvoditel'nost' truda v gruppe opytnyh programmistov. Vnutri odnoj lish' etoj gruppy sootnoshenie mezhdu luchshimi i hudshimi rezul'tatami sostavilo primerno 10:1 po proizvoditel'nosti truda i 5:1 po skorosti raboty programm i trebuemoj dlya nih pamyati! Koroche, programmist, zarabatyvayushchij 20 tysyach dollarov v god, mozhet byt' v desyat' raz produktivnee programmista, zarabatyvayushchego 10 tysyach dollarov. Pravda, vozmozhno i obratnoe. Poluchennye dannye ne vyyavili kakoj-libo korrelyacii mezhdu stazhem raboty i proizvoditel'nost'yu. (YA ne uveren, chto eto vsegda spravedlivo.) Vyshe ya dokazal, chto samo chislo razrabotchikov, dejstviya kotoryh nuzhno soglasovyvat', okazyvaet vliyanie na stoimost' proekta, poskol'ku znachitel'naya chast' izderzhek vyzvana neobhodimost'yu obshcheniya i ustraneniya otricatel'nyh posledstvij razobshchennosti (sistemnaya otladka). |to takzhe navodit na mysl', chto zhelatel'no razrabatyvat' sistemy vozmozhno men'shim chislom lyudej. Dejstvitel'no, opyt razrabotki bol'shih programmnyh sistem, kak pravilo, pokazyvaet, chto podhod s pozicij gruboj sily vlechet udorozhanie, zamedlennost', neeffektivnost', a sozdavaemye v rezul'tate sistemy ne yavlyayutsya konceptual'no celostnymi. Spisok, illyustriruyushchij eto, beskonechen: OS/360, Exec 8, Scop 6600, Multics, TSS, SAGE i drugie. Vyvod prost: esli nad proektom rabotayut 200 chelovek, vklyuchaya menedzherov, yavlyayushchihsya naibolee znayushchimi i opytnymi programmistami, uvol'te 175 bojcov, i pust' menedzhery snova zajmutsya programmirovaniem. Davajte rassmotrim eto reshenie. S odnoj storony, emu ne udaetsya priblizit'sya k idealu nebol'shoj aktivnoj komandy, v kotoroj, po obshchemu priznaniyu, dolzhno byt' ne bolee 10 chelovek. Poetomu razmer brigady predpolagaet nalichie kak minimum dvuh urovnej upravleniya, ili okolo pyati menedzherov. Potrebuyutsya dopolnitel'ny finansovye rashody, sotrudniki, mesto dlya raboty, sekretari i operatory mashin. S drugoj storony, ishodnaya komanda iz 200 chelovek imela chislennost', nedostatochnuyu dlya sozdaniya dejstvitel'no krupnyh sistem metodom gruboj sily. Rassmotrim, k primeru, OS/360. Odno vremya v ee sozdanii bylo zanyato bol'she 1000 chelovek - programmistov, sostavitelej dokumentacii, operatorov, klerkov, sekretarej, menedzherov, vspomogatel'nyh grupp i t.d. S 1963 po 1966 god na ee proektirovanie, realizaciyu i napisanie dokumentacii bylo zatracheno, veroyatno, okolo 5000 cheloveko-let. Esli by strogo soblyudalas' proporciya mezhdu kolichestvom zanyatyh i prodolzhitel'nost'yu rabot, nashej predpolagaemoj komande iz dvuhsot chelovek potrebovalos' by 25 let, chtoby dovesti produkt do segodnyashnego urovnya! V etom i sostoit iz®yan idei malen'koj aktivnoj komandy: dlya sozdaniya po- nastoyashchemu krupnyh sistem ej potrebuetsya slishkom mnogo vremeni. Posmotrim, kak razrabotka OS/360 osushchestvlyalas' by malen'koj aktivnoj komandoj, dopustim, iz 10 chelovek. Polozhim, chto oni v sem' raz bolee produktivny srednih programmistov (chto daleko ot istiny). Dopustim, chto umen'shenie ob®ema obshcheniya blagodarya malochislennosti komandy pozvolilo eshche v sem' raz povysit' proizvoditel'nost'. Dopustim, chto na protyazhenii vsego proekta rabotaet odna i ta zhe komanda. Takim obrazom, 5000/(10*7*7)=10, t.e. rabotu v 5000 cheloveko-let oni vypolnyat za 10 let. Budet li produkt predstavlyat' interes cherez 10 let posle nachala razrabotki ili ustareet blagodarya stremitel'nomu razvitiyu programmnyh tehnologij? Dilemma predstavlyaetsya zhestokoj. Dlya effektivnosti i konceptual'noj celostnosti predpochtitel'nee, chtoby proektirovanie i sozdanie sistemy osushchestvili neskol'ko svetlyh golov. Odnako dlya bol'shih sistem zhelatel'no postavit' pod ruzh'e znachitel'nyj kontingent, chtoby produkt mog uvidet' svet vovremya. Kak mozhno primirit' eti dva zhelaniya? Predlozhenie Millza Predlozhenie Harlana Millza daet svezhee i tvorcheskoe reshenie2,3. Millz predlozhil, chtoby na kazhdom uchastke raboty byla komanda razrabotchikov, organizovannaya napodobie brigady hirurgov, a ne myasnikov. Imeetsya v vidu, chto ne kazhdyj uchastnik gruppy budet vrezat'sya v zadachu, no rezat' budet odin, a ostal'nye okazyvat' emu vsevozmozhnuyu podderzhku, povyshaya ego proizvoditel'nost' i plodotvornost'. Pri nekotorom razmyshlenii yasno, chto eta ideya privedet k zhelaemomu, esli ee udastsya osushchestvit'. Lish' neskol'ko golov zanyato proektirovaniem i razrabotkoj, i v to zhe vremya mnogo rabotnikov nahoditsya na podhvate. Budet li takaya organizaciya rabotat'? Kto igraet rol' anesteziologov i operacionnyh sester v gruppe programmistov, a kak osushchestvlyaetsya razdelenie truda? CHtoby narisovat' kartinu raboty takoj komandy s vklyucheniem vseh myslimyh vidov podderzhki, ya pozvolyu sebe vol'noe obrashchenie k metaforam. Hirurg. Millz nazyvaet ego glavnym programmistom. On lichno opredelyaet tehnicheskie usloviya na funkcional'nost' i ekspluatacionnye harakteristiki programmy, proektiruet ee, pishet kod, otlazhivaet ego i sostavlyaet dokumentaciyu. On pishet na yazyke strukturnogo programmirovaniya, takom kak PL/I, i imeet pryamoj dostup k komp'yuternoj sisteme, na kotoroj ne tol'ko proizvoditsya otladka, no i sohranyayutsya razlichnye versii ego programm s vozmozhnost'yu legkoj modifikacii fajlov, a takzhe osushchestvlyaet redaktirovanie dokumentacii. On dolzhen obladat' bol'shim talantom, stazhem raboty svyshe desyati let i sushchestvennymi znaniyami v sistemnyh i prikladnyh oblastyah, budto prikladnaya matematika, obrabotka delovyh dannyh ili chto-libo inoe. Vtoroj pilot. |to vtoroe "ya" hirurga, mozhet vypolnyat' lyubuyu ego rabotu, no menee opyten. Ego glavnaya zadacha - uchastvovat' v proektirovanii, gde on dolzhen dumat', obsuzhdat' i ocenivat'. Hirurg ispytyvaet na nem svoi idei, no ne svyazan ego predlozheniyami. CHasto vtoroj pilot predstavlyaet svoyu brigadu pri obsuzhdenii s drugimi gruppami funkcij i interfejsa. On horosho znaet ves' kod programmy. On issleduet vozmozhnosti al'ternativnyh strategij programmirovaniya. On, ochevidno, podstrahovyvaet na sluchaj kakoj-libo bedy s hirurgom. On mozhet dazhe zanimat'sya napisaniem koda, no ne neset otvetstvennosti za kakuyu-libo ego chast'. Administrator. Hirurg - nachal'nik, i emu prinadlezhit poslednee slovo v otnoshenii personala, pribavok k zhalovan'yu, pomeshchenij i t.p., no na eti dela on dolzhen tratit' kak mozhno men'she vremeni. Poetomu emu neobhodim professional'nyj administrator, zabotoj kotorogo budut den'gi, lyudi, pomeshcheniya, mashiny, i kotoryj budet kontaktirovat' s administrativnym mehanizmom organizacii v celom. Bejker schitaet, chto na polnyj rabochij den' administrator dolzhen privlekat'sya lish' v sluchae, kogda otnosheniya s zakazchikom opredelyayut sushchestvennye yuridicheskie, kontraktnye, otchetnye ili finansovye trebovaniya k proektu. V ostal'nyh sluchayah odin administrator mozhet obsluzhivat' dve komandy. Redaktor. Obyazannost' razrabotki dokumentacii lezhit na hirurge. CHtoby ona byla maksimal'no ponyatna, on dolzhen pisat' ee sam. |to otnositsya k opisaniyam, prednaznachennyh kak dlya vneshnego, tak i dlya vnutrennego ispol'zovaniya. Zadacha redaktora - vzyat' sozdannyj hirurgom chernovik ili zapis' pod diktovku, kriticheski pererabotat', snabdit' ssylkami i bibliografiej, prorabotat' neskol'ko versij i obespechit' publikaciyu. Dva sekretarya. Administratoru i redaktoru nuzhny sekretari. Sekretar' administratora obrabatyvaet perepisku, svyazannuyu s proektom, a takzhe dokumenty, ne otnosyashchiesya k produktu. Deloproizvoditel'. On otvechaet za registraciyu vseh tehnicheskih dannyh brigady v biblioteke programmnogo produkta. On imeet sekretarskuyu podgotovku i neset otvetstvennost' za vse fajly, prednaznachennye kak dlya mashiny, tak i dlya chteniya. Vse dannye dlya vvoda v komp'yuter postupayut deloproizvoditelyu, kotoryj registriruet ih ili vvodit pri neobhodimosti s klaviatury. Listingi vyvoda takzhe postupayut k nemu dlya registracii i hraneniya. Rezul'taty samyh svezhih progonov vseh modelej zanosyatsya v zhurnal rezul'tatov, a predydushchie hranyatsya v hronologicheskom poryadke v arhive. ZHiznenno vazhnym dlya koncepcii Millza yavlyaetsya prevrashchenie programmirovaniya "iz lichnogo iskusstva v obshchestvennuyu deyatel'nost'" putem predostavleniya rezul'tatov vseh progonov vsem chlenam komandy i opredeleniya vseh programm i dannyh, kak obshchej sobstvennosti komandy, a ne ch'ej-to lichnoj. Osobye obyazannosti, vozlagaemye na deloproizvoditelya, osvobozhdayut aktivnyh programmistov ot rutinnyh rabot, sistematiziruyut i obespechivayut nadlezhashchee vypolnenie teh rutinnyh operacij, kotorymi chasto prenebregayut, i priblizhayut glavnoe, dlya chego rabotaet komanda - ee programmnyj produkt. YAsno, chto predlozhennaya koncepciya predpolagaet progon paketnyh zadanij. Esli ispol'zuyutsya interaktivnye terminaly, v osobennosti bez vozmozhnosti pechati, funkcii deloproizvoditelya ne sokrashchayutsya, no preterpevayut izmeneniya. V etom sluchae on vedet uchet vseh izmenenij, vnosimyh v obshchij ekzemplyar programmy iz lichnyh kopij, osushchestvlyaet progon vseh paketnyh zadanij i so svoego terminala osushchestvlyaet kontrol' celostnosti i rabotosposobnosti uvelichivayushchegosya v razmerah produkta. Instrumental'shchik. Blagodarya vozmozhnosti v lyuboe vremya redaktirovat' fajly i teksty i pol'zovat'sya sluzhboj interaktivnoj otladki komande redko trebuetsya svoya vychislitel'naya mashina i gruppa obsluzhivayushchego personala. No dostup k etim sluzhbam dolzhen osushchestvlyat'sya s bezuslovnoj bystrotoj i nadezhnost'yu. Tol'ko hirurg mozhet reshat', udovletvoryaet li ego rabota imeyushchihsya sluzhb. Emu neobhodim instrumental'shchik, otvetstvennyj za obespechenie dostupa k osnovnym sluzhbam, a takzhe za sozdanie, podderzhku i obnovlenie special'nyh instrumentov - v osnovnom, interaktivnyh sluzhb, kotorye trebuyutsya ego komande. U kazhdoj komandy dolzhen byt' svoj instrumental'shchik, nezavisimo ot kachestva i nadezhnosti imeyushchihsya centralizovannyh sluzhb, i ego delo obespechit' vsem neobhodimym ili zhelatel'nym instrumentom svoego hirurga, a ne drugie komandy. Instrumental'shchik obychno pishet specializirovannye utility, katalogizirovannye procedury, makrobiblioteki. Otladchik. Hirurgu potrebuetsya nabor podhodyashchih kontrol'nyh primerov dlya otladki napisannyh im fragmentov koda, a zatem i vsej programmy. Otladchik yavlyaetsya, takim obrazom, kak protivnikom, razrabatyvayushchim kontrol'nye primery dlya sistemnogo testirovaniya, ishodya iz funkcional'nyh specifikacij, tak i pomoshchnikom, gotovyashchim dannye dlya ezhednevnoj otladki. On takzhe obychno planiruet posledovatel'nost' testirovaniya i sozdanie sredy dlya testirovaniya komponentov. YAzykoved. Vskore posle poyavleniya Algol obnaruzhilos', chto v bol'shinstve vychislitel'nyh centrov est' odin-dva cheloveka, porazhayushchih svoim vladeniem tonkostyami yazyka programmirovaniya. |ti eksperty okazyvayutsya ochen' poleznymi, i s nimi chasto sovetuyutsya. Zdes' trebuetsya inoj talant, chem u hirurga, kotoryj yavlyaetsya preimushchestvenno sistemnym proektirovshchikom i myslit predstavleniyami. YAzykoved mozhet najti effektivnye sposoby ispol'zovaniya yazyka dlya resheniya slozhnyh, neyasnyh i hitroumnyh zadach. Inogda emu trebuetsya provesti nebol'shoe issledovanie (dva-tri dnya) dlya nahozhdeniya udachnoj tehnologii. Odin yazykoved mozhet rabotat' s dvumya ili tremya hirurgami. Vot takim obrazom 10 chelovek mogut vypolnyat' horosho differencirovannye i specializirovannye roli v komande programmistov, organizovannoj po obrazcu operacionnoj brigady. Kak eto rabotaet Sozdannaya nami brigada mozhet dostich' zhelaemoj celi neskol'kimi sposobami. Nad zadachej trudyatsya desyat' chelovek, sem' iz kotoryh professionaly, no sistema yavlyaetsya produktom odnogo uma, po krajnej mere dvuh, dejstvuyushchih uno animo (kak odno celoe). Obratite osoboe vnimanie na razlichie mezhdu gruppoj iz dvuh programmistov s obychnoj organizaciej i gruppoj tipa "hirurg - vtoroj pilot". Vo-pervyh, v obychnoj brigade rabotniki delyat zadachu mezhdu soboj, i kazhdyj iz nih otvechaet za zamysel i voploshchenie nekotoroj chasti. V operacionnoj brigade i hirurg, i vtoroj pilot nahodyatsya v vedenii vsego proekta i vsego programmnogo koda. |to sberigaet zatraty na raspredelenie pamyati, dostup k diskam i t.p., a takzhe obespechivaet konceptual'nuyu celostnost' produkta. Vo-vtoryh, v obychnoj brigade partnery ravny, i neizbezhnye raznoglasiya dolzhny razreshat'sya putem peregovorov ili kompromissov. Poskol'ku zadacha i resursy razdeleny, raznoglasiya otnosyatsya k obshchej strategii i interfejsam, no k nim primeshivaetsya i protivopolozhnost' interesov, naprimer, ch'yu pamyat' ispol'zovat' dlya bufera. V hirurgicheskoj brigade razlichij interesov net, a raznoglasiya edinolichno reshayutsya hirurgom. |ti dva razlichiya - otsutstvie razbieniya zadachi i otnoshenie podchinennosti - pozvolyayut hirurgicheskoj brigade dejstvovat' uno animo. Krome togo, reshayushchee vliyanie na effektivnost' okazyvaet specializaciya funkcij ostal'nyh chlenov brigady, tak kak v rezul'tate osushchestvima znachitel'no bolee prostaya shema kontaktov mezhdu sotrudnikami, kotoraya pokazana na risunke 3.1. V stat'e Bejkera3 soobshchaetsya ob odnoj proverke takoj koncepcii brigady, provedennoj v ogranichennom masshtabe. Kak i predskazyvalos', rezul'taty okazalis' velikolepnymi. Masshtabirovanie Do sih por vse bylo horosho. Problema, odnako, sostoit v tom, kak sozdavat' produkty, na kotorye sejchas uhodit ne 20 ili 30, a 5000 cheloveko-let. Brigada iz 10 chelovek mozhet byt' effektivna vne zavisimosti ot svoej organizacii, esli zadacha celikom nahoditsya v ee kompetencii. No kak ispol'zovat' ideyu operacionnoj brigady v zadachah, dlya vypolneniya kotoryh privlekayutsya sotni lyudej? Uspeh pri masshtabirovanii obuslovlivaetsya korennym uluchsheniem konceptual'nogo edinstva kazhdogo uchastka, ved' kolichestvo proektirovshchikov umen'shilos' v sem' raz. Poetomu mozhno privlech' k rabote nad zadachej 200 chelovek, i neobhodimost' koordinacii umstvennyh usilij potrebuetsya vsego dlya 20 iz nih - hirurgov. Ris. 3.1 Shema kontaktov mezhdu sotrudnikami v brigade iz 10 chelovek Odnako zadacha koordinacii trebuet ispol'zovaniya osobyh metodov, obsuzhdaemyh v posleduyushchih glavah. Poka dostatochno skazat', chto vsya sistema v celom dolzhna obladat' konceptual'nym edinstvom, i neobhodim sistemnyj arhitektor, chtoby proektirovat' ee celikom, v nishodyashchem napravlenii. Dlya togo chtoby etoj rabotoj mozhno bylo upravlyat', neobhodimo provesti strogoe razgranichenie arhitektury i voploshcheniya, i sistemnyj arhitektor dolzhen dobrosovestno posvyatit' sebya razrabotke arhitektury. Opyt pokazyvaet, chto takoe raspredelenie rolej i takie metody osushchestvimy i okazyvayutsya ves'ma rezul'tativnymi. Glava 4. Aristokratiya, demokratiya i sistemnoe proektirovanie |tot velichestvennyj hram yavlyaetsya vydayushchimsya proizvedeniem iskusstva. V principah, kotorye on izlagaet, net ni suhosti, ni besporyadka... |to vershina stilya, trud hudozhnikov, kotorye ponyali i vosprinyali vse dostizheniya svoih predshestvennikov, v sovershenstve vladeya tehnikoj svoego veka, no pol'zovalis' ej, izbegaya neskromnogo pokaza ili neobosnovannoj demonstracii masterstva. Nesomnenno, zamysel obshchego plana zdaniya prinadlezhit dOrbe, i te, kto ego smenil, priderzhivalis' etogo plana, po krajnej mere, v sushchestvennyh chertah. |to odna iz prichin udivitel'noj garmonichnosti i edinstva zdaniya. PUTEVODITELX PO REJMSKOMU SOBORU 1 Konceptual'noe edinstvo U bol'shinstva evropejskih soborov chasti, postroennye raznymi pokoleniyami stroitelej, imeyut razlichiya v planirovke i arhitekturnom stile. Bolee pozdnie stroiteli ispytyvali soblazn "uluchshit'" proekt svoih predshestvennikov, chtoby otrazit' novye veyaniya mody i svoi lichnye vkusy. V itoge mirnyj normannskij transept sozdaet konflikt s primykayushchim k nemu voznosyashchimsya v vys' goticheskim nefom, i rezul'tat stol' zhe sluzhit voshvaleniyu slavy Gospodnej, skol' i gordyni stroitelej. Arhitekturnoe edinstvo Rejmskogo sobora nahoditsya v pryamoj protivopolozhnosti s takim smesheniem stilej. Istochnikom napolnyayushchej zritelya radosti sluzhat kak cel'nost' konstrukcii, tak i otdel'nye obrazcy sovershenstva. Kak skazano v putevoditele, cel'nost' byla dostignuta blagodarya samootrecheniyu vos'mi pokolenij stroitelej sobora, pozhertvovavshih svoimi ideyami radi chistoty obshchego zamysla. To chto poluchilos' v rezul'tate, sluzhit voshvaleniyu ne tol'ko slavy Gospodnej, no i Ego mogushchestva, sposobnogo spasti greshnyh lyudej ot ih gordyni. Hotya na sozdanie programmnyh sistem ne uhodyat veka, v bol'shinstve svoem oni demonstriruyut men'shuyu soglasovannost' koncepcij, chem v lyubom sobore. Obychno eto proishodit ne ottogo, chto glavnye proektirovshchiki smenyayut drug druga, a potomu, chto proekt rasshcheplyaetsya na ryad zadach, vypolnyaemyh raznymi razrabotchikami. YA ubezhden, chto konceptual'naya celostnost' yavlyaetsya vazhnejshej harakteristikoj sistemnogo proekta. Luchshe ubrat' iz sistemy otdel'nye neobychnye vozmozhnosti i usovershenstvovaniya i realizovat' edinyj nabor konstruktivnyh idej, chem osnastit' ee mnogimi horoshimi, no nevzaimosvyazannymi i nesoglasovannymi ideyami. V etoj i dvuh posleduyushchih glavah my izuchim sledstviya etoj koncepcii dlya proektirovaniya programmnyh sistem: - Kak dostich' konceptual'noj celostnosti? - Ne budet li eto trebovanie prichinoj raskola na elitu, aristokraticheskij klass arhitektorov - s odnoj storony, i tolpy plebeev-ispolnitelej, ch'i tvorcheskie talanty i idei podavlyayutsya, - s drugoj? - Kak uderzhat' arhitektorov ot vitaniya v oblakah i razrabotki nesushchestvennyh ili chrezmerno dorogih specifikacij? - Kak dobit'sya togo, chtoby lyubaya meloch' iz sozdannoj arhitektorom specifikacii doshla do ispolnitelya, byla im pravil'no ponyata i tochno vnedrena v produkt? Dostizhenie konceptual'noj celostnosti Naznachenie sistemy programmirovaniya - oblegchit' ispol'zovanie komp'yutera. Dlya etogo postavlyayutsya yazyki i razlichnye sredstva, yavlyayushchiesya, po suti, programmami, vyzyvaemymi i upravlyaemymi vozmozhnostyami yazyka. No eti sredstva stoyat deneg: ob®em vneshnego opisaniya sistemy programmirovaniya v desyat'- dvadcat' raz bol'she opisaniya sobstvenno vychislitel'noj sistemy. Pol'zovatelyu okazyvaetsya znachitel'no proshche zadat' lyubuyu vybrannuyu funkciyu, no vybor ochen' velik, i nuzhno pomnit' znachitel'no bol'she variantov i formatov. Ispol'zovanie oblegchaetsya, tol'ko esli vyigrysh vremeni pri zadanii funkcii prevyshaet vremya, potrachennoe na obuchenie, zapominanie i poisk rukovodstv. Sovremennye sistemy programmirovaniya dayut takoj vyigrysh, no pohozhe, chto v poslednie gody otnoshenie vyigrysha k zatratam umen'shilos' v rezul'tate dobavleniya vse bolee i bolee slozhnyh funkcij. YA chasto vspominayu, kak legko bylo ispol'zovat' IBM 650, dazhe bez assemblera ili voobshche kakih-libo programm. Poskol'ku cel'yu proektirovaniya yavlyaetsya prostota ispol'zovaniya, okonchatel'nuyu ocenku proekta sistemy daet dostignutoe otnoshenie funkcional'nosti k slozhnosti koncepcij. Ni funkcional'nost', ni prostota v otdel'nosti ne yavlyayutsya priznakami horoshego proekta. |to obstoyatel'stvo chasto nepravil'no ponimaetsya. Operating System/360 prevoznositsya svoimi sozdatelyami, kak luchshaya iz kogda-libo sozdannyh, poskol'ku neosporimo, chto v nej bol'she funkcij. Funkcii, a ne prostota vsegda sluzhili kriteriem prevoshodstva ee sozdatelej. S drugoj storony, sozdateli sistemy s razdeleniem vremeni dlya PDP-10 prevoznosyat ee prevoshodstvo vvidu prostoty i nemnogochislennosti polozhennyh v osnovu idej. Odnako po vsem merkam ee funkcional'nost' nizhe po klassu, chem OS/360. Esli v kachestve kriteriya opredelena prostota ispol'zovaniya, stanovitsya ochevidnoj nesbalansirovannost' etih sistem, dostigayushchih celi lish' napolovinu. Odnako dlya nekotorogo zadannogo urovnya funkcional'nosti luchshej okazyvaetsya ta sistema, v kotoroj mozhno rabotat' s naibol'shej prostotoj i neposredstvennost'yu. Prostota - eto eshche ne vse. YAzyk TRAC, sozdannyj Muerom, i Algol 68 dostigayut prostoty, esli kolichestvenno izmeryat' ee chislom otdel'nyh elementarnyh ponyatij. Neposredstvennost', odnako, ne harakterna dlya nih. CHtoby vyrazit' svoi namereniya, chasto trebuetsya sochetat' bazovye sredstva slozhnym i neozhidannym obrazom. Nedostatochno izuchit' bazovye elementy i pravila ih kombinirovaniya, nuzhno izuchit' eshche idiomaticheskoe ispol'zovanie, celuyu oblast' znanij o tom, kak na praktike kombinirovat' elementy. Prostota i neposredstvennost' proistekayut iz konceptual'noj celostnosti. Vo vseh chastyah dolzhny najti otrazhenie edinaya filosofiya i edinoobraznye proporcii mezhdu zhelaemymi celyami. V kazhdoj chasti dolzhny takzhe ispol'zovat'sya odinakovyj sintaksis i shodnye semanticheskie oboznacheniya. Takim obrazom, prostota ispol'zovaniya trebuet edinstva proekta, konceptual'noj celostnosti. Aristokratiya i demokratiya Konceptual'naya celostnost', v svoyu ochered', trebuet, chtoby proekt ishodil ot odnogo razrabotchika, ili nebol'shogo chisla ih, dejstvuyushchih soglasovanno i v unison. S drugoj storony, napryazhennost' grafika trebuet privlecheniya bol'shogo chisla rabotnikov. Est' dva metoda razresheniya etoj dilemmy. Pervyj sostoit v tshchatel'nom razdelenii truda mezhdu arhitekturoj i ispolneniem. Vtoroj - novyj sposob organizacii brigad programmistov-ispolnitelej, obsuzhdavshijsya v predydushchej glave. 31 Otdelenie razrabotki arhitektury ot realizacii yavlyaetsya effektivnym sposobom dostizheniya konceptual'noj celostnosti pri rabote nad ochen' bol'shimi proektami. YA lichno byl svidetelem uspeshnogo ego primeneniya pri sozdanii IBM komp'yutera Stretch i serii produktov System/360. No on ne srabotal pri razrabotke Operating System/360, poskol'ku nedostatochno primenyalsya. Pod arhitekturoj sistemy ya ponimayu polnuyu i podrobnuyu specifikaciyu interfejsa pol'zovatelya. Dlya komp'yutera eto rukovodstvo po programmirovaniyu. Dlya kompilyatora eto rukovodstvo po yazyku. Dlya upravlyayushchej programmy eto rukovodstvo po odnomu ili neskol'kim yazykam, ispol'zuemym dlya vyzova ee funkcij. Dlya sistemy v celom - eto nabor vseh rukovodstv, k kotorym dolzhen obrashchat'sya pol'zovatel' pri rabote. Arhitektor sistemy, kak i arhitektor zdaniya, yavlyaetsya predstavitelem pol'zovatelya. Ego zadacha - ispol'zovat' vse svoi professional'nye i tehnicheskie znaniya isklyuchitel'no v interesah pol'zovatelya, a ne prodavca, izgotovitelya i t.p.2 Arhitektura i razrabotka dolzhny byt' tshchatel'no razdeleny. Kak skazal Blau (Blaauw), "arhitektura govorit, chto dolzhno proizojti, a razrabotka - kak sdelat', chtoby eto proizoshlo".3 V kachestve prostogo primera on privodit chasy, arhitektura kotoryh sostoit iz ciferblata, strelok i zavodnoj golovki. Rebenok, osvoivshij eto arhitekturu, s odinakovoj legkost'yu mozhet uznat' vremya i po ruchnym chasam, i po chasam na kolokol'ne. Ispolnenie zhe i ego realizaciya opisyvayut, chto proishodit vnutri: peredacha usilij i upravlenie tochnost'yu kazhdym iz mnogih mehanizmov. K primeru, v System/360 odna i ta zhe arhitektura komp'yutera sovershenno po- raznomu realizovana primerno v devyati modelyah. Obratnym obrazom, odna i ta zhe realizaciya potoka dannyh, pamyati i mikroprogramm iz Model 30 ispol'zovalas' v raznoe vremya v chetyreh razlichnyh arhitekturah: System/360, mul'tipleksnom kanale s podklyucheniem do 224 logicheski nezavisimyh podkanalov, selektornom kanale i komp'yutere 1401.4 Takie zhe razlichiya mozhno provodit' v otnoshenii sistem programmirovaniya. Sushchestvuet standart dlya Fortran IV. |to arhitektura, ispol'zuemaya vo mnogih kompilyatorah. V ramkah etoj arhitektury vozmozhny raznye realizacii: tekst v operativnoj pamyati ili kompilyator, bystraya ili optimiziruyushchaya, sintaksicheskaya ili ad hoc. Analogichno, lyuboj yazyk assemblera ili yazyk upravleniya zadaniyami dopuskaet mnogie realizacii assemblera ili planirovshchika. Teper' my mozhem zanyat'sya ves'ma chuvstvitel'nym voprosom bor'by aristokratii i demokratii. Ne stali li arhitektory novoj aristokratiej, intellektual'noj elitoj, prizvannoj raz®yasnit' bednym bezglasnym ispolnitelyam, chto oni dolzhny delat'? Ne zahvatila li eta elita vsyu tvorcheskuyu deyatel'nost', sdelav ispolnitelej lish' zubchikami v mehanizme? Ne okazhetsya li, chto bolee sovershennyj produkt mozhno poluchit', ispol'zuya idei vsej brigady i ispoveduya filosofiyu demokratii, a ne ogranichivaya krug razrabotchikov neskol'kimi licami? Proshche vsego otvetit' na poslednij vopros. YA, razumeetsya, ne stanu utverzhdat', chto horoshie arhitekturnye idei mogut voznikat' tol'ko u arhitektorov. CHasto svezhaya ideya ishodit ot ispolnitelya ili pol'zovatelya. Odnako ves' lichnyj opyt ubezhdaet menya, i ya pytalsya eto pokazat', chto prostotu pol'zovaniya sistemoj opredelyaet ee konceptual'naya celostnost'. Dostojnye vnimaniya funkcii i idei, kotorye ne ob®edinyayutsya s osnovnymi koncepciyami sistemy, luchshe ostavit' v storone. Esli takih vazhnyh, no nesovmestimyh idej poyavlyaetsya slishkom mnogo, vykidyvayut vsyu sistema i nachinayut razrabotku celostnoj sistemy snachala, osnovyvaya ee na inyh osnovopolagayushchih koncepciyah. CHto kasaetsya obvinenij v aristokratizme, to otvet i polozhitel'nyj, i otricatel'nyj. Polozhitel'nyj, potomu chto dejstvitel'no dolzhno byt' neskol'ko arhitektorov, ch'i rezul'taty zhivut dol'she, chem otdel'nye realizacii, i arhitektor nahoditsya v fokuse sil, kotorye on v konechnom itoge dolzhen ispol'zovat' v interesah pol'zovatelya. Esli vy hotite, chtoby sistema obladala konceptual'noj celostnost'yu, to rukovodstvo koncepciyami dolzhen vzyat' kto-to odin. |to aristokratizm, kotoryj ne nuzhdaetsya v izvineniyah. Otvet otricatel'nyj, poskol'ku razrabotka proekta trebuet ne men'she tvorchestva, chem zadanie vneshnih specifikacij. |to tozhe tvorcheskaya rabota, no drugogo haraktera. Razrabotka proekta dlya zadannoj arhitektury trebuet i dopuskaet stol'ko zhe tvorcheskoj deyatel'nosti, novyh idej, izobretatel'nosti, kak i proekt vneshnih specifikacij. Prakticheski, koefficient stoimost'/effektivnost' sozdannogo produkta bol'she zavisit ot ispolnitelya, a prostota ego ispol'zovaniya - ot arhitektora. Est' massa primerov, podskazannyh drugimi iskusstvami i remeslami, kotorye podvodyat k mneniyu, chto disciplina idet na pol'zu. Dejstvitel'no, aforizm hudozhnika glasit, chto "forma osvobozhdaet". Samye uzhasny stroeniya - eto te, byudzhet kotoryh byl slishkom velik dlya postavlennyh celej. Tvorcheskuyu aktivnost' Baha edva li mogla podavlyat' neobhodimost' ezhenedel'naya neobhodimost' izgotavlivat' kantatu opredelennogo vida. YA uveren, chto arhitektura komp'yutera Stretch stala by luchshe, esli by na nee nalozhili bolee zhestkie ogranicheniya; tak, ogranicheniya, nalozhennye byudzhetom na System/360 Model 30, po moemu mneniyu, prinesli lish' pol'zu arhitekture Model 75. Analogichno, ya schitayu, chto poluchenie arhitektury izvne usilivaet, a ne podavlyaet tvorcheskuyu aktivnost' gruppy ispolnitelej. Oni srazu sosredotochivayutsya na toj chasti zadachi, kotoroj nikto ne zanimalsya, i v rezul'tate izobretatel'nost' b'et klyuchom. V ne ogranichivaemoj gruppe bol'shaya chast' obdumyvaniya i obsuzhdeniya posvyashchena arhitekturnym resheniyam v ushcherb realizacii.5 |tot mnogokratno nablyudavshijsya mnoj effekt podtverdil R. U. Konvej (R. W. Conway), ch'ya gruppa razrabotala v Kornel'skom universitete kompilyator PL/C dlya yazyka PL/I. On govorit: "V konechnom itoge my reshili realizovat' yazyk bez izmenenij i usovershenstvovanij, poskol'ku obsuzhdenie yazyka otnyalo by u nas vse sily."6 CHem zanyat'sya razrabotchiku, poka on vynuzhden zhdat'? Ochen' nepriyatno sovershit' oshibku stoimost'yu v million dollarov, no zato ona nadolgo zapominaetsya. YA otchetlivo pomnyu tot den', kogda my prinyali reshenie o tom, kak prakticheski organizovat' sostavlenie vneshnih specifikacij dlya OS/360. Menedzher po arhitekture, menedzher po realizacii upravlyayushchej programmy i ya prorabatyvali plan, grafik i razdelenie obyazannostej. U menedzhera po arhitekture bylo 10 horoshih specialistov. On utverzhdal, chto oni v sostoyanii napisat' specifikacii i sdelat' eto dolzhnym obrazom. |to dolzhno bylo zanyat' 10 mesyacev - na tri bol'she, chem otvodilos' po grafiku. U menedzhera po realizacii upravlyayushchej programmy bylo 150 chelovek. On zayavlyal, chto oni mogut podgotovit' specifikacii, pri etom gruppa arhitektorov vypolnyala by koordiniruyushchie funkcii. Obeshchalos', chto eto budet sdelano horosho i praktichno, s soblyudeniem srokov. Bolee togo, esli ostavit' specifikacii gruppe arhitektorov, ego 150 chelovek v techenie desyati mesyacev budut bit' baklushi. Na eto menedzher po arhitekture vozrazil, chto esli ya sdelayu otvetstvennoj za napisanie specifikacij gruppu upravlyayushchej programmy, to rezul'tata v srok ne budet: on vse ravno zaderzhitsya na tri mesyaca, no po kachestvu budet mnogo huzhe. Tak ono i okazalos' v dejstvitel'nosti. On okazalsya prav v oboih punktah. Krome togo, iz-za otsutstviya konceptual'noj celostnosti sozdanie i vnesenie izmenenij v sistemu okazalis' znachitel'no bolee dorogostoyashchimi, i, po moim ocenkam, otladka udlinilas' na god. Konechno, mnogie faktory povliyali na prinyatie etogo oshibochnogo resheniya, no opredelyayushchimi byli zhelanie ulozhit'sya v grafik i stremlenie zanyat' rabotoj etih 150 chelovek. Penie etih siren tait smertel'nye opasnosti, kotorye ya i hochu sejchas pokazat'. Kogda predlagaetsya, chtoby vse vneshnie specifikacii dlya komp'yuternoj ili programmnoj sistemy byli sostavleny nebol'shoj komandoj arhitektorov, ispolniteli vydvigayut tri vozrazheniya: - Specifikacii budut peregruzheny funkciyami i ne budut uchityvat' prakticheskih zatrat na realizaciyu. - Arhitektory poluchat vse radosti tvorchestva i zablokiruyut izobretatel'nost' ispolnitelej. - Mnogochislennym ispolnitelyam pridetsya ozhidat' v prazdnosti, poka specifikacii projdut cherez uzkoe gorlyshko komandy arhitektorov. Pervoe vozrazhenie otrazhaet real'nuyu opasnost' i budet rassmotreno v sleduyushchej glave. Ostal'nye dva yavlyayutsya chistym zabluzhdeniem. Kak my videli vyshe, razrabotka takzhe yavlyaetsya v vysshej stepeni tvorcheskoj deyatel'nost'yu. Vozmozhnost' proyavit' tvorchestvo i izobretatel'nost' pri razrabotke neznachitel'no ogranichivaetsya neobhodimost'yu rabotat' v ramkah zadannyh vneshnih specifikacij, i takaya disciplina mozhet dazhe usilit' stepen' tvorchestva. |to, nesomnenno, verno dlya proekta v celom. Poslednee vozrazhenie kasaetsya planirovaniya vremennyh ramok i etapov. Proshche vsego vozderzhat'sya ot najma ispolnitelej do zaversheniya raboty nad specifikaciyami. Kogda vozdvigaetsya zdanie, tak i postupayut. Odnako pri sozdanii komp'yuternyh sistem tempy vyshe, i zhelatel'no uplotnit' grafik rabot. V kakoj mere razrabotka specifikacij i razrabotka mogut perekryvat'sya? Kak otmechaet Blau, vsyu programmu sozdaniya sostavlyayut tri otdel'nye stadii: arhitektura, razrabotka i realizaciya. Okazyvaetsya, chto na praktike ih mozhno nachinat' parallel'no i prodolzhat' odnovremenno. Naprimer, pri proektirovanii komp'yuterov proektirovshchik mozhet pristupat' k rabote, imeya otnositel'no obshchie dopushcheniya v otnoshenii rukovodstva pol'zovatelya, neskol'ko bolee yasnye idei otnositel'no tehnologii i vpolne opredelennye zadachi po stoimosti i rabochim harakteristikam. On mozhet nachat' proektirovanie potokov dannyh, upravlyayushchih posledovatel'nostej, obshchih idej komponovki i t.d. On razrabatyvaet ili adaptiruet neobhodimyj instrumentarij, osobenno sistemu vedeniya ucheta, v tom chisle sistemu avtomatizacii proektirovaniya. V to zhe vremya na urovne realizacii nuzhno sproektirovat', usovershenstvovat' i opisat' mikroshemy, platy, kabeli, karkasy, bloki pitaniya i ustrojstva pamyati. |ta rabota protekaet parallel'no s arhitekturoj i razrabotkoj. To zhe samoe spravedlivo pri sozdanii programmnyh sistem. Zadolgo do zaversheniya vneshnih specifikacij proektirovshchik mozhet najti sebe dostatochno raboty. On mozhet pristupit' k delu, osnovyvayas' na grubom priblizhenii funkcional'nosti sistemy, kotoraya v konechnom itoge budet voploshchena vo vneshnih specifikaciyah. U nego dolzhny byt' yasno opredelennye celi v otnoshenii pamyati i vremennyh parametrov. On dolzhen izuchit' konfiguraciyu sistemy, na kotoroj budet vypolnyat'sya ego produkt. Zatem on mozhet nachat' opredelenie granic modulej, struktur tablic, raschleneniya na prohody ili stadii algoritmov i vsevozmozhnyh instrumental'nyh sredstv. Nekotoroe vremya on dolzhen takzhe posvyatit' obshcheniyu s arhitektorom. V to zhe vremya dostatochno raboty i na urovne realizacii. U programmirovaniya svoya tehnologiya. Esli mashina novaya, mnogo truda trebuyut soglasheniya po podprogrammam, tehnologiya raboty s supervizorom, algoritmy poiska i sortirovki.7 Konceptual'naya celostnost' trebuet, chtoby sistema otrazhala edinuyu filosofiyu, i tehnicheskie usloviya, v tom vide, v kotorom oni budut vidny pol'zovatelyu, proistekali ot malogo chisla avtorov. |to ne oznachaet, chto sproektirovannaya takim obrazom sistema sozdaetsya dol'she, poskol'ku ispol'zuetsya dejstvitel'noe razdelenie truda na arhitekturu, razrabotku i realizaciyu. Opyt pokazyvaet obratnoe: cel'naya sistema prodvigaetsya bystree i trebuet men'she vremeni dlya otladki. V rezul'tate shiroko rasprostranennoe gorizontal'noe razdelenie truda znachitel'no sokrashchaetsya za schet vertikal'nogo razdeleniya, chto vlechet rezkoe umen'shenie obmena informaciej i uluchshenie konceptual'noj celostnosti. Glava 5. |ffekt vtoroj sistemy Adde parvum parvo magnus acervus erit. [Skladyvaj maloe s malym, i poluchish' bol'shuyu kuchu.] OVIDIJ Esli otvetstvennost' za specifikaciyu funkcij otdelit' ot otvetstvennosti za bystroe sozdanie nedorogogo produkta, to chem sderzhat' izobretatel'skij entuziazm arhitektora? Principial'noe reshenie - obespechenie vsestoronnego, tshchatel'nogo i dobrozhelatel'no obmena informaciej mezhdu arhitektorom i razrabotchikom. Odnako imeyutsya i bolee tonkie resheniya, kotorye zasluzhivayut vnimaniya. Disciplina vzaimodejstviya dlya arhitektora Arhitektor, stroyashchij zdanie, dejstvuet v ramkah smety, ispol'zuya metody ocenki, kotorye v posleduyushchem podtverzhdayutsya ili korrektiruyutsya zayavkami podryadchikov. CHasto sluchaetsya, chto vse predlozheniya vyhodyat za ramki smety. Togda arhitektor peresmatrivaet svoi ocenki v storonu uvelicheniya smety, a proekt - v storonu sokrashcheniya, i cikl povtoryaetsya. Inogda on predlagaet podryadchikam sposoby udeshevleniya realizacii ego proekta v sravnenii s izbrannymi imi sposobami. Shodnye processy proishodyat s arhitektorom komp'yuternyh ili programmnyh sistem. Odnako u nego est' to preimushchestvo, chto predlozheniya podryadchika mozhno poluchit' na rannih stadiyah proektirovaniya, chasto - v lyuboj moment. Nedostatkom obychno yavlyaetsya to, chto rabota idet s edinstvennym podryadchikom, kotoryj mozhet menyat' cenu v zavisimosti ot stepeni svoej udovletvorennosti proektom. Na praktike, process obshcheniya, nachatyj na rannih etapah i prodolzhayushchijsya nepreryvno, mozhet dat' arhitektoru vernuyu ocenku stoimosti, a razrabotchiku - uverennost' v proekte, ne snimaya pri etom chetkogo razgranicheniya sfer otvetstvennosti. U arhitektora, kogda on stalkivaetsya s nepriemlemo vysokoj stoimost'yu, est' dva vyhoda: sokratit' proekt ili vozdejstvovat' na stoimost', predlagaya bolee deshevye sposoby realizacii. Vtoroj sposob neizbezhno vyzyvaet emocii, ved' arhitektor osparivaet to, kak stroitel' spravlyaetsya so svoim delom. CHtoby uspeshno spravit'sya s etim, arhitektoru neobhodimo: - pomnit', chto otvetstvennost' za izobretatel'nost' i tvorchestvo, proyavlyaemye pri realizacii, neset stroitel', poetomu arhitektor predlagaet, a ne trebuet; - vsegda byt' gotovym predlozhit' nekotoryj sposob realizacii svoih zamyslov i byt' gotovym soglasit'sya s lyubym drugim sposobom, pozvolyayushchim reshit' zadachu ne huzhe; - vydvigaya takie predlozheniya, dejstvovat' bez shuma i oglaski; - ne rasschityvat' na priznatel'nost' za sdelannye predlozheniya. Obychno razrabotchik pariruet predlozheniem izmenenij v arhitekture. CHasto on prav - realizaciya kakoj-nibud' malosushchestvennoj detali mozhet okazat'sya neozhidanno dorogostoyashchej. Samodisciplina - effekt vtoroj sistemy Pervyj proekt arhitektora stremitsya k skromnosti i yasnosti. Arhitektor ponimaet, chto ne znaet, chem zanimaetsya, poetomu on zanimaetsya etim so staraniem i samoogranicheniem. Pri rabote nad pervym proektom emu postoyanno prihodyat v golovu to odni, to drugie "ukrasheniya". Oni otkladyvayutsya v storonu dlya ispol'zovaniya "v sleduyushchij raz". V konce koncov, pervaya sistema zakonchena, i arhitektor, s tverdoj uverennost'yu v sebe i prodemonstrirovannym osvoeniem etogo klassa sistem, gotov k sozdaniyu novogo proekta. |ta vtoraya sistema tait naibol'shie opasnosti dlya proektirovshchika. Pri rabote nad tret'ej i posleduyushchimi sistemami zakreplyaetsya poluchennyj ranee opyt v otnoshenii obshchih harakteristik takih sistem, a razlichiya mezhdu nimi vyyavlyayut te chasti opyta, kotorye nosyat chastnyj harakter i ne mogut byt' obobshcheny. Obshchaya tendenciya zaklyuchaetsya v peregruzhennosti proekta vtoroj sistemy ideyami i ukrashatel'stvami, blagorazumno otlozhennymi v sto