Esta presentación es parte del contenido del curso de Programación Avanzada impartido en la Universidad Rafael Landívar durante el año 2015.
Incluye los temas:
* Abstracción y resolución de problemas
* Introducción al ciclo de vida del software
Creado por Ing. Alvaro Enrique Ruano
2. Contenido
● Definición de Abstracción
● Resolución de Problemas
o Pasos de Polya
o Tipos de Análisis
Top-Down
Bottom-Up
● Herramientas Computacionales
3. Abstracción
Proceso de excluir detalles no deseados o no significativos
de un problema que se quiere resolver.
Un problema complejo se puede visualizar a distintos niveles
de abstracción.
Los niveles de abstracción dan lugar a una jerarquía de
abstracciones.
Los distintos niveles de abstracción permiten concentrarnos
en distintos objetivos a cada nivel de abstracción.
4. Abstracción
Actividad clave en el proceso de solución de
problemas por medio de la computadora
(programación).
Ejemplos de utilización en programación:
● Abstracción procedimental
● Abstracción de datos
● Ocultación de de información
● Recursividad
● Programación orientada a objetos
7. Análisis Top-Down
Estrategia de procesamiento de información muy
característica de las Ciencias de la Computación.
Se formula un resumen del sistema sin especificar detalles, se
utiliza como apoyo la técnica de “caja negra”.
Cada parte del sistema o “caja negra” se redefine con un
mayor nivel de detalle, generando a su vez nuevas cajas
negras.
Se continúa de esta manera hasta llegar a un nivel donde el
sistema ha sido definido por completo.
8. Análisis Bottom-Up
Es otra estrategia con una filosofía contraria al modelo “Top-
Down”.
Desde el inicio se realiza una especificación detallada de cada
una de las partes de un sistema.
Al haber completado la especificación de cada una de las
partes, se procede a vincularlas a un nivel superior.
Se repite el proceso hasta que se llega a un punto en que se
tiene el modelo completo del sistema.
9. Top-Down vs Bottom-Up
Top-Down enfatiza la planificación y
conocimiento completo del proceso,
permitiendo la minimización de errores o
trabajo extra. Retrasa el inicio del trabajo.
Bottom-Up permite un inicio temprano pero
es más riesgoso al no conocer el todo desde el
inicio.
12. Contenido
● ¿Qué es el ciclo de vida del Software?
● Metodologías de desarrollo de Software
● Metodología Clásica (Cascada)
● Etapas de la Metodología Clásica
o Análisis
o Diseño
o Codificación
o Pruebas
o Mantenimiento
13. El ciclo de vida del Software
Marco de referencia que contiene los procesos, las actividades
y las tareas involucradas en el desarrollo, la explotación y el
mantenimiento de un producto de software, abarcando la vida
del sistema desde la definición de los requisitos hasta la
finalización de su uso
Define un estándar para que los compradores, proveedores,
desarrolladores, operadores, administradores y técnicos
envueltos en la vida del software manejen un lenguaje común.
14. El ciclo de vida del Software
Los seis procesos principales que definen el ciclo de vida del Software
según el estándar ISO/IEC 12207 (Systems and software engineering -
Software life cycle processes) son los siguientes:
● Adquisición: Procesos asociados a la solicitud del comprador
● Suministro: Procesos asociados a la propuesta del proveedor
● Desarrollo: Creación del producto (desarrollo del software)
● Operación: Utilización del software y soporte al mismo, también
llamado explotación.
● Mantenimiento: Modificaciones del sistema
16. Metodologías de desarrollo de SW
El ciclo de vida del software define Qué debe hacerse.
El orden en que debe realizarse y el Cómo debe de realizarse
está definido por las Metodologías de desarrollo.
Una metodología es un marco de trabajo usado para
estructurar, planificar y controlar el desarrollo de sistemas.
Normalmente incluye una filosofía, herramientas, modelos y
métodos.
17. Metodologías de desarrollo de SW
Existen varias metodologías para el desarrollo de software.
Cada metodología tiene sus fortalezas y debilidades, así como
ciertos contextos en los que son aplicables.
Ninguna metodología es la “Panacea universal”, es decir, no
existe una metodología considerada la solución definitiva.
En este curso se utilizará la metodología Clásica.
18. Metodología Clásica: También llamada Cascada, el el primer modelo
propuesto. Está basado en la producción de Hardware y productos físicos.
Metodologías de desarrollo de SW
19. Metodologías de desarrollo de SW
Incremental: Propone un desarrollo lineal en varios “Incrementos” o
entregas al cliente, los cuales son planificados desde el inicio. Se puede
desarrollar un sistema por módulos.
20. Metodologías de desarrollo de SW
Espiral: Propone un desarrollo iterativo, al igual que el incremental se
tienen varias entregas al cliente, pero en este caso se tienen
retroalimentación del usuario. Se entrega inicialmente el “core” o
funcionalidad básica del sistema y posteriormente se amplían estas
funcionalidades.
21. Metodologías de desarrollo de SW
SCRUM: Basada en el manifiesto ágil (http://agilemanifesto.org/iso/es/),
es una metodología ágil de desarrollo que busca la entrega de software
funcional en lugar de el cumplimiento de un ciclo de vida rígido.
23. Metodología Clásica
Fue propuesta originalmente en 1970.
Ordena rigurosamente el procesos de tal forma que no se
puede iniciar uno si no se ha terminado el otro.
Todas las etapas producen un resultado que es llamado
“entregable”.
El nombre cascada se usa como metáfora para indicar que el
desarrollo del proyecto progresa naturalmente del inicio al final,
pero es muy difícil poder regresar a las etapas anteriores.
24. Análisis
Primera etapa sugerida por la metodología.
Se analiza el problema a resolver y se especifican todas las
funcionalidades con que el software deberá de contar. Se utiliza
la herramienta llamada “Casos de Uso”.
Su entregable es conocido como:
● DERCAS: Documento de Especificación de Requerimientos y
Criterios de Aceptación del Software
● SRS: Software Requirements Specification
● ERS: Especificación de Requerimientos de Software
25. Diseño
Se realiza una especificación de los componentes con los que
contará el sistema (ejecutables, librerías, páginas web,
servicios web, etc) así como de su distribución en los
diferentes equipos.
Se definen todos los lineamientos que guiarán la construcción
del software.
Su entregable es el documento de diseño del sistema que
usualmente incluye diagramas UML (Lenguaje Universal de
Modelado) de Distribución, Componentes, Estático de Clases y
de Secuencias.
26. Codificación
Es en esta etapa donde realmente se construye el
software. Se realiza bajo los lineamientos
especificados por el diseño.
El entregable de esta etapa es el software
funcionando.
27. Pruebas
Como su nombre lo indica, en esta etapa se realizan
pruebas con el sistema integrando todas sus partes
para verificar que el sistema funcione cómo el cliente
lo solicitó.
Las pruebas a realizar pueden clasificarse de dos
formas:
● Por el alcance de la revisión
● Por el objeto a probar
28. Pruebas
Por el alcance de revisión
● Caja Negra: Solamente se comprueba que haga lo que tiene que
hacer, también se llama validación.
● Caja Blanca: Se comprueba que haga lo que tiene que hacer y que lo
haga cómo lo debe de hacer apegandose al diseño del sistema (se
revisa el código), también se llama verificación.
Por el objeto a probar
● Pruebas Unitarias: Se prueba un módulo en específico para verificar
que cumpla con su funcionamiento de forma aislada.
● Pruebas de Integración: Se prueba el sistema funcionando como un
todo, se verifica el resultado global y no el comportamiento de cada
pieza.
29. Mantenimiento
Consiste en la implementación del sistema y el
soporte que se brinda posteriormente.
Se estima que en esta etapa se destinan
aproximadamente el 75% de los recursos.
30. Asistencia y Tarea
Toma de asistencia.
Tarea:
• Leer el Manifiesto Ágil y realizar una comparativa
con la metodología clásica.
• Incluir opinión personal indicando cuál consideran
que es mejor.
• Máximo 1 página.
• Entrega en el portal el lunes 24 a las 3:00 AM.