201
9.4. Повторное использование в рамках базовой архитектуры
Суть повторного использования на уровне реализации в рамках базовой
архитектуры заключается в использовании шаблона, ограничивающего спектр
проектных решений разных рабочих групп и направляющего эти группы в
примерно одинаковом направлении. В качестве такого шаблона может
выступать операционная система реального времени, библиотека, входящая в
состав
инструментальных средств программирования, спецификация на
сетевую подсистему, например, такая как CanOpen или DeviceNet.
Для небольшой фирмы, как правило, нерентабельно создавать свои
собственные, сколько-нибудь сложные базовые архитектуры. Базовые
архитектуры без должного сопровождения и документирования едва когда-
нибудь выйдут за пределы создавшей их рабочей группы.
Повторное использование на уровне исходных текстов
Внешне этот
способ повторного использования выглядит самым простым.
На самом деле это не совсем так, по следующим причинам.
z В силу причин, изложенных в главах о стиле программирования и
моделях вычислений, исходные тексты не несут (и не могут нести в
принципе) в себе высокоуровневой информации об архитектуре. Из этого
следует, что они непонятны для сторонних разработчиков, не имеющих
тесного контакта с разработчиком архитектуры. По сути, сколько-нибудь
сложный исходный текст
очень часто оказывается черным ящиком.
z Исходный текст очень просто повредить или незаметно для остальных
участников проекта исправить, внеся в проект несколько иную
функциональность или ошибки. Кроме того, внося изменения в исходный
текст, мы можем породить большое количество новых ветвей проекта, в
которых очень легко запутаться.
z Всегда существуют проблемы с созданием инструментальной среды,
необходимой для сборки текущей версии исходных текстов. В
относительно стабильной среде систем общего назначения,
использующих очень широко распространенные инструментальные
средства крупных корпораций, эта проблема не стоит так остро. В
области же встроенных систем, разнообразие инструментальных средств
гораздо выше и существует достаточно серьезная проблема зависимостей
.
Суть проблемы заключается в том, что для успешной сборки проекта вам
нужно собрать в одно время и в одном месте большое количество
компонентов. Попробуйте, к примеру, собрать из исходных текстов
компилятор GCC для процессора ARM и операционную систему
реального времени eCos под Linux и вы поймете, что проблема реально
существует.