miércoles, 12 de junio de 2013

UNIDAD II

INGENIERIA DE REQUISITOS

En la ingeniería de sistemas y la ingeniería de software, la Ingeniería de requisitos o Ingeniería de requerimientos comprende todas las tareas relacionadas con la determinación de las necesidades o de las condiciones a satisfacer para un software nuevo o modificado, tomando en cuenta los diversos requisitos de los inversores, que pueden entrar en conflicto entre ellos.
Muchas veces se habla de requerimientos en vez de requisitos; esto se debe a una mala traducción del inglés. La palabra requerimiento debe ser traducida como requisito, mientras que requerimiento se traduce al inglés como request.

Implicaciones
La Ingeniería de Requisitos implica todas las actividades del ciclo de vida dedicadas a:
La educción (a veces llamada "e licitación", debido a una mala traducción de "elicitation") de los requisitos de usuario. El análisis y negociación de requisitos para derivar requisitos adicionales. La documentación de los requisitos como especificación. La validación de los requisitos  documentados contra las necesidades de usuario. Así como los procesos que apoyan estas actividades.
Fases de implementación
Desde un punto de vista conceptual, las actividades son de cinco clases. Obtener requisitos: a través de entrevistas o comunicación con clientes o usuarios, para saber cuáles son sus expectativas. Analizar requisitos: detectar y corregir las falencias comunicativas, transformando los requisitos obtenidos de entrevistas y requisitos, en condiciones apropiadas para ser tratados en el diseño. Documentar requisitos: igual que todas las etapas, los requisitos deben estar debidamente documentados. Verificar los requisitos: consiste en comprobar el correcto funcionamiento de un requisito en la aplicación. Validar los requisitos: comprobar que los requisitos implementados se corresponden con lo que inicialmente se pretendía.

2.1  TECNICAS DE LA INGENIERÍA DE REQUISITOS
La ingeniería de requisitos puede ser un proceso largo y arduo para el que se requiere de habilidades psicológicas. Los nuevos sistemas cambian el entorno y las relaciones entre la gente, así que es importante identificar a todos los actores involucrados, considerar sus necesidades y asegurar que entienden las implicaciones de los nuevos sistemas. Los analistas pueden emplear varias técnicas para obtener los requisitos del cliente. 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.
Entrevistas
Las entrevistas son un método común. Por lo general no se entrevista a toda la gente que se relacionará con el sistema, sino a una selección de personas que represente a todos los sectores críticos de la organización, con el énfasis puesto en los sectores más afectados o que harán un uso más frecuente del nuevo sistema. Los requisitos que surgen de las entrevistas a menudo se contradicen unos a otros o se formulan desde la ignorancia de los detalles del funcionamiento del sistema, sus potencialidades, interdependencias o limitaciones; por lo que se debe trabajar con los mismos para corregir sus fallos.
Las entrevistas pueden ser personales o grupales.
Talleres
Los requisitos tienen a menudo implicaciones cruzadas desconocidas para las personas implicadas individuales y que a menudo no se descubren en las entrevistas o quedan incompletamente definidas durante la misma. Estas implicaciones cruzadas pueden descubrirse realizando en un ambiente controlado, talleres facilitados por un analista del negocio, en donde las personas implicadas participan en discusiones para descubrir requisitos, analizan sus detalles y las implicaciones cruzadas. A menudo es útil la selección de un secretario dedicado a la documentación de la discusión, liberando al analista del negocio para centrarse en el proceso de la definición de los requisitos y para dirigir la discusión.
Forma de contrato
En lugar de una entrevista, se pueden llenar formularios o contratos indicando los requisitos. En sistemas muy complejos éstos pueden tener centenares de páginas.
Objetivos medibles
Los requisitos formulados por los usuarios se toman como objetivos generales, a largo plazo, y en cambio se los debe analizar una y otra vez desde el punto de vista del sistema hasta determinar los objetivos críticos del funcionamiento interno que luego darán forma a los comportamientos apreciables por el usuario. Luego, se establecen formas de medir el progreso en la construcción, para evaluar en cualquier momento qué tan avanzado se encuentra el proyecto.
Prototipos
Un prototipo es una pequeña muestra, de funcionalidad limitada, de cómo sería el producto final una vez terminado. Ayudan a conocer la opinión de los usuarios y rectificar algunos aspectos antes de llegar al producto terminado.
Casos de uso
Un caso de uso es una técnica para documentar posibles requisitos, graficando la relación del sistema con los usuarios u otros sistemas. Dado que el propio sistema aparece como una caja negra, y sólo se representa su interacción con entidades externas, permite omitir dichos aspectos y determinar los que realmente corresponden a las entidades externas. El objetivo de esta práctica es mejorar la comunicación entre los usuarios y los desarrolladores, mediante la prueba temprana de prototipos para minimizar cambios hacia el final del proyecto y reducir los costes finales. Esta técnica se enfrenta a los siguientes peligros potenciales.

