Identificación de actores para casos de uso

Estoy trabajando en un pequeño proyecto de hobby y estoy experimentando haciendo las cosas de manera un poco diferente.

El sistema que estoy construyendo es un sistema ERP e incluye caja, catálogo de productos, base de datos de ventas, registro de ventas (similar a la base de datos, pero utilizado para fines contables), una impresora, un socio de pago y una canasta (carrito).

Aunque la impresora es de hardware, necesito programar el código de nivel superior para imprimir recibos.

La única parte que no necesito programar es el socio de pago.

Tengo dos preguntas.

1) ¿El caso de uso de vender un montón de productos a un cliente sería un caso de uso llamado "vender artículos en caja", o se dividiría en varios, como "agregar producto al carrito" y "venta completa" (que escribiría el registro de ventas e imprimiría el recibo).

2) Aunque estoy programando el catálogo, la base de datos de ventas, el registro de ventas, la cesta, etc., ¿puedo modelarlos como actores en mis casos de uso? ¿O son los únicos actores el vendedor y el socio de pago?

preguntado el 27 de agosto de 11 a las 18:08

Creo que el caso de uso por separado sería una mejor idea. Y no tengo una idea clara de qué estás tratando de especificar sobre los actores. -

La razón por la que quiero que la base de datos de ventas, el registro de ventas, la canasta, etc. sean actores, es que resulta realmente fácil identificar los roles que están desempeñando los actores, porque puedo ver a los actores en el diagrama de casos de uso. no es fácil de explicar aquí, pero está relacionado con DCI, un nuevo paradigma: en.wikipedia.org/wiki/Data,_Context,_and_Interaction -

No estoy seguro de que esto se adhiera a Actor en el sentido del caso de uso. ¿Podrías dar más explicaciones sobre por qué tendrían que ser actores? Revisé rápidamente el artículo de Wikipedia y parece que estos roles están vinculados a objetos y la mención de un modelo de dominio hace que parezca que estos son objetos de dominio. El catálogo, la base de datos de ventas, el registro de ventas, la cesta, etc. podrían modelarse muy bien como clases en un modelo de dominio. De hecho, esto sería una práctica estándar en una aplicación de estilo de n niveles. -

De paso, aquí hay un artículo interesante sobre DCI en Java: jroller.com/sebastianKuebeck/entry/… -

He escrito muchos de mis propios artículos sobre DCI, lo conozco bien. En DCI, dice el argumento, uno comienza con un caso de uso, identifica a los actores y los roles que desempeñan, y luego los roles le dicen dónde ubicar el comportamiento del sistema. El problema es que, cuando comienzas a hacer el análisis, encuentras que esos objetos no son actores. Entonces terminas sin poder identificar roles. La conexión entre el caso de uso y la implementación es difícil de establecer. Sin embargo, si esos objetos también fueran actores, entonces la identificación de roles es fácil. -

5 Respuestas

El análisis de casos de uso es engañosamente simple, pero esta pregunta delata parte de la complejidad inherente.

Cada caso de uso debe ser significativo para los actores involucrados, en el sentido de que debe representar una interacción bien definida con el sistema. Cada actor y caso de uso también debe tener sentido cuando se habla del sistema, incluso con el lenguaje cotidiano. Si tiene dificultades para definir actores o casos de uso, probablemente el contexto del sistema no esté claro y, por lo tanto, un modelo de dominio podría ayudar.

Un caso de uso debe representar una interacción bien definida, pero no necesariamente una completar uno. los <<include>> La relación se puede utilizar en situaciones en las que tiene sentido ver casos de uso de interacción total y parcial en el mismo nivel. Podría considerar tener un caso de uso buy stuff incluiyendo browse products, add product to cart y check out <<xor>> cancel, por ejemplo, cada uno de los cuales tiene sentido para el cliente.

(Estoy un poco confundido acerca de si su sistema está diseñado para transacciones físicas o en línea; tener una caja y recibos impresos parece implicar lo primero, un carrito de compras como parte de los conceptos utilizados en el análisis, lo segundo. Lo anterior asume un sistema en línea.)

