Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
COMPUTER PROJECT IMPLEMENTATION BASED ON A DESIGN OUTLINE
Document Type and Number:
WIPO Patent Application WO/2022/167704
Kind Code:
A1
Abstract:
Provided are a method, device and system for facilitating the design of a computer project architecture and the subsequent automatic implementation thereof, on the basis of a hand-drawn/written outline (for example, on paper). The outline is directly converted into a tool that will be used automatically as a basis for the final implementation of the computer project.

Inventors:
RAMÍREZ VICENTE FRANCISCO (ES)
GONZÁLEZ PÉREZ PABLO (ES)
ÁLVAREZ MARTÍNEZ LUIS (ES)
SAUCEDO DE MIGUEL PABLO (ES)
RIVERA MARTÍNEZ MARCOS (ES)
Application Number:
PCT/ES2021/070083
Publication Date:
August 11, 2022
Filing Date:
February 04, 2021
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
TELEFONICA DIGITAL ESPANA SLU (ES)
International Classes:
G06F8/34; G06K9/00; G06N20/00
Foreign References:
US20200097263A12020-03-26
US20190250891A12019-08-15
US20170277518A12017-09-28
KR20190122107A2019-10-29
US20120213429A12012-08-23
CN112114803A2020-12-22
US20210011693A12021-01-14
Attorney, Agent or Firm:
GONZALEZ PECES, Gustavo, Adolfo (ES)
Download PDF:
Claims:
29

REIVINDICACIONES

1. Un método para la implementación de un proyecto informático a partir de n dibujos, n>=1 , realizados a mano por al menos un usuario, donde el método comprende los siguientes pasos realizados por al menos un dispositivo electrónico: a) recibir una o más imágenes de los n dibujos, donde los dibujos representan elementos del proyecto informático; b) detectar los elementos representados en las una o más imágenes aplicando una o más técnicas de visión artificial; c) si los elementos intervinientes en el proyecto informático pueden ser de vahas clases, clasificar los elementos detectados usando un modelo de aprendizaje automático; d) identificar el texto contenido en los elementos detectados mediante reconocimiento óptico de caracteres; e) a partir del texto identificado, detectar si en las una o más imágenes se indican propiedades de configuración y/o interacción de los elementos detectados y si es así, determinar dichas propiedades a partir del texto identificado; f) generar los uno o más ficheros de código que componen el proyecto informático en base, al menos, de los elementos detectados, el texto identificado y, si lo hubiera, las propiedades de configuración y/o interacción de los elementos; donde los dibujos están realizados siguiendo una sintaxis predefinida que define una serie de reglas de correspondencia entre dibujos y elementos del proyecto informático y/o de reglas de correspondencia entre caracteres o grupos de caracteres de texto incluido en los dibujos y propiedades de configuración o de interacción de los elementos del proyecto informático.

2. Un método según la reivindicación 1 , donde el paso e) comprende, a partir del texto identificado, detectar si en las una o más imágenes se indica un flujo de funcionamiento y si es así, determinar dicho flujo a partir del texto 30 identificado y donde, el paso f) además comprende crear rutas dinámicas entre los elementos para la ejecución del flujo determinado.

3. Un método según cualquiera de las reivindicaciones anteriores, donde el proyecto informático es una aplicación web, una base de datos, una arquitectura en la nube o una red neuronal.

4. Un método según cualquiera de las reivindicaciones anteriores, donde el modelo de aprendizaje automático se entrena con un conjunto de datos siguiendo la sintaxis predefinida.

5. Un método según cualquiera de las reivindicaciones anteriores, donde detectar los elementos que se encuentran en las una o más imágenes comprende detectar la posición y dimensión de los elementos.

6. Un método según cualquiera de las reivindicaciones anteriores, donde recibir las imágenes de los uno o más dibujos, comprende: cargar las imágenes en un dispositivo electrónico y recibir a través de una red de comunicaciones las una o más imágenes del dispositivo electrónico donde se han cargado.

7. Un método según cualquiera de las reivindicaciones anteriores, donde el aprendizaje automático comprende el uso de redes neuronales convolucionales profundas.

8. Un método según cualquiera de las reivindicaciones anteriores, donde el modelo de aprendizaje automático usa una técnica de transferencia de aprendizaje.

9. Un método según cualquiera de las reivindicaciones anteriores, donde las imágenes se obtienen mediante fotografía o escaneo de los n dibujos.

10. Un método según cualquiera de las reivindicaciones anteriores, donde la clase de los elementos es alguna de las siguientes: botón, casilla de verificación, botón de opción, imagen, párrafo, etiqueta, entrada o desplegable.

11. Un método según cualquiera de las reivindicaciones anteriores, donde los uno o más ficheros generados en el paso f) se envían a un dispositivo electrónico del al menos un usuario para su descarga.

12. Un método según cualquiera de las reivindicaciones anteriores, donde alguno de los ficheros generado en el paso f) es un fichero HTML.

13. Un dispositivo electrónico para la implementación de un proyecto informático a partir de n dibujos, n>=1 , realizados a mano por al menos un usuario, donde el dispositivo electrónico comprende:

- medios de recepción configurados para recibir una o más imágenes de los n dibujos, donde los dibujos representan elementos del proyecto informático;

- uno o más procesadores electrónicos configurados para: detectar los elementos representados en las una o más imágenes aplicando una o más técnicas de visión artificial; si los elementos intervinientes en el proyecto informático son de varias clases, clasificar los elementos detectados usando un modelo de aprendizaje automático; identificar el texto contenido en los elementos detectados mediante reconocimiento óptico de caracteres; a partir del texto identificado, detectar si en las una o más imágenes se indican propiedades de configuración o interacción de los elementos detectados y si es así, determinar dichas propiedades a partir del texto identificado; generar los uno o más ficheros de código que componen el proyecto informático en base, al menos, de los elementos detectados, el texto identificado y, si lo hubiera, las propiedades de configuración y/o interacción de los elementos; donde los dibujos están realizados siguiendo una sintaxis predefinida, conocida por el al menos un usuario y por el dispositivo electrónico, que define reglas de correspondencia entre dibujos y elementos del proyecto informático y/o reglas de correspondencia entre caracteres o grupos de caracteres de texto incluido en los dibujos y propiedades de configuración o de interacción de los elementos del proyecto informático.

14. Un sistema electrónico para la implementación de un proyecto informático a partir de n dibujos, n>=1 , realizados a mano por al menos un usuario, donde el sistema comprende:

- medios de recepción configurados para recibir una o más imágenes de los n dibujos de un dispositivo electrónico del al menos un usuario, donde los dibujos representan elementos del proyecto informático;

- uno o más procesadores electrónicos configurados para: detectar los elementos representados en las una o más imágenes aplicando una o más técnicas de visión artificial; si los elementos intervinientes en el proyecto informático son de varias clases, clasificar los elementos detectados usando un modelo de aprendizaje automático; identificar el texto contenido en los elementos detectados mediante reconocimiento óptico de caracteres; a partir del texto identificado, detectar si en las una o más 33 imágenes se indican propiedades de configuración o interacción de los elementos detectados y si es así, determinar dichas propiedades a partir del texto identificado; generar los uno o más ficheros de código que componen el proyecto informático en base, al menos, de los elementos detectados, el texto identificado y, si lo hubiera, las propiedades de configuración y/o interacción de los elementos; donde los dibujos están realizados siguiendo una sintaxis predefinida que define reglas de correspondencia entre dibujos y elementos del proyecto informático y/o reglas de correspondencia entre caracteres o grupos de caracteres de texto incluido en los dibujos y propiedades de configuración o de interacción de los elementos del proyecto informático;

