Subido por Bryan Alonso

modelos de software 3er parcial

Anuncio
I. Metodologías de desarrollo de
software
El alumno elegirá la metodología
para desarrollar un sistema de
información
Tema I Metodologías de desarrollo de
software
Uno de los grandes problemas con los cuales
se enfrenta el Desarrollo de software es la
proliferación de modelos en una empresa, si la
madurez de la organización en materia de
sistemas no es mucha, se puede dar que exista
una metodología por cada equipo de
desarrollo.
Por ello es importante que una organización
defina el modelo de ciclo de vida que va a
emplear para desarrollar software.
Ingeniería e Ingeniería de Software.
La ingeniería se define como un “conjunto de
conocimientos y técnicas cuya aplicación permite la
utilización racional de los materiales y de los recursos
naturales, mediante invenciones, construcciones u otras
realizaciones provechosas para el hombre”
¿En que difiere la ingeniería de software de otros tipos
de ingeniería y en que es similar? Una propiedad que la
ingeniería de software comparte con las otras es la
necesidad de una descripción exhaustiva de lo que debe
producirse, un proceso llamado “análisis de
requerimientos”. Por otra parte, los proyectos de
software están sujetos a cambios frecuentes durante todo
el proceso de desarrollo.
La ingeniería de software es “la aplicación de un
enfoque sistemático, disciplinado y cuantificable
al desarrollo, operación (funcionamiento) y
mantenimiento del software, es decir, la
aplicación de ingeniería al software” (IEEE,
1993). Ingeniería del software es la aplicación
práctica del conocimiento científico en el diseño
y construcción de programas de computadora y
la documentación asociada requerida para
desarrollarlo, operarlo, y mantenerlo. Se conoce
también como desarrollo de software o
producción de software.
La ingeniería de software se puede dividir
en tres fases:
1. Fase de Definición: ¿Qué? Ingeniería de
sistemas, planificación del proyecto y
análisis de requisitos.
2. Fase de Desarrollo: ¿Cómo? Diseño,
construcción (programación) y prueba.
3. Fase de Mantenimiento: El cambio. Se
aplican fases anteriores sobre software
ya existente.
Modelo Lineal Secuencial o de Cascada
El modelo lineal secuencial para la
ingeniería de software sugiere un
enfoque sistemático, secuencial del
desarrollo de software que comienza en
un nivel de sistemas y progresa con el
análisis, diseño, codificación, pruebas y
mantenimiento.
La figura 1.1 muestra este modelo.
Figura 1.1 El modelo Lineal Secuencial
Ingeniería de sistemas/
información
Análisis
Diseño
Código
Prueba
Modelado según el ciclo de ingeniería convencional, el
modelo lineal secuencial, llamado algunas veces “ciclo de
vida básico” o “modelo en cascada” consta de las
siguientes actividades:
Ingeniería de sistemas: como el software siempre
forma parte de un sistema más grande, hay que
establecer los requisitos de todos los elementos del
sistema: hardware, bases de datos, personas, etc.
Análisis de los requisitos del software: para entender
la naturaleza del software a construir se debe
comprender el dominio de información del software,
así como la función requerida, comportamiento,
rendimiento e interconexión.
Diseño: el proceso de diseño traduce requisitos en
una representación del software que se pueda evaluar
por calidad antes de que comience la generación del
código.
Generación de código: El diseño se debe traducir en
una forma legible por la máquina, si el diseño se
realizó en forma detallada la generación de código se
realiza mecánicamente.
Pruebas: esta etapa se centra en los procesos lógicos
internos del software para la detección de errores y
asegurarse que la entrada definida produzca resultados
reales de acuerdo con los resultados requeridos.
Mantenimiento: el software indudablemente sufrirá
cambios después de ser entregado al cliente, ya sea
porque se encuentren errores, para acoplarse a
cambios de su entorno externo o porque el cliente
requiere mejoras funcionales o de rendimiento.
El modelo lineal es el paradigma más antiguo que existe
y el más extensamente utilizado en la ingeniería del
software. Sin embargo ha recibido muchas críticas
poniendo en duda su eficacia. Entre los problemas que
se encuentran algunas veces en este modelo se
encuentran:
1. Los proyectos reales rara vez siguen el modelo
secuencial que propone el modelo. Este modelo
omite la interacción, que en realidad se lleva a cabo.
2. A menudo es difícil que el cliente exponga
explícitamente todos los requisitos. Este modelo lo
requiere y se presenta siempre cierta incertidumbre
al comienzo de muchos proyectos.
3. El cliente debe tener paciencia. Esto es porque
una versión del trabajo realizado no estará
disponible hasta que el proyecto este avanzado,
propiciando esto un fracaso en las relaciones con
el cliente. Además de que encontrar errores
hasta que se revise el programa puede resultar
desastroso.
4. Los responsables del desarrollo del software
siempre se retrasan innecesariamente. Esto es
porque en el ciclo de vida clásico algunos
miembros del equipo del proyecto deben
esperar a otros miembros para completar tareas
dependientes.
Modelo de prototipos
El modelo de construcción de prototipos puede
ofrecer el mejor enfoque cuando:
• Un cliente a menudo define un conjunto de
objetivos generales para el software, pero no
identifica los requisitos detallados de entrada,
procesamiento, o salida.
• En otros casos, el responsable del desarrollo de
software puede o no estar seguro de la eficacia de
un algoritmo, de la capacidad de adaptación de un
sistema operativo, o de la forma en que debería
tomarse la interacción hombre-máquina.
Refinamiento
de requisitos
Diseño
rápido
Escuchar al
usuario/cliente
Construir/revisar
prototipo
Refinamiento
Pruebas
Aprobación u
observaciones
del usuario/cliente
Figura 1.2 El modelo de construcción de prototipos
El proceso de este modelo comienza con la
recolección de requisitos con un encuentro del
desarrollador con el cliente, definiendo los
objetivos globales para el software, identificando
los requisitos conocidos y las áreas del esquema en
donde es obligatoria más definición.
Posteriormente se genera un diseño rápido que se
centra en una representación de esos aspectos del
software que serán visibles para el usuario/cliente.
El diseño rápido lleva a la construcción de un
prototipo que es evaluado por el usuario/cliente y
lo utiliza para refinar los requisitos del software a
desarrollar.
Aunque el prototipo puede servir como una visión
idealizada del sistema, es un modelo que gusta mucho a
los clientes y desarrolladores, sin embargo, la
construcción de prototipos también puede ser
problemática por las razones siguientes:
1. Con la prisa de hacer que funcione, no se tiene en
cuenta la calidad del software global o la facilidad de
mantenimiento a largo plazo.
2. El cliente y el desarrollador se deben poner de
acuerdo en que el prototipo se construya para servir
como un mecanismo de definición de requisitos.
Entonces se descarta el prototipo (al menos en parte)
y se realiza la ingeniería del software con una visión
hacia la calidad y la facilidad de mantenimiento.
3. El desarrollador a menudo hace compromisos
de implementación para hacer que el prototipo
funciones rápidamente, utilizando un sistema
operativo o lenguaje de programación
inadecuado simplemente porque esta disponible
o porque es conocido.
Aunque pueden surgir problemas, la construcción
de prototipos puede ser un paradigma efectivo
para la ingeniería de software. La clave esta en
definir las reglas del juego al comienzo, es decir,
establecer que el prototipo se construirá sólo
como un mecanismo de definición de requisitos.
Modelo de desarrollo rápido de aplicaciones
Es un modelo de proceso del desarrollo del
software lineal secuencial que enfatiza un ciclo de
desarrollo extremadamente corto. Es una
adaptación de “alta velocidad” del modelo lineal
secuencial en el que se logra el desarrollo rápido,
utilizando un enfoque de construcción basado en
componentes. Permite al equipo de desarrollo
crear un “sistema completamente funcional”
dentro de periodos cortos de tiempo. Cuando se
utiliza principalmente para aplicaciones de
sistemas de información, el enfoque DRA
comprende las siguientes fases:
Modelado de gestión: El flujo de información entre las
funciones de gestión se modela de forma que responda a
las siguientes preguntas: ¿Qué información conduce el
proceso de gestión?, ¿Qué información se genera?, ¿Quién
la genera?, ¿A dónde va la información?, ¿Quién la
procesa?
Modelado de datos: La información se refina como un
conjunto de objetos de datos, se definen las características
de cada uno de los objetos y las relaciones entre estos
objetos.
Modelado del proceso: Se transforman los datos para
lograr el flujo de información necesario para implementar
una función de gestión. Las descripciones del proceso se
crean para añadir, modificar, suprimir o recuperar un objeto
de datos.
Generación de aplicaciones: El DRA asume la
utilización de técnicas de 4ª. Generación en lugar de
crear software con lenguajes de programación de 3ª.
Generación. Este modelo trabaja para volver a utilizar
componentes de programas ya existentes (cuando es
posible) o crear componentes reutilizables (cuando sea
necesario). En todos los casos se utilizan herramientas
automáticas para facilitar la construcción del software.
Pruebas y entrega: Como DRA enfatiza la reutilización,
ya se han comprobado muchos de los componentes de
los programas. Esto reduce el tiempo de pruebas, sin
embargo hay que probar todos los componentes
nuevos y se deben ejercitar todas las interfaces a
fondo.
Equipo no.3
Equipo no. 2
Equipo no. 1
Modelado
de gestión
Modelado de
gestión
Modelado de
gestión
Modelado
de datos
Modelado de
datos
Modelado de
datos
Modelado
de procesos
Modelado de
procesos
Modelado de
procesos
Generación
de
aplicaciones
Pruebas y
volúmenes
Generación de
aplicaciones
Pruebas y
volúmenes
Generación de
aplicaciones
Pruebas y
volúmenes
De 60 a 90 días
Las limitaciones de tiempo impuestas en un proyecto
demandan ámbito en escalas. Si una aplicación de
gestión puede modularse de forma que permita
completarse cada una de las funciones principales en
menos de 3 meses, es un candidato del DRA. Cada
una de las funciones puede ser afrontada por un
equipo DRA diferente y ser integradas en un solo
conjunto.
Al igual que otros modelos, el enfoque DRA tiene
algunos inconvenientes:
1. Para proyectos grandes aunque por escalas, el DRA
requiere recursos humanos suficientes como para
crear el número correcto de equipos DRA.
2. Requiere clientes y desarrolladores comprometidos
en las rápidas actividades necesarias para
completar un sistema en un periodo corto de
tiempo. Si no hay compromiso, los proyectos
fracasarán.
No todos los tipos de aplicaciones son apropiadas
para DRA. Si un sistema no se puede modularizar
adecuadamente, la construcción de los componentes
necesarios para DRA será problemático. Este modelo
tampoco es apropiado cuando una nueva aplicación
hace uso de tecnologías nuevas, o cuando el nuevo
software requiere de un alto grado de
interoperatividad con programas de computadora ya
Modelo de Desarrollo evolutivos
El modelo lineal secuencial se diseña para el
desarrollo en línea recta y se asume que se va a
entregar un sistema completo una vez que la
secuencia lineal se haya finalizado. El modelo de
construcción de prototipos se diseña para ayudar al
cliente (o al que desarrolla) a comprender los
requisitos. En ninguno de los paradigmas se tiene en
cuenta la naturaleza evolutiva del software.
Los modelos evolutivos son interactivos. Se
caracterizan por la forma en que permiten a los
ingenieros del software desarrollar versiones cada vez
más completas del software.
Modelo incremental
Combina elementos del modelo lineal secuencial con la
filosofía interactiva de construcción de prototipos. El
modelo incremental aplica secuencias lineales de la
misma forma que progresa el tiempo en el calendario,
cada secuencia lineal produce un “incremento” del
software. Durante el flujo del proceso de cualquier
incremento se puede incorporar el paradigma de
construcción de prototipos.
Cuando se utiliza un modelo incremental, el primer
incremento a menudo es un producto esencial (núcleo).
Es decir se afrontan requisitos básicos, pero muchas
funciones suplementarias quedan sin implementar hasta
los siguientes incrementos.
Como resultado de la utilización y/o evaluación de los
incrementos, se desarrolla un plan para el siguiente
incremento. El plan incluye la modificación del producto
central a fin de cumplir mejor las necesidades del cliente
y la entrega de funciones y características adicionales.
A diferencia de la construcción de prototipos, el modelo
incremental se centra en la entrega de un producto
operacional con cada incremento.
El desarrollo incremental es particularmente útil cuando
la dotación de personal no esta disponible para una
implementación completa en cuanto a de la fecha límite
de gestión que se haya establecido para el proyecto.
Los incrementos se pueden planear para gestionar riesgos
técnicos, que tengan que ver con software o hardware.
Ingeniería de
sistemas/información
Incremento 1
Análisis
Análisis
Análisis
Análisis
Diseño
Diseño
Diseño
Diseño
Código
Código
Código
Código
Tiempo de Calendario
Prueba
Entrega del 1er.
incremento
Prueba
Entrega del 2do.
incremento
Prueba
Entrega del 3er.
incremento
Prueba
Entrega del 4to.
incremento
Modelo de Espiral
Es un modelo de proceso de software evolutivo
que acompaña la naturaleza interactiva de
construcción de prototipos con los aspectos
controlados y sistemáticos del modelo lineal
secuencial. Esta metodología proporciona el
potencial para el desarrollo rápido de versiones
incrementales del software.
Durante las primeras iteraciones, se producen
versiones cada vez mas completas de ingeniería
del sistema.
La figura 1.5 ilustra el método de espiral.
Cuando empieza este proceso evolutivo, el
equipo de ingeniería del software gira
alrededor de la espiral en dirección de las
agujas del reloj, comenzando por el centro.
El primer circuito de la espiral produce el
desarrollo de una especificación del
producto, los pasos siguientes en la espiral
se podrían utilizar para desarrollar un
prototipo y progresivamente versiones más
sofisticadas del software.
Figura 1.5 El modelo en espiral
Cada paso de la región de planificación produce
ajustes en el plan de proyecto. El costo y la
planificación se ajustan según la reacción ante la
evaluación del cliente.
Además el gestor del proyecto ajusta el número
planificado de iteraciones requeridas para completar
el software.
A diferencia del modelo de proceso clásico que
termina cuando se entrega el software, el modelo en
espiral puede adaptarse y aplicarse a lo largo de la
vida del software.
Este modelo representa un enfoque realista del
desarrollo de sistemas y de software a gran escala.
Como el software evoluciona, a medida que progresa
el proceso, el desarrollador y el cliente comprenden y
reaccionan mejor ante un riesgo en cada uno de los
niveles evolutivos. Utiliza la construcción de
prototipos como mecanismo de reducción de riesgos,
pero lo que es más importante, permite a quien lo
desarrolla aplicar el enfoque de construcción de
prototipos en cualquier etapa de evolución del
producto. Mantiene el enfoque sistemático de los
pasos sugeridos por el ciclo de vida clásico, pero lo
incorpora al marco de trabajo interactivo que refleja
de forma más realista el mundo real.
El modelo en espiral demanda una consideración
directa de los riesgos técnicos en todas las etapas del
proyecto, y si se aplica adecuadamente, debe reducir
los riesgos antes de que se conviertan en
problemáticos.
Pero por igual que otros paradigmas, el modelo en
espiral no es la solución perfecta. Puede resultar difícil
convencer a grandes clientes (particularmente en
situaciones bajo contrato) de que el enfoque evolutivo
es controlable. Requiere una considerable habilidad
para la evaluación del riesgo, y cuenta con esta
habilidad para el éxito. Si un riesgo importante no es
descubierto y gestionado, indudablemente habrá
problemas.
Descargar