El documento describe las 5 fases del proceso de programación: 1) Análisis del problema, 2) Desarrollo de la solución, 3) Construcción de la solución en forma de programa, 4) Prueba, y 5) Mantenimiento. Explica que cada fase es importante y que los errores en las primeras fases son difíciles de detectar luego. También enfatiza la importancia del mantenimiento, el cual representa alrededor del 40% del costo total del desarrollo de software.
El desarrollo y mantenimiento de aplicaciones empresariales, más que una profesión se ha convertido en todo un arte al darles soporte y mantenimiento, cobra mayor importancia y trascendencia cuando: diferentes desarrolladores modifican la funcionalidad, se utilizan versiones de API´s y frameworks diferentes sobre la misma aplicación sólo porque a "alguien" se le ocurrió, se duplica código por el desconocimiento de la aplicación y por si fuera poco....... existe código muerto en las diferentes capas de la aplicación (si es que se puede identificar alguna) una situación que nunca sucede en nuestro ámbito. Si el panorama no fuera ya de por si complejo, el realizar las pruebas (de todos los módulos de la aplicación) y promover la liberación de una nueva funcionalidad resulta en ocasiones más costoso en tiempo y recursos que la nueva funcionalidad por si misma. La presente sesión demuestra por medio de casos de éxito las ventajas que proporciona el someter aplicaciones existentes y nuevas sobre un proceso de integración contínua estandarizando: el versionado del código, el uso de herramientas de construcción, la automatización de pruebas, la evaluación de código y promoción de nuevas liberaciones de aplicaciones productivas. Todo esto sobre un ciclo iterativo, controlado y auditado para un objetivo final, producir aplicaciones con calidad de código.
Estrategias ágiles para incrementar calidad al construir y probar softwareDomingo Suarez Torres
Construir software es duro y difícil, hacerlo con calidad es aun mas difícil. En nuestra joven industria han existido muchas ideas acerca de como podríamos desarrollar software con eficiencia, muchas metodologías han emergido, casi todas ellas han fallado. El movimiento ágil, fundamentado por el Manifiesto Ágil, propone principios simples, basados en humanos y sus interacciones y no en procesos o herramientas; es esencial el factor humano.
En esta charla abordaremos rápidamente los problemas comunes al desarrollar software y como podemos minimizarlos a través de sencillos principios basados en Agile Software Development. Ademas de los principios veremos como el uso de algunas practicas tomadas de Extreme Programming pueden mejorar significativamente el proceso de desarrollo de software.
El desarrollo y mantenimiento de aplicaciones empresariales, más que una profesión se ha convertido en todo un arte al darles soporte y mantenimiento, cobra mayor importancia y trascendencia cuando: diferentes desarrolladores modifican la funcionalidad, se utilizan versiones de API´s y frameworks diferentes sobre la misma aplicación sólo porque a "alguien" se le ocurrió, se duplica código por el desconocimiento de la aplicación y por si fuera poco....... existe código muerto en las diferentes capas de la aplicación (si es que se puede identificar alguna) una situación que nunca sucede en nuestro ámbito. Si el panorama no fuera ya de por si complejo, el realizar las pruebas (de todos los módulos de la aplicación) y promover la liberación de una nueva funcionalidad resulta en ocasiones más costoso en tiempo y recursos que la nueva funcionalidad por si misma. La presente sesión demuestra por medio de casos de éxito las ventajas que proporciona el someter aplicaciones existentes y nuevas sobre un proceso de integración contínua estandarizando: el versionado del código, el uso de herramientas de construcción, la automatización de pruebas, la evaluación de código y promoción de nuevas liberaciones de aplicaciones productivas. Todo esto sobre un ciclo iterativo, controlado y auditado para un objetivo final, producir aplicaciones con calidad de código.
Estrategias ágiles para incrementar calidad al construir y probar softwareDomingo Suarez Torres
Construir software es duro y difícil, hacerlo con calidad es aun mas difícil. En nuestra joven industria han existido muchas ideas acerca de como podríamos desarrollar software con eficiencia, muchas metodologías han emergido, casi todas ellas han fallado. El movimiento ágil, fundamentado por el Manifiesto Ágil, propone principios simples, basados en humanos y sus interacciones y no en procesos o herramientas; es esencial el factor humano.
En esta charla abordaremos rápidamente los problemas comunes al desarrollar software y como podemos minimizarlos a través de sencillos principios basados en Agile Software Development. Ademas de los principios veremos como el uso de algunas practicas tomadas de Extreme Programming pueden mejorar significativamente el proceso de desarrollo de software.
Cuadro Comparativo de Diseño de sistema: Modelo de Cascada
Desarrrollo Evolutivo
Desarrollo Formal de Sistemas
Desarrollo Orientado a la Reutilizacion
Desarrollo Incremental
Desarrollo en Espiral
3. • A fin de poder asegurar que un sistema cumpla con el sistema
requerido por el cliente, no basta simplemente con un
levantamiento y diseño funcional, especificación de los casos de
uso y descripción de procesos. Es imprescindible la comunicación
con el Equipo de Desarrollo. Es decir, con la participación del
programador.
• Para Doc. IRS, un programador debe participar del análisis de los
problemas delineados por el ingeniero de procesos en términos de
los requerimientos detallados. Desde ahí va diseñando la estrategia
a seguir en la estructura del programa. Codifica las instrucciones
implementando algoritmos en el lenguaje de programación
adecuado. Verifica la lógica del programa preparando rutinas de
prueba. Revisa, depura y corrige los programas. Evalúa y modifica
los programas existentes para tomar en cuenta los cambios
producidos en los requerimientos del sistema. Finalmente prepara
el documento base de la ayuda de usuarios.
4. • Cualquier consideración del proceso de programación mismo debe
comenzar aislando cada una de sus fases componentes. Se
identifica las siguientes cinco fases:
1. Análisis del problema
2. Desarrollo de la solución
3. Construcción de la solución en forma de programa
4. Prueba
5. Mantenimiento
5. • El análisis del problema
• se refiere a la etapa del proceso en la que el programador toma
conocimiento del problema antes de proceder a desarrollar una
solución. Es un proceso de “introducción”, de naturaleza
cognoscitiva y muy difícil de describir. Son demasiados los
programadores que recorren esta etapa muy rápidamente, lo que
hace que entiendan mal o malinterpreten las especificaciones.
Algunos programadores prefieren devolver las especificaciones del
problema al diseñador, para reducir la posibilidad de malentendido.
Los errores que se cometen en esta etapa son con mucha
frecuencia difíciles de detectar y consumen mucho tiempo cuando
se les trata de remediar en las etapas posteriores.
6. • desarrollo de la solución
• es eminentemente creativa. Aquí se debe hacer hincapié en la
formulación del algoritmo antes que en su codificación en un
lenguaje de programación en particular. Aunque algunos podrían
argumentar que la habilidad para resolver problemas es algo innato
y que es difícil educar o mejorar la creatividad, existe suficiente
evidencia en el sentido de que algunos enfoques sistemáticos
tienen mucho valor.
• También es una alternativa recurrir a desarrollos anteriores hechos
para otras soluciones (la librería propia) y desde allí comenzar el
proceso de creación. Siempre y cuando el problema central haya
sido resuelto realmente, puesto que si no es así esta situación
acarreará problemas en las fases posteriores
7. • construcción de la solución desarrollada en
forma de un programa
real (o código). Considerando que la solución ha sido bien definida,
este proceso es casi directo, pues es un proceso mental
inmediato de las fases anteriores. Mediante rutinas, funciones,
script, procedimientos y reglas del lenguaje de programación, se va
ensamblando la aplicación de acuerdo con los estándares de estilo
y de estructura.
8. • revisión y corrección del programa
• Es inevitable realizar pruebas mientras va construyendo las
componentes de la aplicación. Todo programador experto prueba
no sólo mentalmente cada instrucción cuando la está escribiendo,
sino que va ejecutando las rutinas de cualquier módulo o sección
de su programa antes de proceder a pasar a Ambiente de Prueba,
donde probarán los que establecieron el diseño funcional del
sistema. La prueba de las aplicaciones nunca es sencilla; Es natural
que las pruebas muestran la presencia de errores y nunca se puede
demostrar la ausencia de ellos.
9. proceso de programación, el mantenimiento del
programa.
• Sin embargo, su importancia en el trabajo real nunca debe
despreciarse. En general, el costo de mantenimiento de un
programa de uso generalizado es del orden del 40% o más del
costo de su desarrollo”. Al contrario de lo que sucede con el
mantenimiento de hardware, el mantenimiento de los programas no
se refiere a la reparación o cambio de partes deterioradas, sino a
las modificaciones que deben hacerse a los defectos del diseño, lo
cual puede incluir el desarrollo de funciones adicionales para reunir
nuevas necesidades. El tiempo de los desarrolladores para producir
nuevos programas se ve siempre afectado por el tiempo que deben
dedicar al mantenimiento de los programas viejos