lunes, 11 de marzo de 2013

unidad 2

2.1. Tareas de la ingeniería de requisitos

¿Qué es?
*Ayuda a los ingenieros de software a entender mejor el problema en cuya solución trabajarán.
*¿Por qué es importante? Se debe entender lo que el cliente quiere antes de comenzar a diseñar y construir un sistema.
*Toma en cuenta errores, coste y tiempo.
*La IR trata de los principios, métodos, técnicas y herramientas que permiten descubrir, documentar y mantener los requisitos, de forma sistemática y repetible.

Propósito a obtener
*El objetivo del proceso de la ingeniería de requisitos es darle a todas las partes una explicación escrita del problema.
*Es esencial que se haga un esfuerzo real por entender los requisitos de un problema antes de intentar resolverlo.

Requisitos funcionales y No funcionales
*Funcionales
*Describen  los servicios que se esperan del sistema.
* No funcionales
*Restricciones sobre los requisitos funcionales
*Existen dos tipos:
·         Orientados al usuario
·         Orientados al desarrollador
Inicio
*Se inicia muchas veces por:
Identifica nueva necesidad de negocios.
Se descubre un nuevo mercado.
Se descubre un nuevo servicio.

Elaboración
*Objetivo: Desarrollar modelo técnico refinado de las funciones, características y restricciones del software. 
*Se conduce mediante la creación y refinamiento de escenarios.
*El resultado final es un modelo de análisis que define
*El dominio de la información.
*Funciones.
*Comportamiento del problema.

Negociación

*Clientes, usuarios y otros interesados deben ordenar sus requisitos y luego discutir los conflictos relacionados con la prioridad.
*Hacer estimaciones preliminares del esfuerzo requerido para su desarrollo.
*Mediante un enfoque iterativo los requisitos se eliminan, combinan o modifican.



Validación
*Examina la especificación para asegurar que los requisitos de software se han establecido de manera precisa.

2.2. Técnicas de la Ingeniería de Requisitos
Técnicas Principales

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.
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 

2.3 Modelado de Requisitos
La metodología presentada por Weitzenfeld  en la que, para la fase de requisitos sugiere especificar los siguientes modelos:
a) Modelo de casos de uso, b) Modelo de interfaces y c) Modelo de dominio
.
El primero es un diagrama gráfico que ilustra la relación del usuario con el sistema y se acompaña de una plantilla descriptiva textual. El segundo busca definir las interfaces que contendrá el sistema y el tercero pretende


Identificar las clases (conceptos) propios del campo de aplicación que se desea automatizar. La importancia de la captura de requisitos ha dado lugar a la definición de un área de estudio denominada Ingeniería de Requisitos y al establecimiento de estándares para su documentación. En el Modelo de Casos de Uso (De Comportamiento) se especifica la funcionalidad que ofrecerá el sistema desde el punto de vista de usuario. Aquí intervienen dos conceptos clave, los actores, que representan los distintos papeles que desempeñan los usuarios y los propios casos de uso, es decir las funcionalidades del sistema. Los casos de uso se representan gráficamente, como se ilustra enseguida y se acompañan de una plantilla textual que describe propiamente el diagrama.


2.4. Herramientas CASE para la Ingeniería de requisitos.

USO DE PROTOTIPOS. Un proceso interactivo del desarrollo de sistemas en el cual los requerimientos son convertidos en un sistema que trabaja, y que es continuamente revisado a través de un trabajo conjunto entre un analista y los usuarios.
JOINT APPLICATION DESIGN (JAD). Un proceso estructurado en el cual los usuarios, gerentes y analistas, trabajan juntos varios días en una serie // // // // 
de reuniones intensivas para especificar o revisar requerimientos de sistemas.
HERRAMIENTAS CASE (COMPUTER-AIDED SOFTWARE ENGINEERING).
Uso de herramientas para la ingeniería de software asistida por computadora para aumentar la productividad, comunicarse más efectivamente con los usuarios e integrar el trabajo que realizan los analistas en el sistema, desde el principio hasta el fin del ciclo de vida.
GROUPWARE. Software que está diseñado para ser usado en una red y servir a un grupo de usuarios que trabajan en un proyecto relacionado.
Estas herramientas ayudan a los especialistas en sistemas a documentar un sistema existente, ya sea manual o automatizado. También sirve para determinar los requerimientos de una nueva aplicación.
*Incluye: Herramientas para recolección de datos Y   Herramientas para diagramación. Herramientas para el diccionario.












lunes, 25 de febrero de 2013

unidad 1

1.1 CONCEPTOS BÁSICOS INGENIERÍA DE SOFTWARE.


El propósito de la ingeniería de software es permitir al diseñador enfrentar el problema de construcción de software como un problema de ingeniería, con guías y principios concretos, al igual que con herramientas de evaluación y validación. Últimamente, se le ha dado especial importancia al estudio de este tema, dados los enormes costos de desarrollo de los sistemas informáticos y la forma vertiginosa como se multiplica su demanda.

*     Ingeniería

 Es la profesión en la que el conocimiento de las ciencias naturales y matemáticas obtenidos con el estudio, la práctica y la experiencia se aplica con juicio para desarrollar formas de utilizar de modo económico, los materiales y fuerzas de la naturaleza para beneficio de la humanidad

