jueves, 13 de octubre de 2016

Especificación de Casos de uso


Los casos de uso deben ser relatos secuenciales que especifiquen una funcionalidad determinada del sistema que se desea desarrollar, así que debe describir como inicia y termina el caso de uso, que datos se intercambian entre el actor y el caso de uso, el flujo de eventos, no solo la funcionalidad, para reforzar esto debe comenzar cada acción con la frase “El actor...”, describir solo los eventos que pertenecen a ese caso de uso, y no lo que pasa en otros casos de uso o fuera del sistema.

De la misma manera se debe tener especial cuidado de no utilizar los siguientes detalles:
  • No describir detalles de la interfaz del usuario, a menos que sea necesario para entender el comportamiento del sistema.
  •  Evitar terminología vaga tal como “por ejemplo” “etc” “información”.
  • Evite dejar en el texto del caso de uso ambigüedades o preguntas que se debieron resolver en el levantamiento de información.
Los casos de uso deben contar con los siguientes elementos

  • El conjunto de todos los casos de uso, debe cubrir los requerimientos del sistema en su totalidad.
  • Se pueden definir casos de uso en diferentes niveles.
    • A nivel de sistema de Negocio
    • A nivel de sistema de Software 
  • Las descripciones de los casos de uso son cruciales para la comprensión del sistema.
  • Debe  contar con Pre y Post Condiciones, una  Pre-Condición es una restricción sobre cuando un caso de uso puede empezar. que necesita para poder ser ejecutado, la Post-Condición para un caso de uso debe ser verdadera, independientemente de cual flujo sea ejecutado. Si algo puede fallar, debería cubrirse en la post condición diciendo: “La acción se ha completado o si algo ha fallado, la acción no se ha realizado”, en lugar de decir “La  acción se ha completado”.

Prototipos

Los prototipos son modelos a escala o facsímil de lo real, pero no tan funcional para que equivalga a un producto final, ya que no lleva a cabo la totalidad de las funciones necesarias del sistema final.
Es importante definir un objetivo para los prototipos, ya que puede ser útil en diferentes fases del proyecto, por ello su objetivo debe ser claro. Es decir durante diferentes etapas del ciclo de vida se pueden utilizar para diferentes necesidades, por ejemplo durante la fase de análisis se usa para obtener los requerimientos del usuario, en la fase de diseño se usa para ayudar a evaluar muchos aspectos de la implementación seleccionada y así de acuerdo a la necesidad de cada etapa.

Características de un prototipo

  • El prototipo es una aplicación que puede no funcionar(conjunto de dibujos por ejemplo, una presentación de escenarios) o que puede funcionar (conjunto de pantallas que proporcionan un modelo dinámico).
  • Los prototipos se crean con rapidez
  • Los prototipos evolucionan a través de un proceso iterativo.
  • Los prototipos tiene un costo bajo desarrollo.

Definición de criterios de aceptación

Estos criterios nos permiten asegurar que los requisitos satisfacen la funcionalidad requerida y al mismo tiempo que el producto es de calidad, nos ayuda a obtener un nivel de aceptación realista tanto para el cliente como la empresa que los desarrolla.
para la definición de criterios de aceptación se presenta el siguiente modelo:
  • Se debe encontrar el documento de requisito terminado, revisado y aprobado por las diferentes partes, implicadas.
  • El requisito no debe tener escenarios ambiguos
  • El requisito debe hacer que dice el documento de especificación ni mas, ni menos y cumplir con todos los escenarios.
  • El requisito debe ser medible, es fácil identificar si cumple o no cumple.
  • No existe contraindicaciones con otros requisitos
  • El requisito debe haber sido probado y aceptado por este proceso.
  • Se debe entregar el requisito dentro de las fechas establecidas.
  • El requisito aparte de cumplir con los anteriores pasos, puede haber otros criterios que el cliente solicite.

TÉCNICAS PARA DEFINIR REQUISITOS



