Estoy seguro de que la mayoría está familiarizada con la frase DRY en el mundo del software: no se repita. Este es un principio fundamental del buen desarrollo de software.
Aquí hay una pregunta (primero el fondo).
Somos una institución educativa de alto nivel (universidad) y estamos preparando una nueva aplicación MVC. La versión actual de esta aplicación es para los profesores y el personal que pueden realizar diversas tareas, como buscar estudiantes, ver calificaciones y otra información académica sobre ese estudiante. Hay características para ayudar a los asesores a ingresar notas sobre sus estudiantes. Del mismo modo, hay vistas para mostrar los detalles generales de la universidad y el estado de las clases de graduación dadas. Todo esto tiene seguridad incorporada manteniendo el cumplimiento de FERPA .
Lo siguiente que vamos a hacer es implementar una versión para "estudiantes", algo en lo que los estudiantes pueden iniciar sesión para ver gran parte de la misma información, solo para el estudiante. No podrían ver la información de otros, sino solo la suya propia. Pero, podrán ver la misma información detallada a nivel universitario.
Mi propuesta es hacer de esta una sola aplicación y usar permisos para administrar las vistas y los datos que se muestran al usuario. Otros en el equipo piensan que deberían ser dos aplicaciones completamente separadas debido a la complejidad de modificar las vistas según el nivel de autorización del usuario.
Algunos de los problemas que veo al hacer de esta aplicación una aplicación separada son:
- MUCHAS de las vistas serían en realidad los mismos datos que se muestran. Tanto el código HTML como el modelo deberían copiarse entre las soluciones, sin mencionar las pruebas unitarias. No quiero mantener el mismo código en ambos lugares, que eventualmente será muy difícil de mantener.
- Las máscaras para ambos sitios son las mismas: cualquier cambio debe realizarse en ambos lugares.
- Las partes de autenticación y autorización son exactamente las mismas para ambas aplicaciones. Nos estamos autenticando contra AD y tenemos una base de datos de autorización común.
La razón principal por la que otros miembros del equipo desean aplicaciones separadas es porque existe una mayor complejidad en cuanto a tener que decidir quién está haciendo las llamadas y luego asegurarse de obtener las vistas y los datos que se supone que deben hacer.
Ahora, para las preguntas: ¿hay alguien que piense que estoy equivocado en mi posición al respecto? Si es así, explique por qué para que pueda entender mejor ese lado de la ecuación. Del mismo modo, si está de acuerdo conmigo, ¿tiene una mejor manera de explicar el razonamiento dado con mejores / más razones de las que he indicado anteriormente?
Gracias por cualquier sugerencia / pensamiento!