Проектирование с повторным использованием компонентов
Цели Цель настоящей главы – показать различные способы повторного использования имеющегося программного обеспечения в процессе проектирования программных систем. Прочитав эту главу, вы должны: q знать основные преимущества повторного использования компонентов ПО и проблемы, которые могут возникнуть при этом; q познакомиться с различными типами повторно используемых компонентов и знать основные этапы процесса их проектирования; q усвоить, что такое семейства приложений и почему они служат эффективным способом повторного использования ПО; q знать, что паттерны – это абстракции высокого уровня, которые обеспечивают повторное использование компонентов в процессе объектно-ориентированного проектирования.
В большинстве инженерных разработок процесс проектирования основан на повторном использовании уже имеющихся компонентов. В таких сферах, как механика или электротехника, инженеры никогда не разрабатывают проект "с нуля". Их проекты базируются на компонентах, уже проверенных и протестированных в других системах. Как правило, это не только малые компоненты, например фланцы и клапаны, но также целые подсистемы, например двигатели, компрессоры или турбины. В настоящее время не вызывает сомнений тот факт, что необходимо сравнивать различные подходы к разработке программного обеспечения. Если программное обеспечение рассматривать как актив, то повторное использование этих активов позволит существенно сократить расходы на его разработку. Только с помощью систематического повторного использования ПО можно уменьшить расходы на его создание и обслуживание, сократить сроки разработки систем и повысить качество программных продуктов.
Чтобы повторное использование ПО было эффективным, его необходимо учитывать на всех этапах процесса проектирования ПО или процесса разработки требований. Во время программирования возможно повторное использование на этапе подбора компонентов, соответствующих требованиям. Однако для систематического повторного использования необходим такой процесс проектирования, в ходе которого постоянно рассматривалась бы возможность повторного использования уже существующих архитектур, где система была бы явно организована из доступных имеющихся компонентов ПО. Метод проектирования ПО, основанный на повторном использовании, предполагает максимальное использование уже имеющихся программных объектов. Такие объекты могут радикально различаться размерами.
1. Повторно используемые приложения. Можно повторно использовать целые приложения либо путем включения их в систему без изменения других подсистем (например, коммерческие готовые продукты, см. раздел 14.1.2), либо с помощью разработки семейств приложений, работающих на разных платформах и адаптированных к требованиям конкретных заказчиков (см. раздел 14.2). 2. Повторно используемые, компоненты. Можно повторно использовать компоненты приложений - от подсистем до отдельных объектов. Например, система распознавания текста, разработанная как часть системы обработки текстов, может повторно использоваться в системах управления базами данных. Этот вид повторного использования рассматривается в разделе 14.3. 3. Повторно используемые функции. Можно повторно использовать программные компоненты, которые реализуют отдельные функции, например математические. Основанный на стандартных библиотеках метод повторного использования применяется в программировании последние 40 лет.
Повторное использование целых приложений практикуется довольно широко; при этом компании, занимающиеся разработкой ПО, адаптируют свои системы для разных платформ и для работы в различных условиях. Также хорошо известно повторное использование функций через стандартные библиотеки, например графические и математические. Интерес к повторному использованию компонентов возник еще в начале 1980-х годов, однако на практике такой подход к разработке систем ПО применяется лишь последние несколько лет.
Очевидным преимуществом повторного использования ПО является снижение общей стоимости проекта, так как в целом требуется специфицировать, спроектировать, реализовать и проверить меньшее количество системных компонентов. Но снижение стоимости проекта – это только потенциальное преимущество повторного использования. Как видно из табл. 14.1, повторное использование ПО имеет ряд других преимуществ. Таблица 14.1. Преимущества повторного использования ПО
Для успешного проектирования и разработки ПО с повторным использованием компонентов должны выполняться три основных условия.
1. Возможность поиска необходимых системных компонентов. В организациях должен быть каталог документированных компонентов, предназначенных для повторного использования, который обеспечивал бы быстрый поиск нужных компонентов. 2. При повторном использовании необходимо удостовериться, что поведение компонентов предсказуемо и надежно. В идеале все компоненты, представленные в каталоге, должны быть сертифицированы, чтобы подтвердить соответствие определенным стандартам качества. 3. На каждый компонент должна быть соответствующая документация, цель которой – помочь разработчику получить нужную информацию о компоненте и адаптировать его к новому приложению. В документации должна содержаться информация о том, где используется данный компонент, и другие вопросы, которые могут возникнуть при повторном использовании компонента.
Успешное использование компонентов в приложениях Visual Basic, Visual C++ и Java продемонстрировало важность повторного использования. Разработка ПО, основанная на повторном использовании компонентов, становится широко распространенным рентабельным подходом к разработке программных продуктов [331, 3*]. Вместе с тем подходу к разработке ПО с повторным использованием компонентов присущ ряд недостатков и проблем (табл. 14.2), которые препятствуют запланированному сокращению расходов на разработку проекта.
Таблица 14.2. Проблемы повторного использования
Из перечисленного выше следует, что повторное использование компонентов должно быть систематическим, плановым и включенным во все организационные программы организации-разработчика. В Японии повторное использование известно много лет [231] и является неотъемлемой частью "японского" метода разработки ПО [85]. Многие компании, например Hewlett-Packard, успешно применяют повторное использование в своих разработках [139]. Опыт этой компании представлен в фундаментальной книге [187]. Альтернативой повторному использованию программных компонентов является применение программных генераторов. Согласно этому подходу информация, необходимая для повторного использования, записывается в систему генератора программ с учетом знаний о той предметной области, где будет эксплуатироваться разрабатываемая система. В данном случае в системной спецификации должно быть точно указано, какие именно компоненты выбраны для повторного использования, а также описаны их интерфейсы и то, как они должны компоноваться. На основе такой информации генерируется система ПО (рис. 14.1).
Рис. 14.1. Генерирование программ
Повторное использование, основанное на генераторах программ, возможно только тогда, когда можно идентифицировать предметные абстракции и их отображение в исполняемый код. Поэтому для компоновки и управления предметными абстракциями используются, как правило, проблемно-зависимые языки (например, языки четвертого поколения). Вот предметные области, в которых применение такого подхода может быть успешным.
1. Генераторы приложений для обработки экономических данных. На входе генератора – описание приложения на языке четвертого поколения или диалоговая система, где пользователь определяет экранные формы и способы обработки данных. На выходе – программа на каком-либо языке программирования, например COBOL или SQL. 2. Генераторы программ синтаксического анализатора. На входе генератора – грамматическое описание языка, на выходе – программа грамматического разбора языковых конструкций. 3. Генераторы кодов CASE-средств. На входе генераторов – архитектура ПО, а на выходе - программная реализация проектируемой системы.
Разработка ПО с использованием программных генераторов экономически выгодна, однако существенно зависит от полноты и корректности определения абстракций предметной области. Данный подход можно широко использовать в перечисленных выше предметных областях и в меньшей степени при разработке систем управления и контроля [261]. Главное преимущество этого подхода состоит в относительной легкости разработки программ с помощью генераторов. Однако необходимость глубокого понимания предметной области и ее моделей ограничивает применимость данного метода.
Читайте также: VIII. ТЕХНИКА ИЗМЕНЕНИЯ ЛИЧНОЙ ИСТОРИИ С ИСПОЛЬЗОВАНИЕМ ВИЗУАЛЬ НОЙ СИСТЕМЫ. Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|