El proceso es código: I + D en la nube, IDE-Uncode de código bajo

En la serie anterior de artículos " I + D en la nube: I + D es código ", presentamos el ciclo cerrado codificado de la ingeniería de software. Al mismo tiempo, " Water: Cloud R&D Architecture Mode " introdujo algunos de los patrones que necesitamos para diseñar un entorno de desarrollo de este tipo. Hoy, como una serie de prácticas de aterrizaje, presentaremos las ideas de diseño del IDE de I + D en la nube y cómo implementarlo. Por supuesto, hay un poco de código inicial: https://github.com/inherd/uncode.

Primera declaración: este es un diseño de IDE conceptual y no es adecuado para ningún entorno de producción por el momento.

Antes de comenzar a leerlo, para que todos comprendan mejor, tenemos que revisar la industria de la ingeniería de software:

  • El concepto DevOps ha logrado un progreso considerable en la industria del software nacional y ha sido ampliamente aceptado por empresas, incluidas las empresas tradicionales (bancos, manufactura) y ha sido ampliamente promovido.

  • La tecnología nativa de la nube se ha convertido en una tendencia dominante en el mercado. La migración a la nube y la migración de sistemas heredados a la nube son un tema candente en el mercado.

  • La metodología de China y Taiwán todavía carece de casos reales de éxito en la práctica.

  • Las plataformas de código bajo / sin código se han convertido gradualmente en un nuevo objetivo de construcción.

  • El desarrollo en la nube tiene cada vez más casos de aplicación pequeños y medianos.

  • La generación de código de IA se está verificando a pequeña escala.

Desde la perspectiva de la industria en su conjunto, el enfoque de las personas siempre ha sido cómo mejorar la productividad tecnológica.  Ahora la tecnología ha alcanzado una nueva etapa y la conversión de requisitos limita en gran medida la velocidad del desarrollo de las personas. Por lo tanto, no importa qué tan bien se implementen nuestros DevOps y el desarrollo en la nube, caeremos en el cuello de botella del aislamiento de la demanda y la tecnología. Es por eso que necesitamos un sistema teórico de investigación y desarrollo en la nube :), a través del método de codificación, una solución integral al problema de la demanda, el diseño y luego el código.

Para la teoría de investigación y desarrollo en la nube, diseñé la base teórica, la arquitectura de software y el modelo de desarrollo, y verifiqué una serie de cosas, como: codificación de documentos, codificación de requisitos, codificación de código, etc.

Necesitamos un contenedor para integrar estos contenidos, patrones y códigos. Se trata de Uncode, un IDE de desarrollo conceptual en la nube.

Uncode, un IDE de desarrollo en la nube

Uncode es un IDE conceptual de próxima generación diseñado para la era de la investigación y el desarrollo en la nube. característica:

  • El proceso se transforma en un idioma de dominio . Procesar como código

  • Todo es DSL . Codificación de todo

  • El entorno de desarrollo es el proceso .

En pocas palabras, puede hacerlo en este IDE: escribir requisitos, convertir requisitos en diseño, diseñar códigos asociados, programar en modo Zen y conectarse en línea después del desarrollo.

Por el contrario, el portal DevOps de ventanilla única tradicional, aunque puede completarlo saltando, no se puede interconectar ni diseñar. Es similar a GitOps, que almacena la infraestructura declarativa y las aplicaciones del sistema de aplicaciones en el repositorio de Git. Pero no son de circuito cerrado ni están completos.

Modelo IDE de I + D en la nube: el proceso es el lenguaje del dominio

Volviendo al desarrollo de software, nuestras necesidades de desarrollo de software comienzan con una gran característica o una historia épica, estas historias se transformarán en una  feature, como Cucumber:

# author: Phodal HUANG
# status: doing
# language: zh-CN
功能: 第一个用户故事
场景打开 Uncode
假如我在 Terminal 工具里
当输入 uncode
那么则能在 Uncode IDE 里打开当前项目

Antes de este paso, el diseñador de requisitos convierte el requisito en una historia y en ella se registra la relación entre la historia y la característica  feature . Los desarrolladores ven los requisitos del IDE, marcan el estado correspondiente  statusy luego ingresan a la fase de diseño del código.

En la fase de diseño, hemos diseñado el primero  design de tres tipos:  flow,,  modeluicorrespondiente al diseño de flujo, el diseño del modelo y el diseño de interfaz de usuario. La parte que queremos implementar en Uncode es la vinculación de requisitos con modelos, flujos y UI. Alrededor del modelo, tenemos que construir un lenguaje de dominio unificado para automatizar la interfaz y el diseño asociados. En términos de modo, esto es similar al desarrollo sin código / con código bajo.