- medios de transmisión configurados para enviar los uno o más ficheros generados al dispositivo electrónico del al menos un usuario para su descarga.

15. Un medio no transitorio legible por ordenador que almacena un programa informático que comprende instrucciones para hacer que un dispositivo informático que ejecute el programa realice el método definido según cualquiera de las reivindicaciones 1-12.

Description:
IMPLEMENTACIÓN DE PROYECTO INFORMÁTICO A PARTIR DE BOCETO DE DISEÑO

DESCRIPCIÓN

OBJETO DE LA INVENCIÓN

La presente invención se aplica en la implementación y diseño de proyectos informáticos. Más particularmente, la presente invención se refiere a un método, dispositivo y sistema que permite la implementación de proyectos informáticos, de manera rápida, eficiente y con ahorro de recursos, a partir de un boceto sencillo del diseño del mismo, dicho boceto puede estar eschto/dibujado a mano.

ANTECEDENTES DE LA INVENCIÓN

Durante los primeros estados de gestación de un proyecto de cualquier tipo, una de las primeras fases es la de visualizar de la mejor manera posible, todos sus componentes, relaciones e incluso un flujo de funcionamiento o ejecución. Una técnica de estas fases tempranas de diseño podría ser, por ejemplo, realizar un simple boceto a mano utilizando diferentes objetos para representar cada componente de la ¡dea. Este boceto será un punto de partida importante que servirá como cimiento a la hora de llevar a cabo la implementación de la ¡dea original. Pero ¿y si directamente se pudiera utilizar ese boceto original como entrada para construir de forma automática una implementación del proyecto ideado? Es decir, partiendo de un dibujo sencillo en papel y siguiendo unas sencillas reglas para dibujar los diferentes componentes (en función del tipo de proyecto), ese boceto podría ser directamente la entrada de una aplicación que finalmente, ofrecerá como salida, todos los componentes necesarios para su implementación (código fuente, bases de datos, etc.).

En el presente texto se ofrece una solución que parte de esta base, facilitar la implementación de diferentes proyectos informáticos (de programas de ordenador, software) partiendo un boceto escrito en papel, usando técnicas de Inteligencia Artificial. Dicho proyecto informático puede ser de muy diversos tipos (tal como se detallará más adelante) por ejemplo, desde la creación completa de una solución frontend /backend, incluyendo su flujo de funcionamiento (por ejemplo, de una aplicación web con su base de datos), implementación de arquitecturas/plataformas en la nube (del inglés, cloud), implementación de bases de datos e incluso implementación de arquitecturas de Machine Learning para la implementación de redes neuronales.

En la actualidad existen algunas soluciones sencillas que a partir de un boceto permiten el diseño de un programa informático, pero ninguna de ellas permite la implementación de una variedad tan extensa de tipos de proyectos, ni presenta las ventajas técnicas de facilidad, eficiencia, precisión, agilidad y ahorro de recursos, que ofrece la presente solución.

El problema técnico objetivo puede ser por ejemplo proveer un método, dispositivo y sistema para la implementación de proyectos informáticos a partir de bocetos a mano de una manera sencilla, transversal, rápida, precisa y que permita ahorrar recursos tanto de tiempo como de herramientas informáticas.

DESCRIPCIÓN DE LA INVENCIÓN

La presente invención proporciona un método, dispositivo y sistema para facilitar el diseño de una arquitectura y su posterior implementación de forma automática, partiendo de la base de un boceto escrito y/o dibujado a mano (por ejemplo, en papel). La misma creación de dicho boceto se convierte directamente en la herramienta que se utilizará, de forma automática, como base para su implementación final.

Por ejemplo, sería posible dibujar una arquitectura/plataforma en la nube, una estructura de base de datos, un diseño de una red neuronal o una página web con todos sus componentes (además del flujo de interacción entre las diferentes vistas); y esta solución propuesta será capaz de generar todo el código necesario (incluidas las interacciones entre los diferentes dispositivos electrónicos que intervienen) para su implementación. Así, entre otras funciones, esta solución permite la creación de forma sencilla y automática del interfaz de usuario, por ejemplo un interfaz gráfico (más conocido por su denominación en inglés, frontend) y el interfaz secundario (más conocido por su denominación en inglés, backend,) que es la parte que recoge y procesa los datos suministrados a través del interfaz de usuario y, más generalmente hablando, realiza todos los procesos necesarios para el correcto funcionamiento de programa (incluyendo por ejemplo, conexiones con bases de datos o comunicaciones entre los dispositivos electrónicos que intervienen, como por ejemplo servidores).

En las realizaciones propuestas, dibujando la estructura en papel y siguiendo unas sencillas pautas (utilizando Inteligencia Artificial y Machine Learning, por ejemplo Redes Convolucionales Profundas, principalmente para la identificación de los objetos dibujados en papel) se es capaz de generar todos los ficheros y componentes necesarios para la implementación del programa informático. Así, simplemente ubicando en papel los posibles elementos (por ejemplo, en el caso de una página web estos elementos pueden ser desplegables, cajas de texto, títulos ... o los distintos componentes y relaciones entre ellos en el caso de una arquitectura en la nube o una red neuronal) es posible generar todo el código fuente para generar un programa (la página web, arquitectura en la nube, red neuronal) e incluso su flujo de funcionamiento.

Así, esta solución permite acercar la creación de tecnologías complejas a cualquier usuario, aunque no tenga conocimientos avanzados de la misma. Por lo tanto, será posible planificar y esquematizar arquitecturas complejas en papel que directamente se codificarán (en la plataforma que se decida) para que estén disponible directamente para su implementación. Por otro lado, se agiliza la tarea de la implementación de la solución necesaria al diseñador de la arquitectura, centrándose únicamente en su implantación final. Todo este proceso es posible gracias a la utilización de Inteligencia Artificial y Visión Artificial a la hora del reconocimiento de los objetos creados en el boceto original.

Por lo tanto, se reduce drásticamente la complejidad para construir desde cero este tipo de arquitecturas, lo que hace que se abran multitud de posibilidades de aplicación. Por ejemplo, se puede utilizar en cualquier plataforma cloud para que sus usuarios, independientemente de su nivel técnico, pudieran desplegar sus proyectos de manera sencilla e intuitiva; o se puede integrar con algún producto de un operador de telecomunicaciones para que sea usada por el equipo de diseño de los frontend para uso empresarial, ya que, al reducir dicha complejidad, prácticamente cualquier departamento de una empresa podría diseñar e implementar su propia solución informática.

Un aspecto de la invención se refiere a un método para la implementación de un proyecto informático a partir de n dibujos, n>=1 , realizados a mano por al menos un usuario, donde el método comprende los siguientes pasos realizados por al menos un dispositivo electrónico: a) recibir una o más imágenes de los n dibujos, donde los dibujos representan elementos (componentes) del proyecto informático; b) detectar los elementos representados en las una o más imágenes aplicando una o más técnicas de visión artificial; c) si los elementos intervinientes en el proyecto informático pueden ser de varias clases, clasificar los elementos detectados usando un modelo de aprendizaje automático; d) identificar el texto contenido en los elementos detectados mediante reconocimiento óptico de caracteres; e) a partir del texto identificado, detectar si en las una o más imágenes se indican propiedades de configuración y/o interacción de los elementos detectados y si es así, determinar dichas propiedades a partir del texto identificado; f) generar los uno o más ficheros de código que componen el proyecto informático en base, al menos, de los elementos detectados, el texto identificado y, si lo hubiera, las propiedades de configuración y/o interacción de los elementos; donde los dibujos están realizados siguiendo una sintaxis predefinida que define una serie de reglas de correspondencia entre dibujos y elementos del proyecto informático y/o de reglas de correspondencia entre caracteres o grupos de caracteres de texto incluido en los dibujos y propiedades de configuración o de interacción de los elementos del proyecto informático.