Para obtener los requisitos del cliente se pueden emplear varias técnicas. Históricamente, esto ha incluido técnicas tales como las entrevistas, o talleres con grupos para crear listas de requisitos. Técnicas más modernas incluyen los prototipos, y utilizan casos de uso. Cuando sea necesario, el analista empleará una combinación de estos métodos para establecer los requisitos exactos de las personas implicadas, para producir un sistema que resuelva las necesidades del negocio.


Definición de diagramas

Cuando se inicia con el desarrollo de un sistema por lo general nos encontramos con la dificultad de no saber como dar inicio a la especificación y descripción de la funcionalidad en general que buscamos apoyar con dicha herramienta, para ello hay muchas herramientas en el mercado que buscan apoyar dicha tarea.
De manera general se recomienda el uso de los diagramas UML, pero cuándo utilizar diagramas UML? y cuándo no hacerlo?.
Veamos de manera didáctica cuándo utilizar y  no utilizar los diagramas UML
Cuando no Utilizar Diagramas
  • No dibujar diagramas porque el proceso te lo dice
  • Porque te sientes culpable de no hacerlo o porque piensas que es buen diseño hacerlo. Los buenos diseñadores escriben código y dibujan diagramas solamente cuando es necesario.
  • Dibujar diagramas para que otra persona codifique

Cuando Utilizar los Diagramas
  • Utilizar los diagramas cuando varias personas necesiten entender la estructura de una parte particular del diseño, porque todos ellos lo estarán trabajando simultáneamente. Deténgase cuando todos ellos estén de acuerdo que lo han entendido
  • Cuando dos o mas personas estén en desacuerdo con un elemento particular que debería ser diseñado, y quieres un consenso del equipo. Detente cuando la decisión haya sido tomada
  • Cuando quieras jugar con una idea de diseño, y los diagramas pueden ayudarte a entenderlo. Detente cuando hayas conseguido finalizar el punto que querías codificar
  • Cuando necesites exponer una estructura de alguna parte del código a alguien más o a ti mismo.
Los diagramas que se utilizan son los siguientes:
   De estados: 
Estos diagramas nos muestra los diferentes estados de un objeto durante su vida.   
   De secuencia:
Estos nos muestran el intercambio de mensajes (es decir la forma en que se invocan) en un momento dado.Los diagramas de secuencia ponen especial énfasis en el    orden y el momento en que se envían los mensajes a los objetos.

   De caso de uso:

Los diagramas de casos de uso describen las relaciones y las dependencias entre un grupo de casos de uso y los actores participantes en el proceso. Los diagramas de casos de uso describen qué es lo que debe hacer el sistema, pero no cómo.

TÉCNICAS PARA DEFINIR REQUISITOS

Para obtener los requisitos del cliente se pueden emplear varias técnicas. Históricamente, esto ha incluido técnicas tales como las entrevistas, o talleres con grupos para crear listas de requisitos. Técnicas más modernas incluyen los prototipos, y utilizan casos de uso. Cuando sea necesario, el analista empleará una combinación de estos métodos para establecer los requisitos exactos de las personas implicadas, para producir un sistema que resuelva las necesidades del negocio.



Definición Y Clasificación De Requisitos

Para realizar con éxito la definición de los requerimientos es importante conseguir que los requerimientos sean claramente definidos para minimizar la ambigüedad de los requerimientos, para esto es importante tener en cuenta lo siguiente:


Requerimientos Funcionales

Estos requerimientos se utilizan para determinar que hará el Software, definiendo las relaciones de su operación y su implementación, sin olvidar que deben ser explícitos también en lo que el sistema no debe hacer y que validaciones se deben realizar, teniendo en cuenta cual será el comportamiento del sistema.Los Requerimientos funcionales se pueden dividir en dos puntos de vista: El primero tiene relación con el usuario, donde se identifica la relación del usuario con el sistema desde el punto de vista del mismo; El segundo tiene relación con el sistema dando respuesta al usuario, es decir desde el punto de vista de lo que realiza el sistema. 

 Requerimientos no funcionales

