Процесс как код: Cloud R&D IDE — Unicode

облачные вычисления

В предыдущей серии"Облачные исследования и разработки: исследования и разработки как код«В статье мы представили замкнутый цикл разработки программного обеспечения. В то же время вВода: Модель архитектуры облачных исследований и разработок"Представляет некоторые из шаблонов, которые нам нужны при проектировании такой среды разработки. Сегодня в качестве этой серии практик приземления мы познакомимОблачная среда разработки для исследований и разработокИдея дизайна и как ее реализовать, ну и конечно немного раннего кода:GitHub.com/in herd/Сотрудничество ООН….

Первое утверждение: это концептуальный дизайн IDE, который не подходит ни для какой производственной среды.

Прежде чем мы начнем читать, для лучшего понимания давайте рассмотрим индустрию разработки программного обеспечения:

  • Философия DevOpsИндустрия программного обеспечения в Китае добилась больших успехов, и она получила широкое признание в компаниях, включая традиционные предприятия (банковское дело, производство), и получила широкое распространение.
  • облачная технологияЭто стало основной тенденцией рынка. Облачная миграция и перенос устаревших систем в облако — горячая тема на рынке.
  • Методология ЧжунтайРеальных историй успеха на практике не хватает.
  • Платформа с низким кодом / без кодаПостепенно стать новой целью строительства.
  • облачная разработкаПоявляется все больше и больше мелких и средних вариантов использования.
  • Код, сгенерированный ИИпроверяется в малом масштабе.

В отрасли основное внимание уделялосьКак повысить техническую производительность?Сейчас технологии вышли на новый этап, и трансформация требований сильно ограничивает скорость развития людей. Таким образом, независимо от того, насколько хорошо реализована наша разработка DevOps и облачных вычислений, она упадет в узкое место изоляции между требованиями и технологиями. Вот почему нам нужноОблачные исследования и разработкиТеоретическая система :), способ кодирования, универсальное решение проблемы спроса, дизайна и кода.

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

Нам нужен контейнер для интеграции этого содержимого, шаблонов и кодов.Это Uncode, концептуальная облачная среда разработки.

Unicode, облачная среда разработки

Uncode — это концептуальная IDE нового поколения, разработанная для эпохи облачных исследований и разработок. характеристика:

  • Обработано в язык домена. Процесс как код
  • Все это DSL. Кодируйте все
  • Заполнение пробелов/выборочное программирование.
  • Среда разработки — это процесс.

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

Напротив, традиционные универсальные порталы DevOps, хотя вы и можете пройти через них, не связаны между собой и не спроектированы. Близким родственником является GitOps, где декларативная инфраструктура и приложения системы приложений хранятся в репозитории Git. Но они не замкнутые и не полные.

Облачный режим R&D IDE: процесс — это доменный язык

Возвращаясь к разработке программного обеспечения, наша разработка программного обеспечения должна начинаться с большой функции или эпической истории, которая превращается вfeature, как в огурце:

# author: Phodal HUANG
# status: doing
# language: zh-CN
功能: 第一个用户故事

  场景打开 Uncode
  假如我在 Terminal 工具里
  当输入 uncode
  那么则能在 Uncode IDE 里打开当前项目

Перед этим этапом дизайнер требований преобразует требования в истории, и в этом записывается взаимосвязь между историями и функциями.featureсередина. Разработчик видит требование из IDE и отмечает соответствующий статусstatus, вы можете перейти к этапу разработки кода.

На этапе проектирования мы сначала разработалиdesignтрех видов:flow,model,ui, что соответствует Flow Design, Mockup Design и UI Design. И часть, которую мы хотим реализовать в Unicode, — это привязка требований к моделям, потокам и пользовательскому интерфейсу. Вокруг модели мы также должны создать единый предметный язык для автоматизации соответствующего интерфейса и дизайна. С точки зрения шаблона это похоже на разработку без кода / с низким кодом.

Разница только в том, как это описано. Только описывая контент на предметно-ориентированном языке, мы можем разумно реорганизовать систему.

Режим Cloud R&D IDE: все в файле

Основная философия Linux/Unix гласит: «Все есть файл».

В сегодняшней среде разработки мы выбираем карты на доске Канбан или генерируем их с помощью редактора с низким кодом, а используемым носителем данных является база данных. База данных не существует в среде разработки, а размещена на удаленном сервере. Это создает еще одну болевую точку, которую нельзя просто обратить вспять, требования и изоляцию кода и так далее.

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

  • «Неподдельный»
  • «Шрамы на всем пути»
  • "отслеживаемый"
  • «Открыто и прозрачно»
  • «Коллективное обслуживание».

