Nuestra base de código actual no está estructurado muy bien y estamos buscando tanto en cómo mejorar inmediatamente [...] y pasar a un enfoque de arquitectura basado en modelo , donde modelamos y diseñamos todo primero con uml, y generamos el código de ese modelo.
En primer lugar, es muy bueno que usted y su empresa se da cuenta de que hay algunas deficiencias en el proceso de desarrollo de software y de que hay una voluntad de mejorar .
Parece que hay mucho trabajo por delante y muchas cosas que mejorar en diferentes direcciones. Mi primer consejo sería no intentar cambiar todo a la vez. En general, las personas son reacias a los cambios y todos necesitan algún tiempo para digerir nuevos cambios. También es muy importante crear un entendimiento común sobre lo que se debe configurar. Esta comprensión común no se creará en un día. Tal cambio requiere un compromiso de medio o largo plazo .
Luego, con respecto a MDA, es importante tener en cuenta que requiere un poco de disciplina. Dependiendo de su equipo, la primera parte podría trabajar en eso primero de una manera para preparar el siguiente paso, que sería introducir MDA. Lo digo porque dices que tienes un proceso de "cowboy", lo que significa que las personas probablemente estén acostumbradas a hacer lo que quieran, es un no-go para MDA.
Luego viene la introducción de MDA. Hay varias formas de hacer MDA (y no ampliaré aquí), pero la forma predominante de hacerlo es la llamada ingeniería de ida y vuelta. El mayor problema entonces es mantener el modelo y la fuente sincronizados.
(Mi opinión es que MDA conduce a un retorno de la inversión positivo solo si el modelo se puede reutilizar para varios proyectos. Esto significa que debe haber identificado las cosas que hace una y otra vez, y tener una visión clara suficiente sobre el problema para poder crear un modelo suficientemente completo y transformaciones que pueda reutilizar a lo largo del proyecto. No creo que MDA funcione si cada proyecto es completamente diferente, el tiempo invertido para obtener el modelo correcto y la transformación, etc. será más grande que trabajar solo con código y documentación.)
Otro enfoque es no hacer MDA por completo, no se genera código del modelo, sino aumentar la conciencia de las personas sobre el problema de diseño y modelado, p.ej con UML. De esta forma, no tendrá problemas de ida y vuelta pero aún así mejorará la madurez de su proceso de desarrollo de software.
¿No es el mayor riesgo que se equivoque con su modelo? Lo más probable es que solo se dé cuenta en un 90% a través de su proyecto de que su modelo estaba equivocado. – Gabe