И. Соммервилл - Инженерия программного обеспечения (1133538), страница 73
Текст из файла (страница 73)
° Если поезд выехал на участок, перед которым горит красный сает семафора, система безопасно- ', сти должна затормозить поезд до полной осшновюб Торможение должно начаться через 100 мс ( после регистрации красного светового сигнала от семафора. ° Система постоянно обновляет йнформацию на экране в кабине машиниста ггг"!. '! "Ъ ,"1 ~ 1Ы4в ф;-;11 ~.
.буй»' Проектирование с повторным использованием компонентов Цель настоящей главы — показать различные способы повторного использования имеющегося программно. го обеспечения в процессе проектирования про. гран ыных систем. Прочитав эту главу, вы должны: знать основные преимущества повторного ис- пользования компонентов ПО и проблемы, ко- торые могут возникнуть при этом; познакомиться с различными тинами повторно используемых компонентов и знать основные этапы процесса нх проектирования; усвоить, что такое семейства приложений и по. чему онн служат эффективным способом повтор- ного использования ПО; знать, что патгерны — это абстракции высокого уровня, которые обеспечивают повторное ис- пользование компонентов в процессе объектно.
ориентированного проектирования. 14.1. Покомпонентная разработка 14.2. Семейства приложений 14.3. Проектные патгерны 284 Часть Ш. Проектирование В большинстве инженерных разработок процесс проектирования основан на повторном использовании уже имеющихся компонентов. В таких сферах, как механика или электротехника, инженеры никогда не разрабатывают проект "с нуля". Их проекты базируются на компонентах, уже проверенных и протестированных в других системах.
Как правило, зто не только малые компоненты, например фланцы и клапаны, но также целые подсистемы, например двигатели, компрессоры или турбины. В настоящее время не вызывает сомнений тот факт, что необходимо сравнивать различные подходы к разработке программного обеспечения. Если программное обеспечение рассматривать как актив, то повторное использование этих активов позволит существенно сократить расходы на его разработку. Только с помощью систематического повторного использования ПО можно уменьшить расходы на его создание и обслуживание, сократить сроки разработки систем и повысить качество программных продуктов. Чтобы повторное использование ПО было эффективным, его необкодимо учитывать на всех этапах процесса проектирования ПО или процесса разработки требований.
Во время программирования возможно повторное использование на агапе подбора компо. нентов, соответствующик требованиям. Однако для аиэмнлзгического повторного использования необходим такой процесс проектирования, в ходе которого постоянно рассматривалась бы возможность повторного использования уже существующих архитектур, где система была бы явно организована из доступных имеющихся компонентов ПО. Метод проектирования ПО, основанный на повторном использовании, предполагает максимальное использование уже имеющихся программных объектов. Такие объекты мо. гуг радикально различаться размерами. 1.
1уозтоугно ислазьзускьи я1ьиаикения Можно повторно использовать целые приложения либо путем вклгочення их в систему без изменения других подсистем (например, коммерческие готовые продукты, см. раздел 14.1.2), либо с помощью разработки семейств приложений, работающих на разных платформах и адаптиро. вашгых к требованиям конкретных заказчиков (см. раздел 14.2). 2. У)оггяз)газ кслгмыуачмз комялнекжм. Можно повторно использовать компоненты приложений — от подсистем до отдельньщ объектов.
Например, система распознавания текста, разработанная как часть системы обработки текстов, может повторно использоваться в системах управления базами данных. Этот вид повторного использования рассматривается в разделе 14ть 3. Позжэугяэ исиазьгускме функции. Можно повторно использовать программные компоненты, которые реализуют отдельные функции, например математические. Основанный на стандартных библиотеках метод повторного использования применяется в программировании последние 40 лет. Повторное использовзние целых приложений практикуется довольно широко; при этом компании, занимающиеся разработкой ПО, адаптируют свои системы для разных платформ и для работы в различных условнлх, Также хорогло известно повторное использование функций через стандартные библиотеки, например графические и математиче.
скис. Интерес к повторному использованию компонентов возник еще в начале 1980-х го. дов, однако на практике такой подход к разработке систем ПО применяется лишь последние несколько лет. Очевидным преимуществом повторного использования ПО является снижение общей стоимости проекта, тзк как в целом требуется специфицировать, спроектировать, реализовать и проверить меньшее количество системных компонентов. Но снижение стоимо- 14. Проектирование с повториьгм использованием компонентов 285 сги проекта- это только потенциальное преимущество повторного использования. Кэк вгшно из табл. 14.1, повторное использование ПО имеет ряд других преимуществ. Таблица 14.1.
Преимущества повторного использования ПО Преимущество Описание Компоненты, повторно используемые в других системах. ока- зываются значительно надежнее новых компонентов. Они прогестированы и проверены в разных условиях работы. Ошибки, допущенные при их проектировании и реализации. обнаружены и устранены еще при первом их применении. Поэтому повторное использование компонентов сокращает общее количество ошибок в системе Повышение надежности Для уже существующих компонентов можно более точно про- гнозировать расходы, связанные с их повторным использова- нием, чем расходы, необходимые на их разработку.
Такай прогноз — важный фактор администрирования проекта, так как позволяет уменьшить неточности при предварительной оценке сметы проекта Часть специалистов, выполняющих одинаковую работу в раз- ных проектах, может заниматься разработкой компонентов для их дальнейшего повторного использования, эффективно применяя накопленные ранее знания Некоторые стандарты, такие как стандарты интерфейса поль- зователя, можно реализовать в виде набора стандартных ком- понентов. Например, можно разработать повторно исполь- эуемыс компоненты для реализации различных меню пользо- вательского интерфейса.
Все приложения предоставляют меню пользователям в одном формате. Использование стан- дартного пользовательского интерфейса повышает падеж. ность систем, так как. работал со знакомым интерфейсом. пользователи совершают меньше ошибок Часто для успешного продвижения системы на рынке необхо- димо как можно более раннее ее появление, причем незави- симо от полной стоимости ее соэданил. Повторное использо- вание компонентов ускоряет создание систем, так как сокра- щается время на их разработку и тестирование Уменьшение проектных .исков Эффективное использо- вание специалистов Соблюдение стандартов Ускорение разработки 1.
Возможность поиска необходимых системньш компонентов. В организациях должен быть каталог документированных компонентов, предназначенных для повторного использования, который обеспечивал бы быстрый поиск нужных компонентов. 2. При повторном использовании необходимо удостовериться, что поведение компонентов предсказуемо и надежно. В ьшеазе все компоненты, представленные в каталоге, должны быть сертифицированы, чтобы подтвердить соответствие определенным стандартам качества. Для успешного проектирования и разработки ПО с повторныи использованием компонентов должны выполняться три основных условия.
28б Часть Ш. Проектирование 3. На каждый компонент должна быть соответствующая документация, цель которой — помочь разработчику получить нужную информацию о компоненте и адаптировать его к новому приложению. В докуиснтации должна содержаться информа. цня о том, где используется данный компонент, и другие вопросы, которые могут возникнуть при повторном использовании компонента. Таблица 14.2. Проблемы повторного использования Проблема Описание Повьниспис стоимости со- провождения системы Недоступность исходного кода компонента может привести к у величению расходов на сопровождение системы, так как повторно используемые системные элементы могут со временем оказаться пе совместимыми с изменениями, произво. димыми в системе Недостаточная пнструмен- тааьная поддержка СЛБЕ.средства нс поддерживают разработку ПО с повторным использованием компонентов.
Интегрирование этих средств с системой библиотек компонентов затруднительно или даже невозможно. Если процесс разработки ПО осуще. ствляется с помощью СА5Есредств, повторное использование компонентов можно полностью исключить С~п!дружна "изобретения ве. лосинеда" Некоторые разработчики ПО предпочитают переписать компоненты, так как полагают, что смогут при этом их усо- вершенствовать. Кроме того, многие считают, что создание программ "с нуля" перспективнее и "благороднее" повтор. ного использования написанных другими программ Содержание библиотеки компонентов Заполнение библиотеки компонентов и ее сопровождение может стоить дорого.
В настоящее времл еще недостаточно хорошо продуманы методы классификации, каталогизации и извлечения информации о программных компонентах Компоненты ПО нужно найти в библиотеке, изучить и адаптировать к работе в новых условиях, что "нс укладывается" в обычный процесс разработки ПО Поиск и адаптация компо- нентов Из перечислсвнюго выше следует, что повторное использование компонентов должно быть систематическим, плановым и включенным во все организационные программы ор. ганизацни-разработчика. В Японии повторное использование известно много лет [231) и является неотьемлемой частью "японского" метода разработки ПО [83).