100% encontró este documento útil (1 voto)
292 vistas95 páginas

DEVASC Module 3

Presentación modulo 3 DEVASC
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
292 vistas95 páginas

DEVASC Module 3

Presentación modulo 3 DEVASC
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

Módulo 3: Diseño y

Desarrollo de Software
Materiales del Instructor

DevNet Associate v1.0


Materiales del instructor – Módulo 3: Guía de planificación.
Esta presentación en PowerPoint se divide en dos partes:
• Guía de planificación para el instructor
• Información para ayudar al usuario a familiarizarse con el módulo.
• Ayuda didáctica
• Presentación de la clase del instructor
• Diapositivas opcionales que puede utilizar en el aula
• Comienza en la diapositiva # 9
Nota: Eliminar la Guía de Planificación de esta presentación antes de compartirla con otras
personas.
Para obtener ayuda adicionar y recursos, vaya a la página principal del instructor y a los
recursos del curso para este curso. También puede visitar el sitio de desarrollo
profesional en [Link], la página oficial de Facebook de Cisco Networking
Academy, o el grupo FB Only Instructor Only. ©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 2
¿Qué esperar en este módulo?

Para facilitar el aprendizaje, las siguientes características dentro de la GUI pueden ser
incluidas en este módulo:

Características Descripción
Laboratorios prácticos Laboratorios diseñados para trabajar con equipos físicos.
Auto-evaluaciones que integran conceptos y habilidades aprendidas a lo largo
Cuestionarios de módulo
de los temas presentados en el módulo.
Resumen del módulo Resumiendo brevemente el contenido del módulo.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 3
Verifique su conocimiento.

• Verificar las actividades de comprensión que son diseñadas para permitir que los estudiantes
determinen si están entendiendo el contenido y puedan continuar, o si ellos necesitan
repasar.
• Las actividades de "Verifique su conocimiento" no afectan las calificaciones de los alumnos.
• No hay diapositivas separadas para estas actividades en la presentación de PowerPoint. Se
enumeran en el área de notas de la diapositiva que aparece antes de estas actividades.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 4
Módulo 3: Actividades
¿Qué actividades están asociadas con este módulo?

N.° de
Tipo de actividad Nombre de la actividad ¿Opcional?
página
3.1.12 Laboratorio Explore las herramientas de desarrollo de Phyton Recomendado
3.3.11 Laboratorio Control de versión de software con Git Recomendado
3.4.6 Laboratorio Explorar clases de Python Recomendado
3.5.7 Laboratorio Crear una prueba unitaria de Python Recomendado
3.6.6 Laboratorio Analizar diferentes tipos de datos con Python Recomendado

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 5
Módulo 3: Mejores prácticas
Antes de enseñar el Módulo 3, el instructor debe:
• Revisar las actividades y evaluaciónes para este módulo.
• Tratar de incluir la mayor cantidad de preguntas que sean posibles, con el fin de mantener a los
estudiantes entretenidos con la presentación.

Tema 3.1
• Pregunte a los alumnos qué entienden del término Desarrollo de Software.
• Pregunte a los alumnos si han oído hablar del ciclo de vida del desarrollo del software. Pídales que
compartan su conocimiento con la clase.
• Discuta las diversas metodologías de desarrollo de software. Divida la clase en grupos y lleve a cabo una
discusión sobre qué metodología es la mejor en el escenario actual de Desarrollo de Software.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 6
Módulo 3: Mejores prácticas (Cont.)
Tema 3.2
• Pida a los alumnos que se refieran al libro "Patrones de diseño - Elementos del software reutilizable
orientado a objetos" de la banda de los cuatro (GoF) para obtener más información sobre los patrones de
diseño de software.
• Proporcione a los alumnos más información sobre los dos patrones de diseño más utilizados: el patrón de
diseño Observer (un patrón de diseño de comportamiento) y Model-View-Controller (MVC).

Tema 3.3
• Pregunte a los alumnos si han oído hablar de los sistemas de control de versiones. Discuta el tema en
detalle.
• Discuta Git y GitHub.

Tema 3.4
• Pida a los alumnos que compartan su conocimiento de los métodos, funciones, módulos y clases.
• Pregunte a los alumnos, ¿qué entienden del término Código Limpio? Pida a los alumnos que discutan y
©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 7
planteen razones por las que los desarrolladores deben escribir código limpio.
Módulo 3: Mejores prácticas (Cont.)
Tema 3.5
• Discuta la importancia de revisar el código.
• Discuta los diferentes tipos de pruebas en detalle.
• Explique qué es el desarrollo impulsado por pruebas.

Tema 3.6
• Discuta sobre el Formateo de Datos
• Pregunte a los alumnos si han oído hablar de XML, JSON y YAML. Pídales que compartan sus
conocimientos sobre el tema.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 8
Módulo 3: Diseño y
Desarollo de Software.
DevNet Associate v1.0
Objetivos del módulo
Título del Módulo: Diseño y Desarrollo de Software

Objetivo del Módulo: Utilizar los mejores procedimientos de Diseño y Desarrollo de


Software.
Título del tema Objetivo del tema
Desarrollo de software Compare las metodologías de desarrollo de software.
Describa los beneficios de los diferentes patrones de diseño de
Patrones de diseño de software
software.
Sistema de Control de Versiones. Implemente el control de versiones de software mediante GIT.
Conceptos básicos de la
Explique los procedimientos recomendados de codificación.
codificación
Revisión de código y testeo. Usar Phyton Unit Test para evaluar el código.
Comprensión de los formatos de Utilice Python para analizar los diferentes formatos de mensajería y
datos datos.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 10
3.1 Desarrollo de software

© 2016 Cisco y/o sus filiales. Todos los derechos reservados.


Información confidencial de Cisco. 11
Diseño y Desarrollo de Software
Introducción
• El proceso de desarrollo de software también se conoce como ciclo de vida de desarrollo
de software (SDLC-Software Develpoment Life Cycle).

• SDLC es más que una codificación y también incluye requisitos de recopilación, creación
de una prueba de concepto, pruebas y corrección de errores.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 12
Diseño y Desarrollo de Software
Ciclo de Vida de Desarrollo de Software (SDLC)
• SDLC es el proceso de desarrollo de software, partiendo de una idea y terminando con la entrega.
Este proceso consta de seis fases. Cada fase toma la información de los resultados de la fase
anterior. 
• SDLC es el proceso de desarrollo de
software, partiendo de una idea y
terminando con la entrega. Este proceso
consta de seis fases. Cada fase toma la
información de los resultados de la fase
anterior. 
• Aunque los métodos de cascada todavía
se utilizan ampliamente hoy en día,
gradualmente está siendo reemplazado
por métodos más adaptables y flexibles
que producen mejor software, más rápido,
con menos dolor. Estos métodos se
conocen colectivamente como "Desarrollo
ágil". ©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 13
Diseño y Desarrollo de Software
Requerimientos y fase de Análisis
 La fase de requisitos y análisis consiste en explorar la situación actual de las partes interesadas, las