2.3 MODELADO DE REQUISITOS
Modelado de requisitos
En esta sección se estudiaran los requisitos, tanto funcionales como no funcionales, que hay que cumplir para que el software funcione correctamente. Para ello se hará uso de los diagramas de caso de uso, que especifica los modos de uso (o requisitos funcionales) que va a tener el sistema, del diagrama de paquetes, que indica como se agrupan los casos de uso en diferentes subsistemas, y de los diagramas de secuencia, que indican el flujo a seguir en cada una de las transacciones.

Modelo funcional
En este apartado se muestran, mediante los diferentes casos de uso, los requisitos funcionales que tiene la aplicación, mostrándose también los diferentes subsistemas de la aplicación mediante el diagrama de paquetes.

Identificar subsistemas
En los siguientes diagramas de paquetes se pueden ver los subsistemas identificados en la
aplicación. El primer diagrama de paquetes incluye los casos de uso que componen cada subsistema, mientras que el segundo diagrama de paquetes únicamente muestra los distintos subsistemas de la aplicación y su relación con los actores.


Requisitos no funcionales
Los requisitos no funcionales detectados son los siguientes:
• El entorno de desarrollo inicial del proyecto es un entorno LAMP (Linux+Apache+MySQL+PHP), aunque este entorno debe de ser adaptable lo máximo posible. Específicamente, se deben de poder integrar en el futuro otras SGBD (Sistema de Gestión de Base de Datos) distintas a MySQL, y debe de ser independiente del sistema operativo y del servidor web a utilizar.
• Siempre que haya alguno disponible, se debe de hacer uso de los estándares abiertos disponibles en el mercado, teniendo que validar el sistema resultante en el caso de que haya herramientas para hacerlo. Éste es el caso del código (X) HTML generado, que debe de estar validado mediante las herramientas que dispone el W3C.
• Al manejar datos sensibles de personas físicas y jurídicas, la herramienta debe de tener en especial consideración el cumplimiento de la Ley de Retención de Datos durante su desarrollo.
• La aplicación debe de ser multilingüe, debiendo de incorporar un sistema de traducción a varios idiomas basado en gettext.
• El sistema utilizará una codificación de caracteres UTF-8.
• Se utilizará un sistema de registro de todas las transacciones que se hagan en el sistema que garantice el uso legal de ésta información. Para ello, las transacciones deben de estar almacenadas en la base de datos y se debe de generar regularmente un fichero de logs, el cual debe de estar firmado con MD5.

