¿Cuál es la diferencia entre incluir y extender en el diagrama de casos de uso?

377

¿Cuál es la diferencia entre includey extenden un diagrama de caso de uso ?

sevugarajan
fuente
No haría un mejor trabajo que Scott Ambler al explicar cómo se pueden usar para reutilizar en modelos de casos de uso y cómo difieren. Entonces, en lugar de parafrasearlo, sugeriría leer Reutilizar en modelos de casos de uso: & lt; & lt; extend & gt; & gt ;, & lt; & lt; include & gt; & gt ;, and Inheritance .
Pascal Thivent
77
De hecho, esta pregunta está relacionada con la programación ...
Pascal Thivent
35
@closers: esta es una pregunta válida.
Henk Holterman el
82
Para abreviar -> include = Madatory, extender = Opcional
Thein
2
@Megamind 'extend = Opcional' no es del todo cierto ... Mira este enlace de
Shanaka Jayalath,

Respuestas:

263

Extender se usa cuando un caso de uso agrega pasos a otro caso de uso de primera clase.

Por ejemplo, imagine que "Retirar efectivo" es un caso de uso de un cajero automático (ATM). "Evaluar tarifa" ampliaría Retirar efectivo y describiría el "punto de extensión" condicional que se crea cuando el usuario del cajero automático no realiza operaciones bancarias en la institución propietaria del cajero automático. Observe que el caso de uso básico "Retirar dinero en efectivo" es independiente, sin la extensión.

Incluir se utiliza para extraer fragmentos de casos de uso que se duplican en múltiples casos de uso. El caso de uso incluido no puede estar solo y el caso de uso original no está completo sin el incluido. Esto debe usarse con moderación y solo en los casos en que la duplicación sea significativa y exista por diseño (en lugar de por coincidencia).

Por ejemplo, el flujo de eventos que ocurre al comienzo de cada caso de uso de cajero automático (cuando el usuario ingresa su tarjeta de cajero automático, ingresa su PIN y se muestra el menú principal) sería un buen candidato para una inclusión.

Doug Knesek
fuente
1
Include is used to extract use case fragments that are duplicated in multiple use cases, ¿qué se extrae en esos pasos puts in their ATM card, enters their PIN, and is shown the main menu:? Gracias
Blaze Tama
2
Debo estar en desacuerdo con la inclusión de los pasos de "inicio de sesión" como un buen candidato para una inclusión . Esos pasos forman un caso de uso propio y deben estar vinculados a los otros casos de uso por postcondiciones -> precondiciones.
Bruno Brant
22
@Bruno: nadie iniciaría sesión en un cajero automático y se iría feliz. Los casos de uso concretos deben proporcionar un valor independiente al actor, de lo contrario, son solo funciones en una descomposición funcional.
Doug Knesek
@Blaze: todas las partes del flujo de inicio de sesión, incluidos esos pasos.
Doug Knesek
1
¿Cómo podría ser tasado honorario un UC? Este es un flujo condicional en un escenario. No es un valor agregado en absoluto. Es todo lo contrario.
qwerty_so
113

Esto puede ser polémico, pero "incluye siempre y las extensiones son a veces" es un error muy común que casi se ha convertido en el significado de facto. Aquí hay un enfoque correcto (en mi opinión, y comparado con Jacobson, Fowler, Larmen y otras 10 referencias).

Las relaciones son dependencias

La clave para incluir y extender las relaciones de casos de uso es darse cuenta de que, común con el resto de UML, la flecha punteada entre los casos de uso es una relación de dependencia. Usaré los términos 'base', 'incluido' y 'extendido' para referirme a los roles de casos de uso.

incluir

Un caso de uso base depende de los casos de uso incluidos; sin ellos, el caso de uso base está incompleto ya que los casos de uso incluidos representan subsecuencias de la interacción que puede ocurrir siempre O a veces. (Esto es contrario a un concepto erróneo popular sobre esto, lo que sugiere su caso de uso siempre sucede en el escenario principal y, a veces, sucede en flujos alternativos, simplemente depende de lo que elija como su escenario principal; los casos de uso se pueden reestructurar fácilmente para representar un flujo diferente como escenario principal y esto no debería importar).

