Modelos de procesos

Modelo espiral

ETAPAS

Planificación

Se definen los objetivos, las alternativas y las soluciones

Análisis de riesgo:

En este punto el proyecto se revisa y se mira si se debe continuar con el siguiente ciclo, si se continua, entonces en este punto se desarrollan los planes para la siguiente fase del proyecto.

Ingeníeria:

Aquí se crea y se autentifica. Despues de que se hace una evaluación de los riegos y se escoge un modelo para el desarrollo del sistema.

Evaluación del cliente:

El cliente da evalua el trabajo, y aconseja modificiaciones.

Modelo incremental

El modelo incremental aplica secuencias lineales de forma escalonada mientras avanza el tiempo. cada secuancia lineal produce un incremento de software. el modelo incremental entrega el software en partes pequeñas, pero utilizables, llamada "incrementos"

ETAPAS

Requerimientos:

Son los objetivos centrales y específicos que persigue el proyecto.

Definición de las tareas y las iteraciones:

Teniendo en cuenta lo que se busca, el siguiente paso es hacer una lista de tareas y agruparlas en las iteraciones que tendrá el proyecto.

Diseño de los incrementos:

Establecidas las iteraciones, es preciso definir cuál será la evolución del producto en cada una de ellas. Cada iteración debe superar a la que le ha precedido.

Desarrollo del incremento:

Posteriormente se realizan las tareas previstas y se desarrollan los incrementos establecidos en la etapa anterior.

Validación de incrementos:

Al término de cada iteración, los responsables de la gestión del proyecto deben dar por buenos los incrementos que cada una de ellas ha arrojado.

Integración de incrementos:

Una vez son validados, los incrementos dan forma a lo que se denomina línea incremental o evolución del proyecto en su conjunto.

Entrega del producto:

Cuando el producto en su conjunto ha sido validado y se confirma su correspondencia con los objetivos iniciales, se procede a su entrega final.

VENTAJAS

-Permite entregar al cliente un producto más rápido en comparación del modelo de cascada.

-Resulta más sencillo acomodar cambios al acotar el tamaño de los incrementos.

-Por su versatilidad requiere de una planeación cuidadosa tanto a nivel administrativo como técnico.

DESVENTAJAS

-El modelo Incremental no es recomendable para casos de sistemas de tiempo real, de alto nivel de seguridad, de procesamiento distribuido, y/o de alto índice de riesgos.

-Requiere de mucha planeación, tanto administrativa como técnica.

-Requiere de metas claras para conocer el estado del proyecto.

Proceso de desarrollo unificado (RUP)

Pensado principalmente para el desarrollo de grandes proyectos. Es un proceso que puede adaptarse y extenderse en función de las necesidades de cada empresa. está basado en componentes e interfaces bien definidas, y junto con el Lenguaje Unificado de Modelado (UML)

ETAPAS

La fase de concepción o inicio:

Tiene por finalidad definir la visión, los objetivos y el alcance del proyecto, tanto desde el punto de vista funcional como del técnico

La fase de elaboración:

Tiene como finalidad completar el análisis de los casos de uso y definir la arquitectura del sistema, además se obtiene una aplicación ejecutable que responde a los casos de uso que la comprometen.

La fase de construcción:

Está compuesta por un ciclo de varias iteraciones, en las cuales se van incorporando sucesivamente los casos de uso, de acuerdo a los factores de riesgo del proyecto.

La fase de transición:

Se inicia con una versión “beta” del sistema y culmina con el sistema en fase de producción.

VENTAJAS

-Coste del riesgo a un solo incremento.

-Reduce el riesgo de no sacar el producto en el calendario previsto.

-Acelera el ritmo de desarrollo.

-Se adapta mejor a las necesidades del cliente.

DESVENTAJAS

-Requiere una gran previsión sobre lo que va a ocurrir (para poder controlarlo).

-Genera abundante trabajo adicional (y costes asociados) de documentación y comunicación.

-No suele resultar práctico para proyectos pequeños.

Proceso personal de software (PSP)

Es un sistema estructurado de descripciones, de medidas, y de los métodos de proceso que pueden ayudar a ingenieros a mejorar su actividad personal.

