Главная страница
Навигация по странице:

  • 5.4. Инструментарий поддержки процессов некоторых технологических подходов 5.4.1. Системы формального преобразования и верификации программ

  • 5.4.2. Средства сборочного программирования

  • 5.5. Инструментальные системы Целое - это больше, чем сумма частей. Аристотель

  • 5.5.2. Средства автоматизации разработки программ (CASE-средства)

  • 5.5.3. Интегрированные среды

  • Об аппаратной платформе интегрированных сред

  • 5.5.4. Репозитории проекта

  • 5.6.1. Системы разделения файлов

  • О системах управления версиями

  • Таблица 5.2. Примеры средств поддержки коллективной разработки

  • 5.6.1.1. Система управления версиями файлов

  • инт.среды. 5. Системы программирования


    Скачать 175.93 Kb.
    Название5. Системы программирования
    Дата05.09.2022
    Размер175.93 Kb.
    Формат файлаdocx
    Имя файлаинт.среды.docx
    ТипДокументы
    #663216
    страница6 из 7
    1   2   3   4   5   6   7

    Текстовый редактор предполагает возможность фильтрации и сортировки логических абзацев. Сортировка может производиться по следующим принципам:

    • по релевантности логических абзацев;

    • по приоритету документов;

    • по рассматриваемым поисковым серверам;

    • по частоте появления документа на серверах;

    • по заголовкам документов.

    Таким образом, на вход генератора итогового документа подается набор логических абзацев со списками атрибутов. Синтезировать отчет можно в нескольких формах, различающихся порядком следования логических абзацев, с предоставлением пользователю возможности переключаться из одного режима в другой.

    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. Примеры средств поддержки коллективной разработки

    Классы систем

    Среда операционной системы Windows

    Среда операционной системы Unix

    Управления версиями файлов

    PCS (Revision Control System) (http://www.gnu.org/software/rcs/rcs.html)

    SCCS (Source Code Control System) (http://www.sun.com/)

    Управления пространствами пользователей

    CVS (Concurrent Versions System) (http://www.cvshome.org/)

    bringover/putback (http://www.sun.com/)

    Синхронизации удаленных пространств

    Rsync (http://samba.ann.edu.au/rsync)

    synctool (http://www.sun.com/)

    5.6.1.1. Система управления версиями файлов
    1   2   3   4   5   6   7


    написать администратору сайта