En una realización, el paso e) comprende, a partir del texto identificado, detectar si en las una o más imágenes se indica un flujo de funcionamiento (flujo de interacción de los elementos) y si es así, determinar dicho flujo a partir del texto identificado y el paso f) además comprende crear rutas dinámicas entre los elementos para la ejecución del flujo determinado.

El proyecto informático puede ser, por ejemplo, una aplicación web, una base de datos, una arquitectura en la nube, una red neuronal o muchos otros tipos de proyecto informático.

El modelo de aprendizaje automático se puede entrenar con un conjunto de datos siguiendo la sintaxis predefinida. Asimismo, el aprendizaje automático puede comprender el uso de redes neuronales convolucionales profundas y/o puede usar técnica(s) de transferencia de aprendizaje.

En una realización, el paso de detectar los elementos que se encuentran en las una o más imágenes comprende detectar la posición y dimensión de los elementos.

Las imágenes de los dibujos se pueden obtener mediante fotografía o escaneo de los n dibujos; y las imágenes pueden estar en cualquier tipo de formato, por ejemplo, JPG o PNG o cualquier otro. El paso de recibir las imágenes de los uno o más dibujos, comprende: cargar las imágenes en un dispositivo electrónico y (si este dispositivo electrónico no es el al menos un dispositivo electrónico donde se lleva a cabo el método), recibir a través de una o más redes de comunicaciones las una o más imágenes desde el dispositivo electrónico donde se han cargado.

En una realización, la clase de los elementos es alguna de las siguientes: botón, casilla de verificación, botón de opción, imagen, párrafo, etiqueta, entrada o desplegable.

En una realización, los uno o más ficheros generados en el paso f) se envían a un dispositivo electrónico del al menos un usuario para su descarga. Los ficheros generados en el paso f) (todos o alguno de ellos) puede ser ficheros HTML.

Otro aspecto de la invención se refiere a un dispositivo electrónico que lleva a cabo los pasos de los métodos descritos anteriormente. Así, un aspecto de la invención se refiere a un dispositivo electrónico para la implementación de un proyecto informático a partir de n dibujos, n>=1 , realizados a mano por al menos un usuario, donde el dispositivo electrónico comprende:

- medios de recepción configurados para recibir una o más imágenes de los n dibujos (por ejemplo, a través de una o más redes de comunicación), donde los dibujos representan elementos del proyecto informático;

- uno o más procesadores electrónicos configurados para: detectar los elementos representados en las una o más imágenes aplicando una o más técnicas de visión artificial; si los elementos intervinientes en el proyecto informático son de varias clases, clasificar los elementos detectados usando un modelo de aprendizaje automático; identificar el texto contenido en los elementos detectados mediante reconocimiento óptico de caracteres; a partir del texto identificado, detectar si en las una o más imágenes se indican propiedades de configuración o interacción de los elementos detectados y si es así, determinar dichas propiedades a partir del texto identificado; generar los uno o más ficheros de código que componen el proyecto informático en base, al menos, de los elementos detectados, el texto identificado y, si lo hubiera, las propiedades de configuración y/o interacción de los elementos; donde los dibujos están realizados siguiendo una sintaxis predefinida, (conocida por el al menos un usuario y por el dispositivo electrónico), que define reglas de correspondencia entre dibujos y elementos del proyecto informático y/o reglas de correspondencia entre caracteres o grupos de caracteres de texto incluido en los dibujos y propiedades de configuración o de interacción de los elementos del proyecto informático.

Otro aspecto de la invención se refiere a sistema que lleva a cabo los pasos de los métodos descritos anteriormente. Así, un aspecto de la invención se refiere a un sistema electrónico para la implementación de un proyecto informático a partir de n dibujos, n>=1 , realizados a mano por al menos un usuario, donde el sistema comprende:

- medios de recepción configurados para recibir una o más imágenes de los n dibujos de al menos un dispositivo electrónico del al menos un usuario (por ejemplo, a través de una o más redes de comunicación), donde los dibujos representan elementos del proyecto informático;

- uno o más procesadores electrónicos configurados para: detectar los elementos representados en las una o más imágenes aplicando una o más técnicas de visión artificial; si los elementos intervinientes en el proyecto informático son de varias clases, clasificar los elementos detectados usando un modelo de aprendizaje automático; identificar el texto contenido en los elementos detectados mediante reconocimiento óptico de caracteres; a partir del texto identificado, detectar si en las una o más imágenes se indican propiedades de configuración o interacción de los elementos detectados y si es así, determinar dichas propiedades a partir del texto identificado; generar los uno o más ficheros de código que componen el proyecto informático en base, al menos, de los elementos detectados, el texto identificado y, si lo hubiera, las propiedades de configuración y/o interacción de los elementos; donde los dibujos están realizados siguiendo una sintaxis predefinida que define reglas de correspondencia entre dibujos y elementos del proyecto informático y/o reglas de correspondencia entre caracteres o grupos de caracteres de texto incluido en los dibujos y propiedades de configuración o de interacción de los elementos del proyecto informático;

- medios de transmisión configurados para enviar los uno o más ficheros generados al al menos un dispositivo electrónico del al menos un usuario para su descarga.

Un último aspecto de la invención se refiere a un producto de programa informático que comprende un código de programa informático adaptado para realizar los métodos descritos anteriormente, cuando dicho código de programa se ejecuta en un dispositivo informático o dispositivo electrónico programable que puede ser: ordenador, un procesador de señales digitales (DSP: “Digital Signal Processor”, en inglés), una matriz de puertas programadles en campo (FPGA: “Field- Programmable Gate Array”, en inglés), un circuito integrado de aplicación específica (“application-specific integrated circuit, en inglés), un microprocesador, un microcontrolador o cualquier otra forma de hardware programable. También se proporciona un medio de almacenamiento de datos digitales no transitorios para almacenar un programa de ordenador que comprende instrucciones que hacen que un dispositivo informático ejecutando el programa realice los métodos descritos anteriormente.

BREVE DESCRIPCIÓN DE LAS FIGURAS A continuación, se pasa a describir de manera muy breve una serie de dibujos que ayudan a comprender mejor la invención y que se relacionan expresamente con una realización de dicha invención que se presenta como un ejemplo no limitativo de ésta.

FIGURA 1.- Muestra un diagrama esquemático de la implementación de una aplicación web (frontend/backend), según una posible realización de la invención.

FIGURA 2.- Muestra una matriz de confusión de un ejemplo concreto de aprendizaje automático, según una posible realización de la invención.

FIGURAS 3a y 3b.- Muestran un ejemplo de dibujos de entrada para la implementación de un proyecto informático (en este caso una página web), según una realización de la invención.

FIGURA 4.- Muestra un ejemplo de un dibujo de entrada para la implementación de un proyecto informático (en este caso una base de datos), según una realización de la invención.

FIGURA 5.- Muestra un ejemplo de un dibujo de entrada para la implementación de un proyecto informático (en este caso una arquitectura en la nube), según una realización de la invención.

