e-to predlozhil bazar dlya otdel'nyh modulej. Lyuboj takoj produkt deshevle kupit', chem sozdavat' zanovo. Dazhe pri cene 100 000 dollarov kuplennyj produkt stoit primerno stol'ko, skol'ko godovoe soderzhanie programmista. I postavka nemedlennaya! Nemedlennaya, po krajnej mere, dlya real'no sushchestvuyushchih produktov, prospekt kotoryh razrabotchik mozhet poslat' schastlivomu pol'zovatelyu. Bolee togo, takie produkty obychno gorazdo luchshe dokumentirovany i neskol'ko luchshe soprovozhdayutsya, chem domoroshchennye programmy. Razvitie massovogo rynka yavlyaetsya, po moemu mneniyu, naibolee glubokoj dolgosrochnoj tendenciej programmnoj inzhenerii. Stoimost' programmnogo produkta vsegda opredelyalas' stoimost'yu razrabotki, a ne tirazhirovaniya. Razdeliv etu stoimost' dazhe na neskol'kih pol'zovatelej, my korennym obrazom snizhaem cenu na odnogo pol'zovatelya. Vzglyanuv na eto s drugoj storony, my vidim, chto ispol'zovanie n kopij programmnoj sistemy fakticheski umnozhaet na n proizvoditel'nost' ego razrabotchikov. |to rost proizvoditel'nosti otrasli i vsej strany. Glavnym voprosom, konechno, yavlyaetsya proizvoditel'nost'. Smogu li ya ispol'zovat' imeyushchijsya korobochnyj produkt dlya resheniya svoih zadach? Zdes' sluchilas' udivitel'naya veshch'. V 50-h i 60-h godah odno issledovanie za drugim pokazyvalo, chto pol'zovateli ne hotyat ispol'zovat' korobochnye pakety dlya rascheta zarplaty, upravleniya skladom, ucheta debitorov po raschetam i t.d. Trebovaniya byli slishkom special'nymi, otkloneniya ot sluchaya k sluchayu slishkom bol'shimi. V 80-h godah my obnaruzhivaem bol'shoj spros na takie pakety i shirokoe ih ispol'zovanie. CHto izmenilos'? Tol'ko ne pakety. Oni stali neskol'ko bolee obshchimi i luchshe nastraivayutsya, chem ran'she, no ne namnogo. I ne oblast' ih primeneniya. V konce koncov, segodnya potrebnosti biznesa i nauki bolee raznoobrazny i slozhny, chem 20 let nazad. Rezko izmenilos' sootnoshenie stoimosti komp'yuterov i programm. Tot, kto v 1960 godu pokupal mashinu za 2 milliona dollarov, schital, chto mozhet pozvolit' sebe potratit' eshche 250 000 dollarov na zakaznuyu programmu rascheta zarplaty, kotoraya legko i bez ushcherba vpisalas' by vo vrazhdebnuyu komp'yuteram social'nuyu sredu. Te, kto segodnya pokupayut mashinu dlya ofisa za 50 000 dollarov, ne mogut, ponyatno, pozvolit' sebe zakaznye programmy rascheta zarplaty, poetomu oni prisposablivayut svoi procedury rascheta zarplaty k imeyushchimsya paketam. Komp'yutery sejchas stol' obychny, esli ne stol' lyubimy, chto adaptaciya vosprinimaetsya kak obychnoe delo. Est' yarkie isklyucheniya iz moego utverzhdeniya o tom, chto obobshchennost' programmnyh paketov za poslednie gody malo izmenilas': elektronnye tablicy i prostye sistemy baz dannyh. |ti moshchnye instrumenty, stol' ochevidnye zadnim umom i tak pozdno poyavivshiesya, imeyut beschislennoe mnozhestvo primenenij, v tom chisle, ves'ma neobychnye. Est' massa statej i dazhe knig o tom, kak s pomoshch'yu elektronnoj tablicy reshat' neozhidannye zadachi. Bol'shoe chislo zadach, dlya kotoryh ran'she byli by napisany zakaznye programmy na Cobol ili Report Program Generator, teper' shablonno reshaetsya s pomoshch'yu etih instrumentov. Mnogie pol'zovateli izo dnya v den' primenyayut svoi komp'yutery dlya raznyh prilozhenij, nikogda ne napisav ni odnoj programmy. Na praktike mnogie iz etih pol'zovatelej i ne mogut pisat' dlya svoih mashin novye programmy, no tem ne menee priverzhency resheniyu voznikayushchih zadach s ih pomoshch'yu. YA schitayu, chto segodnya dlya mnogih organizacij samaya pravil'naya politika dlya povysheniya proizvoditel'nosti razrabotki programmnogo obespecheniya - eto ustanovit' svoim ne imeyushchim komp'yuternyh znanij rabotnikam umstvennogo truda komp'yutery i horoshie obshchie programmy dlya obrabotki tekstov, risovaniya, raboty s fajlami i elektronnymi tablicami i otpustit' ih v vol'noe plavanie. Takaya zhe politika v otnoshenii rasprostranennyh matematicheskih i statisticheskih paketov, a takzhe nekotoryh navykov programmirovaniya podojdet sotnyam uchenyh, rabotayushchih v laboratoriyah. Utochnenie trebovanij i bystroe maketirovanie. Samaya trudnaya otdel'naya zadacha v razrabotke programmnoj sistemy - eto tochno reshit', chto razrabatyvat'. Ni odna drugaya zadacha raboty nad koncepciyami ne yavlyaetsya stol' trudnoj, kak razrabotka podrobnyh tehnicheskih trebovanij, vklyuchaya vse interfejsy pol'zovatelej, mashinnye interfejsy i interfejsy k drugim programmnym sistemam. Ni odna drugaya chast' raboty ne nanosit takogo ushcherba gotovoj sisteme, esli sdelana nepravil'no. Ni odna drugaya chast' ne ispravlyaetsya pozdnee s bol'shim trudom. Poetomu naibolee vazhnoj funkciej, osushchestvlyaemoj razrabotchikami dlya svoih klientov, yavlyaetsya povtoryayushcheesya poluchenie i utochnenie trebovanij k produktu. Pravda zaklyuchaetsya v tom, chto klienty ne znayut, chego hotyat. Obychno oni ne znayut, na kakie voprosy nuzhno dat' otvet, i pochti nikogda ne zadumyvalis' nad zadachej nastol'ko detal'no, kak eto nuzhno ukazat' v specifikacii. Dazhe prostoj otvet - "sdelajte tak, chtoby novaya programmnaya sistema rabotala tak, kak nasha staraya ruchnaya sistema obrabotki informacii" - okazyvaetsya v dejstvitel'nosti slishkom uproshchennym. Klienty nikogda ne hotyat etogo v tochnosti. Bolee togo, slozhnye programmnye sistemy dejstvuyut, dvizhutsya, rabotayut. Dinamiku etogo dejstviya trudno sebe predstavit'. Poetomu pri planirovanii lyubyh dejstvij neobhodimo ostavit' rezerv dlya mnogokratnogo vzaimodejstviya mezhdu klientom i proektirovshchikom pri opisanii sistemy. YA pojdu dal'she i stanu utverzhdat', chto na praktike klienty, dazhe vmeste s inzhenerami-programmistami, ne v sostoyanii ukazat' polno, strogo i korrektno tochnye trebovaniya k sovremennomu programmnomu produktu, prezhde chem budut sozdany i oprobovany kakie-libo versii produkta, specifikacii k kotoromu oni sostavlyayut. Poetomu odnim iz naibolee mnogoobeshchayushchih sovremennyh napravlenij v tehnologii, prichem obrashchennyh k sushchnosti, a ne k akcidenciyam problem programmirovaniya, yavlyaetsya razrabotka podhodov i instrumentov dlya bystrogo sozdaniya maketov sistem kak chasti iterativnogo processa razrabotki specifikacij. Maket programmnoj sistemy modeliruet glavnye interfejsy i vypolnyaet osnovnye funkcii predpolagaemoj sistemy, pri etom ne obyazatel'no buduchi svyazan temi zhe ogranicheniyami bystrodejstviya komp'yutera, razmera ili stoimosti. Obychno makety vypolnyayut osnovnye zadachi sistemy, no ne pytayutsya obrabatyvat' isklyuchitel'nye situacii, pravil'no reagirovat' na vvod nedopustimyh dannyh, korrektno preryvat' rabotu i t.d. Naznachenie maketa - pokazat', kak voploshchaetsya vybrannaya konceptual'naya struktura, chtoby klient mog proverit' ee prigodnost' k ispol'zovaniyu i neprotivorechivost'. Segodnya mnogie procedury priobreteniya programmnogo obespecheniya osnovyvayutsya na predpolozhenii, chto mozhno zaranee zadat' tehnicheskie trebovaniya dlya zhelaemoj sistemy, rassmotret' predlozheniya razrabotchikov, poluchit' razrabotannuyu sistemu i ustanovit' ee. YA dumayu, chto takoe predpolozhenie v korne neverno, i iz-za etoj oshibki proistekayut mnogie problemy pri priobretenii programm, poskol'ku eti problemy nel'zya ustranit' bez peresmotra osnov, dlya kotorogo trebuetsya interaktivnaya razrabotka i specifikacii maketov i produktov. Poshagovaya obrabotka: narashchivat' programmu, a ne stroit' srazu. YA do sih por pomnyu ispytannyj v 1958 godu udar, kogda vpervye uslyshal, kak moj drug govoril o stroitel'stve (building) programm v protivopolozhnost' napisaniyu (writing). V mgnovenie on rasshiril vse moe predstavlenie o processe programmirovaniya. Primenenie metafory bylo sil'nym i tochnym. Segodnya my ponimaem, chto shodstvo sushchestvuet mezhdu sozdaniem programmy i drugimi stroitel'nymi processami, i svobodno ispol'zuem drugie elementy metafory, takie kak specifikacii (specifications), sborka komponentov (assembly of components), lesa (scaffolding). Metafora stroitel'stva perezhila svoe vremya. Pora snova vnosit' izmeneniya. Esli, kak ya schitayu, sozdavaemye segodnya konceptual'nye struktury slishkom slozhny, chtoby ih mozhno bylo tochno specificirovat' zaranee, i slishkom slozhny, chtoby stroit' bez oshibok, togda nuzhen radikal'no inoj podhod. Obratimsya k prirode i rassmotrim slozhnost' zhivyh sozdanij, a ne bezzhiznennyh tvorenij cheloveka. Tam my obnaruzhivaem konstrukcii, slozhnost' kotoryh vselyaet v nas uzhas. Odin tol'ko mozg nastol'ko slozhen, chto nevozmozhno sostavit' ego shemu. Ego moshch' nevozmozhno povtorit', on bogat svoeobraziem, sposoben k samosohraneniyu i samoobnovleniyu. Sekret v tom, chto mozg rastet, a ne stroitsya. Tak zhe dolzhny sozdavat'sya nashi programmnye sistemy. Neskol'ko let nazad Harlan Millz predlozhil narashchivat' programmnye sistemy putem poshagovoj razrabotki.11 |to znachit, chto snachala sistemu nado zastavit' vypolnyat'sya, dazhe esli pri etom ona ne delaet nichego poleznogo, krome vyzova nekotorogo chisla fiktivnyh podprogramm. Zatem ona ponemnogu obrastaet myasom, prichem podprogrammy, v svoyu ochered', razrabatyvayutsya snachala kak vyzovy pustyh fiktivnyh podprogramm, nahodyashchihsya na uroven' nizhe. Nastaivaya na primenenii etoj tehnologii razrabotchikami proektov na moih laboratornyh zanyatiyah po programmnoj inzhenerii, ya stal svidetelem porazitel'nyh rezul'tatov. Za poslednee desyatiletie nichto drugoe ne okazalo stol' sil'nogo vliyaniya na moyu sobstvennuyu rabotu i ee effektivnost'. |tot podhod predpolagaet nishodyashchee proektirovanie, poskol'ku eto - nishodyashchee narashchivanie programmy. On pozvolyaet legko otslezhivat' rabotu v obratnom napravlenii. On predostavlyaet vozmozhnost' rannego sozdaniya maketov. Kazhdaya novaya funkciya ili vozmozhnost' raboty s bolee slozhnymi dannymi ili usloviyami organicheski vyrastayut na togo, chto uzhe imeetsya. Vozdejstvie na moral'nyj duh oshelomitel'noe. Kogda est' hotya by prostaya rabotayushchaya sistema, vozrastaet entuziazm. |nergiya udvaivaetsya, kogda na ekrane poyavlyaetsya kartinka iz novoj graficheskoj programmnoj sistemy, dazhe esli eto vsego lish' pryamougol'nik. I na kazhdoj stadii processa razrabotki sushchestvuet rabotayushchaya sistema. YA schitayu, chto za odinakovye sroki komanda mozhet narastit' znachitel'no bolee slozhnyj ob容kt, chem postroit'. V bol'shih proektah mozhno oshchutit' takie zhe vygody, kak i v moih malen'kih.12 Vydayushchiesya proektirovshchiki. Glavnaya problema sovershenstvovaniya iskusstva programmirovaniya zaklyuchena, kak vsegda, v lyudyah. My mozhem dobivat'sya horoshih proektov, sleduya horoshim, a ne plohim prakticheskim priemam. Horoshim priemam mozhno obuchat'. Programmisty prinadlezhat k naibolee intellektual'noj chasti obshchestva, sledovatel'no, oni v sostoyanii izuchat' horoshie priemy. Poetomu vazhnejshim napravleniem v Soedinennyh SHtatah yavlyaetsya rasprostranenie horoshih sovremennyh priemov. Novye kursy, novye izdaniya, novye organizacii, takie kak Institut inzhenerov- programmistov (Software Engineering Institute) - vse eto vyzvano k zhizni stremleniem povysit' uroven' nashih prakticheskih priemov. |to sovershenno pravil'no. Tem ne menee, ya schitayu, chto my ne smozhem podnyat'sya eshche na odnu stupen'ku vyshe, dejstvuya v etom napravlenii. Vybor pravil'nogo metoda proektirovaniya opredelyaet razlichiya mezhdu plohim i horoshim konceptual'nym proektom, no ne mezhdu horoshim i vydayushchimsya. Vydayushchiesya proekty sozdayutsya vydayushchimisya proektirovshchikami. Sozdanie programm yavlyaetsya tvorcheskim processom. Krepkaya metodologiya mozhet pridat' silu i osvobodit' tvorcheskij um, no ona ne mozhet vosplamenit' ili vdohnovit' togo, kto zanyat nudnoj rabotoj. I raznica nemalaya - eto kak Sal'eri i Mocart. Odno issledovanie za drugim pokazyvayut, chto luchshie proektirovshchiki sozdayut struktury, kotorye bystree, men'she po razmeru, proshche, ponyatnee i razrabotany men'shimi usiliyami. Razlichiya mezhdu vydayushchimsya i srednim dostigayut poryadka velichiny. Netrudno prosledit', chto ryad horoshih i poleznyh programmnyh sistem proektirovalsya komissiyami i sozdavalsya s pomoshch'yu proektov, sostoyavshih iz mnogih chastej. No programmnye sistemy, vyzvavshie voshishchenie strastnyh poklonnikov, yavlyayutsya produktom odnogo ili nebol'shogo chisla vydayushchihsya proektirovshchikov. Posmotrite na Unix, APL, Pascal, interfejs Smalltalk i dazhe Fortran - s odnoj storony, i Cobol, PL/I, Algol, MVS/370 i MS-DOS - s drugoj (ris. 16.1). Ris. 16.1 Imeyutsya li u etih produktov strastnye poklonniki? Poetomu, vysoko cenya nyneshnie programmy peredachi tehnologij i razvitiya obucheniya, ya schitayu, chto naibolee vazhnoj programmoj, kotoruyu my mozhem predprinyat', yavlyaetsya razvitie sposobov vospitaniya vydayushchihsya proektirovshchikov. Ni odna zanyataya v programmirovanii organizaciya ne mozhet ignorirovat' etu problemu. Horoshih menedzherov, kak by malo ih ni bylo, ne men'she, chem horoshih proektirovshchikov. Kak vydayushchiesya proektirovshchiki, tak i vydayushchiesya menedzhery vstrechayutsya redko. V bol'shinstve organizacij znachitel'nye usiliya tratyatsya na poiska i vyrashchivanie podayushchih nadezhdy menedzherov. YA ne slyshal, chtoby kto- libo tratil takie zhe usiliya na poiski i razvitie vydayushchihsya proektirovshchikov, ot kotoryh, v konechnom schete, zavisit tehnicheskoe prevoshodstvo produktov. Pervoe moe predlozhenie sostoit v tom, chtoby kazhdaya zanyataya v programmirovanii organizaciya opredelila dlya sebya i provozglasila, chto vydayushchiesya proektirovshchiki imeyut dlya ee uspeha takoe zhe bol'shoe znachenie, kak i vydayushchiesya menedzhery, i chto oni mogut rasschityvat' na takie zhe zabotu i voznagrazhdenie. Ne tol'ko zarplata, no i atributy polozheniya - razmery ofisa, mebel', tehnicheskoe oborudovanie, komandirovochnye fondy, obespechennost' sotrudnikami - dolzhny byt' polnost'yu ravnoznachny. Kak rastit' vydayushchihsya proektirovshchikov? Mesto ne pozvolyaet obsuzhdat' eto prostranno, no vot nekotorye ochevidnye shagi: - Sistematicheski i kak mozhno ran'she vyyavlyat' pervoklassnyh proektirovshchikov. Luchshie - ne vsegda samye opytnye. - Naznachit' nastavnika, otvetstvennogo za rost perspektivnogo proektirovshchika i tshchatel'no sledit' za ego kar'eroj. - Razrabotat' i osushchestvlyat' plan sluzhebnogo rosta dlya kazhdogo perspektivnogo proektirovshchika, vklyuchayushchij tshchatel'no produmannoe obuchenie u peredovyh proektirovshchikov, periody dopolnitel'nogo formal'nogo obucheniya, kratkosrochnye kursy, peremezhayushchiesya s samostoyatel'nym proektirovaniem i naznacheniem na rukovodyashchie tehnicheskie dolzhnosti. - Obespechit' vozmozhnosti dlya vzaimodejstviya i vzaimnogo stimulirovaniya rastushchih proektirovshchikov. Glava 17. Novyj vystrel "Serebryanoj puli net" U vsyakoj puli - svoe prednaznachenie. VILXGELXM III ORANSKIJ Kto hochet uvidet' obrazec sovershenstva, Tot mechtaet o tom, chego nikogda ne bylo, net i ne budet. ALEKSANDR POP, "O KRITIKE" Ob oborotnyah i prochih mificheskih uzhasah "Serebryanoj puli net: sushchnost' i akcidenciya v programmnoj inzhenerii" (glava 16 dannoj knigi) pervonachal'no byla zakaznym dokladom dlya konferencii IFIP (Mezhdunarodnoj federacii po obrabotki informacii) 1986 goda v Dubline i byla opublikovana v ee trudah.1 ZHurnal "Computer" perepechatal ee pod oblozhkoj v goticheskom stile, illyustriruya kadrami iz fil'mov, takih kak "Vervol'f iz Londona",2 i snabdiv bokovym polem "Ubit' vervol'fa" s izlozheniem sovremennoj legendy o tom, chto spravit'sya s nim mozhno tol'ko s pomoshch'yu serebryanoj puli. Do publikacii ya ne znal ob illyustraciyah, i dlya menya bylo neozhidannost'yu, chto ser'eznaya tehnicheskaya stat'ya byla tak krasochno izdana. Odnako redaktory "Computer" znali svoe delo i dostigli zhelaemogo rezul'tata: pohozhe, chto stat'yu prochli mnogie. Poetomu ya podobral dlya toj glavy eshche odnu kartinku s oborotnem - starinnoe izobrazhenie pochti zabavnogo sozdaniya. Nadeyus', chto eta menee yarkaya kartinka okazhet takoe zhe poleznoe dejstvie. Serebryanaya pulya vse-taki est' - VOT ONA! "Serebryanoj puli net" utverzhdaet i dokazyvaet, chto v techenie desyatiletiya (s momenta publikacii stat'i v 1986 godu) ni odna razrabotka v oblasti tehniki programmnogo obespecheniya ne pozvolit povysit' proizvoditel'nost' truda v programmirovanii na poryadok. Iz etogo desyatiletiya proshlo uzhe devyat' let, i mozhno posmotret', naskol'ko sbyvaetsya predskazanie. V to vremya kak "Mificheskij cheloveko-mesyac" porodil chastoe citirovanie i malo sporov, stat'ya "Serebryanoj puli net" vyzvala stat'i s oproverzheniyami i pis'ma v redakcii zhurnalov, potok kotoryh ne prekratilsya i po sej den'.3 CHashche vsego kritikuetsya glavnoe utverzhdenie o tom, chto volshebnogo resheniya net, i moe yasno vyrazhennoe mnenie o tom, chto ego i byt' ne mozhet. Bol'shinstvo soglashaetsya s osnovnoj chast'yu moih argumentov v "SPN", no zatem zayavlyaet, chto v dejstvitel'nosti serebryanaya pulya dlya programmnogo zverya sushchestvuet, i izobrel ee avtor. Perechityvaya segodnya rannie otkliki, ne mogu ne otmetit', chto patentovannye sredstva, stol' energichno predlagavshiesya v 1986 i 1987 godah, ne vozymeli effekta, na kotoryj pretendovali. YA obychno pokupayu komp'yutery i programmy, proveryaya ih na "schastlivom obladatele", t.e. beseduya s vyzyvayushchimi doverie lyud'mi, zaplativshimi den'gi za produkt i pol'zuyushchimisya im s udovol'stviem. Analogichno, ya s gotovnost'yu poveryu v materializaciyu serebryanoj puli, kogda vyzyvayushchij doverie nezavisimyj pol'zovatel' vystupit vpered i skazhet: "YA ispol'zoval etu metodologiyu, etot instrument ili produkt, i eto pozvolilo mne v desyat' raz povysit' proizvoditel'nost' razrabotki programm". Mnogie korrespondenty sdelali vernye popravki i raz座asneniya. Nekotorye proanalizirovali stat'yu punkt za punktom i priveli vozrazheniya, za chto ya im blagodaren. V etoj glave ya hochu soobshchit' o sdelannyh popravkah i otvetit' na oproverzheniya. Neyasnoe izlozhenie vlechet neponimanie Sudya po nekotorym otklikam, mne ne udalos' chetko izlozhit' svoi argumenty. Vtorostepennoe svojstvo (accident). V rezyume glavy 16 ya postaralsya so vsej vozmozhnoj yasnost'yu izlozhit' osnovnye argumenty "SPN". Nekotorye, odnako, byli smushcheny terminami vtorostepennoe svojstvo (accident) i nesushchestvennyj, vtorostepennyj (accidental), kotorye ya ispol'zoval v starom upotreblenii, voshodyashchem k Aristotelyu.4 Pod accidental ya ne imel v vidu "sluchajnyj" ili "otnosyashchijsya k neschastnomu sluchayu", a skoree, "nesushchestvennyj", "pobochnyj" (incidental) ili "prinadlezhashchij" (appurtinent). YA ne hochu porochit' rol' sluchajnosti pri razrabotke programm. Vsled za anglijskim dramaturgom, avtorom detektivov i teologom Doroti Sejers (Dorothy Sayers) ya rassmatrivayu vsyakuyu tvorcheskuyu deyatel'nost', kak sostoyashchuyu iz: a) formulirovaniya konceptual'nyh konstrukcij, b) voploshcheniya v real'nom materiale i v) dialoga s pol'zovatelem v real'noj zhizni.5 Ta chast' postroeniya programmy, kotoruyu ya nazval sushchnost'yu (essence), sostoit iz umstvennoj raboty sozdaniya konceputal'noj konstrukcii, a ta, kotoruyu ya nazval vtorostepennoj (accident), est' process ee voploshcheniya. Vyyasnenie istiny. Mne kazhetsya (hotya ne vse so mnoj soglasny), chto vernost' central'nogo argumenta svoditsya k vyyasneniyu otveta na vopros: kakaya dolya zatrat svyazana s tochnym i uporyadochennym predstavleniem konceptual'noj konstrukcii, a kakaya - s umstvennymi usiliyami po izgotovleniyu etih konstrukcij. Poisk i ustranenie oshibok popadayut v tot ili inoj razdel v zavisimosti ot togo, yavlyayutsya li oshibki konceptual'nymi (naprimer, propusk kakogo-libo osobogo sluchaya) ili oshibkami predstavleniya (naprimer, oshibka v ukazatele ili raspredeleniya pamyati). Moe lichnoe mnenie sostoit v tom, chto vtorostepennaya ili napravlennaya na predstavlenie chast' raboty sejchas snizilas' do poloviny ili menee togo ot obshchego ob容ma. Poskol'ku eta dolya yavlyaetsya eksperimental'noj velichinoj, ee znachenie, v principe, mozhno poluchit' putem izmerenij.5 Esli eto ne udaetsya, moyu ocenku mozhno popravit' na osnove bolee polnyh i bolee sovremennyh dannyh, no ni v publichnyh, ni v chastnyh zayavleniyah nikto ne utverzhdal, chto neosnovnaya chast' dostigaet velichiny 9/10. "SPN" s nesomnennost'yu dokazyvaet, chto esli dolya neosnovnoj chasti raboty men'she 9/10, to dazhe svedya ee k nulyu (chto bylo by chudom), nel'zya poluchit' rost produktivnosti na poryadok. Ataku neobhodimo nacelit' na sushchestvennuyu chast'. Posle poyavleniya "SPN" Bryus Blum (Bruce Blum) obratil moe vnimanie na rabotu 1959 goda Gercberga, Moznera i Zejdermana (Herzberg, Mausner, Sayderman).7 Oni nahodyat, chto faktory motivacii mogut uvelichit' proizvoditel'nost'. S drugoj storony, faktory okruzheniya i vtorostepennye faktory, skol' by oni ni byli polozhitel'ny, ne mogut etogo sdelat', no, buduchi otricatel'nymi, mogut umen'shit' proizvoditel'nost'. V "SPN" dokazyvaetsya, chto znachitel'naya chast' progressa v programmnoj inzhenerii dostignuta za schet ustraneniya vliyaniya sleduyushchih otricatel'nyh faktorov: krajne neudobnyh mashinnyh yazykov, paketnoj obrabotki s dolgoj oborachivaemost'yu, slabogo instrumentariya i strogih ogranichenij na razmer pamyati. YAvlyayutsya li v takom sluchae beznadezhnymi trudnosti, svyazannye s sushchnost'yu? Otlichnaya rabota "Serebryanaya pulya est'", napisannaya Bredom Koksom (Bred Cox) v 1990 godu, krasnorechivo dokazyvaet, chto mnogokratno ispol'zuemye i vzaimozamenyaemye komponenty dolzhny posluzhit' osnovoj dlya ataki na konceptual'nuyu sushchnost' problemy.8 YA ohotno soglashayus'. Odnako Koks nepravil'no ponimaet "SPN" v dvuh otnosheniyah. Vo-pervyh, on nahodit v nej utverzhdenie togo, chto trudnosti razrabotki programmnogo obespecheniya proistekayut iz "nekotoryh porogov tehnologij, ispol'zovavshihsya programmistami v to vremya". YA zhe dokazyval, chto trudnosti, svyazannye s sushchnost'yu, yavlyayutsya neot容mlemoj chast'yu konceptual'noj slozhnosti razrabatyvaemyh programmnyh funkcij vo vse vremena i pri lyubyh metodah. Vo- vtoryh, on i mnogie drugie prochli v "SPN" utverzhdenie togo, chto net nikakih nadezhd uspeshno spravit'sya so slozhnostyami razrabotki programm, svyazannymi s voprosami sushchnosti. |to ne to, chto ya imel v vidu. Sozdanie konceptual'noj konstrukcii dejstvitel'no imeet vnutrenne prisushchie trudnosti, takie kak slozhnost', soglasovannost', izmenyaemost' i nezrimost'. Odnako nepriyatnosti, vyzyvaemye vsemi etimi trudnostyami, mozhno umen'shit'. Slozhnost' razdeleniya na urovni. Naprimer, naibolee ser'eznoj vnutrennej trudnost'yu yavlyaetsya slozhnost', no ona ne vsegda neizbezhna. Znachitel'naya chast' (no ne vsya) konceptual'noj slozhnosti v nashih programmnyh konstrukciyah proistekaet ot proizvol'noj slozhnosti samih primenenij. Dejstvitel'no, Lars Sedal' iz MYSYGMA Sohdal and Partners, mezhdunarodnoj konsaltingovoj firmy v oblasti menedzhmenta, pishet: Moj opyt pokazyvaet, chto vse slozhnosti, s kotorymi stalkivayutsya pri razrabotke sistem, yavlyayutsya priznakami organizacionnyh nepoladok. Popytka modelirovaniya prakticheskoj deyatel'nosti programmami sootvetstvuyushchej slozhnosti vlechet sohranenie nerazberihi vmesto resheniya problem. Stiv Lukashik (Steve Lukasik) iz Northrop dokazyvaet, chto dazhe organizacionnaya slozhnost', vozmozhno, ne yavlyaetsya proizvol'noj, a mozhet ispytyvat' vozdejstvie principov uporyadocheniya: YA poluchil obrazovanie v oblati fiziki i poetomu vizhu, chto "slozhnye" veshchi mogut byt' opisany na yazyke bolee prostyh ponyatij. Vy mozhete byt' pravy, i ya ne stanu utverzhdat', chto vse slozhnye veshchi poddayutsya principam uporyadocheniya... po tem zhe pravilam dokazatel'stva nel'zya utverzhdat', chto ne poddayutsya. ...To, chto vchera bylo slozhnost'yu, zavtra budet v poryadke veshchej. Slozhnost' besporyadochnogo dvizheniya molekul privela k vozniknoveniyu kineticheskoj teorii gazov i otkrytiyu treh zakonov termodinamiki. Sejchas programmnoe obespechenie ne pozvolyaet uvidet' prisushchie emu principy uporyadocheniya, no vy kak raz i dolzhny ob座asnit', pochemu eto proishodit. |to ne proyavlenie moej bestolkovosti ili zhelaniya posporit'. YA ubezhden, chto v odin prekrasnyj den' "slozhnost'" programmnogo obespecheniya budet ob座asnena na yazyke kakih- nibud' ponyatij bolee vysokogo poryadka (invariantov, kak govoryat fiziki). YA ne zanimalsya bolee glubokim analizom, k kotoromu spravedlivo prizyvaet Lukashik. Kak otrasl' nauki my nuzhdaemsya v razvitii teorii informacii dlya kolichestvennoj ocenki informacionnogo soderzhaniya statisticheskih struktur, podobno tomu, kak teoriya SHennona delaet eto dlya informacionnyh potokov. |to sovsem ne moya zadacha. Lukashiku ya prosto otvechu, chto slozhnost' sistemy yavlyaetsya funkciej miriadov detalej, kazhdaya iz kotoryh dolzhna byt' tochno zadana libo s pomoshch'yu kakogo-nibud' obshchego pravila, libo podrobnym opisaniem, no ne prosto statisticheski. Predstavlyaetsya ves'ma somnitel'nym, chtoby nesoglasovannye rezul'taty raboty mnogih golov okazalis' dostatochno svyaznymi, chtoby byt' tochno opisannymi obshchimi pravilami. Znachitel'no bol'shaya chast' slozhnosti programmnyh konstrukcij obuslovlena, odnako, ne sootvetstviem vneshnemu miru, a samoj realizaciej - strukturami dannyh, algoritmami, sposobami kommunikacij. Narashchivanie programm s pomoshch'yu bol'shih blokov vysokogo urovnya, sozdannyh kogda-to ran'she ili kem-to drugim, pomogaet izbezhat' celyh urovnej slozhnosti. "SPN" provozglashaet pohod na problemu slozhnosti v polnoj nadezhde, chto mozhno dostich' progressa. Ona vystupaet za dobavlenie k programmnoj sisteme neobhodimoj slozhnosti: - ierarhicheski, raspolagaya moduli ili ob容kty po urovnyam; - poshagovo, chto obespechivaet postoyannuyu rabotosposobnost' sistemy. Analiz Harela Devid Harel (David Harel) v stat'e 1992 goda "Kusaya serebryannuyu pulyu" predprinimaet samyj tshchatel'nyj analiz "SPN" iz vseh opublikovannyh.9 Pessimizm protiv optimizma i realizma. Harel rassmatrivaet kak "SPN", tak i stat'yu Parnasa 1984 goda "Programmnye aspekty strategicheskih oboronitel'nyh sistem"10 kak "slishkom unylye". On namerevaetsya vysvetit' bolee yarkuyu storonu problemy, predposylaya stat'e podzagolovok "K svetlomu budushchemu porgrammnyh razrabotok". Tak zhe, kak i Koks, Harel schitaet "SPN" pessimisticheskoj, govorya: "Esli vzglyanut' na te zhe fakty s drugoj tochki zreniya, voznikayut bolee optimisticheskie vyvody". Oba oni nepravil'no voprinyali tonal'nost' stat'i. Prezhde vsego, moya zhena, kollegi i redaktory schitayut, chto ya gorazdo chashche vpadayu v neopravdannyj optimizm, chem v pessimizm. V konce koncov ya po proishozhdeniyu programmist, a optimizm - eto professional'naya bolezn' dannogo remesla. V "SPN" pryamo skazano: "Vglyadyvayas' v predstoyashchee desyatiletie, my ne vidim serebryanoj puli... Odnako skepticizm ne est' pessimizm... Net carskogo puti, no put' est'". Ona predskazyvaet, chto novovvedeniya, proishodyashchie v 1986 godu, buduchi razrabotany i ispol'zovany, v sovokupnosti dejstvitel'no pozvolyat dostich' rosta proizvoditel'nosti na poryadok. Desyatiletie 1986-1996 podhodit k koncu, i eto predskazanie okazyvaetsya, skoree, slishkom optimistichnym, a ne mrachnym. Dazhe esli by vse bez isklyucheniya schitali "SPN" pessimisticheskoj, chto v etom hudogo? YAvlyaetsya li utverzhdenie |jnshtejna o tom, chto nichego ne mozhet peremeshchat'sya so skorost'yu, bol'shej skorosti sveta, "unylym" i "mrachnym"? A kak naschet rezul'tatov Gedelya o tom, chto nekotorye veshchi nevychislimy? "SPN" pytaetsya utverzhdat', chto "sama sushchnost' programmnogo obespecheniya delaet maloveroyatnym otkrytie "serebryanyh pul'" kogda-libo v budushchem". Turskij v svoem otlichnom otvetnom doklade na konferencii IFIP krasnorechivo zayavil: Iz vseh popytok nauki prodvinut'sya v lozhnom napravlenii naibolee vozvyshenny te, kotorye byli napravleny na poisk filosofskogo kamnya - veshchestva, s pomoshch'yu kotorogo predpolagalos' obrashchat' prostye metally v zoloto. Vysshaya cel' alhimii, k kotoroj s rveniem stremilis' pokoleniya issledovatelej, shchedro finansirovavshiesya svetskimi i duhovnymi pravitelyami, - eto v chistom vide stremlenie prinimat' zhelaemoe za dejstvitel'noe i obshcheprinyatoe mnenie, chto veshchi takovy, kakimi my hoteli by ih videt'. |to ochen' po-chelovecheski. Nuzhno sdelat' nad soboj bol'shoe usilie, chtoby smirit'sya s sushchestvovaniem nerazreshimyh problem. Stremlenie vopreki vsemu najti vyhod, dazhe kogda dokazano, chto ego ne sushchestvuet, ochen' i ochen' sil'no. I v bol'shinstve svoem my s bol'shim sochuvstviem otnosimsya k etim hrabrecam, kotorye pytayutsya dostich' nevozmozhnogo. |to prodolzhaetsya i po sej den'. Pishutsya sochineniya o kvadrature kruga. Stryapayutsya los'ony dlya vosstanovleniya utrachennyh volos - i neploho prodayutsya. Rozhdayutsya metody povysheniya proizvoditel'nosti programmirovaniya - i horosho rashodyatsya. My slishkom chasto sklonny doveryat' svoemu optimizmu (ili ekspluatirovat' optimisticheskie nadezhdy svoih sponsorov). My slishkom chasto ne hotim prislushivat'sya k golosu rassudka i obrashchaem mnogo vnimaniya na prodavcov panacej, poyushchih golosami siren.11 Turskij, kak i ya, preduprezhdaet, chto mechtatel'nost' tormozit dvizhenie vpered i vedet k pustoj trate sil. "Mrachnye" temy. Harel schitaet, chto mrachnost' "SPN" pridayut tri temy: - Rezkoe razdelenie mezhdu sushchnost'yu i vtorostepennym. - Izolirovannoe rassmotrenie kazhdogo kandidata v "serebryanye puli". - Prognoz lish' na blizhajshie 10 let, a ne na srok, v techenie kotorogo mozhno ozhidat' "sushchestvennyh uluchshenij". CHto kasaetsya pervogo, to v eto vsya sol' stat'i. YA po-prezhnemu schitayu, chto takoe razdelenie neobhodimo dlya ponimaniya togo, pochemu trudno sozdavat' programmnoe obespechenie. I eto vernoe ukazanie, kuda dolzhen byt' napravlen udar. CHto kasaetsya izolirovannogo rassmotreniya kandidatov v "serebryanye puli", to eto pravda. Raznye kandidaty predlagalis' poocheredno i nepomernymi pretenziyami na sobstvennoe vsesilie. Pravomerno i rassmatrivat' ih poocheredno. YA vozrazhayu ne protiv samih tehnologij, no protiv ozhidaniya ot nih chuda. Glass, Vessi i Kondzher (Glass, Vessey, Conger) v svoej stat'e 1992 goda predstavili mnogochislennye svidetel'stva togo, chto bespoleznye poiski serebryanoj puli vse eshche prodolzhayutsya.12 CHto kasaetsya vybora v kachestve perioda predskazanij 10, a ne 40 let, to chastichno eto priznanie togo, chto nashi predskazaniya na bol'shij srok nikogda ne byli udachnymi. Kto iz nas v 1975 godu predskazal mikrokomp'yuternuyu revolyuciyu 80-h? Est' i drugie prichiny ogranichit'sya desyatiletiem: vse kandidaty pretendovali na poluchenie rezul'tatov nemedlenno. YA ne pomnyu ni odnogo, kotoryj by skazal: "Esli segodnya vy sdelaete investicii v predlagaemoe mnoj sredstvo, to po proshestvii 10 let nachnete pozhinat' plody". Bolee togo, za desyatiletie sootnoshenie proizvoditel'nost'/cena dlya komp'yuterov vyroslo, navernoe, v sotni raz, i neizbezhno podsoznatel'no proizvoditsya sravnenie, kotoroe sovershenno nedopustimo. My navernyaka dostignem bol'shego progressa za predstoyashchie 40 let. Rost za 40 let na poryadok edva li pokazhetsya chudom. Myslennyj eksperiment Harela. Harel predlagaet myslennyj eksperiment, v kotorom "SPN" byla napisana v 1952 godu, a ne v 1986, no soderzhala by te zhe utverzhdeniya. On hochet ispol'zovat' eto v kachestve dokazatel'stva ot protivnogo v bor'be protiv popytok otdelit' sushchnost' ot akcidencii. |to dokazatel'stvo neverno. Vo-pervyh, "SPN" nachinaetsya s utverzhdeniya, chto dlya programmirovaniya v 1950-h harakterno znachitel'noe preobladanie trudnostej v akcidenciyah nad trudnostyami v sushchnosti. |togo preobladaniya bol'she ne sushchestvuet, chto privelo k rostu proizvoditel'nosti na poryadki velichin. Perenosit' eto dokazatel'stvo na 40 let nazad bessmyslenno: nikto ne stal by v 1952 godu utverzhdat', chto ne trudnosti akcidencij otvetstvenny za bol'shuyu chast' zatrachivaemyh usilij. Vo-vtoryh, Harel netochno predstavlyaet polozhenie del v 1950-h: |to bylo vremya, kogda vmesto togo, chtoby razrabatyvat' bol'shie slozhnye sistemy, programmisty pisali obychnye odnopol'zovtel'skie programmy, kotorye na sovremennyh yazykah programmirovaniya zanyali by 100-200 strok, i kotorye dolzhny byli vypolnyat' skromnye algoritmicheskie zadachi. Pri sushchestvovavshih togda tehnologiyah i metodologiyah takie zadachi tozhe byli ochen' trudnymi. Splosh' i ryadom byli neudachi, oshibki, narushenie srokov. Zatem on opisyvaet, kak za poslednie 25 let upomyanutye neudachi, oshibki, narushennye sroki v obychnyh malen'kih odnovol'zovatel'skih programmah byli uluchsheny na poryadok. No v dejstvitel'nosti v 1950-h godah vershinoj tehnologii byli ne malen'kie odnopol'zovatel'skie programmy. V 1952 godu Univac byl zanyat obrabotkoj dannyh perepisi 1950 goda s pomoshch'yu slozhnoj programmy, kotoruyu razrabatyvali primerno vosem' programmistov.13 Drugie mashiny primenyalis' v himicheskoj dinamike, raschetah rasseyaniya nejtronov, raschetah poleta raket i t.d.14 Povsednevno ispol'zovalis' assemblery, peremeshchayushchie komponovshchiki i zagruzchiki, sistemy interpretacii s plavayushchej tochkoj i t.p.15 K 1955 godu uzhe sozdavalis' programmy dlya biznesa ob容mom ot 50 do 100 cheloveko-let.16 V 1956 godu na zavode Dzheneral |lektrik v L'yuisville rabotala programma razmerom bolee 80 000 slov. V 1957 godu v techenie uzhe dvuh let v sisteme protivovozdushnoj oborony rabotal komp'yuter SAGE ANFSQ/7, i na 30 ploshchadkah dejstvovala sistema real'nogo vremeni, ispol'zovavshaya telekommunikacii i dublirovanie v celyah otkazoustojchivosti, ob容mom 75 000 komand.17 Edva li mozhno priderzhivat'sya mneniya, chto razvitie tehnologij dlya odnopol'zovatel'skih programm - glavnaya harakteristika usilij v tehnike programmnogo obespecheniya posle 1952 goda. VOT ONA. Harel prodolzhaet, predlagaya sobstvennuyu serebryanuyu pulyu, tehnologiyu modelirovaniya pod nazvaniem "Vanilla Framework" ("vanil'naya struktura"). Sam podhod opisan nedostatochno podrobno, chtoby ego mozhno bylo ochenit', no est' ssylka na stat'yu i tehnicheskij otchet, kotoryj v svoe vremya dolzhen byt' opublikovan v vide knigi.18 Modelirovanie kasaetsya sushchnosti, pravil'noj razrabotki i otladki ponyatij, poetomu tehnologiya mozhet okazat'sya revolyucionnoj. Nadeyus', chto eto tak. Ken Bruks soobshchaet, chto eta metodologiya okazalas' poleznoj, kogda on popytalsya primenit' ee k real'noj zadache. Nezrimost'. Harel energichno dokazyvaet, chto znachitel'naya chast' konceptual'noj konstrukcii programmnogo obespecheniya yavlyaetsya po svoej prirode topologicheskoj zadachej, i eti vzaimosvyazi nahodyat sootvetstvie v prostranstvenno-graficheskih predstavleniyah: Ispol'zovanie podhodyashchego vizual'nogo formalizma mozhet okazat' zametnoe vozdejstvie na inzhenerov i programmistov. Bolee togo, eto vozdejstvie ne ogranichivaetsya oblast'yu akcidencij, bylo obnaruzheno polozhitel'noe vliyanie na kachestvo i bystrotu samogo ih myshleniya. V budushchem uspehi v razrabotke sistem budut svyazany s vizual'nymi predstavleniyami. Snachala my budem sozdavat' koncepcii s pomoshch'yu "pravil'nyh" ob容ktov i vzaimosvyazej, zatem formulirovat' nashi koncepcii kak posledovatel'nyj ryad vse bolee obstoyatel'nyh modelej s ispol'zovaniem podhodyashchej kombinacii vizual'nyh yazykov. Imenno kombinacii, poskol'ku modeli sistem imeyut neskol'ko granej, kazhdaya iz kotoryh vyzyvaet v voobrazhenii razlichnye vidy obrazov. ...Nekotorye grani processa modelirovaniya ne stol' legko poddayutsya horoshej vizualizacii. Naprimer, algoritmicheskie operacii nad peremennymi i strukturami dannyh, vozmozhno, ostanutsya tekstual'nymi. Zdes' nashi pozicii blizki. YA dokazyval, chto struktura programmnogo obespecheniya ne yavlyaetsya trehmernoj, poetomu ne sushchestvuet estestvennogo otobrazheniya konceptual'nogo proekta v diagrammu v prostranstve kak dvuh, tak i bol'shego chisla izmerenij. Harel dopuskaet, i ya soglasen, chto trebuetsya mnogo diagramm, kazhdaya iz kotoryh ohvatyvaet kakuyu-to odnu storonu, a nekotorye aspekty voobshche ploho otobrazhayutsya na diagrammah. YA vpolne razdelyayu ego entuziazm po povodu ispol'zovaniya diagramm kak vspomogatel'nogo sredstva pri obdumyvanii i proektirovanii. Dolgoe vremya ya lyubil zadavat' kandidatam na rabotu programmistom vopros: "Gde nahoditsya sleduyushchij noyabr'?". Esli vopros kazhetsya zagadochnym, to v drugom vide: "Kakova vasha myslennaya myslennaya model' kalendarya?" U dejstvitel'no horoshih programmistov horoshee chuvstvo prostranstva, u nih obychno est' geometricheskaya model' vremeni, i oni chasto bez truda ponimayut pervyj vopros. Ih modeli ochen' individual'ny. Tochka zreniya Dzhonsa: proiszvoditel'nost' prihodit vsled za Kachestvom Kapers Dzhons (Capers Jones) snachala v serii sluzhebnyh zapisok, a zatem v otdel'noj knige demonstriruet glubokuyu intuiciyu, otmechennuyu neskol'kimi moimi korrespondentami. "Stat'ya "SPN", kak i mnogie v to vremya, sosredotochilas' na proizvoditel'nosti - vyhode programmnoj produkcii na edinicu vhodnyh zatrat", - govorit Dzhons. - "Net, sosredotoch'tes' na kachestve, a proizvoditel'nost' pridet sledom."19 On utverzhdaet, chto dorogostoyashchie i narushivshie sroki proekty trebuyut bol'she vsego dopolnitel'nyh usilij i vremeni dlya poiska i ustraneniya oshibok v specifikaciyah, v proekte, v razrabotke. On privodit dannye, svidetel'stvuyushchie o sil'noj korrelyacii mezhdu otsutstviem sistematicheskogo kontrolya kachestva i sryvom grafika rabot. YA im vpolne veryu. Bem (Boehm) ukazyvaet, chto proizvoditel'nost' snova padaet, kogda presleduetsya isklyuchitel'no vysokoe kachestvo, kak bylo v programmah IBM dlya kosmicheskogo chelnoka. Analogichnym obrazom, Koki (Coqui) utverzhdaet, chto principy sistematicheskoj razrabotki programmnogo obespecheniya yavilis' otvetom na ozabochennost' ne stol'ko proizvoditel'nost'yu, skol'ko kachestvom (v osobennosti, stremleniem izbezhat' krupnyh katastrof). No obratite vnimanie: cel'yu primeneniya inzhenernyh principov k razrabotke programmnogo obespecheniya v 1970-h godah bylo podnyat' kachestvo, testiruemost', ustojchivost' i predskazuemost' programmnyh produktov, a ne obyazatel'no proizvoditel'nost' truda programmistov. Dvizhushchej siloj ispol'zovaniya pri razrabotke programm principov programmnoj inzhenerii bylo opasenie krupnyh avarij, k kotorym mogla privesti razrabotka vse bolee slozhnyh sistem neupravlyaemymi hudozhnikami.20 Tak chto zhe sluchilos' s proizvoditel'nost'yu? Proizvoditel'nost' v cifah. Cifry, harakterizuyushchie proizvoditel'nost', ochen' tyazhelo opredelit', kalibrovat' i najti. Kapers Dzhons schitaet, chto dlya dvuh odinakovyh programm na Cobol, napisannyh s intervalom v 10 let - s primeneniem strukturnogo programmirovaniya i bez nego - raznica v proizvoditel'nosti troekratnaya. |d Jordon (Ed Yourdin) utverzhdaet: "Po moim nablyudeniyam, blagodarya rabochim stanciyam i programmnym instrumentam proizvoditel'nost' uvelichilas' v pyat' raz." Tom Demarko (Tom DeMarco) schitaet, chto "vashe ozhidanie desyatikratnogo rosta proizvoditel'nosti za 10 let blagodarya celomu naboru tehnologij bylo optimistichnym: mne neizvestny organizacii, dobivshiesya rosta proizvoditel'nosti na poryadok." Programma v upakovke: pokupajte, ne nado razrabatyvat'. Odna iz ocenok "SPN" okazalas', ya dumayu, pravil'noj: "Vozniknovenie massovogo rynka yavlyaetsya... naibolee glubokoj dolgosrochnoj tendenciej v razrabotke programmnogo obespecheniya". S tochki zreniya nauki, programmnoe obespechenie dlya massovogo rynka obrazuet prakticheski novuyu otrasl' v sravnenii s razrabotkoj zakaznyh programm kak vnutri firmy, tak i storonnimi organizaciyami. Kogda schet prodannyh paketov idet na milliony ili hotya by na tysyachi, glavnymi problemami stanovyatsya kachestvo, svoevremennost', tehnicheskie harakteristiki i stoimost' podderzhki, a ne stoimost' razrabotki, kotoraya imeet takoe bol'shoe znachenie pri razrabotke zakaznyh sistem. |lektroinstrument dlya uma. Luchshij sposob povysit' proizvoditel'nost' truda programmistov informacionno-upravlyayushchih sistem - eto pojti v blizhajshij komp'yuternyj mag