martes, 19 de octubre de 2010

El Proceso del Software


-- Capas:

Pressman caracteriza la Ingeniería de Software como “una tecnología multicapa”.

Dichas capas se describen a continuación:

1.  Cualquier disciplina de ingeniería (incluida la ingeniería del software) debe descansar sobre un esfuerzo de organización de calidad. La gestión total de la calidad y las filosofías similares fomentan una cultura continua de mejoras de procesos que conduce al desarrollo de enfoques cada vez más robustos para la ingeniería del software.

2.    El fundamento de la ingeniería de software es la capa proceso. El proceso define un marco de trabajo para  un conjunto de áreas clave, las cuales forman  la base del control de gestión  de proyectos de software y establecen el contexto en el cual: se aplican los métodos técnicos, se producen resultados de trabajo, se establecen hitos, se asegura la calidad y el cambio se gestiona adecuadamente.

3.    Los métodos de la ingeniería de software indican cómo construir técnicamente el software.  Los métodos abarcan una gran gama de tareas que incluyen análisis de requisitos, diseño, construcción de programas, pruebas y mantenimiento. Estos métodos dependen de un conjunto de principios básicos que gobiernan cada  área de la tecnología e incluyen actividades de modelado y otras técnicas descriptivas.

4.    Las herramientas de la ingeniería del software proporcionan un soporte automático o semi-automático para el proceso y los métodos, a estas herramientas se les llama herramientas CASE (Computer-Aided Software Engineering).

Dado lo anterior, el objetivo de la ingeniería de software es lograr productos de software de calidad (tanto en su forma final como durante su elaboración), mediante un proceso apoyado por métodos y herramientas.



-- Fases Genéricas:

El trabajo que se asocia a la ingeniería del software se puede dividir en tres fases genéricas, con independencia del área de aplicación, tamaño o complejidad del proyecto. Cada fase se encuentra con una o varias cuestiones, dichas fases son las siguientes:

Definición: Esta fase se centra sobre el ¿QUÉ? Es decir, durante la definición, el que desarrolla el software intenta identificar:
1.    ¿Qué información ha de ser procesada?
2.    ¿Qué función y rendimiento se desea?
3.    ¿Qué comportamiento del sistema?
4.    ¿Qué interfaces van a ser establecidas?
5.    ¿qué restricciones de diseño existen?
6.    ¿Qué criterios de validación se necesitan para definir un sistema correcto?

Por tanto, han de identificarse los requisitos clave del sistema y del software. Aunque los métodos aplicados durante la fase de definición variarán dependiendo del paradigma de ingeniería del software (o combinación de paradigmas) que se aplique, de alguna manera tendrán lugar tres tareas principales: ingeniería de sistemas o de información, planificación del proyecto de software y análisis de los requisitos.

Desarrollo: Esta fase se centra en el ¿CÓMO? Es decir, durante el desarrollo un ingeniero del software intenta definir:

1.    ¿Cómo han de diseñarse las estructuras de datos?
2.    ¿Cómo ha de implementarse la función dentro de una arquitectura de software?
3.    ¿Cómo han de implementarse los detalles procedimentales?
4.    ¿Cómo han de caracterizarse interfaces?
5.    ¿Cómo ha de traducirse el diseño en un lenguaje de programación (o lenguaje no procedimental)?
6.    ¿Cómo ha de realizarse la prueba?

Los métodos aplicados durante la fase de desarrollo variarán, aunque las tres tareas específicas técnicas deberían ocurrir siempre: diseño del software, generación de código y prueba del software.

Mantenimiento: Esta fase se centra en el CAMBIO que va asociado a la corrección de errores, a las adaptaciones requeridas a medida que evoluciona el entorno del software y a cambios debidos a las mejoras producidas por los requisitos cambiantes del cliente. Durante la fase de mantenimiento se encuentran cuatro tipos de cambios:

1.    Corrección. Incluso llevando a cabo las mejores actividades de garantía de calidad, es muy probable que el cliente descubra los defectos en el software. El mantenimiento correctivo cambia el software para corregir los defectos.

2.    Adaptación. Con el paso del tiempo, es probable que cambie el entorno original (por ejemplo: CPU, el sistema operativo, las reglas de empresa, las características externas de productos) para el que se desarrolló el software. El mantenimiento adaptativo produce modificación en el software para acomodarlo a los cambios de su entorno externo.

3.    Mejora. Conforme se utilice el software, el cliente-usuario puede descubrir funciones adicionales que van a producir beneficios. El mantenimiento perfectivo lleva al software más allá de sus requisitos funcionales originales.

4.    Prevención. El software de computadora se deteriora debido al cambio, y por esto el mantenimiento preventivo también llamado reingeniería del software, se debe conducir a permitir que el software sirva para las necesidades de los usuarios finales. En esencia, el mantenimiento preventivo hace cambios en programas de computadora a fin de que se puedan corregir, adaptar y mejorar más fácilmente.

Además de estas actividades de mantenimiento, los usuarios de software requieren un mantenimiento continuo. Los asistentes técnicos a distancia, teléfonos de ayuda y sitios Web de aplicaciones específicas se implementan frecuentemente como parte de la fase de mantenimiento.


-- Actividades protectoras:

Las fases y los pasos relacionados descritos en nuestra visión genérica de la ingeniería del software se complementan con un número de actividades protectoras.

Entre las actividades típicas de esta categoría se incluyen:

1.    Seguimiento y control del proyecto de software.
2.    Revisiones técnicas formales.
3.    Garantía de calidad del software.
4.    Gestión de configuración del software.
5.    Preparación y producción de documentos.
6.    Gestión de reutilización.
7.    Mediciones.
8.    Gestión de riesgos.

Las actividades de protección se aplican a lo largo de todo el proceso del software.


-- Marco de Trabajo Común:

Un proceso de desarrollo software tiene como propósito la producción eficaz de un producto software que reúna los requisitos del cliente, se muestran en la siguiente figura:
 
Estas actividades son aplicables a todos los proyectos de software, con independencia del tamaño o complejidad.

No hay comentarios:

Publicar un comentario