Avisar de contenido inadecuado

UNIDAD 2. FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE

{
}

El Software

         El software no es sólo código, sino también las especificaciones del diseño, los datos tratados y la documentación que permite el desarrollo, instalación y mantenimiento.

Estrictamente, se puede definir como:

         1) Instrucciones que, cuando se ejecutan, proporcionan la funcionalidad deseada.

         2) Estructuras de datos que facilitan a las instrucciones manipular adecuadamente la información.

         3) Documentos que describen el desarrollo, uso, instalación y mantenimiento de los programas.

 

Características del Software

  1. Es un elemento lógico, no físico, en contraposición con el hardware.
  2. Se desarrolla, no se fabrica.
  3. No se estropea, se deteriora, con el tiempo, el hardware se va estropeando por la presencia de componentes físicos el software, al carecer de ellos, se deteriora

 

Cualidades del Software

  • Correcto 
  • Confiable 
  • Robusto 
  • Eficiente 
  • Amigable 
  • Verificable 
  • Reusable 
  • Portable 
  • Interoperable 
  • Productivo 
  • A Tiempo 
  • Visible 
  • Coheso 
  • Desacoplado 
  • Comprensible 
  • Mantenible  

 

 

Ingeniería

Es la aplicación sistemática de conocimiento  científico para la creación y construcción de soluciones  rentables a problemas prácticos al servicio de la humanidad.

 

Ingeniería Del Software

La Ingeniería del Software es una disciplina que integra métodos, técnicas y herramientas para el desarrollo de software de computadora.

 

Sus elementos son:

  • Herramientas: Programas que mecanizan los métodos y las técnicas.
  • Métodos: Conjunto de tareas ordenadas para conseguir un fin. Los métodos se desarrollaron para cada una de las fases del desarrollo (análisis, diseño, implementación, etc.).
  • Técnicas: Ayudan con las dificultades para llevar a cabo lo que se indica en los métodos.

 

Objetivos de la ingeniería de software

  • mejorar la calidad de los productos de software
  • aumentar la productividad y trabajo de los ingenieros del software.
  • Facilitar el control del proceso de desarrollo de software.
  • Suministrar a los desarrolladores las bases para construir software de alta calidad en una forma eficiente.
  • Definir una disciplina que garantice la producción y el mantenimiento de los productos software desarrollados en el plazo fijado y dentro del costo estimado.

 

Visión General Del Proceso De La Ingeniería Del Software

El ciclo de vida del software se divide en varias fases desde que nace hasta que muere:

Planificación: Se identica el proyecto, se le da nombre y se dene el alcance.

Desarrollo: Se desarrolla e implanta.

Mantenimiento: Desde que se implanta hasta que se abandona.

  • Fase de planificación

Se realiza un inventario de todas las actividades que se realizan en una empresa y se agrupan por proyectos estableciendo una correspondencia entre éstos y las áreas organizativas.

También se discute la arquitectura hardware, la topología de red, el lenguaje de programación, etc., y se da una prioridad a cada proyecto.

Se concluye con un documento denominado Plan de Sistemas de Información.

Como anotación, se puede comentar que no se encuentra entre las normas ISO debido a que se realiza una vez cada períodos muy grandes de tiempo (una vez cada década o incluso más).

  • Fase de desarrollo

Se llevan a cabo las tareas hasta tener el proyecto funcionando. Conlleva varias actividades: análisis, diseño, construcción, pruebas e implantación.

  • Fase de mantenimiento

Su objetivo es la obtención de una nueva versión de un sistema debido a peticiones de cambio que los usuarios realizan por un problema detectado, o por la necesidad de una mejora del mismo, para acomodarlo a los cambios de su entorno externo o para conseguir una mayor adecuación a los requisitos, mayor eciencia, o simplemente recoger nuevas funcionalidades no expresadas en la fase de denición del sistema.

Comprende el mantenimiento:

  • Correctivo: Cambia el software para corregir los defectos.
  • Evolutivo: Introduce mejoras en el software.
  • Adaptativo: Modica el software para acomodarlo a los cambios de su entorno externo.
  • Perfectivo: Lleva al software más allá de sus requisitos funcionales originales.

 

