Metodologías de desarrollo de software.
Modelos de proceso prescriptivo.
Los modelos de proceso prescriptivo fueron propuestos originalmente para poner orden en el
caos del desarrollo de software.
La historia indica que estos modelos tradicionales han dado cierta estructura útil al trabajo de
ingeniería de software y que constituyen un mapa razonablemente eficaz para los equipos de
software. Sin embargo, el trabajo de ingeniería de software y el producto que genera siguen
“al borde del caos”.
Modelo de la cascada
El modelo de la cascada, a veces llamado ciclo de vida clásico sugiere un enfoque
sistemático y secuencial6 para el desarrollo del software, que comienza con la especificación
de los requerimientos por parte del cliente y avanza a través de planeación, modelado,
construcción y despliegue, para concluir con el apoyo del software terminado.
Una variante de la representación del modelo de la cascada se denomina modelo en v
se aprecia la relación entre las acciones para el aseguramiento de la calidad y aquellas
asociadas con la comunicación, modelado y construcción temprana.
Modelos de proceso incremental
El modelo incremental aplica secuencias lineales en forma escalonada a medida que
avanza el calendario de actividades. Cada secuencia lineal produce “incrementos” de software
susceptibles de entregarse de manera parecida a los incrementos producidos en un flujo de
proceso evolutivo.
El modelo de proceso incremental se centra en que en cada incremento se entrega un
producto que ya opera. Los primeros incrementos son versiones desnudas del producto final,
pero proporcionan capacidad que sirve al usuario y también le dan una plataforma de
evaluación.
Modelos de proceso evolutivo
Los modelos evolutivos son iterativos. Se caracterizan por la manera en la que
permiten desarrollar versiones cada vez más completas del software.
Hacer prototipos:
Este se centra en la representación de aquellos aspectos del software que serán
visibles para los usuarios finales. El diseño rápido lleva a la construcción de un prototipo. Éste
se entrega y es evaluado por los participantes, que dan retroalimentación para mejorar los
requerimientos.
El modelo espiral.
El modelo espiral usa los prototipos como mecanismo de reducción de riesgos, pero,
más importante, permite aplicar el enfoque de hacer prototipos en cualquier etapa de la
evolución del producto.
Modelos concurrentes
El modelo de desarrollo concurrente, en ocasiones llamado ingeniería concurrente,
permite que un equipo de software represente elementos iterativos y concurrentes de
cualquiera de los modelos de proceso.
El modelado concurrente define una serie de eventos que desencadenan transiciones
de un estado a otro para cada una de las actividades, acciones o tareas de la ingeniería de
software.
Modelos de proceso especializado
Los modelos de proceso especializado tienen muchas de las características de uno o más de los
modelos tradicionales. Sin embargo, dichos modelos tienden a aplicarse cuando se elige un
enfoque de ingeniería de software especializado o definido muy específicamente.
Desarrollo basado en componentes
El modelo de desarrollo basado en componentes incorpora muchas de las características
del modelo espiral. Sin embargo, el modelo de desarrollo basado en componentes construye
aplicaciones a partir de fragmentos de software prefabricados.
¿qué es la agilidad?
La agilidad es algo más que una respuesta efectiva al cambio. La agilidad puede aplicarse a
cualquier proceso del software. Sin embargo, para lograrlo es esencial que éste se diseñe en forma
que permita al equipo del proyecto adaptar las tareas y hacerlas directas, ejecutar la planeación de
manera que entienda la fluidez de un enfoque ágil del desarrollo, eliminar todos los productos del
trabajo excepto los más esenciales y mantener-los esbeltos, y poner el énfasis en una estrategia de
entrega incremental que haga trabajar al software tan rápido como sea posible para el cliente,
según el tipo de producto y el ambiente de operación.
La agilidad y el costo del cambio
Un proceso ágil bien diseñado “aplana” el costo de la curva de cambio lo que permite que el equipo
de software haga cambios en una fase tardía de un proyecto de software sin que haya un efecto
notable en el costo y en el tiempo. El lector ya sabe que el proceso ágil incluye la entrega
incremental. Cuando ésta se acopla con otras prácticas ágiles, como las pruebas unitarias continuas
y la programación por parejas, el costo de hacer un cambio disminuye.
¿qué es un proceso ágil?
Un proceso de software ágil debe adaptarse incrementalmente. Para lograr la adaptación
incremental, un equipo ágil requiere retroalimentación con el cliente.
La política del desarrollo ágil
Nadie está contra la agilidad. La pregunta real es: ¿cuál es la mejor forma de lograrla? De
igual importancia: ¿cómo construir software que satisfaga en el momento las necesidades de los
clientes y que tenga características de calidad que permitan ampliarlo y escalarlo para que también
las satisfaga en el largo plazo?
Factores humanos
Si los miembros del equipo de software son los que van a generar las características del
proceso que van a aplicarse a la elaboración de software, entre ellos debe existir cierto número de
características clave, mismas que debe compartir el equipo ágil como tal:
Competencia.
Enfoque común.
Colaboración.
Habilidad para tomar decisiones.
Capacidad para resolver problemas difusos.
Confianza y respeto mutuos.
Organización propia.