En la mejor práctica de dependencia unidireccional, el caso de uso base conoce (y se refiere a) el caso de uso incluido, pero el caso de uso incluido no debe 'saber' sobre el caso de uso base. Es por eso que los casos de uso incluidos pueden ser: a) casos de uso base por derecho propio yb) compartidos por varios casos de uso base.

ampliar

El caso de uso extendido depende del caso de uso base; literalmente extiende el comportamiento descrito por el caso de uso base. El caso de uso base debe ser un caso de uso completamente funcional por derecho propio ('incluye incluidos, por supuesto) sin la funcionalidad adicional del caso de uso extendido.

Los casos de uso extensivos se pueden usar en varias situaciones:

  1. El caso de uso base representa la funcionalidad "imprescindible" de un proyecto, mientras que el caso de uso extendido representa un comportamiento opcional (debería / podría / querer). Aquí es donde el término opcional es relevante: opcional si se debe construir / entregar en lugar de opcional si a veces se ejecuta como parte de la secuencia de casos de uso base.
  2. En la fase 1, puede entregar el caso de uso base que cumpla los requisitos en ese punto, y la fase 2 agregará la funcionalidad adicional descrita por el caso de uso extendido. Esto puede contener secuencias que siempre o algunas veces se realizan después de la entrega de la fase 2 (de nuevo, contrariamente al concepto erróneo popular).
  3. Se puede usar para extraer subsecuencias del caso de uso base, especialmente cuando representan un comportamiento complejo 'excepcional' con sus propios flujos alternativos.

Un aspecto importante a considerar es que el caso de uso extendido puede 'insertar' el comportamiento en varios lugares en el flujo del caso de uso base, no solo en un solo lugar como lo hace un caso de uso incluido. Por esta razón, es muy poco probable que un caso de uso extendido sea adecuado para extender más de un caso de uso base.

En cuanto a la dependencia, el caso de uso extendido depende del caso de uso base y nuevamente es una dependencia unidireccional, es decir, el caso de uso base no necesita ninguna referencia al caso de uso extendido en la secuencia. Eso no significa que no pueda demostrar los puntos de extensión o agregar una referencia x al caso de uso extendido en otra parte de la plantilla, pero el caso de uso base debe poder funcionar sin el caso de uso extendido.

RESUMEN

Espero haber demostrado que la idea errónea común de "incluye siempre, las extensiones son a veces" es incorrecta o, en el mejor de los casos, simplista. Esta versión realmente tiene más sentido si considera todos los problemas sobre la direccionalidad de las flechas que presenta la idea errónea: en el modelo correcto es solo dependencia y no cambia potencialmente si refactoriza el contenido del caso de uso.

Julian C
fuente
3
sería genial si pudieras agregar algunas referencias para ese reclamo
mibollma
1
Lo sentimos, crear un diagrama UML de esta manera a medida que el software pasa por iteraciones que agregan nuevas funcionalidades que siempre fueron necesarias en el estado final, sería innecesariamente confuso y complejo. Prefiero el enfoque de Doug Knesek, mucho más simple de entender y trabajar sin crear confusión ni complejidad innecesarias.
BigMac66
1
Aunque tiene razón al cuestionar los "incluye siempre y los extensos son a veces" en relación con las instancias de casos de uso, su elección de explotar la semántica "extender" para admitir la entrega incremental puede hacer que otros piensen que "extender" está SOBRE la entrega incremental.
Doug Knesek
81

A menudo uso esto para recordar los dos:

Mi caso de uso: voy a la ciudad.

incluye -> conducir el coche

se extiende -> llenar la gasolina

"Llenar la gasolina" puede no ser necesario en todo momento, pero opcionalmente puede ser requerido en función de la cantidad de gasolina que queda en el automóvil. "Conducir el automóvil" es un requisito previo, por lo tanto, estoy incluido.

skipy
fuente
Pero, "llenar la gasolina" en realidad se extiende "ir a la ciudad", no al revés, ¿verdad?
Petr Hudeček
1
Creo que depende del punto de vista de Petr. Imho "llenar la gasolina" en realidad puede extender la conducción del automóvil también.
Daniel Perník
2
Ir a la ciudad y llenar la gasolina suena como dos cosas completamente ajenas que podrían suceder por coincidencia.
OdraEncoded
1
@OdraEncoded es correcto. La gasolina de relleno no depende de ir a la ciudad.
nonybrighto
57

Los casos de uso se utilizan para documentar el comportamiento, por ejemplo, responda esta pregunta.

responde la pregunta caso de uso

Un comportamiento extiende a otro si es adicional pero no necesariamente parte del comportamiento, por ejemplo, investiga la respuesta.

También tenga en cuenta que investigar la respuesta no tiene mucho sentido si no está tratando de responder la pregunta.

investigar la respuesta extender

Un comportamiento se incluye en otro si es parte del comportamiento de inclusión, por ejemplo, iniciar sesión para intercambiar pilas.

iniciar sesión para incluir el intercambio de pila

Para aclarar, la ilustración solo es cierta si desea responder aquí en el desbordamiento de pila :).

