martes, 12 de marzo de 2013

UNIDAD II INGENIERIA DE REQUISITOS


UNIDAD II: INGENIERIA DE REQUISITOS

Definición: Requisito

*      Una condición o necesidad de un usuario para resolver un problema o alcanzar un objetivo.

*      Una condición o capacidad que debe estar presente en un sistema o componentes de sistema para satisfacer un contrato, estándar, especificación u otro documento formal.

 

 

Ingeniería de requerimientos

 

*      El proceso de recopilar, analizar y verificar las necesidades del cliente o usuario para un sistema es llamado ingeniería de requerimientos. La meta de la ingeniería de requerimientos (IR) es entregar una especificación de requisitos de software correcta y completa.

 

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.

El propósito de la ingeniería de requisitos es hacer que los mismos alcancen un estado óptimo antes de alcanzar la fase de diseño en el proyecto. Los buenos requisitos deben ser medibles, comprobables, sin ambigüedades o contradicciones, etc.

La parte más difícil de construir un sistema es precisamente saber qué construir. Ninguna otra parte del trabajo conceptual es tan difícil como establecer los requisitos técnicos detallados, incluyendo todas las interfaces con gente, máquinas y otros sistemas. Ninguna otra parte del trabajo afecta tanto el sistema si es hecha mal. Ninguna es tan difícil de corregir más adelante. Entonces, la tarea más importante que el ingeniero de software hace para el cliente es la extracción iterativa y el refinamiento de los requerimientos del producto.

Tipos de Requerimientos

 Los requerimientos de software pueden dividirse en 2 categorías: requerimientos funcionales y requerimientos no funcionales.

 
Requerimientos funcionales.

 
son los que definen las funciones que el sistema será capaz de realizar, describen las transformaciones que el sistema realiza sobre las entradas para producir salidas.

 
Requerimientos no funcionales

Requerimientos no funcionales tienen que ver con características que de una u otra forma puedan limitar el sistema, como por ejemplo, el rendimiento (en tiempo y espacio), interfaces de usuario, fiabilidad (robustez del sistema, disponibilidad de equipo), mantenimiento, seguridad, portabilidad, estándares, etc.

 

Características de un Requerimiento


Es importante no perder de vista que un requerimiento debe ser:

³ Especificado por escrito: Como todo contrato o acuerdo entre dos partes.

³ Posible de probar o verificar. Si un requerimiento no se puede comprobar, entonces ¿cómo se sabe si se cumplió con él o no?

v  Conciso: Un requerimiento es conciso si es fácil de leer y entender. Su redacción debe ser simple y clara para aquellos que vayan a consultarlo en un futuro.

v  Completo: Un requerimiento está completo si no necesita ampliar detalles en su redacción, es decir, si se proporciona la información suficiente para su comprensión.

v  Consistente: Un requerimiento es consistente si no es contradictorio con otro requerimiento.

v  No ambiguo: Un requerimiento no es ambiguo cuando tiene una sola interpretación. El lenguaje usado en su definición, no debe causar confusiones al lector.

 

 

2.1 TAREAS DE LA INGENIERÍA DE REQUISITOS

*      Extracción: Esta fase representa el comienzo de cada ciclo. Extracción es el nombre comúnmente dado a las actividades involucradas en el descubrimiento de los requisitos del sistema.

 

*      Análisis: Sobre la base de la extracción realizada previamente, comienza esta fase en la cual se enfoca en descubrir problemas con los requisitos del sistema identificados hasta el momento.

 

 

*      Especificación: En esta fase se documentan los requisitos acordados con el cliente, en un nivel apropiado de detalle.

 

*      Validación: La validación es la etapa final de la IR. Su objetivo es, ratificar los requisitos, es decir, verificar todos los requisitos que aparecen en el documento especificado para asegurarse que representan una descripción, por lo menos, aceptable del sistema que se debe implementar. Esto implica verificar que los requisitos sean consistentes y que estén completos.

 

 

 

2.2 TÉCNICAS DE LA INGENIERÍA DE REQUISTOS

 