Operaciones del sistema
A continuación se muestran la secuencia de acciones que debe de seguir cada operación del sistema.
El desarrollo de software ha ocupado un lugar importante en la Ingeniería, pero al igual que otras disciplinas, aún presenta fallas. Debido a esto se han planteado técnicas y métodos para minimizar los problemas identificados en la crisis del software.
Es así como surge la Ingeniería de Software, presentando distintos modelos de procesos que se ajustan a las necesidades y proyectos requeridos. La mayoría de ellos involucran en sus fases iníciales tareas como planeación, levantamiento de información, determinación de las características que debe cumplir el software, agrupadas en lo que hoy se conoce como Ingeniería de Requisitos (IR). Esta fase ocupa un lugar importante en el proceso de desarrollo de software ya que si el personal comprometido no conoce con claridad los requisitos, corre el riesgo de que los resultados obtenidos no sean los esperados, presentando así los mismos problemas de hace cincuenta años: altos costos, baja calidad de software, clientes inconformes e incumplimiento de plazos, entre otros. Con el ánimo de facilitar las tareas del desarrollo de software, surgen herramientas informáticas que agilizan la labor en la IR. Dichas herramientas son denominadas CASE (Ingeniería de software asistida por computador), y sirven de apoyo para los desarrolladores, desde el principio hasta el final del proceso.
Para el caso particular de esta investigación, son de especial interés aquellos instrumentos que se encargan de actividades como: extraer, analizar, documentar, revisar, negociar y validar los requisitos del sistema objeto de estudio.

Impacto de la Ingeniería de Requisitos en el Desarrollo de Proyectos Informáticos
En el ambiente informático es crucial la época en la cual el hardware era de mayor tamaño, más costoso y más importante que el software; aunque con el transcurrir del tiempo, éste último ocupa una mejor posición, dando cabida a la comercialización de los
primeros ordenadores y al aumento en la demanda de un software un poco más complejo. Se creería que estas son buenas noticias, pero en realidad, tal avance trae consigo la crisis del software; expresión que se utilizó por primera vez en la conferencia organizada por la Comisión de Ciencia de la OTAN en Garmisch, Alemania, en octubre de 1968, y tiene como objeto agrupar la gran cantidad de problemas que elevan el índice de fracasos en los proyectos de desarrollo.


lunes, 10 de junio de 2013

UNIDAD 5



MODELO DE IMPLEMENTACIÒN

El Modelo de Implementación es comprendido por un conjunto de componentes y subsistemas que constituyen la composición física de la implementación del sistema. Entre los componentes podemos encontrar datos, archivos, ejecutables, código fuente y los directorios. Fundamentalmente, se describe la relación que existe desde los paquetes y clases del modelo de diseño a subsistemas y componentes físicos.
Este artefacto describe cómo se implementan los componentes, congregándolos en subsistemas organizados en capas y jerarquías, y señala las dependencias entre éstos.
Para representar los diagramas del Modelo de Implementación se puede emplear el diagrama de UML de Componentes.
 

5.1 Diagramas de componentes
Es una unidad autónoma que forma parte del sistema y proporciona la implementación de un conjunto de interfaces.
Un componente es fácilmente reemplazable
·         Es físico
·         Reemplazable
·         Parte del sistema
·         Proporciona un conjunto de interfaces

Tipos de componentes
Componentes de despliegue: Son para formar un sistema ejecutable
Componentes de producto de trabajo: Estos son generados en el proceso de desarrollo
Componentes de ejecución: Consecuencia de la ejecución del sistema
Utilización:
Los diagramas de componentes son utilizados para:
·         Modelar l vista (lógica) de implementación estática en un sistema
·         Modelar código fuente
·         Modelar base de datos
·         Modelos sistemas adaptables


Estereotipos en los componentes
Ejecutables: Especifica un componente que se puede ejecutar en un nodo
Library: Especifica una biblioteca de objetos estáticos o dinámicos
Table: Especifica un componente que representa una tabla de una base de datos
File: Especifica un componente que representa un documento que contiene código fuente o datos
Documento: Especifica un componente que representa un documento

