ЭйфельСтудия
Эта статья нуждается в дополнительных цитатах для проверки . ( декабрь 2015 г. ) |
EiffelStudio — это среда разработки для языка программирования Eiffel, разработанная и распространяемая Eiffel Software.
EiffelStudio включает в себя комбинацию инструментов, интегрированных в единый пользовательский интерфейс: компилятор, интерпретатор, отладчик, браузер, инструмент метрики, профилировщик, инструмент диаграммы и инспектор кода. Пользовательский интерфейс основан на ряде конкретных парадигм пользовательского интерфейса, в частности на принципе «выбирай и бросай» для эффективного просмотра.
EiffelStudio доступен на ряде платформ, включая Windows , Linux , Mac OS , Solaris , VMS , RaspberryPi . Исходный код доступен под лицензией GPL ; также доступны другие коммерческие лицензии.

Статус, лицензия и процесс сообщества
[ редактировать ]EiffelStudio — это с открытым исходным кодом разработка , бета-версии следующего выпуска которой регулярно доступны.
Сообщество Эйфеля активно участвует в его развитии; его официальный сайт — Eiffel.org , где перечислены проекты и ресурсы. База исходного кода обычно доступна для извлечения через Subversion или Git . Также доступны дискуссионные форумы и тому подобное.
С 2019 года новых выпусков версии с открытым исходным кодом не выпускалось, а репозиторий svn защищен паролем. Код по-прежнему доступен через публичное зеркало GitHub, но с задержкой в 12 месяцев.
Технология компиляции
[ редактировать ]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 позволяют разработчику выполнять и тестировать код класса 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 , см. библиографию). Примерно в 2001 году EiffelBench был переименован в EiffelStudio; это также время, когда среда вышла за рамки своего происхождения из Unix и стала ориентирована на Windows и другие платформы.
Основные выпуски с 2001 года и некоторые новые функции для каждого из них:
- 5.0, июль 2001 г.: первая версия будет собственно «EiffelStudio»; интеграция предыдущего инструмента «EiffelCase» для графического дизайна с EiffelBench в форме инструмента диаграмм EiffelStudio)
- 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 , Simple Concurrent Object-Oriented Programming . ( пресс-релиз ).
- 7.0, ноябрь 2011 г. Включает улучшения производительности и функциональности средства параллельной разработки SCOOP , библиотеку графического пользовательского интерфейса и поддержку инструментов для ленточных интерфейсных структур, улучшенную поддержку безопасной разработки программного обеспечения и множество других улучшений.
- 7.1, июнь 2012 г. Включает сбор мусора процессора SCOOP . Множественные улучшения в информационной системе Eiffel, связывающие код приложения с соответствующими внешними ресурсами, такими как документы с требованиями.
- 7.2, февраль 2013 г.
- 7.3, июль 2013 г.
- 13.11, декабрь 2013. Этот выпуск знаменует начало использования новой схемы нумерации версий . ( Примечание к выпуску ) ( пресс-релиз ).
- 14 мая 2014 г. Включает новый инструмент Eiffel Inspector (инструмент статического анализа, помогающий поддерживать высокое качество кода). ( пресс-релиз ).
- 15 января 2015 г. Новая среда выполнения SCOOP значительно повышает производительность. ( пресс-релиз ).
- 15 августа 2015 г. Улучшено решение EiffelWeb для создания приложений веб-сервера. ( пресс-релиз ).
- 15.12, декабрь 2015. Улучшения языка (новое обозначение типа агента). ( пресс-релиз ).
- 16 мая 2016 г. Выпуск технического обслуживания. ( пресс-релиз ).
- 17 января 2017 г. Механизм возможностей библиотеки для документирования и реализации поддерживаемых вариантов компиляции. Шаблоны кода. ( выпуск 17.01 )
- 17 мая 2017 г. Улучшено обнаружение устаревших функций. Выбор и удаление локальных переменных. ( выпуск 17.05 )
- 18 января 2018 г. Углубленный интегрированный анализатор кода. Улучшены правила типов для условных выражений и массивов манифестов. Особенности класса. ( выпуск 18.01 ).
- 18.07, июль 2018. Смягченные правила для особенностей класса. Последующие выражения в скобках. Удаленные цели проекта. ( выпуск 18.07 ).
- 18.11, декабрь 2018. Все контейнеры можно использовать в итерационной форме цикла, а линейные можно инициализировать из других. ( выпуск 18.11 ).
- 19 мая 2019 г. Операторы Unicode, HiDPI, удаление мертвых классов, оптимизация компилятора. ( выпуск 19.05 ).
- 20 мая 2020 г. Многоветвевое выражение, оценка нетипизированной строки манифеста на основе содержимого. ( выпуск 20.05 ).
- 20.11, ноябрь 2020. После занятий WrapC. ( выпуск 20.11 ).
- 21 ноября 2021 г. Переход на GTK3 для Linux, Unix и лучшее присутствие в MAC OS, новый инструмент управления версиями. ( выпуск 21.11 ).
- 22 мая 2022 г. Инструмент контроля версий и улучшения пользовательского интерфейса. ( выпуск 22.05 ).
- 22.12, декабрь 2022. Новая платформа, поддержка ARM ( выпуск 22.12 ).
- 23 сентября 2023 г. Поддержка NETcore ( выпуск 23.09 ).
- 24 мая 2024 г. Улучшена поддержка NETcore и отладка новых команд Composer ( выпуск 24.05 ).
Анализатор кода
[ редактировать ]Анализатор кода (ранее Inspector Eiffel ) — это автоматизированная программного обеспечения Eiffel программа тестирования и статического анализа , выпущенная Eiffel Software, первоначально созданная в результате проекта магистерской диссертации в ETH Zurich . [1]
Анализатор кода — это инструмент статического анализа кода на основе правил, который работает как во встроенном режиме EiffelStudio, так и в командной строке . Он использует абстрактное синтаксическое дерево (AST), созданное компилятором Eiffel, а затем генерирует граф потока управления (CFG), который вычисляется модулем кода в инструменте. Затем CFG и AST проверяются по ряду определенных правил. О нарушениях любого правила пользователю сообщается в виде ошибок, предупреждений или подсказок. При каждом нарушении правила сообщается, какое именно правило было нарушено.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Цурфлю, Стефан; Чаненнен, Джулиан; Мейер, Бертран (1 апреля 2014 г.), Анализ кода на основе правил (PDF) , ETH Zurich , получено 25 мая 2014 г.
Библиография
[ редактировать ]- Программное обеспечение Eiffel: руководство EiffelStudio. Интернет по адресу https://www.eiffel.org/documentation.
- Бертран Мейер: Эйфель: Язык , Прентис Холл, 1991 (второе исправленное издание, 1992).
- Бертран Мейер.: Объектно-ориентированная среда: принципы и приложения, Прентис Холл. 1995 (описывает принципы, лежащие в основе оригинального EiffelBench).
- Ким Вальден и Жан-Марк Нерсон: Бесшовная объектно-ориентированная архитектура программного обеспечения , Prentice Hall, 1995 (содержит описание метода и обозначений BON).