necesidades y limitaciones, la infraestructura actual, etc., y determinar el problema que debe resolver
el software.
 Después de reunir los requisitos, el equipo analiza los resultados para determinar lo siguiente:

• ¿Es posible desarrollar el software de acuerdo con estos requisitos, y se puede hacer según el
presupuesto?
• ¿Existen riesgos para el programa de desarrollo y, en caso afirmativo, cuáles son?
• ¿Cómo se probará el software?
• ¿Cuándo y cómo se entregará el software?
 Al final de esta fase, el método clásico de cascada sugiere la creación de un documento de
especificación de requisitos de software (SRS), que establece los requisitos y el alcance del software,
y lo confirma meticulosamente con las partes interesadas.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 14
Diseño y Desarrollo de Software
Fases de diseño e Implementación
Diseño Implementación
• Durante la fase de diseño, los • La fase de implementación también
arquitectos y desarrolladores de se denomina fase de codificación o
software diseñan el software basado desarrollo.
en el SRS proporcionado. • Como todos los componentes y
• Al final de la fase, el equipo crea módulos se construyen durante esta
documentos de diseño de alto nivel fase, es la fase más larga del ciclo de
(High-Level Design-HLD) y diseño de vida.
bajo nivel (Low-Level Design-LLD). • Al final de la fase, el código funcional
que implementa todos los requisitos
del cliente está listo para ser
probado.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 15
Diseño y Desarrollo de Software
Fases de prueba, Implementación y Mantenimiento
Prueba Implementación Mantenimiento
• En esta fase, el código se • Durante esta fase, el • Durante la fase de
instala en el entorno de software se instala en el mantenimiento, el equipo:
prueba entorno de producción. • Proporciona soporte a los
• Pruebas funcionales, Se • Al final de la fase, el gestor clientes
realizan pruebas de de productos libera la pieza • Corrección de errores
Integración, pruebas de final del software a los encontrados en
rendimiento y de seguridad. usuarios finales. producción
• Las pruebas continúan hasta • Trabaja en mejoras de
que todos los códigos están software
libres de errores y pasan • Reúne nuevas solicitudes
todas las pruebas. Al final de del cliente
esta fase, un software de alta • Al final, el equipo trabaja en la
calidad, libre de errores, está
siguiente versión del software.
listo para la producción.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 16
Diseño y Desarrollo de Software
Metodologías de Desarrollo de Software
• Una metodología de desarrollo de software también se conoce como modelo de ciclo de
vida de desarrollo de software.
• Las tres metodologías más populares son:
• Waterfall (Cascada)
• Agile (Ágil)
• Lean (Inclinarse)
• El tipo de metodología que se utiliza depende de:
• Tipo del proyecto
• Duración del proyecto
• Tamaño del equipo.
©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 17
Diseño y Desarrollo de Software
Desarrollo de software Cascada
• El modelo original de cascada fue creado por Winston W. Royce.
• Su modelo original constaba de siete fases:

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 18
Diseño y Desarrollo de Software
Desarrollo de Software Ágil
• El método ágil es flexible y centrado en el cliente.
• Un grupo de 17 desarrolladores de software inventó el Manifiesto para el desarrollo ágil de software,
también conocido como el Manifiesto ágil, en 2001. Según el Manifiesto ágil, los valores de Ágil son:
• Individuos e interacciones sobre procesos y herramientas
• Software de trabajo sobre documentación completa
• Colaboración con clientes en la negociación de contratos
• Responder al cambio sobre el seguimiento de un plan
• El manifiesto ágil enumera 12 principios diferentes:
Principios de Manifiesto Ágil
Enfoque al cliente. Colaboración Software de trabajo Simplicidad
Aceptar el cambio y adaptarse Equipos Trabajar a un ritmo Equipos organizados
motivados sostenible
Entrega frecuente de software de Comunicaciones Entorno Ágil Mejoramiento de
trabajo cara a cara manera continua
©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 19
Diseño y Desarrollo de Software
Métodos Ágiles
• Los métodos ágiles más populares son:

• Agile Scrum: El Scrum se centra en equipos pequeños y autoorganizados que se


reúnen diariamente durante períodos cortos y trabajan en sprints iterativos.
• Lean: El método Lean hace hincapié en la eliminación del esfuerzo desperdiciado en la
planificación y ejecución, y en la reducción de la carga cognitiva del programador.
• Extreme Programming (XP): XP aborda deliberadamente los tipos específicos de
problemas de calidad de vida que enfrentan los equipos de desarrollo de software.
• Feature-Driven Development (FDD): FDD prescribe que el desarrollo de software debe
proceder en términos de un modelo general, desglosado, planificado, diseñado y
construido característica por característica.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 20
Diseño y Desarrollo de Software
Métodos Agiles
• Sprints

• Un sprint es un período de tiempo específico, generalmente entre 2-4 semanas, durante el cual,
cada equipo asume tantas tareas (también conocidas como historias de usuario) como sientan
que pueden realizar. Cuando el sprint termine, el software debe estar entregable y funcionando.
• La duración del sprint se determina antes de que comience el proceso y rara vez debería
cambiar.

• Retroceso
• El trabajo acumulado consta de todas las características del software, en una lista de
prioridades.
• Historias de usuarios
• Una historia de usuario es una simple declaración de lo que un usuario (o un rol) necesita y por
qué.Cada historia de usuario debe ser lo suficientemente pequeña como para que un solo
equipo pueda terminarla en un sprint.
• La plantilla sugerida para una historia de usuario es: ©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 21
Diseño y Desarrollo de Software
Métodos Agiles
Equipos de Scrum

• Los equipos de Scrum son multifuncionales, colaborativos, autogestionados y


autoempoderados.
• Los equipos de scrum no deben tener más de 10 individuos.
• El maestro scrum debe tener una reunión diaria de stand-up con el equipo a una hora fija
todos los días durante no más de 15 minutos.
• El objetivo es repasar tareas importantes que se han terminado, están en curso o están a
punto de comenzar.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 22
Diseño y Desarrollo de software
Desarrollo de Software Lean
• El desarrollo de software Lean se basa en los principios de Manufactura Lean, que se
centran en minimizar los residuos y maximizar el valor para el cliente.
• Los siete principios de Lean, dados en el libro "Lean Software Development: An Agile
Toolkit", son los siguientes:
• Eliminar residuos
• Amplificar el aprendizaje
• Decidir lo más tarde posible
• Entrega lo más rápido posible
• Motivar al equipo
• Integridad de compilación
• Optimizar la totalidad

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 23
Diseño y Desarrollo de Software
Desarrollo de Software Lean (Cont)
Eliminar Residuos
• Es el principio mas fundamental de Lean.
• Hay siete desperdicios de desarrollo de software:
• Trabajo parcialmente hecho
• Procesos adicionales
• Características adicionales
• Cambio de tareas
• En espera
• Movimiento
• Defectos

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 24
Diseño y Desarrollo de Software
Lean Software Development (Cont)
Amplificar el aprendizaje con Sprints cortos
• Para poder afinar un software, debe haber repeticiones cortas frecuentes de software de trabajo. Esto permite
lo siguiente:
• Los desarrolladores aprenden más rápido
• Los clientes pueden dar sus comentarios antes
• Las funciones se pueden ajustar para que aporten más valor a los clientes
Decidir lo más tardar posible
• Cuando hay incertidumbre, lo mejor es retrasar la toma de decisiones hasta lo más tarde posible en el
proceso. Esto se debe a que es mejor basar las decisiones en hechos en lugar de opiniones o
especulaciones.
Entregar lo más rápido posible

