Эндрю Хант - Программист-прагматик. Путь от подмастерья к мастеру
21
В книге используется английская аббревиатура SCCS (заглавные буквы), которая обозначает системы управления исходным текстом вообще. Помимо этого, существует также особая система управления, обозначаемая sees (строчные буквы), изначально выпущенная фирмой AT&T вместе с Unix System V.
22
Почему "резиновый утенок"? Один из авторов книги, Дэйв Хант, учился в лондонском Империал колледже и много работал совместно с аспирантом, которого звали Грег Паг и которого Д. Хант считает одним из лучших известных ему разработчиков. На протяжении нескольких месяцев Грег носил при себе крохотного желтого резинового утенка, которого он ставил на край монитора во время работы. Прошло некоторое время, пока Дэйв не отважился спросить…
23
В оригинале router обозначает не маршрутизатор ЛВС, а фрезерный станок.
24
Как насчет создания текста из схемы БД? Существует несколько способов. Если схема содержится в плоском файле (например, операторы create statements), тс синтаксический анализ и генерацию исходного текста можно провести при помощи относительно несложного сценария. В качестве альтернативного способа предлагается следующий: при использовании инструментального средства для создания схемы непосредственно в самой БД необходимо иметь возможность извлечения нужной информации непосредственно из словаря БД. В языке Perl имеются библиотеки, обеспечивающие доступ к большинству основных БД.
25
Концепция частично основана на ранней работе Дейкстры, Флойда, Хоара, Вирта и др. Более подробная информация о самом языке Eiffel содержится в сети Интернет, см. [URL 10] и [URL 11].
26
В языках программирования, имеющих своей основой язык С, можно использовать препроцессор или конструкцию с условными операторами с тем, чтобы указанные утверждения не носили обязательного характера. Во многих разработках происходит отключение генерации текста программы для макроса assert при установленном (или сброшенном) флажке этапа компиляции. Можно также поместить текст программы в пределах условного оператора if с постоянным условием, которое многие компиляторы (включая наиболее распространенные Java-системы) отбросят в ходе оптимизации.)
27
Опасности, возникающие из-за связанности в программе, обсуждаются в разделе "Несвязанность и закон Деметера".
28
Если n объектов знают друг о друге вес, то при изменении одного-единственного объекта возникает потребность в изменении оставшихся n – 1 объектов.
29
На мирных (читай – глупых) птиц не действовало даже то, что поселенцы забивали их до смерти спортивными битами.
30
В книге не рассматриваются подробности параллельного программирования; в хорошем учебнике по информатике даются его основы, включая диспетчеризацию, взаимоблокировку, зависание процесса, взаимоисключение/семафоры и т. д.
31
Более подробная информация обо всех типах диаграмм UML (унифицированного языка моделирования) содержится в книге [FS97].
32
Несмотря на то, что база данных показана как единое целое, это не так. Программное обеспечение баз данных разделено на несколько процессов и клиентских потоков, но их обработка производится внутренними программами БД и не является частью примера, приведенного в книге.
33
Она использует статические данные для сохранения текущей позиции в буфере. Статические данные не защищены от параллельного доступа, поэтому они не являются поточно-ориентированными. Помимо этого, программа strtok затирает первый передаваемый параметр, что может привести к весьма неприятным сюрпризам.)
34
Более подробная информация содержится в описании шаблона Observer в книге [GHJV95].
35
Представление и контроллер тесно связаны между собой, и в некоторых реализациях MVC они являются единым целым.
36
Тот факт, что самолет пролетает над головой, возможно, не представляет интереса, если только это не сотый самолет за ночь.
37
В этом случае дело может зайти слишком далеко. Один разработчик переписывал абсолютно все исходные тексты, которые ему передавались, т. к. пользовался собственными соглашениями об именовании.
38
На деле авторам не хватило реальной памяти для выполнения поразрядной сортировки свыше 7 млн чисел на компьютере с процессором Pentium и 64 Мбайт оперативной памяти во время тестирования алгоритмов, используемых в качестве упражнения к данному разделу. После этого была задействована область подкачки, и время сортировки резко сократилось.
39
Термин "программная интегральная схема", по-видимому, был введен Коксом и Новобилски (1986) в их книге по языку Objective-C под названием "Object-Oriented Programming" [CN91].
40
Тем не менее существуют иные методики, которые помогают управлять сложностью программ. Две из них – Java beans и АОР – обсуждались в разделе "Ортогональность".
41
Неделя – это долго или нет? На самом деле нет, особенно если рассматривать процессы, в которых менеджмент и исполнители находятся в разных мирах. Менеджмент дает одно представление о том, как все работает, но как только спускаешься в цех. то встречаешься с иной реальностью, для адаптации к которой требуется время.
42
Существуют некоторые формальные методики, которые пытаются выразить операции алгебраически, но они редко используются на практике. Эти методы требуют, чтобы аналитики разъясняли их значение конечным пользователям.
43
Подробные спецификации, несомненно, подходят для систем жизнеобеспечения. Очевидно, что эти спецификации составляются для интерфейсов и библиотек, используемых другими пользователями. Если результаты в целом представляют собой набор стандартных вызовов, лучше убедиться в том, что эти вызовы строго определены.
44
В команде нет разногласий – но это только внешне. Внутри же команды поощряются оживленные серьезные дискуссии. Хорошие разработчики склонны быть страстными, когда речь идет об их работе.
45
В книге "The Rational Unified Process: An Introduction" [Kru98] автор выделяет 27 отдельных ролей в пределах проектной команды!
46
Например, при записи компакт-диска в формате ISO9660, запускается программа, создающая побитовый образ файловой системы 9660. Стоит ли тянуть до последней минуты, чтобы убедиться, что все нормально?
47
А что же первое? Проклятый склероз.
48
Ориентировочно можно принять среднюю величину по отрасли равной $ 100000 на душу; в нее входят заработная плата, социальные выплаты, обучение, оборудование рабочего места, накладные расходы и т. д.
49
На сайте extreme Programming [URL 45] эта концепция обозначена как "непрерывная интеграция, безжалостное тестирование".
50
Редактор американского издания требовал изменить это предложение на "Если система выходит из строя… ". Авторы сопротивлялись.
51
В оригинале приводится толкование термина deadline – контрольный срок – в Webster's Collegiate Dictionary: черта, проведенная вокруг тюрьмы (или в ее пределах), за которую заключенный не имеет права выходить под страхом смерти.
52
Информация подобного рода, как и имя файла, дается тегом RCS $Id$.
53
Более подробно модели и представления рассмотрены в разделе "Всего лишь визуальное представление".
54
Технологии XSL и CSS были разработаны для отделения представления от содержимого.
55
ACM Member Services, РО BOX 11414, New York, NY 10286, USA. => www.acm.org
56
1730 Massachusetts Avenue NW, Washington, DC 20036-1992, USA. -> www.computer.org