инт.среды. 5. Системы программирования
Скачать 175.93 Kb.
|
Текстовый редактор предполагает возможность фильтрации и сортировки логических абзацев. Сортировка может производиться по следующим принципам: по релевантности логических абзацев; по приоритету документов; по рассматриваемым поисковым серверам; по частоте появления документа на серверах; по заголовкам документов. Таким образом, на вход генератора итогового документа подается набор логических абзацев со списками атрибутов. Синтезировать отчет можно в нескольких формах, различающихся порядком следования логических абзацев, с предоставлением пользователю возможности переключаться из одного режима в другой. 5.4. Инструментарий поддержки процессов некоторых технологических подходов 5.4.1. Системы формального преобразования и верификации программ Поддержка технологий формального преобразования и верификации программ осуществляется специальными системами. Большинство из них являются научно-исследовательскими и не имеют коммерческого применения. Одной из наиболее интересных современных работ в области формальных подходов верификации программ является В-технология. На ее основе была осуществлена разработка системы управления парижским метрополитеном "METEOR". Цель создания средств формального преобразования программ состояла в том, чтобы автоматизировать задачи разработки программного обеспечения, модификацию программ и исправление ошибок. Преобразования специфицировались, используя правила, левая часть которых - это образец исходного кода, а правая - действия, которые должны быть выполнены, если левая часть встретилась в тексте. Приведем примеры таких систем. Система TXL [Kozaczynsky, Hing, Engberts 1992] конвертирует код, написанный на диалекте, в код на базовом языке. Это выполняется через преобразование синтаксического дерева грамматики диалекта в синтаксическое дерево базового языка, а затем получение новой программы из последнего. Для преобразования деревьев использовался рекурсивный алгоритм обхода дерева. Средство IntelliJ Renamer (http://www.intellij.com/products/) - это мощное средство для преобразования программ и поиска в программном коде, разработанное для языка Java. Оно позволяет производить переименование методов, пакетов, полей, переменных и параметров методов с автоматическим исправлением вхождений. IntelliJ CodeSearch позволяет делать поиск в исходном коде на языке Java, к примеру, вызовов определенных методов или определения классов, реализующих некоторый интерфейс. Это средство корректно работает с перегруженными методами различных классов с одинаковыми именами. В этих средствах используется идея работы по синтаксическому дереву. Система RescueWare (http://www.relativity.com/products/rescueware/) является системой производства программ с новой бизнес-логикой, преобразуя и используя части существующих программных ресурсов. Для осуществления этих операций система предлагает разделение задачи на несколько подзадач. Сначала проходит стадия понимания программ [Бульонков, Бабурин 2000]. На этом этапе выделяются такие сущности, как программный уровень, потоки данных, карта вызовов. Далее проходит стадия изоляции определенной бизнес-логики. На этом этапе выделяются компоненты, пригодные для переиспользования. Впоследствии созданные компоненты используются для генерации новой программной системы с учетом особенностей новых платформ. В таких подходах ключевым моментом, зачастую, является преобразование программы на процедурном языке в программу на объектно-ориентированном языке. Для осуществления такого преобразования объекты должны быть идентифицированы из процедурных частей. Объектно-ориентированные программы (в сравнении с процедурно-базируемыми) считаются более простыми в сопровождении. Существуют также системы, которые предназначены для анализа исходных кодов с целью получения высокоуровневых абстракций. Так, например, существуют средства [Niere, Wadsack, Zundorf 2000], которые анализируют код на языке Java с целью генерации диаграмм UML. Данный подход базируется на использовании сетей рассуждений, построенных на нечеткой логике [Jahnke, Heitbreder 1998]. Также существуют средства, которые предоставляют среду разработки для объектно-ориентированных языков, используя диаграммы UML. Они позволяют не только генерировать код по диаграммам, но и анализировать его с целью построения такой диаграммы. Это позволяет более наглядно представлять архитектуру разрабатываемой системы и улучшать ее понимание. 5.4.2. Средства сборочного программирования Несмотря на естественность и популярность сборочного программирования, средства его поддержки практически отсутствуют или не выходят за пределы компаний по разработке программного обеспечения. Это объясняется тем, что с одной стороны существует огромное количество правовых проблем, препятствующих свободному копированию программных модулей, а с другой - низким качеством и плохой документированностью таких программ. В настоящее время наиболее популярным средством сборочного программирования являются репозитории, которые мы рассмотрим в разд. 5.5.4. 5.5. Инструментальные системы Целое - это больше, чем сумма частей. Аристотель Инструментальной системой будем называть некоторую логически связанную совокупность программных инструментов, поддерживающую разработку и сопровождение программных систем на данном языке программирования или ориентированных на какую-либо конкретную предметную область. Эту группу характеризует в первую очередь интеграция нескольких инструментов под единой оболочкой и использование общего репозитория. Выделяют три группы инструментальных систем. Инструментальные среды программирования. Средства автоматизации разработки программ. Интегрированные среды. В идеальном варианте инструментальные системы должны распространяться на максимально возможное количество процессов и покрывать максимум стадий жизненного цикла. Однако исторически сложилось так, что инструментальные среды в большей степени связаны с процессами программирования, тестирования и отладки, а средства автоматизации разработки программ - с анализом и проектированием (рис. 5.6). 5.5.1. Инструментальные среды программирования Инструментальные среды программирования обычно содержат текстовый редактор, компилятор, отладчик и средства подсказки. Кроме того, в них могут быть включены и другие инструменты, позволяющие выполнять статический и динамический анализ программ. Эти инструменты взаимодействуют между собой через обычные файлы с помощью стандартных возможностей файловой системы. Различают среды общего назначения и языково-ориентированные среды. Среды общего назначения содержат набор программных инструментов (например, текстовый редактор, редактор связей и т. п.), позволяющих выполнять разработку программ на разных языках программирования. Для программирования на конкретном языке программирования требуются дополнительные инструменты, ориентированные на этот язык. Языково-ориентированные среды предназначены для поддержки разработки программ на каком-либо одном языке программирования, причем построение такой среды базируется на знаниях об этом языке. Инструментальная среда не обязательно должна функционировать на том компьютере, на котором должен будет применяться разрабатываемый с ее помощью программный продукт. Особенности инструментальных сред программирования: поддерживают различные методологии; применяются в различных технологиях; применяются командами, работающими над различными проектами; используются для разработки разнообразных приложений; разрабатываются одной компанией. Возможность интеграции инструментов других компаний отсутствует. Примеры инструментальных сред: Visual Studio (компании Microsoft (http://www.microsoft.com/)); Forte for Solaris Developer Tools (компании Sun Microsystems Inc. (http://www.sun.com/)); Delphi Suite (компании Borland International (http://www.borland.com/)). 5.5.2. Средства автоматизации разработки программ (CASE-средства) Средства автоматизации разработки программ - инструментарий для системных аналитиков, разработчиков и программистов, позволяющий автоматизировать процесс проектирования и разработки программного обеспечения. Первоначально под CASE-средствами понимались средства, применяемые на ранних процессах жизненного цикла." В первую очередь - на наиболее трудоемких процессах анализа и проектирования. Международный стандарт [ISO/IEC 14102:1995] определяет CASE-средства более широко - как программное средство, поддерживающее процессы жизненного цикла программного обеспечения. CASE-средства характеризуются наличием мощных средств визуального моделирования. Особенности средств автоматизации разработки программ: поддерживают единственную методологию; ориентируются на определенную технологию; предназначаются для команд, работающих над единственным проектом (так сложилось исторически); используются для разработки информационных систем; разрабатываются одной компанией. Возможность интеграции инструментов других компаний отсутствует. Примеры CASE-средств: Oracle Designer (компании Oracle (http://www.oracle.com/)); ERwin (компании Computer Associates International, Inc. (http://www.cai.com/)); Rational Rose (компании Rational Software Corporation (http://www.rational.com/)). 5.5.3. Интегрированные среды Интегрированная среда - совокупность программных инструментов, поддерживающая все процессы жизненного цикла программного обеспечения в рамках определенной технологии. Компонентами интегрированных сред являются: инструменты управления процессами; инструменты управления проектом; инструменты конфигурационного управления; инструменты верификации; инструменты поддержки разработки документации. Выделяют три уровня интеграции инструментов в интегрированных средах. Уровень 1. Интеграция инструментов очень слабая. Как правило, обмен информацией между ними происходит через интерфейсы экспорта и импорта. Уровень 2. Интеграция инструментов одной компании осуществляется на основе единого репозитория. Интеграция инструментов других компаний с первыми инструментами происходит по образцу уровня 1. Уровень 3. Интеграция всех инструментов осуществляется с помощью общего репозитория. При этом любой инструмент любой компании может осуществлять взаимодействие через службы взаимодействия с репозиторием. Особенности интегрированных сред: поддерживают различные методологии; определяют технологию разработки; применяются командами, работающими вместе над несколькими проектами; как правило, используются для разработки научных и инженерных приложений; разрабатываются одной компанией, но имеется возможность интеграции инструментов других компаний. Примеры интегрированных сред: WebSphere Studio WorkBench (компании IBM (http://www.ibra.com/software/ad/workbench/)); CohesionWorX (компании Digital Equipment Corp.); SorfBench (компании Hewlett-Packard (http://www.hp.com/)). Об аппаратной платформе интегрированных сред Обратим внимание, что интегрированные среды практически отсутствуют на персональных компьютерах. Это можно объяснить сильным монополизмом компаний разработчиков инструментария на рынке персональных компьютеров и их нежеланием предоставлять возможность интеграции инструментов других компаний. 5.5.4. Репозитории проекта Репозитории - хранилище информации, связанной с проектом разработки программного продукта в течение всего его жизненного цикла. В современных инструментальных системах репозитории приобретают роль фундамента всей информационной среды. Важно, чтобы репозитории помогали работе инструментальных систем. Филипп Бернштейн (Philipp Bernstein) определяет репозитории как разделяемую базу данных с информацией об артефактах проектирования, требующую некоторых дополнительных функций управления помимо предоставляемых обычными системами баз данных. Большинство технологических подходов к разработке программного обеспечения предполагает работу с тремя основными типами информации - модельными спецификациями, интерфейсом прикладного программиста и окружением проекта. Выделим три уровня репозиториев, соответствующих этим типам. Модельный. Программного интерфейса. Окружения. Уровень моделирования достаточно хорошо может быть описан универсальным языком UML. Данный язык является абстрактным, не привязанным к конкретной модели. Язык дает возможность описать зависимости элементов, иерархию, взаимосвязи, свойства и т. п. Уровень программного интерфейса разумно описывать с помощью языка определения интерфейсов IDL, обеспечивающего независимость спецификации интерфейсов от их реализации. Уровень играет не только роль промежуточного слоя, также его средства поддерживают распределенное программирование (в том числе в Интернете). Репозитории окружения программного проекта предназначен для хранения информации, разделяемой компонентами и подкомпонентами систем программирования в процессе их работы. Приведем ниже основные группы и подгруппы полезной информации. Языково-независимая группа. Информация для отладчика. Информация для просмотрщика исходных текстов. Языково-зависимая группа (например, для языка C++). Информация для шаблонов. Коды встроенных функций. Виртуальные функции. Группа контроля репозитория. Контроль информации о версиях. Контроль отношения к проекту. Тип параллельной обработки. Тип управления репозиторием. Проверка цифровой подписи. Основными достоинствами применения репозиториев окружения являются: эффективность работы с информацией; использование информации для целей оптимизации; распределенность (из которой следуют доступность, параллелизм и специализация); модульность, включающая независимость от конкретных инструментов (например, компиляторов); возможность работы с репозиторием как в архитектуре "клиент-сервер", так и в "связанном" с инструментом режиме. Статистика отмечает, что около 80% программного обеспечения создается по уже имеющемуся. Следовательно, необходимо иметь инфраструктуру (электронную библиотеку), которая будет поддерживать архивы и достаточно интеллектуальный поиск нужных прототипов и фрагментов. Фактически, мы на более высоком уровне обращаемся к парадигме сборочного программирования, которая характеризуется стремлением к выделению независимой единицы программистского знания (модульной абстракции). Одним из наиболее известных репозиториев является Microsoft Repository (компании Microsoft (http://www.microsoft.com/)). 5.6. Средства поддержки коллективной разработки Коллективные разработки часто сталкиваются с проблемами разделения ресурсов - файлов и каталогов и необходимости синхронизации времени и места. 5.6.1. Системы разделения файлов Для поддержки коллективной работы с файлами применяются три основных класса систем. Системы управления версиями файлов. Системы управления пространствами пользователей. Системы синхронизации удаленных пространств. Если три класса систем выпускаются одним производителем, то часто каждая последующая система в этом списке использует предыдущую систему, выступая в качестве надстройки. О системах управления версиями Обратим внимание, что системы управления версиями файлов следует использовать не только при коллективной, но и при индивидуальной (авторской) разработке для решения задачи отслеживания изменений между различными версиями. Мы помещаем информацию об этих системах в данном разделе лишь с целью подчеркнуть их полную незаменимость при коллективных разработках. Поскольку данные системы действительно очень важны, их реализации существуют в большом количестве практически для всех операционных систем. Приведем два стека таких систем (табл. 5.2). Таблица 5.2. Примеры средств поддержки коллективной разработки
5.6.1.1. Система управления версиями файлов |