viernes, 26 de septiembre de 2014

Programación extrema

Programación extrema
La programación extrema es un ciclo de vida de software de desarrollo ágil y orientado a objetos que fue propuesto por Kent Beck en el año 1999 y buscaba la creación de software de una forma más rápida y de mejor calidad.
La programación extrema funciona de una forma diferente que los ciclos de vida convencionales. Los primeros ciclos de vida de software, como el modelo de cascada, buscaban hacer un gran análisis para conseguir requerimientos y usar estos para guiar a los programadores por las etapas de diseño y desarrollo, buscando solamente controlar los cambios en los requerimientos a medida que se avanza; por otro lado, la programación extrema busca eliminar los requerimientos y adaptarse a los cambios que pida el cliente durante cualquier etapa del ciclo de desarrollo, ya que, se afirma que adaptarse a los cambios que pida el cliente durante el proceso es una forma un poco más realista de desarrollar que pretender definir todo al inicio y solo controlar los cambios.
La programación extrema se puede graficar de la siguiente manera:



Planificación
Durante la etapa de planificación se crean las denominadas “historias de usuario”, las cuales son hechas por el cliente donde el mismo define las prioridades y explica las diferentes historias para que la entienda el equipo de programadores, luego, los programadores comienzan a decidir cuál es la forma más la forma más óptima de resolver el caso en las fechas propuestas, pensando en el cliente (¿Qué se debe hacer?, ¿En que fecha se necesita?...) y en ellos mismos (¿Cómo organizar el trabajo en equipo?, ¿Cuánto lleva implementar esta característica?...), de esta forma, se crean pequeñas versiones para resolver los problemas, las cuales deben ser lo más pequeñas posibles y con los requisitos más importantes para el cliente (todas estas versiones deben tener sentido como un todo).

Diseño
En esta etapa se crean diseños simples que pasen todas las pruebas creadas para ellos en la planificación, deben tener pocas clases y métodos, sin lógica duplicada y deben manifestar claramente lo importante para que los programadores creen una buena codificación en el siguiente paso.

Codificación
Una de las acciones principales de esta etapa es la “Recodificación”, la cual consta de simplificar el código echo anteriormente sin que este pierda funcionalidad, cabe destacar que esto solo debe hacerse si el sistema lo pide, no en base a simples especulaciones. Toda esta etapa debe realizarse en parejas y cada pareja frente a un computador trabajando en conjunto siguiendo todas un mismo estándar de codificación, la idea es que uno de ellos codifique pensando en la mejor forma de hacerlo mientras que el otro piensa más estratégicamente cosas como: “¿Funcionará de esta forma?” o “¿Fallará alguna prueba de esta forma?” y siempre tomando en cuenta que cualquiera de los dos puede implementar nuevas ideas o codificaciones, el código no es propiedad de uno solamente. Luego, todas las parejas de trabajo deben de reunir sus códigos y realizar pruebas del sistema en su totalidad al menos una vez al día. Es importante que el cliente este presente durante este proceso, ya que, se necesita para que los programadores resuelvan dudas o aclaren aspectos del sistema de forma rápida.

Evaluación
En la última etapa se le realizan pruebas a cada uno de los aspectos del sistema, los programadores crean pruebas para probar el funcionamiento y el cliente realiza pruebas funcionales, si todas las pruebas de aceptación dan un buen resultado el sistema pasa a ser implementado, lo cual nos da como resultado un programa de muy buena calidad y que es capaz de adaptarse a diferentes cambios con el tiempo.

Ventajas
-Buen cumplimiento de los plazos.
-Programación más sencilla.
-Constante proceso de pruebas.
-Buena calidad del trabajo.
-El cliente posee el control con respecto a sus prioridades.
-Clientes satisfechos.
-Perfecto cuando los requerimientos cambian constantemente.
-Funciona muy bien para proyectos pequeños.

Desventajas
-En proyectos más grandes, o de mayor valor, no es recomendable.
-Se necesita tener un entorno que permita la implementación constante de pruebas.
-Es preferible que los programadores estén en un mismo lugar y en un ambiente físico adecuado para poder reunirse y agruparse a pares.
-Débil en diseño y documentación, por lo cual no debe usarse cuando la seguridad es primordial.
-Mayor consumo de tiempo y recursos por la programación a pares.
-El exceso de pruebas retrasa el desarrollo.
-Es solo orientada a objetos.
-No es tan eficiente si el cliente no está en todo momento disponible.

Conclusión

Desde mi punto de vista, la programación extrema me parece muy interesante, porque me doy cuenta que se preocupa de aspectos como la moral del equipo y la simplicidad de código para los programadores sin dejar para nada de lado la calidad y la satisfacción para el cliente. Aunque este ciclo de vida no sea muy aplicable a proyectos más grande, no cabe duda de que da muy buenos resultados a los demás proyectos y es una forma muy agradable y rápida para desarrollar sistemas de buena calidad.

Autor: Edwards Sepúlveda

Modelo incremental



                                                      MODELO INCREMENTAL


El Modelo Incremental fue propuesto por primera vez por Harlan Mills en el año 1980, está basado en el “Modelo Clásico” o "Modelo Cascada".

El modelo Incremental se basa en incrementos en formas lineales de forma escalonada, en donde cada línea es una mejora en las funcionalidades o requerimientos a partir de la etapa anterior, el modelo tiene 4 etapas de desarrollo:

Análisis

Diseño

Código

Prueba


Características:

  • El cliente se involucra más.
  • Difícil de prever el costo final.
  • Difícil de aplicar a los sistemas transaccionales que tienden a ser integrados y a operar como un todo.
  • Los errores en los requisitos se detectan tarde.


Ventajas:

  • Es útil cuando los requerimientos no están claros
  • El usuario no tiene que esperar a que este finalizado el software para utilizarlo.
  • Resulta más sencillo acomodar cambios al acotar el tamaño de los incrementos.

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 metas claras para conocer el estado del proyecto.
  • Definir los requisitos puede demorar mucho, siendo su corrección tan costosa como en el modelo cascada
  • Al pasar a una nueva etapa, no se revisa la anterior y se pasan por altos los errores que esta pudiera tener


Autor: Sebastián Iraira






Modelo de desarrollo rápido de aplicaciones

Modelo de desarrollo rápido de aplicaciones (DRA)


Que es

Es un proceso de desarrollo de software diseñado para acelerar y facilitar la creación de aplicaciones, que ayuda a construir sistemas (funcionales) en un menor tiempo.
El DRA es una adaptación a “gran velocidad” en el cual se obtiene un desarrollo rápido utilizando un enfoque de construcción basado en componentes.

Características

-El software no se desarrolla y utiliza en su totalidad. Se realizan series de incrementos, los cuales añaden nuevas funciones al sistema.

-Generalmente, para el desarrollo de la interfaz de usuario en el sistema se utilizan sistemas interactivos que permiten diseñar la interfaz rápidamente dibujando y colocando los iconos en la interfaz.

-Para su desarrollo se utilizan herramientas de desarrollo visual para agilizar el proceso.

-el grupo de trabajo se compone de aproximadamente seis personas (incluyendo desarrolladores y usuarios) de tiempo completo. De la misma forma como los encargados de los requerimientos.

-Si es necesario, para cumplir con el calendario, se pueden eliminar algunas funciones segundarias.

Ventajas

-Las aplicaciones pueden ser fácilmente trasladados a otra plataforma.
-El desarrollo se realiza a un nivel de abstracción mayor.
-Entrega temprana al cliente.
-Mayor nivel de flexibilidad.
-Mayor involucramiento de los usuarios.
-Menor porcentaje de probabilidad de fallas.
-Bajo costo.
-Ciclos de desarrollo más pequeños.

Desventajas 

-No recomendable para proyectos de grandes envergaduras.
-Se necesita gran cantidad de personal (con amplia disponibilidad).
-Altos costos de herramientas y equipos necesarios.
-Mayor dificultad para medir su progreso.
-Menos eficiente y con menor precisión.






Faces de desarrollo


Modelado de gestión

El flujo de datos para el trabajo se define con forme responda a preguntas como: ¿Qué información genera?,  ¿Quién la genera?,  ¿A dónde va la información? y ¿Quién la proceso?

Modelado de datos

La información definida en la fase de modelado de gestión se refina y se genera un conjunto de objetos de datos necesarios para apoyar a la empresa. Además se definen características (atributos) de cada objeto y sus relaciones.

Modelado de proceso

Los objetos de datos definidos en la fase anterior (Modelado de datos) se convierten en flujos de información necesaria para implementar una función de gestión. Las descripciones del proceso surgen para mantener (agregar, modificar, eliminar) un objeto de datos.

Generación de aplicaciones

El DRA trabaja con técnicas de cuarta generación (conjunto de herramientas prefabricadas destinadas a un alto nivel de programación).  Y utiliza componentes de programas que ya existen (si es posible) o crea componentes que pueden ser reutilizables (si se considera necesario). En todos los casos se utilizan herramientas automáticas para facilitar la construcción del software.

Prueba y entrega


El modelo DRA enfatiza en la reutilización de sistemas ya creados, con esto se consigue la reducción en el tiempo de pruebas. Sin embargo,  es necesario probar todos los componentes nuevos y se necesita ejecutar todas las interfaces a fondo.

Autor: Ignacio Vivanco

Ciclo de vida cascada

CICLO DE VIDA CASCADA

¨  Siendo uno de los primeros ciclos de vida surgiendo en 1970. También conocido como ciclo de vida clásico este se encarga de ordenar el proyecto en diferentes etapas y  para comenzar con el desarrollo de una, debe haber finalizado la anterior.
¨  1ra etapa análisis de sistema: se defienden las funciones y  que requieren los usuarios en el software, además de mostrar lo que debe resolver este software.
¨  2da etapa diseño del sistema: se define la arquitectura que llevara el software.
¨  3ra etapa codificación: es cuando el diseño se transforma a código programable.
¨  4ta etapa prueba: se prueba lo programados desde varios puntos de vista, para corregir errores detectados.
¨  5ta etapa mantenimiento: se pone en funcionamiento el software, corrigiendo errores y mejorando su funcionabilidad.

                VENTAJAS
¨  El proyecto se crea de forma más ordenada
¨   No se mezclan las fases.
¨  Es fácil aprender a usar el software.

DESVENTAJAS
¨  No puede sufrir cambios en el desarrollo de las etapas.
¨  La creación de software puede ser lenta.
¨  El software no se opera hasta que esté completo.
¨  Esta desempeñado para la creación de pequeños proyectos.



Autor: Victor Navarrete