En su caso, sin embargo, se trata de actores que pueden considerarse parte del propio sistema. Por lo general, esto significa que está tratando de definir el sistema y sus subsistemas al mismo tiempo, lo cual es común en situaciones en las que tiene una buena idea del (eventual) diseño del sistema antes de comenzar el análisis.

Lo que quiere hacer entonces es dividir el análisis en dos niveles. En el nivel superior (del sistema), sea muy estricto al tratar el sistema como un todo. En tu caso, probablemente necesitarías a los actores. customer, payment partner, clerk (para un sistema de transacciones físicas), accountant (y tal vez administrator) y los casos de uso que se enumeran anteriormente más update product catalogue, audit sales log, etc.

Luego, divide el sistema en subsistemas y realiza un análisis por separado para cada uno de ellos. Aquí, los subsistemas pueden ser actores en los casos de uso de los demás. Print receipt, por ejemplo, no es un caso de uso significativo a nivel del sistema porque no es en sí mismo una interacción entre el sistema como un todo y un actor a nivel del sistema, pero es significativo como un caso de uso para el subsistema de la impresora, con el hasta como actor.

No es necesario que complete el análisis a nivel del sistema antes de iniciar el desglose del subsistema; de hecho, creo que es mejor tener ambos activos al mismo tiempo, aunque esto impone mayores requisitos a usted, el analista / diseñador, para poder cambiar contextos rápidamente y sea disciplinado sobre el contexto en el que está trabajando en un momento dado.

Entonces, después de todo eso (¡uf!) Creo que la respuesta a tus preguntas es:

  1. Ambos, siempre que cada caso de uso tenga sentido para sus actores como una interacción bien definida (pero no necesariamente completa) con el sistema.
  2. Sí, pero no al mismo nivel; con un modelo para el sistema y modelos separados para cada subsistema, puede usar los subsistemas como actores en los casos de uso de los demás.

Respondido el 04 de Septiembre de 11 a las 10:09

Le he otorgado a este la recompensa, porque mirar el caso de uso en dos niveles tiene más sentido para mí. Gracias. - Hormiga Kutschera

Mientras tanto, también he descubierto diagramas de uso de colaboración, que podrían ser más adecuados para el análisis de roles. - Hormiga Kutschera

Creo que primero debes dar un paso atrás. El propósito de Actores y casos de uso es preguntar primero: "¿Quién usará este sistema?" y "¿por qué lo usarán?". usted podría comience a identificar la caja registradora, la impresora, etc. como Actores, y de hecho, algunos de ellos pueden serlo, pero existe el peligro de que pierda el punto clave.

A partir de su descripción, supongo que los actores y sus casos de uso estarían en las siguientes líneas:

  • Actor: Cliente
    • Caso de uso principal: Comprar producto. Esto probablemente se dividirá en unos pocos pasos secundarios, por ejemplo, Examinar / Comparar productos, Seleccionar producto (s) (colocar en la cesta de la compra), Pagar, etc. También habrá UC de apoyo: Verificar el estado del pedido, devolver los productos, presentar una queja etc.
  • Actor: Secretario de cuentas
    • Casos de uso: presumiblemente algo que ver con la verificación del estado del pedido / pago

... etc.

Cuando llegue a diseñar el flujo para cada UC, probablemente identificará otros componentes externos a su sistema con los que necesita interactuar, por ejemplo, un socio de pago. Puede mostrarlos como actores si lo desea (mi preferencia no lo es, pero eso es puramente personal).

También identificará otros elementos de su sistema que desempeñan un papel en la realización del comportamiento de UC (por ejemplo, bases de datos de ventas, etc.). Estos son parte de su sistema y, por lo general, no se mostrarían como actores.

En resumen: los casos de uso están destinados a ayudarlo a identificar el propósito del sistema y quién recibe valor de él, en lugar de estructurar los componentes internos del diseño.

hth.

Respondido 28 ago 11, 18:08

Primero, no piense en términos de programación en este momento. Piense en cuál es la necesidad empresarial.

El cliente necesita:

  • Bowse el catálogo
  • Agregar un artículo al carrito de compras
  • Ver

