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