5.2 Diagrama de despliegue
Es la etapa del desarrollo que describe la configuración del sistema para su ejecución en un ambiente del mundo real. Para el despliegue se deben tomar decisiones sobre los parámetros de la configuración funcionamiento, asignación de recursos distribución y concurrencia.
Un diagrama de despliegue muestra la configuración de nodos que participan en la ejecución y de los componentes que residen en ellos.
Relaciones físicas
·         Muestran las relaciones entre los componentes del hardware y software en el sistema final así como su configuración.
·         Formados por instancias de componentes software que son los que representan manifestaciones de código el tiempo de ejecución
Representación
·         Grafos de nodos unidos para conexiones de comunicación
·         Diagramas de clase que se encarga de modelar los nodos del sistema
Usos
·         Sistemas empotrados:Colección de hardware con gran cantidad de software que controla los dispositivos
·         Sistema cliente – servidor:Conectividad de los clientes sobre los servidores y distribución física de los nodos
·         Sistemas distribuidos:Incluyen varios niveles de servidores cambios continuos de topologías

5.3 Modelos de prueba
Objetivos de las pruebas
·         Encontrar defectos en el software
·         Una prueba tiene éxito si descubre un defecto
·         Una prueba fracasa si hay defectos pero no los descubre
Pruebas de verificación
·         Ver si cumple las especificaciones de diseño
·         Pruebas de validación
·         Ver si cumple los requisitos del análisis
El proceso de pruebas del software tiene dos objetivos
1.      Demostrar al desarrollador y al cliente que el software satisface sus requerimientos
2.      Descubrir defectos en el software que su comportamiento es incorrecto, no deseable o no cumple su especificación
Pruebas de caja blanca
Pruebas en que se conoce el código a probar caja blanca (clear box: clara o transparente). Se procura ejercitar cada elemento del código
Clases de pruebas
·         Pruebas de cubrimiento
·         Pruebas de condiciones
·         Pruebas de bucles
Pruebas de caja negra
Pruebas en que se conoce solo la interfaz caja negra (black box: caja opaca). Se procura ejercitar cada elemento de la interfaz



miércoles, 29 de mayo de 2013

3.6 HERRAMIENTA CASE PARA EL ANALISIS

3.6 HERRAMIENTA CASE PARA EL ANALISIS


1.            Borland Caliber Analyst

Se trata de un producto que está compuesto por dos aplicaciones desarrolladas por la compañía Borland.

Por un lado está el Caliber DefineIT (la última de las herramientas en cuanto a fecha de lanzamiento) que permite definir los requisitos del sistema así como capturar los diferentes escenarios de negocio a través de diferentes herramientas visuales; es necesario señalar que este software es compatible con gran número de herramientas existentes en el mercado.

Por el otro está Caliber RM que nos permite gestionar dichos requisitos durante el ciclo de vida del producto, si bien no ayudaba al usuario a visualizar los requerimientos y por lo tanto no resultaba tan efectiva como ellos demandaban.

El paquete que incluye ambas aplicaciones nos permitirá realizar las siguientes tareas: representar y especificar los escenarios de manera visual, permitiendo el uso de un lenguaje común; generar diagramas de casos de pruebas y UML, mejorando tanto la velocidad como la exactitud de la definición de los requisitos; rastrear los requisitos software durante el ciclo de vida del proyecto, respondiendo de manera rápida a cualquier cambio que se produzca.

La compañía Seilevel Inc., una de las más fuertes en cuanto a los servicios relacionados con los requisitos del software, ha seleccionado esta herramienta como la mejor de este tipo. Según palabras de un directivo de la compañía ven características únicas en esta herramienta así como una experiencia de usuario excelente y una oportunidad para mejorar el trabajo de sus clientes en cuanto al análisis y gestión de requisitos se refiere.

2.            CASE Spec

Esta herramienta está desarrollada por la empresa Goda Software, siendo esta una aplicación comercial de uso exclusivo para el sistema operativo Windows. Las principales características que avalan a esta herramienta son las siguientes:

Especificación: posibilidad de realizar las especificaciones tanto con las técnicas tradicionales como con los diagramas de casos de uso. Además, nos permite crear diagramas UML y de flujo de datos.

