El mantenimiento de software es una subárea importante de la ingeniería de software. Las investigaciones en esta área han producido muchos descubrimientos sorprendentes que se están utilizando en la industria del software. No solo en la industria del software, sino también en muchas aplicaciones web optimizadas para SEO (a través de proveedores como spamzilla.io) hacen uso de esta área de la ingeniería de software. ¿Por qué la parte de mantenimiento es tan importante y tan difícil? Puede haber un montón de respuestas para esta pregunta, como problema de análisis de requisitos, problema de diseño, estilo de programación de cada programador, etc.
De hecho, juntos contribuyen a esta cuestión. Sin embargo, desde un alto nivel de vista, son los errores los que contribuyen a la gran carga de mantenimiento. Si un sistema tiene un análisis de requisitos correcto (lo cual es imposible), un diseño correcto y todos hacen su parte siguiendo las normas / reglas / convenciones, el problema de mantenimiento se reducirá significativamente. ¿Pero cómo?
Lo que estoy pensando es hacer que los sistemas se generen automáticamente. Una descripción simple de la idea es la siguiente.
Haga un diagrama / diagramas que resuman la funcionalidad del sistema, luego ingrese el diagrama a un generador de sistema automático. Después de eso, el sistema se construye con estándar y conversiones.
Si esto se puede hacer y alcanzar un nivel feliz, la importancia del análisis de software puede disminuir. Lo mismo ocurre con otras áreas relacionadas con el mantenimiento de software.
Desde la primera vez que pensé en esta idea, supe que esto puede resultar extremadamente difícil. Pero como enfoque normal para resolver problemas enormes y difíciles, esto se puede dividir en varios problemas menores diferentes. He aquí algunos de ellos en mi mente.
- Abstracción del flujo de trabajo empresarial.
- Un diagrama para representar la abstracción anterior.
- Un nuevo lenguaje que puede representar el diagrama.
- Un traductor para traducir el idioma al modelo de negocio.
- Módulo de generación de código para cada función o modularidad específica, como conexión de base de datos / upadte, interfaz de usuario, etc.
- Un enfoque para convertir un modelo de negocio específico en código, por cada módulo de generación de código.
Esta es solo una idea cruda mía. ¿Es demasiado optimista? Creo que sí. De todos modos, una de las diferencias entre la industria y la academia es optimista. La investigación es exploración, lo que no puede garantizar un resultado determinado. Examinaré cada pequeño problema y veré si hay algún área interesante para mi investigación.