*      Entrevistas y Cuestionarios

Las entrevistas y cuestionarios se emplean para reunir información proveniente de personas o de grupos.

Durante la entrevista, el analista conversa con el encuestado; el cuestionario consiste en una serie de preguntas relacionadas con varios aspectos de un sistema.

 

Por lo común, los encuestados son usuarios de los sistemas existentes o usuarios en potencia del sistema propuesto. En algunos casos, son gerentes o empleados que proporcionan datos para el sistema propuesto o que serán afectados por él. El éxito de esta técnica, depende de la habilidad del entrevistador y de su preparación para la misma.

*      Sistemas existentes

Esta técnica consiste en analizar distintos sistemas ya desarrollados que estén relacionados con el sistema a ser construido. Por un lado, podemos analizar las interfaces de usuario, observando el tipo de

Información que se maneja y cómo es manejada, por otro lado también es útil analizar las distintas

Salidas que los sistemas producen (listados, consultas, etc.), porque siempre pueden surgir nuevas ideas sobre la base de estas.

*      Lluvia de ideas

Este es un modelo que se usa para generar ideas. La intención en su aplicación es la de generar la máxima cantidad posible de requerimientos para el sistema. No hay que detenerse en pensar si la idea eso no del todo utilizable. La intención de este ejercicio es generar, en una primera instancia, muchas ideas.

*      Prototipos

Durante la actividad de extracción de requerimientos, puede ocurrir que algunos requerimientos no estén demasiado claros o que no se esté muy seguro de haber entendido correctamente los requerimientos

Obtenidos hasta el momento, todo lo cual puede llevar a un desarrollo no eficaz del sistema final.

  Entonces, para validar los requerimientos hallados, se construyen     prototipos. Los prototipos son

Simulaciones del posible producto, que luego son utilizados por el usuario final, permitiéndonos conseguir una importante retroalimentación en cuanto a si el sistema diseñado con base a los requerimientos recolectados le permite al usuario realizar su trabajo de manera eficiente y efectiva.

El desarrollo del prototipo comienza con la captura de requerimientos. Desarrolladores y clientes se

Reúnen y definen los objetivos globales del software, identifican todos los requerimientos que son conocidos, y señalan áreas en las que será necesaria la profundización en las definiciones. Luego de esto, tiene lugar un “diseño rápido”. El diseño rápido se centra en una representación de aquellos aspectos del software que serán visibles al usuario (por ejemplo, entradas y formatos de las salidas). El diseño rápido lleva a la construcción de un prototipo.

*      Casos de Uso

Los casos de uso son una técnica para especificar el comportamiento de un sistema.

“Un caso de uso es una secuencia de transacciones que son desarrolladas por un Sistema en respuesta a un evento que inicia un actor sobre el propio sistema. Los diagramas de casos de uso sirven para especificar la funcionalidad y el comportamiento de un sistema mediante su interacción con los usuarios y/o otros sistemas”

 

Los casos de uso permiten entonces describir la posible secuencia de interacciones entre el sistema y uno o más actores, en respuesta a un estímulo inicial proveniente de un actor, es una descripción de un conjunto de escenarios, cada uno de ellos comenzado con un evento inicial desde un actor hacia el sistema.

2.3 MODELADO DE REQUISITOS

El modelo de requisitos tiene como objetivo delimitar el sistema y capturar la funcionalidad que debe ofrecer desde la perspectiva del usuario. Este modelo puede funcionar como un contrato entre el desarrollador y el cliente o usuario del sistema, y por lo tanto proyecta lo que el cliente desea según la percepción del desarrollador. Por lo tanto, es esencial que los clientes puedan comprender este modelo.

El modelo de requisitos es el primer modelo a desarrollarse, sirviendo de base para la formación de todos los demás modelos en el desarrollo de software. En general, el cualquier cambio en la funcionalidad del sistema es más fácil de hacer, y con menores consecuencias, a este nivel que posteriormente. El modelo de requisitos que desarrollaremos se

Basa en la metodología Objectory (Jacobson et al. 1992), basada principalmente en el modelo de casos de uso.