FIGURA 6.- Muestra un ejemplo de un dibujo de entrada para la implementación de un proyecto informático (en este caso una red neuronal), según una realización de la invención.

REALIZACIÓN PREFERENTE DE LA INVENCIÓN

Se describe un método, dispositivo electrónico y sistema para la implementación automática de un proyecto informático partiendo de un diseño descrito en un boceto (hecho a mano). Dicho proyecto informático puede ser, por ejemplo, la creación completa de una solución frontend/backend, incluyendo su flujo de funcionamiento (por ejemplo, de una aplicación web con su base de datos), implementación de arquitecturas/plataformas en la nube (del inglés, cloud), implementación de una base de datos e incluso implementación de arquitecturas de Machine Learning para la implementación de redes neuronales.

A continuación, se va a explicar detalladamente el funcionamiento de la solución propuesta de acuerdo a una realización de la invención. Para mayor claridad, para dicha explicación se va a usar como hilo conductor un ejemplo concreto, que en este caso consistirá en la implementación de un frontend y un backend para crear una página/aplicación web. Por lo tanto, durante la explicación aquí mostrada de la solución, se utilizará este modelo de página web como ejemplo para explicar su implementación y funcionamiento. A pesar de ser un ejemplo concreto, esta implementación cubre y analiza mucho de los procesos que esta solución ofrece, desde el reconocimiento de los objetos en el boceto, pasando por el flujo de ejecución y finalizando por la implementación de un backend, en este caso una base de datos. Como se ha indicado anteriormente, la presente solución no solo es aplicable para la obtención de páginas web sino para muchos otros tipos de proyectos como arquitecturas/plataformas en la nube, generación de bases de datos o implementación de redes neuronales (entre otras posibles aplicaciones).

Es interesante destacar que, aunque en este ejemplo concreto se muestra la creación de una página web, prácticamente cualquier proyecto informático que pueda ser plasmado en un boceto en papel es potencialmente válido para ser procesado utilizando la solución propuesta. Como esta solución utiliza Inteligencia Artificial para el reconocimiento de los objetos, sólo sería necesaria un entrenamiento específico para generar un modelo para cada tipo de proyecto particular. Así, como se ha indicado anteriormente, la presente solución no solo es aplicable para la obtención de páginas web sino para muchos otros tipos de proyectos como, entre otros, una implementación en cloud o incluso, la creación de una red neuronal partiendo en ambos casos de un boceto en papel.

En la figura 1 , se muestra un diagrama con los principales bloques de funcionamiento en una realización de la invención propuesta, para un ejemplo concreto que, como se ha comentado anteriormente, consiste en la implementación de una página web como base. En el ejemplo mostrado en la figura 1 , la entrada a procesar es un conjunto de dibujos que representen frontales (frontends) web, que el elemento funcional (también conocido como motor) propuesto recibirá, comprenderá y estructurará los ficheros html resultantes, conectando aquellos en los que se ha detectado un flujo de trabajo. Finalmente, esta solución será capaz de crear con ellos una aplicación web completamente funcional (utilizando por ejemplo una herramienta del tipo Flask). Tanto el conjunto de ficheros html como la aplicación completa pueden ser descargados por el usuario final.

La presente invención se puede implementar en un solo dispositivo electrónico o en varios dispositivos electrónicos (de manera que cada uno de ellos realiza una o vahas de las funciones que componen la presente invención). En este último caso, los dispositivos electrónicos que intervienen estarán convenientemente comunicados por una o vahas redes de comunicación.

Utilizando el esquema de la figura 1 como guía, se describirán a continuación cada uno de los bloques y la función/funciones que realiza:

Dibujos (bocetos) de las vistas: El proceso de generación del proyecto software se comienza con los dibujos (1) del usuario realizados a mano (alzada) en un papel. En ellos se debe plasmar (para el caso del ejemplo que es una aplicación web) concretamente la vista (o más generalmente hablando, el diseño) que se desea obtener, utilizando una cierta sintaxis (predefinida) para cada uno de los elementos que las componen, para permitir que más adelante (por ejemplo, mediante Inteligencia Artificial) se identifiquen y clasifiquen. Por ejemplo, los elementos/componentes para el caso de páginas web pueden ser de los siguientes tipos o clases, entre otras: botones, casillas de verificación (más conocidas por su denominación en inglés “checkboxes” or “checkbutton”), botones de opción (más conocidos por su denominación en inglés “radio-buttons”), imágenes, párrafos, etiquetas (h1 , h2, h3), elementos de tipo de entrada (más conocidos por su denominación en inglés “input”), desplegables... Esto es solo un ejemplo para el caso de implementación de páginas o aplicaciones web, en el caso de otro tipo de implementaciones (plataformas cloud, redes neuronales, bases de datos...) los elementos pueden ser de otros muchos tipos/clases. La sintaxis permite que en los futuros pasos se pueda localizar y clasificar los elementos y así, poder montar el código final que los representa.

Una vez realizados los dibujos (para generalizar, se hablará de n dibujos, n>=1), se obtendrán los archivos o ficheros electrónicos con las imágenes de dichos dibujos, que recibirá la herramienta (también llamada motor) de implementación. Para obtener estas imágenes se puede usar cualquier mecanismo conocido que permita obtener imágenes en formato electrónico a partir de dibujos; así, por ejemplo, se puede fotografiar los dibujos realizados o se pueden escanear.

Extracción y clasificación de elementos (4): En este paso comienza la transformación entre el dibujo y el futuro proyecto (en este ejemplo una aplicación web). Para ello, los archivos con las imágenes (fotografía/escaneo) de los dibujos se proporcionan al motor de la solución propuesta haciendo una subida o carga (más conocida por su denominación en inglés “upload”) de los archivos con las imágenes

(2). Para esto se puede usar cualquier formato de archivo/fichero conocido como por ejemplo JPG o PNG o cualquier otro. Tras la carga de los ficheros, éstos se envían

(3) al elemento funcional (motor) que va a realizar el backend necesario. Este envío de ficheros se puede realizar usando cualquier herramienta conocida (como por ejemplo POST). Si el dispositivo electrónico donde se implementa el backend (por ejemplo un servidor) es distinto al dispositivo electrónico donde se cargan los archivos este envío supondrá una comunicación entre los mismos a través de una o vahas redes de comunicación (que pueden ser de cualquier tipo, cableada, sin-hilo, Wi-Fi, 2G, 3G, 4G etc.).

Una vez recibidas, el motor comenzará realizando una labor de detección (extracción) de todos los elementos que se encuentran en la imagen (o imágenes), utilizando para ello por ejemplo, técnicas de Inteligencia Artificial y en concreto, por ejemplo, de Visión Artificial. Gracias a este proceso, se podrá almacenar tanto la posición de cada elemento (absoluta y/o relativa a otros elementos) en el dibujo como sus dimensiones, que será necesario para la posterior ubicación dentro del código final generado. A continuación, los elementos detectados deben de ser clasificados para conocer qué tipo (también llamado clase) son, entre todos los que son soportados; por ejemplo, los que se han mencionado anteriormente: botones, casillas de verificación etc.. En alguna realización esta etapa de clasificación puede no ser necesaria si solo hay un tipo posible de elementos a detectar, como por ejemplo, en el caso de la implementación de bases de datos, como se explicará más adelante.

