Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

EiffelStudio - это среда разработки для языка программирования Eiffel, разработанная и распространяемая Eiffel Software.

EiffelStudio включает в себя комбинацию инструментов, интегрированных в единый пользовательский интерфейс: компилятор, интерпретатор, отладчик, браузер, инструмент метрик, профилировщик, диаграмму и инструмент инспектора кода. Пользовательский интерфейс опирается на ряд конкретных парадигм пользовательского интерфейса, в частности, на принцип «выбор и падение» для эффективного просмотра.

EiffelStudio доступен на нескольких платформах, включая Windows , Linux , Mac OS , Solaris , VMS , RaspberryPi . Источник доступен под лицензией GPL ; также доступны другие коммерческие лицензии.

Окно, содержащее три панели: панель редактора, содержащая исходный код класса, панель функций, содержащая список функций исходного кода класса при редактировании, и панель диаграммы, показывающая класс в виде значка со связями с другими классами.
EiffelStudio версии 7.2 с панелями «Редактор», «Функции» и «Диаграммы».

Статус, лицензия и процесс сообщества [ править ]

EiffelStudio - это разработка с открытым исходным кодом, бета-версии следующей версии которой регулярно становятся доступными.

Сообщество Eiffel активно участвует в его развитии; его официальный сайт - Eiffel.org , где перечислены проекты и ресурсы. База исходного кода обычно доступна для проверки через Subversion или Git . Также доступны дискуссионные форумы и тому подобное.

Технология компиляции [ править ]

EiffelStudio использует особую технологию компиляции, известную как Melting Ice (заявленная Eiffel Software в качестве товарного знака), которая объединяет собственно компиляцию с интерпретацией элементов, измененных с момента последней компиляции, для очень быстрого выполнения (время перекомпиляции пропорционально размеру изменения, а не размер общей программы). Хотя такие «расплавленные» программы могут быть доставлены, обычной практикой является выполнение этапа «финализации» перед выпуском. Финализация - это высокооптимизированная форма компиляции, которая занимает больше времени, но генерирует оптимизированные исполняемые файлы.

Интерпретаторная часть EiffelStudio полагается на виртуальную машину, ориентированную на байт-код . Компилятор генерирует либо C, либо .NET CIL (Common Intermediate Language).

Техника туда и обратно [ править ]

Инструмент построения диаграмм EiffelStudio обеспечивает графическое представление структур программного обеспечения. Его можно использовать как в

  • Форвард-инжиниринг как инструмент проектирования для создания программного обеспечения из графических описаний.
  • Обратный инжиниринг, автоматически создавая графические представления существующих текстов программы.

Инструмент гарантирует целостность изменений, внесенных в любой из стилей, для полного «сквозного проектирования».

Графическая нотация - либо BON (нотация бизнес-объектов, см. Библиографию), либо UML . BON по умолчанию.

Парадигма пользовательского интерфейса [ править ]

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

EiffelStudio опирается на оригинальную парадигму пользовательского интерфейса, основанную на «объектах разработки», «камушках» и «дырах». Точно так же, как объектно-ориентированный в Eiffel работает с объектами во время выполнения, разработчики имеют дело с абстракциями, представляющими классы, функции, точки останова (для отладки), кластеры (группы классов) и другие объекты разработки . Объект разработки в EiffelStudio можно выбрать ( выбрать ) в любом месте интерфейса и независимо от его визуального представления (имя объекта, визуальный символ или другое).

Чтобы выбрать объект разработки, достаточно щелкнуть по нему правой кнопкой мыши. Курсор изменится на специальный символ или камешек, соответствующий типу объекта: «пузырь» (эллипс) для класса, точка для точки останова, крестик для объекта и т. Д. При перемещении курсора из исходный объект в текущую позицию. Затем вы можете броситькамешек в любое подходящее место: либо значок, представляющий отверстие с той же общей формой (отверстие класса, отверстие точки останова, отверстие элемента и т. д.), либо окно с совместимым типом. Эффект падения камешка в инструмент - перенацеливание всего инструмента на объект разработки, который был «выбран». Например, инструмент класса теперь будет отображать выбранный класс в любом выбранном виде (текст, контракт, плоский и т. Д.). Это известно как парадигма «взлома и выбрасывания».

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

Модульное и интеграционное тестирование [ править ]

EiffelStudio включает интегрированное средство тестирования под названием EiffelStudio AutoTest [1] , с помощью которого разработчики могут создавать простые и сложные комплекты модульного и интеграционного тестирования. Возможности EiffelStudio AutoTest позволяют разработчику выполнять и тестировать код класса Eiffel от уровня функций (например, модульное тестирование) до систем целого класса (например, интеграция). Таким образом, выполнение этого кода также выполняет контракты выполняемых функций и атрибутов. Таким образом, EiffelStudio AutoTest представляет собой средство для выполнения «тестов» или предположений условий Проекта по Контракту. Следовательно, модульное и интеграционное тестирование не требует повторного тестирования с помощью утверждений или тестовых оракулов, что уже было закодировано как спецификация в контрактах текста класса.