ETAPAS

PSP0, PSP0.1 (Introduce la disciplina y la medición al proceso)
PSP0 tiene 3 fases:

planeación, desarrollo (diseño, codificación, pruebas) y un post mortem. Se establece una base del proceso normal de medición: tiempo tomado programando, fallos inyectados/removidos, tamaño de un programa. En un post mortem el ingeniero asegura que todos los datos del proyecto hayan sido registrados y analizados correctamente. PSP0.1 agrega un estándar de código, una medida de tamaño y el desarrollo de un plan de mejora personal PIP. En el PIP el ingeniero registra ideas para mejorar su propio proceso.

PSP1, PSP1.1 (Introduce estimación y planeación):

Teniendo como base los datos recolectados en PSP0 y PSP0.1, el ingeniero estima el tamaño que tendrá el nuevo programa y prepara un reporte de pruebas (PSP1). Los datos recolectados para proyectos previos se usan para estimar el tiempo total. Cada proyecto nuevo registrará el tiempo gastado actualmente. Esta información es usada para tareas de agendamiento, planeación y estimación(PSP1.1).

PSP2, PSP2.1 (Introduce manejo de calidad y diseño)
PSP2 agrega dos fases nuevas:

Revisión de diseño y de código. Se enfoca en la prevención de defectos y su remoción. Los ingenieros aprenden a evaluar y mejorar su proceso midiendo la extensión de sus tareas y la cantidad de defectos inyectados y removidos en cada fase de desarrollo. Los ingenieros construyen y usan listas de chequeo para diseño y revisión de código.

VENTAJAS

-Habilidades y talentos obtenidos.

-El estímulo de una corriente casi ilimitada de ideas.

-El marco que proporciona para la mejora personal.

-El grado de control se gana sobre el trabajo.

-La sensación del orgullo y de la realización.

-Una base mejorada para el trabajo en equipo eficaz.

-La seguridad para hacer el trabajo la manera que usted sabe que usted debe.

DESVENTAJAS

-El tiempo requerido para conocerlo.

-El costo emocional por mantener una disciplina.

Patrones de diseño de software

Se puede moldear un problema similar en el pasado, las estructuras de las clases del problema pueden ya estar inventadas si la forma de este problema se puede extraer, explicar y reutilizar en múltiples ámbitos entonces nos encontramos ante un patrón de diseño de software.

Principales metodologías ágiles:

Conjunto tareas y procedimientos dirigidos a la gestión de proyectos . Son aquellos métodos de desarrollo en los cuales tanto las necesidades como las soluciones a estas evolucionan con el pasar del tiempo, a través del trabajo en equipo de grupos multidisciplinarios que se caracterizan por tener las siguientes cualidades: Desarrollo evolutivo y flexible. Autonomía de los equipos. Planificación. Comunicación.

Modelo de cascada

Tipos de patrones de diseño

Patrones Creacionales:

Como su nombre indica, estos patrones vienen a solucionar o facilitar las tareas de creación o instanciación de objetos.

Patrones creacionales más conocidos son:

Factory: Desacoplar la lógica de creación de la lógica de negocio, evitando al cliente conocer detalles de la instanciación de los objetos de los que depende.

Abstract Factory: Nos provee una interfaz que delega la creación de una serie de objetos relacionados sin necesidad de especificar cuáles son las implementaciones concretas.

Factory Method: Expone un método de creación, delegando en las subclases la implementación de este método.

Builder: Separa la creación de un objeto complejo de su estructura, de tal forma que el mismo proceso de construcción nos puede servir para crear representaciones diferentes.

Patrones Estructurales:

Los patrones estructurales nos ayudan a definir la forma en la que los objetos se componen.

Los patrones estructurales más habituales son:

Adapter: Nos ayuda a definir una clase intermedia que sirve para que dos clases con diferentes interfaces puedan comunicarse. Esta clase actúa como mediador, haciendo que la clase A pueda ejecutar métodos de la clase B sin conocer detalles de su implementación. También se conoce como Wrapper.

