lunes, 26 de septiembre de 2011

CAPAS DE LA INGENIERÍA DE SOFTWARE

El enfoque de ingeniería del software cuenta con un compromiso organizacional con la calidad porque no es posible incorporar la ingeniería del software en una organización que no está centrada en conseguir calidad.

La ingeniería del software es una tecnología multicapa. Se puede ver como un conjunto de componentes estratificados, que reposan sobre ese enfoque de calidad.


Estos componentes que forman parte de la ingenieria del software son:


  • Procesos: un marco de trabajo que ayuda al jefe de proyecto a controlar la gestión del proyecto y las actividades de ingeniería.
  • Métodos: las actividades tecnicas requeridas para la creacion de productos de trabajo.
  • Herramientas: la ayuda automatizada para los procesos y métodos.

Procesos

El fundamento de la ingeniería del software es la capa de proceso. El proceso define un marco de trabajo para un conjunto de áreas clave de proceso que se deben establecer para la entrega efectiva de la tecnología de la ingeniería del software.

La capa de proceso define el proceso que se usará para construir el software y las actividades y tareas que un jefe de proyecto tiene que gestionar. Por lo tanto, las áreas claves del proceso forman la base del control de gestión de proyectos del software y establecen el contexto en el que se aplican los métodos técnicos, se obtienen productos de trabajo (modelos, documentos, datos, informes, formularios, etc.), se establecen hitos, se asegura la calidad y el cambio se gestiona adecuadamente. El proceso de la ingeniería del software es la unión que mantiene juntas las capas de tecnologías y que permite un desarrollo racional y oportuno de la ingeniería del software.

La capa de proceso:

Permite al jefe de proyecto planificar una ejecución exitosa del proyecto. La capa de proceso proporciona una hoja de ruta del trabajo de ingeniería del software. Ayuda al jefe de proyecto en la creación de un plan de trabajo viable que aísle tareas de trabajo, responsabilidades, los productos de trabajo producidos, y los mecanismos usados para asegurar calidad en dichos productos de trabajos. Permite la ejecución de proyectos software dentro de un marco de tiempo razonable.

Proporciona a las personas involucradas el contexto de su trabajo. La capa de proceso guía a las personas involucradas proporcionando el marco de trabajo en el que entienden el contexto de las tareas a realizar.
Se pueden ver todas las actividades, incluyendo las actividades técnicas, como parte del proceso. Además, cualquier recurso, incluyendo herramientas usadas para construir el software también encajan en el proceso. La capa de proceso es, por lo tanto, el fundamento de la ingeniería del software y da soporte a las capas de métodos y herramientas.

Importancia de un proceso

Un proceso es útil porque proporciona claridad en cómo ha de realizarse el trabajo. Cualquier conjunto de actividades humanas complejas se puede convertir en caótico si no hay guías para que las personas puedan realizar las actividades. Un proceso definido responde a las siguientes cuestiones:
‐¿Quién se comunica con quién?
‐¿Cómo se coordinan las actividades interdependientes?
‐¿Quién es responsable de qué trabajo?
‐¿Quién produce qué productos de trabajo, y cómo se evalúan?


Un proceso:
‐Identifica todas las actividades y tareas de la ingeniería del software
‐Define el flujo de trabajo entre las actividades y tareas
‐Identifica los productos de trabajo que se producen
‐Especifica los puntos de control de calidad requeridos

Algunas personas ven el desarrollo de software con una perspectiva que requiere habilidades artísticas y de artesanía y que es inherentemente caótico. Se resisten a la idea de usar un proceso definido porque lo ven como incómodo y burocrático y por lo tanto dificulta la creatividad.

Aunque no hay duda de que el desarrollo de software requiere creatividad, la mayoría del software de calidad en la industria se desarrolla por el esfuerzo coordinado de más de una persona. Para cualquier esfuerzo de equipo, el control coordinado es mejor alternativa que la anarquía. La hoja de ruta proporcionada por un proceso es útil para las personas que construyen productos software o que gestionan proyectos.

Todos los enfoques de la construcción de software tienen un proceso, pero en muchos casos, son ad hoc, invisibles y caóticos. Una buena ingeniería de software hace que el proceso de software sea más visible, predecible y más útil para aquellos que construyen software.

