jueves, 9 de febrero de 2012

Notación de Requerimientos.

1.- Notación textual de los requerimientos: es necesario para la comunicación efectiva con los usuarios e interesados en el futuro sistema describir textualmente los requerimientos del mismo, lo plasmado en figuras. Para lo cual existe un estándar para que se escriba solo lo que el usuario necesita conocer.

Notación Gráfica usada en la especificación de requerimientos: El lenguaje o notación usada para la especificación de requerimientos por excelencia es el UML (Lenguaje de modelado unificado), específicamente los diagramas de caso de uso, estados y actividades, estos dos últimos describen en detalles los usos del sistema establecidos. Es así como estos diagramas se describen a continuación.

Diagrama de caso de uso: Los diagramas de Casos de Uso describen o especifican lo que hace un sistema desde el punto de vista de un observador externo, enfatizando el qué más que el cómo. Plantean escenarios, es decir, lo que pasa cuando alguien interactúa con el sistema, proporcionando un resumen para una tarea u objetivo.

Los diagramas de estados: muestran los posibles estados en que puede encontrarse un objeto y las transiciones que pueden causar un cambio de estado, en los usos establecidos para el sistema. El estado de un objeto depende de la actividad que esté llevando a cabo o de alguna condición dentro de los usos.

Los diagramas de actividades: son básicamente diagramas de flujo adornados, que guardan mucha similitud con los diagramas de estados. Mientras que los diagramas de estados centran su atención en el proceso o uso que está llevando a cabo un objeto, los diagramas de actividades muestran como las actividades fluyen y las dependencias entre ellas.

Fuente: Larman Craig. (2003) UML y Patrones: Una introducción al análisis y diseño orientado a objetos y al proceso unificado.

Software Libre para UML

2.- ¿Qué aplicación Basada en Software Libre se puede recomendar para trabajar con UML?

Existen muchas opciones a la hora de elegir una herramienta basada en software libre para trabajar con UML, entre ellas están:

ArgoUML: es una aplicación de diagramado de UML escrita en Java y publicada bajo la Licencia BSD. Dado que es una aplicación Java, está disponible en cualquier plataforma soportada por Java. El Magazine de Desarrollo de Software entrega premios anuales a herramientas de desarrollo de software populares en varias categorías. En 2003 ArgoUML fue una de las finalistas en la categoría “Design and Analysis Tools”. ArgoUML recibió un premio “runner-up” (revelación), derrotando a muchas herramientas comerciales.

Umbrello: es una herramienta de diagramas que ayuda en el proceso del desarrollo de software. Umbrello facilita la creación de un producto de alta calidad, especialmente durante fases de análisis y diseño del proyecto. UML también puede usarse para documentar sus diseños de software para ayudarle a usted y al resto de desarrolladores.

StarUML: es una herramienta para el modelamiento de software basado en los estándares UML (Unified Modeling Language) y MDA (Model Driven Arquitecture), que en un principio era un producto comercial y que hace cerca de un año paso de ser un proyecto comercial (anteriormente llamado plastic) a uno de licencia abierta GNU/GPL.

BoUML: Esta también es una herramienta CASE gratuita (licencia GPL). Permite trabajar con UML 2, soporta gran cantidad de diagramas, es rápida y apenas consume memoria, es sencilla de utilizar, permite generar código para Java, C++ e IDL, y puede hacer reingeniería inversa (a partir del código sacar el modelo). También es capaz de generar documentación en varios formatos (HTML, XMI, etc.)

Dia: es un programa de creación de diagramas basado en GTK+ bajo la licencia GPL. Está inspirado en el programa comercial de Windows ‘Visio’, y puede ser usado para dibujar muchos tipos diferentes de diagramas. Dispone de una serie de extensiones para ayudar en la elaboración de diagramas entidad-interrelación, UML, flujo de datos, diagramas de red, y un largo etc. Pero muchos al usarlo tal vez puedan sentir una frustración ya que no es muy sencillo de usar y se trata ‘solamente’ de una herramienta de dibujo de diagramas, evitando que podamos sacarle todo el provecho que se podría sacar del UML. Dia incluye una herramienta para generar código a partir de los diagramas realizados.

