1. Eduardo José Avila Portillo
Instructores - DEVNET Associate
Modulo 3
Desarrollo y Diseño de Software
Laboratorio – 01
2. • La tendencia en el mundo de las redes es que los
especialistas de TI desarrollen sus propios programas para
automatizar muchas tareas de administración de redes.
• Existen distintas metodologías de desarrollo de software
(no solo lenguajes de programación) y antes de elegir una
de ellas es necesario que conozcas lo que te ofrecen cada
una de ellas
3. Título del módulo:
Desarrollo y diseño de software
Objetivo del módulo : Utilizar las mejores prácticas de diseño y
desarrollo de software.
Título del tema Objetivo del tema
Desarrollo de software
Comparar las metodologías de
desarrollo de software.
Patrones de diseño de
software
Describir los beneficios de varios
patrones de diseño de software.
Sistemas de control de
versiones
Implementar el control de versiones de
software mediante GIT.
Conceptos básicos de
codificación
Explicar las mejores prácticas de
codificación.
Revisión y prueba de código
Utilizar Python UnitTest para evaluar
el código.
Comprensión de los formatos
de datos
Utilizar Python para analizar diferentes
formatos de mensajes y datos.
4. • Ciclo de vida del software (SDLC)
• Metodología para gestionar el SDLC
• Cascada
• Agile
• Lean
5. • Fase 1. Requisitos y análisis
• Fase 2. Diseño
• Fase 3. Implementación
• Fase 4. Prueba
• Fase 5. Despliegue
• Fase 6. Mantenimiento
Nota: el SDLC es una descripción no una receta
6. • Determinar de manera completa el problema a resolver en
general y necesidades especificas
• Recopilar requisitos y definir arquitecturas
• Calcular viabilidad, riesgos en cronograma, métodos para
probar el software, lugar y fecha de entrega del software
• Genera un reporte de Especificacion de Requisitos de
Software (SRS)
7. • Se toma el SRS para generar el diseño mas adecuado.
• Crea documentos de Diseño de alto nivel (HLD) y Diseño de bajo nivel (LLD).
• HLD implica descomponer un sistema en módulos y representar las interfaces y relaciones
de invocación entre módulos.
• LLD, también conocido como diseño detallado, se utiliza para diseñar las partes internas
de los módulos individuales identificados durante HLD.
8. • Recibe como entrada los reportes HLD y LLD.
• También es llamada fase de codificación o Desarrollo.
• Se escribe el plan de pruebas.
• Esta fase genera el código funcional que satisface la
necesidades del usuario.
9. • Recibe como entrada el código fuente de la
fase de implementación y el plan de pruebas.
• Además los ingenieros de pruebas realizan:
• Pruebas de integración
• Pruebas de rendimiento
• Pruebas de seguridad
• Al identificar errores, el código es enviado a los
ingenieros de desarrollo y cuando el error es
solventado se vuelven a ejecutar las pruebas.
10. • La fase de despliegue trabaja con el software ya verificado en la fase
de pruebas, y de inmediato se instala en el entorno de producción.
• El producto final de esta fase es la entrega a los clientes del software
funcionando.
• La fase de mantenimiento consiste en brinda soporte a los clientes,
corrige errores encontrados en producción, trabajar en mejoras de
software y recoge nuevas solicitudes del cliente
• Al concluir la fase de mantenimiento, el equipo está listo para trabajar en
la siguiente iteración y versión del software
12. • Usado históricamente, incluso hoy en día
todavía es utilizado
• Su objetivo es cumplir con cada fase de
manera optima y no regresar a la
anterior
• Cada fase se puede subdividir en
distintas fases y estas sub fases
ejecutarse por separado o en paralelo
• Se dice que el modelo de cascada
original fue creado por Winston W.
Royce.
13. • En 2001 un grupo de desarrolladores decidió crear un manifiesto a seguir para superar sus
frustraciones respecto a lo engorroso y tardío que era concluir el desarrollo de un software.
• Los valores del manifiesto ágil son:
Individuos e interacciones sobre procesos y herramientas
Software de trabajo sobre documentación completa
Colaboración con el cliente sobre la negociación de contratos
Responde al cambio sobre el siguiente plan
• Principios del manifiesto ágil
Enfoque
al cliente
Adoptar
el cambio
Entrega
frecuente
Colaboración
Equipos
Motivados
Comunicación
Cara a Cara
Software
De trabajo
Trabajo a ritmo
Constante
Entorno
Ágil
Simplicidad Equipos
Auto - organizados
Mejora
continua
14. • Luego de popularizar el manifiesto, pero sin definir una metodología especifica, distintos
grupos de programadores se dedicaron crear distintos métodos de programación que
cumplieran con el manifiesto ágil.
Scrum Ágil
Se enfoca en equipos pequeños auto
organizados, reuniones y entregables
diarios, adaptaciones constante y
trabaja bien con requisitos cambiantes
Lean
Enfatiza en la reducción del esfuerzo
que se realiza en la planificación y
ejecución, también busca reducir la
carga cognitiva del desarrollador
Programación Extrema
Comparable a Scrum ágil, pero es un
poco mas estricto respecto a las
mejores practicas a utilizar
Desarrollo basado en funciones (FFD)
Se basa en la primicia de que el
desarrollo debe de ser meticuloso,
desglosado, planificado y construido
característica por característica
15. • Conceptos importantes
Sprints:
Periodo de tiempo en
especifico en el que
se recorre un ciclo del
SDLC
Backlog:
Es una lista priorizada
con todas las
funciones del software
User stories:
Es la subdivisión de las
funciones del backlog, debe
ser una tarea suficientemente
pequeña para poder ser
hecha en un sprint
Equipos Scrum:
Son multifuncionales
y capaces de cumplir
un user story en un
solo sprint
Standup:
Reunión diaria de
cada equipo de scrum,
no mas de 15 min,
siempre a la misma
hora.
16. • Se basa en Lean manufacturing, que a su
vez se basa en la mejora continua.
• El método lean tiene 7 principios básicos:
• Eliminar residuos
• Amplificar el aprendizaje
• Decidir lo mas tarde posible
• Entregar lo mas rápido posible
• Empoderar al equipo
• Desarrollar integridad
• Optimizar el todo
17. Eliminar residuos Eliminar todo lo que no aporte valor directo al cliente
Este es el principio básico de Lean y del cual se deriva toda la metodología