Cada clase (tipo de elemento) tiene sus características y, por ejemplo, su propio código HTML (del inglés “Hypertext Markup Language”, Lenguaje de marcas de hypertexto), así que es importante distinguirlos con la mayor precisión posible. Al tratarse de un problema de clasificación con imágenes, se utiliza un modelo de aprendizaje automático o aprendizaje de máquinas (más conocido por su denominación en inglés “Machine Learning”) entrenado con un conjunto de datos propio, que sigue la sintaxis que se ha definido previamente. En una realización el modelo de Machine Learning usado puede ser del tipo de Red Neuronal Convolucional (CNN, del inglés Convolutional Neural Network) profunda.

Esa sintaxis puede definirse de cualquier modo, siempre que quede claro la correspondencia entre dibujos y los distintos elementos. Preferentemente debe ser sencilla y debe ser conocida por el usuario para saber cómo dibujar cada elemento, es decir, el tipo de dibujo que corresponde a cada elemento. Así, por ejemplo, un botón puede dibujarse como un rectángulo o cuadrado con un texto (o incluso un mero trazo aleatorio) dentro, o una imagen puede indicarse como un rectángulo o cuadrado tachado (con una X en su interior). Esto es solo un ejemplo y cualquier otra sintaxis para el dibujo de los distintos elementos puede usarse.

El modelo para clasificar los elementos detectados en las imágenes (boceto a mano) preferentemente requiere un tiempo de entrenamiento reducido y adquiere una precisión alta con pocas épocas. Para conseguir esto, en una realización se puede usar por ejemplo, una técnica como la Transferencia de Aprendizaje (más conocida por su denominación en inglés Transfer Learning). Esta técnica de Machine Learning consiste en utilizar un modelo que ya ha sido entrenado y ajustado con un conjunto de imágenes mucho más grande, en un problema de clasificación más complejo, y adaptarlo al problema concreto, en este caso la detección de elementos, entrenando para ello únicamente las últimas capas de la red neuronal. Esto es solo un ejemplo y en otras realizaciones se puede usar otros tipos de técnicas de aprendizaje automático.

En un ejemplo concreto en el que se ha realizado la clasificación usando la técnica de Transfer Learning y un modelo de Machine Learning de red neuronal convolucional, la precisión global del modelo en el conjunto de validación es de 92,75% y ocupa 2.5 MB. Específicamente, en este ejemplo concreto, para los elementos de clase Botón, Imagen, Input, Etiqueta, Desplegable y Texto se ha conseguido una precisión del 100%, para elementos de clase “Checkbutton” una precisión del 75% y para elementos de clase “Radiobutton” una precisión del 67%. La matriz de confusión para este ejemplo concreto se muestra en la figura 2.

Después de la clasificación, se cuenta con todos los elementos detectados, junto con sus dimensiones y posiciones relativas, además de la clasificación de cada uno de ellos. El siguiente paso será extraer, de aquellos elementos en los que sea necesario, el texto que contienen para generar el código correcto, además de para crear el flujo de funcionamiento (si el texto afecta a dicho flujo). Esta detección de texto, se realiza preferentemente mediante reconocimiento óptico de caracteres (OCR, de sus siglas en inglés “Optical Character Recognition”) tal como se explica a continuación.

Reconocimiento óptico de caracteres (5): El reconocimiento de caracteres se lleva a cabo sobre los elementos que, potencialmente, puedan contener algún texto. En el ejemplo de la implementación de una página web, estos elementos pueden ser, entre otros: los botones, las etiquetas, los desplegables, los “checkboxes” y los “radiobuttons”. El objetivo de este proceso es personalizar los elementos con los datos (texto) que el usuario ha incluido en su dibujo, consiguiendo con ello un resultado más preciso (más próximo al esperado).

El reconocimiento consta de dos partes: por un lado, la identificación de los conjuntos de texto dentro del elemento y, por el otro, la transcripción del texto que contienen. La primera parte es utilizada para elementos que requieran de una disposición concreta, por ejemplo, las casillas de verificación (checkboxes) y los botones de opción (radiobuttons) en el caso de aplicaciones web. Gracias a este proceso, se podrá conocer por ejemplo, el número de alternativas que contempla cada uno de ellos, así como su orden. La segunda parte del reconocimiento es fundamental para todos ellos, ya que permite obtener los textos que se incluirán en los elementos generados posteriormente.

