Примечания и ссылки

Глава 1

1.1. А. П. Ершов полагает, что это не только печаль, но отчасти и радость. A. P. Ershov. Aesthetics and the human factor in programming // CACM. 1972. Vol. 15, N 7. July. P. 501-505

Глава 2

2.1. В. А. Высоцкий из Bell Telephone Laboratories считает, что большой проект может выдержать до 30% прироста числа сотрудников в год. При большем увеличении затрудняется и даже подавляется развитие важной неформальной структуры и ее коммуникационных связей, о чем говорится в главе 7. Ф. Дж. Корбато из МТИ отмечает, что в длительном проекте следует ожидать ежегодной смены 20% сотрудников, и новые работники должны как получить техническую подготовку, так и влиться в формальную структуру.

2.2. Ч. Портман из International Computers Limited говорит: «Если все работает и объединено в систему, значит, осталось работы на четыре месяца». Некоторые другие способы распределения графика приведены в статье: Wolverton R. W. The cost of developing large-scale software // IEEE Trans. on Computers. 1974. Vol. C-23, N 6. June. P. 615-636.

2.3. Рисунками 2.5-2.8 я обязан Джерри Огдину, который, цитируя мой пример из более ранней публикации этой главы, значительно улучшил иллюстрации. Ogdin, J. L. The Mongolian hordes versus superprogrammer // Infosystems. 1972. Dec. P. 20-23.

Глава 3

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.

3.2. Mills H. Chief programmer team, principles, and procedures // IBM Federal Systems Division Report FSC 71-5108. Gaithersburg, Md., 1971.

3.3. Baker F. T. Chief programmer team management of production programming // IBM Sys. J. 1972. Vol. 11, N 1.

Глава 4

4.1. Eschapasse M. Reims Cathedral, Caisse Nationale des Monuments Histiriques. Paris, 1967.

4.2. Brooks F. P. Architectural Philosophy // Buchholz W. (Ed.). Planning a Computer System. New York: McGraw-Hill, 1962.

4.3. Blaauw G. A. Hardware requirements for the fourth generation // Gruenberger F. (ed.). Fourth Generation Computers. Englewood Cliffs, N. J.: Prentice-Hall, 1970.

4.4. Brooks F. P., Iverson K. E. Automatic Data Processing, System/360 Edition. New York: Wiley, 1969. Ch. 5.

4.5. Glegg G. L. The Design of Design. Cambridge : Cambridge Univ. Press, 1969: «На первый взгляд кажется, что мысль о том, чтобы наложить на творческий ум какие-то правила или принципы, скорее помешает ему, чем окажет помощь, но на практике это совершенно неверно. Дисциплинированное мышление скорее концентрирует вдохновение, чем подавляет его».

4.6. Conway R. W. The PL/C Compiler // Proceedings of a Conf. on Definition and Implementation of Universal Programming Languages. Stuttgard, 1970.

4.7. Хорошее обсуждение необходимости программных технологий см.: Reynolds C. H. What’s wrong with computer programming management? // Weinwurm G. F. (Ed.). On the Management of Computer Programming. Philadelphia : Auerbach, 1971. P. 35-42.

Глава 5

5.1. Strachey C. Review of Planning a Computer System // Comp. J. 1962. Vol. 5, N 2. July. P. 152-153.

5.2. Это относится только к управляющим программам. Некоторые бригады, разрабатывающие компиляторы для проекта OS/360, создавали уже свой третий или четвертый продукт, и отличное качество их продуктов это подтверждает.

5.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. Все статьи // JACM. 1959. Vol. 6, N 2. Apr. P. 123-140.

Глава 6

6.1. Neustadt R. E. Presidential Power. New York: Wiley, 1960. Ch. 2.

6.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. Кроме того, целая подборка статей на эту тему содержится в: Steel T. B., Jr. (Ed.). Formal Language Description Languages for Computer Programming. Amsterdam: North Holland, 1966.

6.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.

6.4. Iverson K. E. A Programming Language. New York: Wiley, 1962. Ch. 2.

6.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.6. Bell C. G., Newell A. Computer Structures. New York: McGraw-Hill, 1970. P. 120-136, 517-541.

6.7. Bell C. G. Частное сообщение.

Глава 7

7.1. Parnas D. L. Information distribution aspects of design methodology. Carnegie-Mellon Univ., Dept. Of Computer Science Technical Report. 1971. February.

7.2. Copyright 1939, 1940 Street & Smith Publications; Copyright 1950, 1967 Роберта А. Хайнлайна (Robert A. Heinlein). Публикуется по соглашению с Spectrum Literary Agency.

