jueves, 7 de septiembre de 2017

Metodologias de Desarrollo de Software


1.3.1 Metodologías clásicas

Cascada

En Ingeniería de Software el desarrollo en cascada, también llamado modelo en cascada, es el enfoque metodológico que ordena rigurosamente las etapas del proceso para el desarrollo de software de tal forma que el inicio de cada etapa debe esperar a la finalización de la etapa anterior.


Desventajas:
·         Los proyectos reales raramente siguen el flujo secuencial que propone el modelo, siempre hay iteraciones y se crean problemas en la aplicación del paradigma.
·         Normalmente, es difícil para el cliente establecer explícitamente al principio  todos los requisitos. El ciclo de vida clásico lo requiere y tiene dificultades en acomodar posibles incertidumbres que pueden existir al comienzo de muchos productos.
·         El cliente debe tener paciencia. Hasta llegar a las etapas finales del proyecto, no estará disponible una versión operativa del programa. Un error importante no detectado hasta que el programa este funcionando puede ser desastroso.

Método Incremental

El modelo incremental es una evolución del modelo de cascada; viene a suplir el problema de no poder retroceder en las fases de desarrollo del software. Es, por tanto, un modelo no secuencial. El funcionamiento es sencillo. Comienza con el análisis de los requisitos, tras el cual se prepara un primer diseño. La novedad de este modelo respecto del anterior, es la introducción de iteraciones para dividir diseños.

  

 Evolutivo

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.
El desarrollo evolutivo consta del desarrollo de una versión inicial que luego de exponerse se va refinando de acuerdo de los comentarios o nuevos requerimientos por parte del cliente o del usuario final. Las fases de especificación, desarrollo y validación se entrelazan en vez de separarse.
Existen dos tipos de desarrollo evolutivo:




 Espiral

La metodología de desarrollo en espiral es una evolución de método clásico en cascada (Waterfall, top-down) y se considera un método de desarrollo incremental. Este tipo de metodología equivale al de cascada, pero en él se permite el solapamiento de varias etapas con el objetivo de flexibilizar y compensar el tiempo de desarrollo total y alcanzar resultados funcionales en etapas tempranas. Está considerada como un método de desarrollo rápido y eficiente.

Ventajas
·         Permite el desarrollo de proyectos en donde los objetivos finales están perfectamente definidos pero todos los detalles no pueden ser completamente establecidos al principio.
·         Es adaptable: algunos de los requerimientos (que no los objetivos) pueden cambiar durante el ciclo de desarrollo.
·         Permite la especialización de los equipos de trabajo.
·         Apela a una gestión de proyecto ordenada.
·         Facilita la distribución de recursos de desarrollo.
·         Economía: es posible mantener constantes los recursos de desarrollo.

·         Permite conseguir funcionalidad en etapas tempranas.

Prototipos

Este modelo consiste en un procedimiento que permite al equipo de desarrollo diseñar y analizar una aplicación que representa el sistema que sería implementado (McCracken y Jackson, 1982). Dicha aplicación, llamada prototipo, está compuesta por los componentes que se desean evaluar (i.e. las funciones principales).

Desarrollo basado en componentes

La metodología de software basada en Componentes surgió a finales de los 90's como una aproximación basada en la reutilización al desarrollo de sistemas de software. Está metodología fue motivada por la frustración de los desarrolladores de que el modelo orientados a objetos no aplicaba una reutilización extensiva, tal como ésta sugería originalmente, debido a que la utilización de clases implica el conocimiento detallado de ellas, lo cual significa que se debía tener acceso al código fuente lo que imposibilitaba el marketing de clases para su reutilización.

Otras Metodologías
Ganar-ganar

Para la metodología del desarrollo del proyecto GAse utilizó principalmente el modelo reciente Ganar-ganar ya que con este existen ganancias para todas las partes implicadas en nuestro caso para el usuario en el aprendizaje del dialecto mazahua y la recuperación del mismo en la sociedad y para el desarrollador en cuestión monetaria y emocional ya que se obtiene una satisfacción al realizar un sistema que pueda salvar un dialecto tan importante como el mazahua, para poder entender porque fue que nos referimos a dar a conocer que este modelo es el indicado, se dará una breve explicación de lo que trata este modelo para justificar su uso en nuestro sistema GA3.