La capa de proceso abarca las siguientes cuestiones:

‐El marco de trabajo de proceso común (CPF)
‐Actividades y tareas de la ingeniería de software
‐Puntos de control de calidad
‐Definiciones de productos de trabajo
‐Gestión de proyectos
‐Aseguramiento de la calidad del software
‐Gestión de la configuración del software
‐Monitorización de proyectos
‐Medidas y métricas

Métodos

La capa de proceso identifica las tareas de ingeniería que se deben realizar para construir software de alta calidad.

La siguiente capa, la capa de métodos se centra en las actividades técnicas que se deben realizar para conseguir las tareas de ingeniería. Proporciona el “cómo” y cubre las actividades de ingeniería fundamentales.
Los métodos abarcan una gran gama de tareas que incluyen análisis de requisitos, diseño, construcción de programas, pruebas y mantenimiento. Los métodos de la ingeniería del software dependen de un conjunto de principios básicos que gobiernan cada una de las áreas de la tecnología e incluyen actividades de modelado y otras técnicas descriptivas.

La construcción de software implica una amplia colección de actividades técnicas. La capa de métodos contiene los métodos definidos para realizar esas actividades de forma eficiente. Se centra en cómo se han de realizar las actividades técnicas. Los personas involucradas usan los métodos para realizar las actividades de ingeniería fundamentales necesarias para construir el software.

Las actividades técnicas fundamentales para construir software son:

‐Análisis: el análisis es el fundamento de todos los trabajos de ingeniería que siguen. Durante el análisis, se crea el modelo de lo que es requerido por el software.
‐Diseño: las actividades de diseño siguen el análisis y traducen el modelo del análisis en cómo el producto proporciona estas funciones por medio del software.
‐Codificación: una vez que el diseño es completo, la codificación traduce el modelo de diseño en una forma ejecutable.
‐Pruebas: el proceso de pruebas ayuda a destapar errores en el código y el diseño subyacente.

También se realizan actividades de soporte: revisiones técnicas y soporte de métricas.
Para varias actividades de proceso, la capa de métodos contiene el correspondiente conjunto de métodos técnicos para usar. Esto abarca un conjunto de reglas, los modos de representación gráficos o basados en texto, y las guías relacionadas para la evaluación de la calidad de la información representada.
Para definir la capa de métodos, es necesario seleccionar un método adecuado de un amplio rango de métodos disponibles.

Consideramos las actividades de análisis y diseño. Hay una amplia variedad de métodos disponibles. El equipo de proyecto debería seleccionar el método que es más apropiado para el problema, el entorno de desarrollo y el conocimiento y experiencia de los miembros del equipo.


Herramientas

La capa de herramientas proporciona soporte a las capas de proceso y métodos centrándose en el significado de la automatización de algunas de las actividades manuales. Las herramientas se pueden utilizar para automatizar las siguientes actividades:

‐Actividades de gestión de proyectos
‐Métodos técnicos usados en la ingeniería del software
‐Soporte de sistemas general
‐Marcos de trabajo para otras herramientas

La automatización ayuda a eliminar el tedio del trabajo, reduce las posibilidades de errores, y hace más fácil usar buenas prácticas de ingeniería del software. Cuando se usan herramientas, la documentación se convierte en una parte integral del trabajo hecho, en vez de ser una actividad adicional. De ahí que la documentación no se tenga que realizar como actividad adicional. Las herramientas se pueden utilizar para realizar actividades de gestión de proyecto así como para actividades técnicas.

Existen una gran variedad de herramientas para múltiples actividades. Entre ellas se pueden destacar las siguientes:

‐Herramientas de gestión de proyectos
‐Herramientas de control de cambios
‐Herramientas de análisis y diseño
‐Herramientas de generación de código
‐Herramientas de pruebas
‐Herramientas de reingeniería
‐Herramientas de documentación
‐Herramientas de prototipos

Estas herramientas soportan las capas de proceso y de métodos en varias actividades.

Referencia:
Ingeniería de Software: Métodos y Ciclos de Vida.
Ministerio de Industria, Turismo y Comercio.