2. Rapid Application Development
(RAD)
Desarrollo Rapido De
Aplicaciones
Comprar puede ahorrar dinero
en comparación con construir.
Los entregables pueden ser
fácilmente trasladados a otra
plataforma.
El desarrollo se realiza a un nivel
de abstracción mayor.
Visibilidad temprana.
Mayor flexibilidad.
Menor codificación manual.
Mayor involucramiento de los
usuarios.
Posiblemente menos fallas.
Posiblemente menor costo.
Ciclos de desarrollo más
pequeños.
Interfaz gráfica estándar.
Programación Orientada a
Objetos (OOP)
Abstracción: Denota
las características esenciales
de un objeto, donde se
capturan sus
comportamientos.
Encapsulamiento: Significa
reunir a todos los elementos
que pueden considerarse
pertenecientes a una misma
entidad, al mismo nivel de
abstracción
Principio de ocultación: Cada
objeto está aislado del
exterior, es un módulo natural,
y cada tipo de objeto expone
una interfaz a otros objetos
que específica cómo
pueden interactuar con los
objetos de la clase.
Polimorfismo:
comportamientos diferentes,
asociados a objetos distintos,
pueden compartir el mismo
nombre, al llamarlos por ese
nombre se utilizará
el comportamiento
correspondiente al objeto que
se esté usando.
Herencia: Los objetos heredan
las propiedades y
el comportamiento de todas
las clases a las que pertenecen.
Recolección de basura:
la Recolección de basura o
Garbage Collector es la técnica
por la cual el ambiente de
Objetos se encarga de destruir
automáticamente, y por tanto
desasignar de la memoria, los
Objetos que hayan quedado
sin ninguna referencia a ellos.
VFSM (Virtual Finite
State Machine)
Intenta abstraer la
arquitectura real sobre
la que se
implementarán los
programas. Para
intentar aplicar
métodos matemáticos
genéricos que nos
permitan simular su
comportamiento. Y
poder así diseñar con
garantías de cual va a
ser su funcionamiento.
Aplica la tecnología de
las Máquinas Virtuales.
Y nació en el entorno de
los sistemas embebidos,
para independizarlos
del hardware donde se
insertan.
Rational Unified Process (RUP)
Apunta a una alta integración
con el usuario
Balancear prioridades
La idea es ofrecer muchas
entregas del sistema agregando
funcionalidad paulatinamente
en lapsos cortos de tiempo, esto
permite que el usuario tenga
más claro si el sistema hace lo
que él quiere, además de
comprometerlo en el desarrollo.
Colaboración entre equipos
Programación en parejas, dos
personas por máquina; esto
hace el desarrollo más llevadero
y el surgimiento de ideas, y la
estandarización del código,
además los grupos se pueden
rotar.
Utilizar estándares de
codificación.
No se manejan valores
iterativos
Orientando todo a las pruebas,
se realizan pruebas de unidad
de los módulos incluso se
diseñan antes del software
40 horas de trabajo semanal, las
horas extras mitigan los ánimos
de los desarrolladores
Se planificado a muy corto plazo
(a lo sumo un par de meses)
Corto nivel de Abstracción
Todo se centra en el resultado,
es decir, cumplir con lo que se
planeó y nada más.
Enfocarse en la calidad
Extreme Programming
(XP)
Balancear prioridades
Los requerimientos de
los diversos inversores
pueden ser diferentes,
contradictorios o
disputarse recursos
limitados.
Debe encontrarse un
balance que satisfaga los
deseos de todos.
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
requerimientos,
desarrollo, evaluaciones,
planes, resultados, etc.
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
Elevar el nivel de
abstracción
Constructionist Design Methodology
(CDM)
Es un enfoque para la construcción de
sistemas altamente modulares de
muchos componentes que interactúan.
La fuerza de MDL consiste en simplificar
el modelo de los sistemas funcionales
complejos, que requieren múltiples
evolución arquitectónica de las
jerarquías de flujo y control de datos
enredados.
Agile Unified Process (AUP)
Los procesos ágiles de desarrollo de
software, conocidos anteriormente
como metodologías livianas, intentan
evitar los tortuosos y burocráticos
caminos de las metodologías
tradicionales enfocándose en la gente y
los resultados.
Es un marco de trabajo conceptual de la
ingeniería de software que promueve
iteraciones en el desarrollo a lo largo de
todo el ciclo de vida del proyecto. Existen
muchos métodos de desarrollo ágil; la
mayoría minimiza riesgos desarrollando
software en cortos lapsos de tiempo. El
software desarrollado en una unidad de
tiempo es llamado una iteración, la cual
debe durar de una a cuatro semanas.
Cada iteración del ciclo de vida incluye:
planificación, análisis de requerimientos,
diseño, codificación, revisión y
documentación. Una iteración no debe
agregar demasiada funcionalidad para
justificar el lanzamiento del producto al
mercado, pero la meta es tener un demo
(sin errores) al final de cada iteración. Al
final de cada iteración el equipo vuelve a
evaluar las prioridades del proyecto.