EiffelStudio AutoTest предоставляет пользователю три метода создания тестовых примеров.

Во-первых, для тестов, созданных вручную, EiffelStudio AutoTest создает тестовый класс, содержащий основу для теста. Пользователь должен предоставить только сам тестовый код.

Во-вторых, EiffelStudio AutoTest предоставляет метод для создания нового теста на основе сбоя приложения во время выполнения. Этот тип теста называется извлеченным . Если во время работы целевой системы происходит непредвиденный сбой, EiffelStudio AutoTest может работать на основе информации, доступной в отладчике, чтобы создать новый тест, который воспроизведет состояние и вызовы, вызвавшие сбой. После устранения проблемы извлеченный тест можно добавить в набор тестов в качестве защиты от регрессии проблемы.

Третий метод создания тестов производит так называемые сгенерированные тесты. В этом сценарии пользователь предоставляет EiffelStudio AutoTest классы, для которых должны быть созданы тесты, и некоторую дополнительную информацию, используемую для управления генерацией тестов. Затем инструмент начинает вызывать подпрограммы в целевых классах, используя рандомизированные значения аргументов. Для каждого уникального постусловия или нарушения инварианта класса EiffelStudio AutoTest создает один новый тест, воспроизводящий неудачный вызов.

История [ править ]

EiffelStudio берет свое начало от первой реализации Eiffel, разработанной Interactive Software Engineering Inc. (предшественник Eiffel Software) в 1986 году. Истоки нынешней технологии, похоже, восходят к «EiffelBench», начатой ​​в 1990 году в связи с дизайн версии языка Eiffel 3 (как описано в Eiffel: The Language , см. библиографию). EiffelBench была переименована в «EiffelStudio» примерно в 2001 году; Это также время, когда среда вышла за рамки своего происхождения из Unix и нацелена на Windows и другие платформы.

Основные выпуски с 2001 года и некоторые новые функции для каждого из них:

  • 5.0, июль 2001: первая версия должна быть собственно "EiffelStudio"; интеграция предыдущего инструмента "EiffelCase" для графического дизайна с EiffelBench в форме инструмента EiffelStudio Diagram Tool)
  • 5.1, декабрь 2001 г .: первая версия с поддержкой .NET ( пресс-релиз (PDF)). Перед выпуском он назывался "Eiffel #" [2] .
  • 5.2, ноябрь 2002 г .: новый EiffelBuild для проектирования графического интерфейса пользователя, расширенная отладка, новые механизмы интеграции C и C ++, улучшенные средства двусторонней передачи для инструмента Diagram ( пресс-релиз ).
  • 5.3, март 2003: для Eiffel .NET доступна технология инкрементального компилятора. Eiffel2Java Java-интерфейс, EiffelStore (интерфейс реляционной базы данных) теперь доступен для .NET, первая версия Mac OS, улучшения производительности ( пресс-релиз ).
  • 5.4, ​​ноябрь 2003 г .: новый механизм преобразования, значительные улучшения производительности во время выполнения (в частности, для агентов ), значительные улучшения скорости компиляции, улучшенная поддержка многопоточности, основные улучшения EiffelBuild, первая поддержка новых механизмов, определенных комитетом ECMA Eiffel, поддержка для предусловий и постусловий во внешних (например, C) подпрограммах, прозрачный способ вызова перегруженных подпрограмм .NET из Eiffel ( пресс-релиз ).
  • 5.5, сентябрь 2004 г .: стыковка, улучшенный отладчик, новые языковые функции ECMA ( пресс-релиз ).
  • 5.6, август 2005 г .: усовершенствованный инструмент для создания диаграмм (поддержка UML, принудительно-ориентированные графики, улучшенная двусторонняя передача), новый мастер EiffelCOM для генерации компонентов Microsoft COM , улучшенное завершение классов, более быстрая генерация кода .NET ( пресс-релиз ).
  • 5.7, октябрь 2006: добавление ISO / ECMA Eiffel (встроенные агенты, новая «расширенная» семантика, именованные кортежи, поддержка Unicode ), средства рефакторинга, новый способ настройки системы проекта, метрики ( пресс-релиз ).
  • 6.0, июнь 2007: добавление ISO / ECMA Eiffel (универсальность множественных ограничений, восьмеричная и двоичная нотация для целых чисел), новый редактор с вкладками, новые возможности стыковки, позволяющие пользователю определять свое рабочее пространство, контекстное меню доступно в дополнение к выбору и отпусканию, инструмент зависимости ( пресс-релиз ).
  • 6.1, ноябрь 2007 г .: ( пресс-релиз ).
  • 6.2, май 2008 г .: ( пресс-релиз ).
  • 6.3, декабрь 2008 г .: ( пресс-релиз ).
  • 6.4, июнь 2009 г .: ( пресс-релиз ).
  • 6.5, ноябрь 2009 г .: ( пресс-релиз ).
  • 6.6, май 2010 г .: ( пресс-релиз ).
  • 6.7, ноябрь 2010 г .: ( пресс-релиз ).
  • 6.8, май 2011 г. Включает первую реализацию средств поддержки SCOOP , простого параллельного объектно-ориентированного программирования . ( пресс-релиз ).
  • 7.0, ноябрь 2011 г. Включает в себя улучшения производительности и функциональности средства параллельной разработки SCOOP , библиотеку графического интерфейса и инструментальную поддержку для структур ленточного интерфейса, улучшенную поддержку разработки программного обеспечения, защищенного от недействительности , и многие другие улучшения.
  • 7.1, июнь 2012 г. Включает сборку мусора процессора SCOOP . Множественные улучшения информационной системы Eiffel, связывающие код приложения с соответствующими внешними ресурсами, такими как документы с требованиями.
  • 7.2, февраль 2013 г.
  • 7.3, июль 2013 г.
  • 13.11, декабрь 2013 г. Этот выпуск знаменует начало использования новой схемы нумерации версий . ( Примечания к выпуску ) ( пресс-релиз ).
  • 14.05, май 2014 г. Включает новый инструмент Eiffel Inspector (инструмент статического анализа, помогающий поддерживать высокое качество кода). ( пресс-релиз ).
  • 15.01, январь 2015 г. Новая среда выполнения SCOOP значительно улучшает производительность. ( пресс-релиз ).
  • 15.08, август 2015 г. Улучшенное решение EiffelWeb для создания приложения веб-сервера. ( пресс-релиз ).
  • 15.12, декабрь 2015. Улучшения языка (новая нотация типа агента). ( пресс-релиз ).
  • 16.05, май 2016 г. Техническая версия. ( пресс-релиз ).
  • 17.01, январь 2017 г. Механизм возможностей библиотеки для документирования и применения поддерживаемых параметров компиляции. Шаблоны кода. ( Выпуск 17.01 )
  • 17.05, май 2017. Лучшее обнаружение устаревших функций. Выбирайте и отбрасывайте локальные переменные. ( Выпуск 17.05 )
  • 18.01, февраль 2018. Интегрированный анализатор кода Deeper. Улучшенные правила типов для условных выражений и массивов манифеста. Особенности класса. ( Выпуск 18.01 ).
  • 18.07, июль 2018. Упрощенные правила для функций класса. Последующие скобочные выражения. Цели удаленного проекта. ( Выпуск 18.07 ).
  • 18.11, декабрь 2018. Все контейнеры могут использоваться в итерационной форме цикла, а линейные могут быть инициализированы из других. ( Выпуск 18.11 ).
  • 19.05, май 2019. Операторы Unicode, HiDPI, удаление мертвого «класса», оптимизация компилятора. ( Выпуск 19.05 ).
  • 20.05, май 2020 г. Выражение с несколькими ветвями, нетипизированная оценка строки манифеста на основе содержимого. ( Выпуск от 20.05 ).
  • 20.11 , ноябрь 2020. После занятий, WrapC. ( Выпуск от 20.11 ).

