Post on 17-Aug-2015
Instituto Tecnológico Spencer W. Kimball
Bachillerato Industrial y Perito en Computación
Tecnología II
Profesor: Álvaro Martínez
Tema:
Metodología de desarrollo de software
Alumno: Selvin Fernando Xutuc Samayoa
Grado: 5to. Computación
Sección: Única
Fecha: 20/05/2015
Introducción.
El presente trabajo trata sobre el tema en general Metodologías para el desarrollo de Software,
este tema se incluye metodologías estructuradas, metodologías orientadas a objetos,
metodologías tradicionales y metodologías agiles. Tambien están: el modelo en cascada,
modelo prototipado, modelo incremental, modelo espiral, etc.
Índice.
Contenido METODOLOGÍAS ESTRUCTURADAS: ..........................................................................................................1
METODOLOGÍAS ORIENTADAS A OBJETOS: ............................................................................................1
METODOLOGÍAS TRADICIONALES: .............................................................................................................2
METODOLOGÍAS ÁGILES: ...............................................................................................................................2
Enfoques de desarrollo de software .................................................................................................................4
Modelo en cascada .............................................................................................................................................4
Modelo Prototipado .............................................................................................................................................4
Modelo Incremental .............................................................................................................................................5
Modelo Espiral ......................................................................................................................................................5
Modelo Rapid Application Development (RAD) ..............................................................................................6
Otros enfoques de desarrollo de software ...................................................................................................6
Ciclo de vida del software...................................................................................................................................7
METODOLOGIA RUP .........................................................................................................................................8
ANALISIS DE SISTEMAS II Profesor: Álvaro Martínez
1
Metodología de desarrollo de software
Un proceso de software detallado y completo suele denominarse “Metodología”. Las
metodologías se basan en una combinación de los modelos de proceso genéricos (cascada,
evolutivo, incremental, espiral entre otros). Adicionalmente una metodología debería definir con
precisión los artefactos, roles y actividades involucrados, junto con prácticas y técnicas
recomendadas, guías de adaptación de la metodología al proyecto, guías para uso de
herramientas de apoyo, etc. Habitualmente se utiliza el término “método” para referirse a
técnicas, notaciones y guías asociadas, que son aplicables a una (o algunas) actividades del
proceso de desarrollo, por ejemplo, suele hablarse de métodos de análisis y/o diseño.
La comparación y/o clasificación de metodologías no es una tarea sencilla debido a la diversidad
de propuestas y diferencias en el grado de detalle, información disponible y alcance de cada
una de ellas. A grandes rasgos, si tomamos como criterio las notaciones utilizadas para
especificar artefactos producidos en actividades de análisis y diseño, podemos clasificar las
metodologías en dos grupos: Metodologías Estructuradas y Metodologías Orientadas a Objetos.
Por otra parte, considerando su filosofía de desarrollo, aquellas metodologías con mayor énfasis
en la planificación y control del proyecto, en especificación precisa de requisitos y modelado,
reciben el apelativo de Metodologías Tradicionales (o también denominadas Metodologías
Pesadas, o Peso Pesado). Otras metodologías, denominadas Metodologías Ágiles, están más
orientadas a la generación de código con ciclos muy cortos de desarrollo, se dirigen a equipos
de desarrollo pequeños, hacen especial hincapié en aspectos humanos asociados al trabajo en
equipo e involucran activamente al cliente en el proceso
A continuación se revisan brevemente cada una de estas categorías de metodologías:
METODOLOGÍAS ESTRUCTURADAS:
Los métodos estructurados comenzaron a desarrollarse a fines de los 70’s con la
Programación Estructurada, luego a mediados de los 70’s aparecieron técnicas para el Diseño
(por ejemplo: el diagrama de Estructura) primero y posteriormente para el Análisis (por
ejemplo: Diagramas de Flujo de Datos). Estas metodologías son particularmente apropiadas
en proyectos que utilizan para la implementación lenguajes de 3ra y 4ta generación.
Ejemplos de metodologías estructuradas de ámbito gubernamental: MERISE (Francia),
MÉTRICA (España), SSADM (Reino Unido). Ejemplos de propuestas de métodos
estructurados en el ámbito académico: Gane & Sarson, Ward & Mellor, Yourdon & DeMarco e
Information Engineering.
METODOLOGÍAS ORIENTADAS A OBJETOS:
Su historia va unida a la evolución de los lenguajes de programación orientada a objeto, los
más representativos: a fines de los 60’s SIMULA, a fines de los 70’s Smalltalk-80, la primera
versión de C++ por Bjarne Stroustrup en 1981 y actualmente Java o C# de Microsoft. A fines
de los 80’s comenzaron a consolidarse algunos métodos Orientadas a Objeto.
ANALISIS DE SISTEMAS II Profesor: Álvaro Martínez
2
En 1995 Booch y Rumbaugh proponen el Método Unificado con la ambiciosa idea de
conseguir una unificación de sus métodos y notaciones, que posteriormente se reorienta a un
objetivo más modesto, para dar lugar al Unified Modeling Language (UML), la notación
Orientada a Objetos más popular en la actualidad.
Algunas metodologías orientadas a objetos que utilizan la notación UML son:
Rational Unified Process (RUP),
OPEN,
MÉTRICA (que también soporta la notación estructurada).
METODOLOGÍAS TRADICIONALES:
Las metodologías no ágiles son aquellas que están guiadas por una fuerte planificación
durante todo el proceso de desarrollo; llamadas también metodologías tradicionales o
clásicas, donde se realiza una intensa etapa de análisis y diseño antes de la construcción del
sistema.
Todas las propuestas metodológicas antes indicadas pueden considerarse como
metodologías tradicionales. Aunque en el caso particular de RUP, por el especial énfasis que
presenta en cuanto a su adaptación a las condiciones del proyecto (mediante su configuración
previa a aplicarse), realizando una configuración adecuada, podría considerarse Ágil.
METODOLOGÍAS ÁGILES:
Un proceso es ágil cuando el desarrollo de software es incremental (entregas pequeñas de
software, con ciclos rápidos), cooperativo (cliente y desarrolladores trabajan juntos
constantemente con una cercana comunicación), sencillo (el método en sí mismo es fácil de
aprender y modificar, bien documentado), y adaptable (permite realizar cambios de último
momento).
Entre las metodologías ágiles identificadas son:
Extreme Programming
Scrum
Familia de Metodologías Crystal
Feature Driven Development
Proceso Unificado Rational, una configuración ágil
Dynamic Systems Development Method
ANALISIS DE SISTEMAS II Profesor: Álvaro Martínez
3
Adaptive Software Development
Open Source Software Development
SEGUIDAMENTE DETALLAREMOS LAS SIGUIENTES METODOLOGÍAS PARA
DESARROLLO DE SOFTWARE:
Rational Unified Process (RUP)
Extreme Programming (XP)
SCRUM
Metodología de desarrollo de software en ingeniería de software es un marco de trabajo
usado para estructurar, planificar y controlar el proceso de desarrollo en sistemas de
información.
Una metodología de desarrollo de software se refiere a un framework que es usado para
estructurar, planear y controlar el proceso de desarrollo en sistemas de información.
A lo largo del tiempo, una gran cantidad de métodos han sido desarrollados diferenciándose
por su fortaleza y debilidad.
El framework para metodología de desarrollo de software consiste en:
Una filosofía de desarrollo de programas de computacion con el enfoque del proceso de
desarrollo de software
Herramientas, modelos y métodos para asistir al proceso de desarrollo de software
Estos frameworks son a menudo vinculados a algún tipo de organización, que además
desarrolla, apoya el uso y promueve la metodología. La metodología es a menudo
documentada en algún tipo de documentación formal.
ANALISIS DE SISTEMAS II Profesor: Álvaro Martínez
4
Enfoques de desarrollo de software
Cada metodología de desarrollo de software tiene más o menos su propio enfoque para
el desarrollo de software. Estos son los enfoques más generales, que se desarrollan en varias
metodologías específicas. Estos enfoques son los siguientes:
Modelo en cascada: Framework lineal.
Prototipado: Framework iterativo.
Incremental: Combinación de framework lineal e iterativo.
Espiral: Combinación de framework lineal e iterativo.
RAD: Rapid Application Development, framework iterativo.
Modelo en cascada
Es un proceso secuencial de desarrollo en el que los pasos de desarrollo son vistos hacia abajo
(como en una cascada de agua) a través de las fases de análisis de las necesidades, el diseño,
implantación, pruebas (validación), la integración, y mantenimiento. La primera descripción
formal del modelo de cascada se cita a menudo a un artículo publicado por Winston Royce
W.2 en 1970, aunque Royce no utiliza el término "cascada" de este artículo.
Los principios básicos del modelo de cascada son los siguientes:1
El proyecto está dividido en fases secuenciales, con cierta superposición y splashback
aceptable entre fases.
Se hace hincapié en la planificación, los horarios, fechas, presupuestos y ejecución de todo
un sistema de una sola vez.
Un estricto control se mantiene durante la vida del proyecto a través de la utilización de una
amplia documentación escrita, así como a través de comentarios y aprobación / signoff por
el usuario y la tecnología de la información de gestión al final de la mayoría de las fases
antes de comenzar la próxima fase.
Modelo Prototipado
El prototipado permite desarrollar modelos de aplicaciones de software que permiten ver la
funcionalidad básica de la misma, sin necesariamente incluir toda la lógica o características del
modelo terminado. El prototipado permite al cliente evaluar en forma temprana el producto, e
interactuar con los diseñadores y desarrolladores para saber si se está cumpliendo con las
expectativas y las funcionalidades acordadas. Los Prototipos no poseen la funcionalidad total
ANALISIS DE SISTEMAS II Profesor: Álvaro Martínez
5
del sistema pero si condensa la idea principal del mismo, Paso a Paso crece su funcionalidad,
y maneja un alto grado de participación del usuario.
Modelo Incremental
Provee una estrategia para controlar la complejidad y los riesgos, desarrollando una parte del
producto software reservando el resto de aspectos para el futuro.
Los principios básicos son:
Una serie de mini-Cascadas se llevan a cabo, donde todas las fases de la cascada modelo
de desarrollo se han completado para una pequeña parte de los sistemas, antes de proceder
a la próxima incremental.
Se definen los requisitos antes de proceder con lo evolutivo, se realiza una mini cascada de
desarrollo de cada uno de los incrementos del sistema.
El concepto inicial de software, análisis de las necesidades, y el diseño de la arquitectura y
colectiva básicas se definen utilizando el enfoque de cascada, seguida por iterativo de
prototipos, que culmina en la instalación del prototipo final.
Modelo Espiral
Los principios básicos son:
La atención se centra en la evaluación y reducción del riesgo del proyecto dividiendo el
proyecto en segmentos más pequeños y proporcionar más facilidad de cambio durante el
proceso de desarrollo, así como ofrecer la oportunidad de evaluar los riesgos y con un peso
de la consideración de la continuación del proyecto durante todo el ciclo de vida.
Cada viaje alrededor de la espiral atraviesa cuatro cuadrantes básicos: (1) determinar
objetivos, alternativas, y desencadenantes de la iteración; (2) Evaluar alternativas; Identificar
y resolver los riesgos; (3) desarrollar y verificar los resultados de la iteración, y (4) plan de
la próxima iteración.3
Cada ciclo comienza con la identificación de los interesados y sus condiciones de ganancia,
y termina con la revisión y examinación.
ANALISIS DE SISTEMAS II Profesor: Álvaro Martínez
6
Modelo Rapid Application Development (RAD)
El desarrollo rápido de aplicaciones (RAD) es una metodología de desarrollo de software, que
implica el desarrollo iterativo y la construcción de prototipos. El desarrollo rápido de aplicaciones
es un término originalmente utilizado para describir un proceso de desarrollo de
software introducido por James Martin en 1991.
Principios básicos:
Objetivo clave es para un rápido desarrollo y entrega de una alta calidad en un sistema de
relativamente bajo coste de inversión.
Intenta reducir el riesgo inherente del proyecto partiéndolo en segmentos más pequeños y
proporcionar más facilidad de cambio durante el proceso de desarrollo.
Orientación dedicada a producir sistemas de alta calidad con rapidez, principalmente
mediante el uso de iteración por prototipos (en cualquier etapa de desarrollo), promueve la
participación de los usuarios y el uso de herramientas de desarrollo computarizadas. Estas
herramientas pueden incluir constructores de Interfaz gráfica de usuario (GUI), Computer
Aided Software Engineering (CASE) las herramientas, los sistemas de gestión de bases de
datos (DBMS), lenguajes de programación de cuarta generación, generadores de código, y
técnicas orientada a objetos.
Hace especial hincapié en el cumplimiento de la necesidad comercial, mientras que la
ingeniería tecnológica o la excelencia es de menor importancia.
Control de proyecto implica el desarrollo de prioridades y la definición de los plazos de
entrega. Si el proyecto empieza a aplazarse, se hace hincapié en la reducción de requisitos
para el ajuste, no en el aumento de la fecha límite.
En general incluye Joint application development (JAD), donde los usuarios están
intensamente participando en el diseño del sistema, ya sea a través de la creación de
consenso estructurado en talleres, o por vía electrónica.
La participación activa de los usuarios es imprescindible.
Iterativamente realiza la producción de software, en lugar de enfocarse en un prototipo.
Produce la documentación necesaria para facilitar el futuro desarrollo y mantenimiento.
Otros enfoques de desarrollo de software
Metodologías de desarrollo Orientado a objetos, Diseño orientado a objetos (OOD) de Grady
Booch, también conocido como Análisis y Diseño Orientado a Objetos (OOAD). El modelo
ANALISIS DE SISTEMAS II Profesor: Álvaro Martínez
7
incluye seis diagramas: de clase, objeto, estado de transición, la interacción, módulo, y el
proceso.
Top-down programming, evolucionado en la década de 1970 por el investigador
de IBM Harlan Mills (y Niklaus Wirth) en Desarrollo Estructurado.
Proceso Unificado, es una metodología de desarrollo de software, basado en UML. Organiza
el desarrollo de software en cuatro fases, cada una de ellas con la ejecución de una o más
iteraciones de desarrollo de software: creación, elaboración, construcción, y las directrices.
Hay una serie de herramientas y productos diseñados para facilitar la aplicación. Una de las
versiones más populares es la de Rational Unified Process.
Ciclo de vida del software
El término ciclo de vida del software describe el desarrollo de software, desde la fase inicial
hasta la fase final, incluyendo su estado funcional. El propósito es definir las distintas fases
intermedias que se requieren para validar el desarrollo de la aplicación, es decir, para garantizar
que el software cumpla los requisitos para la aplicación y verificación de los procedimientos de
desarrollo: se asegura que los métodos utilizados son apropiados. Estos métodos se originan
en el hecho de que es muy costoso rectificar los errores que se detectan tarde dentro de la fase
de implementación (programación propiamente dicha), o peor aún, durante la fase funcional. El
modelo de ciclo de vida permite que los errores se detecten lo antes posible y por lo tanto,
permite a los desarrolladores concentrarse en la calidad del software, en los plazos de
implementación y en los costos asociados. El ciclo de vida básico de un software consta de, al
menos, los siguientes procedimientos:
Definición de objetivos: definir el resultado del proyecto y su papel en la estrategia global.
Análisis de los requisitos y su viabilidad: recopilar, examinar y formular los requisitos del
cliente y examinar cualquier restricción que se pueda aplicar.
Diseño general: requisitos generales de la arquitectura de la aplicación.
Diseño en detalle: definición precisa de cada subconjunto de la aplicación.
Programación (programación e implementación): es la implementación en un lenguaje de
programación para crear las funciones definidas durante la etapa de diseño.
Prueba de unidad: prueba individual de cada subconjunto de la aplicación para garantizar
que se implementaron de acuerdo con las especificaciones.
ANALISIS DE SISTEMAS II Profesor: Álvaro Martínez
8
Integración: para garantizar que los diferentes módulos y subprogramas se integren con la
aplicación. Éste es el propósito de la prueba de integración que debe estar cuidadosamente
documentada.
Prueba beta (o validación), para garantizar que el software cumple con las especificaciones
originales.
Documentación: se documenta con toda la información necesaria, sea funcional final para
los usuarios del software (manual del usuario), y de desarrollo para futuras adaptaciones,
ampliaciones y correcciones.
Mantenimiento: para todos los procedimientos correctivos (mantenimiento correctivo) y las
actualizaciones secundarias del software (mantenimiento continuo).
El orden y la presencia de cada uno de estos procedimientos en el ciclo de vida de una
aplicación dependen del tipo de modelo de ciclo de vida acordado entre el cliente y el equipo
de desarrolladores.
METODOLOGIA RUP
Siempre que empezamos discutiendo métodos en la arena OO, inevitablemente salimos con el papel del Rational Unified Process. El Proceso Unificado fue desarrollado por Philippe Kruchten, Ivar Jacobson y otros de la Rational como el proceso complementario al UML. El RUP es un armazón de proceso y como tal puede acomodar una gran variedad de procesos. De hecho ésta es mi crítica principal al RUP - como puede ser cualquier cosa acaba siendo nada. Yo prefiero un proceso que dice qué hacer en lugar de dar opciones infinitas. Como resultado de esta mentalidad de armazón de procesos, el RUP puede usarse en un estilo muy tradicional de cascada o de una manera ágil. Como resultado usted puede usar el RUP como un proceso ágil, o como un proceso pesado - todo depende de cómo lo adapte a su ambiente. Craig Larman es un fuerte defensor de usar el RUP de una manera ágil. Su excelente libro introductoriosobre desarrollo OO contiene un proceso que está muy basado en su pensamiento ligero del RUP. Su visión es que mucho del reciente empujón hacia los métodos ágiles no es nada más que aceptar desarrollo OO de la corriente principal que ha sido capturada como RUP. Una de las cosas que hace Craig es pasarse los primeros dos o tres días de una iteración mensual con todo el equipo usando el UML para perfilar el diseño del trabajo a hacerse durante la iteración. Esto no es un cianotipo del que no se pueda desviarse, sino un boceto que da una perspectiva sobre cómo pueden hacerse las cosas en la iteración. Otra tachuela en el RUP ágil es el proceso dX de Robert Martin. El proceso dx es una versión totalmente dócil del RUP que simplemente es idéntico a la XP(voltear dX al revés para ver la broma). El dX está diseñado para gente que tiene que usar el RUP pero quiere usar XP. Como tal es a la vez XP y RUP y por tanto un buen ejemplo del uso ágil del RUP.
ANALISIS DE SISTEMAS II Profesor: Álvaro Martínez
9
Para mí, una de las cosas clave que necesita el RUP es que los líderes del RUP en la industria enfaticen su acercamiento al desarrollo de software. Más de una vez he oído a la gente que usa el RUP que están usando un proceso de desarrollo estilo cascada. Gracias a mis contactos en la industria, sé que Philippe Kruchten y su equipo son firmes creyentes en el desarrollo iterativo. Clarificando estos principios y animando las versiones ágiles del RUP tales como los trabajos de Craig y de Robert tendrá un efecto importante.
El proceso de ciclo de vida de RUP se divide en cuatro fases bien conocidas llamadas Incepción,
Elaboración, Construcción y Transición. Esas fases se dividen en iteraciones, cada una de las
cuales produce una pieza de software demostrable. La duración de cada iteración puede
extenderse desde dos semanas hasta seis meses. Las fases son: Incepción. Significa “comienzo”, pero la palabra original (de origen latino y casi en desuso como
sustantivo) es sugestiva y por ello la traducimos así. Se especifican los objetivos del ciclo de
vida del proyecto y las necesidades de cada participante. Esto entraña establecer el alcance y
las condiciones de límite y los criterios de aceptabilidad. Se identifican los casos de uso que
orientarán la funcionalidad.
Conclusiones.
1. Las metodologías se basan en una combinación de los modelos de proceso
genéricos (cascada, evolutivo, incremental, espiral entre otros).
2. Cada metodología de desarrollo de software tiene más o menos su propio
enfoque para el desarrollo de software.
3. (RAD) es una metodología de desarrollo de software, que implica el desarrollo
iterativo y la construcción de prototipos.