Existen muchas otras como: Frame UML y TinyUML, pero es necesario informar que la mayoría de estas herramientas se encuentran en fase de desarrollo, por lo tanto aun poseen muchas carencias y detalles técnicos que solventar. La herramienta más recomendada, por lo que ofrece y porque ha logrado superar incluso a herramientas CASE para UML comerciales, son ArgoUML y StarUML, estas son las que se han ubicado entre las preferidas y las más completas por sus múltiples opciones de diseño y sus incorporaciones que no le envidian nada a las herramientas de software propietario.

Fuente: Choque Ayala de Joaquin , Americo . Ingeniero de Sistemas www.unpmsm.org
Joaquin Deza de Choque, Victoria Rosa. Analista de Sistemas www.unpmsm.org

Técnicas para Escribir Requerimientos

3.- Técnicas para escribir requerimientos de alta calidad.

En todas las técnicas involucradas descritas en la unidad I de la ingeniería de requerimientos, las actividades y características resaltantes para obtener o escribir requerimientos de alta calidad son los siguientes.

• Identificar las clases de usuario del producto esperado.

• Extraer las necesidades de los individuos que representan cada clase de usuario.

• Comprender las tareas y metas del usuario y los objetivos de negocio con los que esas tareas se alinean.

• Analizar la información recibida de los usuarios para distinguir sus objetivos de tarea de requerimientos funcionales, requerimientos no-funcionales, reglas de negocio, y otros

• Destinar partes de los requerimientos de alto nivel a definir componentes de software en la arquitectura sistema.

• Comprender la importancia de los atributos de calidad.

• Negociar las prioridades de implementación.

• Traducir las necesidades de usuario escritas dentro de las especificaciones y modelos de requerimientos

• Examinar los requerimientos documentados para asegurar el conocimiento común de los requerimientos presentados por los usuarios y corregir cualquier problema antes de que el grupo de desarrolladores los acepte.

• Definir el punto de partida de los requerimientos.

• Revisar y evaluar el impacto de cada requerimiento cambiado antes de aprobarlo.

• Seguir cada requerimiento en su diseño, código fuente y pruebas.

• Agrupar los requerimientos según rendimiento y actividad de cambio durante todo el proyecto.

• La iteración es una clave para el éxito del desarrollo de los requerimientos.

Estándares de la documentación de los requerimientos.

El documento de los requerimientos de software es la declaración oficial de qué es lo que requieren los desarrolladores del sistema. Incluye tanto los requerimientos del usuario para el sistema como una especificación detallada de los requerimientos del sistema. En algunos casos, los dos tipos de requerimientos se integran en una única descripción. En otros, los del usuario se definen en una introducción de la especificación de los del sistema. Si existe un gran número de requerimientos, los detalles de los requerimientos del sistema se pueden presentar como documentos separados.

El documento de requerimientos tiene un conjunto diverso de usuarios que va desde los administradores principales de la organización, quienes pagan por el sistema, hasta los ingenieros responsables del software. Una gran variedad de organizaciones han definido estándares para los documentos de requerimientos. Por ejemplo la IEEE sugiere la siguiente estructura para los documentos de requerimientos.

1. Introducción, propósito del documento de requerimientos, Alcance del producto, Definiciones, acrónimos y abreviaturas, Referencias, Resumen del resto del documento.

2. Descripción general, Perspectiva del producto, Funciones del producto, características del usuario, Restricciones generales, Suposiciones y dependencias

3. Requerimientos específicos. Cubren los requerimientos funcionales, no funcionales y de interfaz. Obviamente, ésta es la parte más sustancial del documento, pero debido a la amplia variabilidad en la práctica organizacional, no es apropiado definir una estructura estándar para esta sección. Los requerimientos pueden documentar las interfaces externas, describir la funcionalidad y el desempeño del sistema, especificar los requerimientos lógicos de la base de datos, las restricciones de diseño, las propiedades emergentes del sistema y las características de calidad.

Fuente: Pressman, Roger S. (2005). Ingeniería del Software: Un enfoque práctico; Sexta edición. McGraw-Hill, Madrid.