Ciclo De Vida Del Software

Un modelo de ciclo de vida define el estado de las fases a través de las cuales se mueve un proyecto de desarrollo de software.

Fases del ciclo de vida:

Fase I - Requerimientos

Elaborar una especificación completa y validada de las funciones requeridas

 

Fase II - Análisis / Diseño

Análisis:

El propósito es conocer exactamente cómo trabaja el sistema actual, determinar y documentar qué debe hacer el sistema y recomendar las posibles soluciones.

Diseño:

El propósito de esta fase es desarrollar un diseño (cómo va a quedar) del sistema de información que satisfaga todos los requisitos documentados. Se determina qué va a hacer el sistema. Se identifican las entradas (Input), salidas (Output), archivos, programas, procedimientos y controles del sistema.

Actividades dentro de la fase de Análisis/Diseño.

· Analizar y Diseñar Proceso: Las operaciones y los requerimientos de funcionamiento definidos en la primera fase, se toman en cuenta con el propósito de determinar la forma en que debe funcionar el sistema.

· Analizar y Diseñar Los Datos: Con los requerimientos de información definidos en la fase I se debe organizar los distintos modelos de datos que nos ayuden a diseñar la base de datos que hagan falta para que el sistema funcione de acuerdo al modelo de funcionamiento.

· Diseñar y Organizar Los Componentes Físicos: Todo componente físico como (pantallas, base de datos) que hagan posible el funcionamiento del sistema de acuerdo al modelo de funcionamiento.

· Planificar El Desarrollo De Los Componentes Físicos: actividad en la cual planificamos la forma en que pueden ser construidos e implementados los componentes físicos de una forma rápida y productiva.

En esta fase de análisis / diseño puede incluirse una sub.-fase de evaluación de paquetes. Esta se pudiese realizar si en los requerimientos se estableció adquirir un paquete de aplicaciones en lugar de completar un diseño arquitectónico.

 

Fase III – Construcción

Dentro de esta fase de construcción existen actividades separadas en cinco sub.-fases: 
• Desarrollo de infraestructura
Durante esta fase se desarrollará y organizará la infraestructura que permita cumplir las tareas de construcción en la forma más productiva posible.
• Adaptación de paquete
Uno de los objetivos centrales de esta subfase es conocer al máximo detalle posible el funcionamiento del paquete, este asegurará que el paquete será utilizado con el máximo provecho, tanto desde el punto de vista del negocio, como de la utilización de recursos. Cada componente del paquete será revisado en forma exhaustiva por el equipo Analista – Usuario, con el fin de conocer y comprender todos los aspectos del paquete.
• Desarrollo de unidades de diseño interactivas
Las unidades de diseño interactivas, son procedimientos que se cumple o se ejecutan a través de un dialogo usuario – sistema.
Las actividades de esta subfase tienen como objetivo central:
• Especificar en detalle las tareas que debe cumplir la unidad de diseño
• Desarrollar componentes
• Realizar las pruebas unitarias y las pruebas de integración a nivel de la unidad de diseño.
• Desarrollo de unidades de diseño batch
En esta sub.-fase se preparan especificaciones hechas utilizando una combinación de técnicas como flujo gramas, diagramas de estructuras, tablas de decisiones etc. Cualquiera que se utilice será útil para que la especificación sea clara y se logre el propósito de que el programador comprenda y pueda programar y probar los programas correspondientes.
• Desarrollo de unidades de diseño manuales
Las actividades de esta subfase tienen como objetivo central desarrollar todos los procedimientos administrativos que rodearán y gobernarán la utilización de los componentes computarizados desarrollados en la fase de diseño detallado y construcción.

 

Fase IV – Pruebas

Esta fase, da inicio luego de que las diferentes unidades de diseño han sido desarrolladas y probadas por separado. Durante su desarrollo, el sistema se emplea de forma experimental para asegurar que el software no falle, es decir que funcione deacuerdo a sus especificaciones y a la manera que los usuarios esperan que lo haga, y de esta forma poder detectar cualquier anomalía, antes de que el sistema sea puesto en marcha y se dependa de el. Para evaluar el desenvolvimiento del sistema, en esta fase se llevan a cabo varios niveles de prueba:

