-
Origen
Primera generación de computadoras, las prácticas de desarrollo no obedecían a una metodología, los programadores se dedicaban a desarrollar sus códigos, lo que acarreaba una multitud de problemas -
Se desarrollan los lenguajes de alto nivel: FORTRAN: el cual fue diseñado para aplicaciones científicas y de ingeniería. COBOL: el cual fue diseñado para aplicaciones de gestión o administración.
FORTRAN:
1) Más sencillo de aprender que sus antecesores.
2) Se considera una revolución y el principio de la programación moderna.
3) Su puesta en práctica, y los años de uso han dado lugar a librerías probadas y eficientes que constatan su eficacia como lenguaje de programación.
COBOL:
1) Es universal, puede ser usado en cualquier máquina.
2) Es fácil de interpretar.
3) Se le considera un lenguaje de programación estándar que ha sido capaz de influir en el resto desde sus inicios. -
Modelo de procesos
Consistía en codificar y corregir (Code and-fix)
Este modelo implementaba el código y luego se pensaba en los requisitos, diseño, validación y mantenimiento.
Características:
1) Después de un número de correcciones, el código puede tener una muy mala estructura(los arreglos son muy costosos).
2) El software puede estar bien diseñado, pero no se ajusta a las necesidades del usuario.
3) El código es difícil de reparar por su pobre preparación para probar y modificar. -
Metodologías clásicas en cascada
Propuesta por Winston W.Royce.
Características:
1) Se trata del modelo menos complejo que existe.
2) No es posible realizar un desarrollo iterativo, puesto que los procesos se desarrollan en una sola gran iteración.
3) La poca comunicación con el cliente puede dificultar el establecimiento de objetivos y requisitos. -
Metodología en V
Propuesto por Alan Davis. Es una variación del modelo en cascada.
Características:
1) La relación entre las etapas de desarrollo y los distintos tipos de pruebas facilitan la localización de fallos.
2) Hace explícito parte de la iteración y trabajo que hay que revisar.
3) El producto final obtenido puede que no refleje todos los requisitos del usuario. -
Metodología clásica iterativa
Es una evolución del modelo en cascada.
Características:
1) Permite una fácil administración de las tareas en cada iteración.
2) Se adapta a las necesidades que surjan.
3) Es un modelo propicio a cambios o modificaciones. -
Metodología clásica incremental
Esta metodología combina elementos del modelo en cascada con la filosofía interactiva de construcción de prototipos.
Características:
1) Es más fácil probar y depurar en una iteración más pequeña.
2) Es un modelo más flexible.
3) Cada fase de una iteración es rígida y no se superponen con otras. -
Metodología clásica de prototipos
Este diseño conduce a la construcción de un prototipo, el cual es evaluado por el cliente para una retroalimentación.
Características:
1) Describe las fases principales de desarrollo de software.
2) Ayuda a administrar el progreso del desarrollo del software.
3) Provee un espacio de trabajo para la definición de un detallado proceso de desarrollo de software. -
Metodología clásica en espiral
Es una combinación entre el modelo de cascada y un modelo por iteraciones.
Características:
1) Reduce considerablemente que fallen los proyectos grandes de software, ya que evalúa repetidamente los riesgos y verifica cada vez el producto en desarrollo.
2) Este modelo es el indicado para desarrollar software con diferentes versiones actualizadas como se hace con los programas modernos.
3) La ingeniería puede desarrollarse a través del ciclo de vida clásico o el de construcción de prototipos. -
Metodologías Ágiles
Son aquellas metodologías que utiliza una empresa para gestionar decisiones, proyectos y presupuestos, con el objetivo de que se agilice la toma de decisiones y se beneficie la producción.
Características:
1) La metodología ágil es rápida, específica y dinámica.
2) Estimula las actitudes y estructuras del equipo, pues hace más fácil la comunicación.
3) Considera al cliente como parte del equipo de producción. -
Metodologías ágiles de desarrollo rápido de aplicaciones (RAD)
Se trata de un modelo de desarrollo de aplicaciones ágil. Este método abarca el desarrollo interactivo, la creación de prototipos y el empleo de utilidades CASE.
Características:
1) Ofrece resultados en tiempo real.
2) Las iteraciones rápidas reducen el periodo de desarrollo y agilizan la entrega.
3) Se fomenta la reutilización del código, por lo que se reduce la programación manual y, en consecuencia, disminuyen tanto la posibilidad de cometer errores como los periodos de prueba. -
Metodología orientada a objetos de Jacobson (OOSE)
Consta de cuatro pasos generales:
1) Clase temporizador
2) Construcción
3) Diseño
4) Prueba del sistema
Características:
1) Es la base en la etapa de análisis,
construcción y prueba.
2) Proporciona un soporte para el diseño
creativo de productos de software.
3) Las actividades consisten en la transformación de un conjunto de requerimientos en un plan estructurado de construcción y
un plan de acción. -
Metodología orientada a objetos de BOOCH (OOAD)
Es un lenguaje de modelado de objetos y una metodología ampliamente usada en el diseño de software orientado a objetos.
Características:
1) Se enfoca en el análisis y el diseño y no en la implementación o la prueba del resultado de estos.
2) Establece los requerimientos desde la perspectiva del cliente, genera una descripción de alto nivel de las funciones y estructuras del sistema.
3) Define seis tipos de diagramas: clase, objeto, estado de transición, interacción, modulo y proceso. -
Metodología orientada a objetos Rumbaugh (OMT)
Fue desarrollada por James Rumbaugh, uno de los precursores del Lenguaje Unificado de Modelado (UML).
La fase de análisis comienza con la declaración del problema.
La declaración del problema se “expande“ después en tres modelos:
1) De objetos.
2) Dinámico.
3) Funcional.
*El modelo de objetos representa los objetos del sistema.
*El modelo dinámico representa la interacción entre esos objetos.
*El modelo funcional representa los métodos del sistema desde la perspectiva de flujo de datos. -
Metodología orientada a objetos RUP
Utiliza el enfoque de la orientación a objetos en su diseño y está diseñado y documentado el uso de la notación UML para ilustrar los procesos en acción.
Características:
1) Forma disciplinada de asignar tareas y responsabilidades (quién hace qué, cuándo y cómo).
2) Pretende implementar las mejores prácticas en Ingeniería de Software.
3) Modelado visual del software. -
Metodologías ágiles XP
Su objetivo es el desarrollo y gestión de proyectos con eficacia, flexibilidad y control.
Características:
1) Comunicación constante entre el cliente y el equipo de desarrollo.
2) El software que funciona está por encima de cualquier otra documentación.
3) La planificación es abierta con un cronograma de actividades flexible. -
Metodologías ágiles de desarrollo adaptable de software (ASD)
Se basa en un funcionamiento cíclico y reconoce que en cada iteración se producirán cambios e incluso errores.
En esta metodología hay un ciclo de especular, colaborar y aprender.
Fue desarrollada con la intención de ofrecer una alternativa al
desarrollo de software basándose en la idea de que la optimización es la única solución para problemas de complejidad creciente.
Características:
1) Iterativo.
2) Orientado en los componentes del software.
3) Tolerante a cambios. -
Metodologías ágiles Lean Software Development o LSD
Consiste en hacer más eficientes algunos procesos de la industria mediante la eliminación de desperdicios o actividades que no aportaban beneficios.
Características:
1) Suprime todo aquello que no le aporte valor al proyecto.
2) El producto se va probando constantemente para evitar amontonar errores que al final serán más complicados de resolver.
3) Fortalece el equipo de trabajo que se encarga del desarrollo. -
Metodologías ágiles Kanban
Busca gestionar de manera generalizada cómo se van completando las tareas
Características:
1) Reducción del desperdicio: no se necesita hacer nada extra o superficial.
2) Mejora continua: aprovechando la realización de tareas, se busca mejorar los procesos.
3) Flexibilidad: prioriza la realización de tareas en función de las necesidades de cada momento y de la urgencia de cada una de ellas.