Proceso Unificado (UP)

El Proceso Unificado de Desarrollo Software o simplemente Proceso Unificado es un marco de desarrollo de software que se caracteriza por estar dirigido por casos de uso, centrado en la arquitectura y por ser iterativo e incremental. El refinamiento más conocido y documentado del Proceso Unificado es el Proceso Unificado de Rational o simplemente RUP.




Metodologías Ágiles

El desarrollo ágil de software son métodos de ingeniería del software basados en el desarrollo iterativo e incremental, donde los requerimientos y soluciones evolucionan mediante la colaboración de grupos auto organizados y multidisciplinarios. Existen muchos métodos de desarrollo ágil; la mayoría minimiza riesgos desarrollando software en lapsos cortos. El software desarrollado en una unidad de tiempo es llamado una iteración, la cual debe durar de una a cuatro semanas.


Reingeniería

Los principios en que se basa la reingeniería, lejos de responder ahora a una moda más, revolucionan radicalmente la forma en que se ha diseñado el trabajo en el siglo XX, y constituyen una alternativa permanente de efectividad organizacional para los ejecutivos.
Todo esto provoco que para que las empresas se adaptaran y modificaran su entorno competitivo y dinámico aplicaran mecanismos de reingeniería para imponer un nuevo producto, proceso productivo o paradigma organizacional, constituyendo esto una nueva tendencia en el desarrollo de las organizaciones y que haya sido el resultado de los cambios cada vez más rápidos en su entorno.









1.3.2 Metodologías Agiles

Las metodologías ágiles son métodos de desarrollo de software en los que las necesidades y soluciones evolucionan a través de una colaboración estrecha entre equipos multidisciplinarios. Se caracterizan por enfatizar la comunicación frente a la documentación, por el desarrollo evolutivo y por su flexibilidad.
Existe una denominada Alianza Ágil que define los siguientes 12 principios para toda metodología ágil:

1.   Satisfacer al cliente con entregas tempranas y continuas de software valioso.
2.   Los requisitos cambiantes son bienvenidos, incluso en fases tardías del desarrollo.
3.   Entregar con frecuencia software funcionando, -de dos semanas a dos meses,- cuanto antes se haga mejor.
4.   El cliente y los desarrolladores deben trabajar juntos a diario a lo largo del proyecto.
5.   Individuos motivados. Darles el ambiente y el soporte que necesitan, y confiar en ellos para obtener el trabajo realizado.
6.   El método más eficiente y efectivo de transmitir información hacia y dentro del equipo es la conversación cara a cara.
7.   El software en funcionamiento es la medida principal de progreso.
8.   El desarrollo debe ser sostenible. Los participantes deben ser capaces de mantener un paso constante de manera indefinida.
9.   Atención continua a la excelencia técnica y a un buen diseño.
10. La simplicidad es esencial, maximizando el avance del trabajo no realizado.
11. Las mejores arquitecturas, los mejores requisitos y los mejores diseños emergen de equipos auto-organizados.
12. A intervalos regulares el equipo refleja la forma en que se puede volver más efectivo, entonces su comportamiento se ajusta y adecua en concordancia.






    1.3.3 Metodologías Otras Filosofías

·         La "Programación estructurada" o la "Programación Orientada a Objetos" son paradigmas o modelos de programación. Indican pautas de comportamiento en los sistemas de programación... no tienen nada que ver con el ciclo de vida del software ni la manera en la que debe realizarse cada tarea para un proyecto concreto... así pues... NO SON METODOLOGÍAS.

El lenguaje UML (Unified Modeling Languaje) es un gran logro de la ingeniería. Aún con sus carencias, y puntos criticables es un avance muy significativo: un lenguaje común para que todos los profesionales del desarrollo de sistemas -de software o no- expresen sus ideas... pero el UML no le indica a nadie la manera de realizar las cada tarea en un proyecto concreto: tan solo es una herramienta para expresar ideas... así pues... NO ES UNA METODOLOGÍA. Sin embargo, algunas metodologías de las que hemos comentado, como RUP o METRICA hacen referencia a UML como herramienta para expresar ideas.

No hay comentarios.:

Publicar un comentario