Desarrollo de software |
---|
Actividades centrales de la ingeniería de software |
Paradigmas y modelos |
Metodologías y marcos |
Disciplinas de apoyo |
Practicas |
Instrumentos |
Estándares y cuerpos de conocimiento |
Glosarios |
Contornos |
|
En ingeniería de software y sistemas, la frase caso de uso es un polisema con dos sentidos :
Este artículo analiza el último sentido.
Un caso de uso es una lista de acciones o pasos de eventos que típicamente definen las interacciones entre un rol (conocido en el Lenguaje Unificado de Modelado (UML) como actor ) y un sistema para lograr un objetivo. El actor puede ser un humano u otro sistema externo. En la ingeniería de sistemas, los casos de uso se utilizan a un nivel más alto que en la ingeniería de software, y a menudo representan misiones o objetivos de las partes interesadas. Los requisitos detallados se pueden capturar en el lenguaje de modelado de sistemas (SysML) o como declaraciones contractuales.
En 1987, Ivar Jacobson presentó el primer artículo sobre casos de uso en la conferencia OOPSLA '87. Describió cómo se utilizó esta técnica en Ericsson para capturar y especificar los requisitos de un sistema utilizando técnicas de modelado textual, estructural y visual para impulsar el análisis y el diseño orientado a objetos. Originalmente había usado los términos escenarios de uso y caso de uso, este último una traducción directa de su término sueco användningsfall, pero descubrió que ninguno de estos términos sonaba natural en inglés y finalmente se decidió por el caso de uso.
En 1992 fue coautor del libro Ingeniería de software orientada a objetos: un enfoque basado en casos de uso, que sentó las bases del método de ingeniería de sistemas OOSE y ayudó a popularizar los casos de uso para capturar requisitos funcionales, especialmente en el desarrollo de software. En 1994 publicó un libro sobre casos de uso y técnicas orientadas a objetos aplicadas a modelos de negocio y reingeniería de procesos de negocio.
Al mismo tiempo, Grady Booch y James Rumbaugh trabajaron en unificar sus métodos de diseño y análisis orientados a objetos, el método Booch y la Técnica de modelado de objetos (OMT) respectivamente. En 1995, Ivar Jacobson se unió a ellos y juntos crearon el Lenguaje de modelado unificado (UML), que incluye el modelado de casos de uso. UML fue estandarizado por Object Management Group (OMG) en 1997. Jacobson, Booch y Rumbaugh también trabajaron en un refinamiento del proceso de desarrollo de software Objectory. El Proceso Unificado resultante se publicó en 1999 y promovió un enfoque basado en casos de uso.
Desde entonces, muchos autores han contribuido al desarrollo de la técnica, en particular: Larry Constantine desarrolló en 1995, en el contexto del diseño centrado en el uso, los llamados "casos de uso esenciales" que tienen como objetivo describir las intenciones del usuario en lugar de secuencias de acciones. o escenarios que podrían restringir o sesgar el diseño de la interfaz de usuario; Alistair Cockburn publicó en 2000 una práctica de casos de uso orientada a objetivos basada en narrativas de texto y especificaciones tabulares; Kurt Bittner e Ian Spence desarrollaron en 2002 prácticas avanzadas para analizar requisitos funcionales con casos de uso; Dean Leffingwell y Don Widrig propusieron aplicar casos de uso a la gestión del cambio y las actividades de comunicación con las partes interesadas; Gunnar Overgaard propuso en 2004 extender los principios de los patrones de diseño a los casos de uso.
En 2011, Jacobson publicó con Ian Spence y Kurt Bittner el ebook Use Case 2.0 para adaptar la técnica a un contexto ágil, enriqueciéndola con "porciones" incrementales de casos de uso y promoviendo su uso durante todo el ciclo de vida del desarrollo después de haber presentado el enfoque renovado. en la conferencia anual del IIBA.
Los casos de uso son una técnica para capturar, modelar y especificar los requisitos de un sistema. Un caso de uso corresponde a un conjunto de comportamientos que el sistema puede realizar en interacción con sus actores, y que produce un resultado observable que contribuye a sus objetivos. Los actores representan el papel que los usuarios humanos u otros sistemas tienen en la interacción.
En el análisis de requisitos, en su identificación, un caso de uso se nombra de acuerdo con el objetivo de usuario específico que representa para su actor principal. El caso se detalla más con una descripción textual o con modelos gráficos adicionales que explican la secuencia general de actividades y eventos, así como variantes como condiciones especiales, excepciones o situaciones de error.
De acuerdo con el Cuerpo de Conocimientos de Ingeniería de Software (SWEBOK), los casos de uso pertenecen a las técnicas de elicitación de requisitos basadas en escenarios, así como a las técnicas de análisis basadas en modelos. Pero los casos de uso también admiten la recopilación de requisitos basada en narrativas, la adquisición de requisitos incrementales, la documentación del sistema y las pruebas de aceptación.
Hay diferentes tipos de casos de uso y variaciones en la técnica:
El alcance de un caso de uso se puede definir por tema y por objetivos:
Se sabe que los casos de uso se aplican en los siguientes contextos:
Hay muchas formas de escribir un caso de uso en texto, desde un caso de uso breve, informal, contorneado, hasta completamente vestido, etc., y con plantillas variadas. Escribir casos de uso en plantillas diseñadas por varios proveedores o expertos es una práctica común de la industria para obtener requisitos de sistema funcionales de alta calidad.
La plantilla definida por Alistair Cockburn en su libro Writing Effective Use Cases ha sido uno de los estilos de escritura de casos de uso más utilizados.
Cockburn sugiere anotar cada caso de uso con un símbolo para mostrar el "Alcance del diseño", que puede ser una caja negra (los detalles internos están ocultos) o una caja blanca (se muestran los detalles internos). Hay cinco símbolos disponibles:
Alcance | Icono | |
---|---|---|
Organización (caja negra) | Casa llena | ![]() |
Organización (caja blanca) | Casa sin llenar | ![]() |
Sistema (caja negra) | Caja llena | ![]() |
Sistema (caja blanca) | Caja sin llenar | ![]() |
Componente | Tornillo o perno | ![]() |
Otros autores a veces denominan casos de uso a nivel de organización "Casos de uso de negocios".
Cockburn sugiere anotar cada caso de uso con un símbolo para mostrar el "Nivel de objetivo"; el nivel preferido es "Objetivo de usuario" (o coloquialmente "nivel del mar").
Nivel de objetivo | Icono | Símbolo | |
---|---|---|---|
Resumen muy alto | Nube | ++ | ![]() |
Resumen | Cometa voladora | + | ![]() |
Objetivo de usuario | Olas en el mar | ! | ![]() |
Sub función | Pez | - | ![]() |
Demasiado baja | Concha de almeja de los fondos marinos | - | ![]() |
A veces, en la escritura de texto, un nombre de caso de uso seguido de un símbolo de texto alternativo (!, +, -, etc.) es una forma más concisa y conveniente de denotar niveles, por ejemplo, ¡ hacer un pedido!, iniciar sesión-.
Cockburn describe una estructura más detallada para un caso de uso, pero permite simplificarla cuando se necesitan menos detalles. Su plantilla de caso de uso completamente vestida enumera los siguientes campos:
Además, Cockburn sugiere utilizar dos dispositivos para indicar la naturaleza de cada caso de uso: iconos para el alcance del diseño y el nivel de la meta.
El enfoque de Cockburn ha influido en otros autores; por ejemplo, Alexander y Beus-Dukic generalizan la plantilla de "casos de uso completamente equipados" de Cockburn desde el software a los sistemas de todo tipo, con los siguientes campos que difieren de Cockburn:
Cockburn reconoce que es posible que los proyectos no siempre necesiten casos de uso detallados "completamente vestidos". Describe un caso de uso casual con los campos:
Martin Fowler afirma que "no existe una forma estándar de escribir el contenido de un caso de uso, y diferentes formatos funcionan bien en diferentes casos". Describe "un estilo común de usar" de la siguiente manera:
El estilo Fowler también se puede ver como una variante simplificada de la plantilla Cockburn.
Un caso de uso define las interacciones entre los actores externos y el sistema en consideración para lograr un objetivo. Los actores deben poder tomar decisiones, pero no es necesario que sean humanos: "Un actor puede ser una persona, una empresa u organización, un programa de computadora o un sistema informático: hardware, software o ambos". Los actores son siempre partes interesadas, pero no todas las partes interesadas son actores, ya que "nunca interactúan directamente con el sistema, aunque tienen derecho a preocuparse por cómo se comporta el sistema". Por ejemplo, "los propietarios del sistema, la junta directiva de la empresa y los organismos reguladores como el Servicio de Impuestos Internos y el Departamento de Seguros" podrían ser partes interesadas, pero es poco probable que sean actores.
De manera similar, una persona que usa un sistema puede ser representada como diferentes actores debido a que desempeña diferentes roles. Por ejemplo, el usuario "Joe" podría estar desempeñando el papel de un Cliente cuando usa un cajero automático para retirar efectivo de su propia cuenta, o desempeñando el papel de un cajero de banco cuando usa el sistema para reabastecer el cajón de efectivo en nombre del Banco.
Los actores a menudo trabajan en nombre de otra persona. Cockburn escribe que "En estos días escribo 'representante de ventas del cliente' o 'empleado del departamento de marketing' para captar que el usuario del sistema está actuando en nombre de otra persona". Esto le dice al proyecto que la "interfaz de usuario y las autorizaciones de seguridad" deben diseñarse para el representante de ventas y el empleado, pero que el cliente y el departamento de marketing son los roles que se preocupan por los resultados.
Una parte interesada puede desempeñar un papel tanto activo como inactivo: por ejemplo, un consumidor es tanto un "comprador del mercado masivo" (que no interactúa con el sistema) como un usuario (un actor que interactúa activamente con el producto comprado). A su vez, un Usuario es tanto un "operador normal" (un actor que usa el sistema para su propósito previsto) como un "beneficiario funcional" (un interesado que se beneficia del uso del sistema). Por ejemplo, cuando el usuario "Joe" retira efectivo de su cuenta, está operando el cajero automático y obteniendo un resultado en su propio nombre.
Cockburn aconseja buscar actores entre las partes interesadas de un sistema, los actores primarios y secundarios (secundarios) de un caso de uso, el sistema en diseño (SuD) en sí mismo y, finalmente, entre los "actores internos", es decir, los componentes del sistema. bajo diseño.
De la misma manera que un caso de uso describe una serie de eventos e interacciones entre un usuario (u otro tipo de actor) y un sistema, para producir un resultado de valor (objetivo), un caso de uso empresarial describe la interacción más general entre un sistema empresarial y los usuarios / actores de ese sistema para producir resultados empresariales de valor. La principal diferencia es que el sistema considerado en un modelo de caso de uso empresarial puede contener personas además de sistemas tecnológicos. Estas "personas del sistema" se denominan trabajadores comerciales. En el ejemplo de un restaurante, se debe decidir si tratar a cada persona como un actor (por lo tanto, fuera del sistema) o como un trabajador comercial (dentro del sistema). Si un mesero se considera un actor, como se muestra en el ejemplo siguiente, entonces el sistema de restaurante no incluye al mesero y el modelo expone la interacción entre el mesero y el restaurante. Una alternativa sería considerar al camarero como parte del sistema del restaurante (un trabajador comercial), mientras que se considera que el cliente está fuera del sistema (un actor).
Tipos de diagramas UML |
---|
Diagramas estructurales UML |
Diagramas de comportamiento UML |
|
Los casos de uso no son solo textos, sino también diagramas, si es necesario. En el lenguaje de modelado unificado, las relaciones entre los casos de uso y los actores se representan en diagramas de casos de uso basados originalmente en la notación Objectory de Ivar Jacobson. SysML usa la misma notación a nivel de bloque del sistema.
Además, otros diagramas UML de comportamiento, como diagramas de actividad, diagramas de secuencia, diagramas de comunicación y diagramas de máquinas de estado, también se pueden utilizar para visualizar los casos de uso en consecuencia. Específicamente, un diagrama de secuencia del sistema (SSD) es un diagrama de secuencia que se usa a menudo para mostrar las interacciones entre los actores externos y el sistema bajo diseño (SuD), generalmente para visualizar un escenario particular de un caso de uso.
El análisis de casos de uso generalmente comienza dibujando diagramas de casos de uso. Para un desarrollo ágil, un modelo de requisitos de muchos diagramas UML que representan casos de uso más algunas descripciones textuales, notas o resúmenes de casos de uso sería muy liviano y lo suficiente para el uso de proyectos pequeños o fáciles. Como buenos complementos de los textos de casos de uso, las representaciones de diagramas visuales de los casos de uso también son herramientas de facilitación efectivas para la mejor comprensión, comunicación y diseño de los requisitos de comportamiento del sistema complejo.
A continuación se muestra un caso de uso de muestra escrito con una versión ligeramente modificada de la plantilla estilo Cockburn. Tenga en cuenta que no hay botones, controles, formularios o cualquier otro elemento y operación de la interfaz de usuario en la descripción del caso de uso básico, donde solo los objetivos, subobjetivos o intenciones del usuario se expresan en cada paso del flujo básico o extensiones. Esta práctica hace que la especificación de requisitos sea más clara y maximiza la flexibilidad del diseño y las implementaciones.
Caso de uso: editar un artículo
Actor principal: Miembro (Usuario registrado)
Alcance: un sistema Wiki
Nivel:! (Objetivo de usuario o nivel del mar)
Breve: (equivalente a una historia de usuario o una epopeya)
Partes interesadas
...
Postcondiciones
Condiciones previas:
Desencadenantes:
Flujo básico:
Extensiones:
2-3.
4a. Se acabó el tiempo:
...
Desde el inicio del movimiento ágil, la técnica de historia de usuario de Extreme Programming ha sido tan popular que muchos piensan que es la única y mejor solución para los requisitos ágiles de todos los proyectos. Alistair Cockburn enumera cinco razones por las que todavía escribe casos de uso en desarrollo ágil.
En resumen, especificar los requisitos del sistema en los casos de uso tiene estos beneficios aparentes en comparación con los enfoques tradicionales u otros:
Centrado en el usuario
Los casos de uso constituyen una poderosa herramienta centrada en el usuario para el proceso de especificación de requisitos de software. El modelado de casos de uso generalmente comienza con la identificación de los roles de las partes interesadas clave ( actores) que interactúan con el sistema y sus metas u objetivos que el sistema debe cumplir (una perspectiva externa). Estos objetivos de usuario se convierten en candidatos ideales para los nombres o títulos de los casos de uso que representan las características funcionales deseadas o los servicios proporcionados por el sistema. Este enfoque centrado en el usuario garantiza que se desarrolle lo que tiene el valor comercial real y el usuario realmente desea, no esas funciones triviales especuladas desde la perspectiva del desarrollador o del sistema (desde adentro).
La creación de casos de uso ha sido una herramienta de análisis importante y valiosa en el dominio del Diseño Centrado en el Usuario (UCD) durante años.
Mejor comunicación
Los casos de uso a menudo se escriben en lenguajes naturales con plantillas estructuradas. Esta forma textual narrativa (historias de requisitos legibles), comprensible para casi todos, complementada con diagramas UML visuales fomenta comunicaciones mejores y más profundas entre todas las partes interesadas, incluidos clientes, usuarios finales, desarrolladores, evaluadores y gerentes. Las mejores comunicaciones dan como resultado requisitos de calidad y, por lo tanto, se entregan sistemas de calidad.
Requisitos de calidad por exploración estructurada
Una de las cosas más poderosas de los casos de uso reside en los formatos de las plantillas de casos de uso, especialmente el escenario principal de éxito (flujo básico) y los fragmentos del escenario de extensión (extensiones, flujos excepcionales y / o alternativos). Analizar un caso de uso paso a paso desde las condiciones previas a las condiciones posteriores, explorar e investigar cada paso de acción de los flujos de casos de uso, desde los básicos hasta las extensiones, para identificar esos requisitos difíciles, normalmente ocultos e ignorados, aparentemente triviales pero a menudo realistas y costosos (como mencionó Cockburn arriba), es una forma estructurada y beneficiosa de conseguir requisitos claros, estables y de calidad de forma sistemática.
Minimizar y optimizar los pasos de acción de un caso de uso para lograr el objetivo del usuario también contribuye a un mejor diseño de interacción y experiencia del usuario del sistema.
Facilitar las pruebas y la documentación del usuario
Con contenido basado en una estructura de flujo de eventos o acciones, un modelo de casos de uso bien escritos también sirve como una base excelente y guías valiosas para el diseño de casos de prueba y manuales de usuario del sistema o producto, que es una inversión que vale la pena. en la delantera. Hay conexiones obvias entre las rutas de flujo de un caso de uso y sus casos de prueba. Derivar casos de prueba funcionales a partir de un caso de uso a través de sus escenarios (ejecutar instancias de un caso de uso) es sencillo.
Las limitaciones de los casos de uso incluyen:
Los malentendidos comunes sobre los casos de uso son:
Las historias de usuario son ágiles; los casos de uso no lo son.
Agile y Scrum son neutrales en cuanto a técnicas de requisitos. Como dice Scrum Primer,
Los elementos de la cartera de productos se articulan de forma clara y sostenible. Contrariamente al malentendido popular, el Product Backlog no contiene "historias de usuarios"; simplemente contiene elementos. Esos elementos pueden expresarse como historias de usuario, casos de uso o cualquier otro enfoque de requisitos que el grupo considere útil. Pero sea cual sea el enfoque, la mayoría de los artículos deben centrarse en ofrecer valor a los clientes.
Las técnicas de casos de uso han evolucionado para tener en cuenta los enfoques ágiles mediante el uso de porciones de casos de uso para enriquecer gradualmente un caso de uso.
Los casos de uso son principalmente diagramas.
Craig Larman destaca que "los casos de uso no son diagramas, son texto".
Los casos de uso tienen demasiado contenido relacionado con la interfaz de usuario.
Como dicen algunos,
Los casos de uso a menudo contienen un nivel de detalle (es decir, nombres de etiquetas y botones) que lo hacen no adecuado para capturar los requisitos de un nuevo sistema desde cero.
Malentendidos de novatos. Cada paso de un caso de uso bien escrito debe presentar los objetivos o intenciones del actor (la esencia de los requisitos funcionales), y normalmente no debe contener ningún detalle de la interfaz de usuario, por ejemplo, nombres de etiquetas y botones, operaciones de la interfaz de usuario, etc., lo cual es un mal práctica y complicará innecesariamente la redacción de casos de uso y limitará su implementación.
En cuanto a la captura de requisitos para un nuevo sistema desde cero, los diagramas de casos de uso más los resúmenes de casos de uso se utilizan a menudo como herramientas útiles y valiosas, al menos tan ligeras como las historias de usuario.
Escribir casos de uso para sistemas grandes es tedioso y una pérdida de tiempo.
Como dicen algunos,
El formato del caso de uso dificulta la descripción de un sistema grande (por ejemplo, un sistema CRM) en menos de varios cientos de páginas. Lleva mucho tiempo y se encontrará gastando tiempo haciendo una cantidad innecesaria de reelaboración.
Pasar mucho tiempo escribiendo casos de uso tediosos que agregan poco o ningún valor y dan como resultado una gran cantidad de reelaboración es un mal olor que indica que los escritores no están bien capacitados y tienen poco conocimiento de cómo escribir casos de uso de calidad de manera eficiente y efectiva. Los casos de uso deben ser creados de manera iterativa, incremental y evolutiva ( ágil). La aplicación de plantillas de casos de uso no significa que todos los campos de una plantilla de casos de uso deban usarse y completarse de manera integral desde el principio o durante una etapa dedicada especial, es decir, la fase de requisitos en el modelo de desarrollo de cascada tradicional.
De hecho, los formatos de casos de uso formulados por esos estilos de plantilla populares, por ejemplo, los RUP y los Cockburn (también adoptados por el método OUM ), etc., se han demostrado en la práctica como herramientas valiosas y útiles para capturar, analizar y documentar requisitos complejos de grandes sistemas. La calidad de una buena documentación de casos de uso ( modelo) no debe juzgarse en gran medida o solo por su tamaño. También es posible que un modelo de caso de uso completo y de calidad de un sistema grande pueda finalmente evolucionar a cientos de páginas principalmente debido a la complejidad inherente del problema en cuestión, no debido a las deficientes habilidades de escritura de sus autores.
Los editores de texto y / o procesadores de texto con soporte para plantillas se utilizan a menudo para escribir casos de uso. Para requisitos de sistema grandes y complejos, las herramientas de casos de uso dedicadas son útiles.
Algunas de las herramientas de casos de uso más conocidas incluyen:
La mayoría de las herramientas UML admiten tanto la escritura de texto como el modelado visual de casos de uso.