Estas son las definiciones técnicas de UML 2.5 páginas 671-672.

Destaqué lo que creo que son puntos importantes.

Se extiende

Una extensión es una relación de una UseCase extendida (la extensión) a una UseCase extendida (la ExtendedCase) que especifica cómo y cuándo el comportamiento definido en la UseCase extendida se puede insertar en el comportamiento definido en la UseCase extendida. La extensión tiene lugar en uno o más puntos de extensión específicos definidos en UseCase extendido.

Extender está destinado a usarse cuando hay algún comportamiento adicional que debería agregarse, posiblemente condicionalmente , al comportamiento definido en uno o más UseCases.

El caso de uso prolongado se define independientemente del caso de uso que se extiende y es significativo con independencia del caso de uso se extiende . Por otro lado, el UseCase extendido generalmente define un comportamiento que puede no ser necesariamente significativo por sí mismo . En cambio, UseCase extendido define un conjunto de incrementos de comportamiento modular que aumentan la ejecución de UseCase extendido bajo condiciones específicas.

...

Incluye

Incluir es una relación dirigida entre dos UseCases, lo que indica que el comportamiento de la UseCase incluida (la adición) se inserta en el comportamiento de la UseCase incluida (la incluyendoCase). También es un tipo de NamedElement para que pueda tener un nombre en el contexto de su propietario UseCase (el includeCase). UseCase incluido puede depender de los cambios producidos al ejecutar UseCase incluido. UseCase incluido debe estar disponible para que se describa completamente el comportamiento de UseCase incluido.

La relación Incluir está pensada para usarse cuando hay partes comunes del comportamiento de dos o más UseCases. Esta parte común se extrae luego en una UseCase separada, para ser incluida por todas las UseCases básicas que tienen esta parte en común . Como el uso principal de la relación Incluir es para la reutilización de partes comunes, lo que queda en UseCase base generalmente no está completo en sí mismo, sino que depende de que las partes incluidas sean significativas. Esto se refleja en la dirección de la relación, lo que indica que UseCase base depende de la adición, pero no al revés.

...

usuario1874524
fuente
23

Creo que es importante entender la intención de incluye y extiende:

"La relación de inclusión está destinada a reutilizar el comportamiento modelado por otro caso de uso , mientras que la relación de extensión está destinada a agregar partes a casos de uso existentes , así como a modelar servicios de sistema opcionales " (Overgaard y Palmkvist, Casos de uso: patrones y planos. Addison -Wesley, 2004).


