ya, uchastvuya v administrativnoj cepochke. Ochevidno, prodyuser dolzhen ob®yavit' o polnomochiyah direktora v tehnicheskoj oblasti i v vysshej stepeni ukreplyat' ih v voznikayushchih spornyh situaciyah. CHtoby eto bylo vozmozhno, prodyuser i direktor dolzhny imet' shozhie vzglyady po osnovnym tehnicheskim voprosam. Oni dolzhny chastnym obrazom soglasovyvat' osnovnye tehnicheskie problemy, prezhde chem oni vstanut na povestku dnya. Prodyuser dolzhen takzhe s bol'shim uvazheniem otnosit'sya k tehnicheskomu masterstvu direktora. CHto menee ochevidno, prodyuser mozhet s pomoshch'yu simvolov statusa (takih kak razmer kabineta, kovrovoe pokrytie, mebel', rassylka vtoryh ekzemplyarov dokumentov i t.p.) podcherkivat', chto direktor, nahodyas' vne administrativnoj cepochki, obladaet, tem ne menee, vlast'yu v prinyatii reshenij. |to mozhet dejstvovat' ochen' uspeshno. K neschast'yu, k etomu redko pribegayut. CHto huzhe vsego poluchaetsya u menedzherov proektov, - tak eto ispol'zovanie tehnicheskogo geniya lyudej, ne ochen' sil'nyh v administrirovanii. Direktor mozhet byt' nachal'nikom, a prodyuser - ego pravoj rukoj. Robert Hajnlajn yarko opisyvaet takuyu organizaciyu v "CHeloveke, prodavshem Lunu". Koster zakryl lico rukami, zatem vzglyanul vverh: - YA razbirayus' v etom. YA znayu, chto nuzhno delat', no vsyakij raz, kogda ya pytayus' zanyat'sya tehnicheskoj problemoj, kakoj-nibud' bolvan hochet, chtoby ya prinyal reshenie po povodu gruzovikov, ili telefonov, ili eshche kakoj-nibud' erundy. Prostite, mister Garriman. Mne kazalos', ya spravlyus' so vsem etim. Garriman ochen' myagko skazal: - Ne otchaivajsya, Bob. Ty ved' nedosypal poslednee vremya, pravda? Vot chto ya skazhu: my perehitrim Fergyusona. YA voz'mu tvoj stol na neskol'ko dnej i postroyu organizaciyu, kotoraya ogradit tebya ot takih veshchej. YA hochu, chtoby tvoi mozgi byli zanyaty vektorami reakcii, effektivnost'yu topliva i slozhnostyami proekta, a ne kontraktami po gruzovikam. - Garriman podoshel k dveri, vyglyanul naruzhu i zametil cheloveka, kotoryj byl, vozmozhno, starshim klerkom. - |j, vy! Podojdite syuda! CHelovek pokazalsya ozadachennym, vstal i, podojdya k dveri, sprosil: Da? - YA hochu, chtoby etot stol v uglu i vse, chto na nem, byli pereneseny v pustuyu komnatu na etom etazhe, i nemedlenno. On prosledil, kak Koster i vtoroj ego stol pereehali v druguyu komnatu, ubedilsya, chto telefon v novom pomeshchenii otklyuchen, i, podumav, zastavil perenesti tuda divan. - My postavim proektor, chertezhnuyu dosku, knizhnye shkafy i vse takoe prochee segodnya vecherom, - skazal on Kosteru. - Prosto sostav' spisok vsego neobhodimogo, chtoby zanimat'sya delom. - On vernulsya v oficial'nyj kabinet glavnogo inzhenera i s radost'yu vzyalsya za rabotu, pytayas' vyyasnit', kakovo polozhenie del, i chto ne laditsya. CHasa cherez tri on pozval Barkli, chtoby poznakomit' ego s Kosterom. Glavnyj inzhener spal, sidya za stolom, polozhiv golovu na ruki. Garriman hotel vyjti, no Koster prosnulsya. Proshu proshcheniya, - skazal on, krasneya, - ya, navernoe, zadremal. - Dlya etogo ya pritashchil tebe divan, - skazal Garriman, - na nem udobnee. Bob, poznakom'sya s Dzhokom Berkli. |to tvoj novyj rab. Ty ostaesh'sya glavnym inzhenerom i neosporimym nachal'nikom. Dzhok budet Glavnym lordom Vse Ostal'noe. S etogo momenta tebe absolyutno ne o chem bespokoit'sya - isklyuchaya takuyu meloch', kak lunnyj korabl'. Oni pozhali ruki. - Hochu prosit' ob odnoj veshchi, mister Koster, - skazal Berkli s ser'eznost'yu, - peredavajte mne vse, chto sochtete neobhodimym - vasha storona tehnicheskaya, - no Boga radi, zapisyvajte vse, chtoby ya byl v kurse. YA hochu, chtoby vam na stol postavili vyklyuchatel', kotoryj budet upravlyat' opechatannym magnitofonom na moem stole. Otlichno! - Garrimanu pokazalos', chto Koster pomolodel. - I esli vam ponadobitsya chto-libo, ne otnosyashcheesya k tehnike, ne zanimajtes' etim sami. Nazhmite vyklyuchatel' i svistnite. Vse budet sdelano. - Berkli vzglyanul na Garrimana. - Hozyain govorit, chto sobiraetsya pogovorit' s vami o nastoyashchej rabote. YA vas pokinu i zajmus' delami. - On vyshel. Garriman sel. Koster posledoval ego primeru i skazal: Uf! Tak luchshe? Mne ponravilsya etot Berkli. - |to horosho. Teper' eto tvoj dvojnik. Ne bespokojsya: on rabotal u menya ran'she. Ty pochuvstvuesh' sebya, kak v horoshej bol'nice.2 |tot tekst edva li nuzhdaetsya v analiticheskih kommentariyah. Takaya organizaciya tozhe mozhet effektivno dejstvovat'. Mne kazhetsya, chto poslednij tip organizacii luchshe podhodit dlya nebol'shih komand, opisannyh v glave 3 "Operacionnaya brigada". Polagayu, chto prodyuser v kachestve nachal'nika bolee podhodit dlya bol'shih podderev'ev dejstvitel'no krupnyh proektov. Vavilonskaya bashnya byla, vozmozhno, pervym inzhenernym fiasko, no ne poslednim. Reshayushchee znachenie dlya uspeha imeyut shema svyazi i vytekayushchaya iz nee organizaciya. Tehnologii obmena informaciej i sozdaniya organizacionnyh struktur trebuyut ot menedzhera bol'shoj raboty mysli i takoj zhe podkreplennoj opytom kompetentnosti, kak i sama tehnologiya programmnogo obespecheniya. Glava 8. Ob®yavlyaya udar Praktika - luchshij uchitel'. PUBLIJ Opyt - dorogoj uchitel', no dlya glupcov inogo net. ALXMANAH BEDNOGO RICHARDSA(Bednyj Richard - obraz neobrazovannogo, no zdravomyslyashchego domoroshchennogo filosofa, sozdannyj Bendzhaminom Franklinom, izdavavshim v 1732 - 1757 godah ezhegodnyj al'manah i ispol'zovavshim etot psevdonim (primech. perev.).) Skol'ko vremeni potrebuet zadacha sistemnogo programmirovaniya? Skol'ko sil ponadobitsya? Kak mozhno eto ocenit'? Ranee ya predlozhil sootnosheniya, kotorye mozhno primenyat' dlya vremeni planirovaniya, napisaniya programm, testirovaniya komponentov i testirovaniya sistemy. Vo-pervyh, nuzhno skazat', chto nel'zya delat' ocenku vsej zadachi, ocenivaya tol'ko chast', otnosyashchuyusya k napisaniyu programm, a zatem primenyaya sootnosheniya. Napisanie programm sostavlyaet lish' odnu shestuyu chast' zadachi ili okolo togo, i oshibki pri ego ocenivanii ili v sootnosheniyah mogut privesti k smehotvornym rezul'tatam. Vo-vtoryh, nuzhno uchityvat', chto ocenki, poluchennye pri sozdanii otdel'nyh nebol'shih programm, nel'zya primenyat' dlya bol'shih sistemnyh produktov. K primeru, dlya programmy, naschityvayushchej 3200 slov, Sakman, |rikson i Grant ocenivayut summarnoe vremya napisaniya programm i otladki dlya odnogo programmista v 178 chasov, chto ekstrapoliruetsya do 35800 operatorov v god. Vdvoe men'shaya programma potrebovala men'she chetverti ukazannogo vremeni, chto pri ekstrapolyacii daet proizvoditel'nost', blizkuyu uzhe k 80000 operatoram v god.1 Neobhodimo dobavit' zatraty vremeni na planirovanie, sostavlenie dokumentacii, testirovanie, sistemnuyu integraciyu i obuchenie. Linejnaya ekstrapolyaciya dannyh, otnosyashchihsya k korotkim zadacham, bessmyslenna. Esli ekstrapolirovat' vremya, za kotoroe mozhno probezhat' stometrovku, to okazhetsya, chto mozhno probezhat' milyu menee chem za tri minuty. Prezhde chem otkazat'sya ot etih dannyh, otmetim, chto i dlya ne sovsem sravnimyh zadach oni pokazyvayut, chto ob®em raboty rastet kak stepennaya funkciya razmera, dazhe bez ucheta processa otmena informaciej (krome programmista s sobstvennoj pamyat'yu). Pokazannye na ris. 8.1 dannye vyzyvayut grustnye chuvstva. Grafik demonstriruet rezul'taty, poluchennye v issledovanii, provedennom Nanusom (Nanus) i Farrom (Farr)2 v System Development Corporation. V nem vyyavlyaetsya zavisimost' s pokazatelem stepeni 1,5: Ob®em raboty = (konstanta) CH (kolichestvo komand)1,5. V drugom issledovanii, provedennom v etoj kompanii, o kotorom soobshchaet Vajnvurm (Weinwurm)3, takzhe poluchen pokazatel', blizkij k 1,5. Est' neskol'ko issledovanij otnositel'no proizvoditel'nosti truda programmista, v kotoryh predlozhen ryad tehnologij ocenivaniya. Est' obzor opublikovannyh dannyh, podgotovlennyj Mourinom (Morin).4 YA privedu zdes' lish' neskol'ko naibolee pokazatel'nyh rezul'tatov. Ris. 8.1 Zatraty na programmirovanie kak funkciya razmera programmy Dannye Portmana CHarl'z Portman (Charles Portman), menedzher otdela programmirovaniya ICL - Computer Equipment Organization (Northwest) v Manchestere, predlagaet svoe ponimanie problemy, kotoroe mozhet okazat'sya poleznym. On obnaruzhil, chto ego komandy programmistov otstayut ot grafikov primerno napolovinu, t.e. kazhdoe zadanie vypolnyaetsya primerno vdvoe dol'she, chem predpolagalos'. Pri etom ocenki ochen' tshchatel'no provodilis' gruppami opytnyh ekspertov, ocenivavshih v cheloveko-chasah trudoemkost' neskol'kih soten podzadach s pomoshch'yu diagramm PERT. Kogda vyyavlyalos' otstavanie ot grafika, on prosil vesti podrobnye ezhednevnye zhurnaly ispol'zovaniya vremeni. Iz nih vyyasnilos', chto oshibka ocenok polnost'yu ob®yasnyaetsya tem, chto ego komandy ispol'zovali na programmirovanie i otladku lish' 50 procentov rabochego vremeni. Ostal'noe vremya teryalos' iz-za otkazov mashiny, na nebol'shie srochnye postoronnie zadaniya, soveshchaniya, pisanie bumag, dela firmy, bolezni, lichnoe vremya i t.d. Koroche ocenki ishodili iz nerealistichnogo predpolozheniya o tom, kakaya chast' rabochego vremeni otvoditsya neposredstvenno rabote.6 Dannye Arona Dzhoel Aron (Joel Aron), menedzher IBM po sistemnym tehnologiyam v Gejtersberge, shtat Merilend, izuchal effektivnost' truda programmistov vo vremya raboty nad devyat'yu krupnymi sistemami (krupnaya sootvetstvuet bolee chem 25 programmistam i 30000 operatorov).7 On klassificiruet takie sistemy v sootvetstvii s intensivnost'yu vzaimodejstviya mezhdu programmistami (i chastyami sistemy) i obnaruzhivaet sleduyushchie velichiny proizvoditel'nosti: Ochen' slaboe vzaimodejstvie 10000 instrukcij na cheloveka v god Nekotoroe vzaimodejstvie 5000 instrukcij na cheloveka v god Sushchestvennoe vzaimodejstvie 1500 instrukcij na cheloveka v god CHeloveko-god zdes' ne uchityvaet podderzhku i sistemnoe testirovanie, tol'ko razrabotku i programmirovanie. Pri vvedenii popravki s koefficientom dva s cel'yu ucheta sistemnogo testirovaniya eti cifry blizko sootvetstvuyut dannym Harra. Dannye Harra Dzhon Harr (John Harr), menedzher po programmirovaniyu Electronic Switching System, vhodyashchej v sostav Bell Telephone Laboratories, soobshchil o svoem sobstvennom opyte i drugih izvestnyh emu dannyh v doklade na Ob®edinennoj konferencii po komp'yuteram vesnoj 1969 goda.8 |ti dannye privedeny na risunkah 8.2, 8.3 i 8.4. Naibolee pouchitelen i soderzhit bol'she dannyh risunok 8.2. Pervye dva zadaniya yavlyayutsya, po preimushchestvu, upravlyayushchimi programmami, a dva vtoryh - yazykovymi translyatorami. Proizvoditel'nost' izmeryaetsya v kolichestve otlazhennyh slov za cheloveko-god. Pri etom uchityvaetsya vremya programmirovaniya, otladki i sistemnogo testirovaniya. Neizvestno, uchteny li zatraty na planirovanie, podderzhku mashiny, sostavlenie dokumentacii i t.p. Ris. 8.2 Svodka po chetyrem vazhnejshim programmnym proektam, osushchestvlennym v ESS Proizvoditel'nost' razbivaetsya na dva klassa: dlya upravlyayushchih programm sostavlyaet okolo 600 slov na cheloveka za god, dlya translyatorov - okolo 2200. Obratite vnimanie, chto vse chetyre programmy priblizitel'no odnogo razmera, razlichie sostoit v razmere rabochih grupp, prodolzhitel'nosti raboty i kolichestve modulej. CHto yavlyaetsya prichinoj, a chto - sledstviem? Byla li slozhnost' prichinoj togo, chto dlya upravlyayushchih programm trebovalos' bol'she lyudej? Ili zhe bol'shee chislo modulej i cheloveko-mesyacev obuslovleno bol'shim chislom lyudej, privlechennyh k rabote? Byla li bol'shaya prodolzhitel'nost' vypolneniya vyzvana slozhnost'yu problem ili mnogochislennost'yu zanyatyh lyudej? Trudno skazat' s uverennost'yu. Konechno, upravlyayushchie programmy byli bolee slozhnymi. Esli ostavit' v storone eti neopredelennosti, to cifry opisyvayut real'nuyu proizvoditel'nost' pri sozdanii bol'shih sistem, i potomu predstavlyayut cennost'. Na risunkah 8.3 i 8.4 pokazany nekotorye interesnye dannye o fakticheskoj skorosti programmirovaniya i otladki v sravnenii s prognozom. Dannye OS/360 Opyt OS/360 podtverzhdaet dannye Harra, hotya dannye po OS/360 ne stol' podrobny. V gruppah razrabotki upravlyayushchej programmy proizvoditel'nost' sostavila 600-800 otlazhennyh komand v god na cheloveka. V gruppah razrabotki translyatorov proizvoditel'nost' dostigla 2000-3000 otlazhennyh komand v god na cheloveka. Pri etom uchityvaetsya planirovanie, testirovanie komponentov, sistemnoe testirovanie i nekotorye zatraty na podderzhku. Naskol'ko ya mogu sudit', eti dannye soglasuyutsya s rezul'tatami Harra. Ris. 8.3 Predskazannaya i fakticheskaya skorost' programmirovaniya Ris. 8.4 Predskazannaya i fakticheskaya skorost' otladki Dannye Arona, Harra i OS/360 druzhno podtverzhdayut rezkie razlichiya v proizvoditel'nosti v zavisimosti ot slozhnosti i trudnosti samoj zadachi. V rabote ocenivaniya slozhnosti ya priderzhivayus' toj linii, chto kompilyatory vtroe huzhe obychnyh paketnyh prikladnyh programm, a operacionnye sistemy vtroe huzhe kompilyatorov.9 Dannye Korbato Dannye Harra i OS/360 otnosyatsya k programmirovaniyu na yazyke assemblera. Est' nemnogo publikacij otnositel'no proizvoditel'nosti sistemnogo programmirovaniya s ispol'zovaniem yazykov vysokogo urovnya. Korbato (Corbato) iz proekta MAC Massachusetskogo tehnologicheskogo instituta soobshchaet o srednej proizvoditel'nosti 1200 strok otlazhennyh operatorov PL/I na cheloveka v god pri razrabotke operacionnoj sistemy MULTICS (ot 1 do 2 millionov slov).10 |to chislo ochen' vdohnovlyaet. Kak u drugih proektov, MULTICS vklyuchaet v sebya upravlyayushchie programmy i yazykovye translyatory. Rezul'tatom takzhe yavlyaetsya sistemnyj produkt, otlazhennyj i dokumentirovannyj. Dannye kazhutsya sravnimymi v otnoshenii vidov ispolnennoj raboty. A proizvoditel'nost' povyshaetsya do srednej velichiny mezhdu upravlyayushchimi programmami i translyatorami v drugih proektah. No Korbato ukazyvaet kolichestvo strok za god na cheloveka, a ne slov! Kazhdomu operatoru v ego sisteme sootvetstvuet ot treh do pyati slov koda, napisannogo vruchnuyu! Iz etogo mozhno sdelat' dva vazhnyh vyvoda: - Proizvoditel'nost', izmerennaya v elementarnyh operaciyah, okazyvaetsya postoyannoj, chto kazhetsya razumnym, esli uchityvat', skol'ko vremeni nuzhno dumat' nad operatorom, i skol'ko oshibok mozhet v nem byt'.11 - Pri ispol'zovanii podhodyashchego yazyka vysokogo urovnya proizvoditel'nost' mozhno povysit' v pyat' raz.12 Glava 9. Dva v odnom Avtoru stoit prismotret'sya k Noyu i... pouchit'sya na primere Kovchega, kak v ochen' malen'koe prostranstvo vtisnut' ochen' mnogo. SIDNEJ SMIT, "|DINBURGSKOE REVYU" Razmer programmy kak stoimost' Kakova stoimost' programmy? Esli ne schitat' vremeni vypolneniya, to pomyat', zanimaemaya programmoj, sostavlyaet glavnye izderzhki. |to verno dazhe dlya sobstvennyh razrabotok, kogda pol'zovatel' platit avtoru sushchestvenno men'she, chem stoit razrabotka. Voz'mem interaktivnuyu sistemu IBM APL. Plata za ee ispol'zovanie sostavlyaet $400 v mesyac. Pri rabote ona trebuet ne men'she 160 Kbajt pamyati. U mashiny Model 165 ezhemesyachnaya arenda 1 Kbajta pamyati stoit okolo $12. Esli pol'zovat'sya programmoj kruglosutochno, to mesyachnaya plata sostavit $400 za pol'zovanie programmoj i $1920 za pamyat'. Esli pol'zovat'sya sistemoj APL lish' chetyre chasa v den', to mesyachnaya plata sostavit $400 za pol'zovanie programmoj i $320 za ispol'zovanie pamyati. Neredko mozhno vstretit' cheloveka, vyrazhayushchego uzhas po povodu togo, chto v mashine, imeyushchej 2 Mbajt pamyati, pod operacionnuyu sistemu mozhet byt' otvedeno 400 Kbajt. |to stol' zhe glupo, kak rugat' Boing-747 za to, chto on stoit 27 millionov dollarov. Nado zhe sprosit': "A chto ona delaet?" Kakuyu, sobstvenno, prostotu v ispol'zovanii i proizvoditel'nost' (posredstvom effektivnogo ispol'zovaniya sistemy) poluchaesh' za potrachennye den'gi? Nel'zya li vlozhennye v arendu pamyati $4800 v mesyac izrashodovat' s bol'shej pol'zoj - na drugie apparatnye sredstva, programmistov, prikladnye programmy? Proektirovshchik sistemy otvodit chast' vseh apparatnyh resursov programmam, rezidentno nahodyashchimsya v pamyati, esli schitaet, chto pol'zovatelyu eto nuzhnee, chem summatory, diski i t.d. Nel'zya kritikovat' programmnuyu sistemu za razmer kak takovoj, i v to zhe vremya posledovatel'no propagandirovat' tesnuyu integraciyu proektirovaniya apparatnogo i programmnogo obespecheniya. Poskol'ku razmer opredelyaet znachitel'nuyu dolyu togo, vo chto obhoditsya pol'zovatelyu sistemnyj programmnyj produkt, izgotovitel' dolzhen planirovat' razmer, kontrolirovat' ego i razrabatyvat' tehnologii, umen'shayushchie razmer, podobno tomu, kak izgotovitel' apparatnoj chasti planiruet kolichestvo detalej, kontroliruet ego i razrabatyvaet metody sokrashcheniya kolichestva detalej. Kak i dlya vsyakoj ceny, ploh ne bol'shoj razmer kak takovoj, a razmer, ne vyzyvaemyj neobhodimost'yu. Upravlenie razmerom Dlya menedzhera proekta upravlenie razmerom yavlyaetsya otchasti tehnicheskoj, otchasti administrativnoj zadachej. CHtoby ustanavlivat' razmery predlagaemyh sistem, neobhodimo izuchat' pol'zovatelej i ispol'zuemye imi prilozheniya. Zatem sistemy dolzhny razlagat'sya na komponenty, dlya kotoryh opredelyayutsya proektnye razmery. Poskol'ku var'irovat' sootnosheniem skorosti i razmera mozhno lish' dostatochno bol'shimi skachkami, planirovanie razmera yavlyaetsya neprostym delom, trebuyushchim znaniya vozmozhnyh kompromissov dlya kazhdoj chasti. Opytnyj menedzher sdelaet sebe takzhe "zanachku", kotoruyu mozhno budet ispol'zovat' v processe raboty. Vse zhe pri rabote nad OS/360 prishlos' izvlech' neskol'ko gor'kih urokov, nesmotrya na to, chto vse opisannye mery byli prinyaty. Prezhde vsego, nedostatochno ustanovit' razmer pamyati, nuzhno vzvesit' razmer so vseh storon. Bol'shinstvo prezhnih operacionnyh sistem razmeshchalos' na magnitnyh lentah, i bol'shoe vremya poiska na lente ne raspolagalo k chastoj zagruzke programmnyh segmentov. OS/360 raspolagalas' na diske, kak i ee neposredstvennye predshestvenniki - operacionnaya sistema Stretch i diskovaya operacionnaya sistemy 1410-7010. Ee sozdateli poluchili svobodu legkogo obrashcheniya k disku. Pervonachal'no eto obernulos' katastrofoj dlya proizvoditel'nosti. Pri opredelenii razmerov pamyati komponentov my ne ustanovili odnovremenno byudzhetov dostupa. Kak i sledovalo ozhidat', programmist, vyhodivshij za ramki opredelennoj emu pamyati, razbival programmu na overlei. V rezul'tate i summarnyj razmer uvelichivalsya, i vypolnenie zamedlyalos'. Huzhe to, chto nasha sistema administrativnogo kontrolya ne smogla eto obnaruzhit'. Kazhdyj programmist soobshchal, skol'ko pamyati on ispol'zoval, i tak kak on ukladyvalsya v zadanie, nikto ne bespokoilsya. K schast'yu, vskore nastal den', kogda zarabotala sistema modelirovaniya tehnicheskih harakteristik OS/360. Pervye rezul'taty pokazali nalichie ser'eznyh problem. Modelirovanie kompilyacii s Fortran H na mashine Model 65 s barabanami dalo rezul'tat pyat' operatorov v minutu! Analiz pokazal, chto vse modeli upravlyayushchej programmy delali mnozhestvo obrashchenij k disku. Dazhe intensivno ispol'zuemye moduli supervizora chasto obrashchalis' k disku, i rezul'tat po zvuku ves'ma napominal shelest perelistyvaemoj knigi. Pervaya moral' yasna: planirovat' nuzhno kak razmer rezidentnoj chasti, tak i obshchij razmer. Pomimo planirovaniya etih razmerov nuzhno planirovat' i kolichestvo obrashchenij k disku dlya obratnoj zapisi. Vtoroj urok byl analogichen. Resursy pamyati ustanavlivalis' prezhde, chem dlya kazhdogo modulya bylo opredeleno tochnoe raspredelenie pamyati dlya funkcij. V rezul'tate kazhdyj programmist, ne ukladyvavshijsya v razmery, iskal, chto iz ego koda mozhno vykinut' cherez zabor v pamyat' sosedu. Poetomu bufera upravlyayushchej programmy stali chast'yu pamyati pol'zovatelya. CHto huzhe, tak zhe postupali vse upravlyayushchie bloki, i v rezul'tate byli polnost'yu skomprometirovany bezopasnost' i zashchita sistemy. Poetomu vtoroj vyvod tozhe sovershenno yasen: pri zadanii razmera modulya nuzhno tochno opredelit', chto on dolzhen delat'. I tretij, bolee ser'eznyj urok, kotoryj nuzhno izvlech' iz etogo opyta. Proekt byl slishkom velik, a obshchenie mezhdu menedzherami nedostatochnym, chtoby mnogochislennye uchastniki mogli pochuvstvovat' sebya dobyvayushchimi zachetnye ochki dlya komandy, a ne sozdatelyami programmnyh produktov. Kazhdyj optimiziroval svoj lichnyj uchastok, chtoby reshit' postavlennye zadachi, i malo kto zadumyvalsya nad tem, kak eto otrazitsya na zakazchike. Poterya orientacii i svyazi predstavlyayut soboj glavnuyu opasnost' dlya bol'shih proektov. V techenie vsej razrabotki sistemnye arhitektory dolzhny podderzhivat' postoyannuyu bditel'nost' dlya obespecheniya postoyannoj celostnosti sistemy. Odnako takaya strategiya zavisit ot pozicii samih razrabotchikov. Edva li ne glavnejshej funkciej menedzhera programmnogo proekta dolzhno byt' vospitanie pozicii zaboty ob obshchej sisteme, orientirovki na pol'zovatelya. Tehnologii sberezheniya pamyati Nikakoe raspredelenie resursov pamyati i kontrol' ne sdelayut programmu malen'koj. Dlya etogo trebuetsya izobretatel'nost' i masterstvo. Ochevidno, chto chem bol'she funkcij, tem bol'she trebuetsya pamyati pri tom zhe samom bystrodejstvii. Poetomu pervoj oblast'yu, gde nuzhno prilozhit' masterstvo, yavlyaetsya nahozhdenie kompromissa mezhdu funkcional'nost'yu i razmerom. Zdes' my srazu stalkivaemsya s vazhnoj strategicheskoj problemoj. V kakoj mere etot vybor mozhno predostavit' pol'zovatelyu? Mozhno razrabotat' programmu so mnogimi fakul'tativnymi funkciyami, kazhdaya iz kotoryh trebuet pamyati. Mozhno skonstruirovat' generator, prosmatrivayushchij spisok opcij i sootvetstvuyushchim obrazom adaptiruyushchij programmu. No cel'naya programma, sootvetstvuyushchaya kazhdomu otdel'nomu spisku opcij, zanyala by men'she pamyati. |to kak v avtomobile: esli podsvetka karty, prikurivatel' i chasy vhodyat v prejskurant kak edinaya stat'ya, ih stoimost' okazhetsya nizhe, chem esli porozn' vybirat' kazhdyj iz predmetov. Poetomu proektirovshchiku sleduet opredelit' stepen' detalizacii opcij pol'zovatelya. Esli sistema proektiruetsya dlya raboty s pamyat'yu raznogo ob®ema, voznikaet drugoj vazhnyj vopros. Diapazon prisposoblyaemosti nel'zya sdelat' proizvol'no shirokim - dazhe pri razbienii programmy na ochen' melkie moduli. V malen'koj sisteme bol'shinstvo modulej peregruzhaetsya. Znachitel'naya chast' rezidentnoj pamyati malen'koj sistemy dolzhna byt' otvedena dlya vremennoj ili stranichnoj pamyati, v kotoruyu zagruzhayutsya drugie chasti. Ee razmer ogranichivaet razmer kazhdogo modulya. A razbienie funkcij na melkie moduli vlechet poteri i proizvoditel'nost', i pamyati. Poetomu v bol'shoj sisteme, gde vremennaya pamyat' v dvadcat' raz bol'she, ona lish' pozvolyaet umen'shit' kolichestvo obrashchenij. Iz-za malen'kih razmerov modulej sistema vse-taki teryaet v skorosti i rashodovanii pamyati. Po etoj prichine effektivnost' sistemy, kotoruyu mozhno postroit' ih modulej malen'koj sistemy, ogranichena. Vtoroj oblast'yu prilozheniya masterstva yavlyaetsya nahozhdenie kompromissa mezhdu pamyat'yu i bystrodejstviem. Dlya otdel'noj funkcii uvelichenie pamyati vlechet za soboj rost bystrodejstviya, chto spravedlivo v udivitel'no shirokom diapazone velichin. |tot fakt delaet vozmozhnym ustanovlenie resursov pamyati. CHtoby oblegchit' svoej komande poisk pravil'nogo sootnosheniya mezhdu pamyat'yu i proizvoditel'nost'yu, menedzher mozhet sdelat' dve veshchi. Vo-pervyh, organizovat' obuchenie tehnike programmirovaniya, a ne prosto polagat'sya na prirodnyj um i predshestvuyushchij opyt. |to osobenno vazhno, esli mashina ili yazyk novye. Osobennosti ih effektivnogo ispol'zovaniya nuzhno bystro izuchit' i sdelat' obshchim dostoyaniem, vozmozhno, prisuzhdaya osobye prizy za osvoenie novoj tehniki. Vo-vtoryh, nuzhno ponyat', chto u programmirovaniya est' tehnologiya i komponenty nuzhno sobirat' iz gotovyh chastej. V kazhdom proekte dolzhen imet'sya nabor horoshih procedur ili makrosov dlya obrabotki ocheredej, poiska, heshirovaniya i sortirovki, prichem ne menee chem v dvuh variantah: odnom bystrom, drugom ekonomyashchem pamyat'. Razrabotka takoj tehnologii yavlyaetsya vazhnoj zadachej realizacii, kotoruyu mozhno reshat' parallel'no s razrabotkoj sistemnoj arhitektury. Predstavlenie - sut' programmirovaniya Za masterstvom stoit izobretatel'nost', blagodarya kotoroj poyavlyayutsya ekonomichnye i bystrye programmy. Pochti vsegda eto yavlyaetsya rezul'tatom strategicheskogo proryva, a ne takticheskogo umeniya. Inogda takim strategicheskim proryvom yavlyaetsya algoritm, kak, naprimer, bystroe preobrazovanie Fur'e, predlozhennoe Kuli i T'yuki, ili zamena n2 sravnenij na n log n pri sortirovke. Gorazdo chashche strategicheskij proryv proishodit v rezul'tate predstavleniya dannyh ili tablic. Zdes' zaklyuchena serdcevina programmy. Pokazhite mne blok- shemy, ne pokazyvaya tablic, i ya ostanus' v zabluzhdenii. Pokazhite mne vashi tablicy, i blok-shemy, skorej vsego, ne ponadobyatsya: oni budut ochevidny. Primery moshchi, kotoroj obladaet predstavlenie, legko umnozhit'. YA vspominayu odnogo molodogo cheloveka, zanimavshegosya sozdaniem usovershenstvovannogo konsol'nogo interpretatora dlya IBM 650. Emu udalos' vmestit' ego v porazitel'no maloe prostranstvo blagodarya razrabotke interpretatora dlya interpretatora i ponimaniyu togo, chto vzaimodejstvie cheloveka s mashinoj proishodit medlenno i redko, a pamyat' doroga. |legantnyj malen'kij kompilyator s Fortran firmy Digitek ispol'zuet osoboe ochen' plotnoe predstavlenie koda samogo kompilyatora, blagodarya chemu ne trebuetsya vneshnej pamyati. Vremya, kotoroe tratitsya na raspakovku koda, desyatikratno okupaetsya za schet otsutstviya vvoda-vyvoda. (Uprazhneniya v konce glavy 6 knigi Bruksa i Iversona "Avtomaticheskaya obrabotka dannyh"1 vklyuchaet podborku takih primerov, kak i mnogie uprazhneniya u Knuta.2) Programmist, lomayushchij golovu po povodu nehvatki pamyati, chasto postupit luchshe vsego, ostaviv v pokoe svoj kod, vernuvshis' nazad i horoshen'ko posmotrev svoi dannye. Predstavlenie - sut' programmirovaniya. Glava 10. Dokumentarnaya gipoteza Gipoteza: Sredi morya bumag neskol'ko dokumentov stanovyatsya kriticheski vazhnymi osyami, vokrug kotoryh vrashchaetsya vse upravlenie proektom. Oni yavlyayutsya glavnymi lichnymi instrumentami menedzhera. Tehnologiya, pravila firmy i tradicii remesla trebuyut vypolnit' nekotoroe kolichestvo kancelyarskoj raboty po proektu. Menedzheru-novichku, tol'ko chto samomu byvshemu masterovym, eta rabota kazhetsya sovershennoj pomehoj i nenuzhnym otvlecheniem, bumazhnym valom, grozyashchim zahlestnut' ego. Po bol'shej chasti tak i est' v dejstvitel'nosti. Odnako ponemnogu on nachinaet ponimat', chto nekotoraya nebol'shaya chast' etih dokumentov zaklyuchaet v sebe znachitel'nuyu chast' ego administrativnoj raboty. Podgotovka kazhdogo iz nih sluzhit glavnym povodom dlya sosredotocheniya mysli i kristallizacii obsuzhdenij, kotorye bez etogo dlilis' by vechno. Vedenie etih dokumentov stanovitsya mehanizmom nablyudeniya i preduprezhdeniya. Sam dokument stanovitsya pamyatkoj, indikatorom sostoyaniya i bazoj dannyh dlya sostavleniya otchetov. CHtoby uvidet', kak eto dolzhno rabotat' v programmnom proekte, rassmotrim nekotorye dokumenty, poleznye i v drugom kontekste, i posmotrim, mozhno li sdelat' obobshcheniya. Dokumenty dlya proekta razrabotki komp'yutera Predpolozhim, chto razrabatyvaetsya komp'yuter. Kakie vazhnejshie dokumenty dolzhny byt' razrabotany? Celi. Zdes' opisyvaetsya, kakie potrebnosti nuzhno udovletvorit', a takzhe zadachi, pozhelaniya, ogranicheniya i prioritety. Specifikacii. |to rukovodstvo po komp'yuteru plyus specifikacii tehnicheskih harakteristik. |to odin iz pervyh dokumentov, sostavlyaemyh dlya novogo produkta, i zavershaetsya on poslednim. Grafik. Byudzhet. |to ne prosto ogranichenie, no odin iz naibolee poleznyh menedzheru dokumentov. Nalichie byudzheta zastavlyaet osushchestvlyat' tehnicheskie resheniya, kotoryh staralis' by izbezhat', i, chto eshche vazhnee, sluzhit vypolneniyu i raz®yasneniyu strategicheskih reshenij. Organizacionnaya struktura. Prostranstvennoe raspolozhenie. Ocenka, prognoz, ceny. Oni nahodyatsya v ciklicheskoj vzaimosvyazi, chto opredelyaet uspeh ili proval proekta: CHtoby sdelat' prognoz rynka, nuzhny tehnicheskie harakteristiki i ustanovlennye ceny. Cifry prognoza vmeste s zadannym proektom chislom komponentov opredelyayut ocenku stoimosti proizvodstva i dolyu rashodov na razrabotku i fiksirovannyh zatrat, prihodyashchihsya na odno ustrojstvo. |ti rashody, v svoyu ochered', opredelyayut ceny. Esli ceny nizhe ustanovlennyh, nachinaetsya radostnaya raskrutka spirali uspeha. Prognoz rastet, stoimost' odnogo ustrojstva padaet, a ceny opuskayutsya eshche nizhe. Esli ceny vyshe ustanovlennyh, nachinaetsya raskrutka spirali katastrofy, i vse sily dolzhny byt' brosheny na to, chtoby slomit' ee. Nuzhno uluchshit' tehnicheskie harakteristiki i razrabotat' novye prilozheniya, chtoby podnyat' rynochnyj prognoz. Izderzhki nuzhno snizit', chtoby poluchit' bolee nizkie ocenki. Napryazhennost' takogo cikla chasto trebuet bol'shih usilij marketologa i inzhenera. Pri etom vozmozhny zabavnye kolebaniya. YA vspominayu mashinu, u kotoroj v techenie treh let razrabotki kazhdye polgoda schetchik komand ustraivalsya to v operativnoj pamyati, to vne ee. Na odnom etape trebovalis' chut' luchshie harakteristiki, i schetchik delali na tranzistorah. Na sleduyushchem etape nachinalas' bor'ba za snizhenie stoimosti, poetomu schetchik organizovyvalsya kak adres v operativnoj pamyati. V drugom proekte luchshij izvestnyj mne menedzher po inzhenernym proektam sluzhil gigantskim mahovikom, gasya svoej inerciej kolebaniya, ishodivshie ot marketinga i menedzhmenta. Dokumenty dlya fakul'teta v universitete Nesmotrya na ogromnye razlichiya v celyah i deyatel'nosti, kriticheskoe mnozhestvo dlya predsedatelya fakul'teta v universitete sostavlyaet shodnoe chislo shodnyh dokumentov. Pochti kazhdoe reshenie dekana, soveta kafedry ili predsedatelya yavlyaetsya specifikaciej ili izmeneniem sleduyushchih dokumentov: Celi. Opisanie kursa. Trebovaniya k soiskatelyu stepeni. Predlozheniya po issledovatel'skoj rabote (i plany, pri nalichii finansirovaniya). Raspisanie zanyatij i naznachenie prepodavatelej. Byudzhet. Pomeshcheniya. Naznachenie rukovoditelej dlya aspirantov. Obratite vnimanie, chto dokumenty ochen' pohozhi na te, kotorye nuzhny dlya komp'yuternogo proekta: celi, specifikacii produkta, raspredelenie vremeni, deneg, mesta i lyudej. Tol'ko dokumenty s cenami otsutstvuyut: etim zanimaetsya zakonodatel'noe sobranie. Shodstvo ne sluchajno - zabotami vsyakoj zadachi upravleniya yavlyayutsya: chto, kogda, po kakoj cene, gde i kto. Dokumenty dlya programmnogo proekta Vo mnogih programmnyh proektah rabota nachinaetsya s soveshchanij, na kotoryh obsuzhdaetsya struktura; zatem pristupayut k napisaniyu programm. Odnako kak by ni byl mal proekt, menedzher postupit mudro, esli srazu nachnet formalizovat' hotya by minidokumenty, kotorye posluzhat ego bazoj dannyh. I on obnaruzhit, chto emu nuzhny, po bol'shej chasti, te zhe dokumenty, chto i drugim menedzheram. CHto: celi. Zdes' opredelyaetsya, kakie potrebnosti dolzhny byt' udovletvoreny, a takzhe zadachi, pozhelaniya, ogranicheniya i prioritety. CHto: specifikacii produkta. Nachinaetsya kak predlozhenie, a konchaetsya kak rukovodstvo i vnutrennyaya dokumentaciya. Vazhnejshej chast'yu yavlyayutsya specifikacii skorosti i pamyati. Kogda: grafik. Po kakoj cene: byudzhet. Gde: raspolozhenie pomeshchenij. Kto: organizacionnaya struktura. Ona perepletaetsya so specifikaciej interfejsa, kak predskazyvaet zakon Konveya: "Organizacii, proektiruyushchie sistemy, neizbezhno proizvodyat sistemy, yavlyayushchiesya kopiyami ih organizacionnyh struktur".1 Konvej idet dal'she i ukazyvaet, chto organizacionnaya struktura pervonachal'no otrazhaet proekt pervoj sistemy, kotoryj navernyaka byl oshibochnym. Esli proekt sistemy dolzhen dopuskat' vnesenie izmenenij, to i organizaciya dolzhna byt' gotova k peremenam. Zachem nuzhny formal'nye dokumenty? Vo-pervyh, neobhodimo zapisyvat' prinyatye resheniya. Tol'ko kogda pishesh', stanovyatsya vidny propuski i prostupayut nesoglasovannosti. V processe zapisyvaniya voznikaet neobhodimost' prinyatiya soten mini-reshenij, i ih nalichie otlichaet chetkuyu i yasnuyu politiku ot rasplyvchatoj. Vo-vtoryh, posredstvom dokumentov resheniya soobshchayutsya ispolnitelyam. Menedzheru prihoditsya postoyanno udivlyat'sya, chto politika, kotoruyu on schital izvestnoj vsem, okazyvaetsya sovershenno neizvestnoj odnomu iz chlenov ego komandy. Poskol'ku osnovnaya ego rabota sostoit v tom, chtoby vse dvigalis' v odnom napravlenii, ego glavnaya ezhednevnaya zadacha zaklyuchaetsya v obmene informaciej, a ne prinyatii reshenij, i dokumenty ochen' oblegchat emu etu nagruzku. Nakonec, dokumenty obrazuyut bazu dannyh menedzhera i ego kontrol'nyj spisok. Periodicheski izuchaya ih, on vidit, v kakoj tochke puti nahoditsya, i opredelyaet neobhodimost' smeshcheniya akcentov ili izmeneniya napravleniya. YA ne razdelyayu vydvigaemyh prodavcami videnij "vseohvatyvayushchej informacionnoj sistemy dlya upravleniya", v kotoroj administrator vvodit v komp'yuter zapros s klaviatury, i na ekrane vspyhivaet nuzhnyj emu otvet. Est' mnogo fundamental'nyh prichin, po kotorym etogo ne proizojdet. Odna prichina zaklyuchaetsya v tom, chto tol'ko malen'kaya chast', vozmozhno 20 procentov, rabochego vremeni administratora zanyata zadachami, kotorye trebuyut svedenij, otsutstvuyushchih v ego pamyati. A vse ostal'noe vremya - eto obshchenie: slushat', otchityvat'sya, obuchat', ubezhdat', sovetovat', obodryat'. No dlya toj doli, dlya kotoroj dejstvitel'no nuzhny dannye, neobhodimy neskol'ko vazhnyh dokumentov, kotorye udovletvoryayut bol'shinstvo nuzhd. Zadacha menedzhera sostoit v tom, chtoby razrabotat' plan i vypolnit' ego. No tol'ko zapisannyj plan yavlyaetsya tochnym i mozhet byt' soobshchen drugim. Takoj plan sostoit iz dokumentov, opisyvayushchih: chto, kogda, po kakoj cene, gde i kto. |tot malen'kij nabor vazhnyh dokumentov ohvatyvaet znachitel'nuyu chast' raboty menedzhera. Esli v samom nachale ponyat' ih vseohvatyvayushchuyu i vazhnuyu sushchnost', to oni stanut dlya menedzhera dobrym instrumentom, a ne razdrazhayushchej obuzoj. Sdelav eto, on opredelit svoj kurs bolee chetko i bystro. Glava 11. Planirujte na vybros V etom mire net nichego postoyannee nepostoyanstva. SVIFT Razumno vzyat' metod i ispytat' ego. Pri neudache chestno priznajtes' v etom i poprobujte drugoj metod. No glavnoe, delajte chto-nibud'. FRANKLIN D. RUZVELXT Opytnye zavody i masshtabirovanie Inzhenery-himiki davno ponyali, chto process, uspeshno osushchestvlyaemyj v laboratorii, nel'zya odnim mahom perenesti v zavodskie usloviya. Neobhodim promezhutochnyj shag, sozdanie opytnogo zavoda, chtoby poluchit' opyt narashchivaniya kolichestv veshchestv i funkcionirovaniya v nezashchishchennyh sredah. K primeru, laboratornyj process opresneniya vody sleduet proverit' na opytnom zavode moshchnost'yu 50 tysyach litrov v den', prezhde chem ispol'zovat' v gorodskoj sisteme vodosnabzheniya moshchnost'yu 10 mln. litrov v den'. Razrabotchiki programmnyh sistem tozhe poluchili etot urok, no, pohozhe, do sih por ego ne usvoili. V odnom proekte za drugim razrabatyvayut ryad algoritmov i zatem nachinayut sozdavat' postavlyaemoe klientu programmnoe obespechenie po grafiku, trebuyushchemu postavki pervoj zhe sborki. V bol'shinstve proektov pervoj postroennoj sistemoj s trudom mozhno pol'zovat'sya. Ona mozhet byt' slishkom medlennoj, slishkom bol'shoj, neudobnoj v ispol'zovanii, a to i vse vmeste. Ne ostaetsya drugoj al'ternativy, krome kak, poumnev, nachat' snachala i postroit' pereproektirovannuyu programmu, v kotoroj eti problemy resheny. Brakovka i pereproektirovanie mogut delat'sya dlya vsej sistemy srazu ili po chastyam. No ves' opyt razrabotki bol'shih sistem pokazyvaet, chto budet sdelano.2 V teh sluchayah, kogda ispol'zuyutsya novye sistemnye koncepcii i novye tehnologii, prihoditsya sozdavat' sistemu na vybros, poskol'ku dazhe samoe luchshee planirovanie ne stol' vsevedushche, chtoby popast' v cel' s pervogo raza. Poetomu problema ne v tom, sozdavat' ili net opytnuyu sistemu, kotoruyu pridetsya vybrosit'. Vy vse ravno eto sdelaete. Vopros edinstvenno v tom, planirovat' li zaranee razrabotku sistemy na vybros ili obeshchat' klientam postavku sistemy, kotoruyu pridetsya vybrosit'. Esli smotret' pod etim uglom, otvet stanovitsya namnogo proshche. Postavka hlama klientu pozvolyaet vyigrat' vremya, no proishodit eto cenoj muchenij pol'zovatelya, otvlechenij razrabotchikov vo vremya pereproektirovaniya i durnoj reputacii produkta, kotoruyu dazhe samoj udachno pereproektirovannoj programme budet trudno pobedit'. Poetomu planirujte vybrosit' pervuyu versiyu - vam vse ravno pridetsya eto sdelat'. Postoyanny tol'ko izmeneniya Posle uyasneniya togo, chto opytnuyu sistemu nuzhno sozdavat', a potom vybrosit', i chto pereproektirovanie s novymi ideyami neizbezhno, polezno obratit'sya licom k izmeneniyu kak yavleniyu prirody. Pervyj shag - priznanie togo, chto izmenenie - eto obraz zhizni, a ne postoronnee i dosadnoe isklyuchenie. Kosgrouv mudro ukazal, chto programmist postavlyaet udovletvorenie potrebnosti pol'zovatelya, a ne kakoj- to osyazaemyj produkt. I v to vremya kak programmy sozdayutsya, testiruyutsya i ispol'zuyutsya, menyayutsya kak fakticheskie potrebnosti pol'zovatelya, tak i ponimanie im svoih potrebnostej.3 Konechno, eto spravedlivo i v otnoshenii potrebnostej, udovletvoryaemyh fizicheskimi produktami, bud' to avtomobili ili komp'yutery. No samo sushchestvovanie osyazaemogo produkta opredelyaet zaprosy pol'zovatelya i ih kvantovanie. Podatlivost' i neosyazaemost' programmnogo produkta pobuzhdayut ego sozdatelej k beskonechnomu izmeneniyu trebovanij. YA dalek ot togo, chtoby schitat', budto vse izmeneniya celej i trebovanij klienta mozhno ili neobhodimo uchityvat' v proekte. Ochevidno, dolzhen byt' ustanovlennyj porog, kotoryj dolzhen podnimat'sya vse vyshe i vyshe po hodu razrabotki, inache ni odin produkt nikogda ne budet sozdan. Tem ne menee nekotorye izmeneniya v zadachah neizbezhny, i luchshe podgotovit'sya k nim zaranee, chem predpolagat', chto ih ne vozniknet. Neizbezhny ne tol'ko izmeneniya v celyah, no takzhe izmeneniya v strategii razrabotki i tehnologii. Koncepciya "raboty na musornyj yashchik" est' lish' priznanie togo fakta, chto po mere priobreteniya opyta menyaetsya proekt.4 Planirujte vnesenie izmenenij v sistemu Sposoby proektirovaniya sistemy s uchetom budushchih izmenenij horosho izvestny i shiroko obsuzhdayutsya v literature - vozmozhno, shire obsuzhdayutsya, chem primenyayutsya. Oni vklyuchayut v sebya tshchatel'noe razbienie na moduli, intensivnoe ispol'zovanie podprogramm, tochnoe i polnoe opredelenie mezhmodul'nyh interfejsov i polnuyu ih dokumentaciyu. Menee ochevidno, chto pri lyuboj vozmozhnosti neobhodimo ispol'zovat' standartnye posledovatel'nosti vyzova i tehnologii tablichnogo upravleniya. Ochen' vazhno ispol'zovat' yazyki vysokogo urovnya i tehnologii samodokumentirovaniya, chtoby umen'shit' chislo oshibok, vyzyvaemyh izmenenij. Moshchnuyu podderzhku pri vnesenii izmenenij okazyvayut operacii vremeni kompilyacii po vklyucheniyu standartnyh ob®yavlenij. Vazhnym priemom yavlyaetsya kvantovanie izmenenij. Kazhdyj produkt dolzhen imet' numerovannye versii, i kazhdaya versiya dolzhna imet' svoj grafik rabot i datu fiksacii, posle kotoroj izmeneniya vklyuchayutsya uzhe v sleduyushchuyu versiyu. Planirujte organizacionnuyu strukturu dlya vneseniya izmenenij Kosgrouv rekomenduet ko vsem planam, veham i grafikam otnosit'sya kak k probam, chtoby oblegchit' izmeneniya. Zdes' on zahodit slishkom daleko - segodnya gruppy programmistov terpyat neudachi obychno iz-za slishkom slabogo, a ne slishkom sil'nogo administrativnogo