Анализатор кода [ править ]

Анализатор кода (бывший инспектор Эйфель ) - это автоматизированная программа тестирования программного обеспечения Eiffel и статического анализа, выпущенная Eiffel Software, первоначально созданная в результате проекта магистерской диссертации в ETH Zurich . [1]

Анализатор кода - это инструмент статического анализа кода на основе правил, который работает как из встроенного режима в EiffelStudio, так и из командной строки . Он использует абстрактное синтаксическое дерево (AST), созданное компилятором Eiffel, а затем генерирует граф потока управления (CFG), который вычисляется модулем кода в инструменте. Затем CFG и AST посещаются по ряду определенных правил. Нарушения любого правила сообщаются пользователю в виде ошибок, предупреждений или подсказок. Каждое нарушение правила сообщает, какое именно правило было нарушено.

См. Также [ править ]

  • Eiffel (язык программирования)
  • Список интегрированных сред разработки

Ссылки [ править ]

  1. ^ Zurfluh, Стефан; Чаннен, Джулиан; Мейер, Бертран (1 апреля 2014 г.), Анализ кода на основе правил (PDF) , ETH Zurich , получено 25 мая 2014 г.

Библиография [ править ]

  • Программное обеспечение Eiffel: руководство по EiffelStudio. В Интернете по адресу https://www.eiffel.org/documentation
  • Бертран Мейер: Eiffel: The Language , Prentice Hall, 1991 (второе исправленное издание, 1992).
  • Бертран Мейер: объектно-ориентированная среда: принципы и приложения, Prentice Hall. 1995 (описывает принципы, лежащие в основе оригинальной EiffelBench).
  • Ким Валден и Жан-Марк Нерсон: Бесшовная объектно-ориентированная архитектура программного обеспечения , Прентис Холл, 1995 г. (содержит описание метода и обозначений BON).

Внешние ссылки [ править ]

  • Эйфелева Сообщество
  • Домашняя страница Eiffel Software на eiffel.com
  • Для участников с открытым исходным кодом: домашняя страница Eiffel в ETH Zurich
  • EiffelStudio в SourceForge
  • Примечания к выпуску EiffelStudio