Esto me dice como:

Incluir = reutilización de la funcionalidad (es decir, la funcionalidad incluida se usa o podría usarse en otra parte del sistema). Incluir, por lo tanto, denota una dependencia en otro caso de uso.

Se extiende = agregando (no reutilizando) la funcionalidad y también cualquier funcionalidad opcional . Extiende, por lo tanto, puede denotar una de dos cosas:
1. Agregar nuevas características / capacidades a un caso de uso (opcional o no)
2. Cualquier caso de uso opcional (existente o no).

Resumen:
Incluir = reutilización de funcionalidad
Extiende = funcionalidad nueva y / u opcional

La mayoría de las veces encontrará el segundo uso (es decir, la funcionalidad opcional) de las extensiones, porque si la funcionalidad no es opcional, la mayoría de las veces está integrada en el caso de uso, en lugar de ser una extensión. Al menos esa ha sido mi experiencia. (Julian C señala que a veces se ve el primer uso (es decir, agregar nuevas características) de extensiones cuando un proyecto entra en su segunda fase).

revs jimasp
fuente
23

Simplificar,

para include

  1. Cuando se ejecuta el caso de uso base, el caso de uso incluido se ejecuta CADA VEZ .
  2. El caso de uso base requería completar el caso de uso incluido para poder completarlo.

un ejemplo típico: entre iniciar sesión y verificar contraseña

(inicio de sesión) --- << incluir >> --- > (verificar contraseña)

para que el proceso de inicio de sesión sea exitoso, "verificar contraseña" también debe ser exitoso.


para extend

  1. Cuando se ejecuta el caso de uso base, el caso de uso extendido se ejecuta solo A VECES
  2. El caso de uso extendido solo ocurrirá cuando se cumplan ciertos criterios.

Un ejemplo típico: entre el inicio de sesión y el mensaje de error del show (solo sucedió a veces)

(inicio de sesión) < --- << extender >> --- (mostrar mensaje de error)

"mostrar mensaje de error" solo ocurre a veces cuando falla el proceso de inicio de sesión.

bohbian
fuente
gran ejemplo!
Pavel Durov
15

Creo que lo que msdn explicó aquí es bastante fácil de entender.

Incluir [5]

Un caso de uso incluido llama o invoca al incluido. La inclusión se utiliza para mostrar cómo un caso de uso se divide en pasos más pequeños. El caso de uso incluido está en el extremo de la punta de flecha.

Extender [6]

Mientras tanto, un caso de uso extendido agrega objetivos y pasos al caso de uso extendido. Las extensiones operan solo bajo ciertas condiciones. El caso de uso extendido está en el extremo de la punta de flecha.

ingrese la descripción de la imagen aquí

Etic
fuente
Al menos debería citar la esencia en su respuesta, no simplemente agregar un enlace a una respuesta. Además de eso, la explicación a la que hace referencia tampoco es realmente buena o precisa.
Geert Bellekens
Hola @GeertBellekens, agregué algunos detalles para explicar la diferencia entre incluir y extender. En mi humilde opinión, el diagrama en sí mismo comunica claramente la diferencia y para eso se usa el diagrama.
Etic
Me alegra que hayas agregado las explicaciones, pero sigo pensando que no son muy buenas o precisas. Las personas (incluso, o especialmente si escriben para msdn) deberían dejar de inventar sus propias definiciones para algo que ya está definido en un estándar.
Geert Bellekens
15

Hagamos esto más claro. Usamos includecada vez que queremos expresar el hecho de que la existencia de un caso depende de la existencia de otro.

EJEMPLOS

Un usuario puede hacer compras en línea solo después de haber iniciado sesión en su cuenta. En otras palabras, no puede hacer compras hasta que haya iniciado sesión en su cuenta.

Un usuario no puede descargar desde un sitio antes de que el material haya sido cargado. Por lo tanto, no puedo descargar si no se ha subido nada.

¿Lo entiendes?