Entregar lo más rápido posible


Permite a los clientes proporcionar comentarios No permite a los clientes cambiar de opinión
Permite a los desarrolladores amplificar el Hace que todos tomen decisiónes de una manera
aprendizaje más rápida.
©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
Proporciona a los clientes las funciones requeridas Produce menos confidencial
residuos de Cisco. 25
Diseño y Desarrollo de Software
Lean Software Development (Cont)
Motivar al equipo
• Cada persona debe poder tomar decisiones en el ámbito de su propia experiencia.  

Construir integridad en
• La integridad del software se da cuando el software aborda las necesidades del cliente y mantiene la
utilidad para el cliente.  
Optimizar la totalidad
• El software debe construirse de forma [Link] valor del software se verá afectado si cada experto
se centra únicamente en su experiencia y no considera las ramificaciones de sus decisiones sobre el
resto del software.  

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 26
Laboratorio de desarrollo y de software
Explorar las herramientas de desarrollo de Python
En esta práctica de laboratorio se cumplirán los siguientes objetivos:
• Parte 1: Iniciar la Maquina Virtual (Virtual Machine) DEVASC
• Parte 2: Revisar la instalación de Python
• Parte 3: Entornos virtuales PIP y Python
• Parte 4: Compartir su entorno virtual

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 27
3.2 Patrones de diseño de
software

© 2016 Cisco y/o sus filiales. Todos los derechos reservados.


Información confidencial de Cisco. 28
Patrones de Diseño de Software
Introducción
• Los patrones de diseño de software son soluciones de mejores prácticas para resolver problemas
comunes en el desarrollo de software.

• Los patrones de diseño son independientes del lenguaje.

• En 1994, Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides (conocido como la Gang of Four
(GoF)) publicaron un libro llamado Design Patterns - Elements of Reusable Object-Oriented Software.
Los patrones identificados son:

• Programa a una interfaz, no a una implementación.


• Favorecer la composición del objeto sobre la herencia de clase
• Los patrones de diseño de software ya han demostrado ser exitosos, por lo que su uso puede acelerar
el desarrollo.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 29
Patrones de Diseño de Software
Los patrones de diseño originales
• La Pandilla de los Cuatro dividió los patrones en tres categorías principales:

• Creacional
• Estructurales
• Relativos al comportamiento
• Ellos Enumeraron 23 patrones de diseño.

• Dos de los patrones de diseño más utilizados son:

• El patrón de diseño Observer (un patrón de diseño de comportamiento)


• El controlador de vista de modelo (MVC)

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 30
Patrones de Diseño de Software
Diseño de observador (Observer design pattern)
• El patrón de diseño de observador es un diseño de
notificación de suscripción que permite a los
objetos recibir eventos cuando hay cambios en un
objeto que están observando.

• Para implementar este mecanismo de suscripción:


• El sujeto debe tener la capacidad de
almacenar
una lista de todos sus observadores.
• El sujeto debe tener métodos para agregar y
eliminar observadores.

• El beneficio del patrón de diseño del observador es


que los observadores pueden obtener datos en
tiempo real del sujeto cuando se produce un
cambio. 

• Los mecanismos de suscripción siempre


proporcionan un mejor rendimiento que otras
opciones, como el sondeo.
©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 31
Patrones de Diseño de Software
Controlador de vista (MVC)
• El patrón de diseño Model-View-Controller (MVC) tiene como
objetivo
simplificar el desarrollo de aplicaciones que dependen de
interfaces gráficas de usuario.

• MVC abstrae el código y la responsabilidad en tres


componentes diferentes:
• Modelo: El modelo es la estructura de datos de la
aplicación
y es responsable de gestionar los datos, la lógica y
las reglas de la aplicación. Obtiene la entrada del
controlador.
• Vista: La vista es la representación visual de los datos.
• Controlador: El controlador es el intermediario entre el
modelo y la vista. Toma la entrada del usuario y la
manipula para ajustarse al formato del modelo o vista.
• La ventaja de MVC es que cada componente se puede
©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
construir en paralelo. confidencial de Cisco. 32
Sistema de Control de
Versiones.

© 2016 Cisco y/o sus filiales. Todos los derechos reservados.


Información confidencial de Cisco. 33
Sistemas de Control de Versiones
Tipos de sistemas de control de versiones
• El control de versiones, también llamado sistemas de control de versiones, control de
revisiones o control de código fuente, es una forma de administrar los cambios en un
conjunto de archivos con el fin de mantener un historial de dichos cambios.
• Los beneficios del control de versiones son:
• Habilitar la colaboración.
• Más responsabilidad y visibilidad
• Trabajar en aislamiento
• Seguridad
• Trabajo desde cualquier lugar
• Existen tres tipos de sistemas de control de versiones:
• Local
• Centralizada
• Distribuida ©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 34
Sistemas de Control de Versiones
Tipos de Sistemas de Control de Versiones(Cont.)
Sistema de Control de Version
Local(Local Version Control
System-LVCS)

• LVCS utiliza una base de datos


sencilla para realizar un seguimiento
de todos los cambios realizados en el
archivo.

• En la mayoría de los casos, el


sistema almacena el delta
entre las dos versiones del archivo.

• Cuando el usuario desea volver al


archivo, el delta se invierte para llegar
a la versión solicitada.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 35
Sistemas de Control de Versiones
Tipos de Sistemas de Control de Versiones(Cont.)
Sistema de Control de Versiones Distribuidas
(Distributed Version Control System-DVCS)

• CVCS utiliza un modelo de servidor-


cliente.

• El repositorio se almacena en una


ubicación centralizada, en un servidor.

• En CVCS, solo un individuo puede


trabajar en un archivo
concreto a la vez.

• Una persona debe desproteger el


archivo para bloquearlo y realizar los
cambios necesarios y facturar una vez
hecho.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 36
Sistemas de Control de Versiones
Tipos de Sistemas de Control de Versiones(Cont.)
Sistema de Control de Versiones Distribuidas
(Distributed Version Control System-DVCS)

• DVCS es un modelo de punto a punto.

• El repositorio se puede almacenar en un sistema


cliente, pero generalmente se almacena en un
servicio de alojamiento de repositorio.

• En DVCS, cada individuo puede trabajar en


cualquier archivo, al mismo tiempo,porque el
archivo local de la copia de trabajo se está
modificando. Por lo tanto, el bloqueo no es
necesario.

• Cuando el individuo ha realizado los cambios,