La única diferencia es la descripción. Solo mediante el uso de un lenguaje específico del dominio para describir el contenido podemos reconstruir razonablemente el sistema.

Modelo IDE de I + D en la nube: todo es un archivo

La filosofía central de Linux / Unix es "todo es un archivo".

En el entorno de desarrollo actual, seleccionamos tarjetas en el tablero Kanban, o las generamos a través de un editor de código bajo, y los medios de almacenamiento utilizados son todas las bases de datos. La base de datos no existe en el entorno de desarrollo, pero se coloca en un servidor remoto. Esto crea otro punto de dolor, como la incapacidad de simplemente revertir la asociación, el aislamiento de los requisitos y el código, etc.

Por lo tanto, como segundo modo de IDE de desarrollo en la nube, todo el contenido se guarda en archivos y se administra mediante herramientas de administración de versiones (como Git). Si nuestros requisitos se almacenan en la base de datos en una situación similar a un código, se pueden lograr las siguientes características:

  • "Imperdonable"

  • "Deja un rastro hasta el final"

  • "Trazable"

  • "Abierto y transparente"

  • "Mantenimiento colectivo"

Sí, este es un sistema blockchain. Una vez que la demanda ha cambiado, puede percibirla de inmediato. Sin embargo, una vez que su código no se ajusta al modelo, su código no se puede enviar o el modelo se modifica automáticamente :(.

Modelo IDE de I + D en la nube: el entorno de desarrollo es el proceso

Como entorno de desarrollo integrado, la plataforma de colaboración de gestión de I + D del software DevOps de ventanilla única existente   solo debe utilizarse con fines de gestión y visualización. En términos de diseño en sí, un tablero y una herramienta de código abierto tienen su propia división del trabajo.

Tenemos requisitos en la base del código, luego podemos usar el IDE:

  1. Vuelva a visualizar la demanda localmente en forma de Kanban.

  2. Visualice el lenguaje del campo de diseño localmente y asócielo con el código.

  3. Resalte todos los bloques de código que deben modificarse. Como controlador, vista, etc.

  4. Correlacione de forma inversa las modificaciones del modelo con el diseño para realizar un seguimiento de la corrección del diseño en tiempo real.

También podemos hacer cosas que no son tan correctas, como bloquear el alcance de las modificaciones de los desarrolladores.

Modo IDE de I + D en la nube: programación selectiva / completa

Para los arquitectos de software, las personas a menudo tienen tales puntos débiles:

  • Frente a los desarrolladores sin experiencia, es difícil promover rápidamente el desarrollo del sistema.

  • Los desarrolladores no comprenden el sistema y modifican el código incorrecto en el lugar incorrecto.

Por lo tanto, volviendo al punto de vista de TypeFlow, ahora que hemos diseñado el modelo y diseñado la entrada y la salida, debemos ser capaces de generar el método intermedio y su valor de retorno, y diseñar un objeto simulado para él. Tal como:

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

Este modelo es muy fácil de implementar para el desarrollo de aplicaciones comerciales, ya que genera varias funciones en el proceso de vinculación, etc.

Programación selectiva . Una vez que todos los códigos de nuestra organización están indexados, tenemos la capacidad de identificar la entrada y la salida, así como el nombre del método correspondiente, y luego recomendar el método correspondiente en el IDE para que usted elija.

Elementos básicos del IDE de I + D en la nube

Mírelo así, solo tenemos que hacer bien las cosas del IDE. Sin embargo, este no es el caso, todavía hay algunas cosas que debemos hacer:

  1. El desarrollo es despliegue . Es decir, el desarrollador local es el servidor de desarrollo, que se puede conectar directamente al sistema existente.

  2. Todo es DSL . Tener un cierto nivel de capacidad de diseño de lenguajes de programación.

  3. API API . Es decir, las API internas y externas existentes se abstraerán y diseñarán para proporcionar API de uso rápido.

El desarrollo es un entorno de desarrollo de implementación en la nube

Desde una perspectiva de desarrollo, hemos estado desperdiciando el entorno local y el entorno de desarrollo en línea de un lado a otro, y al mismo tiempo hay un tiempo de ejecución de prueba correspondiente, tiempo de compilación, etc. Necesitamos un mecanismo en el entorno de desarrollo de la nube .

Acelere el proceso de depuración y pruebas conjuntas . Cuando nuestro entorno local está en la nube, una vez que necesitamos interactuar con otros sistemas, toda la eficiencia del desarrollo y las pruebas mejorará enormemente. Por ejemplo, nuestra interfaz necesita proporcionar un parámetro más. Después del modo tradicional, tenemos que ejecutarlo localmente y luego construir e implementar a través de la canalización. Ahora, este proceso ya no es necesario, solo configure el Gateway y desarrolle fácilmente.

Acelere la construcción del entorno . Ya no necesitamos configurar el entorno de desarrollo localmente, solo un clic para depurar directamente en el IDE local.

Ya existe un concepto básico en el mercado: Nocalhost

Abstracción abstracta: DSL

La abstracción de requisitos, diseño, desarrollo, pruebas, etc. siempre ha sido el foco de mi investigación el año pasado. Incluye:

  • Exige abstracción

  • Diseño como abstracto

    • Lenguaje de descripción de arquitectura

    • Lenguaje de modelado unificado

  • Abstracción de la gestión de versiones

  • Construir abstracción de herramientas

Esta serie de pasos se convierte en un lenguaje específico de dominio; solo mediante la abstracción de procesos, herramientas y comportamientos podemos optimizar todo el sistema.

Diseño de pegamento: API API

El desarrollo de software es una actividad de equipo compleja. En un sistema, tenemos que asociarnos con una gran cantidad de sistemas internos y externos. Para simplificar la carga de los desarrolladores, necesitamos proporcionar una nueva API para encapsular la API existente.

Por ejemplo, en el modo existente, para grabar un registro, necesitamos introducir la dependencia correspondiente en la herramienta de administración de dependencias y luego agregar el código correspondiente. Todas las API se están actualizando y el propio IDE debe completar esta serie. En este modo, solo necesitamos ingresar lo correspondiente para  snippetscompletar esta serie de operaciones de proceso automatizadas.

detalles técnicos

Finalmente, volvemos al código: https://github.com/inherd/uncode/

Diseño arquitectónico

Decidí usar la nueva rutina de diseño de arquitectura que diseñé para mostrar la arquitectura de Uncode IDE. Debido a la gran incertidumbre, el sistema existente está diseñado de una manera entre monolítica y microarquitectura + modularización, lo pensé y lo llamé modo fluido . Un modo de dividir unidades arquitectónicas de manera impredecible en el proceso de evolución continua.

En el modo de conducción, consta de cuatro modos:

  • Modularidad.

  • Gestión y filtros. Principalmente para diseñar lenguajes específicos de dominio

  • Modo socio (sidecar). Separe los lenguajes, como el análisis del lenguaje, en procesos e implemente plataformas cruzadas mediante llamadas a procesos

  • Puente de contenedores. Aísle la presentación de la interfaz de usuario de la lógica y haga que la mayoría de los componentes del IDE no tengan nada que ver con la interfaz de usuario.

Al mismo tiempo, el diseño físico del sistema pretende adoptar un enfoque impulsado por dominios .

Selección de fotogramas

Teniendo en cuenta que se trata de un desarrollo de bajo nivel + programación de sistemas, nosotros:

  1. Utilice Rust como el principal lenguaje de desarrollo

  2. En la visualización de la interfaz de usuario, use temporalmente Tauri (contenedor WebView) + React para mostrar los requisitos (Kanban local) y el diseño (modelado, etc.).

  3. Utilice TypeScript como parte del lenguaje de desarrollo de la interfaz de usuario

  4. Utilice RPC como protocolo de comunicación con múltiples DSL

  5. ……

Aún así, este proyecto continuará desarrollándose en el equipo de Inherd ~~.

FAQ y otros

Código: https://github.com/inherd/uncode/

vs Intellij IDEA o VSCode / Theia

No es una relación completamente competitiva y las funciones de esta parte de la codificación son aún más populares. Uncode no creará ruedas en esta área en la etapa inicial, pero las integrará explícitamente o se integrará.

Uncode prioriza la localización de DevOps y la integra en el proceso de desarrollo.

otro

Una última afirmación: este es un diseño de IDE conceptual y no es adecuado para ningún entorno de producción por el momento. Bienvenido a unirse al grupo de seminarios de WeChat sobre investigación y desarrollo en la nube.

Supongo que te gusta

Origin blog.csdn.net/gmszone/article/details/115291269
Recomendado
Clasificación