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 GA3 se
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.