Seguimiento de los requisitos: a través del uso combinado de un procesador de textos y una hoja de cálculo, el usuario será capaz de realizar el seguimiento de los requisitos así como hacer un informe acerca de los mismos.

Capacidad de rastreo: mediante la existencia de una matriz se representan de manera sencilla las diferentes relaciones existentes entre los requisitos definidos y otra serie de elementos incidentes en el proyecto.

Capacidad de importar y exportar archivos.

Generación automática de la documentación del proyecto así como posibilidad de realizar amplios informes.

3.            IRQA 4

Herramienta desarrollada por Visure y que tiene la meta de servir como aplicación para proporcionar un soporte integral en la ingeniería de requisitos de un proyecto de informática.

A parte de incluir las tareas más básicas de la ingeniería de requisitos (captura, análisis, modelado, organización y seguimiento), esta aplicación dispones de las siguientes características:

Reutilización de requisitos: permite que los requisitos definidos en un proyecto puedan ser utilizados en otros proyectos realizados por la organización, a través del uso de librerías. De esta manera se consigue ofertar una pequeña ventaja a la hora de realizar líneas de productos.

Vista documental: esta nueva opción ofrece un agrupamiento de los requisitos que permite al usuario observar una diferenciación clara entre los mismos así como facilitar toda labor relacionada con estos.

Ingeniería de requisitos: además de la gestión de los requisitos, esta aplicación proporciona funcionalidades relacionadas con la ingeniería de requisitos, lo que permite centralizar en una sola herramienta todas las actividades relacionadas con los requisitos (incluyendo las pruebas de validación y aceptación).

Al ser esta una herramienta integrada, se ofrece al usuario la libertad de seleccionar aquellas otras aplicaciones más adecuadas para la realización de otras tareas relacionadas con el ciclo de vida de un proyecto, lo que hace que no se dependa de un solo proveedor de aplicaciones.

4.            Tiger Pro

Estamos ante una herramienta shareware desarrollada para facilitar al usuario la tarea de redactar los requerimientos de un proyecto. Este aplicativo es capaz de solucionar algunos de los defectos que aparecen a la hora de definir los requisitos de un programa. También ayuda al usuario a aclarar algunos de los requerimientos desde el punto de vista de las pruebas a realizar, señalando aquellos requerimientos cuya verificación pueda resultar complicada.
La herramienta, que se va actualizando con el paso del tiempo, permite exportar el trabajo realizado en archivos bajo el formato CSV. Los usuarios que utilicen esta herramienta podrán trabajar en los requisitos tomando como referencia los siguientes conceptos: palabras claves relacionadas con el mismo (hasta 3 palabras para cada requisito), criterio de aceptación del requisito, seguimiento del mismo (tanto hacia la fuente como hacia otros lugares), prioridad del requerimiento, riesgo que trae consigo el requisito y coste del mismo. Además, a la hora de realizar los informes correspondientes, la herramienta nos proporcionará la opción de redactar los mismos en forma textual o bien nos presentará la información de forma gráfica.

5.            GatherSpace

A la hora de realizar la definición de los requisitos para un proyecto de informática, el trabajo conjunto de todo el equipo de desarrollo es una parte fundamental para conseguir un buen resultado. Esta herramienta de definición y gestión de requisitos utiliza Internet como su lanzadera, ya que no es necesario instalar ningún programa para utilizarla: bastará con crear una cuenta en el sitio web de la misma y comenzar a definir el proyecto que se quiere desarrollar. De esta manera, la aplicación consigue que la colaboración de todos los miembros del grupo de desarrollo sea posible de una manera mucho más eficaz.

Las características más representativas de esta herramienta son las siguientes:

Creación de una jerarquía de requerimientos: permite crear paquetes funcionales para después relacionarlos con componentes de más alto nivel para después permitir asociar casos de uso más detallados y requisitos del software a dichos componentes.