empuja el archivo al repositorio principal que está
en el servicio de alojamiento del repositorio, y el
sistema de control de versiones detecta cualquier
conflicto entre los cambios de archivo.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 37
Sistemas de Control de Versiones
Git
• Git es una implementación de código abierto de un sistema de control de versiones distribuido que
actualmente es la última tendencia en desarrollo de software.
• Un cliente Git debe estar instalado en un equipo cliente. Está disponible para macOS, Windows y
Linux/Unix.
• Una diferencia clave entre Git y otros sistemas de control de versiones es que Git almacena datos
como instantáneas en lugar de diferencias (el delta entre el archivo actual y la versión anterior). 

• Si el archivo no cambia, Git utiliza un enlace de referencia al último archivo instantáneo del sistema en
lugar de tomar una instantánea nueva e idéntica.
©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 38
Sistemas de control de versiones
Git (Cont.)
• Git está organizado por 3 -
tres etapas y tres estados.

• Las tres etapas son:


• Repositorio (el
[Link])
• Directorio de trabajo
• Zona de presentación

• Los tres estados son:


• Comprometido
• Modificado
• Escenificado ©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 39
Sistemas de control de versiones
Local vs Repositorios Remotos
• Git tiene dos tipos de repositorios: local y remoto.

• Un repositorio local se almacena en el sistema de archivos de una máquina cliente, que es el


mismo en el que se ejecutan los comandos git.
• Un repositorio remoto se almacena en otro lugar que no sea el equipo cliente, generalmente un
servidor o servicio de hospedaje de repositorio.
• Un repositorio remoto con Git sigue siendo un DVCS porque el repositorio remoto contendrá el
repositorio completo, que incluye el código y el historial de archivos. 
• Cuando una máquina cliente clona el repositorio, obtiene el repositorio completo sin necesidad
de bloquearlo, como en un CVCS.
• Después de clonar el repositorio local desde el repositorio remoto o el repositorio remoto se
crea desde el repositorio local, los dos repositorios son independientes entre sí hasta que los
cambios de contenido se aplican a la otra rama a través de una ejecución manual de comando
Git. ©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 40
Sistemas de control de versiones
¿Qué es la ramificación?
• La ramificación permite a los usuarios trabajar en código de forma independiente sin afectar al código
principal del [Link] se crea un repositorio, el código se coloca automáticamente en una
rama llamada Maestra (Master). 
• Las sucursales pueden ser locales
o remotas, y se pueden eliminar y
tener su propio historial, área de
ejecución y directorio de trabajo.
• La creación deramas de Git es
ligera, y el cambio entre ramas es
casi instantáneo.
• Cuando un usuario pasa de una
rama a otra, el código en su
directorio de trabajo y los archivos
en el área de ejecución cambian en
consecuencia, pero los directorios
del repositorio (.git) permanecen
sin cambios. 
©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 41
Sistemas de control de versiones
GitHub y Otros Proveedores
• Git y GitHub no son lo mismo.
• Mientras que Git es una implementación de control de versiones distribuidas y proporciona una interfaz
de línea de comandos, GitHub es un servicio proporcionado por Microsoft que implementa un servicio
de hosting de repositorios con Git.
• Además de proporcionar el control de versiones distribuidas y la funcionalidad de administración de
código fuente de Git, GitHub proporciona características adicionales como:
• Revisión de código
• Documentación
• Gestión de proyectos
• Seguimiento de errores
• Características de solicitudes
• GitHub introdujo el concepto de la "solicitud de extracción", que es una forma de formalizar una solicitud
de un colaborador para revisar cambios como el nuevo código, ediciones en el código existente, etc., en
la rama del colaborador para su inclusión en la rama principal del proyecto u otras ramas curadas.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 42
Sistemas de Control de Versiones
Comandos de Git
Configuración de Git

• Para configurar Git, use la opción —global para


establecer la configuración global inicial.
Command: git config --global key value
Crear un nuevo repositorio de Git
• Git proporciona un comandogit init para crear un
repositorio de Git vacío, o hacer de una carpeta
existente un repositorio de Git.
• Cuando un proyecto nuevo o existente se convierte en
un
repositorio de Git, se crea un [Link] oculto en
esa carpeta del proyecto.
• El [Link] es el repositorio que contiene los
metadatos como los archivos comprimidos, el historial
de confirmación y el área de ejecución. Además, Git ©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
también crea la rama maestra. confidencial de Cisco. 43
Sistemas de Control de Versiones
Comandos de Git
Comando: git init
• Para convertir un proyecto nuevo o existente en un repositorio de Git, utilice el siguiente comando:
$ git init <project directory>
donde<project directory> es la ruta absoluta o relativa al proyecto nuevo o existente.
• Para un nuevo repositorio de Git, el directorio en la ruta proporcionada se creará primero, seguido de la
creación del [Link].
Obtener un repositorio Git existente

• Command: git clone <repository> [target


directory]]

donde <repository> es la ubicación del


repositorio que se va a clonar.

• Git admite cuatro protocolos de transporte


principales
para acceder a <repository>: Local,
©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
Secure Shell (SSH), Git y HTTP. confidencial de Cisco. 44
Sistemas de Control de Versiones
Comandos de Git(Cont.)
Ver los archivos modificados en el directorio de trabajo

• Git proporciona un comando git status para obtener una lista de archivos que tienen
diferencias entre el directorio de trabajo y la rama principal.
• Comando: git status

Comparar cambios entre archivos


• Git proporciona un comando git diff que es esencialmente una herramienta genérica de
comparación de archivos.
• Comando: git diff
• Al usar el comando git diff, el archivo no necesita ser un archivo rastreado por Git.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 45
Sistemas de Control de Versiones
Agregar y Quitar archivos
Adición de archivos al área de ejecución
• Command: git add
• Este comando se puede usar más de una vez antes
de que se actualice el repositorio de Git (usando
commit).
• Solo los archivos especificados en el comando git se
pueden agregar al área de ejecución
• Para agregar un solo archivo al área de ejecución:
$ git add <file path>

• Para agregar varios archivos al área de ejecución,


donde<file path> es la ruta absoluta o relativa del
archivo que se va a agregar al área de ejecución.
$ git add <file path 1>... <file path n>

• Para agregar todos los archivos modificados al área ©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información

de ejecución: $ git add. confidencial de Cisco. 46


Sistemas de Control de Versiones
Agregar y quitar archivos (Cont.)
Eliminación de archivos del repositorio de Git
• Hay dos formas de eliminar archivos del
repositorio de Git.

• Opción 1:elcomando git rm se usa para eliminar


archivos del repositorio de Git y agregar al área de
ejecución.
• Comando: git rm
• Para eliminar los archivos especificados del
directorio de trabajo y agregar el cambio al área
de ejecución, utilice el siguiente comando:
$ git rm <file path 1>... <file path n>
 
Donde<gile path> es la ruta absoluta o relativa
del archivo que se va a eliminar del repositorio
de Git.
©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 47
Sistemas de Control de Versiones
Agregar y Remover Archivos (Cont.)
• Para agregar los archivos especificados que se eliminarán del área de ejecución sin quitar
los archivos del directorio de trabajo, utilice el siguiente comando:
$ git rm --cached <file path 1> ... <file path n>

