, poskol'ku mashinnoe vremya teper' ne tratitsya vpustuyu, poka chelovek sidit i dumaet. Tem ne menee interesnye eksperimental'nye dannye Golda (Gold) pokazyvayut, chto vo vremya pervogo dialoga kazhdogo seansa dostigaetsya vtroe bol'shij progress v interaktivnoj otladke, chem pri posleduyushchih dialogah.8 |to ubeditel'no govorit o tom, chto iz-za otsutstviya planirovaniya my ne polnost'yu realizuem potencial dialogovoj raboty. Pora stryahnut' pyl' so staryh metodov raboty v interaktivnom rezhime. YA schitayu, chto dlya pravil'nogo ispol'zovaniya horoshej terminal'noj sistemy na kazhdye dva chasa raboty za terminalom dolzhno prihodit'sya dva chasa raboty za stolom. Polovina etogo vremeni uhodit na podchistki posle pervogo seansa: vnesenie izmenenij v zhurnal otladki, podshivku novyh listingov v sistemnyj zhurnal, ob座asnenie neponyatnyh yavlenij. Vtoraya chast' uhodit na podgotovku: planirovanie izmenenij i usovershenstvovanij i razrabotku detal'nyh testov dlya ocherednogo seansa. Bez takogo planirovaniya trudno podderzhivat' produktivnost' na protyazhenii vseh dvuh chasov. Bez podchistki posle seansa trudno sdelat' posledovatel'nost' seansov sistematichnoj i prodvigayushchej rabotu vpered. Kontrol'nye primery. CHto kasaetsya razrabotki fakticheskih procedur otladki i kontrol'nyh primerov, osobenno udachnoe izlozhenie predlagaet Gryunberger (Gruenberger),9 est' i bolee korotkie opisaniya v drugih izvestnyh uchebnikah.10, 11 Sistemnaya otladka Neozhidanno trudnym etapom sozdaniya sistemy programmirovaniya okazyvaetsya testirovanie sistemy. YA uzhe obsuzhdal nekotorye prichiny kak ego trudnosti, tak i nepredskazuemosti. Mozhno ne somnevat'sya v dvuh veshchah: sistemnaya otladka zajmet bol'she vremeni, chem predpolagaetsya, a ee slozhnost' opravdyvaet doskonal'no sistematichnyj i planovyj podhod. Rassmotrim, chto vklyuchaet v sebya takoj podhod.12 Ispol'zujte otlazhennye komponenty. Obychnyj zdravyj smysl, esli ne obychnaya praktika, podskazyvayut, chto sistemnuyu otladku nuzhno nachinat', kogda rabotaet kazhdaya sostavlyayushchaya chast'. Dalee obshcheprinyataya praktika sleduet dvumya putyami. Pervyj podhod - "svinti i poprobuj". Vidimo, on osnovyvaetsya na tom, chto krome oshibok v komponentah najdutsya i oshibki v sisteme (t.e. v interfejsah). CHem skoree chasti budut soedineny vmeste, tem skoree vsplyvut sistemnye oshibki. Legko takzhe predstavit', chto, ispol'zuya komponenty dlya testirovaniya drug druga, mozhno v znachitel'noj mere izbezhat' sozdaniya okruzheniya dlya testirovaniya. I to, i drugoe, ochevidno, yavlyaetsya pravdoj, no, kak pokazyvaet opyt, ne vsej pravdoj: znachitel'no bol'she vremeni sberegaetsya pri testirovanii sistemy s ispol'zovaniem chistyh otlazhennyh komponentov, chem ego tratitsya na sozdanie okruzheniya i doskonal'noj proverki komponentov. Neskol'ko bolee tonkim yavlyaetsya podhod "dokumentirovannoj oshibki". On oznachaet, chto komponent gotov k ispol'zovaniyu v sistemnoj proverke, kogda vse ego oshibki najdeny, no neobyazatel'no uzhe ispravleny. Togda, teoreticheski, pri sistemnom testirovanii vozmozhnye effekty etih oshibok izvestny i mogut byt' proignorirovany, a sosredotochit'sya mozhno na novyh yavleniyah. Vse eto oznachaet prinimat' zhelaemoe za dejstvitel'noe i proishodit ot stremleniya ob座asnit' proval grafika rabot. Nikto ne znaet vseh vozmozhnyh posledstvij izvestnyh oshibok. Esli by vse bylo prosto, sistemnoe testirovanie ne vyzyvalo by zatrudnenij. Krome togo, ispravlenie dokumentirovannyh oshibok, nesomnenno, privedet k vneseniyu novyh oshibok, i sistemnyj test okazhetsya isporchennym. Sozdajte bol'she okruzhenij. Pod "okruzheniem" ya ponimayu vse programmy i dannye, sozdannye dlya celej otladki, no ne prednaznachennye dlya ispol'zovaniya v konechnom produkte. V okruzhenii net smysla imet' i poloviny togo koda, kotoryj vhodit v produkt. Odin iz vidov okruzheniya - fiktivnyj komponent, kotoryj mozhet sostoyat' tol'ko iz interfejsov i, vozmozhno, kakih-nibud' iskusstvennyh dannyh ili nebol'shih kontrol'nyh primerov. Naprimer, v sistemu mozhet vhodit' programma sortirovki, kotoraya eshche ne zakonchena. Svyazannye s nej komponenty mozhno testirovat' s pomoshch'yu fiktivnoj programmy, kotoraya prosto chitaet i proveryaet format vhodnyh dannyh i vozvrashchaet nabor pravil'no otformatirovannyh bessmyslennyh, no uporyadochennyh dannyh. Drugoj vid - mini-fajl. Rasprostranennym vidom sistemnoj oshibki yavlyaetsya nepravil'noe vospriyatie formatov lentochnyh i diskovyh fajlov. Poetomu stoit sozdat' neskol'ko malen'kih fajlov, soderzhashchih lish' neskol'ko tipovyh zapisej i vse opisaniya, ukazateli i t.p. Predel'nyj sluchaj mini-fajla - fiktivnyj fajl, kotoryj fakticheski ne sushchestvuet. YAzyk upravlyayushchih zadanij OS/360 imeet takoe sredstvo, i ono ochen' polezno dlya otladki komponentov. Drugoj vid okruzheniya - vspomogatel'nye programmy. Generatory dannyh dlya testirovaniya, pechat' special'nogo analiza, analizatory tablic perekrestnyh ssylok - vse eto primery special'nyh prisposoblenij, kotorye mozhet potrebovat'sya sozdat'.13 Kontrolirujte izmeneniya. ZHestkij kontrol' vo vremya testirovaniya yavlyaetsya vpechatlyayushchim metodom otladki apparatury, s uspehom primenimym k sistemam programmirovaniya. Prezhde vsego, kto-to dolzhen byt' otvetstvennym. On, i tol'ko on dolzhen razreshat' izmeneniya v komponentah i zamenu odnoj versii drugoj. Dalee, kak obsuzhdalos' vyshe, sistema dolzhna imet' kontroliruemye ekzemplyary: odin ekzemplyar s poslednimi versiyami, nahodyashchijsya pod zamkom i ispol'zuemyj dlya testirovaniya komponentov; odin testiruemyj ekzemplyar s ustanovlennymi ispravleniyami; rabochie ekzemplyary kazhdogo sotrudnika dlya vneseniya ispravlenij i dopolnenij v svoi komponenty. V tehnicheskih modelyah System/360 sredi obychnyh zheltyh provodov mozhno bylo inogda videt' fioletovye provoda. Pri obnaruzhenii defekta delalis' dve veshchi. Bystro pridumyvalos' ispravlenie i ustanavlivalos' v sisteme, chtoby prodolzhit' otladku. |to izmenenie delalos' fioletovymi provodami, tak chto ono torchalo kak bel'mo na glazu. Izmenenie registrirovalos' v zhurnale. Tem vremenem gotovilsya oficial'nyj dokument o vnesenii ispravlenij, kotoryj zapuskalsya v zhernova avtomatizirovannogo proektirovaniya. V itoge eto vylivalos' v izmenennye chertezhi i spiski provodov i novuyu zadnyuyu panel', v kotoroj izmeneniya byli sdelany na pechatnoj plate ili zheltymi provodami. Teper' fizicheskaya model' i dokumentaciya sootvetstvovali drug drugu, i fioletovyj provod ischezal. Programmirovaniyu tozhe trebuetsya tehnologiya fioletovyh provodov, i ochen' trebuetsya zhestkij kontrol' i glubokoe uvazhenie k dokumentu, kotoryj v konechnom schete, okazhetsya produktom. Neot容mlemymi sostavlyayushchimi takoj tehnologii yavlyayutsya registraciya vseh izmenenij v zhurnale i zametnoe otlichie v ishodnom kode mezhdu zaplatkami na skoruyu ruku i produmannymi i dokumentirovannymi ispravleniyami. Dobavlyajte komponenty po odnomu. |tot recept takzhe ocheviden, no im chasto prenebregayut iz-za optimizma i leni. CHtoby sledovat' emu, trebuyutsya fiktivnye programmy i raznoe okruzhenie, a eto otnimaet vremya. I v konce koncov, vsya eta rabota mozhet okazat'sya lishnej! Mozhet byt', oshibok i net! Net! Protiv'tes' soblaznu! |to to, v chem zaklyuchaetsya sistematichnoe testirovanie sistemy. Nuzhno predpolagat', chto oshibok budet mnogo, i planirovat' uporyadochennuyu proceduru izbavleniya ot nih. Uchtite, chto nuzhno imet' polnyj nabor kontrol'nyh primerov dlya proverki chastichno sobrannyh sistem posle dobavleniya kazhdogo komponenta. Prezhnie primery, uspeshno vypolnennye na poslednej chastichnoj sborke, nuzhno perezapustit' na novoj, chtoby proverit', ne uhudshilas' li sistema. Kvantujte izmeneniya. Po mere sozrevaniya sistemy vremya ot vremeni nachinayut poyavlyat'sya razrabotchiki komponentov, prinosya svezhie versii svoih izdelij - bolee bystrye, men'shie po razmeru, bolee polnye ili predpolozhitel'no soderzhashchie men'she oshibok. Zamena rabotayushchego komponenta novoj versiej trebuet takoj zhe sistematicheskoj procedury testirovaniya, kak i dobavlenie novogo komponenta, hotya i trebuet men'she vremeni, poskol'ku obychno uzhe imeyutsya bolee polnye i effektivnye kontrol'nye primery. Kazhdaya komanda, sozdayushchaya novyj komponent, ispol'zuet novejshuyu versiyu integrirovannoj sistemy v kachestve sredy dlya otladki svoego komponenta. Prodelannaya rabota budet otbroshena nazad, esli eta sreda izmenitsya. Konechno, ona dolzhna izmenit'sya. No vnesenie izmenenij nuzhno proizvodit' kvantami. Togda u kazhdogo pol'zovatelya budut promezhutki produktivnoj stabil'nosti, preryvaemye paketnym obnovleniem sredy testirovaniya. |to okazyvaetsya znachitel'no menee razrushitel'nym, chem postoyannye volneniya i drozh'. Leman i Beladi dayut svidetel'stva v pol'zu togo, chto kvant izmenenij dolzhen byt' libo ochen' bol'shim i redkim, libo ochen' malen'kim i chastym.14 Poslednyaya strategiya, soglasno ih modeli, bol'she podverzhena neustojchivosti. Moj opyt eto podtverzhdaet: ya nikogda ne risknu ispol'zovat' ee na praktike. Kvantovye izmeneniya horosho vpisyvayutsya v tehnologiyu fioletovyh provodov. Bystraya zaplatka derzhitsya do sleduyushchej regulyarnoj versii komponenta, kotoraya dolzhna soderzhat' ispravlenie v otlazhennom i dokumentirovannom vide. Glava 14. Nazrevanie katastrofy Nikto ne lyubit prinosyashchego durnye vesti. SOFOKA Kak okazyvaetsya, chto proekt zapazdyvaet na god? ... Snachala zapazdyvaet na odin den'. Kogda slyshish' o katastroficheskom otstavanii proekta ot grafika, to predstavlyaetsya ryad obrushivshihsya na nego bol'shih bedstvij. Odnako obychno prichinoj katastrofy sluzhat ne smerchi, a termity: otstavanie ot grafika proishodit nezametno, no neumolimo. Na samom dele, s krupnymi bedstviyami spravit'sya legche: ispol'zuyutsya krupnye sily, korennaya reorganizaciya, izobretayutsya novye podhody. Vsya komanda podnimaetsya na bor'bu. Otstavanie, rastushchee ponemnogu izo dnya v den', trudnee raspoznat', trudnee predotvratit', trudnee ispravit'. Vchera ne udalos' provesti soveshchanie iz-za bolezni klyuchevogo rabotnika. Segodnya vyklyucheny vse mashiny, potomu chto molniya udarila v silovoj transformator. Zavtra ne udastsya nachat' testirovanie procedur raboty s diskami, poskol'ku postavka s zavoda pervogo diska zaderzhivaetsya na nedelyu. Snegopad, rabota v sude prisyazhnyh, semejnye problemy, ekstrennye vstrechi s klientami, proverki rukovodstvom - spisok beskonechen. Kazhdoe sobytie zaderzhivaet kakuyu-nibud' rabotu na poldnya ili den'. I rastet otstavanie ot grafika, kazhdyj raz eshche na odin den'. Vehi ili pomehi? Kak upravlyat' bol'shim proektom po zhestkomu grafiku? Prezhde vsego, nado imet' grafik. U kazhdogo iz sobytij, nazyvaemyh vehami, dolzhna byt' data. Vybor dat - uzhe obsuzhdavshayasya zadacha ocenki, i on reshayushchim obrazom zavisit ot opyta. Dlya vybora vseh veh est' tol'ko odno prigodnoe pravilo. Vehami dolzhny sluzhit' konkretnye osobye sobytiya, kotorye mozhno identificirovat' s polnoj opredelennost'yu. V kachestve otricatel'nyh primerov otmetim, chto napisanie programmy "zakoncheno na 90 procentov" v techenie poloviny vsego vremeni kodirovaniya. Otladka "zakonchena na 99 procentov" pochti vsegda. "Planirovanie zaversheno" - sobytie, kotoroe mozhno ob座avit' pochti proizvol'no.1 Naprotiv, vehi dolzhny byt' 100-procentnymi sobytiyami. "Specifikacii podpisany arhitektorami i razrabotchikami", "ishodnyj kod gotov na 100 procentov, otperforirovan i zagruzhen v biblioteku na diske", "otlazhennaya versiya proshla vse kontrol'nye primery". Takie konkretnye vehi razgranichivayut rasplyvchatye etapy planirovaniya, kodirovaniya i otladki. Nalichie chetko ocherchennyh granic i nedvusmyslennost' vazhnee, chem vozmozhnost' legkoj proverki nachal'nikom. Edva li chelovek stanet lgat' o prohozhdenii vehi, esli ona ocherchena stol' yasno, chto ot ne mozhet sebya obmanyvat'. A vot esli veha rasplyvchata, nachal'nik chasto vosprinimaet doklad inache, chem tot, kto emu dokladyvaet. Dopolnyaya Sofokla, skazhem, chto nikto ne lyubit i sam prinosit' durnye vesti, poetomu oni smyagchayutsya bez zlogo namereniya vvesti v zabluzhdenie. Dva interesnyh issledovaniya povedeniya pravitel'stvennyh podryadchikov po provedeniyu ocenok v krupnomasshtabnyh issledovatel'skih proektah pokazali: 1. Ocenki prodolzhitel'nosti raboty, tshchatel'no provedennye i peresmatrivaemye kazhdye dve nedeli pered nachalom raboty, ne sil'no menyayutsya po mere priblizheniya nachala raboty, kakimi by nevernymi oni ni okazalis' v konechnom itoge. 2. Posle nachala raboty zavyshennye iznachal'no ocenki postoyanno umen'shayutsya po mere prodvizheniya. 3. Zanizhennye ocenki sushchestvenno ne menyayutsya, poka do zaplanirovannogo sroka okonchaniya rabot ne ostaetsya okolo treh nedel'. CHetko razlichimye vehi v dejstvitel'nosti sozdayut udobstvo komande, kotoraya dolzhna rasschityvat', chto menedzher ih horosho opredelit. S neyasno vidimoj vehoj zhizn' stanovitsya trudnee. |to uzhe ne veha, a mel'nichnyj kamen', peretirayushchij boevoj duh, poskol'ku ona vvodit v zabluzhdenie otnositel'no poter' vremeni, poka oni ne stanut nepopravimymi. A hronicheskoe otstavanie ot grafika ugnetayushche dejstvuet na moral'noe sostoyanie. "Drugaya chast' tozhe opazdyvaet" Otstavanie ot grafika na odin den' - nu i chto? Kogo volnuet otstavanie na odin den'? Pozzhe nagonim. Drugaya chast', v kotoruyu vhodit nasha, tozhe otstaet na odin den'. Menedzher bejsbola schitaet energiyu vazhnym talantom, kak dlya vydayushchihsya igrokov, tak i dlya vydayushchihsya komand. |to sposobnost' begat' bystree, chem neobhodimo, peredvigat'sya skoree, chem neobhodimo, starat'sya sil'nee, chem neobhodimo. |nergiya vazhna i dlya vydayushchihsya komand programmistov. Ona obespechivaet uprugost', rezervnuyu moshchnost', pozvolyayushchie komande spravit'sya s povsednevnymi nepriyatnostyami, predvoshishchat' melkie bedy i uberegat'sya ot nih. Rasschitannaya reakciya, razmerennye usiliya ohlazhdayut energiyu. Kak my videli, nuzhno prihodit' v vozbuzhdenie iz-za otstavaniya na odin den', ibo oni yavlyayutsya sostavlyayushchimi katastrofy. No ne vse otstavaniya na odin den' odinakovo katastrofichny. Poetomu neobhodimo rasschityvat' reakciyu, hotya eto i oslablyaet energiyu. Kak otlichit' otstavaniya, kotorye sushchestvenny? Nichem nel'zya zamenit' diagrammy PERT ili metod kriticheskogo puti. Takaya set' pokazyvaet, kto nahoditsya v ozhidanii kakih sobytij. Ona pokazyvaet, kto nahoditsya na kriticheskom puti, na kotorom lyuboe otstavanie vlechet perenos daty okonchaniya. Ona takzhe pokazyvaet, kakoe predel'noe otstavanie vozmozhno dlya nekotoroj raboty, prezhde chem ono privedet na kriticheskij put'. Tehnologiya PERT, strogo govorya, est' razrabotka grafika rabot s kriticheskim putyami, kogda dlya kazhdogo sobytiya proizvodyatsya tri ocenki, sootvetstvuyushchie raznym veroyatnostyam ulozhit'sya v ustanovlennye sroki. YA ne dumayu, chto takoe utochnenie stoit zatrachivaemyh usilij, no dlya kratkosti vsyakuyu set' s kriticheskim putyami budu nazyvat' diagrammoj PERT. Podgotovka diagramm PERT est' samaya cennaya chast' ee primeneniya. Opredelenie topologii seti, ukazanie zavisimostej v nej i ocenivanie putej zastavlyayut vypolnit' bol'shoj ob容m ochen' konkretnogo planirovaniya na samyh rannih stadiyah proekta. Pervaya diagramma vsegda uzhasna, i dlya sozdaniya vtoroj prihoditsya proyavit' mnogo izobretatel'nosti. Vo vremya vypolneniya proekta diagramma PERT daet otvet na demoralizuyushchie izvineniya tipa "drugaya chast' tozhe zapazdyvaet". Ona pokazyvaet, kogda neobhodimo razvit' energiyu, chtoby uvesti svoyu chast' raboty s kriticheskogo puti, i podskazyvaet sposoby naverstat' poteryannoe vremya v drugih chastyah. Pod kovrom Kogda menedzher nizovogo zvena vidit, chto ego malen'kaya komanda otstaet, on ne sklonen bezhat' k nachal'niku so svoim gorem. Vozmozhno, komanda sumeet naverstat' vremya, libo on smozhet chto-nibud' pridumat' ili reorganizovat' dlya resheniya problemy. Zachem zhe bespokoit' etim nachal'nika? Do pory do vremeni eto dopustimo. Dlya togo i sushchestvuyut menedzhery nizovogo zvena, chtoby reshat' takie problemy. A u nachal'nika dostatochno drugih zabot, trebuyushchih ego vmeshatel'stva, chtoby iskat' novye. Tak vsya eta gryaz' zametaetsya pod kover. No kazhdomu nachal'niku nuzhny dva vida dannyh: informaciya o sryvah plana, kotoraya trebuet vmeshatel'stva, i kartina sostoyaniya del, chtoby byt' v kurse.3 S etoj cel'yu on dolzhen znat' polozhenie del vo vseh svoih komandah. Poluchit' pravdivuyu kartinu nelegko. V etom meste interesy menedzhera nizovogo zvena i nachal'nika vstupayut v protivorechie. Menedzher nizovogo zvena boitsya, chto esli on dolozhit nachal'niku o voznikshej u nego probleme, tot voz'metsya za nee sam. Ego vmeshatel'stvo otnimet u menedzhera ego funkcii, umen'shit ego vlast' i narushit drugie ego plany. Poetomu, poka menedzher schitaet, chto mozhet sam reshit' problemu, on ne dokladyvaet o nej nachal'niku. U nachal'nika est' dva sposoba zaglyanut' pod kovrik. Ispol'zovat' nuzhno oba. Pervyj - umen'shit' konflikt rolej i stimulirovat' otkrytie informacii. Vtoroj - sdernut' kovrik. Umen'shenie konflikta rolej. V pervuyu ochered' nachal'nik dolzhen provesti razlichie mezhdu dannymi i dejstviyah i dannymi o sostoyanii del. On dolzhen priuchit' sebya ne vmeshivat'sya v problemy, kotorye mogut reshit' ego menedzhery, i nikogda ne vmeshivat'sya v problemy neposredstvenno vo vremya izucheniya sostoyaniya del. YA znal odnogo nachal'nika, kotoryj neizmenno snimal trubku i nachinal davat' ukazaniya, ne dochitav do konca pervyj abzac otcheta o sostoyanii del. Pri takih dejstviyah vam obespecheno utaivanie polnyh dannyh. Naprotiv, esli menedzher znaet, chto ego nachal'nik vosprimet otchet bez paniki ili vmeshatel'stva, on budet davat' chestnye ocenki. Ves' etot process idet uspeshno, esli nachal'nik podcherkivaet, chto soveshchaniya, zaslushivaniya i konferencii nosyat harakter izucheniya sostoyaniya del, a ne prinyatiya mer po problemam, i vedet sebya sootvetstvuyushchim obrazom. Ochevidno, mozhno sozvat' soveshchanie po prinyatiyu mer po rezul'tatam zaslushivaniya o sostoyanii del, esli voznikaet oshchushchenie, chto problema vyshla iz-pod kontrolya. No togda po krajnej mere vse znayut, chto proishodit, i nachal'nik dvazhdy podumaet, prezhde chem vzyat' upravlenie na sebya. Sdergivanie kovrika. Tem ne menee neobhodimo imet' sposob uznat' istinnoe polozhenie del nezavisimo ot nalichiya stremleniya k sotrudnichestvu. Osnovoj takogo izucheniya sluzhit diagramma PERT s chasto raspolozhennymi vehami. V bol'shom proekte mozhno potrebovat' ezhenedel'nogo izucheniya kakoj-libo chasti ee, rassmatrivaya vsyu diagrammu raz v mesyac ili okolo togo. Glavnym dokumentom yavlyaetsya otchet s ukazaniem veh i stepeni ih fakticheskogo vypolneniya. (Na risunke 14.1 pokazan fragment takogo otcheta.) On mozhet pokazyvat' otstavanie po nekotorym poziciyam i sluzhit' v kachestve povestki dnya soveshchaniya. Vsem izvestny vynosimye na nego voprosy, i sootvetstvuyushchie menedzhery gotovy dolozhit' o prichinah otstavaniya, predpolagaemyh srokah zaversheniya, prinimaemyh merah, a takzhe trebuetsya li pomoshch' ot nachal'nika ili drugih grupp, i esli da, to kakaya. V. Vysockij iz Bell Telephone Laboratories dobavlyaet sleduyushchee nablyudenie: Dlya menya okazalos' udobnym imet' v otchete o sostoyanii del dve daty - "planovuyu" i "ocenivaemuyu". Planovye daty prinadlezhat menedzheru proekta i predstavlyayut soboj posledovatel'nyj plan raboty dlya proekta v celom, a priori yavlyayushchijsya priemlemym. Ocenivaemye daty prinadlezhat menedzheram nizshego zvena, v peredelah kompetencii kotoryh nahodyatsya rassmatrivaemye uchastki, i predstavlyayut ih mneniya o sroke fakticheskogo nastupleniya sobytiya pri imeyushchihsya u nih resursah i poluchenii vhodnyh dannyh (ili obyazatel'stvah ob ih postavke). Menedzher proekta dolzhen ostorozhno otnosit'sya k ocenivaemym datam i stremit'sya k polucheniyu tochnyh, neiskazhennyh ocenok, a ne uteshitel'no-optimistichnyh ili perestrahovochno- konservativnyh dannyh. Esli eta poziciya utverditsya v umah, to menedzher Ris. 14.1 proekta dejstvitel'no smozhet predvidet', chto on popadet v bedu, esli ne predprimet kakih-nibud' mer.4 Sozdanie diagrammy PERT yavlyaetsya obyazannost'yu nachal'nika i podotchetnyh emu menedzherov. Vnesenie v nee izmenenij, peresmotr i podgotovka otchetnosti dolzhny osushchestvlyat'sya nebol'shoj (ot odnogo do treh chelovek) gruppoj, kak by prodolzhayushchej nachal'nika. Takaya gruppa planirovaniya i kontrolya neocenima pri rabote nad bol'shim proektom. Ona ne obladaet inymi polnomochiyami, krome kak trebovat' ot menedzherov nizovogo zvena predostavleniya svedenij ob ustanovke ili izmenenii veh i ih dostizhenii. Poskol'ku gruppa planirovaniya i kontrolya osushchestvlyaet vsyu bumazhnuyu chast' raboty, nagruzka na menedzherov nizovogo zvena ogranichivaetsya samym vazhnym - prinyatiem reshenij. U nas byla umelaya, energichnaya i diplomatichnaya gruppa planirovaniya i kontrolya, vozglavlyavshayasya A. M. P'etrasanta (A. M. Pietrasanta), proyavivshim znachitel'nye izobretatel'nye sposobnosti dlya razrabotki effektivnyh, no nenavyazchivyh metodov kontrolya. V rezul'tate ego gruppa pol'zovalas' shirokim uvazheniem i horoshim otnosheniem. |to nemaloe dostizhenie dlya gruppy, kotoraya po prirode svoej dolzhna vyzyvat' razdrazhenie. Vydelenie nebol'shogo chisla podgotovlennyh rabotnikov v gruppu planirovaniya i kontrolya prinosit bol'shuyu otdachu. Dlya uspeshnogo zaversheniya proekta eto znachitel'no luchshe, chem esli by oni neposredstvenno zanimalis' razrabotkoj programmnyh produktov, tak kak gruppa planirovaniya i kontrolya stoit na strazhe togo, chtoby neoshchutimye zaderzhki stali vidimymi, i signaliziruet o kriticheskih polozheniyah. |to sistema rannego obnaruzheniya poteri goda, proishodyashchej den' za dnem. Glava 15. Obratnaya storona CHego my ne ponimaem, tem ne vladeem. GETE O, dajte mne vystupit' kommentatorom, Skol'zyashchim po poverhnosti i budorazhashchim umy. KRABB omp'yuternaya programma - eto poslanie cheloveka mashine. Strogo vystroennyj sintaksis i tshchatel'nye opredeleniya naceleny na to, chtoby bezdumnoj mashine stali ponyatny namereniya cheloveka. No u napisannoj programmy est' obratnaya storona: ona dolzhna byt' v sostoyanii rasskazat' o sebe pol'zovatelyu-cheloveku. |to trebuetsya dazhe dlya programmy, napisannoj isklyuchitel'no dlya sobstvennyh nuzhd, poskol'ku pamyat' mozhet izmenit' avtoru-pol'zovatelyu, i emu potrebuetsya osvezhit' detali svoego truda. Naskol'ko zhe bolee neobhodima dokumentaciya dlya programmy obshchego pol'zovaniya, pol'zovatel' kotoroj otdalen ot avtora vo vremeni, i v prostranstve! Dlya programmnogo produkta storona, obrashchennaya k pol'zovatelyu, stol' zhe vazhna, kak i storona, obrashchennaya k mashine. Mnogie iz nas branili dalekogo bezymyannogo avtora za skudno dokumentirovannuyu programmu. I mnogie poetomu pytalis' na vsyu zhizn' privit' molodym programmistam uvazhenie k dokumentacii, preodolevayushchee len' i press grafika rabot. V celom nam eto ne udalos'. YA dumayu, my ispol'zovali nevernye metody. Tomas Dzh. Uotson Starshij* (Thomas J. Watson, Sr.) rasskazal mne istoriyu svoego pervogo opyta v kachestve prodavca kassovyh apparatov v severnoj chasti shtata N'yu-Jork. Ispolnennyj entuziazma, on otpravilsya v put' v svoem furgone, nagruzhennom kassovymi apparatami. On prilezhno ob容hal svoj uchastok, no nichego ne prodal. Obeskurazhennyj, on soobshchil ob etom svoemu hozyainu. Poslushav nekotoroe vremya, upravlyayushchij skazal: "Pomogi mne zagruzit' neskol'ko kass v furgon, zapryagaj loshad', i poedem snova." Tak oni i sdelali, i obhodya pokupatelej odnogo za drugim, starik pokazyval, kak prodavat' kassovye apparaty. Sudya po vsemu, urok poshel vprok. Neskol'ko let ya staratel'no chital gruppam inzhenerov-programmistov lekcii o neobhodimosti i zhelatel'nosti horoshej dokumentacii, uveshchevaya ih vse s bol'shim pylom i krasnorechiem. |to ne podejstvovalo. YA predpolozhil, chto oni ponyali, kak pravil'no sostavlyat' dokumentaciyu, no ne delali etogo po nedostatku rveniya. Togda ya poproboval pogruzit' v povozku neskol'ko kassovyh apparatov, t.e. pokazat' im, kak delaetsya eta rabota. |to imelo znachitel'no bol'shij uspeh. Poetomu ostavshayasya chast' etogo povestvovaniya posvyashchena ne stol'ko poucheniyam, skol'ko ob座asneniyu togo, kak delat' horoshuyu dokumentaciyu. Kakaya dokumentaciya trebuetsya? Neobhodimy razlichnye urovni dokumentacii: dlya pol'zovatelya, obrashchayushchegosya k programme ot sluchaya k sluchayu, dlya pol'zovatelya, kotoryj sushchestvenno zavisit ot programmy v svoej rabote, i dlya pol'zovatelya, kotoryj dolzhen adaptirovat' programmu k izmenivshemusya okruzheniyu ili zadacham. CHtoby ispol'zovat' programmu. Kazhdomu pol'zovatelyu trebuetsya slovesnoe opisanie programmy. Po bol'shej chasti dokumentaciya stradaet otsutstvie obshchego obzora. Opisany derev'ya, prokommentirovany kora i list'ya, no plan lesa * Tomas Dzh. Uotson Starshij - osnovatel' kompanii IBM (primech. perev.) otsutstvuet. CHtoby napisat' poleznoe tekstovoe opisanie, vzglyanite izdaleka, a zatem medlenno priblizhajtes': 1. Naznachenie. CHto yavlyaetsya glavnoj funkciej programmy i prichinoj ee napisaniya? 2. Sreda. Na kakih mashinah, apparatnyh konfiguraciyah i konfiguraciyah operacionnoj sistemy budet ona rabotat'? 3. Oblast' opredeleniya i oblast' znachenij. Kakovy dopustimye znacheniya vhodnyh dannyh? Kakie pravil'nye znacheniya vyhodnyh rezul'tatov mogut poyavit'sya? 4. Realizovannye funkcii i ispol'zovannye algoritmy. CHto konkretno mozhet delat' programma? 5. Formaty vvoda-vyvoda, tochnye i polnye. 6. Instrukciya po rabote, v tom chisle opisanie vyvoda na konsol' i ustrojstvo vyvoda pri normal'nom i avarijnom zavershenii. 7. Opcii. Kakoj vybor predostavlyaetsya pol'zovatelyu v otnoshenii funkcij? Kakim obrazom nuzhno ego zadavat'? 8. Vremya raboty. Skol'ko vremeni zanimaet reshenie zadachi zadannogo razmera na zadannoj konfiguracii? 9. Tochnost' i proverka. Kakova ozhidaemaya tochnost' rezul'tatov? Kakie imeyutsya sredstva proverki tochnosti? CHasto vse eti dannye mozhno izlozhit' na treh ili chetyreh stranicah. Pri etom nuzhno udelit' osoboe vnimanie polnote i tochnosti. Bol'shuyu chast' etogo dokumenta nuzhno vcherne napisat' do razrabotki programmy, poskol'ku v nem voploshcheny osnovnye planovye resheniya. CHtoby doveryat' programme. Opisanie togo, kak ispol'zovat' programmu, nuzhno dopolnit' opisaniem togo, kak ubedit'sya v ee rabotosposobnosti. |to oznachaet nalichie kontrol'nyh primerov. Kazhdyj ekzemplyar postavlyaemoj programmy dolzhen soderzhat' neskol'ko nebol'shih kontrol'nyh primerov, kotorye mozhno postoyanno ispol'zovat', chtoby uverit' pol'zovatelya v tom, chto on mozhet doveryat' programme, i ona pravil'no zagruzhena v mashinu. Krome togo, nuzhny bolee tshchatel'nye testy, kotorye obychno vypolnyayutsya tol'ko posle modifikacii programmy. Oni otnosyatsya k trem uchastkam oblasti vhodnyh dannyh: 1. Osnovnye parametry, proveryayushchie glavnye funkcii programmy na obychno vstrechaemyh dannyh. 2. Primery na grani dopustimogo, proveryayushchie granicy oblasti vhodnyh dannyh i ubezhdayushchie, chto rabotayut naibol'shie znacheniya, naimen'shie znacheniya i vse dopustimye isklyucheniya. 3. Primery za granicej dopustimogo, proveryayushchie granicy s obratnoj storony i ubezhdayushchie, chto nedopustimye znacheniya vyzyvayut pravil'nye diagnosticheskie soobshcheniya. CHtoby modificirovat' programmu. Dlya adaptacii ili ispravleniya programmy trebuetsya znachitel'no bol'she dannyh. Razumeetsya, trebuyutsya vse detali, a oni soderzhatsya v horosho prokommentirovannom listinge. U pol'zovatelya, modificiruyushchego programmu ili redko ee ispol'zuyushchego, voznikaet ostraya neobhodimost' v yasnom otchetlivom obzore, na etot raz vnutrennej struktury. V takoj obzor vhodyat: 1. Blok-shema ili graf podprogrammnoj organizacii. Podrobnee ob etom sm. nizhe. 2. Polnye opisaniya ispol'zuemyh algoritmov ili ssylki na takie opisaniya v literature. 3. Raz座asnenie struktury vseh ispol'zuemyh fajlov. 4. Obzor organizacii prohozhdeniya dannyh - posledovatel'nosti, v kotoroj dannye ili programmy zagruzhayutsya s lenty ili diska i opisanie togo, chto delaetsya na kazhdom hode. 5. Obsuzhdenie modifikacij, predpolagaemyh ishodnym proektom, sushchnost' i raspolozhenie dobavochnyh blokov i vyhodov i diskursivnoe obsuzhdenie myslej avtora programmy otnositel'no izmenenij, kotorye mogut okazat'sya zhelatel'nymi, i kak ih mozhno provesti. Polezno takzhe izlozhit' ego zamechaniya o skrytyh lovushkah. Bich blok-shem Blok-shema chashche vsego yavlyaetsya lishnej chast'yu programmnoj dokumentacii. Dlya mnogih programm blok-shemy voobshche ne nuzhny. Redkie programmy trebuyut blok- shemy bolee chem na odnu stranichku. Blok-shemy pokazyvayut strukturu prinyatiya programmoj reshenij, chto yavlyaetsya lish' odnoj storonoj struktury programmy. Kogda blok-shema razmeshchaetsya na odnoj stranice, struktura reshenij vyglyadit dovol'no elegantno, no naglyadnost' srazu utrachivaetsya, kogda est' neskol'ko stranic, svyazannyh pronumerovannymi vhodami i vyhodami. Odnostranichnaya blok-shema dlya znachitel'noj po razmeru programmy stanovitsya, v sushchnosti, diagrammoj struktury programmy i etapov ili shagov. V etom kachestve ona ochen' udobna. Risunok 15.1 pokazyvaet takoj graf podprogrammnoj struktury. Ris. 15.1 Graf struktury programmy (primer W. V. Wright) Konechno, takoj strukturnyj graf ne trebuet osobyh usilij po soblyudeniyu standartov ANSI dlya blok-shem. Vse eti pravila otnositel'no vida pryamougol'nikov, soedinitel'nyh linij, numeracii i t.p. nuzhny tol'ko dlya ponimaniya podrobnyh blok-shem. Podrobnaya poshagovaya blok-shema yavlyaetsya dosadnym anahronizmom, prigodnym tol'ko dlya novichkov v algoritmicheskom myshlenii. Vvedennye Goldshtajnom i fon Nejmanom1 pryamougol'niki vmeste so svoim soderzhimym sluzhili yazykom vysokogo urovnya, ob容dinyaya nepostizhimye operatory mashinnogo yazyka v osmyslennye gruppy. Kak davno ponyal Iverson,2 v sistematicheskom yazyke vysokogo urovnya gruppirovka uzhe provedena, i kazhdyj pryamougol'nik soderzhit operator (ris. 15.2). Poetomu sami pryamougol'niki yavlyayutsya utomitel'nym i otnimayushchim mesto uprazhneniem v cherchenii i vpolne mogut byt' udaleny. Togda ostayutsya tol'ko strelki. Strelki, svyazyvayushchie odin operator s drugim, raspolozhennym v sleduyushchej stroke, izlishni, i ih mozhno udalit'. Togda ostayutsya tol'ko GO TO, i esli priderzhivat'sya horoshej praktiki programmirovaniya i ispol'zovat' blochnye struktury dlya minimizacii chisla GO TO, takih strelok okazhetsya nemnogo, no oni ochen' sposobstvuyut ponimaniyu. Vpolne mozhno narisovat' ih na listinge i vovse izbavit'sya ot blok-shemy. V dejstvitel'nosti o blok-shemah bol'she govoryat, chem pol'zuyutsya imi. YA nikogda ne videl opytnogo programmista, kotoryj v povsednevnoj deyatel'nosti risoval by podrobnye blok-shemy, prezhde chem nachat' pisat' programmu. Tam, gde blok-shemy trebuyutsya pravilami organizacii, oni pochti vsegda sozdayutsya zadnim chislom. Mnogie gordyatsya ispol'zovaniem special'nyh programm dlya generacii etogo "nezamenimogo instrumenta razrabotki" na osnove uzhe zakonchennoj programmy. Dumayu, chto etot vseobshchij opyt ne yavlyaetsya postydnym i predosuditel'nym othodom ot horoshej praktiki programmirovaniya, priznavat'sya v kotorom mozhno lish' s nervnym smeshkom. Naprotiv, eto rezul'tat zdravogo rassuzhdeniya, dayushchij nam urok otnositel'no poleznosti blok-shem. Apostol Petr skazal o novoobrashchennyh yazychnikah i zakone Moiseya: "CHto zhe vy [zhelaete] vozlozhit' na vyi uchenikov igo, kotorogo ne mogli ponesti ni otcy nashi, ni my?" (Deyaniya apostolov 15:10). To zhe skazal by ya o programmistah-novichkah i ustarevshej praktike blok-shem. Samodokumentiruyushchiesya programmy Odin iz osnovnyh principov obrabotki dannyh uchit, chto bezrassudno starat'sya podderzhivat' sinhronnost' nezavisimyh fajlov. Znachitel'no luchshe sobrat' ih v odin fajl, v kotorom kazhdaya zapis' soderzhit vse dannye ih oboih fajlov, otnosyashchiesya k dannomu klyuchu. Tem ne menee nasha praktika dokumentirovaniya programm protivorechit sobstvennym teoriyam. Obychno my pytaemsya podderzhivat' programmu v vide, prigodnom dlya vvoda v mashinu, a nezavisimyj komplekt dokumentacii, sostoyashchej iz teksta i blok-shem, - v vide, prigodnom dlya chteniya chelovekom. Rezul'taty etogo podtverzhdayut mysl' o nerazumnosti podderzhki nezavisimyh fajlov. Programmnaya dokumentaciya poluchaetsya udivitel'no plohoj, a ee soprovozhdenie - i togo huzhe. Vnosimye v programmu izmeneniya ne poluchayut bystrogo, tochnogo i obyazatel'nogo otrazheniya v dokumente. YA polagayu, chto pravil'nym resheniem dolzhno byt' sliyanie fajlov: vklyuchenie dokumentacii v ishodnyj tekst programmy. |to odnovremenno i sil'nyj pobuditel'nyj motiv k dolzhnomu soprovozhdeniyu, i garantiya togo, chto dokumentaciya vsegda budet pod rukoj u pol'zovatelya. Takie programmy nazyvayut samodokumentiruyushchimisya. Ochevidno, pri etom neudobno, hotya i vozmozhno, vklyuchat' blok-shemy, esli v etom est' neobhodimost'. No, prinyav vo vnimanie anahronizm blok-shem i ispol'zovanie preimushchestvenno yazykov vysokogo urovnya, stanovitsya vozmozhnym ob容dinit' programmu s dokumentaciej. Ispol'zovanie ishodnogo koda programmy v kachestve nositelya dokumentacii vlechet nekotorye ogranicheniya. S drugoj storony, neposredstvennyj dostup chitatelya dokumentacii k kazhdoj stroke programmy otkryvaet vozmozhnost' dlya novyh tehnologij. Prishlo vremya razrabotat' radikal'no novye podhody i metody sostavleniya programmnoj dokumentacii. V kachestve vazhnejshej celi my dolzhny popytat'sya predel'no umen'shit' gruz dokumentacii - gruz, s kotorym ni my, ni nashi predshestvenniki tolkom ne spravilis'. Podhod. Pervoe predlozhenie sostoit v tom, chtoby razdely programmy, obyazannye prisutstvovat' v nej soglasno trebovaniyam yazyka programmirovaniya, soderzhali kak mozhno bol'she dokumentacii. Sootvetstvenno, metki, operatory ob座avleniya i simvolicheskie imena vklyuchayut v zadachu peredat' chitatelyu kak mozhno bol'she smysla. Ris. 15.2 Sravnenie blok-shemy i sootvetstvuyushchej programmy na PL/I (fragment) Vtoroe predlozhenie - v maksimal'noj mere ispol'zovat' prostranstvo i format, chtoby uluchshit' chitaemost' i pokazat' otnosheniya podchinennosti i vlozhennosti. Tret'e predlozhenie - vklyuchit' v programmu neobhodimuyu tekstovuyu dokumentaciyu v vide paragrafov kommentariev. V bol'shinstve programm dostatochno imet' postrochnye kommentarii. V programmah, otvechayushchih zhestkim standartam organizacij na "horoshee dokumentirovanie", ih chasto slishkom mnogo. Odnako dazhe v etih programmah obychno nedostatochno paragrafov kommentariev, kotorye dejstvitel'no sposobstvuyut ponyatnosti i obozrimosti celogo. Poskol'ku dokumentaciya vstraivaetsya v ispol'zuemye programmoj strukturu, imena i formaty, znachitel'nuyu chast' etoj raboty neobhodimo prodelat', kogda programmu tol'ko nachinayut pisat'. No imenno togda i nuzhno pisat' dokumentaciyu. Poskol'ku podhod na osnove samodokumentirovaniya sokrashchaet dopolnitel'nuyu rabotu, men'she prepyatstvij k ego osushchestvleniyu. Nekotorye priemy. Na risunke 15.3 pokazana samodokumentiruyushchayasya programma na yazyke PL/I.3 CHisla v kruzhochkah ne yavlyayutsya ee chast'yu, a sluzhat metadokumentaciej dlya ssylok pri obsuzhdenii. 1. Ispol'zujte dlya kazhdogo zapuska svoe imya zadaniya i vedite zhurnal, v kotorom uchityvajte predmet proverki, vremya i poluchennye rezul'taty. Esli imya sostoit iz mnemoniki (zdes' QLT) i chislovogo suffiksa (zdes' 4), to suffiks mozhno ispol'zovat' v kachestve nomera zapuska, svyazyvayushchego zapis' v zhurnale i listing. Pri etom dlya raznyh progonov trebuyutsya svoi karty zadaniya, no ih mozhno delat' kolodami s dublirovaniem postoyannyh dannyh. 2. Ispol'zujte mnemonicheskie nazvaniya programmy, vklyuchayushchie identifikator versii - v predpolozhenii, chto budet neskol'ko versij. Zdes' indeks - dve mladshie cifry goda. 3. Vklyuchite tekstovoe opisanie v kachestve kommentariev k PROCEDURE. 4. Dlya dokumentirovaniya algoritmov ssylajtes', gde mozhno, na literaturu. |to ekonomit mesto, adresuet k bolee polnomu osveshcheniyu, chem mozhno dat' v programme, i daet vozmozhnost' znayushchemu chitatelyu propustit' ssylku, ostavlyaya uverennost', chto on vas pojmet. 5. Pokazhite svyaz' s algoritmom, opisannym v knige: a) izmeneniya; b) osobennosti ispol'zovaniya; v) predstavlenie dannyh. 6. Ob座avite vse peremennye. Ispol'zujte mnemoniku. Ispol'zujte kommentarii dlya prevrashcheniya operatora DECLARE v polnocennuyu legendu. Obratite vnimanie, chto on uzhe soderzhit imena i opisaniya struktur, nuzhno lish' dopolnit' ego opisaniyami naznacheniya. Sdelav eto zdes', vy izbezhite otdel'nogo povtoreniya imen i strukturnyh opisanij. 7. Postav'te metku v nachale inicializacii. 8. Postav'te metki pered gruppami operatorov, sootvetstvuyushchie operatoram algoritma, opisannogo v knige. 9. Ispol'zujte otstupy dlya pokaza struktury i gruppirovaniya. 10. Vruchnuyu postav'te strelki, pokazyvayushchie logicheskij poryadok operatorov. Oni ochen' polezny pri otladke i vnesenii izmenenij. Ih mozhno pomestit' na pravom pole mesta dlya kommentariev i sdelat' chast'yu vvodimogo v mashinu teksta. 11. Vstav'te strochnye kommentarii dlya poyasneniya vsego, chto neochevidno. Pri ispol'zovanii izlozhennyh vyshe priemov oni okazhutsya koroche i malochislennej, chem obychno. 12. Pomeshchajte neskol'ko operatorov na odnoj stroke ili odin operator na neskol'kih strokah v sootvetstvii s logicheskoj gruppirovkoj, a takzhe chtoby pokazat' svyaz' s opisaniem algoritma. Vozrazheniya. Kakovy nedostatki takogo podhoda k dokumentirovaniyu? Oni sushchestvuyut, i v prezhnie vremena byli sushchestvennymi, no sejchas stanovyatsya mnimymi. Ris. 15.3 Samodokumentiruyushchayasya programma Samym ser'eznym vozrazheniem yavlyaetsya uvelichenie razmera ishodnogo teksta, kotoryj nuzhno hranit'. Poskol'ku praktika vse bolee tyagoteet k hraneniyu ishodnogo koda v aktivnyh ustrojstvah, eto vyzyvaet rastushchee bespokojstvo. Lichno ya pishu bolee kratkie kommentarii v programmah na APL, kotorye hranyatsya na diske, chem v programmah na PL/I, kotorye hranyatsya na perfokartah. Odnako odnovremenno my dvizhemsya k hraneniyu v aktivnyh ustrojstvah tekstovyh dokumentov, dostup k kotorym i izmenenie osushchestvlyaetsya s pomoshch'yu komp'yuterizirovannyh tekstovyh redaktorov. Kak ukazyvalos' vyshe, sliyanie teksta i programmy sokrashchaet obshchee kolichestvo hranimyh simvolov. Analogichnoe vozrazhenie vyzyvaet argument, chto samodokumentiruyushchiesya programmy trebuyut bol'she vvoda s klaviatury. V pechatnom dokumente trebuetsya, po men'shej mere, odno nazhatie na klavishu dlya kazhdogo simvola na kazhdyj chernovoj ekzemplyar. V samodokumentiruyushchejsya programme summarnoe kolichestvo simvolov men'she, i na odin simvol prihoditsya men'she nazhatij na klavishi, tak kak chernoviki ne perepechatyvayutsya. A chto zhe blok-shemy i strukturnye grafy? Esli ispol'zuetsya tol'ko strukturnyj graf samogo vysokogo urovnya, on vpolne mozhet soderzhat'sya v otdel'nom dokumente, poskol'ku redko podvergaetsya izmeneniyam. No konechno, ego mozhno vklyuchit' v ishodnyj tekst programmy v kachestve kommentariya, chto budet blagorazumno. V kakoj mere opisannye vyshe priemy primenimy dlya programm na yazyke assemblera? YA dumayu, chto bazovyj podhod dokumentirovaniya primenim vsyudu. Svobodnym prostranstvom i formatami mozhno pol'zovat'sya s men'shej stepen'yu svobody, i poetomu oni ispol'zuyutsya ne tak gibko. Imena i ob座avleniya struktur, nesomnenno, mozhno ispol'zovat'. Ochen' mogut pomoch' makrosy. Intensivnoe ispol'zovanie paragrafov kommentariem yavlyaetsya horoshej praktikoj v lyubom yazyke. No podhod na osnove samodokumentirovaniya stimulirovan primeneniem yazykov vysokogo urovnya i obretaet naibol'shuyu moshch' i naivysshee opravdanie v yazyk