• Funcional: Prueba desde el punto de vista de los requerimientos funcionales.

• De Sistema: Prueba desde el punto de vista de los niveles de calidad del sistema y de desempeño.

• De Integración: Prueba de interfaces.

• De Aceptación Técnica: Prueba de manejo de condiciones extremas.

Si el Sistema cumple de forma satisfactoria con estos niveles mencionados anteriormente, se procede a realizar la carga de los archivos, base de datos y tablas del nuevo sistema, para de esta forma dar inicio al proceso de aceptación final, durante el cual, el sistema comenzará a funcionar bajo la responsabilidad del departamento de operaciones y del usuario, por un lapso determinado de tiempo llamado Periodo de Aceptación.

Finalizado el Periodo de Aceptación, se le dará al sistema la aprobación final, para que pase a ser el sistema oficial.

 

Fase V - Producción / Mantenimiento

“Una vez que un sistema pasa a formar parte de la vida diaria de la empresa o institucion, cada programa, cada procedimiento y cada estructura de datos se convierte en una pieza del negocio que, como tal, deberá funcionar en forma constante, exacta y confiable. L a operación del negocio ahora dependerá del funcionamiento del sistema, por lo que las tareas de mantenimiento cobran vital importancia.

Durante la fase de mantenimiento, se ponen en práctica todas las políticas y los procedimientos destinados a garantizar la operación continúa de los de los sistemas y a asegurar su uso efectivo, con el fin, de que éstos se constituyan en una verdadera herramienta de apoyo al logro de los objetivos estratégicos de la empresa

 

Metodología Del Desarrollo Software

Modelo En Cascada:

Éste toma las actividades fundamentales del proceso de especificación, desarrollo, validación y evolución y las representa como fases separadas del proceso.

El modelo en cascada consta de las siguientes fases:

1. Definición de los requisitos: Los servicios, restricciones y objetivos son establecidos con los usuarios del sistema. Se busca hacer esta definición en detalle.

2. Diseño de software: Se particiona el sistema en sistemas de software o hardware. Se establece la arquitectura total del sistema. Se identifican  y describen las abstracciones y relaciones de los componentes del sistema.

3. Implementación y pruebas unitarias: Construcción de los módulos y unidades de software. Se realizan pruebas de cada unidad.

4. Integración y pruebas del sistema: Se integran todas las unidades. Se prueban en conjunto. Se entrega el conjunto probado al cliente.

5. Operación y mantenimiento: Generalmente es la fase más larga. El sistema es puesto en marcha y se realiza la corrección de errores descubiertos. Se realizan mejoras de implementación. Se identifican nuevos requisitos.

Una fase no comienza hasta que termine la fase anterior y generalmente se incluye la corrección de los problemas encontrados en fases previas.

 TAGS:

Desventajas

En la vida real, un proyecto rara vez sigue una secuencia lineal, esto crea una mala implementación del modelo, lo cual hace que lo lleve al fracaso.

El proceso de creación del software tarda mucho tiempo ya que debe pasar por el proceso de prueba y hasta que el software no esté completo no se opera. Esto es la base para que funcione bien.

Cualquier error de diseño detectado en la etapa de prueba conduce necesariamente al rediseño y nueva programación del código afectado, aumentando los costos del desarrollo.

 

 

Modelo Evolutivo:

La idea detrás de este modelo es el desarrollo de una implantación del sistema inicial, exponerla a los comentarios del usuario, refinarla en N versiones hasta que se desarrolle el sistema adecuado. En la Figura se observa cómo las actividades concurrentes: especificación, desarrollo y validación, se realizan durante el desarrollo de las versiones hasta llegar al producto final.

 TAGS:


Ventaja: es que es ideal para sistemas que no tiene bien definidos los requerimientos, es decir, para la mayoría de los sistemas que se desarrollan. El cliente desde el principio tiene una idea de los requerimientos de su sistema, pero no están claros hasta el último detalle. Aún así podemos basarnos en lo ya entendido (cliente y desarrollador), trabajar con esta información, y mientras se vayan creando prototipos, el cliente detallará sus especificaciones.