*     Software

Es el conjunto de todos los programas que existen dentro de una computadora. Es el producto del desarrollo que realizan los ingenieros de software resultado de requerimientos de información.



*      La Ingeniería de Software

Es una disciplina de la Ingeniería que comprende todos los aspectos de la producción del software desde las etapas iniciales de la especificación del sistema hasta el mantenimiento de éste después de que se libera.

La Ingeniería de Software incluye:
Personas (quién lo hace) proceso (la manera en que se hace) proyecto (la realización) producto (la aplicación de artefactos
)
 
1.2 EL PAPEL EVOLUTIVO DEL SOFTWARE
El software es tanto un producto como el vehículo para su entrega, es el transformador de la información. El papel del software de computadora ha experimentado un cambio significativo en un periodo un poco mayor a 50 años.
Las mejorías sustanciales en el desempeño del hardware, los cambios profundos en las arquitecturas de cómputo, los enormes incrementos en las capacidades de memoria y almacenamiento, y la amplia variedad de opciones de salida y de entrada han propiciado el surgimiento de sistemas más elaborados y complejos basados en computadoras. Nadie sabe en realidad el futuro de los sistemas que día a día se construyen, más sin embargo sin importar el lugar en el que resida el software, ya sea en un celular o dentro de una computadora central, el software 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 creación y el control de otros programas (utilerías de software y ambientes). “El software entrega el producto más importante de nuestro tiempo: información”.

1.3 etapas del desarrollo del software.

Las etapas del proceso de desarrollo de software
Cualquier sistema de información va pasando por una serie de fases a lo largo de su vida.
Su ciclo de vida comprende una serie de etapas entre las que se encuentran las siguientes:
Planificación.
Análisis Diseño.
Implementación.
Pruebas.
Instalación o despliegue.
Uso y mantenimiento.
Estas etapas son un reflejo del proceso que se sigue a la hora de resolver cualquier tipo de problema.
Como primer paso para resolver un problema se tiene que :


Comprender el problema (análisis)- Plantear una posible solución
considerando soluciones alternativas (diseño)- Llevar a cabo la solución
planteada (implementación)- Comprobar que el resultado obtenido escorrecto (pruebas)
Las etapas adicionales de planificación, instalación
mantenimiento que aparecen en el ciclo de vida de un sistema de información son necesarias en el mundo real porque el desarrollo de un sistema de información conlleva unos costes asociados (lo que se hace necesaria la planificación).


1.4 Clasificación de la tecnología en el desarrollo de software
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 prime-ras 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.
Tecnologías orientadas a objetos
Las tecnologías de desarrollo estructurado han demostrado sus limitaciones a la hora de organizar y facilitar la evolución de sistemas de software complejos. La descomposición en funciones hace difícil al diseñador mantener la relación con los objetos del mundo real sobre los que se modifican generalmente los requisitos del usuario.
Los métodos de descomposición orientada a objetos constituyen la 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.


1.5. DEFINICION E HISTORIA DE LAS HERRAMIENTAS CASE


 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 se define también como:

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 sigla genérica para una serie de programas y una filosofía de desarrollo de software que ayuda a automatizar el ciclo de vida de desarrollo de los sistemas.

Una innovación en la organización, un concepto avanzado en la evolución de tecnología con un potencial efecto profundo en la organización. Se puede ver al CASE como la unión de las herramientas automáticas de software y las metodologías de desarrollo de software formales.

 Historia de las Herramientas CASE

Las Herramientas CASE tienen su inicio con el simple procesador de palabras que fue usado para crear y manipular documentación. Los setentas vieron la introducción de técnicas gráficas y diagramas de flujo de estructuras de datos. Sobre este punto, el diseño y especificaciones en forma pictórica han sido extremadamente complejos y consumían mucho tiempo para realizar cambios.

La introducción de las herramientas CASE para ayudar en este proceso ha permitido que los diagramas puedan ser fácilmente creados y modificados, mejorando la calidad de los diseños de software. Los diccionarios de datos, un documento muy usado que mantiene los detalles de cada tipo de dato y los procesos dentro de un sistema, son el resultado directo de la llegada del diseño de flujo de datos y análisis estructural, hecho posible a través de las mejoras en las Herramientas CASE.

Pronto se reemplazaron los paquete gráficos por paquetes especializados que habilitan la edición, actualización e impresión en múltiples versiones de diseño. Eventualmente, las herramientas gráficas integradas con diccionarios de base de datos para producir poderosos diseños y  desarrollar herramientas, podrían sostener ciclos completos de diseño de documentos.

Como un paso final, la verificación de errores y generadores de casos de pruebas fueron incluidos para validar el diseño del software. Todos estos procesos pueden saberse integrados en una simple herramienta CASE que soporta todo el ciclo de desarrollo.


1.6. Clasificación de las herramientas CASE

Clasificación 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 (Intégrate CASE, CASE integrado):abarcan todas las fases del ciclo de vida del desarrollo de sistemas. Sollamadas 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 actividadesdesarrolladas 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 eimplantación.
4. Juegos de herramientas o Tools-Case, son el tipo más simple deherramientas CASE. Automatizan una fase dentro del ciclo de vida. Dentrode este grupo se encontrarían las herramientas de reingeniería, orientadasa la fase de mantenimiento