El comando git rm no funcionará si el archivo ya está en el área provisional con cambios.

• Opción 2:Esta opción es un proceso de dos pasos. Primero use el comando regular del
sistema de archivos para eliminar los archivos y luego agregue el archivo a la ejecución
usando el comando Git.
$ rm <file path 1>...
<file path n>$ git add <file path 1>... <file path n>

Este proceso de dos pasos es equivalente a usar elgit rm <file path 1>... <file path
n>comando. El uso de esta opción no permite que el archivo se mantenga en el directorio
©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
de trabajo. confidencial de Cisco. 48
Sistemas de Control de Versiones
Actualizando Repositorios
Actualización del repositorio local con
los cambios en el área de ejecución
Comando: git commit
• Este comando combina todos los
cambios de contenido en el área de
ejecución en una sola confirmación y
actualiza el repositorio local de Git.

• Para confirmar los cambios del área de


ejecución, utilice el siguiente comando:
$ git commit
• Para confirmar los cambios del área de
ejecución con un
mensaje, utilice el siguiente comando:
$ git commit -m <message> "" ©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 49
Sistemas de control de versiones
Actualizando Repositorios (Contd.)
Actualización del repositorio remoto

Comando: git push

• Este comando no se ejecutará correctamente


si hay un conflicto con agregar los cambios del
repositorio local de Git al repositorio Git
remoto.

• Para actualizar el contenido del repositorio


local a
una rama concreta del repositorio remoto,
utilice el siguiente comando:
$ git push origin <branch name>

• Para actualizar el contenido del repositorio


local a la rama principal del repositorio remoto,
utilice el comando: $ git push origin master
©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 50
Sistemas de Control de Versiones
Actualizando Repositorios (Cont.)
Actualización de la copia local del repositorio
• Las copias locales del repositorio de Git no se actualizan automáticamente cuando otro
colaborador realiza una actualización en el repositorio Git remoto.
• Actualizar la copia local del repositorio es un paso manual.
Comando: git pull
• Al ejecutar el comando, se producen los siguientes pasos:
• El repositorio local ([Link]) se actualiza con la confirmación más reciente, el
historial de archivos, y así sucesivamente desde el repositorio remoto de Git.
• El directorio de trabajo y la rama se actualizan con el contenido más reciente del paso 1.
• Se crea una confirmación única en la rama local con los cambios del paso 1.
• El directorio de trabajo se actualiza con el contenido más reciente.
©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 51
Sistemas de Control de Versiones
Actualizando Repositorios (Contd.)
• Para actualizar la copia local del
repositorio de Git desde la rama
principal, use el siguiente comando:
$ git pull
O
$ git pull origin

• Para actualizar la copia local del


repositorio de Git desde una rama
específica, utilice el siguiente
comando:
$ git pull origin <branch>

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 52
Sistema de Control de Versiones
Características de las Ramificaciones
Creación y Eliminación de una Rama

Opción 1: El comando git branch para enumerar, crear o eliminar una rama.
$ git branch <parent branch> <branch name>
Opción 2: comando git checkout para cambiar las ramas actualizando el directorio de trabajo con el
contenido de la rama.
$ git checkout -b <parent branch> <branch name>
Eliminación de una rama
• Para eliminar una rama, utilice el siguiente comando:
$ git branch -d <branch name>
Obtener una lista de todas las ramas
• Para obtener una lista de todas las ramas locales, utilice el siguiente comando:
$ git branch O$ git branch —list
©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 53
Sistema de Control de Versiones
Características de las Ramificaciones(cont.)
Fusión de ramas
• Las ramas difieren unas de
otras cuando se modifican
después de crearlas.
• Cuando Git fusiona la rama,
toma los
cambios/confirmaciones de la
rama de origen y la aplica a la
rama de destino. 
• Durante una fusión, sólo se
modifica la rama de destino.
• La rama de origen está intacta
y sigue siendo la misma.
 
©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 54
Sistema de Control de Versiones
Características de las Ramificaciones(cont.)
Fusión de avance rápido
• Una fusión de avance rápido es cuando el algoritmo de Git puede aplicar los
cambios/confirmaciones de las ramas de origen a la rama de destino automáticamente y sin
ningún conflicto.

Combinar conflictos
• Un conflicto de fusión es cuando Git no puede realizar una fusión rápida porque no sabe
cómo aplicar automáticamente los cambios de las ramas juntas para los archivos.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 55
Sistema de Control de Versiones
Características de las Ramificaciones(cont.)
Realización de la combinación
• Git proporciona un comando git merge para unir dos o más ramas juntas.
• Comando: git merge
• Para fusionar una rama en la sucursal o repositorio actual del cliente, utilice el siguiente
comando:
$ git merge <branch name>

• Para fusionar una rama en una rama que no sea la sucursal o repositorio actual del
cliente, utilice el siguiente comando:
$ git checkout <target branch name>
$ git merge <source branch name>

• Para fusionar más de una sucursal en la sucursal o repositorio actual del cliente, use el
siguiente comando:
$ git merge <branch name 1>...<branch name n> ©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 56
Sistema de Control de Versiones
Archivos .diff
¿Qué es un [Link]?
• Un [Link] se utiliza para mostrar cómo han cambiado dos versiones diferentes de un
archivo.
• Mediante el uso de símbolos específicos, este archivo puede ser leído por otros sistemas
para interpretar cómo se pueden actualizar los archivos.
• LosSímbolo
símbolos y significados en un archivo diff unificado son:
Significado
+ Indica que se ha agregado la línea.
- Indica que se ha eliminado la línea.
/dev/null Muestra que se ha agregado o eliminado un archivo.
o "En blanco" Proporciona líneas de contexto alrededor de líneas cambiadas.
@@ Indicador visual de que se está iniciando el siguiente bloque de información. Dentro de
los cambios para un archivo, puede haber varios.
index Muestra las confirmaciones comparadas.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 57
Sistemas de Control de Versiones
Laboratorio-Control de versiones de software con Git
• En esta práctica de laboratorio se cumplirán los siguientes objetivos:

• Parte 1: Iniciar la máquina virtual (Virtual Machine) de DEVASC.

• Parte 2: Inicializar Git

• Parte 3: Preparar y confirmar un archivo en el repositorio de Git

• Parte 4: Gestión del archivo y seguimiento de los cambios

• Part 5:Ramas y fusión

• Parte 6: Gestión de conflictos de combinación

• Parte 7: Integrar Git con GitHub

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 58
3.4 Codificación básica

© 2016 Cisco y/o sus filiales. Todos los derechos reservados.


