CAPÍTULO II: MARCO TEÓRICO
2.2 TEORÍAS QUE SUSTENTAN EL TRABAJO
2.2.8 Metodologías para el Desarrollo de Software
Según (Sierra Guzmán, 2012), metodología es la rama de la lógica que se encarga del estudio de los diferentes métodos para llegar al conocimiento crítico y reflexivo que permita la fundamentación de la ciencia.
Importancia de la Metodología como elemento fundamental en la investigación del conocimiento:
- Aprender a elaborar un diseño o proyecto correcto de cualquier investigación.
- Facilita la búsqueda de información.
- Ayuda a desarrollar diversas habilidades de análisis y síntesis, así como aplicar el razonamiento.
- Permite la elaboración adecuada de cualquier género (académico o empresarial).
- Estructurar investigaciones de calidad cualitativa y cuantitativa.
- Potenciar los métodos y técnicas de investigación que ya se posea.
- Planear con orden y sistematicidad cualquier actividad.
Tenemos 2 tipos de metodologías: las ágiles y las tradicionales.
Según lo sustentado por (Rodríguez Mesa, 2014), las principales metodologías tradicionales son las conocidas RUP y MSF, que centran su atención en llevar una documentación exhaustiva de todo el proyecto y en cumplir con un plan de proyecto. Las metodologías tradicionales (formales) se focalizan en documentación, planificación y procesos.
A.Metodología RUP
De acuedo a (GrupNADD, 2012), el Proceso Unificado de Rational es un proceso de ingeniería de software que suministra un enfoque para asignar tareas y responsabilidades dentro de una organización de desarrollo. Su objetivo es asegurar la producción de software de alta y de mayor calidad para satisfacer las necesidades de los usuarios que tienen un cumplimiento al final dentro de un límite de tiempo y presupuesto previsible.
Así mismo, el RUP está basado en 6 principios claves que son los siguientes:
- Adaptar el proceso: El proceso deberá adaptarse a las necesidades del cliente
ya que es muy importante interactuar con él. El tamaño del mismo, así como su tipo o las regulaciones que lo condicionen, influirán en su diseño específico.
- Equilibrar prioridades: Los requisitos de los diversos participantes pueden
ser diferentes, contradictorios o disputarse recursos limitados. Debe encontrarse un equilibrio, ya que gracias a este equilibrio se podrán corregir desacuerdos que surjan en el futuro.
- Demostrar valor iterativamente: Los proyectos se entregan, aunque sea de
un modo interno, en etapas iteradas. En cada iteración se analiza la opinión de los inversores, la estabilidad y calidad del producto, y se refina la dirección del proyecto, así como también los riesgos involucrados.
- Colaboración entre equipos: El desarrollo de software no lo hace una única
persona sino múltiples equipos. Debe haber una comunicación fluida para coordinar requisitos, desarrollo, evaluaciones, planes, resultados, etc.
- Elevar el nivel de abstracción: Este principio dominante motiva el uso de
directamente de los requisitos a la codificación de software sin saber con certeza qué codificar para satisfacer al cliente. Un alto nivel de abstracción también permite discusiones sobre diversos niveles y soluciones arquitectónicas. Éstas se pueden acompañar por las representaciones visuales de la arquitectura, por ejemplo, con el lenguaje UML.
- Enfocarse en la calidad: El control de calidad no debe realizarse al final de
cada iteración, sino en todos los aspectos de la producción. El aseguramiento de la calidad forma parte del proceso de desarrollo y no de un grupo independiente.
Principales características de esta metodología son:
- Forma disciplinada de asignar tareas y responsabilidades (quién hace qué, cuándo y cómo)
- Pretende implementar las mejores prácticas en Ingeniería de Software. - Desarrollo interactivo.
- Administración de requisitos.
- Uso de arquitectura basada en componentes. - Control de cambio.
- Modelado visual del software.
- Verificación de la calidad del software.
Fases de la Metodología RUP
- Fase de inicio
Durante esta fase de inicio las iteraciones se centran con mayor énfasis en las actividades de modelamiento de la empresa y en sus requerimientos.
- Fase de elaboración
Durante esta fase de elaboración, se centran al desarrollo de los casos de uso, este lleva una serie de requerimientos y pasos; el modelo de la organización, el análisis y el diseño se van acumulando las actividades y para empezar una parte de implementación mediante desarrollo de la fase de inicio que va a ser orientada a la base de la construcción de todas las especificaciones de la arquitectura del diseño.
- Fase de construcción
Durante la fase de construcción, se lleva a cabo la construcción del producto por medio de una serie de iteraciones las cuales se seleccionan algunos Casos de Uso, se define su análisis y después el diseño y se procede a su implantación y sus respectivas pruebas.
- Fase de transición
Durante esta fase de transición se busca garantizar que el producto este bien preparado para su entrega al usuario.
Beneficios y Ventajas de la Metodología RUP - Promueve la reusabilidad.
- Riqueza semántica.
- Disminuye la brecha semántica entre la visión interna y la visión externa del sistema.
- Facilita la construcción de prototipos.
Figura N° 2.5 Fases y Artefactos (RUP)
Fuente: (Cortés, 2013)
B.Metodología MSF
Según (Rivera, 2010) esta es una metodología flexible e interrelacionada con una serie de conceptos, modelos y prácticas de uso, que controlan la planificación, el desarrollo y la gestión de proyectos tecnológicos. MSF se centra en los modelos de proceso y de equipo dejando en un segundo plano las elecciones tecnológicas.
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. Todo proyecto es separado en cinco principales fases:
- Visión y Alcances: Se definen los líderes y responsables del proyecto,
adicionalmente se identifican las metas y objetivos a alcanzar; estas últimas se deben respetar durante la ejecución del proyecto en su totalidad, y se realiza la evaluación inicial de riesgos del proyecto.
- Planificación: Es en esta fase es cuando la mayor parte de la planeación para
el proyecto es terminada. El equipo prepara las especificaciones funcionales, realiza el proceso de diseño de la solución, y prepara los planes de trabajo, estimaciones de costos y cronogramas de los diferentes entregables del proyecto.
- Desarrollo: Durante esta fase el equipo realice la mayor parte de la
construcción de los componentes (tanto documentación como código), sin embargo, se puede realizar algún trabajo de desarrollo durante la etapa de estabilización en respuesta a los resultados de las pruebas. La infraestructura también es desarrollada durante esta fase.
- Estabilización: En esta fase se conducen pruebas sobre la solución, las
pruebas de esta etapa enfatizan el uso y operación bajo condiciones realistas. El equipo se enfoca en priorizar y resolver errores y preparar la solución para el lanzamiento.
- Implantación: Durante esta fase el equipo implanta la tecnología base y los
componentes relacionados, estabiliza la instalación, traspasa el proyecto al personal soporte y operaciones, y obtiene la aprobación final del cliente.
- Metodologías Ágiles
De acuerdo a (Raya, 2014), las metodologías ágiles son una serie de técnicas para la gestión de proyectos que han surgido como contraposición a los métodos clásicos de gestión.
- Los individuos y su interacción, por encima de los procesos y las herramientas. - El software que funciona, frente a la documentación exhaustiva.
- La colaboración con el cliente, por encima de la negociación contractual. - La respuesta al cambio, por encima del seguimiento de un plan.
Inicialmente, mucha gente asocia metodologías ágiles con falta de documentación o control sobre el proyecto, pero esto es falso. Lo que se desea es minimizar el impacto de las tareas que no son totalmente imprescindibles para conseguir el objetivo del proyecto. Se pretende aumentar la eficiencia de las personas involucradas en el
proyecto y, como resultado de ello,minimizar el coste.
Entre los principales métodos ágiles tenemos el XP (eXtreme Programming), Scrum, Iconix, Cristal Methods, AUP.
A.Metodología XP (Extreme Programming)
Según (Méndez, 2013) XP es una metodología liviana de desarrollo de software. Es un conjunto de prácticas y reglas empleadas para desarrollar software. Basada en diferentes ideas de cómo enfrentar ambientes cambiantes.
En vez de planificar, analizar y diseñar para el futuro, XP hace todo esto un poco cada vez, a través de todo el proceso de desarrollo.
- Objetivos
Establecer las mejores prácticas de Ingeniería de Software en el desarrollo de proyectos.
Mejorar la productividad de los proyectos.
Garantizar la calidad de Software desarrollado, haciendo que este supere las expectativas del cliente.
Asumir que con cierta planificación, codificación y pruebas se puede decidir si se está siguiendo un camino correcto o equivocado, evitando retroceder cuando sea demasiado tarde.
- Características
Metodología basada en prueba y error para obtener un software que funcione realmente.
Expresada en forma de 12 prácticas (conjunto completo, complementándose unas a otras), las cuales son conocidas pero su novedad es juntarlas.
Está orientada hacia quien produce y usa el software (el cliente participa muy activamente).
Reduce el coste del cambio en todas las etapas del ciclo de vida del sistema.
Combina las que han demostrado ser las mejores prácticas para desarrollar software, y las lleva al extremo.
Cliente bien definido.
Los requisitos pueden cambiar.
Grupo pequeño y muy integrado (2-12 personas).
Fundamentalmente se trabaja en parejas.
Equipo con formación elevada y capacidad de aprender.
- Principios del Método XP
Este método se basa en 4 principios bien definidos:
Simplicidad: La simplicidad consiste en desarrollar sólo el sistema que
realmente se necesita. Implica resolver en cada momento sólo las necesidades actuales.
Feedback: Una metodología basada en el desarrollo iterativo de pequeñas
partes, con entregas y pruebas frecuentes y continuas, proporciona un flujo de retro- información valioso para detectar los problemas o desviaciones.
Decisión: Implica saber tomar decisiones difíciles. Reparar un error cuando
se detecta. Mejorar el código tras el feedback y las sucesivas iteraciones.
Comunicación: XP hace casi imposible la falta de comunicación, ya que
Figura N° 2.6 Ciclo vida XP Fuente: (Méndez, 2013)
- Ventajas e Inconvenientes
Ventajas
Da lugar a una programación sumamente organizada.
Cuenta con una tasa de errores muy pequeña.
Propicia la satisfacción del programador.
Facilita los cambios.
Permite ahorrar mucho tiempo y dinero.
Puede ser aplicada a cualquier lenguaje de programación.
El cliente tiene el control sobre las prioridades.
Se hacen pruebas continuas durante el proyecto.
Inconvenientes
Es recomendable emplearla solo en proyectos a corto plazo.
En caso de fallar, las comisiones son muy altas.
Requiere de un rígido ajuste a los principios de XP.
Tabla N° 2.1 MetodologíasTradicionales Vs. Metodologías Ágiles
METODOLOGÍAS TRADICIONALES METODOLOGÍAS ÁGILES
Mayores instrumentos de documentación de modelos, el cual es esencial y se requiere su mantenimiento.
Pocos instrumentos de documentación de modelos. El modelado es prescindible y hasta desechable.
Actores con mayores roles específicos y funcionales.
Actores con pocos roles, más genéricos y flexibles.
El cliente interactúa con el equipo de desarrollo mediante reuniones.
El cliente es parte del equipo de
desarrollo (además in-situ) La arquitectura se define previamente en el
proyecto (análisis-diseño)
La arquitectura de software se va
definiendo y mejorando a lo largo del proyecto.
Énfasis en la definición del proceso: roles, actividades y artefactos.
Énfasis en los aspectos humanos: el individuo y el. trabajo en equipo
Se espera que no ocurran cambios de gran
impacto durante el proyecto. Se esperan cambios durante el proyecto.
Fuente: (Penandes, 2013)
Tabla N° 2.2 Diferencias entre Metodología RUP y SCRUM
RUP SCRUM
Ciclo:
Un ciclo se define en 4 fases, pero algunos flujos de trabajo pueden ser concurrentes.
Ciclo:
Cada sprint (iteración) es un ciclo completo.
Planificación:
Se utiliza un plan de proyecto formal, asociado con múltiples iteraciones. El plan es determinado a una fecha final y también dispone de hitos intermedios.
Planificación:
El plan de proyecto no cuenta con extremos o límites. Con cada iteración del plan, la siguiente iteración se determina en el final de la iteración actual (no se determina una fecha final). El Dueño del Producto (Clave de negocios de usuario) determina cuando el proyecto se realiza.
Alcance:
El alcance está predefinido antes del inicio del proyecto y documentado en el Documento de Alcance.
El ámbito de aplicación puede ser revisado durante el proyecto, ya que se van aclarando los requisitos, pero estas revisiones estarán sujetos a un procedimiento estrictamente controlado.
Alcance:
En vez del alcance, SCRUM utiliza una cartera de proyectos, que se re-evalua al final de cada iteración (Sprint).
Artefactos:
Visión / Documento de alcance, paquete de requerimientos funcionales, la arquitectura del sistema de documentos, el plan de desarrollo, plan de prueba, scripts de prueba, etc.
Artefactos:
El único artefacto formal es el software operativo.
Tipo de Proyecto / Producto:
Recomendado para grandes proyectos a largo plazo, de nivel empresarial con complejidad media-alta.
Tipo de Proyecto / Producto:
Recomendado para mejoras y organizaciones rápidas que no dependen de una fecha límite.