Actualmente esta metodología es parte del Proceso Unificado de Rational (RUP). El modelo de casos de uso y el propio modelo de requisitos son la base para los demás modelos, como se describió anteriormente en el Capítulo 3 y

se resume aquí:

ü  Requisitos: El modelo de casos de uso sirve para expresar el modelo de requisitos, el cual se desarrolla en

cooperación con otros modelos como se verá más adelante.

ü  Análisis: La funcionalidad especificada por el modelo de casos de uso se estructura en el modelo de análisis,

que es estable con respecto a cambios, siendo un modelo lógico independiente del ambiente de implementación.

ü  Diseño: La funcionalidad de los casos de uso ya estructurada por el análisis es realizada por el modelo de

diseño, adaptándose al ambiente de implementación real y refinándose aún más.

ü  Implementación: Los casos de uso son implementados mediante el código fuente en el modelo de

implementación.

ü  Pruebas: Los casos de uso son probados a través de las pruebas de componentes y pruebas de integración.

ü  Documentación: El modelo de casos de uso debe ser documentado a lo largo de las diversas actividades, dando lugar a distintos documentos como los manuales de usuario, manuales de administración, etc.

 

2.4 HERRAMIENTAS CASE PARA LA INGENIERÍA DE REQUISITOS

 

A medida que pasa el tiempo se logra entender que el empleo del software es una buena opción para agilizar y sistematizar las tareas en el desarrollo de procesos. El desarrollo de software no es la excepción; en este caso dichas herramientas se han denominado CASE (Ingeniería De Software Asistida Por Computador). Estas incluyen un conjunto de programas que facilitan la optimización de un producto ofreciendo apoyo permanente a los analistas, ingenieros de software y desarrolladores. CASE es la aplicación de métodos y técnicas que dan utilidades a los programas, por medio de otros, procedimientos y su respectiva documentación.

En este post se hace referencia a 3 herramientas que ayudan a la gestión de requisitos; es decir al proceso de identificación, asignación y seguimiento de los mismos, incluyendo interfaz, verificación, modificación y control de cada requisito, durante el ciclo de vida del proyecto. Los cambios/actualizaciones de requisitos deben ser gestionados para asegurar que se mantenga la calidad del producto.

Hasta hace poco tiempo las herramientas para la gestión de requisitos de software se limitaban a editores de texto, los cuales hacían de esta tarea una labor tediosa y confusa. Actualmente, se cuenta con múltiples opciones, como las que se mencionan a continuación:

 

                                                 IRQA

Herramienta CASE de Ingeniería de Requisitos, diseñada para soportar las actividades realizadas en el

proceso de especificación de sistemas. Ésta facilita y formaliza la comunicación entre el cliente, el proveedor y los distintos miembros del equipo de desarrollo. Facilita la captura, organización y análisis de las condiciones, así como la especificación de la solución mediante el apoyo metodológico adaptable a cada cliente.

 

CONTROLA

Herramienta de apoyo al proceso de ingeniería de software en pequeñas empresas. Se creó gracias a

la expansión que tuvo el mercado y a la generación de grandes y pequeñas empresas, las cuales requieren un instrumento para el desarrollo de sus proyectos. Ofrece recursos importantes tales como: Administración de requisitos, administración de casos de uso, administración de casos de prueba y error, planeamiento de liberaciones, administración de implementaciones, control de dependencia entre Implementaciones, matriz de rastreabilidad y rastreabilidad de los requisitos.

 

OSRMT (Open Source Requirements Management Tool)

Herramienta libre para la gestión de requisitos, cuyas principales características son: trabaja en arquitectura cliente/servidor, desarrollada bajo Java; la versión 1.3 trae un módulo para manejar la trazabilidad y lo introduce para el control de cambios; así mismo, genera la documentación de los requisitos tratados.

 Elaborado por la Alumna :Juana Hernandez Hernandez    ISC   SEM:IV      MOD:2

                                              BIBLIOGRAFIAS



martes, 19 de febrero de 2013

@FUNDAMENTOS DE INGENIERIA DE SOFTWARE