Да, это система блокчейн. Как только ваши потребности изменятся, вы сразу почувствуете это. Однако, как только ваш код не соответствует модели, ваш код не может быть зафиксирован или модель будет автоматически изменена :(.

Облачный режим R&D IDE: среда разработки — это процесс

В качестве интегрированной среды разработки существующиеУниверсальная платформа для совместной работы по управлению исследованиями и разработками программного обеспечения DevOpsдолжны использоваться только в административных и презентационных целях. Что касается самого дизайна, Dashboard и инструмент с открытым исходным кодом имеют собственное разделение труда.

У нас есть требования к базе кода, тогда мы можем использовать IDE:

  1. Повторно визуализируйте требования локально в виде канбан-доски.
  2. Визуализируйте язык предметной области локально и свяжите его с кодом.
  3. Для выделения требуются все измененные блоки кода. Например, контроллер, вид и т. д.
  4. Обратные изменения модели в проекте для отслеживания правильности проекта в режиме реального времени.

Мы также можем делать что-то не совсем правильное, например, ограничивать область модификации разработчика.

Режим Cloud R&D IDE: заполнение пробелов/выборочное программирование

У архитекторов программного обеспечения часто есть следующие болевые точки:

  • В условиях неопытных разработчиков сложно быстро продвигать разработку системы.
  • Разработчику не хватает понимания системы и он исправляет неправильный код не в том месте.

Итак, вернемся кTypeFlowС точки зрения, поскольку мы спроектировали модель и спроектировали ввод и вывод, мы должны иметь возможность сгенерировать промежуточный метод и его возвращаемое значение, а также спроектировать для него фиктивный объект. как:

@RequestMapping("/")
String home() {
		return "Hello, World!"
}

Этот режим очень легко реализовать для разработки бизнес-приложений — генерация различных функций в процессе привязки и т.д.

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

Базовые элементы IDE для исследований и разработок в облаке

С этой точки зрения нам просто нужно хорошо поработать над IDE. Однако это не так, нам нужно сделать еще несколько вещей:

  1. Разработка — это развертывание. То есть локальный dev — это сервер dev, который может напрямую обращаться к существующей системе.
  2. Все это DSL. Обладать определенным уровнем навыков проектирования языков программирования.
  3. API для API. Он абстрагирует существующие внутренние и внешние API для предоставления быстрых и удобных API.

Разработка как развертывание — облачная среда разработки

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

Ускорьте совместный процесс отладки и тестирования. Когда наша локальная среда перейдет в облако, как только нам понадобится подключение к другим системам, вся эффективность разработки и тестирования будет значительно повышена. Например, наш интерфейс должен предоставить еще один параметр, после традиционного режима мы должны запустить его локально, а затем собрать и развернуть через конвейер. Теперь этот процесс больше не нужен, просто настройте шлюз и легко его развивайте.

Ускорение строительства окружения. Нам больше не нужно настраивать среду разработки локально, и для отладки прямо в локальной среде IDE достаточно одного щелчка мыши.

На рынке уже есть концепция, которая едва совместима:Nocalhost

Абстракция абстракции: DSL

Абстракция требований, дизайна, разработки, тестирования и т. д. была в центре моего исследования в прошлом году, которое включает в себя:

  • абстракция потребностей
  • Дизайн становится абстрактным
    • Язык описания архитектуры
    • Единый язык моделирования
  • Абстракция управления версиями
  • Абстракция инструмента сборки

Преобразовав эту последовательность шагов в предметно-ориентированный язык — только путем абстрагирования процессов, инструментов, поведения мы можем оптимизировать всю систему.

Glue Design: API для API

Разработка программного обеспечения — сложная командная деятельность. В системе мы должны ассоциироваться с большим количеством внутренних и внешних систем. Чтобы упростить работу разработчиков, нам нужно предоставить новый API для инкапсуляции существующего API.

Например, в существующем режиме для записи лога нам нужно ввести соответствующую зависимость в инструменте управления зависимостями, а затем добавить соответствующий код. Хотя все API обновляются, эта серия должна быть сделана самой IDE. В этом режиме нам нужно только ввести соответствующийsnippets, может завершить эту серию автоматизированных технологических операций.

технические детали

Наконец, вернемся к коду:GitHub.com/in herd/Сотрудничество ООН…

Архитектурный дизайн

Я решил использовать новую процедуру проектирования архитектуры, которую я разработал, чтобы продемонстрировать архитектуру Unicode IDE. Из-за большой неопределенности существующая система устроена как-то между монолитностью и микроархитектурой + модульность, я об этом подумал и назвал позже.жидкостный режим. Схема непредсказуемого разделения архитектурных единиц в процессе непрерывной эволюции.

Что касается режима движения, то он состоит из четырех режимов:

  • Модульный.
  • Управление и фильтры. В основном для разработки предметно-ориентированных языков
  • Партнерский режим (боковой). Разделяйте процессы, такие как синтаксический анализ языка, и реализуйте кроссплатформенность с помощью вызовов процессов.
  • контейнерный мост. Изолируйте представление пользовательского интерфейса от логики и сделайте большинство компонентов IDE независимыми от пользовательского интерфейса.

При этом в физическом проекте системы планируется принятьУправление доменомспособ продолжить.

Выбор кадра

Учитывая, что это низкоуровневая разработка + системное программирование, мы:

  1. Используйте Rust в качестве основного языка разработки
  2. Для отображения пользовательского интерфейса временно используется Tauri (контейнер WebView) + React для отображения требований (локальный канбан) и дизайна (моделирование и т. д.).
  3. Используйте TypeScript в качестве языка разработки части пользовательского интерфейса
  4. Используйте RPC в качестве протокола связи с несколькими DSL.
  5. ...

Тем не менее, этот проект будет продолжать развиваться в команде Inherd~~.

Часто задаваемые вопросы и другие

Код:GitHub.com/in herd/Сотрудничество ООН…

vs Intellij IDEA or VSCode / Theia

Это не идеальные конкурентные отношения, функция кодирования этой части все еще более популярна. Unicode не строит эти колеса заранее, он просто интегрирует их явно или интегрирует.

Unicode отдает приоритет локализации DevOps и интегрирует ее в процесс разработки.

разное

Последнее предупреждение: это концептуальный дизайн IDE, который пока не подходит ни для одной производственной среды.