Se trata de consecuencia condicionada. No puedo hacer esto si anteriormente no hice eso .

Al menos, creo que esta es la forma correcta que usamos Include. Tiendo a pensar que el ejemplo con Laptop y la garantía de arriba es el más convincente.

Alin Andrei
fuente
1
Sobre se extiende?
AlphaGoku
8

siempre que haya requisitos previos para un caso de uso, vaya a incluir.

para los casos de uso que tienen autenticación, el peor de los casos, o son opcionales, entonces vaya a extender.

ejemplo: para un caso de uso de solicitar admisión, cita, reserva de boletos, DEBE LLENAR un formulario (formulario de registro o comentarios) ... aquí es donde se incluye include ..

ejemplo: para un caso de uso que verifique el inicio de sesión o inicie sesión en su cuenta, su autenticación es imprescindible. También piense en los peores escenarios, como devolver el libro con multa ... NO obtener una reserva ... pagar la factura DESPUÉS DE LA FECHA DE VENCIMIENTO ... esta es donde extender viene a jugar ...

no use en exceso incluir y extender en los diagramas.

¡MANTÉNGALO SIMPLE TONTO!

Vinay Narang
fuente
6

También tenga cuidado con la versión UML: ha pasado mucho tiempo ahora que << usos >> e << incluye >> han sido reemplazados por << incluir >>, y << se extiende >> por << se extiende >> Y generalización .
Para mí, ese es a menudo el punto engañoso: como ejemplo, la publicación y el enlace de Stephanie trata sobre una versión anterior:

Al pagar un artículo, puede optar por pagar contra reembolso, pagar con PayPal o pagar con tarjeta. Estas son todas las alternativas al caso de uso de "pagar por artículo". Puedo elegir cualquiera de estas opciones según mi preferencia.

De hecho, no existe una alternativa real para "pagar por artículo". En la actualidad, UML, "pagar contra entrega" es una extensión, y "pagar usando paypal" / "pagar con tarjeta" son especializaciones.

Sylvain H.
fuente
5

"Incluir" se usa para extender el caso de uso base y es una condición obligatoria, es decir, la ejecución del caso de uso incluido debe ejecutarse con éxito para completar el uso base.

por ejemplo, considere un caso de servicio de correo electrónico, aquí "Iniciar sesión" es un caso de uso incluido que debe ejecutarse para enviar un correo electrónico (caso de uso base)

"Excluir", por otro lado, es un caso de uso opcional que extiende el caso de uso base, el caso de uso base puede ejecutarse con éxito incluso sin invocar / llamar al caso de uso extendido.

por ejemplo, considere "Compra de laptop" como caso de uso básico y "Garantía adicional" como caso de uso extendido, aquí puede ejecutar el caso de uso básico "Compra de laptop" incluso sin tomar una garantía adicional.

sarbjit
fuente
¿Quizás el caso de "hacer" el pago serviría como un "incluye" para comprar una computadora portátil? Digo esto porque es bueno tener los ejemplos 'juntos' en el mismo escenario. Además, realizar un pago es algo que se usaría en muchos escenarios diferentes, por lo que parece que podría ser un candidato adecuado para <<include>>.
baxx
Loginno es un caso de uso en absoluto. Es una función realizada para cumplir una condición previa.
qwerty_so
4