UNIDAD 1: FUNDAMENTOS DE INGENIERÍA DE SOFTWARE.

1.1 Conceptos Básicos                             

La ingeniería de software es una disciplina formada por un conjunto de métodos, herramientas y técnicas que se utilizan en el desarrollo de los programas informáticos (software).

Esta disciplina  trasciende la actividad de programación, que es la actividad principal a la hora de crear un software. El ingeniero de software se encarga de toda la gestión del proyecto  para que éste se pueda desarrollar en un plazo determinado y con el presupuesto previsto.

La ingeniería de software, por lo tanto, incluye el análisis previo de la situación, el diseño del proyecto, el desarrollo del software, las pruebas necesarias para confirmar su correcto funcionamiento y la implementación del sistema.

Los Ingenieros de Software deben:

 

·         Adoptar un enfoque sistemático para llevar a cabo su trabajo.

 

·         Utilizar las herramientas y técnicas apropiadas para resolver el problema planteado, de acuerdo a las restricciones de desarrollo y a los recursos disponibles.

 

 

1.2 EL PAPEL EVOLUTIVO DEL SOFTWARE

 

 

Hoy en día, el software tiene un papel dual. Es producto y canal de distribución de este. Como producto, ofrece la potencia de cómputo presentada como hardware de una computadora o, de manera más global por una red de computadoras accesible mediante hardware local y de acceso físico. Sin importar el lugar en que resida el software, ya sea en un celular o dentro de una computadora central, éste es un transformador de información; realiza la producción, el manejo, la adquisición, la modificación, el despliegue o la transmisión de la información que puede ser tan simple como un solo bit o tan compleja como una presentación multimedia. En su papel de vehículo para la entrega de un producto, el software actúa como la base para el control de la computadora (Sistemas Operativos), la comunicación de información (redes), y la relación y el control de otros programas (utilerías de software y ambientes).

 

 

PRIMERA ERA

 (1950 – 1965)

·         Se trabajaba con la idea de “Codificar y Corregir”.

·          No existía un planteamiento previo.

·          No existía documentación de ningún tipo.

·         Existencia de pocos métodos formales y pocos creyentes en ellos.

·         Desarrollo a base de prueba y error.

 

SEGUNDO ERA

(1965 – 1972)

·         Se busca simplificar código.

·         Aparición de Multiprogramación y Sistemas Multiusuarios.

·         Sistemas de Tiempo Real apoyan la toma de decisiones.

·         Aparición de Software como producto. (Casas de Software).

·         Se buscan procedimientos para el desarrollo del Software.

TERCERA ERA

(1972 – 1985)

·         Nuevo Concepto: Sistemas Distribuidos.

·         Complejidad en los Sistemas de Información.

·         Aparecen: Redes de área local y global, y Comunicadores Digitales.

·         Amplio Uso de Microprocesadores.

     CUARTA  ERA

(1985 - 1995 )

·         Impacto Colectivo de Software.

·         Aparecen: Redes de Información, Tecnologías Orientadas a Objetos.

·         Aparecen: Redes Neuronales, Sistemas Expertos y SW de Inteligencia Artificial.

·         La información como valor preponderante dentro de las Organizaciones.

QUINTA ERA

(2000 hasta hoy en día)

 
 Utiliza algunos requisitos de las eras anteriores solo que aumenta la omnipresencia de la web, la reutilización de información y componentes de software

·          Codificar: Transformar mediante las reglas de un código la formulación de un mensaje.

·         Hardware: Componente físico de la computadora. Por ejemplo: el monitor, la impresora o el disco rígido. El hardware por sí mismo no hace que una máquina funcione.

·          Multiprogramación: Se denomina multiprogramación a la técnica que permite que dos o más procesos ocupen la misma unidad de memoria principal y que sean ejecutados al "mismo tiempo“.
 
1.3 ETAPAS DE DESARROLLO DEL SOFTWARE
 