Este procedimiento es básico además para poder reconocer el flujo del futuro proyecto informático generado, ya que permitirá por ejemplo extraer de la etiqueta superior de los dibujos el nombre de la vista y de los botones y también, los enlaces creados entre elementos o páginas u otro tipo de funciones o interacciones entre los elementos. Para ello para cada tipo de interacción o función se define en la sintaxis un carácter (o grupo de caracteres) predeterminado (así en un ejemplo de sintaxis los enlaces entre elementos o páginas se indican con el carácter '#’ en el inicio del texto). Habrá que buscar este carácter (o grupo de caracteres) predeterminados en cada texto. El último paso consistirá en colocar todos los elementos en su respectivo lugar en el código generado (código HTML en el ejemplo), así como crear las rutas e interacciones necesarias en el proyecto implementado.

Generación del flujo de ejecución del proyecto (6): Como se ha indicado, puede ser cualquier tipo de proyecto informático; en el caso del ejemplo, este proyecto (software) sería una aplicación web. La mayoría de proyectos informáticos (y en especial las páginas web) constan de vahas vistas y, en general, tienen un flujo (llamado flujo de ejecución, flujo de funcionamiento o flujo de interacción entre los elementos) integrado con botones o con distintos elementos que permiten dividir y organizar mucho mejor la información que contienen. Por tanto, el desarrollo de una herramienta destinada a la generación de proyectos web de manera rápida y sencilla, debe de contemplar este escenario. Es por ello, que la solución propuesta dota al usuario de la posibilidad de generar el mencionado flujo de ejecución utilizando los propios dibujos (bocetos).

El flujo, por tanto, en primer lugar, debe ser detectado y entendido a partir de los dibujos del usuario. Con este objetivo, la solución plantea una sintaxis predefinida (en forma de directivas o reglas) que el usuario debe seguir para permitir al dispositivo electrónico que implementa la presente invención, detectar dónde están los puntos de enlace entre las vistas, así como los nombres de cada una de ellas o, más generalmente hablando, donde están los puntos de enlace o interacciones entre los distintos componentes del proyecto. En una realización, las vistas que se deseen integrar en un flujo deben de ser etiquetadas con un nombre o título (integrado en un elemento de tipo ‘etiqueta’), por ejemplo, en la parte superior del dibujo. Como ya se ha mencionado, para conectar entre vistas, se han de utilizar elementos (por ejemplo, botones) en cuyo texto aparezca un carácter o grupo de caracteres predeterminado (por ejemplo, el carácter '#)’, seguido del nombre de la vista con la que se desea enlazar.

Una vez entendido el flujo requerido por el usuario, la solución hará uso de una herramienta adecuada (en el caso del ejemplo se puede usar la aplicación Flask destinada al desarrollo de aplicaciones web o cualquier otra herramienta conocida que haga esta función), para crear rutas dinámicas apropiadas. Por cada vista o elemento enlazado, se generará una nueva ruta con el mismo nombre, con el objetivo de devolver su código (en el ejemplo código HTML). Los elementos (por ejemplo, botones) se enlazarán mediante estas rutas, creando así una aplicación completamente funcional. Todo esto permite cumplir con el objetivo planteado de generar una aplicación con flujo entre vistas (o más generalmente hablando, flujo de interacción entre elementos) utilizando únicamente los dibujos del usuario.

Implementación final (código resultante): Una vez obtenidos e identificados los elementos que componen el diseño dibujado por el usuario, e identificado el texto que estos albergan, se genera (7) la estructura del proyecto informático deseado (en el caso del ejemplo, la parte backend generará la estructura de la nueva aplicación web). Para esto se puede usar cualquier herramienta conocida adecuada (en el caso del ejemplo se puede usar la aplicación Flask o cualquier otra herramienta conocida que haga esta función). Así se generarán los ficheros de código correspondientes (en el caso de una aplicación web, dichos ficheros pueden tener la extensión .html y se pueden guardar en la carpeta templates de la nueva aplicación generada). Es decir, se generan los ficheros cuya ejecución permite la implementación del proyecto informático o, en otras palabras, dichos ficheros contienen el código necesario para la implementación del proyecto informático. Si en el procesamiento de las imágenes se ha detectado un flujo de trabajo, se crearán las rutas pertinentes a dicho flujo (en el caso de una aplicación web, dichas rutas se añaden al fichero app.py de la nueva aplicación generada). De esta forma se obtiene una aplicación (una aplicación tipo Flask en el caso de que se use dicha herramienta) totalmente funcional con distintas rutas y frontales (frontends) personalizados. En el caso de la creación de una página web usando la herramienta Flask, habrá un paso de generación y un paso de activación y se obtendrán los ficheros app.py, flaskapp.zip, htmls.zip. Adjunto a esta estructura puede generarse un documento readme.txt con las instrucciones relativas al despliegue de dicha aplicación y un fichero requirements.txt que incluye las dependencias del proyecto.

Una vez generados los ficheros de código del proyecto informático (software) creado, éstos se envían (8) al usuario (o mejor dicho, al dispositivo electrónico del usuario que está usando la solución para la implementación del proyecto, que normalmente será el mismo que ha cargado los bocetos). Este envío de ficheros se puede realizar usando cualquier herramienta conocida (como por ejemplo POST, usando su función “Redirect”, redirección). Como se ha indicado anteriormente. Si el dispositivo electrónico donde se implementa el backend (por ejemplo, un servidor) es distinto al dispositivo electrónico donde se cargan los archivos este envío supondrá una comunicación entre los mismos a través de una red de comunicación (que puede ser de cualquier tipo, cableada, sin-hilo, Wi-Fi, 2G, 3G, 4G etc.).

Una vez recibidos los ficheros con el código resultante (9), éstos pueden ser descargados (10) por el usuario. En una realización, el caso de la creación de una página web, esta descarga supondrá la descarga de ficheros HTML (11) y en el caso de usar la herramienta Flask también supondrá la descarga de la aplicación Flask creada (12).

Una vez explicado el funcionamiento de la solución propuesta, a continuación se muestran distintos ejemplos de posibles aplicaciones o realizaciones (o más generalmente hablando, casos de uso) de la invención propuesta. Todas las aplicaciones/realizaciones tienen el mismo objetivo: realizar una traducción entre dibujos a mano realizados por el usuario y una secuencia de comandos (más conocido por su denominación en inglés “script”) que permitan crear distintos componentes software. O, en otras palabras, una traducción entre un boceto a mano del usuario y el código o secuencia de comandos del programa correspondiente. Para ello, como hemos mencionado anteriormente, utilizará Inteligencia Artificial tanto en la detección (por ejemplo, con técnicas de visión artificial), como en la clasificación de elementos (por ejemplo, a través de redes convolucionales profundas). Por tanto, cualquier componente que se genere a partir de código reglado es potencialmente un caso de uso para la solución propuesta. Para ejemplificar su utilidad, se plantean ahora cuatro casos de uso de la solución propuesta que dan lugar a cuatro herramientas distintas, pero todas usando el mismo procedimiento propuesto en la presente invención (esto casos de uso se muestran solo a modo de ejemplo no limitativo, ya que la solución propuesta puede tener muchas otras aplicaciones).

Página web: Este primer caso de uso, es una herramienta que proporciona al usuario la capacidad de convertir n dibujos (n>=1) en una aplicación web con un flujo de trabajo determinado. Para ello, el usuario realizará uno o vahos dibujos con los elementos característicos de una página web que estén soportados por el proyecto y que concuerden con una sintaxis predeterminada (preferiblemente adjunta en la documentación de la herramienta). Dichos dibujos pueden estar o no diseñados con la implementación de un flujo de trabajo. Una vez se hayan realizado los dibujos pertinentes, se procederá a la fotografía (o escaneo) de éstos para dar paso a la subida de los ficheros con dichas imágenes, como se ha explicado anteriormente.

Las figuras 3a y 3b muestran un ejemplo no limitativo de dibujos de entrada a esta herramienta para un caso específico. En la figura 3a se muestra la página de índice (más conocida por su denominación en inglés “Index”) que incluye un título, una imagen, un posible texto y un enlace (indicado con el carácter #) a la página de envío (más conocida por su denominación en inglés “Submit”). La página de envío se muestra en la figura 3b con una imagen, botones y un enlace a la página índice.

Esta herramienta puede implementarse en forma de una aplicación web que permita al usuario traducir un dibujo en una página web (dicha aplicación en un ejemplo, se puede llamar “Dibuja tu Web”, en inglés “Draw your Web”). La herramienta puede disponer de un frontal principal dónde se encuentra la función de subir ficheros; esto permitirá al usuario seleccionar y enviar las fotografías de los dibujos realizados con anterioridad, a la parte de backend.

Como se ha explicado anteriormente, el procedimiento ejecutado por la herramienta para entender la imagen (o imágenes) de entrada, se inicia haciendo uso de técnicas de Visión Artificial, con el objetivo de extraer todos los elementos que la componen. El siguiente paso será conocer la clase (tipo) de cada uno de ellos. Para ello, la herramienta dispone de un conjunto de entrenamiento propio, que incluye dibujos a mano de todos los componentes, con el que se ha entrenado una Red Convolucional profunda que permite la labor de clasificación. Una vez que ya se han extraído los componentes y se han clasificado, el último paso consiste en utilizar técnicas de OCR para comprender los textos que contienen y así poder aplicarlos en el resultado final.

Una vez terminado el proceso de identificación y clasificación, comenzará la generación de los resultados (la aplicación web y los ficheros generados, por ejemplo, en forma de un fichero .zip con los códigos HTML generados) y el despliegue de la aplicación resultante.

Con el objetivo de mostrar los resultados obtenidos, se puede lanzar en un nuevo proceso la aplicación resultante con un puerto y ruta determinados. Si el proceso se ha realizado de forma correcta, se ejecutará una redirección en la aplicación “padre” hacia la ruta donde se mostrarán los resultados. La vista principal de esta aplicación “hijo” se podrá visualizar desde esta ruta dónde estará embebida, por ejemplo, en un elemento ¡frame (que es un elemento HTML que permite insertar o incrustar un documento HTML dentro de un documento HTML principal). En esta ruta, además de poder visualizar los resultados correspondientes, se pueden presentar varios botones con la función y el objetivo de descargar los resultados generados.

Bases de datos (Backend): Este segundo caso de uso, es una herramienta que proporciona al usuario la capacidad de generar una base de datos y su script (siguiendo la sintaxis de My SQL o cualquiera otra) a partir de uno o más dibujos. Para ello, el usuario dibujará una o más tablas (y sus relaciones) de acuerdo a una sintaxis predeterminada (preferiblemente adjunta en la documentación de la herramienta). Cada una de las tablas estará compuesta por elementos comunes dentro del diseño de una base de datos, como los datos, su tipo, el tipo de clave y referencias. Una vez se haya realizado el dibujo, se procederá a la fotografía/escaneo de éste para después proceder a la subida del fichero con dicha(s) fotografía(s), para comenzar el análisis.

Esta herramienta puede implementarse en forma de una aplicación web que permita al usuario traducir un dibujo en una base de datos (dicha aplicación en un ejemplo se puede llamar “Dibuja tu Base de Datos”, en inglés “Draw your DataBase” o “Draw your DB”). La herramienta puede disponer de un frontal principal dónde se encuentra la función de subir ficheros; esto permitirá al usuario seleccionar y enviar las fotografías del dibujo o dibujos realizados.

La figura 4 muestra un ejemplo no limitativo de un dibujo de entrada a esta herramienta para un caso específico. Como se ve en la figura, los campos de la base de datos en este ejemplo serán AULA, ALUMNO y CURSOAULA.

Una vez subida la imagen, se harán uso de técnicas de Visión Artificial para extraer los elementos (en este caso las tablas), de los dibujos de entrada. Como no hay múltiples elementos de distinta clase que detectar, esta herramienta no requiere obligatoriamente de una fase de clasificación ya que todos los elementos extraídos se consideran que son tablas (es decir, todos son de la misma clase). En cambio, adquiere mayor relevancia la fase de detección de textos, mediante OCR, ya que va a ser la parte crucial en la que se van a extraer todos los datos relevantes de las tablas: por ejemplo, nombres, atributos y las claves, tanto primarias, como foráneas, que va a permitir establecer las relaciones entre las distintas tablas. Una vez realizado este proceso, se generará el script resultante (en un fichero .sql si se ha usado la herramienta MySQL) a partir de los datos extraídos. Además de un fichero (por ejemplo en un fichero . db) en el que se obtendrá la base de datos.

A continuación, a modo de ejemplo para un caso específico no limitativo, se muestra código resultante de aplicar la herramienta al dibujo de entrada mostrado en la figura 4: CREATE TABLE CURSOAULA ( aulaid INT, dnialumno string(20),

PRIMARY KEY(aulaid, dnialumno),

FOREING KEY (aulaid)

REFERENCES AULA(idal),

FOREING KEY (dnialumno)

REFERENCES ALUMNO(dni) );

CREATE TABLE ALUMNO ( dni string(20),

PRIMARY KEY(dni)

);

CREATE TABLE AULA ( idal INT,

PRIMARY KEY(idal)

);

SELECT * from CURSOAULA;

SELECT * from ALUMNO;

SELECT * from AULA;

Arquitectura/Plataforma en la nube (Cloud): Este tercer caso de uso, es una herramienta que proporciona al usuario la capacidad de generar arquitecturas Cloud, a partir de uno o más dibujos. Esta herramienta puede implementarse en forma de una aplicación web que permita al usuario traducir un dibujo en una arquitectura o infraestructura de red en la nube (dicha aplicación en un ejemplo se puede llamar “Dibuja tu Nube”, en inglés “Draw your Cloud”). La aplicación puede disponer de un frontal principal dónde se encuentra la función de subir ficheros; esto permitirá al usuario seleccionar y enviar las imágenes (fotografías o escaneo) del dibujo o dibujos realizados para la generación de la infraestructura en la nube. A diferencia de los dos casos de uso anteriores, esta generación no va a ser directa, y será necesario utilizar una herramienta software que permita la creación de infraestructuras software más o menos compleja de este tipo. En una realización se usará “Terraform” que es una herramienta que define un lenguaje de alto nivel que permite crear infraestructura como código y utilizarlo para desplegar arquitecturas en la mayoría de los proveedores Cloud del mercado. Por tanto, el resultado de este caso de uso será la generación de código Terraform (.tf) a partir de un dibujo para que, posteriormente, el usuario pueda recoger este código de salida y utilizarlo en la mencionada herramienta Terraform de creación de infraestructuras en la nube (el uso de Terraform es solo un ejemplo y se pueden usar cualquier otra herramienta software con la funcionalidad apropiada).

Las arquitecturas Cloud están compuestas por distintos componentes estructurados en forma de árbol, con una serie de parámetros configurables para cada uno de ellos. El usuario dibujará la configuración de la arquitectura Cloud siguiendo una sencilla sintaxis previamente definida (preferiblemente adjunta en la documentación de la herramienta). Esta sintaxis busca establecer un punto medio entre la flexibilidad en el diseño y la generación sencilla y rápida de la arquitectura; para cada elemento, se puede permitir al usuario introducir ciertas configuraciones precedidas por un carácter o grupos de caracteres determinado (en una realización dicho carácter es '#’), todas explicadas en la documentación del proyecto.

La figura 5 muestra un ejemplo no limitativo de un dibujo de entrada a esta herramienta para un caso específico. En la figura se puede observar el nivel de abstracción que logra la herramienta, que se cimenta, pero es mucho mayor, sobre el que ya ofrece la herramienta de creación de infrastructures software, en este ejemplo Terraform.

Una vez se haya realizado el dibujo (uno o más), se procederá a la fotografía/escaneo de éstos para después proceder a la subida de ficheros con dicha(s) fotografía(s) o escaneos, para comenzar el análisis. Después, utilizando técnicas de visión por ordenador la presente solución es capaz de extraer los distintos elementos, así como sus jerarquías, clasificarlos y con técnicas de OCR, poder entender las configuraciones que ha dibujado el usuario, siguiendo la sintaxis predefinida.

A continuación, a modo de ejemplo para un caso específico no limitativo, se muestra código resultante de aplicar la herramienta al dibujo de entrada mostrado en la figura 5: provider “azurem” { versión = “=2.20.0” features {} subscriptionjd = ”...” clientjd = ”...” client_secret = ”...” tenantjd = ”...”

} resouce “azurem_resouce_group” ’’example” { name = “example-resources” location = ’’WestllS”

} resouce “azurem_virtual_network” ’’vnetd” { name = “vnetd-network” address_space = [“10.0.0.0/16”] location = azurem_resouce_group. example, location resource_group_name = azurem_resource_group. example, name

} resouce “azurem_subnet” ’’subnet/” { name = “subnetAsubnet” resource_group_name = azurem_resource_group. example, name virtual_network_location = azurem_virtual_network. vnetd. location address_prefixes = [“10.0.0.0/24”]

} resouce “azurem_network_interface” ”vml-interface-subnet/” { name = “vml-interface-subnet/-name” location = azurem_resouce_group. example, location resource_group_name = azurem_resource_group. example. name ip_configuration { name = “subnet/” subnetjd = azurem_subnet.subnet/.id private_ip_address_allocation = “Dynamic”

}

}

Redes Neuronales: Este cuarto caso de uso, es una herramienta que proporciona al usuario la capacidad de generar redes neuronales (por ejemplo, redes neuronales profundas) a partir de uno o más dibujos. Esta herramienta puede implementarse en forma de una aplicación web que permita al usuario traducir un dibujo en una red neuronal (dicha aplicación en un ejemplo se puede llamar “Dibuja tu Red Neuronal”, en inglés “Draw your Neural Network”). La aplicación puede disponer de un frontal principal dónde se encuentra la función de subir ficheros; esto permitirá al usuario seleccionar y enviar las imágenes del dibujo o dibujos realizados para la generación de la red neuronal.

Para la generación de la red neuronal será necesario utilizar una herramienta software que permita la creación de redes neuronales. En una realización se usará “Keras”, librería de desarrollo de deep learning escrita en Python, que permite definir modelos de una manera muy sencilla y, sobre todo, la posibilidad de exportar y/o importar modelos desde un formato json. Esta última funcionalidad hará posible que, a partir del dibujo, la herramienta pueda generar un modelo en Python y con ello, utilizando la exportación nativa de la librería, transformarlo a formato json. La salida de la herramienta será doble, por un lado, el modelo (escrito en Python utilizando Keras) y, por otro lado, un fichero (en formato. Json) en el que se define por completo el modelo y que puede ser exportado a otras herramientas (el uso de Keras es solo un ejemplo y se pueden usar cualquier otra herramienta software con la funcionalidad apropiada).

Se predefine una sintaxis visual para que los dibujos sean aún más intuitivos.

En un ejemplo, en dicha sintaxis, las capas de entrada se ¡lustran como círculos; las capas intermedias, como cuadrados; y las capas de salida, como trapecios. La conexión de estos elementos mediante flechas permite definir una red neuronal completa y visualmente clara (esto es solo un ejemplo, y puede usarse cualquier otra definición para la sintaxis).

Al existir elementos de distinta clase en los dibujos, se ha requerido realizar vahos procesos: para empezar como en el resto de los casos de uso, técnicas de visión artificial para detectar y extraer cada uno de los elementos; seguidamente, para realizar la labor de clasificación de estos, se ha creado un conjunto de datos de entrenamiento propio que incluye todas las formas (clases) de elementos soportadas dibujadas a mano, que permite entrenar un modelo de Machine Learning (en una realización una Red Convolucional profunda) para dicha labor. Finalmente, ya con todos los elementos extraídos y clasificados, técnicas de OCR permite extraer el texto que define todas las configuraciones de las distintas capas.

La figura 6 muestra un ejemplo no limitativo de un dibujo de entrada a esta herramienta para un caso específico. Se pueden observar cuatro capas distintas (una de entrada, dos intermedias y una de salida) con sus correspondientes configuraciones que siguen la sintaxis del proyecto. En una realización, a partir de la entrada mostrada en la figura 6, se la herramienta propuesta generará los códigos que se muestran a continuación, que corresponden a 1) la definición en formato JSON de la capa densa del model” y 2) definición del modelo obtenido en lenguaje python:

1)

“class_name”: “Sequential”,

“config”: {

“name”: “sequential”

“layers”: [

{

“class_name”: “InputLayer”,

“config”: {

“batch_input_shape”: [ null, 15

“dtype”: “float32”,

“sparse”: false,

“ragged”: false, “name”: “input_1”

}

},

{

“class_name”: “Dense”,

“config”: {

“name”: “dense”,

“trainable”: true,

“dtype”: “float32”,

“units”:30,

“activation”: “relu”,

“use_bias”: true,

“kerneljnitializer”: {

“class_name”: “Glorotllniform”,

“config”: {

“seed”:null

}

},

2) model = Sequential) model.add(layers.lnput(shape=15)) model. add(layers.Dense(30, activation- relu’)) model. add(layers.Dense(30, activation- relu’)) model. add(layers.Dense(5, activation- softmax’)) modeljson = model. tojson() Resumiendo, la invención propuesta permite implementar una arquitectura de un proyecto software a partir de un boceto simple (a mano) de su diseño. Esto aplica a multitud de arquitecturas distintas y, en general, si es posible diseñar en papel dicha arquitectura, es potencialmente posible convertirla en una implementación aplicando la presente solución. Así, no solo se limita a la creación de FrontEnd/BackEnd para páginas web sino que también aplica, por ejemplo, a la generación de bases de datos, al diseño e implementación de arquitecturas Cloud (como se ha explicado es posible crear la arquitectura en papel a mano de un diseño Cloud y posteriormente, generar todos los ficheros necesarios para su implementación; es decir, siguiendo un patrón definido, dibujando a mano una arquitectura es posible generar su implementación en cualquier cloud) o al diseño e implementación de redes neuronales (desde un boceto, donde se indiquen por ejemplo las capas, tipo de activación, nodos iniciales, etc. es posible crear el código fuente necesario para su implementación).

Como se ha indicado, según el tipo de proyecto informático para alguno de los procesos, como para la generación de los ficheros con el código del proyecto o para la ejecución de estos ficheros puede usarse alguna herramienta software adecuada en cada caso. Así, si el proyecto es una aplicación web, para la generación de los ficheros de código se puede usar la aplicación Flask; si el proyecto es una base de datos para la generación de los ficheros se puede usar la herramienta MySQL; si el proyecto es una arquitectura en la nube se puede usar la herramienta Terraform para generar la arquitectura en la nube (a partir de los ficheros generados) y si el proyecto es una red neuronal para la generación de los ficheros con el código necesario se puede usar la herramienta Keras

Como se ha podido observar en las soluciones propuestas, utilizando como base un diagrama realizado en papel (siguiendo unas reglas básicas), esta implementación es capaz de generar todo lo necesario para implementar un proyecto informático. Esto facilita enormemente la implementación tanto para generar una prueba de concepto como incluso generar una base sólida para su creación. Además, por otro lado, permite que usuarios sin conocimientos avanzados sean capaces de generar este tipo de proyectos de una manera simple, rápida y visual.

En este texto, el término "comprende" y sus derivaciones (como "comprendiendo", etc.) no deben entenderse en un sentido excluyente, es decir, estos términos no deben interpretarse como excluyentes de la posibilidad de que lo que se describe y define pueda incluir más elementos, etapas, etc.

Descrita suficientemente la naturaleza de la invención, así como la manera de realizarse en la práctica, hay que hacer constar la posibilidad de que sus diferentes partes podrán fabricarse en variedad de materiales, tamaños y formas, pudiendo igualmente introducirse en su constitución o procedimiento, aquellas variaciones que la práctica aconseje, siempre y cuando las mismas, no alteren el principio fundamental de la presente invención.

Esta descripción detallada se aporta para ayuda a un entendimiento completo de la invención. Por lo tanto, los expertos en la materia reconocerán que variaciones, cambios o modificaciones de las realizaciones descritas aquí pueden llevarse a cabo sin salir del ámbito de protección de la invención. También, la descripción de funciones y elementos sobradamente conocidos se omiten por claridad y concisión. La descripción y los dibujos simplemente ¡lustran los principios de la invención. Por lo tanto, debe apreciarse que los expertos en la técnica podrán concebir varias disposiciones que, aunque no se hayan descrito o mostrado explícitamente en este documento, representan los principios de la invención y están incluidas dentro de su alcance. Además, todos los ejemplos descritos en este documento se proporcionan principalmente por motivos pedagógicos para ayudar al lector a entender los principios de la invención y los conceptos aportados por el (los) inventor(es) para mejorar la técnica, y deben considerarse como no limitativos con respecto a tales ejemplos y condiciones descritos de manera específica. Además, todo lo expuesto en este documento relacionado con los principios, aspectos y realizaciones de la invención, así como los ejemplos específicos de los mismos, abarcan equivalencias de los mismos.

Aunque la presente invención se ha descrito con referencia a realizaciones específicas, los expertos en la técnica deben entender que los anteriores y diversos otros cambios, omisiones y adiciones en la forma y el detalle de las mismas pueden realizarse sin apartarse del alcance de la invención tal como se definen mediante las reivindicaciones siguientes.