Elementos del diagrama

  • Actores: también conocidos como Roles. El nombre y el estereotipo de un actor se pueden cambiar en su pestaña Propiedades.

  • Herencia: Relaciones de refinamiento entre actores. Esta relación puede llevar un nombre y un estereotipo.

  • Casos de uso: pueden tener puntos de extensión.

  • Puntos de extensión: Esto define una ubicación donde se puede agregar una extensión.

  • Asociaciones: entre roles y casos de uso. Es útil dar a las asociaciones nombres que hablan.

  • Dependencias: Entre casos de uso. Las dependencias a menudo tienen un estereotipo para definir mejor el papel de la dependencia. Para seleccionar un estereotipo, seleccione la dependencia del diagrama o del panel de navegación, luego cambie el estereotipo en la pestaña Propiedades. Hay dos tipos especiales de dependencias: <<extend>>y <<include>>, para las cuales Poseidón ofrece botones propios (ver más abajo).

  • Relación de extensión: una relación unidireccional entre dos casos de uso. Una relación extendida entre el caso de uso B y el caso de uso A significa que el comportamiento de B puede incluirse en A.

  • Incluir relación: una relación unidireccional entre dos casos de uso. Tal relación entre los casos de uso A y B significa que el comportamiento de B siempre se incluye en A.

  • Borde del sistema: el borde del sistema en realidad no se implementa como elemento modelo en Poseidon para UML. Simplemente puede dibujar un rectángulo, enviarlo al fondo y usarlo como borde del sistema colocando todos los casos de uso correspondientes dentro del rectángulo.

LOURDHU KUMAR
fuente
4

Ambos <include>y <extend>dependen de la clase base, pero <extend>es opcional, es decir, se deriva de la clase base, pero desde el punto de vista de los usuarios, se puede usar o no.

<include>está incorporado en la clase base, es decir, es obligatorio usarlo <include>en su caso de uso o de lo contrario se consideraría incompleto.

p.ej:

En la construcción de cajeros automáticos (según el punto de vista de los usuarios):

1: Retirada, depósito de efectivo y verificación de la cuenta se ve afectada <extend>porque depende del usuario si desea retirar, depositar o verificar. Estas son cosas opcionales que hace el usuario.

2: "Ingrese el pin, colocando la tarjeta, quitando la tarjeta" estas son las cosas que vienen debajo <include>porque el usuario debe y debe colocar una tarjeta e ingresar un pin válido para la verificación.

navya reddy maistry
fuente
3

No recomiendo el uso de esto para recordar los dos:

Mi caso de uso: voy a la ciudad.

incluye -> conducir el coche

se extiende -> llenar la gasolina

Prefiero que uses: Mi caso de uso: Voy a la ciudad.

se extiende -> conduciendo el coche

incluye -> llenar la gasolina

Me enseñaron que extender la relación continúa el comportamiento de una clase base. Las funcionalidades de la clase base tienen que estar ahí. La relación de inclusión, por otro lado, es similar a las funciones que se pueden llamar. May está en negrita.

Esto se puede ver en la reutilización de modelos ágiles en modelos de casos de uso

Aprendiz
fuente
Más bien debería leer "llenar la gasolina -> extiende" ya que su UC principal no extiende "llenar la gasolina". Excepto que usted es una compañía petrolera.
qwerty_so
3

La diferencia entre ambos se ha explicado aquí. Pero lo que no se ha explicado es el hecho de que <<include>>, y <<extend>>no debe ser simplemente utiliza en absoluto.

Si lees Bittner / Spence, sabes que los casos de uso tienen que ver con la síntesis, no con el análisis. Una reutilización de casos de uso no tiene sentido. Muestra claramente que ha cortado su dominio incorrectamente. El valor agregado debe ser único per se. La única reutilización del valor agregado que conozco es la franquicia. Entonces, si estás en el negocio de las hamburguesas, está bien. Pero en cualquier otro lugar, su tarea como BA es tratar de encontrar un USP. Y eso debe presentarse en casos de buen uso.

Cada vez que veo personas usando una de esas relaciones es cuando intentan hacer una descomposición funcional. Y eso es completamente incorrecto.

En pocas palabras: si puede responder a su jefe sin dudarlo "He hecho ...", entonces el "..." es su caso de uso, ya que tiene dinero para hacerlo. (Eso también dejará en claro que "iniciar sesión" no es un caso de uso).