Глава 8

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.

8.2. Nanus B., Farr L. Some cost contributors to large-scale programs // AFIPS Proc. SJCC. Spring 1964. Vol. 25. P. 239-248.

8.3. Weinwurm G. F. Research in the management of computer programming // Report SP-2059, System Development Corp. Santa Monica, 1965.

8.4. Morin L. H. Estimation of resources for computer programming projects // M. S. thesis. Chapel Hill: Univ. Of North Carolina, 1974.

8.5. Portman C. Частное сообщение.

8.6. В неопубликованном исследовании 1964 года, которое провел E. F. Bardain, показано, что программисты продуктивно используют 27% рабочего времени. (Процитировано в: Mayer D. B., Stalnaker A. W. Selection and evaluation of computer personnel // Proc. 23d ACM Conf., 1968. P. 661.)

8.7. Aron J. Частное сообщение.

8.8. Доклад, сделанный на совещании и включенный в AFIPS Proceedings.

8.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. В этой недавней важной статье содержатся данные по многим вопросам, обсуждаемым в этой главе, также подтверждающие выводы о производительности труда.

8.10. Corbato F. J. Sensitive issues in the design of multi-use systems // Лекция на открытии Технологического центра электронной обработки данных компании Honeywell, 1968.

8.11. W. M. Taliaffero также сообщает о постоянной проиводительности 2400 операторов в год на ассмблере, Fortran и Cobol. См.: Modularity. The key to system growth potential // Software. 1971. Vol. 1, N 3. July. P. 245-257.

8.12. В отчете Report TM-3225, Management Handbook for Estimation of Computer Programming Costs (Nelson E. A. из System Development Corp.) говорится о росте производительности 3:1 при использовании языка высокого уровня (стр. 66-67), хотя дисперсия высока.

Глава 9

9.1. Brooks F. P., Iverson K. E. Automatic Data Processing, System/360 Edition. New York: Wiley, 1969. Ch. 6.

9.2. Knuth D. E. The Art of Computer Programming. Vols. 1-3. Reading, Mass.: Addison-Wesley, 1968. ff.

Глава 10

10.1. Conway M. E. How do committees invent? // Datamation. 1968. Vol. 14, N 4. Apr. P. 28-31.

Глава 11

11.1. Речь в Оглеторпском университете 22 мая 1932 года.

11.2. Поучительный отчет об опыте использования MULTICS для создания двух систем имеется в: Corbaty F. J., Saltzer J. H., Clingen C. T. MULTICS — the first seven years // AFIPS Proc SJCC. 1972. Vol. 40. P. 571-583.

11.3. Cosgrove J. Needed: a new planning framework // Datamation. 1971. Vol. 17, N 23. Dec. P. 37-39.

11.4. Изменение проекта — сложная проблема, и здесь я ее чрезмерно упрощаю. См.: Saltzer J. H. Evolutionary design of complex systems // Eckman D. (Ed.). Systems : Research and Design. New York : Wiley, 1961. Все же, когда все сказано и сделано, я советую создать опытную систему, которую планируется выбросить.

11.5. Campbell E. Report to the AEC Computer Information Meeting. 1970. Dec. Это явление обсуждается также в: Ordin J. L. Designing reliable software // Datamation. 1972. Vol. 18, N 7. July. P. 71-78. Мнения моих опытных знакомых делятся примерно на равные части в отношении того, опускается ли кривая в конце.

11.6. Lehman M., Belady L. Programming systems dynamics. Представлено на ACM SIGOPS Third Symposium on Operating Systems Principles в октябре 1971 г.

11.7. Lewis C. S. Mere Christianity. New York : Macmillan, 1960. P. 54.

Глава 12

12.1. См. также: Pomeroy J. W. A guide to programming tools and techniques // IBM Sys. J. 1972. Vol. 11, N 3. P. 234-254.

12.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.

12.3. Corbato F. J. PL/I as a tool for system programming // Datamation. 1969. Vol. 15, N 5. May. P. 68-76.

12.4. Hopkins M. Problems of PL/I for system programming // IBM Research Report RC 3489. 1971, August 5. Yorktown Heights, N. Y.

12.5. Corbato F. J., Saltzer J. H., Clingen C. T. MULTICS – the first seven years // AFIPS Proc SJCC. 1972. Vol. 40. P. 571-582. «Лишь около полудюжины кусков, написанных на PL/I, были перепрограммированы на машинном языке, чтобы выжать максимальную скорость. Несколько программ, первоначально написанных на машинном языке, были переписаны на PL/I, чтобы облегчить их сопровождение.»

12.6. Цитирую статью Корбато (ссылка 3 настоящей главы): «PL/I уже есть, а альтернативы пока не проверены». Однако совершенно противоположный и обоснованный взгляд представлен в Henricksen J. O., Merwin R. E. Programming language efficiency in real-time software systems // AFIPS Proc SJCC. 1972. Vol. 40. P. 155-161.

12.7. Не все с этим согласны. Гарлан Миллз отмечает в частном сообщении: «Опыт начинает подсказывать мне, что в промышленном программировании за терминал нужно посадить секретаря. Программирование следует сделать более общественным занятием при общем рассмотрении участников команды, а не частным занятием».

12.8. Yarr J. Programming Experience for the Number 1 Electronic Switching System. Доклад на SJCC 1969 г.

Глава 13

13.1. Vyssotsky V. A. Common sense in designing testable software. Лекция на симпозиуме по методам отладки компьютерных программ, Chapel Hill, N. C., 1972. Большая часть лекции содержится в Hetzel W. C. (Ed.). Program Test Methods. Englewood Cliffs, N. J. : Prentice-Hall, 1972. P. 41-47.

13.2. Wirth N. Program development by stepwise refinement // CACM. 1971. Vol. 14, N 4. Apr. P. 221-227. См. также: 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.

13.3. Dahl O. J., Dijkstra E. W., Hoare C. A. R. Structured programming. London ; New York : Academic Press, 1972. В этой книге содержится наиболее полное изложение. См. также основополагающее письмо Дейкстры: GOTO statement considered harmful // CACM. 1968. Vol. 11, N 3. March. P. 147-148.

13.4. Bцhm C., Jacopini A. Flow diagrams, Turing machines, and languages with only two formation rules // CACM. 1966. Vol. 9, N 5. May. P. 366-371.

13.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.

13.6. Strachey C. Time sharing in large fast computers // Proc. Int. Conf. On Info. Processing. 1959, June. UNESCO. P. 336-341. См. также замечания Кодда на стр. 341, где он сообщает о ходе работы, подобной предложенной в статье Стрейчи.

13.7. Corbato F. J., Merwin-Daggett M., Daley R. C. An experimental time-sharing system // AFIPS Proc SJCC. 1962. Vol. 2. P. 335-344. Перепечатано в: Rosen S. Programming Systems and Languages. New York : McGraw-Hill, 1967. P. 683-698.

13.8. Gold M. M. A methodology for evaluating time-shared computer system usage. Ph. D. dissertation. Carngie-Mellon University, 1967. P. 100.

13.9. Gruenberger F. Program testing and validating // Datamation. 1968. Vol. 14, N 7. July. P. 39-47.

13.10. Ralston A. Introduction to Programming and Computer Science. New York : McGraw-Hill, 1971. P. 237-244.

13.11. Brooks F. P., Iverson K. E. Automatic Data Processing, System/360 Edition. New York : Wiley, 1969, P. 296-299.

13.12. Проблемы разработки спецификаций, создания и тестирования систем хорошо изложены Трапнелом Ф. М. в: Trapnell F. M. A systematic approach to the development of system programs // AFIPS Proc SJCC. 1969. Vol. 34. P. 411-418.

13.13. Для системы реального времени потребуется модель окружения. См., например: Ginzberg M. G. Notes on testing real-time system programs // IBM Sys. J. 1965. Vol. 4, N 1. P. 58-72.

13.14. Lehman M., Belady L. Programming systems dynamics. Представлено в октябре 1971 г. на ACM SIGOPS Third Symposium on Operating Systems Priciples.

Глава 14

14.1. См.: Reynolds C. H. What’s wrong with computer programming management? // Weinwurm G. F. (Ed.). On the Management of Computer Programming. Philadelphia : Auerbach, 1971. P. 35-42.

14.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.

14.3. Более подробное обсуждение см. Brooks F. P., Iverson K. E. Automatic Data Processing, System/360 Edition. New York : Wiley, 1969. P. 428-230.

14.4. Частное сообщение.

Глава 15

15.1. Goldsteine H. H., Neumann J. von. Planning and coding problems for en electronic computing instrument. Part II. Vol. 1. Отчет, подготовленный для U.S. Army Ordinance Department, 1947. Перепечатано в: Neumann J. von. Collected Works // Taub A. H. (Ed.). Vol. V. New York : Macmillan. P. 80-151.

15.2. Частное сообщение, 1957. Доказательство опубликовано в: Iverson K. E. The use of APL in Teaching. Yorktown, N.Y. : IBM Corp., 1969.

15.3. Другой список приемов для PL/I опубликован в: Walter A. B., Bohl M. From better to best — tips for good programming // Software Age. 1969. Vol. 3, N 11. Nov. P. 46-50. Эти же приемы можно использовать в Algol и даже Fortran. У Д. Е. Ланга из университета штата Колорадо есть написанная на Fortran программа форматирования под названием STYLE, с помощью которой можно получить такой результат. См. также: McCracken D. D., Weinberg G. M. How to write a readable FORTRAN program // Datamation. 1972. Vol. 18, N 10. Oct. P 73-77.

Глава 16

16.1. Очерк, озаглавленный «No Silver Bullet», взят из: Information Processing 1986, the Proceedings of the IFIP Tenth World Computing Conference под редакцией Х.-Й. Куглера, 1986, стр. 1069-1076. Перепечатано с любезного разрешения IFIP и Elsevier Science B. V., Амстердам, Нидерланды.

16.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.

16.3. Booch G. Object-oriented design // Software Engineering with Ada. Menlo Park, Calif. : Benjamin/Cummings, 1983.

16.4. Special Issue on Artificial Intelligence and Software Engineering // Mostow J. (Ed.). IEEE Trans. on SE. 1985. Vol. 11, N 11. Nov.

16.5. Parnas D. L. Software aspects of strategic defense systems // Communications of the ACM. 1985. Vol. 28, N 12. Dec. P. 1326-1335. См. также: American Scientist. 1985. Vol. 73, N 5. Sept.-Oct. P. 432-440.

16.6. Balzer R. A 15-year perspective on automatic programming в Mostow, цит. соч.

16.7. Mostow, см. примечание 4.

16.8. Parnas, 1985, см. примечание 5.

16.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.

16.10. Тема обсуждается в главе 15 настоящей книги.

16.11. Mills H. Top-down programming in large systems // Rustin R. (Ed.). Debugging Techniques in Large Systems. Englewood Cliffs, N. J. : Prentice-Hall, 1971.

16.12. Boehm B. W. A spiral model of software development and enhancement // Computer. 1985. Vol. 20, N 5. May, P. 43-57.

Материал, цитируемый без ссылки, взят из частных сообщений.

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. Несколько писем в ответ появились в июльском 1987 года выпуске «Computer». Особенно приятно заметить, что в то время как «СПН» не получила наград, Брюс М. Сквирски (Bruce M. Skwiersky) получил награду за лучший обзор, опубликованный в «Computer Reviews» в 1988 году. В редакционной статье Е. А. Вайса в «Computer Reviews» (июнь, 1988) на с. 283-284 объявляется о награде и перепечатывается обзор Сквирски. В обзоре есть существенная ошибка: вместо «шестикратно» должно быть «10[6].

4. «По Аристотелю и философии схоластиков, акциденция есть качество, которое принадлежит вещи не благодаря ее важной или существенной природе, а возникает в ней в результате действия иных причин». Webster’s 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. Авторы сообщают, что разработка технических требований к программному обеспечению на 80% интеллектуальная и на 20% — канцелярская работа. Fjelstadt и Hamlen (1979) получили фактически такие же результаты для поддержки прикладных программ. Мне неизвестны попытки изменить эту долю для всей задачи от начала до конца.

7. Herzberg F., Mausner B., Sayderman B. B. The Motivation to Work. 2nded. London : Wiley, 1959.

8. Cox B. J. There is a silver bullet // Byte. 1990. Oct. P. 209-218.

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. В будущем времени. Мне неизвестны какие-либо сообщения о результатах пятого использования.

23. Jones, см. примеч. 19. P. 604.

24. Huang Weigiao. Industrializing software production // Proceedings ACM 1988 Computer Science Conference. 1988. Atlanta. Боюсь, что при такой организации будет недостаточный личный профессиональный рост.

25. Весь сентябрьский 1994 года номер IEEE Software посвящен повторному использованию.

26. Jones, см. примеч. 19. P. 323.

27. Jones, см. примеч. 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 (колонка) // System Development. 1988. Jan. P. 4-5.

Глава 18

18.1. Boehm B. W. Software Engineering Economics. Englewood Cliffs, N. J. : Prentice-Hall, 1981. P. 81-84.

18.2. McCarthy J. 21 Rules for Delivering Great Software on Time // Software World USA Conference, Washington (Sept. 1994).

Глава 19

Материал, цитируемый без ссылки, взят из частных сообщений.

19.1. По этой болезненной теме см. также: Niklaus Wirth. A plea for lean software // Computer. 1995. Vol. 28, N 2. Feb. P. 64-68.

19.2. Coleman D. Word 6.0 packs in features; update slowed by baggage // MacWeek. 1994. Vol. 8, N 38. Sept. 26. P. 1.

19.3. Опубликовано много обзоров частотных характеристик команд машинного языка и языка программирования, сделанных после выпуска. См., например: Hennessy J., Patterson D. Computer Architecture. Эти частотные данные очень полезны для создания последующих продуктов, хотя никогда в точности не применимы. Мне неизвестны публикации оценок, полученных до разработки продукта, а тем более — сравнений априорных данных с апостериорными. Кен Брукс полагает, что доски объявлений в Интернете предоставляют теперь дешевый способ запросить данные у предполагаемых пользователей нового продукта, даже несмотря на то что отвечают только желающие.

19.4. Conklin J., Begeman M. gIBIS : A hypertext Tool for Exploratory Policy Descussion // ACM Transactions on Office Information Systems. 1988. Oct. P. 303-331.

19.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.

19.6. Apple Computer, Inc. Macintosh Human Interface Guidelines. Reading, Mass. : Addison-Wesley, 1992.

19.7. Кажется, шина Apple Desk Top Bus могла бы аппаратно поддерживать две мыши, но операционная система такой возможности не предоставляет.

19.8. Royce W. W. Managing the development of large software systems: Concepts and techniques // Proceedings, WESCON (Aug., 1970). Перепечатано в ICSE 9 Proceedings. Ни Ройс, ни другие не считали, что можно завершить процесс разработки, не пересматривая начальных документов. Модель была предложена в качестве идеальной. См.: 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.

19.9. В результате значительной переработки DOD-STD-2167 появился DOD-STD-2167A (1988), который допускает новые модели, например спиральную, но не обязывает более к их применению. К сожалению, MILSPECS, на который ссылается 2167A, и приведенные в качестве иллюстрации примеры по-прежнему, как сообщает Бём, используют каскадную схему. Специальная группа научного совета по обороне под руководством Ларри Друффела и Джорджа Хейлмейера в отчете 1994 года «Report of the DSB task force on acquiring defense software commercially» рекомендовала повсеместное использование новых моделей.

19.10. Mills H. Top-down programming in large systems // Rustin R. (Ed.). Debugging Techniques in Large Systems. Englewood Cliffs, N. J. : Prentice-Hall, 1971.

19.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.

19.12. Harel D. Biting the silver bullet // Computer. 1992. Jan. P. 8-20.

19.13. Следующие статьи являются основополагающими в вопросе скрытия данных: 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.

19.14. Идею объектов первоначально набросали Hoare и Dijkstra, но первое и наиболее важное развитие они получили в языке Simula-67, который разработали Dahl и Nygaard.

19.15. Boehm B. W. Software Engineering Economics. Englewood Cliffs, N. J. : Prentice-Hall, 1981. P. 83-94; 470-472.

19.16. Abdel-Hamid T., Madnick S. Software Project Dynamics : An Integrated Approach. Ch. 19 // Model enhancement and Brooks’s law. Englewood Cliffs, N. J. : Prentice-Hall, 1991.

19.17. Stutzke R. D. A mathematical expression of Brooks’s Law // Ninth International Forum on COCOMO and Cost Modeling. Los Angeles, 1994.

19.18. DeMarco T., Lister T. Peopleware : Productive Projects and Teams. New York : Dorset House, 1987.

19.19. Pius XI. Encyclical Quadragesimo Anno // Ihm, Claudia Carlen. (Ed.). The Papal Encyclicals 1903-1939. Raleigh, N. C. : McGrath. P. 428.

19.20. Schumacher E. F. Small Is Beautiful : Economics as if People Mattered. Perennian Library Edition. New York : Harper and Row, 1973. P. 244.

19.21. Schumacher, см. примеч. 20. P. 34.

19.22. Наводящий на мысли настенный плакат гласит: «Свобода печати принадлежит тому, у кого он есть». (Компьютер)

19.23. Bush V. That we may think // Atlantic Monthly. 1945. Vol. 176, N 1. Apr. P. 101-108.

19.24. Кен Томпсон из Bell Labs, создатель Unix, давно понял значение большого экрана для программиста. Он придумал, как на свою примитивную электронную трубку Tektronix выводить 120 строчек текста в две колонки. Он держался за свой терминал, пока сменилось целое поколение быстрых трубок с маленьким экраном.





 

Главная | В избранное | Наш E-MAIL | Добавить материал | Нашёл ошибку | Наверх