noe
oshchushchenie, chto vydayushchiesya proekty sozdayutsya vydayushchimisya arhitektorami. Vo
vnov' voznikshej kul'ture est' vozmozhnost' voznagrazhdat' "zvezd"
sootvetstvenno ih vkladu. V klassicheskoj industrii social'naya politika firm
i ih principy oplaty truda vsegda eto zatrudnyali. Neudivitel'no poetomu, chto
mnogie zvezdy novogo pokoleniya byli vtyanuty v orbitu paketnoj industrii.
Pokupaj i sozdavaj: korobochnye produkty v kachestve komponentov
Radikal'no uluchshit' ustojchivost' programmnyh produktov i proizvoditel'nost'
truda pri ih sozdanii mozhno, lish' podnyavshis' na odin uroven' i izgotavlivaya
programmy iz modulej ili ob®ektov. Osobenno mnogoobeshchayushchej tendenciej
stanovitsya ispol'zovanie rynochnyh paketov v kachestve platform, na kotoryh
sozdayutsya bolee bogatye i specializirovannye produkty. Sistema upravleniya
dvizheniem gruzovikov sozdaetsya s pomoshch'yu korobochnoj bazy dannyh i
kommunikacionnogo paketa, takzhe kak i informacionnaya sistema dlya studentov.
Ob®yavleniya v zhurnalah predlagayut sotni stekov dlya Hypercard,
specializirovannyh shablonov dlya Excel, desyatki special'nyh funkcij na Pascal
dlya MiniCad ili funkcij na AutoLisp dlya AutoCad.
Metaprogrammirovanie. Steki dlya Hypercard, specializirovannye shablony
dlya Excel, funkcii dlya MiniCad chasto nazyvayut metaprogrammirovaniem,
sozdaniem novogo sloya, prisposablivayushchego funkcii k nuzhdam opredelennoj
gruppy pol'zovatelej paketa. Ideya metaprogrammirovaniya ne nova, ona
vernulas' i poluchila svoe nazvanie. V nachale 60-h mnogie proizvoditeli
komp'yuterov i vychislitel'nye centry bol'shih informacionno-upravlyayushchih sistem
obrazovyvali nebol'shie gruppy specialistov, sozdavavshih celye yazyki
prikladnogo programmirovaniya s pomoshch'yu makrosov, napisannyh na assemblere. V
vychislitel'nom centre Eastman Kodak byl sozdan yazyk prikladnogo
programmirovaniya na baze makroassemblera dlya IBM 7080. Analogichno, v
telekommunikacionnoj programme Queued Telecommunications Access Method dlya
IBM OS/360 mozhno bylo na mnogih stranicah koda, napisannogo predpolozhitel'no
na yazyke makroassemblera, ne najti ni odnoj komandy mashinnogo urovnya. Sejchas
bloki, sozdavaemye metaprogrammistom, znachitel'no bol'she, chem togdashnie
makroopredeleniya. Takoe razvitie vtorichnogo rynka ochen' obnadezhivaet: poka
my zhdali vozniknoveniya aktivnogo rynka klassov C++, nezametno voznik rynok
metaprogramm mnogokratnogo ispol'zovaniya.
|to dejstvitel'no nastuplenie na sushchnost'. Poskol'ku na srednego
programmista informacionno-upravlyayushchih sistem fenomen razrabotki na osnove
paketov eshche ne okazal vozdejstviya, on poka ne ochen' zamechaem programmnoj
inzheneriej. Tem ne menee, eto napravlenie budet bystro razvivat'sya,
poskol'ku zatragivaet sushchnost' modelirovaniya konceptual'nyh konstrukcij.
Korobochnyj paket predostavlyaet bol'shoj funkcional'nyj modul' so slozhnym, no
tochnym interfejsom, a ego vnutrennyuyu konceptual'nuyu strukturu vovse ne
trebuetsya proektirovat'. Programmnye produkty s funkciyami vysokogo urovnya,
takie kak Excel i 4th Dimension, dejstvitel'no yavlyayutsya bol'shimi modulyami,
no sluzhat ponyatnymi, dokumentirovannymi, otlazhennymi modulyami, s pomoshch'yu
kotoryh mozhno sozdavat' zakaznye sistemy. Razrabotchiki prilozhenij sleduyushchego
urovnya poluchayut bogatstvo funkcij, sokrashchenie vremeni razrabotki, otlazhennye
komponenty, uluchshennuyu dokumentaciyu i rezko snizhennuyu cenu.
Slozhnost', konechno, v tom, chto korobochnye pakety razrabotany kak
samostoyatel'nye ob®ekty, funkcii i interfejsy kotoryh metaprogrammisty ne
mogut izmenit'. Krome togo, bolee sushchestvenno to, chto razrabotchiki
korobochnyh paketov, kazhetsya, ne slishkom stremyatsya sdelat' svoi produkty
prigodnymi v kachestve modulej bolee krupnyh sistem. Dumayu, chto takoe
ponimanie neverno, i sushchestvuet neudovletvorennyj rynok dlya paketov,
sposobstvuyushchih ispol'zovaniyu metaprogrammirovaniya.
Tak chto zhe trebuetsya? Mozhno vydelit' chetyre urovnya pol'zovatelej
korobochnyh produktov:
- Pol'zovatel' kak takovoj, prosto ispol'zuyushchij prilozhenie i
udovletvorennyj funkciyami i interfejsom, predostavlennymi razrabotchikami.
- Metaprogrammist, stroyashchij shablony i funkcii poverh otdel'nogo
prilozheniya s ispol'zovaniem imeyushchihsya interfejsov, glavnym obrazom, dlya
obespecheniya truda konechnogo pol'zovatelya.
- Razrabotchik vneshnih funkcij, vvodyashchij v prilozhenie dopolnitel'nye
funkcii. |to, po suti, novye primitivy yazyka prikladnogo programmirovaniya,
obrashchayushchiesya k otdel'nym modulyam, napisannym na yazyke obshchego naznacheniya.
Neobhodima vozmozhnost' interfejsa etih novyh funkcij s prilozheniem cherez
perehvatyvaemye komandy, obratnye vyzovy ili peregruzhaemye funkcii.
- Metaprogrammist, ispol'zuyushchij odno i, v osobennosti, neskol'ko
prilozhenij v kachestve komponentov bolee krupnoj sistemy. |to pol'zovatel',
ch'i nuzhdy segodnya slabo udovletvoryayutsya. |to tot vid ispol'zovaniya, kotoryj
obeshchaet naibol'shij rost proizvoditel'nosti pri sozdanii novyh prilozhenij.
Dlya etogo poslednego tipa pol'zovatelej korobochnyj produkt dolzhen imet'
dopolnitel'nyj dokumentirovannyj interfejs - interfejs metaprogrammirovaniya.
On dolzhen predostavlyat' neskol'ko vozmozhnostej. Prezhde vsego, metaprogramma
dolzhna upravlyat' ansamblem prilozhenij, nesmotrya na to, chto kazhdoe
prilozhenie, kak pravilo, schitaet, chto upravlyaet samim soboj. |tot ansambl'
dolzhen upravlyat' interfejsom pol'zovatelya, hotya obychno samo prilozhenie
schitaet, chto delaet eto. Ansambl' dolzhen byt' v sostoyanii vyzvat' lyubuyu
funkciyu prilozheniya, kak esli by ego komandnaya stroka ishodila ot
pol'zovatelya. Vyhodnye dannyh prilozheniya dolzhny peredavat'sya emu, a ne na
ekran, prichem v vide logicheskih blokov podhodyashchih tipov dannyh, a ne
tekstovoj stroki, kotoruyu nuzhno otobrazit'. V nekotoryh prilozheniyah,
naprimer, FoxPro, est' dyrochki, pozvolyayushchie peredat' komandnuyu stroku, no
vozvrashchayutsya skudnye i nerazobrannye dannye. Takaya dyrochka - zaplatka na
skoruyu ruku, v to vremya kak trebuetsya obshchee prorabotannoe reshenie.
Bol'shie vozmozhnosti dalo by nalichie yazyka scenariev dlya upravleniya
vzaimodejstviem prilozhenij, vhodyashchih v ansambl'. Takogo roda funkcii vpervye
predostavila Unix s pomoshch'yu kanalov i standarta fajlov v formate
ASCII-strok. Segodnya neplohim resheniem yavlyaetsya AppleScript.
Sostoyanie i budushchee programmnoj inzhenerii
Odnazhdy ya poprosil Dzhima Ferrella (Jim Ferrell), predsedatelya himiko-
tehnologicheskogo fakul'teta universiteta shtata Severnaya Karolina povedat' o
razvitii himicheskih tehnologij vne svyazi s himiej, na chto on ekspromtom
vydal mne zamechatel'nyj rasskaz, prodolzhavshijsya chas, nachinaya s
sushchestvovavshih s antichnyh vremen razlichnyh proizvodstvennyh processov dlya
mnogih produktov - ot stali do hleba i parfyumernyh izdelij. On rasskazal,
kak professor Artur D. Littl (Arthur D. Little) v 1918 godu osnoval v MTI
fakul'tet prikladnoj himii dlya issledovaniya, razrabotki i obucheniya obshchim
fundamental'nym tehnologiyam vseh processov. Snachala byli prakticheskie
pravila, zatem empiricheskie nomogrammy, zatem recepty proektirovaniya
otdel'nyh komponentov, zatem matematicheskie modeli rasprostraneniya tepla,
mass, kolichestva dvizheniya v otdel'nyh emkostyah.
Po hodu rasskaza Ferrella ya porazilsya obiliyu parallelej mezhdu
razrabotkoj himicheskih tehnologij i razvitiem programmnyh tehnologij,
proishodivshim pochti polveka spustya. Parnas utverzhdaet, chto ya voobshche pishu o
"programmnoj inzhenerii". On protivopostavlyaet programmotehniku kak nauku
elektrotehniku i schitaet, chto nazyvat' nashe zanyatie inzheneriej samonadeyanno.
Vozmozhno, on prav v tom, chto eta oblast' nikogda ne stanet inzhenernoj
disciplinoj s takoj tochnoj i vseohvatyvayushchej osnovoj, kakaya est' u
elektrotehniki. V konce koncov, programmnaya inzheneriya, podobno himicheskoj
tehnologii, zanyata nelinejnymi zadachami uvelicheniya masshtabov do promyshlennyh
processov i, podobno organizacii promyshlennogo proizvodstva, postoyanno
stavitsya v tupik slozhnostyami chelovecheskogo povedeniya.
Tem ne menee harakter i vremennye ramki razvitiya himicheskoj tehnologii
privodyat menya k mysli, chto programmnaya inzheneriya v vozraste 27 let ne
stol'ko beznadezhna, skol'ko yavlyaetsya nezreloj, kakoj himicheskaya
promyshlennost' byla v 1945 godu. Lish' posle Vtoroj mirovoj vojny
himiki-tehnologi real'no obratilis' k vzaimosvyazannym potochnym sistemam s
zamknutym ciklom.
Segodnya harakternye zadachi programmnoj inzhenerii zvuchat tochno tak zhe,
kak oni izlozheny v glave 1:
- Kak proektirovat' i stroit' programmy, obrazuyushchie sistemy.
- Kak proektirovat' i stroit' programmy i sistemy, yavlyayushchiesya nadezhnym,
otlazhennym, dokumentirovannym i soprovozhdaemym produktom.
- Kak osushchestvlyat' intellektual'nyj kontrol' v usloviyah bol'shoj
slozhnosti.
V smolyanoj yame programmnoj inzhenerii eshche dolgo pridetsya vyaznut'. Mozhno
ozhidat', chto chelovechestvo prodolzhit opyty s sistemami kak vnutri, tak i za
predelami nashih vozmozhnostej. Programmnye sistemy yavlyayutsya, vozmozhno,
naibolee zaputannymi chelovecheskimi tvoreniyami. |to slozhnoe remeslo trebuet
nepreryvno razvivat' etu disciplinu, uchit'sya sozdavat' iz bolee krupnyh
blokov, nailuchshim obrazom ispol'zovat' novye instrumenty, staratel'no
osvaivat' oprobovannye metody upravleniya inzheneriej, shchedro ispol'zovat'
zdravyj smysl i smirenno soznavat' svoyu podverzhennost' oshibkam i
ogranichennost' nashih vozmozhnostej.
|pilog Pyat'desyat let udivleniya, voshishcheniya i radostiV moej pamyati vse
eshche zhivy udivlenie i vostorg, s kotorym ya - mne togda bylo 13 let - chital
otchet ot 7 avgusta 1944 goda ob osvyashchenii komp'yutera Mark I, arhitektorom
kotorogo byl Govard Ajken (Howard Aiken), a proektirovshchikami - inzhenery Kler
Lejk (Clair D. Lake), Bendzhamin Durfi (B. M. Durfee) i Frensis Gamil'ton (F.
E. Hamilton). Takoj zhe vyzyvayushchej oshchushchenie chuda byla stat'ya Vannevara Busha
(Vannevar Bush) "That We May Think" v aprel'skom 1945 goda nomere "Atlantic
Monthly", v kotoroj on predlozhil organizovat' znaniya v vide ogromnoj
gipertekstovoj pautiny i obespechit' pol'zovatelej mashinami dlya perehodov po
sushchestvuyushchim ssylkam i sozdaniya novyh associativnyh sledov.
Novyj tolchok moya strast' k komp'yuteram poluchila v 1952 godu, kogda,
rabotaya letom na IBM v |dinkote, shtat N'yu-Jork, ya poluchil prakticheskij opyt
programmirovaniya dlya IBM 604 i formal'noe obuchenie programmirovaniyu dlya IBM
701, ih pervoj mashiny s hranimoj programmoj. Aspirantura u Ajkena i Iversona
v Garvarde sdelala real'nost'yu moi mechty o professii, i ya svyazal s nej vsyu
svoyu zhizn'. Nemnogim Bog daet pravo zarabatyvat' na zhizn' tem, chem oni s
radost'yu zanimalis' by po sobstvennoj vole, po uvlecheniyu. YA blagodaren
sud'be.
Dlya cheloveka, vlyublennogo v komp'yutery, trudno bylo by pridumat' inoe
vremya, kogda tak radostno bylo zhit'. Ot mehanicheskih ustrojstv do vakuumnyh
lamp, tranzistorov i integral'nyh shem shlo burnoe razvitie tehnologii.
Pervyj komp'yuter, na kotorom ya rabotal srazu posle vypuska iz Garvarda, byl
superkomp'yuter IBM Stretch. |tot komp'yuter carstvoval nad mirom kak samyj
bystryj s 1961 po 1964 gody; bylo izgotovleno 9 ekzemplyarov. Moj segodnyashnij
Macintosh Powerbook ne tol'ko bystree, s bol'shej pamyat'yu i bol'shim diskom,
no i v tysyachu raz deshevle (v pyat' tysyach raz deshevle s uchetom inflyacii). My
byli svidetelyami togo, kak poocheredno proizoshli komp'yuternaya revolyuciya,
revolyuciya elektronnyh komp'yuterov, revolyuciya minikomp'yuterov i revolyuciya
mikrokomp'yuterov, v rezul'tate kazhdoj iz kotoryh komp'yuterov stanovilos' na
poryadki bol'she.
Oblast' svyazannyh s komp'yuterami znanij preterpela vzryv, kak i
sootvetstvuyushchaya tehnologiya. Buduchi aspirantom v seredine 50-h, ya mog
prochest' vse zhurnaly i trudy konferencij. YA mog ostavat'sya na sovremennom
urovne vo vsej nauchnoj discipline. Segodnya zhe mne v moej intellektual'noj
zhizni prihoditsya s sozhaleniem rasstavat'sya s interesami to v odnoj, to v
drugoj podoblasti, poskol'ku kolichestvo dokumentov prevysilo vsyakuyu
vozmozhnost' spravit'sya s nimi. Massa interesov, massa zamechatel'nyh
vozmozhnostej dlya ucheby, issledovanij, razmyshlenij. CHudesnoe zatrudnenie! Ne
tol'ko konca ne vidno, no i shag ne zamedlyaetsya. V budushchem nas ozhidayut mnogie
radosti.
Primechaniya i ssylki
Glava 1
1. A. P. Ershov polagaet, chto eto ne tol'ko pechal', no otchasti i
radost'. A. P. Ershov. Aesthetics and the human factor in programming //
CACM. 1972. Vol. 15, N 7. July. P. 501-505
Glava 2
1. V. A. Vysockij iz Bell Telephone Laboratories schitaet, chto bol'shoj
proekt mozhet vyderzhat' do 30% prirosta chisla sotrudnikov v god. Pri bol'shem
uvelichenii zatrudnyaetsya i dazhe podavlyaetsya razvitie vazhnoj neformal'noj
struktury i ee kommunikacionnyh svyazej, o chem govoritsya v glave 7. F. Dzh.
Korbato iz MTI otmechaet, chto v dlitel'nom proekte sleduet ozhidat' ezhegodnoj
smeny 20% sotrudnikov, i novye rabotniki dolzhny kak poluchit' tehnicheskuyu
podgotovku, tak i vlit'sya v formal'nuyu strukturu.
2. CH. Portman iz International Computers Limited govorit: "Esli vse
rabotaet i ob®edineno v sistemu, znachit, ostalos' raboty na chetyre mesyaca".
Nekotorye drugie sposoby raspredeleniya grafika privedeny v stat'e: Wolverton
R. W. The cost of developing large-scale software // IEEE Trans. on
Computers. 1974. Vol. C-23, N 6. June. P. 615-636.
3. Risunkami 2.5-2.8 ya obyazan Dzherri Ogdinu, kotoryj, citiruya moj
primer iz bolee rannej publikacii etoj glavy, znachitel'no uluchshil
illyustracii. Ogdin, J. L. The Mongolian hordes versus superprogrammer //
Infosystems. 1972. Dec. P. 20-23.
Glava 3
1. Sackman H., Erikson W. J., Grant E. E. Exploratory experimentation
studies comparing online and offline programming performance // CACM. 1968.
Vol. 11, N 1. Jan. P. 3-11.
2. Mills H. Chief programmer team, principles, and procedures // IBM
Federal Systems Division Report FSC 71-5108. Gaithersburg, Md., 1971.
3. Baker F. T. Chief programmer team management of production
programming // IBM Sys. J. 1972. Vol. 11, N 1.
Glava 4
1. Eschapasse M. Reims Cathedral, Caisse Nationale des Monuments
Histiriques. Paris, 1967.
2. Brooks F. P. Architectural Philosophy // Buchholz W. (Ed.). Planning
a Computer System. New York: McGraw-Hill, 1962.
3. Blaauw G. A. Hardware requirements for the fourth generation //
Gruenberger F. (ed.). Fourth Generation Computers. Englewood Cliffs, N. J.:
Prentice-Hall, 1970.
4. Brooks F. P., Iverson K. E. Automatic Data Processing, System/360
Edition. New York: Wiley, 1969. Ch. 5.
5. Glegg G. L. The Design of Design. Cambridge : Cambridge Univ. Press,
1969: "Na pervyj vzglyad kazhetsya, chto mysl' o tom, chtoby nalozhit' na
tvorcheskij um kakie-to pravila ili principy, skoree pomeshaet emu, chem okazhet
pomoshch', no na praktike eto sovershenno neverno. Disciplinirovannoe myshlenie
skoree koncentriruet vdohnovenie, chem podavlyaet ego".
6. Conway R. W. The PL/C Compiler // Proceedings of a Conf. on
Definition and Implementation of Universal Programming Languages. Stuttgard,
1970.
7. Horoshee obsuzhdenie neobhodimosti programmnyh tehnologij sm.:
Reynolds C. H. Whats wrong with computer programming management? // Weinwurm
G. F. (Ed.). On the Management of Computer Programming. Philadelphia :
Auerbach, 1971. P. 35-42.
Glava 5
1. Strachey C. Review of Planning a Computer System // Comp. J. 1962.
Vol. 5, N 2. July. P. 152-153.
2. |to otnositsya tol'ko k upravlyayushchim programmam. Nekotorye brigady,
razrabatyvayushchie kompilyatory dlya proekta OS/360, sozdavali uzhe svoj tretij
ili chetvertyj produkt, i otlichnoe kachestvo ih produktov eto podtverzhdaet.
3. Shell D. L. The Share 709 system: a cooperative effort; Greenwald I.
D., Kane M. The Share 709 system: programming and modification; Boehm E. M.,
Steel T. B., Jr. The Share 709 system: machine implementation of symbolic
programming. Vse stat'i // JACM. 1959. Vol. 6, N 2. Apr. P. 123-140.
Glava 6
1. Neustadt R. E. Presidential Power. New York: Wiley, 1960. Ch. 2.
2. Backus J. W. The syntax and semantics of the proposed international
algebraic language // Proc. Intl. Conf. Inf. Proc. UNESCO, Paris, 1959 //
Oldenbourg R., Munich and Butterworth. (Eds.). London. Krome togo, celaya
podborka statej na etu temu soderzhitsya v: Steel T. B., Jr. (Ed.). Formal
Language Description Languages for Computer Programming. Amsterdam: North
Holland, 1966.
3. Lucas P., Walk K. On the formal description of PL/I // Annual Review
in Automatic Programming Language. New York: Wiley, 1962. Ch. 2. P. 2.
4. Iverson K. E. A Programming Language. New York: Wiley, 1962. Ch. 2.
5. Falkoff A. D., Iverson K. E., Sussenguth E. H. A formal description
of System/360 // IBM Systems Journal. 1964. Vol. 3, N 3. P. 198-261.
6. Bell C. G., Newell A. Computer Structures. New York: McGraw-Hill,
1970. P. 120- 136, 517-541.
7. Bell C. G. CHastnoe soobshchenie.
Glava 7
1. Parnas D. L. Information distribution aspects of design
methodology. Carnegie- Mellon Univ., Dept. Of Computer Science Technical
Report. 1971. February.
2. Copyright 1939, 1940 Street & Smith Publications; Copyright
1950, 1967 Roberta A. Hajnlajna (Robert A. Heinlein). Publikuetsya po
soglasheniyu s Spectrum Literary Agency.
Glava 8
1. Sackman H., Erikson W. J., Grant E. E. Exploratory experimentation
studies comparing online and offline programming performance // CACM. 1968.
Vol. 11, N 1. Jan. P. 3-11.
2. Nanus B., Farr L. Some cost contributors to large-scale programs //
AFIPS Proc. SJCC. Spring 1964. Vol. 25. P. 239-248.
3. Weinwurm G. F. Research in the management of computer programming //
Report SP-2059, System Development Corp. Santa Monica, 1965.
4. Morin L. H. Estimation of resources for computer programming
projects // M. S. thesis. Chapel Hill: Univ. Of North Carolina, 1974.
5. Portman C. CHastnoe soobshchenie.
6. V neopublikovannom issledovanii 1964 goda, kotoroe provel E. F.
Bardain, pokazano, chto programmisty produktivno ispol'zuyut 27% rabochego
vremeni. (Procitirovano v: Mayer D. B., Stalnaker A. W. Selection and
evaluation of computer personnel // Proc. 23d ACM Conf., 1968. P. 661.)
7. Aron J. CHastnoe soobshchenie.
8. Doklad, sdelannyj na soveshchanii i vklyuchennyj v AFIPS Proceedings.
9. Wolverton R. W. The cost of developing large-scale software // IEEE
Trans. On Computers. 1974. Vol. C-23, N 6. June. P. 615-636. V etoj nedavnej
vazhnoj stat'e soderzhatsya dannye po mnogim voprosam, obsuzhdaemym v etoj
glave, takzhe podtverzhdayushchie vyvody o proizvoditel'nosti truda.
10. Corbato F. J. Sensitive issues in the design of multi-use systems
// Lekciya na otkrytii Tehnologicheskogo centra elektronnoj obrabotki dannyh
kompanii Honeywell, 1968.
11. W. M. Taliaffero takzhe soobshchaet o postoyannoj proivoditel'nosti 2400
operatorov v god na assmblere, Fortran i Cobol. Sm.: Modularity. The key to
system growth potential // Software. 1971. Vol. 1, N 3. July. P. 245-257.
12. V otchete Report TM-3225, Management Handbook for Estimation of
Computer Programming Costs (Nelson E. A. iz System Development Corp.)
govoritsya o roste proizvoditel'nosti 3:1 pri ispol'zovanii yazyka vysokogo
urovnya (str. 66-67), hotya dispersiya vysoka.
Glava 9
1. Brooks F. P., Iverson K. E. Automatic Data Processing, System/360
Edition. New York: Wiley, 1969. Ch. 6.
2. Knuth D. E. The Art of Computer Programming. Vols. 1-3. Reading,
Mass.: Addison-Wesley, 1968. ff.
Glava 10
1. Conway M. E. How do committees invent? // Datamation. 1968. Vol.
14, N 4. Apr. P. 28-31.
Glava 11
1. Rech' v Ogletorpskom universitete 22 maya 1932 goda.
2. Pouchitel'nyj otchet ob opyte ispol'zovaniya MULTICS dlya sozdaniya dvuh
sistem imeetsya v: Corbaty F. J., Saltzer J. H., Clingen C. T. MULTICS - the
first seven years // AFIPS Proc SJCC. 1972. Vol. 40. P. 571-583.
3. Cosgrove J. Needed: a new planning framework // Datamation. 1971.
Vol. 17, N 23. Dec. P. 37-39.
4. Izmenenie proekta - slozhnaya problema, i zdes' ya ee chrezmerno
uproshchayu. Sm.: Saltzer J. H. Evolutionary design of complex systems // Eckman
D. (Ed.). Systems : Research and Design. New York : Wiley, 1961. Vse zhe,
kogda vse skazano i sdelano, ya sovetuyu sozdat' opytnuyu sistemu, kotoruyu
planiruetsya vybrosit'.
5. Campbell E. Report to the AEC Computer Information Meeting. 1970.
Dec. |to yavlenie obsuzhdaetsya takzhe v: Ordin J. L. Designing reliable
software // Datamation. 1972. Vol. 18, N 7. July. P. 71-78. Mneniya moih
opytnyh znakomyh delyatsya primerno na ravnye chasti v otnoshenii togo,
opuskaetsya li krivaya v konce.
6. Lehman M., Belady L. Programming systems dynamics. Predstavleno na
ACM SIGOPS Third Symposium on Operating Systems Principles v oktyabre 1971 g.
7. Lewis C. S. Mere Christianity. New York : Macmillan, 1960. P. 54.
Glava 12
1. Sm. takzhe: Pomeroy J. W. A guide to programming tools and
techniques // IBM Sys. J. 1972. Vol. 11, N 3. P. 234-254. 166
2. Landy B., Needham R. M. Software engineering techniques used in the
development of the Cambridge Multiple-Access System // Software. 1971. Vol.
1, N 2. Apr. P. 167-173.
3. Corbato F. J. PL/I as a tool for system programming // Datamation.
1969. Vol. 15, N 5. May. P. 68-76.
4. Hopkins M. Problems of PL/I for system programming // IBM Research
Report RC 3489. 1971, August 5. Yorktown Heights, N. Y.
5. Corbato F. J., Saltzer J. H., Clingen C. T. MULTICS - the first
seven years // AFIPS Proc SJCC. 1972. Vol. 40. P. 571-582. "Lish' okolo
poludyuzhiny kuskov, napisannyh na PL/I, byli pereprogrammirovany na mashinnom
yazyke, chtoby vyzhat' maksimal'nuyu skorost'. Neskol'ko programm, pervonachal'no
napisannyh na mashinnom yazyke, byli perepisany na PL/I, chtoby oblegchit' ih
soprovozhdenie."
6. Citiruyu stat'yu Korbato (ssylka 3 nastoyashchej glavy): "PL/I uzhe est',
a al'ternativy poka ne provereny". Odnako sovershenno protivopolozhnyj i
obosnovannyj vzglyad predstavlen v Henricksen J. O., Merwin R. E. Programming
language efficiency in real-time software systems // AFIPS Proc SJCC. 1972.
Vol. 40. P. 155-161.
7. Ne vse s etim soglasny. Garlan Millz otmechaet v chastnom soobshchenii:
"Opyt nachinaet podskazyvat' mne, chto v promyshlennom programmirovanii za
terminal nuzhno posadit' sekretarya. Programmirovanie sleduet sdelat' bolee
obshchestvennym zanyatiem pri obshchem rassmotrenii uchastnikov komandy, a ne
chastnym zanyatiem".
8. Yarr J. Programming Experience for the Number 1 Electronic Switching
System. Doklad na SJCC 1969 g.
Glava 13
1. Vyssotsky V. A. Common sense in designing testable software. Lekciya
na simpoziume po metodam otladki komp'yuternyh programm, Chapel Hill, N. C.,
1972. Bol'shaya chast' lekcii soderzhitsya v Hetzel W. C. (Ed.). Program Test
Methods. Englewood Cliffs, N. J. : Prentice-Hall, 1972. P. 41-47.
2. Wirth N. Program development by stepwise refinement // CACM. 1971.
Vol. 14, N 4. Apr. P. 221-227. Sm. takzhe: Mills H. Top-down programming in
large systems // Rustin R. (Ed.). Debugging Techniques in Large Systems.
Englewood Cliffs, N. J. : Prentice-Hall, 1971. P. 41-55; Baker F. T. System
quality through structured programming // AFIPS Proc FJCC. 1972. Vol. 41-I.
P. 339-343.
3. Dahl O. J., Dijkstra E. W., Hoare C. A. R. Structured programming.
London ; New York : Academic Press, 1972. V etoj knige soderzhitsya naibolee
polnoe izlozhenie. Sm. takzhe osnovopolagayushchee pis'mo Dejkstry: GOTO statement
considered harmful // CACM. 1968. Vol. 11, N 3. March. P. 147-148.
4. Bohm C., Jacopini A. Flow diagrams, Turing machines, and languages
with only two formation rules // CACM. 1966. Vol. 9, N 5. May. P. 366-371.
5. Codd E. F., Lowry E. S., McDonough E., Scalzi C. A. Multiprogramming
STRETCH: Feasibility considerations // CACM. 1959. Vol. 2, N 11. Nov. P.
13-17.
6. Strachey C. Time sharing in large fast computers // Proc. Int. Conf.
On Info. Processing. 1959, June. UNESCO. P. 336-341. Sm. takzhe zamechaniya
Kodda na str. 341, gde on soobshchaet o hode raboty, podobnoj predlozhennoj v
stat'e Strejchi.
7. Corbato F. J., Merwin-Daggett M., Daley R. C. An experimental
time-sharing system // AFIPS Proc SJCC. 1962. Vol. 2. P. 335-344.
Perepechatano v: Rosen S. Programming Systems and Languages. New York :
McGraw-Hill, 1967. P. 683- 698.
8. Gold M. M. A methodology for evaluating time-shared computer system
usage. Ph. D. dissertation. Carngie-Mellon University, 1967. P. 100.
9. Gruenberger F. Program testing and validating // Datamation. 1968.
Vol. 14, N 7. July. P. 39-47.
10. Ralston A. Introduction to Programming and Computer Science. New
York : McGraw-Hill, 1971. P. 237-244.
11. Brooks F. P., Iverson K. E. Automatic Data Processing, System/360
Edition. New York : Wiley, 1969, P. 296-299.
12. Problemy razrabotki specifikacij, sozdaniya i testirovaniya sistem
horosho izlozheny Trapnelom F. M. v: Trapnell F. M. A systematic approach to
the development of system programs // AFIPS Proc SJCC. 1969. Vol. 34. P.
411-418.
13. Dlya sistemy real'nogo vremeni potrebuetsya model' okruzheniya. Sm.,
naprimer: Ginzberg M. G. Notes on testing real-time system programs // IBM
Sys. J. 1965. Vol. 4, N 1. P. 58-72.
14. Lehman M., Belady L. Programming systems dynamics. Predstavleno v
oktyabre 1971 g. na ACM SIGOPS Third Symposium on Operating Systems
Priciples.
Glava 14
1. Sm.: Reynolds C. H. Whats wrong with computer programming
management? // Weinwurm G. F. (Ed.). On the Management of Computer
Programming. Philadelphia : Auerbach, 1971. P. 35-42.
2. King W. R., Wilson T. A. Subjective time estimates in critical path
planning - a preliminary analysis // Mgt. Sci. 1967. Vol. 13, N 5. Jan. P.
307-320; King W. R., Witterrongel M., Hezel K. D. On the analysis of
critical path time estimating behavior // Mgt. Sci. 1967. Vol. 14, N 1.
Sept. P. 79-84.
3. Bolee podrobnoe obsuzhdenie sm. Brooks F. P., Iverson K. E. Automatic
Data Processing, System/360 Edition. New York : Wiley, 1969. P. 428-230.
4. CHastnoe soobshchenie.
Glava 15
1. Goldsteine H. H., Neumann J. von. Planning and coding problems for
en electronic computing instrument. Part II. Vol. 1. Otchet, podgotovlennyj
dlya U.S. Army Ordinance Department, 1947. Perepechatano v: Neumann J. von.
Collected Works // Taub A. H. (Ed.). Vol. V. New York : Macmillan. P.
80-151.
2. CHastnoe soobshchenie, 1957. Dokazatel'stvo opublikovano v: Iverson K.
E. The use of APL in Teaching. Yorktown, N.Y. : IBM Corp., 1969.
3. Drugoj spisok priemov dlya PL/I opublikovan v: Walter A. B., Bohl M.
From better to best - tips for good programming // Software Age. 1969. Vol.
3, N 11. Nov. P. 46-50.
|ti zhe priemy mozhno ispol'zovat' v Algol i dazhe Fortran. U D. E. Langa
iz universiteta shtata Kolorado est' napisannaya na Fortran programma
formatirovaniya pod nazvaniem STYLE, s pomoshch'yu kotoroj mozhno poluchit' takoj
rezul'tat. Sm. takzhe: McCracken D. D., Weinberg G. M. How to write a
readable FORTRAN program // Datamation. 1972. Vol. 18, N 10. Oct. P 73-77.
Glava 16
1. Ocherk, ozaglavlennyj "No Silver Bullet", vzyat iz: Information
Processing 1986, the Proceedings of the IFIP Tenth World Computing
Conference pod redakciej H.-J. Kuglera, 1986, str. 1069-1076. Perepechatano s
lyubeznogo razresheniya IFIP i Elsevier Science B. V., Amsterdam, Niderlandy.
2. Parnas D. L. Designing software for ease of extension and
contraction // IEEE Trans on SE. 1979. Vol. 5, N 2. March. P. 128-138.
3. Booch G. Object-oriented design // Software Engineering with Ada.
Menlo Park, Calif. : Benjamin/Cummings, 1983.
4. Special Issue on Artificial Intelligence and Software Engineering //
Mostow J. (Ed.). IEEE Trans. on SE. 1985. Vol. 11, N 11. Nov.
5. Parnas D. L. Software aspects of strategic defense systems //
Communications of the ACM. 1985. Vol. 28, N 12. Dec. P. 1326-1335. Sm.
takzhe: American Scientist. 1985. Vol. 73, N 5. Sept.-Oct. P. 432-440.
6. Balzer R. A 15-year perspective on automatic programming v Mostow,
cit. soch.
7. Mostow, sm. primechanie 4.
8. Parnas, 1985, sm. primechanie 5.
9. Raeder G. A survey of current graphical programming techniques //
Grafton R. B., Ichikawa T. (Eds.). Special Issue on Visual Programming //
Computer. 1985. Vol. 18, N 8. Aug. P. 11-25.
10. Tema obsuzhdaetsya v glave 15 nastoyashchej knigi.
11. Mills H. Top-down programming in large systems // Rustin R. (Ed.).
Debugging Techniques in Large Systems. Englewood Cliffs, N. J. :
Prentice-Hall, 1971.
12. Boehm B. W. A spiral model of software development and enhancement
// Computer. 1985. Vol. 20, N 5. May, P. 43-57.
Glava 17
Material, citiruemyj bez ssylki, vzyat iz chastnyh soobshchenij.
1. Brooks F. P. No silver bullet - essence and accidents of software
engineering // Kugler H. J. (Ed.). Information Processing 86. Amsterdam :
Elsevier Science, North Holland, 1986. P. 1069-1076.
2. Brooks F. P. No silver bullet - essence and accidents of software
engineering // Computer. 1987. Vol. 20, N 4. Apr. P. 10-19.
3. Neskol'ko pisem v otvet poyavilis' v iyul'skom 1987 goda vypuske
"Computer".
Osobenno priyatno zametit', chto v to vremya kak "SPN" ne poluchila nagrad,
Bryus M. Skvirski (Bruce M. Skwiersky) poluchil nagradu za luchshij obzor,
opublikovannyj v "Computer Reviews" v 1988 godu. V redakcionnoj stat'e E. A.
Vajsa v "Computer Reviews" (iyun', 1988) na s. 283-284 ob®yavlyaetsya o nagrade
i perepechatyvaetsya obzor Skvirski. V obzore est' sushchestvennaya oshibka: vmesto
"shestikratno" dolzhno byt' "106".
4. "Po Aristotelyu i filosofii sholastikov, akcidenciya est' kachestvo,
kotoroe prinadlezhit veshchi ne blagodarya ee vazhnoj ili sushchestvennoj prirode, a
voznikaet v nej v rezul'tate dejstviya inyh prichin". Websters New
International Dictionary of the English Language, 2d ed., Springfield, Mass.
: G. C. Merriam, 1960.
5. Sayers D. L. The Mind of the Market. New York : Harcourt, Brace,
1941.
6. Glass R. L., Conger S. A. Research software talks : Intellectual or
clerical? // Information or Management. 1992. Vol. 23, N 4. Avtory soobshchayut,
chto razrabotka tehnicheskih trebovanij k programmnomu obespecheniyu na 80%
intellektual'naya i na 20% - kancelyarskaya rabota. Fjelstadt i Hamlen (1979)
poluchili fakticheski takie zhe rezul'taty dlya podderzhki prikladnyh programm.
Mne neizvestny popytki izmenit' etu dolyu dlya vsej zadachi ot nachala do konca.
7. Herzberg F., Mausner B., Sayderman B. B. The Motivation to Work. 2nd
ed. London : Wiley, 1959.
8. Cox B. J. There is a silver bullet // Byte. 1990. Oct. P. 209-218.
169
9. Harel D. Biting the silver bullet : Toward a brighter future for
system development // Computer. 1992. Jan. P. 8-20.
10. Parnas D. L. Software aspects of strategic defense systems //
Communication of the ACM. 1985. Vol. 28, N 12. Dec. P. 1326-1335.
11. Turski W. M. And no philosophers stone, either // Kugler H. J.
(Ed.). Information Processing 86. Amsterdam : Elsevier Science, North
Holland, 1986. P. 1077-1080.
12. Glass R. L., Conger S. A. Research software tasks : Intellectual or
clerical? // Information and Management, 1992. Vol. 23, N 4. P. 183-192.
13. Review of Electronic Digital Computers, Proceedings of a Joint
AIEEIRE Computer Conference (Philadelphia, Dec. 10-12, 1951). New York :
American Institute of Electrical Engineers. P. 13-20.
14. Ibid. Pp. 36, 68, 71, 97.
15. Proceedings of the Eastern Joint Computer Conference (Washington,
Dec. 8-10, 1953). New York : Institute of Electrical Engineers. P. 45-47.
16. Proceedings of the 1955 Western Joint Computer Conference (Los
Angeles, March 1-3, 1955). New York : Institute of Electrical Engineers.
17. Everett R. R., Zraket C. A., Bennington H. D. SAGE - a data
processing system for air defense // Proceedings of the Eastern Joint
Computer Conference (Washington, Dec. 11-13, 1957). New York : Institute of
Electrical Engineers.
18. Harel D., Lachover H., Haamad A., Pnueli A., Politi M., Sherman R.,
Shtul-Traurig A. Statemate: A working environment for the development of
complex reactive systems // IEEE Trans. on SE. 1990. Vol. 16, N 4. P.
403-444.
19. Jones C. Assessment and Control of Software Risks. Engltwood
Cliffs, N. J. : Prentice-Hall, 1994. P. 619.
20. Coqui H. Corporate survival : The software dimension. Focus 89,
Cannes, 1989.
21. Coggins J. M. Designing C++ libraries // C++ Journal. 1990. Vol. 1,
N 1. June. P. 25-32.
22. V budushchem vremeni. Mne neizvestny kakie-libo soobshcheniya o
rezul'tatah pyatogo ispol'zovaniya.
23. Jones, sm. primech. 19. P. 604.
24. Huang Weigiao. Industrializing software production // Proceedings
ACM 1988 Computer Science Conference. 1988. Atlanta. Boyus', chto pri takoj
organizacii budet nedostatochnyj lichnyj professional'nyj rost.
25. Ves' sentyabr'skij 1994 goda nomer IEEE Software posvyashchen povtornomu
ispol'zovaniyu.
26. Jones, sm. primech. 19. P. 323.
27. Jones, sm. primech. 19. P. 329.
28. Yourdon E. Decline and Fall of the American Programmer. Englewood
Cliffs, N. J. : Yourdon Press, 1992. P. 221.
29. Glass R. L. Glass (kolonka) // System Development. 1988. Jan. P.
4-5.
Glava 18
1. Boehm B. W. Software Engineering Economics. Englewood Cliffs, N. J.
: Prentice- Hall, 1981. P. 81-84.
2. McCarthy J. 21 Rules for Delivering Great Software on Time //
Software World USA Conference, Washington (Sept. 1994).
Glava 19
Material, citiruemyj bez ssylki, vzyat iz chastnyh soobshchenij.
1. Po etoj boleznennoj teme sm. takzhe: Niklaus Wirth. A plea for lean
software // Computer. 1995. Vol. 28, N 2. Feb. P. 64-68.
2. Coleman D. Word 6.0 packs in features; update slowed by baggage //
MacWeek. 1994. Vol. 8, N 38. Sept. 26. P. 1.
3. Opublikovano mnogo obzorov chastotnyh harakteristik komand mashinnogo
yazyka i yazyka programmirovaniya, sdelannyh posle vypuska. Sm., naprimer:
Hennessy J., Patterson D. Computer Architecture. |ti chastotnye dannye ochen'
polezny dlya sozdaniya posleduyushchih produktov, hotya nikogda v tochnosti ne
primenimy. Mne neizvestny publikacii ocenok, poluchennyh do razrabotki
produkta, a tem bolee - sravnenij apriornyh dannyh s aposteriornymi. Ken
Bruks polagaet, chto doski ob®yavlenij v Internete predostavlyayut teper'
deshevyj sposob zaprosit' dannye u predpolagaemyh pol'zovatelej novogo
produkta, dazhe nesmotrya na to chto otvechayut tol'ko zhelayushchie.
4. Conklin J., Begeman M. gIBIS : A hypertext Tool for Exploratory
Policy Descussion // ACM Transactions on Office Information Systems. 1988.
Oct. P. 303-331.
5. Englebart D., English W. A research center for augmenting human
intellect // AFIPS Conference Proceedings, Fall Joint Computer Conference.
San Francisco (Dec. 9-11, 1968). P. 395-410.
6. Apple Computer, Inc. Macintosh Human Interface Guidelines. Reading,
Mass. : Addison-Wesley, 1992.
7. Kazhetsya, shina Apple Desk Top Bus mogla by apparatno podderzhivat' dve
myshi, no operacionnaya sistema takoj vozmozhnosti ne predostavlyaet.
8. Royce W. W. Managing the development of large software systems:
Concepts and techniques // Proceedings, WESCON (Aug., 1970). Perepechatano v
ICSE 9 Proceedings. Ni Rojs, ni drugie ne schitali, chto mozhno zavershit'
process razrabotki, ne peresmatrivaya nachal'nyh dokumentov. Model' byla
predlozhena v kachestve ideal'noj. Sm.: Parnas D. L., Clements P. C. A
rational design process : How and why to fake it // IEEE Transactions on
Software Engineering. 1986. Vol. SE-12, N 2. Feb. P. 251-257.
9. V rezul'tate znachitel'noj pererabotki DOD-STD-2167 poyavilsya DOD-STD-
2167A (1988), kotoryj dopuskaet novye modeli, naprimer spiral'nuyu, no ne
obyazyvaet bolee k ih primeneniyu. K sozhaleniyu, MILSPECS, na kotoryj ssylaetsya
2167A, i privedennye v kachestve illyustracii primery po- prezhnemu, kak
soobshchaet Bem, ispol'zuyut kaskadnuyu shemu. Special'naya gruppa nauchnogo soveta
po oborone pod rukovodstvom Larri Druffela i Dzhordzha Hejlmejera v otchete
1994 goda "Report of the DSB task force on acquiring defense software
commercially" rekomendovala povsemestnoe ispol'zovanie novyh modelej.
10. Mills H. Top-down programming in large systems // Rustin R. (Ed.).
Debugging Techniques in Large Systems. Englewood Cliffs, N. J. :
Prentice-Hall, 1971.
11. Parnas D. L. On the design and development of program families //
IEEE Trans. on Software Engineering. 1976. Vol. SE-2, N 1. March, P. 1-9;
Parnas D. L. Designing software for ease of extension and construction //
IEEE Trans. on Software Engineering. 1979. Vol. SE-5, N 2. March. P.
128-138.
12. Harel D. Biting the silver bullet // Computer. 1992. Jan. P. 8-20.
13. Sleduyushchie stat'i yavlyayutsya osnovopolagayushchimi v voprose skrytiya
dannyh: Parnas D. L. Information distribution aspects of design methodology
// Carnegie- Mellon Univ., Dept. Of Computer Science Technical Report. 1971.
Feb.; Parnas D. L. A technique for software module specification with
examples // Comm. ACM. 1972. Vol. 5, N 5. May. P. 330-336; Parnas D. L.
(1972). On the criteria to be used in decomprosing systems into modules //
Comm. ACM. 1972. Vol. 5, N 12. Dec. P. 1053-1058.
14. Ideyu ob®ektov pervonachal'no nabrosali Hoare i Dijkstra, no pervoe i
naibolee vazhnoe razvitie oni poluchili v yazyke Simula-67, kotoryj razrabotali
Dahl i Nygaard.
15. Boehm B. W. Software Engineering Economics. Englewood Cliffs, N. J.
: Prentice- Hall, 1981. P. 83-94; 470-472.
16. Abdel-Hamid T., Madnick S. Software Project Dynamics : An
Integrated Approach. Ch. 19 // Model enhancement and Brookss law. Englewood
Cliffs, N. J. : Prentice- Hall, 1991.
17. Stutzke R. D. A mathematical expression of Brookss Law // Ninth
International Forum on COCOMO and Cost Modeling. Los Angeles, 1994.
18. DeMarco T., Lister T. Peopleware : Productive Projects and Teams.
New York : Dorset House, 1987.
19. Pius XI. Encyclical Quadragesimo Anno // Ihm, Claudia Carlen.
(Ed.). The Papal Encyclicals 1903-1939. Raleigh, N. C. : McGrath. P. 428.
20. Schumacher E. F. Small Is Beautiful : Economics as if People
Mattered. Perennian Library Edition. New York : Harper and Row, 1973. P.
244.
21. Schumacher, sm. primech. 20. P. 34.
22. Navodyashchij na mysli nastennyj plakat glasit: "Svoboda pechati
prinadlezhit tomu, u kogo on [komp'yuter] est'". 23. Bush V. That we may think
// Atlantic Monthly. 1945. Vol. 176, N 1. Apr. P. 101- 108.
24. Ken Tompson iz Bell Labs, sozdatel' Unix, davno ponyal znachenie
bol'shogo ekrana dlya programmista. On pridumal, kak na svoyu primitivnuyu
elektronnuyu trubku Tektronix vyvodit' 120 strochek teksta v dve kolonki. On
de