Decorator: Permite añadir funcionalidad extra a un objeto (decora el objeto) sin modificar el comportamiento del resto de instancias.

Facade: Una fachada es un objeto que crea una interfaz simplificada para tratar con otra parte del código más compleja.

Patrones de comportamiento:

Los patrones comportamentales nos ayudan a definir la forma en la que los objetos interactúan entre ellos.

Algunos de los más conocidos son:

Command: Son objetos que encapsulan una acción y los parámetros que necesitan para ejecutarse.

Observer: Los objetos son capaces de suscribirse a una serie de eventos que otro objeto va a emitir, y serán avisados cuando esto ocurra.

Strategy: Permite la selección del algoritmo que ejecuta cierta acción en tiempo de ejecución.

Template Method: Especifica el esqueleto de un algoritmo, permitiendo a las subclases definir cómo implementan el comportamiento real.

Metodologías agiles más utilizadas

Programación extrema (XP):

Conocida por sus siglas XP ( eXtreme Programming ), es una metodología basada en un conjunto de reglas y buenas prácticas para el desarrollo de software en ambientes muy cambiantes con requisitos imprecisos, por ende está enfocada en la retroalimentación continua entre el equipo de desarrollo y el cliente.

FASES

-Entender lo que el cliente necesita > Fase de Exploración

-Estimar el esfuerzo > Fase de Planificación

-Crear la solución > Fase de Iteraciones

-Entregar el producto final al cliente > Fase de puesta en producción

CARACTERÍSTICAS DE XP

Desarrollo iterativo e incremental.

Programación en parejas.

Pruebas unitarias continuas.

Corrección periódica de errores.

Integración del equipo de programación con el cliente.

Simplicidad, propiedad del código compartida y refactorización del código.

Scrum:

Esta metodología, es un marco de trabajo de procesos ágiles que trabaja con el ciclo de vida iterativo e incremental , donde se va liberando el producto por pares de forma periódica, aplicando las buenas prácticas de trabajo colaborativo (en equipo), facilitando el hallazgo de soluciones óptimas a los problemas que pueden ir surgiendo en el proceso de desarrollo del proyecto.

FASES

Planteamiento: un proyecto gestionado bajo el modelo SCRUM parte de los objetivos que han trazado con anterioridad el cliente y la empresa. Lo primero es fraccionarlo en entregas parciales, de manera que el cliente pueda replantear aspectos a los que en principio no prestó la importancia debida o que simplemente desconocía.

Lista de tareas: el equipo de trabajo elabora la lista de tareas que debe tener en cuenta para cada entrega de resultados

Reuniones: lo ideal es que cada día el equipo dedique 15 minutos para reunirse y ponerse al tanto de la evolución del plan.

Demostración: una vez ejecutadas las labores de cada fase, el equipo se reúne con el cliente para mostrar los avances correspondientes.

Retrospectiva: los miembros del equipo se reúnen para valorar el proceso de entrega de resultados y analizan los factores que podrían mejorar de cara al final del proceso.

Kanban:

Es un marco de trabajo que requiere una comunicación en tiempo real sobre la capacidad del equipo, utilizado para controlar el avance de trabajo en una línea de producción, en la cual se clasifican las tareas en sub estatus, esto con la intención de determinar los niveles de productividad en cada fase del proyecto.

FASES

Fase 1: Diseño del sistema kanban que vamos a utilizar. Entrenar a todo el personal en los principios de Kanban y los beneficios de usarlo. de forma que se genere la concienciación de la necesidad de usarlo.

Fase 2: La herramienta kanban se suele implementar en aquellas líneas de producción que tienen mas actividad y por tanto son aquellas en las que hay más probabilidades que encontremos problemas.

Fase 3: Una vez subsanados los problemas en nuestras principales líneas de producción, se implementa la herramienta kanban en el resto de líneas de producción

Fase 4: Esta es la fase para la revisión del sistema Kanban en cada una de las líneas de producción de manera continua para ir aprendiendo y mejorando.

Es un modelo de procesos de software, que se creo con el fin de cubrir las mejores características del ciclo de vida clásico, como la creación de prototipos. En este modelo funciona desarrollando una serie de versiones incrementales.