Etapa de análisis: Es el proceso de investigar un problema que se quiere resolver. Definir claramente el Problema que se desea resolver o el sistema que se desea crear. Identificar los componentes principales que integrarán el producto.
Etapa de Diseño: Es el proceso de utilizar la información recolectada en la etapa de análisis al diseño del producto. La principal tarea de la etapa de diseño es desarrollar un modelo o las especificaciones para el producto o Componentes del Sistema.
 Etapa de Desarrollo: Consiste en utilizar los modelos creados durante la etapa de diseño para crear los componentes del sistema.
Etapa de Pruebas o Verificación Prueba : Consiste en asegurar que los componentes individuales que integran al sistema o producto, cumplen con los requerimientos de la especificación creada durante la etapa de diseño. Se recomienda aplicar las etapas: • Análisis • Diseño • Desarrollo • Prueba A cada uno de los ejercicios de este curso.
Etapa de Implementación o Entrega Implantación: Consiste en poner a disposición del cliente el producto.
 Etapa de Mantenimiento: Consiste en corregir problemas del producto y re- liberar el producto como una nueva versión o revisión (producto mejorado).
Etapa final EOL (End-of-Life) El fin del ciclo del producto consiste en realizar todas las tareas necesarias para asegurar que los clientes y los empleados están conscientes de que el producto ya no será vendido ni soportado.
 
1.4 CLASIFICACIÓN DE LA TECNOLOGÍA EN EL DESARROLLO DE SOFTWARE
(TECNOLOGÍA ESTRUCTURADA Y ORIENTADO A OBJETOS).
Tecnologías de desarrollo estructurado
Las tecnologías de desarrollo estructurado son las más convencionales de las empleadas hoy día. Han surgido de la evolución de las ideas de programación estructurada (hace más de veinticinco años) hacia las fases iniciales del ciclo de vida. En su formulación actual, las notaciones empleadas en las primeras fases del ciclo de vida (especificación de requisitos de usuario y sistema) suelen estar constituidas por lenguajes gráficos que permiten: identificar el sistema y el entorno; representar el flujo de información entre los elementos; y, describir los datos y las actividades del sistema.
La idea base de esta tecnología es que es posible estructurar el modelo de un sistema de software en base a funciones que procesan información que reciben de otras funciones (o del exterior) y dirigen la información procesada a otros módulos funcionales (o al exterior). El enfoque seguido, por tanto, es el de pensar en las funciones del sistema necesarias (extraídas de los requisitos del sistema) y luego en los datos que requieren.
Orientado a Objetos
 
Los métodos de descomposición orientada a objetos constituyenla tendencia más influyente observada en la ingeniería de sistemas de software en los últimos años. Con ellos nos referimos a un conjunto de métodos (aún en fase de desarrollo o evolución) que permiten al analista y diseñador concebir su sistema identificando clases de objetos, operaciones permitidas y relaciones entre ellos como base para la estructura del sistema a diseñar.
En ellas, un objeto es un conjunto de datos y funciones de manipulación de los mismos encapsulados en una unidad que es posible tratar como un todo (crear, copiar, destruir, etc.). Un objeto posee unas operaciones visibles a otros objetos aunque éstos no conocen cómo están implementadas. El diseñador reconoce inicialmente clases de objetos de las que se derivan los objetos concretos que utilizará en el diseño.
Un objeto puede construirse jerárquicamente empleando, a su vez, a otros objetos más simples. Una clase implica una generalización del concepto de objeto (identificando similitudes entre objetos similares) y constituye la base a partir de las cuales se construye el sistema.
Existen varias tecnologías orientadas a objetos que, aunque similares en su potencia expresiva, ofrecen algunas diferencias que las hacen más adecuadas para algún tipo concreto de sistemas.
Podemos mencionar como una de las más representativas a OMT.
OMT está soportada por muchas herramientas CASE comerciales.
Corresponde a una notación gráfica que permite representar las clases de objetos, sus relaciones y la creación de ejemplares de los mismos. Aunque básicamente empleada para la fase de análisis de requisitos del sistema puede también emplearse para las primeras fases del diseño.
 