Manipular varios proyectos al mismo tiempo, controlando el acceso de los usuarios para que estos puedan ver solo alguno de los proyectos.

Posibilidad de visualizar la documentación generada a partir de los requisitos en tres formatos diferentes: HTML, PDF y Microsoft Word.
Además de contar con todas estas opciones, la compañía ha dispuesto un buen sistema de seguridad que protegerá los datos introducidos en la herramienta. Para asegurar la integridad del trabajo realizado se realizan copias de seguridad diaria de la información introducida en la herramienta y además existe la posibilidad de encriptar los datos introducidos en la misma. También es necesario señalar que el usuario podrá descargarse la información desde el servidor de la empresa tantas veces como le sea necesario.

6.            IBM Rational RequisitePro

Esta herramienta, desarrollada por una de las compañías más importantes dentro del campo de la informática, se considera una de las herramientas más completas y potentes dentro del análisis y la gestión de los requisitos.

Una de las grandes ventajas que aporta este producto es la compatibilidad existente entre su software y algunos de los programas más utilizados. Por ejemplo, esta herramienta es capaz de comunicarse de manera muy eficiente con el Microsoft Word, de manera que la realización de los informes es más sencilla al tiempo que se ofrece al usuario una interfaz conocida para el desarrollo de su labor. Además de esta compatibilidad, el programa también se comunica con gran eficiencia con algunos de los sistemas de bases de datos más utilizados en el mundo de la informática (DB2 de IBM, Microsoft SQL Server, Microsoft Access y Oracle) de manera tal que se controla el acceso a los datos existentes en el sistema al tiempo que se tiene un repositorio central de datos.

Por si esto no fuera suficiente, la comunicación entre la base de datos utilizada y el Microsoft Word permite al usuario gestionar los requisitos desde la base de datos seleccionada al tiempo que estos se mantienen dentro de su contexto en el procesador de textos.

Al igual que la herramienta estudiada anteriormente, Racional RequisitePro ofrece la posibilidad de trabajar mediante acceso Web. De esta manera se logra tener tanto un acceso remoto como un acceso distribuido y además no se necesita que el software esté instalado en el cliente. También es necesario mencionar que la herramienta dispone de una matriz de seguimiento de los requisitos (al igual que la herramienta CASE Spec); en este caso, dicha matriz puede representarse tanto de forma gráfica como de forma textual. Además, en este caso se incorpora al seguimiento de los requisitos la existencia de un árbol de seguimiento global.

7.            RaQuest
Se trata de la herramienta de gestión de requisitos desarrollada por la empresa Sparx Systems, desarrolladora también de la herramienta de análisis y modelado Enterprise Architect, utilizada en la Escuela.

Las características principales de esta herramienta son las siguientes:

Definición y gestión de los elementos relacionados con los requisitos, entre los que se encuentran el tipo, el estado, la dificultad del requisito, las relaciones existentes entre diferentes requisitos, etc.

Creación de paquetes para gestionar de manera más sencilla y completa los requisitos.
Generación de documentación del proyecto (tanto parcial como total) en los siguientes formatos: HTML, CSV, Word, Excel, RTF
Además de estas características, la herramienta nos ofrece una serie de vistas diferentes, dependiendo de la vista que queramos obtener del proyecto. Estas vistas son: vista del tipo lista (permite ordenar los requisitos, mostrar diferentes listas, filtrar las listas en relación a diferentes palabras y buscar en el proyecto) y vista del tipo árbol (se pueden mostrar los árboles de proyecto y miembro así como mostrar los árboles por el tipo y por el estado).
Elección de la Herramienta a Utilizar
Debido a la gran compatibilidad existente con el Enterprise Architect, a la variedad de formatos para generar la documentación y a las numerosas opciones existentes en cuanto al tipo de vistas y la definición de los elementos relacionados con los requisitos, me he decantado por utilizar la herramienta RaQuest.