Información confidencial de Cisco. 59
Métodos básicos de codificación, funciones, módulos y
clases
• A medida que aumenta el tamaño y la complejidad del proyecto, y otros desarrolladores
(partes interesadas) se involucren, se necesitan métodos disciplinados y prácticas
recomendadas para ayudar a los desarrolladores a escribir mejor código y colaborar en
torno a él más fácilmente.
• ¿Qué es un código limpio?

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 60
Codificación básica
Código limpio
• Los códigos limpios son el resultado de que los desarrolladores intenten hacer que su código
sea fácil de leer y entender para otros desarrolladores. 
• Ellos siguen algunos principios comunes relacionados con la formación, la organización, la
intuición de los componentes, el propósito y la reutilización.
• Los códigos limpios enfatizan la estandarización, la organización adecuada, la modularidad,
proporcionando comentarios en línea y otras características que ayudan a que el código sea
autodocumentado.

Razones por las que los desarrolladores quieren escribir código limpio
• El código limpio es más fácil de entender, más compacto y mejor organizado.
• El código limpio, al ser modular, tiende a ser más fácil de probar utilizando métodos
automatizados como marcos de pruebas unitarias.
• El código limpio, estandarizado, es más fácil de escanear y verificar utilizando herramientas
automatizadas.
• Simplemente se ve mejor. ©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 61
Codificación básica
Métodos y Funciones
• Los métodos y funciones son bloques de código que realizan tareas cuando se ejecutan.
• A continuación se presentan algunas prácticas recomendadas estándar para determinar si un
fragmento de código debe encapsularse (en un método o función):
• El código que realiza una tarea discreta, incluso si ocurre una sola vez, puede ser un
candidato para la encapsulación.
• El código de tarea que se usa más de una vez probablemente debería encapsularse.
• Los métodos y funciones se pueden ser escritas y ejecutadas tantas veces como sea necesario.
• Si se usan correctamente, los métodos y funciones simplificarán el código y reducirán el
potencial de errores.
• Sintaxis de una función en Python:

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 62
Codificación básica
Métodos y Funciones
Argumentos y parámetros
• Los argumentos y parámetros añaden flexibilidad a los métodos y funciones.
• La sintaxis de una función usando argumentos y parámetros en Python:

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 63
Codificación básica
Métodos y Funciones
Declaraciones de devolución
• La instrucción return hace referencia al valor de retorno que se especificamediante la palabra clave
return (regresar) seguido de una variable o expresió[Link] sentencia return finaliza la ejecución de una
función y devuelve el control a la función de llamada.
• Cuando se ejecuta una sentencia return, se devuelve el valor de la sentencia return y cualquier código
debajo de ella se omite.
• Sintaxis de una función con una declaración de retorno en Python:

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 64
Codificación básica
Métodos y Funciones
Métodos VS Funciones

Métodos Funciones
Los métodos son bloques de código Las funciones son bloques de código
asociados a un objeto, normalmente para la independientes.
programación orientada a objetos.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 65
Codificación básica
Módulos
• Los desarrolladores suelen utilizar módulos para dividir un proyecto grande en partes más pequeñas
para que el código se pueda leer y entender fácilmente.

• Un módulo está empaquetado como un único archivo y se espera que funcione de forma independiente.
• A continuación se muestra un módulo con un conjunto de funciones guardadas en un script llamado
[Link].

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 66
Codificación básica
Clases
• En la mayoría de los lenguajes de programación de orientación de objetos (OOP), y en Python,las
clases son un medio de agrupar datos y funcionalidad. Cada declaración de clase define un nuevo tipo
de objeto.
• Las clases pueden tener variables de clase y variables de objeto.
• Se pueden definir nuevas clases, basadas en clases ya definidas previamente, de modo que hereden
las propiedades, los miembros de datos y la funcionalidad (métodos).

• Una clase puede ser instanciada (creada) varias veces, y cada una con sus propios valores de atributos
de datos específicos de objeto.

Nota: A diferencia de otros lenguajes de OOP, en Python, no hay medios para crear variables de clase
'privadas' o métodos internos. Sin embargo, por conveniencia, los métodos y variables con un solo
guión bajo precedente se consideran privados y no deben utilizarse o referenciarse fuera de la clase.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 67
Codificación básica
Laboratorio - Python Revisión de Clases
En esta práctica de laboratorio se cumplirán los siguientes objetivos:
• Parte 1: Inicie la máquina virtual (Virtual Machine) de DEVASC.
• Part 2: Revisar Funciones, Métodos y Clases
• Part 3: Definir una función
• Part 4: Definir una clase con Métodos
• Part 5: Revisar the [Link] Script

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 68
3.5 Prueba y revisión del
código

© 2016 Cisco y/o sus filiales. Todos los derechos reservados.


Información confidencial de Cisco. 69
Revisión y prueba de código
¿Qué es una revisión de código y por qué debería hacer esto?
• Una revisión de código es cuando los desarrolladores examinan la base de código, un subconjunto de
código o cambios de código específicos y proporcionan comentarios. Estos desarrolladores a menudo
se llaman revisores. 
• El proceso de revisión de código solo ocurre después de que los cambios de código se completen y
prueben.
• El objetivo de las revisiones de código es asegurarse de que el código final:
• Es fácil de leer
• Es fácil de entender
• Sigue las prácticas recomendadas de codificación
• Utiliza el formato correcto
• Está libre de errores
• Tiene comentarios y documentación adecuados
• Está limpio

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 70
Revisión de código y pruebas
Tipos de revisiones de código
Los tipos más comunes de procesos de revisión de código
incluyen:
• Revisión formal del código: Los desarrolladores
tienen una serie de reuniones para revisar toda la base
de código. 
• Revisión de código basada en cambios: También
conocido como una revisión de código asistida por
herramientas, revisa el código que se cambió como
resultado de un error, historia de usuario, función,
confirmación, entre otras.
• Revisión de código sobre el hombro: Un revisor
mira por encima del hombro del desarrollador que
escribió el código y proporciona comentarios.

• Transferencia de correo electrónico: Puede ocurrir


después de los correos electrónicos automáticos
enviados por los sistemas de administración de código
fuente cuando se realiza un registro. 
©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 71
Prueba y revisión del código
Prueba
• Las pruebas de software se subdividen en dos categorías generales:
• Las pruebas funcionalesbuscan determinar si el software funciona correctamente. ¿Se
comporta como se pretende en un sentido lógico, desde los niveles más bajos de detalle
examinados con las pruebas unitarias, hasta los niveles más altos de complejidad
explorados en las pruebas de integración?
• Las pruebas no funcionalesexaminan la usabilidad, el rendimiento, la seguridad, la
resiliencia, el cumplimiento normativo, la localización y muchos otros problemas. Este tipo
de pruebas determina si el software es adecuado para su propósito, proporciona el valor
deseado y minimiza el riesgo.
• Los desarrolladores capturan los requisitos de diseño como pruebas y luego escriben
software para pasar esas pruebas. Esto se denomina Desarrollo impulsado por pruebas
(Test-Driven Development- TDD).

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 72
Revisión de código y Prueba.
Unidad de Prueba
• Pruebas funcionales detalladas de pequeños trozos de código (líneas, bloques, funciones, clases y otros
componentes aislados) se denomina Pruebas Unitarias. 
• Estos marcos de prueba son software que le permite hacer afirmaciones sobre condiciones comprobable y
determinar si estas afirmaciones son válidas en un punto de ejecución.
• Ejemplos de framework para Python:
PyTest Unittest

