124
Мы полагаем, что препятствия к повторному использованию возникают не со
стороны производителя, а со стороны потребителя. Если разработчик
программного обеспечения — потенциальный потребитель стандартных
программных компонентов — считает, что найти и проверить нужный
компонент дороже, чем написать его заново, значит, будет написан новый
компонент, дублирующий прежний. Обратите внимание, мы сказали
«считает» — реальная стоимость повторной разработки не имеет значения.
Повторное использование кода имеет успех при разработке математических
программ. Причин этому две: 1 ) это магия, требующая огромного
интеллектуального вклада в каждую строчку кода, и 2) существует богатая и
стандартная терминология, а именно — математика, для описания
функциональности любых компонентов. Поэтому повторно разработать
математический компонент стоит дорого, а разобраться в функциональности
стоит дешево. Давняя традиция публикации и сбора алгоритмов
профессиональными журналами и предложения их по умеренной цене, а также
коммерческое предложение высококачественных алгоритмов по несколько
более высокой, но все же скромной цене, делают поиск требуемых компонентов
проще, чем в других областях, где часто невозможно точно и сжато описать
требуемое. Благодаря совместному действию этих факторов повторное
использование математических программ более привлекательно, чем повторное
их изобретение.
Такое же явление повторного использования обнаруживается и в других
сообществах, например, в разработке программ для атомных реакторов,
моделирования климата, моделирования океанов — по тем же самым причинам.
Каждое из этих сообществ выросло на одних и тех же учебниках, с одной и той же
системой обозначений.
Как сегодня обстоят дела с повторным использованием на корпоративном
уровне? Проведено множество исследований, а вот практикуется в США
относительно мало. Что же касается повторного использования за рубежом, то тут
имеют место неправдоподобные отчеты.
25
Джонс сообщает, что все клиенты его фирмы, у которых более 5000 программистов,
проводят формальные исследования повторной используемости, в то время как из
числа клиентов с 500 и менее программстами это делает менее 10 процентов.
26
По
его сообщению, в отраслях с высоким потенциалом повторного использования
исследования (не реализация) «ведутся активно и энергично, даже если не вполне
успешно». Эд Йордон сообщает о программной фирме в Маниле, в которой 50
программистов из общего числа 200 заняты только разработкой повторно
используемых модулей для использования всеми остальными, и что в тех случаях,
которые он видел, пр инятие этой технологии было вызвано организационными, а не
техническими факторами — например, системой поощрений.
Демарко сообщает мне, что наличие массовых рыночных пакетов и возможность
предоставления ими общих функций, таких как системы баз данных, существенно
снизили как настоятельность, так и предельную полезность повторного
использования модулей собственных приложений. «Повторно используемые модули
имели тенденцию в конце концов становиться общими функциями.»
Парнас пишет следующее:
Повторное использование — это то, о чем легче говорить, чем осуществить. Для
него требуются как хорошее проектирование, так и очень хорошая
документация. Даже когда мы видим хорошее проектирование, что по-
прежнему не часто, без хорошей документации компоненты не будут
использоваться повторно.
Кен Брукс сообщает, что трудно рассчитать, какая степень обобщенности окажется
необходимой: «Мне приходится менять вещи, даже в пятый раз используя
собственную библиотеку пользовательских интерфейсов.»