Duda sobre diagrama de casos de uso

Iniciado por itzg3, 27 Abril 2020, 17:27 PM

0 Miembros y 1 Visitante están viendo este tema.

itzg3

Hola a todos estoy realizando un proyecto, se trata de un sistema web de gestión para un consultorio oftalmológico, en el cual solo existen 3 actores directos con el sistema: el administrador, el médico y el asistente. Cabe resaltar que el Administrador es el mismo médico del consultorio, esto me genero muchas dudas, ya que mayormente el administrador del sistema tiene acceso total al sistema, pero su principal función es la de gestionar usuarios. Entonces realice dos versiones del diagrama general de los casos de uso de mi proyecto.
Por favor quisiera que opinen y me digan cual de ellas seria la mas apropiada o quizás otra  alternativa.
Ver 01: https://ibb.co/Vvf5pcc


Ver 02: https://ibb.co/F4Zv8VD

K-YreX

Para el segundo diagrama en el que el administrador es a su vez médico y por tanto actúa en todos los casos de uso del médico, sería mejor usar la especialización. Si mal no recuerdo se representa con una flecha de un actor al otro para decir que uno "hereda" del otro.

Yo creo que el primer diagrama te valdría más si el sistema va a hacer distinción entre si la persona en un momento exacto tiene el rol de administrador o de médico. Entonces tendrías que tener una forma de saber si ese administrador está trabajando como médico o como administrador.
Y el segundo supuesto sería más correcto si el administrador puede hacer una labores u otras en cualquier momento sin tener que identificarse como administrador o como médico en cada momento. Pero como te digo haciendo una especialización entre el administrador y el médico para no repetir las flechas y hacer el diagrama más fácil de ampliar. (Así si añades un nuevo caso de uso para el médico, automáticamente lo tendrá disponible el administrador también).

Espero que te sirva la respuesta. La verdad es que es un tema que tengo un poco olvidado de cuando lo vi en la carrera. :rolleyes:
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

itzg3

Entiendo la idea, muchas gracias.
Y si seria el caso de que tanto el administrador como el medico son personas diferentes, lo ideal seria el diagrama de la versión 01? Aún estaría con una duda, es que mayormente en todo los sistemas de gestión un Administrador tiene acceso a toda las funciones del sistema. Pero desde mi punto de vista en este caso lo mas apropiado para el Administrador ¿seria solo el de gestionar a los usuarios del sistema, dejando el resto de módulos según corresponda al medico y asistente respectivamente?
(Esto se puede ver en la primera imagen).

K-YreX

Cita de: itzg3 en 27 Abril 2020, 19:01 PM
Entiendo la idea, muchas gracias.
Y si seria el caso de que tanto el administrador como el medico son personas diferentes, lo ideal seria el diagrama de la versión 01?
Aún estaría con una duda, es que mayormente en todo los sistemas de gestión un Administrador tiene acceso a toda las funciones del sistema. Pero desde mi punto de vista en este caso lo mas apropiado para el Administrador ¿seria solo el de gestionar a los usuarios del sistema, dejando el resto de módulos según corresponda al medico y asistente respectivamente?
(Esto se puede ver en la primera imagen).
Más que que sean personas diferentes, sería el mismo criterio de antes. Dependería de si el sistema necesita que el administrador cambie de rol para hacer una tarea del médico (diagrama 1) o por ser administrador puede hacer cualquier cosa que hace el médico (diagrama 2).
Al final que el administrador pueda hacer todo lo que corresponde al médico, no significa que lo haga, simplemente que el sistema no le pondrá pegas si en un momento determinado lo hace.

Ya te digo que no sé cómo funciona de forma real porque yo lo he visto de forma teórica y de la teoría a la práctica hay un trecho. Pero digo yo que en una empresa, si el jefe (pongamos un tío que dirige 1000 talleres de coches y va siempre con traje y maletín) quiere un día ponerse a cambiar una rueda no será el ordenador el que le diga "chsss tú, que no te dejo que trabajes cambiando ruedas, tú a tu despacho a hacer papeles que es lo que tienes que hacer".
O vamos puede que sí, que el registro de empleados se lleve de otra forma aislada y el jefe no pueda hacer las tareas de los empleados.
El ejemplo es un poco tremendista pero vamos es para que se entienda. Lo que diseñes es lo que el sistema va a permitir o a prohibir.

Con el segundo diseño, el jefe podría hacer el cambio de ruedas y poner en el sistema que el cambio de ruedas lo ha hecho él con su usuario de jefe y con el primero el jefe tendría que tener dos usuarios en el sistema: uno de jefe y otro de mecánico (que son los únicos a los que el sistema permite hacer un cambio de ruedas) y el sistema guardaría el usuario del jefe como mecánico y no como jefe.

Yo es como lo veo llevando la teoría a la práctica pero si alguien sabe cómo funciona realmente esto en el día a día seguramente pueda responderte con más precisión.

Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

itzg3

Gracias en verdad, aclaraste gran parte de mis dudas con el ejemplo que diste y principalmente con esto:
Lo que diseñes es lo que el sistema va a permitir o a prohibir.
Ahora tengo la idea mas clara para proseguir con mi proyecto.
Saludos