• PyTest es práctico. Ejecuta automáticamente • El framework unittest exige una sintaxis diferente
cualquier script que comience con test_ o termine a PyTest
con _test.py y dentro de esos scripts, ejecutan • Para el unittest, debe subclasificar la clase
automáticamente cualquier función que comience TestCase incorporada y probar anulando sus
con 'test_' o 'tests_'.  métodos incorporados o agregando nuevos
• Podemos probar únicamente un fragmento de métodos cuyos nombres comienzan con 'test_'.
código copiándolo en un archivo, importando
pytest, agregando funciones de prueba con el
nombre apropiado, guardando el archivo bajo un
nombre de archivo que también comienza con ©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
'tests_, 'y ejecutándolo con PyTest. confidencial de Cisco. 73
Revisión de código y pruebas
Pruebas de integración
• Las pruebas de integración
garantizan que todas las
unidades individuales encajen
correctamente para realizar
una aplicación completa.

• Ejecutar el código con PyTest


produce una salida como se
muestra en la imagen:

Nota: Puede ejecutar este


script en su Máquina Virtual
usando pytest. Sin embargo,
entender la salida y corregir
cualquier error está más allá
del alcance de este curso.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 74
Revisión de código y pruebas
Desarrollo Impulsado por Pruebas (Test-Driven Development -TDD)
• Si desea probar para validar el diseño de la aplicación a la luz de los requisitos, implica que
debe escribir el código de prueba antes de escribir el código de la aplicación.
• Después de haber expresado los requisitos en el código de prueba, puede escribir el código
de aplicación hasta que pase las pruebas que ha creado en el código de prueba.
• El patrón básico de TDD es un proceso de repetición de cinco pasos:
• Crear una nueva prueba.
• Ejecutar pruebas para ver si alguna falla por razones inesperadas.
• Escribir el código de la aplicación para pasar la nueva prueba.
• Ejecutar pruebas para ver si alguna falla. 
• Refactorizar y mejorar el código de la aplicación.
©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 75
Análisis de código y pruebas
Laboratorio - Crear una prueba unitaria de Python
En esta práctica de laboratorio se cumplirán los siguientes objetivos:
• Parte 1: Iniciar la máquina virtual (Virtual Machine) de DEVASC.
• Part 2: Explorar las opciones en la unittest del framework
• Part 3: Probar un función de Phyton con uittest.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 76
3.6 Comprensión de los
formatos de datos

© 2016 Cisco y/o sus filiales. Todos los derechos reservados.


Información confidencial de Cisco. 77
Comprendiendo Formatos de datos
Formatos de Datos
• Las API Rest le permiten intercambiar información con servicios remotos y equipamiento.
• Los tres formatos estándar más populares para intercambiar información con API remotas son XML,
JSON y YAML.
• El análisis de XML, JSON o YAML es un requisito frecuente para interactuar con las API. Un patrón
frecuente en las implementaciones de API REST es el siguiente:
• Autenticar, normalmente mediante la publicación de una combinación de usuario/contraseña y la
recuperación de un token que caduca para su uso en la autenticación de solicitudes posteriores.
• Ejecutar una solicitud GET a un extremo determinado (autenticando según sea necesario) para
recuperar el estado de un recurso, solicitando XML, JSON o YAML como formato de salida.
• Modificar el XML, JSON o YAML devuelto.
• Ejecute un POST (o PUT) en el mismo punto final (de nuevo, autenticando según sea necesario)
para cambiar el estado del recurso, solicitando nuevamente XML, JSON o YAML como formato de
salida e interpretándolo según sea necesario para determinar si la operación se realizó
correctamente.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 78
Entendiendo Formatos de Datos
XML
• Extensible Markup Language (XML) es una metodología genérica para envolver datos
textuales en etiquetas simétricas para indicar semántica.
• Es un derivado de Structured Generalized Markup Language (SGML), y también el padre
de HyperText Markup Language (HTML).Los nombres de archivo XML suelen terminar en
".xml"
Un ejemplo de documento XML

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 79
Descripción de los formatos de datos
XML (Cont.)
• Cuerpo del documento XML: Excepto las dos primeras líneas de un documento XML, el resto
del documento se considera como el cuerpo.
• Nombres de etiquetas definidos por el usuario: Los nombres de etiquetas XML son
definidos por el usuario. Si está redactando XML para su propia aplicación, elija nombres de
etiquetas que expresen claramente el significado de los elementos de datos, sus relaciones y
jerarquía.
• Codificación especial de caracteres: Los datos se transmiten en XML como texto legible. 
• Prólogo XML: El prólogo XML es la primera línea de un archivo XML.
• Comentarios en XML: Los archivos XML pueden incluir comentarios, utilizando la misma
convención de comentarios utilizada en los documentos HTML.
• Atributos XML: XML permite incrustar atributos dentro de etiquetas para transmitir información
adicional.
©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 80
Comprendiendo los Formatos de Datos
XML(Cont.)
• XML Espacio de Nombres

• Los espacios de nombres son definidos por el IETF y otras autoridades de Internet,
organizaciones y otras entidades, y sus esquemas se alojan normalmente como
documentos públicos en la Web. 
• Los espacios de nombres se identifican mediante nombres uniformes de recursos
(Uniform Resource Names-URI) para hacer que los documentos persistentes sean
accesibles sin que el buscador tenga que preocuparse por su ubicación.
• El ejemplo de código siguiente muestra el uso de un espacio de nombres, definido
como el valor de un atributo xmlns, para afirmar que el contenido de una llamada a
procedimiento remoto XML debe interpretarse de acuerdo con el estándar NETCONF
1.0 heredado.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 81
Comprendiendo los Formatos de Datos
XML(Cont.)
• Interpretación de XML
• En el ejemplo de espacios de nombres XML, la estructura se representa como una lista
o array unidimensional (llamada 'instancias') de objetos (cada uno identificado como una
'instancia' mediante etiquetas de corchetes). Cada objeto de instancia contiene dos
pares clave-valor que indican un ID de instancia único y un tipo de servidor de Maquina
Virtual.

• Una estructura de datos de Python semánticamente equivalente podría declararse como


