Tenemos que crear una aplicación web que se utilizará como formulario de solicitud para múltiples productos de seguros (15 en total). Este formulario de solicitud será similar a un asistente de formularios, abarcará varias páginas, según el producto entre 4 y 10.
El total general de todos los elementos diferentes (entradas, cuadros de selección) que representará el formulario es de alrededor de 250, pero incluso el producto más complejo no utilizará más de 170 de ellos. El menos complejo todavía requiere alrededor de 80 elementos.
No queremos crear 15 formularios de solicitud diferentes, uno por producto, queremos tener un solo formulario de solicitud que será utilizado por todos los productos.
Ahora, como puedes imaginar, los elementos tienen muchas dependencias entre ellos. Un valor ingresado en un campo puede hacer que otro campo o conjunto de campos aparezca o desaparezca (en la página actual o en la (s) siguiente (s) página (s)). Algunas otras dependencias basadas en valores ingresados:
- el valor de un elemento es obligatorio o no
- los valores posibles para cuadros seleccionados serán cambiados
- las restricciones de validación serán cambiadas
Como puedes imaginar, modelar esto es muy complejo. La pregunta es, ¿qué herramienta recomendaría para modelar (y documentar) todos estos elementos, las dependencias entre ellos y las restricciones de validación? ¿Cómo harías el modelado? No estoy hablando del modelo de datos en absoluto en este caso. Este modelo será parte de las especificaciones de lo que debe hacerse y como referencia después de la finalización del proyecto. Al cambiar el modelo, los formularios de solicitud no se cambiarán automáticamente.
Algunas de las cosas que nos gustaría poder hacer fácilmente:
- ver de qué elementos depende un determinado elemento
- ver todos los elementos incluidos en el formulario para cierto producto
- ver los elementos requeridos para un determinado producto
- definir reglas de validación para cada elemento
- definir varios atributos para cada elemento
Limitación: nuestros gerentes de productos y propietarios de productos son los que harán el modelado.
fuente
Respuestas:
Para un proyecto complejo similar, implementamos un intérprete en la capa empresarial con fórmulas para "isValid" e "isVisible" para cada elemento de formulario
Para el intérprete utilizamos el lenguaje de restricción de objetos UML-s que alguna vez fue diseñado para ese propósito.
Desafortunadamente, casi nadie habla "uml-ocl", por lo que es difícil encontrar a alguien que mantenga las reglas.
Si tuviéramos que hacer eso nuevamente, elegiríamos un lenguaje más común como js / vb-script para el intérprete
fuente
Una combinación de herramientas podría ayudar a gestionar la complejidad. Me gusta comenzar con un enfoque estructurado pero descriptivo (a diferencia de un enfoque altamente formalizado) con el que los humanos puedan interactuar fácilmente. Los PM deben sentirse cómodos con las hojas de cálculo y puede ser útil diseñar dependencias en formato tabular.
Como primer paso, esto puede exponer problemas con la lógica y / o identificar oportunidades para simplificar la lógica.
Y si bien los PM pueden evitar la programación web directamente, utilice una tecnología moderna y expresiva del lado del cliente para desarrollar el "lenguaje" de su aplicación. Herramientas como angular.js ayudan a fomentar el enfoque en lo que hacen los componentes y minimizar el código de ruido. La tecnología web adecuada también debería proporcionar un buen soporte de prueba.
fuente
Teníamos un proyecto similar. Formas muy complejas, y muchas de ellas.
Arquitecto empresarial (EA)
Aquí hay un enlace.
Calificador: han pasado algunos años desde la última vez que lo usé. Una herramienta compleja Gran curva de aprendizaje. Se requieren muy buenos conocimientos de UML para obtener resultados precisos; Hay metadatos detrás de todo . Por lo tanto, la funcionalidad de EA es amplia, profunda, enigmática y, a veces, peculiar.
EA integra muy bien sus artefactos. Pero el conocimiento colectivo de herramientas de UML y EA de nuestros equipos fue insuficiente para convertirlo en una herramienta satisfactoria de extremo a extremo. Tenga en cuenta que nuestro objetivo no era usarlo de esa manera. Aun así, es mejor no usar (algunos aspectos) de la herramienta que usarla mal.
Cada desarrollador lo usó para diseñar clases para su formulario asignado (o sección del mismo). El analista de negocios lo usó para crear diagramas de casos de uso. No lo usé para el análisis de requisitos porque los formularios en papel, los datos de los formularios y el proceso estaban bien establecidos, y se hicieron antes de adoptar EA.
Nunca pudimos aprovechar esta herramienta integral que tenía la promesa de integración desde el análisis de requisitos hasta el código real. Los desarrolladores aprendieron solo lo suficiente como para crear los diagramas de secuencia y clase rudimentarios necesarios para la aprobación del código de gestión. Y era evidente para mí que incluso cuando generaba código shell a partir de los diagramas de clase era demasiado difícil (es decir, falta de conocimiento detallado de UML), demasiado inconveniente, demasiado tedioso para mantener EA sincronizado con el desarrollo del código. Tan pronto como comenzamos a codificar los diagramas UML rápidamente se volvieron obsoletos y fueron ignorados.
Los buenos diagramas de secuencia son invaluables para comprender la interacción de clase y la instanciación de objetos. Un buen mapa de alto nivel al codificar.
Advertencia
El diseño competente y (apropiadamente) completo del dominio comercial es MUCHO más importante que cualquier herramienta. Recibo PTS solo pensando en cuán universalmente era nuestro código * * $ & # excepto por el muy raro momento en que hicimos un buen modelo de negocio. Podría escribir páginas y páginas.
fuente