Термин абстрактный модуль будет применяться к таким повторно используемым единицам (units
of reuse), входящим в состав непосредственно применяемых ПО, доступ из внешнего мира к которым
может осуществляться через описание, содержащее лишь подмножество свойств каждой единицы.
4.3 Повторяемость при разработке ПО
В поиске идеала абстрактного модуля следует рассмотреть суть процесса конструирования ПО.
Наблюдая за разработкой, нельзя не обратить внимания на периодически повторяющиеся действия
в этом процессе. Вновь и вновь программисты“сплетают” программу из множества стандартных
элементов: сортировка, поиск, считывание, запись, сравнение, обход по дереву, - все повторяется.
Психологическим препятствием повторного использования является известный синдром:“Придумано
Не Нами” (Not Invented Here или“NIH”). Говорят, что разработчики ПО являются индивидуалиста-
ми, предпочитающими все выполнять сами, не полагаясь на чужую работу.
Но на практике это не подтверждается. Разработчики ПО склонны к бесполезной работе не более
других специалистов. Если имеется хорошее, широко известное и легкодоступное повторно исполь-
зуемое решение, то оно будет использовано.
Рассмотрим типичный случай лексического и синтаксического анализа. Намного проще создать
программу грамматического анализа для командного языка или простого языка программирования,
используя программные генераторы грамматического разбора (parser generators), например комбина-
цию известных программ Lex-Yacc, а не создавая все с нуля. Вывод очевиден: там, где инструмен-
тальные средства имеются, квалифицированные разработчики ПО повсеместно их используют.
Таким образом, обеспечить высокое качество при создании повторно используемых компонентов
существенно важнее, чем для других видов ПО.
Обозначим через N стоимость уникального решения, R - решения, основанного на повторно ис-