EiffelStudio - Википедия - EiffelStudio

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

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

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

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

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

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

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

Технология компиляции

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

Интерпретатор EiffelStudio полагается на байт-код ориентированный виртуальная машина. Компилятор генерирует либо C или же .СЕТЬ CIL (Общий промежуточный язык).

Техника туда и обратно

Инструмент Diagram Tool 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 (как описано в Эйфель: языксм. библиографию). 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 Tool (пресс-релиз ).
  • 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 г. Этот выпуск знаменует начало использования схема нумерации новой версии. (Release Note ) (пресс-релиз ).
  • 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 выпуск ).

Анализатор кода

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

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

Смотрите также

Рекомендации

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

Библиография

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

внешняя ссылка