1.5 DEFINICIÓN DE LA HISTORIA DE LAS HERRAMIENTAS CASE.
Se puede definir a las Herramientas CASE como un conjunto de programas y ayudas que dan asistencia.
a los analistas, ingenieros de software y desarrolladores, durante todos los pasos del Ciclo de Vida de desarrollo de un Software. Como es sabido, los estados en el Ciclo de Vida de desarrollo de un Software son: Investigación Preliminar, Análisis, Diseño, Implementación e Instalación.
CASE: Conjunto de métodos, utilidades y técnicas que facilitan la automatización del ciclo de vida del desarrollo de sistemas de información, completamente o en alguna de sus fases.
La realización de un nuevo software requiere que las tareas sean organizadas y completadas en forma correcta y eficiente. Las Herramientas CASE fueron desarrolladas para automatizar esos procesos y facilitar las tareas de coordinación de los eventos que necesitan ser mejorados en el ciclo de desarrollo de software.
La mejor razón para la creación de estas herramientas fue el incremento en la velocidad de desarrollo de los sistemas. Por esto, las compañías pudieron desarrollar sistemas sin encarar el problema de tener cambios en las necesidades del negocio, antes de finalizar el proceso de desarrollo.
También permite a las compañías competir más efectivamente usando estos sistemas desarrollados nuevamente para compararlos con sus necesidades de negocio actuales. En un mercado altamente competitivo, esto puede hacer la diferencia entre el éxito y el fracaso. Las herramientas CASE también permiten a los analistas tener más tiempo para el análisis y diseño y minimizar el tiempo para codificar y probar.
La introducción de CASE integradas está comenzando a tener un impacto significativo en los negocios y sistemas de información de las organizaciones.
Con un CASE integrado, las organizaciones pueden desarrollar rápidamente sistemas de mejor calidad para soportar procesos críticos del negocio y asistir en el desarrollo y promoción intensiva de la información de productos y servicios. Estas herramientas pueden proveer muchos beneficios en todas las etapas del proceso de desarrollo de software, algunas de ellas son:
 
·         Verificar el uso de todos los elementos en el sistema diseñado.
·         Automatizar el dibujo de diagramas.
·         Ayudar en la documentación del sistema.
·         Ayudar en la creación de relaciones en la Base de Datos.
·         Generar estructuras de código.
 
La principal ventaja de la utilización de una herramienta CASE, es la mejora de la calidad de los desarrollos realizados y, en segundo término, el aumento de la productividad. Para conseguir estos dos objetivos es conveniente contar con una organización y una metodología de trabajo, además de la propia herramienta.

1.6 CLASIFICACION DE LAS HERRAMIENTAS CASE.
No existe una única clasificación de herramientas CASE y, en ocasiones, es difícil incluirlas en una clase determinada. Podrían clasificarse atendiendo a:
 
·         Las plataformas que soportan.
·         Las fases del ciclo de vida del desarrollo de sistemas que cubren.
·         La arquitectura de las aplicaciones que producen.
·          Su funcionalidad.
Las herramientas CASE, en función de las fases del ciclo de vida abarcadas, se pueden agrupar de la forma siguiente:
1. Herramientas integradas, I-CASE (Integrated CASE, CASE integrado):
abarcan todas las fases del ciclo de vida del desarrollo de sistemas. Son
llamadas también CASE workbench.
2. Herramientas de alto nivel, U-CASE (Upper CASE - CASE superior) ofront-end, orientadas a la automatización y soporte de las actividades desarrolladas durante las primeras fases del desarrollo: análisis y diseño.
3. Herramientas de bajo nivel, L-CASE (Lower CASE - CASE inferior) oback-end, dirigidas a las últimas fases del desarrollo: construcción e implantación.
 
4. Juegos de herramientas o Tools-Case, son el tipo más simple de herramientas CASE. Automatizan una fase dentro del ciclo de vida. Dentro
de este grupo se encontrarían las herramientas de reingeniería, orientadas
a la fase de mantenimiento.



JUANA HERNANDEZ HERNANDEZ    SEM:IV   GRUPO:B   ING.SITEMAS COMPUTACIONALES.