Estos requerimientos se basan en las restricciones de los servicios o funciones ofrecidos por el sistema. Incluyen restricciones de tiempo, sobre el proceso de desarrollo, estándares, usabilidad, portabilidad, entre otros. 
Los requerimientos no funcionales surgen de la necesidad del usuario, debido a las restricciones en el presupuesto, a las herramientas utilizadas, a las políticas de la organización, a la necesidad de interoperabilidad con otros sistemas de software o hardware o a factores externos como los reglamentos de seguridad, las políticas de privacidad, etcétera.



TÉCNICAS PARA IDENTIFICAR REQUERIMIENTOS



En la actualidad las organizaciones enfocadas al desarrollo de aplicaciones de software utilizan diferentes herramientas que permiten facilitar la fase de identificación de requerimientos, puesto que se presta mayor atención a las necesidades que se identifican en todas las fases del ciclo de vida del sistema; para así obtener un mejor aprovechamiento, entendimiento, y rendimiento al momento que entre en ejecución el sistema que se esté desarrollando.

Las técnicas agrupadas como generales son las que permiten investigar aspectos generales para posteriormente ser especificados con un mayor detalle con el apoyo de técnicas más específicas. Estas técnicas son más abiertas y requieren ser adecuadamente orientadas para cubrir la información que se requiere capturar, es importante que para sacar el mayor provecho de estas técnicas se debe tener un dialogo lo más abierto posible entre las organizaciones de desarrollo de software y las empresas cliente.


Entrevista

 Estas técnicas son muy utilizadas para la recolección de opiniones, criterios o descripciones sobre diferentes actividades. Se lleva a cabo mediante conversaciones estructuradas donde es fundamental que la relación con el cliente este basada en la confianza para dar a conocer la información de la manera mas detallada. 
Antes de iniciar una entrevista es importante tener en cuenta los siguientes Tips a tener en cuenta, no es obligación realizarlas todas pero si es recomendable estudiar cuales son las que más se aplica para cada organización o cada proyecto.

1.    Estudiar el tipo de personas a las cuales se les realizará la entrevista.
2.    Estudiar como será el entorno donde se llevara a cabo la entrevista para identificar que tan confortables estarán las personas y así obtener la información de la manera más eficiente.
3.    Estudiar como es la manera de hablar de las personas individualmente o en un equipo de trabajo.
4.    Verificar que las personas tengan la disponibilidad para dar a conocer las necesidades que posterior a esto se puedan convertir en requerimientos.
5.    Revisar como es la relación del cliente con la organización que realizará la identificación de los requerimientos, esto con el fin de facilitar el trabajo y la disposición de ambas partes.
6.    Entender que es importante obtener la mayor información para la definición de los requerimientos, teniendo en cuenta que nada es obvio para las organizaciones de desarrollo de software. 

Lluvia de ideas

Esta técnica es abierta y se utiliza para explorar necesidades iniciales con la ayuda de la identificación de ideas de todas las personas que hacen parte del equipo de apoyo para la identificación de los requerimientos. Es utilizada para investigar nuevos servicios o necesidades que no son claramente identificadas.

1.    Escoger un sitio tranquilo que permita que las personas involucradas se sientan cómodas y dispuestas para dar a conocer sus ideas.
2.    Tomar la iniciativa para iniciar una reunión enfocada en la confianza.
3.    Tomar nota de las ideas que las personas expresan en los equipos de trabajo.
Tener una preparación sobre el tema que se va a desarrollar en la lluvia de ideas. 




Requerimientos Funcionales Y No Funcionales






Requisitos Funcionales


- Describen el funcionamiento del sistema
- Los RF del usuario pueden ser frases muy
generales sobre lo que el sistema debería

hacer. Se suelen expresar como objetivos del
sistema.
- Los RF del sistema deben describir los
servicios que hay que proporcionar con todo
detalle: los casos de uso



Requerimientos No Funcionales

- Definen propiedades emergentes del sistema, tales
como el tiempo de respuesta, las necesidades de
almacenamiento, la fiabilidad, …
- Pueden especificar también la utilización de una
herramienta CASE en particular, un lenguaje de
programación o un método del desarrollo.
- Pueden ser más críticos que los funcionales.
- Si un R. funcional no se cumple, el sistema se degrada
- Si un R. no funcional no se cumple, el sistema puede
inutilizarse.






A continuación les dejare dos guias de complemento