jueves, 22 de septiembre de 2016

Desarrollo de Software Ágil



En la entrada de hoy se va a hablar sobre el desarrollo de software ágil o lo que se conoce como métodos ágiles. La descripción de esta publicación tratará de responder a la siguientes preguntas:
  1. ¿Cómo surge este método?
  2. ¿Qué son los métodos ágiles?
  3. ¿Cuáles son los beneficios del método ágil?
Para responder la primera pregunta, debemos situarnos en los antecedentes del desarrollo de software, es decir, antes de aplicar estas técnicas. Técnicamente, el mundo de la ingeniería de software no pasaba por uno de sus mejores momentos, ya que los métodos de trabajos y producción eran poco predecibles, y debido a la volatil que eran dichos requisitos, los modelos industriales eran muy dificiles de mapear a un software. Es por esto que surgieron estos métodos, con el fin de corregir la productividad en los casos donde la especificación y validación de las necesidades del cliente cambia constantemente.

En cuanto al segundo punto, los métodos ágiles, son las técnicas que tratan de enfocar el desarrollo software al cambio de los requisitos (incluso aunque estos se sitúen ya dentro de la fase de diseño), de forma que el cliente se involucre en el trabajo (pues son las mayores fuentes de cambios en la creación de un sistema de información).
Para poder enfocar el desarrollo a los cambios, podemos considerar lo siguiente, si tenemos un software que funciona, se puede calcular el proceso completado en la construcción del sistema. Para ello es importante obtener las siguientes características:

El equipo de negocio y de desarrollo deben trabajar juntos y con una comunicación fluida y consistente
  • Trabajar orientado a la simplicidad.
  • Intentar seguir patrones de diseño y la calidad técnica en la programación.
  • Enfocar el diseño de la arquitectura hacia componentes.

En cuanto a los beneficios, podemos mencionar:
  • Su ciclo de vida es simple y fácil de entender: captura de requisitos, diseño de la solución, configuración / desarrollo, test, implementación y mantenimiento.
  • Su aproximación es “disciplinada”: Basada en una definición exhaustiva del trabajo, una revisión sistemática en hitos y énfasis en el control y la documentación del proyecto
Sin embargo, las fases de diseño y de configuración suelen ser mas largas y coplejas cuanto mayor es el alcance del proyecto, y en entre mayor sea el alcance, mas probable es tambien que al llegar a la fase de test se descubra que el enfoque dado al a solución no se ajusta con las necesidades del cliente y el ajuste de estas fallas nos puede tomar mas tiempo del esperado, sin contar que se produce lo conocido como "deuda técnica".

Una solución mal enfocada nos puede provocar grandes retrasos.


sábado, 17 de septiembre de 2016

Modelos de la Ingeniería de Software

¿Qué es un Modelo de desarrollo?

Es una representación abstracta de un proceso de software, cada modelo representa el proceso de desarrollo de software de una manera particular. A pesar de estar definidos claramente, no representan necesariamente la realidad de cómo se debe desarrollar el software, sino uque establece un enfoque común.
Un modelo puede ser modificado y adaptado de acuerdo a las necesidades del software que se desarrolla. 
En forma general, los modelos se pueden clasificar en tres grupos: 

1. El Modelo en cascada: El modelo en cascada o tambien conocido como Ciclo de vida del Software, da las pautas que permiten la organización en el desarrollo del software a través de la implementación de sus características etapas, esto quiere decir que cuando se este llevando a cabo todas las tareas pertinetnes de esa etapa, no se podrá avanzar a la siguiente etapa hasta no concluir con todas las tareas

 Imagen 1. Modelos en cascada

2. Desarrollo evolutivo: Este enfoque entrelaza las actividades de especificación, desarrollo y validación. Un sistema inicial se desarrolla rápidamente a partir de especificaciones abstractas. Éste se refina basándose en las peticiones del cliente para producir un sistema que satisfaga sus necesidades.
  • Se adaptan más fácilmente a los cambios introducidos a lo largo del desarrollo.
  • Iterativos
  • En cada iteración se obtienen versiones más completas del SW.

3. Ingeniería del software basada en componentes: En esencia, un componente es una pieza de código preelaborado que encapsula alguna funcionalidad expuesta a través de interfaces estándar. El proceso de desarrollo del sistema se enfoca en integrar estos componentes en el sistema más que en desarrollarlos desde cero.
Nota
Aunque existen muchos tipos de modelos de desarrollo, de forma genérica la mayoría está clasificada en una de estas 3 categorías, y estos a pesar de ser diferentes a veces son usados de manera simultáneamente especialmente en sistemas grandes.