A ese respecto, es muy poco probable encontrar casos de uso autónomos que estén incluidos o amplíen otros casos de uso. Eventualmente, puede usar <<extend>>para mostrar la opcionalidad de su sistema, es decir, algún esquema de licencia que permita incluir casos de uso para algunas licencias u omitirlas. Pero de lo contrario, solo evítalos.

qwerty_so
fuente
3

Extender se utiliza cuando comprende que su caso de uso es demasiado complejo. Entonces extrae los pasos complejos en sus propios casos de uso de "extensión".

Incluye se utiliza cuando ve un comportamiento común en dos casos de uso. Así que abstraes el comportamiento común en un caso de uso "abstracto" separado.

(ref: Jeffrey L. Whitten, Lonnie D. Bentley, Análisis de sistemas y métodos de diseño, McGraw-Hill / Irwin, 2007)

mrmashal
fuente
1
Extender no tiene nada que ver con un caso de uso que es simplemente demasiado complejo. Ese enfoque conducirá a construir una descomposición funcional en lugar de un modelo de caso de uso real.
Doug Knesek
1
Creo que los conceptos de ingeniería de software y, en general, todo lo que se acerca a las ciencias humanas se basa mucho en la opinión. He incluido la referencia (ver página 248). No seas demasiado duro, hombre :)
mrmashal
3

La relación de inclusión permite que un caso de uso incluya los pasos de otro caso de uso.

Por ejemplo, suponga que tiene una cuenta de Amazon y desea verificar un pedido, bueno, es imposible verificar el pedido sin primero iniciar sesión en su cuenta. Entonces el flujo de eventos quisiera así ...

ingrese la descripción de la imagen aquí

La relación de extensión se usa para agregar un paso adicional al flujo de un caso de uso, que generalmente es un paso opcional ...

ingrese la descripción de la imagen aquí

Imagine que todavía estamos hablando de su cuenta de Amazon. Supongamos que el caso base es Order y el caso de uso de la extensión es Amazon Prime . El usuario puede optar por pedir el artículo regularmente o tiene la opción de seleccionar Amazon Prime, lo que garantiza que su pedido llegue más rápido a un costo mayor.

Sin embargo, tenga en cuenta que el usuario no tiene que seleccionar Amazon Prime, esta es solo una opción, puede elegir ignorar este caso de uso.

buydadip
fuente
¿Qué tipo de caso de uso debería Amazon Primeser? Ni siquiera contiene un verbo.
qwerty_so
0

Me gusta pensar que "incluye" como un prerrequisito / acompañamiento necesario del caso de uso base. Esto significa que el caso de uso base no puede considerarse completo sin el caso de uso que incluye. Daré el ejemplo de un sitio web de comercio electrónico que vende artículos a clientes. No hay forma de que pueda pagar por un artículo sin seleccionarlo primero y ponerlo en el carrito. Esto implica que el caso de uso "Pagar artículo" incluye "seleccionar artículo".

Existen diversos usos de las extensiones, pero me gusta pensar que es una alternativa que se puede usar o no. Por ejemplo, todavía en el sitio de comercio electrónico. Al pagar un artículo, puede optar por pagar contra reembolso, pagar con PayPal o pagar con tarjeta. Estas son todas las alternativas al caso de uso de "pagar por artículo". Puedo elegir cualquiera de estas opciones según mi preferencia.

Para mayor claridad y las reglas que rodean los casos de uso, lea mi artículo aquí:

http://businessanalystlearnings.com/ba-techniques/2013/2/20/use-case-diagram-the-basics

Stephanie Famuyide
fuente
1
¡Bienvenido a Stack Overflow! Gracias por publicar tu respuesta! Asegúrese de leer atentamente las preguntas frecuentes sobre autopromoción. No es una mala respuesta, de verdad; pero tenga en cuenta lo que dicen las preguntas frecuentes sobre las publicaciones autopromocionales.
Andrew Barber
El diagrama UC en la parte inferior de su enlace es solo un antipatrón. Ni cuenta loginni createson casos de uso. Ambas son funciones. Por lo tanto -1
qwerty_so