Desventaja: es que es difícil distinguirlo del proceso "codifica y corrige", pues en cierta medida son parecidos, la diferencia está que en la práctica se requiere que al construir el prototipo se aplique el análisis y el diseño pero sólo a una parte de los requerimientos ya entendidos, que se documente y se codifique, lográndose con todo esto, un poco de disciplina heredada del modelo en cascada, de esta manera, la desventaja no lo es tanto. La característica de este modelo es que está enfocado a la producción de prototipos.

 


Modelo Incremental:

Es una forma de reducir la repetición del trabajo en el proceso de desarrollo y dar oportunidad de retrasar la toma de decisiones en los requisitos hasta adquirir experiencia con el sistema. Es una combinación del Modelo de Cascada y Modelo Evolutivo.

Reduce el rehacer trabajo durante el proceso de desarrollo y da oportunidad para retrasar las decisiones hasta tener experiencia en el sistema.

Durante el desarrollo de cada incremento se puede utilizar el modelo de cascada o evolutivo, dependiendo del conocimiento que se tenga sobre los requisitos a implementar. Si se tiene un buen conocimiento, se puede optar por cascada, si es dudoso, evolutivo.

 TAGS:

 

Modelo Espiral:

El modelo en espiral fue desarrollado por Boehm, quien lo describe así:

El modelo de desarrollo en espiral es un generador de modelo de proceso guiado por el riesgo que se emplea para conducir sistemas intensivos de ingeniería de software concurrente y a la vez con muchos usuarios.

 

Características

  • Un enfoque cíclico para el crecimiento incremental del grado de definición e implementación de un sistema, mientras que disminuye su grado de riesgo.
  • Un conjunto de puntos de fijación para asegurar el compromiso del usuario con soluciones de sistema que sean factibles y mutuamente satisfactorias.

Principios básicos:

  • Decidir qué problema se quiere resolver antes de empezar a resolverlo.
  • Examinar tus múltiples alternativas de acción y elegir una de las más convenientes.
  • Evaluar qué tienes hecho y qué tienes que haber aprendido después de hacer algo.
  • No ser tan ingenuo para pensar que el sistema que estás construyendo será "EL" sistema que el cliente necesita.
  • Conocer los niveles de riesgo, que tendrás que tolerar.

 

Funcionamiento del modelo Espiral

 TAGS:

 

Determinar o fijar objetivos

  • Fijar también los productos definidos a obtener: requerimientos, especificación, manual de usuario.
  • Fijar las restricciones.
  • Identificación de riesgos del proyecto y estrategias alternativas para evitarlos.
  • Hay una cosa que solo se hace una vez: planificación inicial o previa.

 

Análisis del riesgo

Se estudian todos los riesgos potenciales y se seleccionan una o varias alternativas propuestas para reducir o eliminar los riesgos.

Desarrollar, verificar y validar (probar)

  • Tareas de la actividad propia y de prueba.
  • Análisis de alternativas e identificación resolución de riesgos.

Planificar

Revisamos todo lo hecho, evaluándolo, y con ello decidimos si continuamos con las fases siguientes y planificamos la próxima actividad.

Ventajas

  • El análisis del riesgo se hace de forma explícita y clara. Une los mejores elementos de los restantes modelos.
  • Reduce riesgos del proyecto.
  • Incorpora objetivos de calidad.
  • Integra el desarrollo con el mantenimiento, etc.
  • Además es posible tener en cuenta mejoras y nuevos requerimientos sin romper con la metodología, ya que este ciclo de vida no es rígido ni estático.

Desventajas

  • Genera mucho tiempo en el desarrollo del sistema
  • Modelo costoso
  • Requiere experiencia en la identificación de riesgos

 

{
}
{
}

Deja tu comentario UNIDAD 2. FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE

Identifícate en OboLog, o crea tu blog gratis si aún no estás registrado.

Avatar de usuario Tu nombre