METODOLOGIAS DE DESARROLLO DE SOFTWARE
Una metodología de desarrollo de software, es un marco de trabajo que mediante herramientas y procedimientos es usado para estructurar, planear y controlar el proceso de desarrollo en sistemas de información.
Tipos de metodologías existentes:
Metodologías Tradicionales
· Rational Unified Process (RUP): Proceso Iterativo e Incremental, centrado en la arquitectura y dirigido por casos de uso.
Pretende implementar las mejores prácticas actuales en ingeniería de software.
Divide el proceso de desarrollo en ciclos, teniendo un producto al final de cada ciclo.
Ventajas
- Evaluación en cada fase que permite cambios de objetivos
- Funciona bien en proyectos de innovación.
- Es sencillo, ya que sigue los pasos intuitivos necesarios a la hora de desarrollar el software.
- Seguimiento detallado en cada una de las fases
Desventajas
- La evaluación de riesgos es compleja
- Excesiva flexibilidad para algunos proyectos
- Estamos poniendo a nuestro cliente en una situación que puede ser muy incómoda para él.
- Nuestro cliente deberá ser capaz de describir y entender a un gran nivel de detalle para poder acordar un alcance del proyecto con él.
· Microsoft Solution Framework (MSF):
Es un compendio de las mejores prácticas en cuanto a administración de proyectos se refiere. Más que una metodología rígida de administración de proyectos, MSF es una serie de modelos que puede adaptarse a cualquier proyecto de tecnología de información.
Metodologías Agiles
Nacen como respuesta a los problemas de las metodologías tradicionales.
Dan mayor potencia al desarrollo de software a gran escala.
Se basa en dos aspectos puntuales:
· Retrasar las decisiones: Es el eje en cual gira la metodología ágil, el retrasar las decisiones tan como sea posible de manera responsable será ventajoso tanto para el cliente como para la empresa. Las principales ventajas de retrasar las decisiones son:
- Reduce el número de decisiones de alta inversión que se toman.
- Reduce el número de cambios necesario en el proyecto.
- Reduce el coste del cambio
· Planificación adaptativa: permite estar preparados para el cambio ya que lo hemos introducido en nuestro proceso de desarrollo.
Consiste en tomar decisiones a lo largo del proyecto, transformando el proyecto en un conjunto de proyectos pequeños.
Esta planificación a corto plazo permite tener software disponible para los clientes y además ir aprendiendo del feedback para hacer nuestra planificación más sensible.
Tipos de metodologías agiles
Extreme Programming (XP)
Es la mas destacada de los procesos agiles de desarrollo de software, se diferencia de las metodologías tradicionales principalmente en que pone mas énfasis en la adaptabilidad que la previsibilidad.
Ventajas:
- Apropiado para entornos volátiles
- Estar preparados para el cambio, significa reducir su coste.
- Planificación más transparente para nuestros clientes, conocen las fechas de entrega de funcionalidades.
- Permitirá definir en cada iteración cuales son los objetivos de la siguiente.
- Permite tener realimentación de los usuarios muy útil.
- La presión esta a lo largo de todo el proyecto, y no en una entrega final
Desventajas:
- Delimitar el alcance del proyecto con nuestro cliente es virtualmente imposible
- Para mitigar esta desventaja se plantea definir un alcance a alto nivel basado en la experiencia.
AUP (Ágil Unified Process)
El AUP es un acercamiento aerodinámico a desarrollo del software basado en el Proceso Unificado Rational de IBM (RUP), basado en disciplinas y entregables incrementales con el tiempo.
El ciclo de vida en proyectos grandes es serial mientras que en los pequeños es iterativo.
SCRUM
Es un modelo de referencia que define un conjunto de prácticas y roles, y que puede tomarse como punto de partida para definir el proceso de desarrollo que se ejecutará durante un proyecto.
ICONIX
- Se define como un proceso de desarrollo de software práctico.
- Se encuentra entre la complejidad del RUP y la simplicidad de XP.
- Esta adaptado a los patrones de diseño.
- Es iterativo e incremental
Pair Programming
- Dos programadores trabajando juntos son más efectivos que por separado
- El conocimiento grupal crece más rápido
Test Driven Development (TDD)
- Diseño e implementación de las pruebas antes de programar la funcionalidad
- El programador crea sus propios tests de unidad
- Integración continua
- Tests funcionales
Metodologías hibridas
Algunos ejemplos son las adaptaciones a los desarrollos Web.
UWE UML (UML-Based Web Engineering) es una metodología de desarrollo de aplicaciones web, utilizada en la ingeniería web, prestando especial atención en sistematización y personalización (sistemas adaptativos).
Diferencias:
Metodologías Tradicionales | Metodologías Agiles |
Basadas en normas provenientes de estándares seguidos por el entorno de desarrollo | Basadas en heurísticas provenientes de prácticas de producción de código |
Cierta resistencia a los cambios | Especialmente preparados para cambios durante el proyecto |
Impuestas externamente | Impuestas internamente (por el equipo) |
Mas Roles | Pocos Roles |
Mas Artefactos | Menos Artefactos |
La arquitectura del software es esencial y se expresa mediante modelos | Menos énfasis en la arquitectura del software |
Grupos grandes y posiblemente distribuidos | Grupos pequeños (<10 integrantes) y trabajando en el mismo sitio |
Proceso mucho más controlado, con numerosas políticas/normas | Proceso menos controlado, con pocos principios. |
El cliente interactúa con el equipo de desarrollo mediante reuniones | El cliente es parte del equipo de desarrollo |
Para un MIS en la producción, sería bueno utilizar una metodología ágil, para poder cumplir los objetivos en tiempo y forma, permitiendo a la empresa reducir costos.
Para un DSS referido a un tablero de comando en una empresa industrial, utilizaría una metodología hibrida, ya que es una metodología de desarrollo de aplicaciones web, utilizada en la ingeniería web y podría ser lo mas parecido a lo que se en un tablero de comando.
Torino, Paola Leg. 12516.
No hay comentarios:
Publicar un comentario