se muestra a continuación:

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 82
Entendiendo Formatos de Datos
JSON
• JSON, o JavaScript Object Notation, es un formato de datos derivado de la forma en que se
escriben literales de objetos complejos en JavaScript.
• Los nombres de archivo JSON suelen terminar en ".json".
• A continuación, se muestra un archivo JSON de ejemplo, que contiene dos valores que son
cadenas de texto, uno es un valor booleano y dos son matrices(Array):

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 83
Comprendiendo los formatos de datos
JSON (Cont.)
• Tipos de datos básicos JSON: Los tipos de datos básicos JSON incluyen números,
cadenas, booleanos o nulos.
• Objetos JSON: Al igual que en JavaScript, los objetos individuales en JSON comprenden
pares clave/valor, que pueden estar rodeados por llaves, individualmente.
• Mapas y listas JSON: En este caso, cada par clave/valor individual no necesita su propio
conjunto de corchetes, pero todo el objeto sí.puede expresar matrices ordenadas por
JavaScript (o 'listas') de datos u objetos.
• Sin comentarios en JSON: A diferencia de XML y YAML, JSON no admite ningún tipo de
método estándar para incluir comentarios el código.
• Espacio en blanco insignificante: Elespacio en blanco en JSON no es significativo, y en los
archivos se puede emplear sangría utilizando tabs o espacios como se prefiera, o no en
absoluto. 

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 84
Comprendiendo el Formato de Datos
YAML
• YAML Ain't Markup Language (YAML) es un superconjunto de JSON diseñado para una
legibilidad humana aún más fácil.
• Como superconjunto de JSON, los analizadores YAML generalmente pueden analizar
documentos JSON (pero no viceversa). 
• Por lo tanto, YAML es mejor que JSON en ciertas tareas, incluida la capacidad de incrustar
JSON directamente (incluidas las comillas) en archivos YAML. 

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 85
Comprensión de los formatos de datos
YAML (Cont.)
• Estructura de Archivos (File Structure) YAML: Los archivos YAML se abren
convencionalmente con tres guiones (— solos en una línea) y terminan con tres puntos (...
igualmente). 
• Tipos de Datos(Data Types) YAML: Los tipos de datos básicos de YAML incluyen
números, cadenas, booleanos o nulos.
• Objetos básicos(Basic Objects): En YAML, los tipos de datos básicos se equiparan a
claves.
• Sangría de YAML y estructura de archivos(Indentation and File Structure) YAML indica
su jerarquía mediante sangría.
• Mapas y listas(Maps and Lists:): YAML representa fácilmente tipos de datos más
complejos, como mapas que contienen varios pares clave/valor y listas ordenadas.
• Los mapas generalmente se expresan en varias líneas, comenzando con una clave de
etiqueta y dos puntos, seguidos de miembros, sangrados en las líneas siguientes:
©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 86
Comprensión de los formatos de datos
YAML (Cont.)
• Las listas (matrices-arrays) se representan con miembros opcionalmente sangrados
precedidos por un solo guión y espacio:

• Los mapas y las listas también se pueden representar en una llamada "sintaxis de flujo-
flow syntax", que se parece mucho a JavaScript o Python:

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 87
Comprensión de los formatos de datos
YAML (Cont.)
• Cadenas largas (Long strings):Se representan usando una sintaxis 'plegable', donde se
presume que los saltos de línea son reemplazados por espacios cuando el archivo se
analiza o consume, o en una sintaxis no plegada. 

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 88
Comprensión de los formatos de datos
YAML (Cont.)
• Comentarios: Los comentarios en YAML se pueden insertar en cualquier lugar excepto en
un literal de cadena larga, y están precedidos por el signo hash y un espacio.

• Más características de YAML: YAML tiene muchas más características, la mayoría de las
veces encontradas al usarlo en el contexto de lenguajes específicos, como Python, o al
convertir a JSON u otros formatos. Por ejemplo, YAML 1.2 admite esquemas y etiquetas,
que se pueden utilizar para desambiguar la interpretación de valores.
Por ejemplo, para forzar que un número se interprete como una cadena, puede usar !!str
string, que es parte del esquema "Failsafe" de YAML

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 89
Comprensión de los formatos de datos
Análisis y serialización
• Examinar significa analizar un mensaje, dividiéndolo en sus componentes y comprendiendo
sus propósitos en contexto.
• La serialización es más o menos lo opuesto al análisis.
• Los lenguajes de programación populares como Python generalmente incorporan funciones
de análisis fáciles de usar que pueden aceptar datos devueltos por una función de E/S y
producir una estructura de datos interna semánticamente equivalente que contenga datos
escritos válidos.
• En el lado saliente, contienen serializadores que convierten las estructuras de datos
internas en mensajes semánticamente equivalentes formateados como cadenas de
caracteres.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 90
Comprendiendo los formatos de datos
Laboratorio Analizar diferentes tipos de datos con Python
En esta práctica de laboratorio se cumplirán los siguientes objetivos:
• Parte 1: Iniciar la máquina virtual (Virtual Machine) de DEVASC.
• Part 2: Analizar XML en Python
• Part 3: Analizar JSON en Python
• Part 4: Analizar YAML en Python

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 91
3.7 Desarrollo de Software y
Descripción de Diseño

© 2016 Cisco y/o sus filiales. Todos los derechos reservados.


Información confidencial de Cisco. 92
Resumen de diseño y desarrollo de software
¿Qué aprendí en este módulo?
• Seis fases de SDLC: requerimientos y análisis, diseño, implementación, pruebas, implementación y mantenimiento.
• Tres modelos de desarrollo de software populares son Waterfall, Agile y Lean.

• El patrón de diseño MVC simplifica el desarrollo de aplicaciones que dependen de interfaces gráficas de usuario.
• El control de versiones mantiene el historial de cambios realizados en un archivo. Tipos de sistemas de control de versiones:
Local, Centralizado y Distribuido.
• Git es una implementación de código abierto de un sistema de control de versiones distribuido y tiene dos tipos de
repositorios: local y remoto.
• El código limpio es el resultado de que los desarrolladores intentan hacer que su código sea fácil de leer y entender para
otros desarrolladores. 
• La revisión del código implica revisar una base de código, un subconjunto de código o un cambio de código específico para
proporcionar comentarios.
• Tres formatos estándar más populares para intercambiar información con API remotas: XML, JSON y YAML.
• El análisis requiere analizar un mensaje, dividiéndolo en sus partes componentes y comprender sus propósitos en contexto.
La serialización es más o menos lo contrario.

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 93


Desarrollo y Diseño de Software
Nuevos Términos y Comandos
• Ciclo de vida de desarrollo de • Sistemas centralizados de control • Desarrollo impulsado por pruebas
software (SDLC) de versiones (CVCS) (TDD)
• Experiencia del usuario • Sistema de Control de Versiones • Prueba unitaria
• Requisitos de software Distribuidas(Distributed Version • Kits de Desarrollo de Software
• Scrum Agile Control System-DVCS) (SDKs)
• Lean (Inclinarse) • Git • XML
• Programación extrema (XP) • Ramificación • JSON
• Desarrollo impulsado por • GitHub • YAML
características (FDD) • Argumentos • Interfaces de programación de
• Sprints • Parámetros aplicaciones (API)
• Retroceso(backlog) • Programación de orientación de • Transferencia de estado
• Historias de usuarios objetos (OOP) representacional (REST)
• Equipos de Scrum • Revisión formal del código • Cadenas largas
• Controlador de vista de modelo • Revisión de código basada en • Análisis
(MVC) cambios • Serializando
• Revisión de código sobre el hombro

©2020 Cisco y/o sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 94

También podría gustarte