ESCUELA SUPERIOR POLITÉCNICA AGROPECUARIA DE MANABÍ
MANUEL FÉLIX LÓPEZ
CARRERA INFORMÁTICA
SEMESTRE SEPTIMO PERIODO OCT./2014-MAR./2015
INGENIERIA DE SOFTWARE
TEMA 1:
METODOLOGÍAS DE
DESARROLLO DE SOFTWARE:
Metodologías Tradicionales.
AUTORA:
JENNIFER V. LÓPEZ ÁLAVA
FACILITADOR:
ING. HIRAIDA SANTANA
CALCETA, 27 OCTUBRE 2014
INTRODUCCIÓN
En este
capítulo se dará a conocer las metodologías tradicionales tales como la modelo
cascada, cascada en V, incremental, proceso evolutivo del que se especifican
los modelos de prototipos y espiral, el modelo concurrente, el desarrollo
basado en componentes, el de métodos formales y el orientado a aspectos.
METODOLOGÍAS
TRADICIONALES.
MODELO DE LA CASCADA
El
modelo de la cascada, a veces llamado ciclo de vida clásico, sugiere un enfoque
sistemático y secuencial para el desarrollo del software, que comienza con la
especificación de los requerimientos por parte del cliente y avanza a través de
planeación, modelado, construcción y despliegue, para concluir con el apoyo del
software terminado.
Una
variante de la representación del modelo de la cascada se denomina modelo en V,
donde se aprecia la relación entre las acciones para el aseguramiento de la
calidad y aquellas asociadas con la comunicación, modelado y construcción temprana.
A medida que el equipo de software avanza hacia abajo desde el lado izquierdo de
la V, los requerimientos básicos del problema mejoran hacia representaciones
técnicas cada vez más detalladas del problema y de su solución. Una vez que se
ha generado el código, el equipo sube por el lado derecho de la V, y en esencia
ejecuta una serie de pruebas (acciones para asegurar la calidad) que validan
cada uno de los modelos creados cuando el equipo fue hacia abajo por el lado
izquierdo. En realidad, no hay diferencias fundamentales entre el ciclo de vida
clásico y el modelo en V. Este último proporciona una forma de visualizar el
modo de aplicación de las acciones de verificación y validación al trabajo de
ingeniería inicial.
El
modelo de la cascada es el paradigma más antiguo de la ingeniería de software.
MODELOS DE PROCESO INCREMENTAL
El
modelo incremental combina elementos de los flujos de proceso lineal y paralelo.
El modelo incremental aplica secuencias lineales en forma escalonada a medida
que avanza el calendario de actividades. Cada secuencia lineal produce “incrementos”
de software susceptibles de entregarse de manera parecida a los incrementos
producidos en un flujo de proceso evolutivo.
Cuando
se utiliza un modelo incremental, es frecuente que el primer incremento sea el
producto fundamental. Es decir, se abordan los requerimientos básicos, pero no
se proporcionan muchas características suplementarias (algunas conocidas y
otras no). El cliente usa el producto fundamental (o lo somete a una evaluación
detallada). Como resultado del uso y/o evaluación, se desarrolla un plan para
el incremento que sigue. El plan incluye la modificación del producto fundamental
para cumplir mejor las necesidades del cliente, así como la entrega de
características adicionales y más funcionalidad. Este proceso se repite después
de entregar cada incremento, hasta terminar el producto final.
El
modelo de proceso incremental se centra en que en cada incremento se entrega un
producto que ya opera. Los primeros incrementos son versiones desnudas del
producto final, pero proporcionan capacidad que sirve al usuario y también le
dan una plataforma de evaluación. El desarrollo incremental es útil en
particular cuando no se dispone de personal para la implementación completa del
proyecto en el plazo establecido por el negocio. Los primeros incrementos se
desarrollan con pocos trabajadores. Si el producto básico es bien recibido,
entonces se agrega más personal (si se requiere) para que labore en el
siguiente incremento. Además, los incrementos se planean para administrar
riesgos técnicos.
MODELOS DE PROCESO EVOLUTIVO
Los
modelos evolutivos son iterativos. Se caracterizan por la manera en la que
permiten desarrollar versiones cada vez más completas del software.
Hacer prototipos. Es
frecuente que un cliente defina un conjunto de objetivos generales para el
software, pero que no identifique los requerimientos detallados para las
funciones y características.
En
otros casos, el desarrollador tal vez no esté seguro de la eficiencia de un
algoritmo, de la adaptabilidad de un sistema operativo o de la forma que debe
adoptar la interacción entre el humano y la máquina. En estas situaciones, y
muchas otras, el paradigma de hacer prototipos tal vez ofrezca el mejor
enfoque. Aunque es posible hacer prototipos como un modelo de proceso aislado,
es más común usarlo como una técnica que puede implementarse en el contexto de
cualquiera de los modelos de proceso descritos en este capítulo. Sin importar
la manera en la que se aplique, el paradigma de hacer prototipos le ayudará a
usted y a otros participantes a mejorar la comprensión de lo que hay que
elaborar cuando los requerimientos no están claros.
Aunque
puede haber problemas, hacer prototipos es un paradigma eficaz para la
ingeniería de software. La clave es definir desde el principio las reglas del
juego; es decir, todos los participantes deben estar de acuerdo en que el
prototipo sirva como el mecanismo para definir los requerimientos. Después se
descartará (al menos en parte) y se hará la ingeniería del software real con la
mirada puesta en la calidad.
El modelo espiral. El
modelo de desarrollo espiral es un generador de modelo de proceso impulsado por
el riesgo, que se usa para guiar la ingeniería concurrente con participantes
múltiples de sistemas intensivos en software.
Tiene
dos características distintivas principales. La primera es el enfoque cíclico
para el crecimiento incremental del grado de definición de un sistema y su
implementación, mientras que disminuye su grado de riesgo. La otra es un
conjunto de puntos de referencia de anclaje puntual para asegurar el compromiso
del participante con soluciones factibles y mutuamente satisfactorias.
El
primer circuito alrededor de la espiral da como resultado el desarrollo de una
especificación del producto; las vueltas sucesivas se usan para desarrollar un
prototipo y, luego, versiones cada vez más sofisticadas del software. Cada paso
por la región de planeación da como resultado ajustes en el plan del proyecto.
El costo y la programación de actividades se ajustan con base en la
retroalimentación obtenida del cliente después de la entrega. Además, el
gerente del proyecto ajusta el número planeado de iteraciones que se requieren
para terminar el software.
El
modelo espiral es un enfoque realista para el desarrollo de sistemas y de
software a gran escala. Como el software evoluciona a medida que el proceso
avanza, el desarrollador y cliente comprenden y reaccionan mejor ante los
riesgos en cada nivel de evolución. El modelo espiral usa los prototipos como
mecanismo de reducción de riesgos, pero, más importante, permite aplicar el
enfoque de hacer prototipos en cualquier etapa de la evolución del producto.
Mantiene el enfoque de escalón sistemático sugerido por el ciclo de vida
clásico, pero lo incorpora en una estructura iterativa que refleja al mundo
real en una forma más realista. El modelo espiral demanda una consideración
directa de los riesgos técnicos en todas las etapas del proyecto y, si se
aplica de manera apropiada, debe reducir los riesgos antes de que se vuelvan un
problema.
MODELOS CONCURRENTES
El
modelo de desarrollo concurrente, en ocasiones llamado ingeniería concurrente,
permite que un equipo de software represente elementos iterativos y
concurrentes de cualquiera de los modelos de proceso. El modelado concurrente
define una serie de eventos que desencadenan transiciones de un estado a otro
para cada una de las actividades, acciones o tareas de la ingeniería de
software.
El
modelado concurrente es aplicable a todos los tipos de desarrollo de software y
proporciona un panorama apropiado del estado actual del proyecto. En lugar de
confinar las actividades, acciones y tareas de la ingeniería de software a una
secuencia de eventos, define una red del proceso. Cada actividad, acción o tarea
de la red existe simultáneamente con otras actividades, acciones o tareas. Los
eventos generados en cierto punto de la red del proceso desencadenan transiciones
entre los estados.
DESARROLLO BASADO EN COMPONENTES
Los
componentes comerciales de software general (COTS, por sus siglas en inglés),
desarrollados por vendedores que los ofrecen como productos, brindan una
funcionalidad que se persigue con interfaces bien definidas que permiten que el
componente se integre en el software que se va a construir. El modelo de
desarrollo basado en componentes incorpora muchas de las características del
modelo espiral. Es de naturaleza evolutiva y demanda un enfoque iterativo para
la creación de software. Sin embargo, el modelo de desarrollo basado en
componentes construye aplicaciones a partir de fragmentos de software
prefabricados.
Las
actividades de modelado y construcción comienzan con la identificación de
candidatos de componentes. Éstos pueden diseñarse como módulos de software
convencional o clases orientadas a objetos o paquetes de clases. Sin importar
la tecnología usada para crear los componentes, el modelo de desarrollo basado
en componentes incorpora las etapas siguientes (se implementan con el uso de un
enfoque evolutivo):
- Se investigan y evalúan, para el tipo de aplicación de que se trate, productos disponibles basados en componentes.
- Se consideran los aspectos de integración de los componentes.
- Se diseña una arquitectura del software para que reciba los componentes.
- Se integran los componentes en la arquitectura.
- Se efectúan pruebas exhaustivas para asegurar la funcionalidad apropiada.
El
modelo del desarrollo basado en componentes lleva a la reutilización del
software, y eso da a los ingenieros de software varios beneficios en cuanto a
la mensurabilidad. Si la reutilización de componentes se vuelve parte de la
cultura, el equipo de ingeniería de software tiene la posibilidad tanto de
reducir el ciclo de tiempo del desarrollo como el costo del proyecto.
EL MODELO DE MÉTODOS FORMALES
El
modelo de métodos formales agrupa actividades que llevan a la especificación
matemática formal del software de cómputo. Los métodos formales permiten
especificar, desarrollar y verificar un sistema basado en computadora por medio
del empleo de una notación matemática rigurosa. Ciertas organizaciones de
desarrollo de software aplican una variante de este enfoque, que se denomina
ingeniería de software de quirófano.
Cuando
durante el desarrollo se usan métodos formales, se obtiene un mecanismo para
eliminar muchos de los problemas difíciles de vencer con otros paradigmas de la
ingeniería de software. Lo ambiguo, incompleto e inconsistente se descubre y
corrige con más facilidad, no a través de una revisión ad hoc sino con la
aplicación de análisis matemático. Si durante el diseño se emplean métodos
formales, éstos sirven como base para la verificación del programa, y así
permiten descubrir y corregir errores que de otro modo no serían detectados. Aunque
el modelo de los métodos formales no es el más seguido, promete un software
libre de defectos.
DESARROLLO DE SOFTWARE ORIENTADO A ASPECTOS
El
desarrollo de software orientado a aspectos (DSOA), conocido también como
programación orientada a aspectos (POA), es un paradigma de ingeniería de
software relativamente nuevo que proporciona un proceso y enfoque metodológico
para definir, especificar, diseñar y construir aspectos: “mecanismos más allá
de subrutinas y herencia para localizar la expresión de una preocupación
global”. Aún no madura un proceso distinto orientado a aspectos. Sin embargo,
es probable que un proceso así adopte características tanto de los modelos de
proceso evolutivo como concurrente. El modelo evolutivo es apropiado en tanto
los aspectos se identifican y después se construyen.
La
naturaleza paralela del desarrollo concurrente es esencial porque la ingeniería
de aspectos se hace en forma independiente de los componentes de software
localizados; aun así, los aspectos tienen un efecto directo sobre éstos. De
esta forma, es esencial disponer de comunicación asincrónica entre las
actividades de proceso del software aplicadas a la ingeniería, y la construcción
de los aspectos y componentes.
CIERRE
El
modelo de la cascada, propone un enfoque sistemático y secuencial para el
desarrollo del software, que comienza con la especificación de los
requerimientos por parte del cliente y avanza a través de planeación, modelado,
construcción y despliegue, para concluir con el apoyo del software terminado. El
modelo en V tiene la relación entre las acciones para el aseguramiento de la
calidad y aquellas asociadas con la comunicación, modelado y construcción temprana.
El modelo incremental aplica secuencias lineales en forma escalonada a medida
que avanza el calendario de actividades cada secuencia lineal produce incrementos
susceptibles de entregarse de manera parecida a los incrementos producidos en
un flujo de proceso evolutivo. El modelo de desarrollo espiral es un generador
de modelo de proceso impulsado por el riesgo, que se usa para guiar la
ingeniería concurrente con participantes múltiples de sistemas intensivos en
software tiene dos características distintivas principales que son el enfoque
cíclico para el crecimiento incremental del grado de definición de un sistema y
su implementación, mientras que disminuye su grado de riesgo. El modelado
concurrente es aplicable a todos los tipos de desarrollo de software y
proporciona un panorama apropiado del estado actual del proyecto. El modelo de
desarrollo basado en componentes es de naturaleza evolutiva y demanda un
enfoque iterativo para la creación de software sin embargo, construye
aplicaciones a partir de fragmentos de software prefabricados. Los métodos
formales permiten especificar, desarrollar y verificar un sistema basado en
computadora por medio del empleo de una notación matemática rigurosa. El
desarrollo de software orientado a aspectos, proporciona un proceso y enfoque
metodológico para definir, especificar, diseñar y construir aspectos.
BIBLIOGRÁFIA
Pressman, R. 2010. Ingeniería del Software Un Enfoque Práctico. 7ma ed. University of Connecticut. McGraw-Hill Interamericana Editores, S.A.