El sistema necesita:

  • Mostrar el producto solicitado
  • Completar la venta (o no)
  • Cobrar el pago
  • Genere un recibo de venta para el cliente.
  • Entregar el producto comprado

La primera lista sería sus casos de uso de alto nivel y la segunda sería parte de esos casos de uso de alto nivel o se incluiría. Utilizo incluye si esa parte del caso de uso es lo suficientemente compleja (o simplemente lo suficientemente larga) como para justificar ponerla en su propio caso de uso. Ocultar la complejidad, por así decirlo.

En cuanto a que el catálogo, la base de datos de ventas, el registro de ventas, la canasta, etc. sean actores, los actores interactúan con los sistemas (o casos de uso). Me cuesta imaginarme un catálogo interactuando con algo. Por otro lado, el Cliente definitivamente interactúa con el catálogo.

Un actor tiene que ser viable en el mundo real. Si un sistema representa algo en el mundo real, un sistema puede ser un actor. Pero en el mundo real, un catálogo es inerte; una canasta es inerte. Un registro de ventas y una base de datos de ventas representan registros en papel, que son inertes. Son objetos, no actores.

Por cierto, ¿es el vendedor el sistema?

Respondido el 20 de Septiembre de 11 a las 20:09

Los casos de uso no son absolutos. Puede tener un caso de uso vago como Manage Users (No estoy seguro de que los casos administrados sean una buena práctica, pero esto es por el bien de un ejemplo ...) en un primer boceto de su sistema y luego desglosarlo en diagramas de casos de uso más detallados que refinan las cosas a lo largo del camino hasta que se reduce a una característica básica.

En cuanto a su segunda pregunta, estos suenan como objetos de dominio típicos (para modelarlos como un diagrama de clases básico). No creo que deban modelarse como actores a menos que desempeñen un papel activo. Los actores serían personas físicas, pero también otros sistemas que interactúan con el sistema que estás creando. Estos Actores posiblemente terminarán como las llamadas clases sustitutas.

Noticias

Ir a través el artículo vinculado arriba parece que actor (sinónimo de jugador) se usa para calificar el objeto de destino al que se agrega un rol. Si esto es correcto, entonces la palabra tiene un significado diferente.

Un rol es un tipo especial de objeto que agrega comportamiento a otro objeto (el actor o jugador)

Respondido el 03 de Septiembre de 11 a las 01:09

sin haber leído las otras respuestas: - / aquí están las mías:

1) ¿El caso de uso de vender un montón de productos a un cliente sería un caso de uso llamado "vender artículos en caja", o se dividiría en varios, como "agregar producto al carrito" y "venta completa" (que escribiría el registro de ventas e imprimiría el recibo).

Siempre trato de usar un caso de uso como "una interacción con el sistema que aporta valor al actor". "vender artículo" tendrá un valor. "agregar producto al carrito" no tendrá ningún valor.

Escribí "Lo intento", porque a menudo comienzas con buenos casos de uso que siguen mi definición, pero luego comienzas a agregar detalles y extender tus casos de uso ...

2) Aunque estoy programando el catálogo, la base de datos de ventas, el registro de ventas, la cesta, etc., ¿puedo modelarlos como actores en mis casos de uso? ¿O son los únicos actores el vendedor y el socio de pago?

Utilizo actores no solo para personas reales, sino también para sistemas que interactúan con su sistema. Pero los términos "base de datos", "registro", etc. me dicen que parece que desea poner demasiados detalles en su diagrama.

Quizás un buen enfoque es pensar primero en la razón para crear un diagrama de casos de uso.

Para mí, la mayoría de las veces la razón es que me gustaría tener una primera impresión sobre qué tipo de sistema tengo que construir. Luego utilizo el diagrama como herramienta para moderar una reunión. Es útil encontrar respuestas a las siguientes tres preguntas:

  • ¿Quién usará el sistema?
  • ¿Qué harán esos actores con el sistema?
  • ¿Qué otros sistemas interactúan con el nuevo sistema?

Y eso es todo. Cuando entra en más detalles, utilizo un conjunto diferente de diagramas.

Respondido el 04 de Septiembre de 11 a las 19:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.