- hace 1 año
TGO Análisis y Desarrollo de Software ID 2977500 GA4-220501095-AA2-EV04, GA4-220501095-AA2-EV05 y GA4-220501095-AA2-EV06
Categoría
🤖
TecnologíaTranscripción
00:00Muy buenas tardes, estimados aprendices, espero que se encuentren muy bien el día de hoy.
00:16Muchas gracias por conectarse a esta nueva sesión virtual de la competencia técnica.
00:26Bueno, entonces les comento un poco qué vamos a trabajar el día de hoy, plataforma Soyuna.
00:40Bueno, entonces estamos todavía con la actividad de proyecto número 4, que hace parte de la
00:59guía de aprendizaje número 4 también, y el día de hoy vamos a trabajar con un tema
01:07que se llama patrones de diseño de software. Les voy a explicar también las evidencias
01:15que vamos a desarrollar en este ciclo y finalmente les voy a explicar cómo construir unos diagramas
01:28que justamente hacen parte de ese proceso de diseño de software. Entonces eso es prácticamente
01:36lo que vamos a trabajar hoy. Toda la temática como tal no la voy a abordar porque es justamente
01:41parte de las evidencias que ustedes deben entregar en este ciclo, pues implica la lectura
01:49de ese material y hacer una abstracción de conocimientos de ese material y asimismo también
01:57hacer consulta bibliográfica para complementar algunos elementos teóricos importantes. Vamos
02:08a abrir acá la guía de aprendizaje y el material. Entonces, en la guía de aprendizaje
02:29vamos a dirigir a la página, esta es la página número 8, que habla, bueno, de la
02:46página número 7, que habla sobre bases conceptuales acerca del lenguaje de programación unificado
02:55WML, ya ustedes estudiaron en las evidencias anteriores, trabajando un poco con esa parte,
03:04digamos definiendo algunos glosarios de términos. No visualizamos nada. Pensé que estaba proyectando
03:17la pantalla. Ahora sí. Bueno, entonces les comentaba que en la página 7 de la guía
03:32de aprendizaje tenemos las actividades de proyecto, perdón, las evidencias que vamos
03:42a trabajar durante esta sesión. En la sesión anterior se les explicó algunos elementos
03:51importantes sobre WML, la programación orientada a objetos y vamos a ir como en esa misma guía.
04:02En esta parte del ciclo de formación vamos a trabajar tres evidencias. Una, ya nosotros
04:11que hicimos ese ejercicio de construcción, que es justamente el diagrama de clases. Nosotros
04:17ya trabajamos en ese ejercicio, en la elaboración como tal del diagrama de clases del proyecto
04:24de software. Entonces, digamos que ya tenemos una parte de esa evidencia adelantada, pero
04:31muchos, digamos, tenían ajustes que aplicar, que pronto eran ajustes menores que sería importante
04:40que se vean reflejados, acorde con la retroalimentación que se hizo en ese momento,
04:44pues que se vean reflejados en esta evidencia. Es decir, es tomar ese diagrama de clases que
04:49ya nosotros construimos y mejorar. ¿En qué sentido vamos a mejorar? Primero aplicando
04:57la retroalimentación que se hizo en su momento y segundo incluyendo el tema de la cardinalidad en
05:05las relaciones de las clases, que en ese momento a algunos, digamos, no se les exigió que lo
05:15aplicaran porque justamente, digamos, en este proceso de formación íbamos a retomar nuevamente
05:22el tema del diagrama de clases. Entonces, es importante que ya en este punto y que ya
05:29explicamos en sesiones anteriores cómo funciona la cardinalidad en esas relaciones entre las
05:35clases, ¿cierto? Pues entonces nosotros podamos justamente aplicar si las relaciones de muchos
05:41a muchos, de uno a muchos, de cero a muchos, de uno a uno, ¿cierto? Cómo son las relaciones
05:47entre esas clases y que eso se evidencie, esa cardinalidad se marque dentro del mismo
05:54diagrama de clases como ya se explicó en sesiones anteriores. Entonces, digamos que esa es la
06:01primera evidencia en la que nos vamos a enfocar en este ciclo y que en el material de, digamos,
06:10en el formato en el que vamos a hacer la entrega, pues justamente tenemos ese espacio
06:17para cargar el diagrama de clases pues ya con esos ajustes que les acabo de indicar.
06:24Con eso, daríamos cierre al diagrama de clases, ya lo dejaríamos completo, ¿cierto? Con
06:33todos los métodos, con todos los atributos, con todas las relaciones, con la cardinalidad.
06:39La idea es que ese ejercicio quede completamente pulido para esta fase del proyecto.
06:47Seguido de eso, vamos a trabajar una evidencia que tiene un poquito más de relación con
06:54los patrones de diseño y ahorita les voy a explicar, les voy a hacer una breve introducción
07:02de lo que son esos patrones de diseño porque ya ustedes como parte de ese proceso de investigación
07:09pues justamente se van a encargar de, en esa primera parte de la evidencia, a consultar
07:16un poquito sobre los diferentes tipos de patrones de diseño de software que hay dentro de lo
07:26que es la programación orientada a objetos, ¿vale? Entonces, esa sería como la primera
07:32parte de esa evidencia, justamente averiguar qué son patrones comportamentales, describir
07:39cuáles son los tipos de patrones comportamentales, cuáles son sus características y de pronto
07:45dar un ejemplo, no necesariamente tiene que ser un ejemplo codificado, ¿cierto? Pero
07:50dar un ejemplo de cómo se podría aplicar o de qué manera ese patrón se podría hacer,
07:59digamos, visible dentro de un proceso de desarrollo de software. Lo mismo con los patrones creacionales
08:09de un ejercicio y por último con los patrones estructurales, ¿vale? Eso sería como la primera
08:17parte de esta evidencia. Luego vamos a elaborar el diagrama de componentes, eso se lo voy a
08:26explicar ahora cómo se hacen, qué consiste un diagrama de componentes y explicarles
08:31cómo funciona. Y también vamos a elaborar el diagrama de descripción, ¿listo? Entonces,
08:39en esta sesión de hoy nos vamos a enfocar justamente en la construcción de estos dos
08:46diagramas, lo vamos a hacer nuevamente con Lucidchart, una herramienta que ustedes ya
08:51conocen, aún así si quieren utilizar cualquier otro tipo de herramienta como StartML, ¿cierto?
08:57Lo pueden hacer sin ningún tipo de problema. Y por último, van a responder esta pregunta
09:06donde van a identificar herramientas y técnicas que dentro de lo que es el diseño y la arquitectura
09:14o dentro de la programación orientada, esto se utiliza como para optimizar, ¿cierto?
09:19Esos procesos de desarrollo de software. Entonces, es netamente hacer como una consulta
09:25bibliográfica de qué herramientas y qué técnicas podríamos utilizar. Por ejemplo,
09:30una de esas herramientas es justamente VML, que nos permite crear toda esa diagramación
09:37asociada con las diferentes etapas de ese proyecto de desarrollo de software y que facilita
09:43digamos su implementación ya al momento de realizar toda la codificación porque nos
09:49ayuda a entender la lógica que hay detrás de ese software. Entonces, esa, por ejemplo,
09:55es una de las herramientas que se pueden utilizar, que ayudarían justamente a optimizar ese proceso.
10:00Y ya ustedes tendrían que averiguar otras herramientas y otras técnicas que se podrían
10:05aplicar. Y por último, tenemos un pequeño taller sobre arquitectura de software que
10:13simplemente se enfoca en responder estas cinco preguntas y en relacionar el material bibliográfico,
10:24¿cierto?, que utilizaron para dar respuesta como tal a esos cuestionamientos. ¿Listo?
10:32Entonces, en eso se va a enfocar esta evidencia. Tenemos plazo hasta el día 20 de octubre.
10:43¿Listo? Entonces, esa la vamos a entregar. Voy a marcar dónde la vamos a hacer la entrega
10:52de esas evidencias. Está un poco lento el internet. Listo. Entonces, esa la vamos a
11:13entregar en esta partecita de acá de la actividad de proyecto de aprendizaje 1095AA2. Ya nosotros
11:25estuvimos trabajando las tres primeras. Ahora vamos a trabajar las tres últimas. Entonces,
11:30ese documento ustedes lo van a cargar en estas tres últimas evidencias que les habilité
11:36el día de ayer. Hasta aquí hay preguntas, dudas, inquietudes.
11:41¿Listo? Entonces, vamos a pasar al material de formación. Este material de formación
11:54parece extenso, pero realmente no lo es. Se enfoca principalmente en analizar un poquito
12:03qué son los patrones de diseño, cuáles son los patrones comportamentales, creacionales
12:08y estructurales que son justamente los que ustedes tienen que desarrollar en esa primera,
12:15en esa segunda evidencia, perdón, que les acabo de explicar. Hablo un poquito sobre
12:21las vistas estáticas y en lo que nos vamos a enfocar el día de hoy, en el diagrama de
12:26despliegue y el diagrama de componentes. Entonces, es importante de todo esto como para que ustedes
12:35entiendan un poquito de, digamos, se ubiquen mejor en el tema de los patrones de diseño,
12:45son principalmente modelos de soluciones que ya están predefinidas. Es decir, digamos
12:53que cuando se inició todo el proceso de programación, necesariamente todo había que hacerlo desde
12:58cero. Todo absolutamente dentro y aún se puede hacer. Hay muchos programadores que
13:05cuando van a hacer sus proyectos, lo hacen todo desde cero, la codificación completa
13:09desde cero, pero digamos que eso de una u otra forma genera que los proyectos se vuelvan
13:18mucho más extensos en su desarrollo. Y parte de lo que son las metodologías ágiles de
13:26desarrollo de software implica el uso de esos patrones de diseño. ¿Qué pasa con esos
13:32patrones? Son como modelos que ya están predefinidos y que permiten de una u otra manera, digamos,
13:41solucionar situaciones que son muy generales dentro de lo que es un proceso de desarrollo
13:47de software. Por ejemplo, puede haber un proceso, un patrón, por ejemplo, para el inicio de
13:52una sesión, que es algo que normalmente suele ser muy utilizado en todo el mundo
13:57y que funciona exactamente casi de la misma manera en todo el mundo. Entonces, ese patrón
14:04me da a mí unas bases, ¿cierto? Me da a mí unas bases que yo puedo utilizar. No significa
14:09que lo voy a implementar exactamente como está, porque eso puede generar inconsistencia,
14:15errores, incompatibilidades, pero sí me permite a mí entender la lógica detrás del funcionamiento
14:23de esa estructura. Y de esa manera, pues, ya yo sabiendo cómo funciona, por ejemplo,
14:27un proceso de inicio de sesión, yo puedo fácilmente tomar esa estructura y adaptarla
14:35justamente a lo que yo necesito, ¿cierto? Entonces, de esa manera, soluciona mucho,
14:43facilita mucho todo lo que es el proceso de desarrollo de software. Entonces, digamos
14:48que incluso ya hay plantillas que se pueden utilizar y que simplemente es adaptar a las
14:55necesidades. ¿Por qué? Porque digamos que muchos procesos normalmente siempre se desarrollan
15:02de la misma manera. Por ejemplo, un catálogo de productos, pues, siempre se va, la mayoría
15:09de las funcionalidades, pues, va a ser muy similar. Entonces, digamos que ya hay plantillas
15:14que me permiten a mí optimizar eso y no tener que hacerlo completamente desde cero. O, por ejemplo,
15:19el funcionamiento del carrito de compras, que tiene una secuencia lógica que ya está bien
15:26definida. Entonces, hay elementos en los que ya no tengo que perderle la totalidad del tiempo,
15:33sino que, por el contrario, puedo utilizar todos esos recursos y adaptarlo ya a las
15:39necesidades de mi cliente al momento de desarrollar ese software. Entonces, en eso se enfocan justamente
15:45esos patrones, ¿vale? Entonces, la idea es que ustedes consulten un poquito más en profundidad
15:51qué son esos patrones y cuáles son los diferentes tipos de patrones comportamentales. Acá, digamos,
16:00se explican los más importantes, por ejemplo, el patrón de estrategia, el comando, el iterador,
16:06hay muchísimos más. Entonces, incluso dentro de lo que es el material, perdón, el formato de
16:12la evidencia, ¿cierto? Ahí les hago un listadito como de los más importantes para que ustedes lo
16:22puedan tener en cuenta. Todos los nombres están en inglés, pero algunos tienen su respectiva, digamos,
16:30representación en español o significado en español. Entonces, lo pueden consultar también
16:39en español, no hay ningún problema. Lo mismo ocurre para los patrones creacionales. Acá hay un
16:49videito que explica un poco cómo funcionan esos patrones creacionales, cuál es el objetivo de
16:55ellos y, finalmente, los patrones estructurales, ¿vale? Vamos a pasar esta parte de acá. Bueno,
17:04entonces me voy a enfocar en el tema 6 y el tema número 7, que son justamente el diagrama de
17:13despliegue y el diagrama de componentes. Vamos a empezar primero por el diagrama de componentes,
17:20el diagrama de componentes. Este diagrama surge también a partir de lo que es todo el concepto
17:32de VML, porque esta herramienta de una u otra manera lo que busca es garantizar que la lógica
17:40del proceso de software, de desarrollo de software, sea entendible no solamente para los
17:45desarrolladores. Ustedes se dan cuenta, la gran mayoría de estos diagramas tienen una
17:52representación gráfica que hace muy sencillo su entendimiento, ¿cierto? ¿Por qué? Porque no se
17:57enfocan en la parte codificada, el desarrollo del software, sino en la representación de esa
18:04información a través de ideas, conceptos, que permiten que de pronto una persona que no tenga
18:11conocimientos profundos o que no sepa sobre desarrollo de software pueda entender cómo
18:17funciona un sistema de información, un software, una herramienta tecnológica. Entonces justamente
18:22estos diagramas VML se encargan de eso, de darle una vista más sencilla a esa parte lógica de los
18:32procesos y de esa manera pues el cliente que es al final el interesado, ¿cierto? Y el que está
18:38pagando por ese desarrollo, pues también entienda de qué va su proyecto y cuál es la lógica detrás
18:48de todo eso, ¿cierto? Entonces este diagrama de componentes es como una extensión del diagrama
18:56de paquetes que nosotros ya trabajamos. Ese diagrama de paquetes nosotros definimos que
19:04habían tres, digamos, estructuras clave para el desarrollo del software, que era la interfaz,
19:13¿cierto? Esa parte del proceso en el que el cliente se puede comunicar con las funcionalidades
19:20del software a través de una estructura gráfica sencilla, amigable, interactiva, responsiva,
19:29¿cierto? Que de una u otra forma garantiza que todos los procesos sean fáciles de ejecutar para
19:36un cliente que no tiene el conocimiento de cómo opera internamente, ¿cierto? Pero que entiende
19:44cómo es la lógica de un proceso. Por ejemplo, una persona que quiere registrar una venta,
19:54un vendedor, si quiere registrar una venta en un software, a él no le interesa internamente cómo
20:00ese dato que él procesa se almacena, se gestiona a través de una clase y esa clase ejecuta unos
20:06métodos para generar, digamos, para procesar esa información y que luego esa información llega a
20:14una base de datos, se almacena, o sea, al cliente no le interesa realmente eso. Le interesa es que
20:20al momento de interactuar con esa herramienta de software, ¿cierto? Lo que obtiene como respuesta
20:29de esa interacción tenga sentido, sea coherente, no genere ningún tipo de error o que de pronto
20:35pueda malversar la información que él espera recibir, ¿cierto? Por ejemplo, yo estoy aquí
20:43trabajando en este sistema operativo y si yo abro la herramienta como Word, pues yo espero
20:49que se ejecute esa herramienta adecuadamente, que yo pueda escribir, que pueda insertar gráficos,
20:55que pueda guardar el documento y no que por el contrario me abra otra aplicación o me genera un
21:00error o que al momento de guardar se me pierda el documento, ¿cierto? Entonces, lo que se busca
21:08justamente es que haya una coherencia en cada una de esas de esas fases del software y que se
21:17logren adecuadamente esos procesos de comunicación. Entonces, cuando nosotros elaboramos ese diagrama
21:24de paquetes, hablábamos de la interfaz, ¿cierto? Es la forma o digamos la estructura con la que el
21:34cliente, a través de la cual el cliente interactúa con la funcionalidad del software, teníamos la
21:41lógica del negocio que ya donde están todas esas operaciones que se deben ejecutar según
21:48lo que yo planteo en esa interfaz y por último estaba el paquete relacionado con la base de
21:57datos. Entonces, era algo más o menos como este, ¿cierto? Entonces, nosotros cuando hicimos ese
22:04ejercicio, nosotros también definimos estas tres capas, la capa interfaz, la lógica del negocio
22:11y la base de datos. Sólo que en ese momento, pues, no se hizo como de una forma tan profunda, que es
22:20justamente lo que nosotros queremos explicar ahora en este ejercicio. Un componente dentro del
22:31diagrama de componentes representa una instancia de ese software, ¿cierto? Que tiene una
22:39funcionalidad específica, ya sea que genere una interacción mediante la interfaz, ya sea que genere
22:48un método, que aplica un método, que genere una función, que desarrolle un procedimiento dentro
22:54de la lógica del negocio o que por el contrario almacene información y permita recuperar también
23:00esa información dentro de una base de datos. Entonces, digamos que aquí tenemos tres aspectos
23:08claves de lo que nosotros ya hemos trabajado durante el proceso de formación. En la primera
23:16capa, que es la capa interfaz, tenemos todo lo relacionado con el diseño. Esto no se ha
23:21profundizado, ¿cierto? Pero digamos cuando hicimos o cuando trabajamos con las herramientas de
23:28prototipado, ¿cierto? Hicimos un acercamiento, ustedes escogieron casos de uso que representaron
23:36gráficamente cómo se vería, ¿cierto? Ese caso de uso si ya fuéramos a diseñar el software.
23:43Entonces, ahí estuvimos trabajando un poquito con ese tema de la interfaz. Luego, cuando hicimos
23:50el diagrama de clases, ¿cierto? Ya pudimos identificar cuáles eran esas clases y cómo se
23:59relacionaban esas clases entre sí, entendiendo que cada una de las clases tiene atributos,
24:06¿cierto? De información que él va a ir solicitando, requiriendo para poder ejecutar unos métodos,
24:14donde los métodos representan funciones específicas que se deben realizar. Por ejemplo,
24:21si yo tengo una clase de inicio de sesión, yo dentro de esa clase, pues yo debo tener
24:26atributos asociados con ese inicio de sesión. Por ejemplo, la clave, el usuario, y dentro de
24:34esa clase debo tener métodos también asociados con el inicio de sesión. Entonces, un método
24:41para iniciar sesión, un método para cerrar sesión, un método para recuperar la contraseña,
24:46y así sucesivamente. Eso le va dando al software una funcionalidad específica.
24:55Pero para que ese método, para que esos métodos funcionen, pues necesariamente
25:01debo también conectarlo a una base de datos donde se va a almacenar esa información. Porque si,
25:08por ejemplo, yo necesito ingresar, hacer el inicio de sesión y no hay una base de datos
25:14donde esté almacenado mi usuario y mi contraseña, pues claramente me va a generar el error y nunca
25:20voy a poder ingresar a esa plataforma o a esa herramienta de software. Entonces, son tres capas
25:28clave fundamentales para que el cliente pueda interactuar adecuadamente con ese, digamos,
25:38sistema de información. Entonces, cuando ustedes vayan a trabajar o a diseñar el diagrama de
25:45componentes de ese proyecto de software en el que están trabajando, es importante que se haga
25:53la instalación como tal de esas figuras que se requieren justamente para ese proceso. Digamos
26:02que por defecto, Lucidchart trae lo estándar en cuanto a las imágenes que podemos utilizar,
26:10pero que nos permite, mediante el botón de más figuras, acceder justamente al resto de diagramas.
26:18Entonces, buscamos el de UML y dentro del UML vamos a encontrar el diagrama de clases, el de
26:27casos de uso, que ya lo hemos venido trabajando y hay uno que se llama el diagrama de componentes.
26:36Este que está acá abajo. El diagrama de despliegue, que es el que les voy a explicar ahorita,
26:44es este mismo que se llama diagrama de implementación. Entonces, la idea es que
26:49seleccionen ambos tipos de diagramas y le den acá donde dice usar figuras seleccionadas. De
26:56esa manera van a poder utilizar la simbología relacionada. Entonces, para este primer diagrama,
27:08ya que les traje un ejemplo de cómo funcionaría, digamos, una tienda virtual, yo les voy a
27:15explicar un poquito cómo funciona, cómo la vamos a ir construyendo y cómo se van a ir estableciendo
27:22las relaciones. Lo primero es, entonces, definir las tres capas. Entonces, para ello vamos a buscar
27:34el símbolo del paquete. Este símbolo que está acá se llama paquete, que parece una carpetica.
27:40Si le doy click ahí, automáticamente me va a abrir ese paquete como tal y ya yo puedo ajustarlo
27:51según el contenido que quiera aplicar. En la parte superior le puedo cambiar el nombre y esto lo
28:01puedo eliminar para que acá dentro de este espacio que es el paquete y que representa justamente
28:07cada una de las capas del software, ustedes van a ir colocando los componentes. ¿Qué son los
28:15componentes? Son esas partes esenciales o fundamentales que van a garantizar justamente
28:22que ese software funcione. Dentro de lo que es la interfaz, pues entonces vamos a tener primero
28:31el inicio de sesión. Si requiere un inicio de sesión, si no requiere el inicio de sesión,
28:35pues entrará automáticamente a lo que es el menú donde están todas las opciones que va a desarrollar
28:43el software. Ya eso dependerá, digamos, de los niveles de seguridad que se le quieran implementar
28:49a esa herramienta. Lo ideal es que haya un inicio de sesión justamente para garantizar que cualquier
28:57persona nos pueda acceder a esas estructuras, a esos datos. Entonces, tenemos un componente.
29:08Este ejemplo que está acá es el de una tienda online. Tenemos el primer componente que es el
29:15inicio de sesión. Una vez yo ejecute o active este inicio de sesión, él me va a dirigir al menú
29:24de opciones. Por eso aquí está la flechita. Esta flechita significa dependencia. Eso indica que
29:31este menú de opciones depende de que se haya iniciado sesión y la flecha debe ser punteada.
29:43Normalmente cuando yo coloco una flecha, digamos, coloca el diseño estándar de esa flecha,
29:54pero yo fácilmente eso lo puedo modificar en la parte superior acá. Puedes coger el tipo de línea
30:02punteada y también puedo escoger cómo va a finalizar esa flecha. Y tengo
30:11la forma ideal para este tipo de diagrama. Ya de esa manera he cambiado el diseño de la flecha.
30:21Para no tener que hacer eso una y otra vez, yo fácilmente puedo seleccionar esa flecha
30:27que ya he ajustado, la copio y la pego, control C, control B, y aquí ya tengo la flecha. Y la
30:35puedo seguir utilizando para el resto del diagrama y no tener que estar todo el tiempo
30:38cambiando el diseño de la flecha para no perderle como el tiempo a eso. Aquí lo importante es que
30:47se logren definir todos los componentes para cada una de esas capas, ¿cierto? Y que al mismo
30:57tiempo se puedan establecer las relaciones. Entonces, en esta capa de interfaz, esa capa
31:12que se llama e-interfaz, ya hago el inicio de sesión y puedo acceder al menú de opciones.
31:20Y dentro del menú de opciones, ¿qué voy a encontrar si es una tienda online? Voy a encontrar
31:24todos estos componentes y seguramente muchísimos componentes más. Esto simplemente es un ejemplo
31:33para explicar cómo funciona este diagrama de componentes y cómo puedo ir estableciendo las
31:38relaciones entre los componentes de cada una de esas capas, ¿vale? Entonces, en mi tienda online,
31:48una vez accedo al menú de opciones, voy a poder encontrar el catálogo de todos los productos,
31:55un buscador de productos, el carrito de compra donde se van a ir almacenando todos esos productos
32:00que yo seleccione y que quiero comprar. Tengo el componente que me hace permitir hacer justamente
32:07el pago y, por último, el componente que me va a permitir realizar ese proceso de entrega de lo
32:16que yo voy a comprar. Entonces, para cada uno de estos elementos, de estos componentes, hay una
32:21interfaz gráfica que es visible por el cliente, es decir, el cliente va a interactuar con cada uno
32:30de esos componentes de forma directa a través de su interfaz de usuario. Puede que para un usuario
32:35administrador tenga componentes diferentes, seguramente sí, porque tendrá que crear, por
32:42ejemplo, los productos, tendrá que crear los métodos de pago, habrán como más opciones, pero este es
32:49un ejemplo básico para un cliente que va a operar una tienda online.
32:57Claramente, debo definir las relaciones de dependencia. Estas flechas indican que para yo
33:04acceder a cada uno de estos componentes, dependo de que haya un menú de opciones. Este menú de opciones
33:11me va a desplegar cada uno de estos componentes. Esto desde la perspectiva de la interfaz.
33:21Ahora, si yo quiero hacer la conexión de todo esto con la lógica del negocio, entonces necesariamente
33:28cada uno de estos componentes dentro de lo que es ese paquete o ese, digamos, esa parte funcional
33:42del software va a tener asociado una clase. Recuerden que estamos trabajando con programación
33:47orientada a objetos y cada una de esas clases obviamente va a tener todos los métodos que van
33:55a garantizar la funcionalidad de esa interfaz. Entonces, aquí también voy a establecer justamente
34:02esa relación de dependencia. Es decir, que para que esta clase se ejecute, depende de que exista
34:11una interfaz que se llame inicio de sesión, que desencadene justamente a través de botones
34:18y a través de campos de información el funcionamiento de los métodos que hay dentro
34:27de esa clase. Y lo mismo aplicaría para las demás interfaces donde debe haber una conexión con las
34:38clases que contienen los métodos para que esas interfaces puedan funcionar. Por lo contrario,
34:44si no hay esa conexión, pues entonces los botones, los campos, pues nunca van a funcionar
34:50porque no me están conectando con esa parte funcional del software que al mismo tiempo va
34:57a conectar con la base de datos. El símbolo que se utiliza para crear los componentes aparece acá,
35:08se llama componente, que es un rectángulo, que parece como si fuera un cuaderno de estos
35:16anillados, al menos puede ser como el símbolo, si yo le doy click ahí, se crea el componente,
35:24yo le puedo cambiar la información, puedo cambiarle el tamaño, la longitud, el ancho,
35:32según la cantidad de información y también puedo definir o extender flechas.
35:42Voy agregando más y más componentes y asimismo voy haciendo las conexiones.
35:53¿Hasta aquí vamos bien?
35:54Sí, señor.
36:00Por último, ya en la capa de la base de datos, entonces ya tenemos las entidades,
36:08se acuerdan que nosotros hicimos el ejercicio de la creación de entidad relación,
36:14¿cierto? Cuando estuvimos hablando del diagrama de entidad relación, que es justamente ese
36:19diagrama que me permite entender la estructura de la base de datos. Cada entidad justamente
36:28representa ese elemento donde se va a guardar la información que se gestiona a través de
36:35estas clases. Entonces en la base de datos necesariamente debe haber una tabla que
36:41contenga la información de los usuarios para poder hacer el inicio de sesión,
36:47para poder hacer el cierre de sesión, para poder cambiar la contraseña. Lo mismo debe haber una
36:53base de datos que contenga información de los productos, su código, el nombre, la cantidad
36:58de productos, el proveedor y así sucesivamente. Entonces yo voy a ir definiendo todas esas
37:07entidades que de una u otra forma van a proveer, digamos, el espacio para que se pueda, la
37:15información pueda entrar y salir según la necesidad de ese cliente, ¿cierto? Por ejemplo,
37:24si yo voy a iniciar sesión, él me va a conectar con esa entidad de usuario donde va a obtener
37:29esa información de usuario y contraseña. Si yo voy a, digamos, a ver el catálogo de
37:36productos, entonces él se comunica con la clase de productos y en la clase de productos
37:41entonces va a sacar información de la entidad producto, donde está toda la información del
37:48producto, también va a sacar información de la entidad tipo de producto, donde está como la
37:54clasificación. Esta entidad, por ejemplo, me va a permitir a mí dentro del catálogo del producto
37:59poder filtrar los productos según el tipo. O yo, por ejemplo, también podría incluir acá una
38:06entidad que se llame proveedor. Esta entidad proveedor. Y yo también podría dentro del catálogo
38:16dentro del catálogo de productos poder filtrar por proveedores. Por ejemplo, cuando uno entra
38:22a Dafiti, que es una tienda donde venden ropa, zapatos y todo este tipo de cosas, yo puedo
38:29incluso filtrar el catálogo de productos según la tienda, según la marca, por ejemplo. Entonces
38:34quiero que solamente me muestre lo de Nike, quiero que solamente me muestre lo de Adidas,
38:40todo eso. ¿Vale? Entonces puedo yo incluir la cantidad de entidades que necesito y claramente
38:47pues establecer la relación. Y aquí uno va, digamos, acomodando el diagrama. Si ustedes ven que está
38:58muy punto todo, pues ustedes van haciendo, van viendo y van. Pueden jugar con el espacio, ¿vale?
39:04Para que las líneas sean lo más claras posible y se pueda hacer como una mejor organización del
39:17sistema. Y así sucesivamente, entonces yo voy creando esas relaciones de dependencia.
39:33Para yo poder, digamos, hacer uso de los datos que aparecen en esta entidad, ¿cierto? Necesariamente
39:42debo tener una clase que ejecute los métodos que van a hacer ese llamado de desinformación. Ya sea
39:49porque la va a almacenar o porque la va a rescatar o la va a recuperar para mostrársela al cliente ya
39:56en la interfaz. Entonces eso es lo que significa la flecha y siempre va de la clase que genera la
40:05dependencia hacia la clase de la cual depende. Entonces la cabecita de la flecha siempre va a
40:11ir en la, digamos, en el componente que está generando la dependencia del componente previamente
40:21anterior dentro de lo que es la lógica de este diagrama. ¿Listo? Y así yo puedo conectar en
40:32este caso muchos componentes de la lógica de negocio con muchos componentes de la base de
40:38datos y de esta manera ya puedo entender mucho mejor cómo va a funcionar mi herramienta, ¿cierto?
40:49Cómo va a funcionar ese sistema de informaciones, eso es lo que yo voy a construir y de esta manera
40:54también puedo explicarle fácilmente al cliente, ¿cierto? Qué componentes va a llevar, cómo van a
41:01funcionar, ¿cierto? Y así, digamos, facilitar su conferencia. Una vez ustedes hagan ese ejercicio
41:12de abstracción, construyan el diagrama de componente, ¿saben qué? Se van acá a archivo, acá donde dice
41:20exportar y lo guardan en png y esta imagen es la que ustedes van a colocar acá. ¿Listo? Entonces
41:31voy a tomar un pantallazo aquí para no descargarla. Entonces, esta es la imagen y la voy a reemplazar.
41:42Aquí ya tengo mi diagrama de componente, si quiere le puedo quitar acá el nombre para que
41:50solamente me quede el diagrama. ¿Listo? ¿Hasta aquí vamos bien?
41:56Sí, señor. Perfecto. Una vez ya hayamos definido el diagrama de componentes, vamos a trabajar con el
42:13diagrama de despliegue. Este diagrama suele ser un poquito más, no más complejo, pero digamos que
42:22requiere un poquito más de conocimiento respecto a cómo funciona, digamos, todo ese sistema de
42:31operación física de un software. Este diagrama de despliegue de implementación muestra una vista
42:38mucho más, digamos, física del sistema en comparación con el diagrama de componente que
42:45muestra, digamos, o nos da una vista un poco más lógica en materia de funcionamiento. Acá no, acá lo que
42:54nosotros queremos mostrar es qué herramientas necesitamos nosotros para que ese sistema de
43:01información pueda funcionar. Herramientas que obviamente deben estar instaladas en el, tanto
43:10en el cliente como en el servidor para que, digamos, el flujo de información sea óptimo y no se generen,
43:23digamos, errores en cuanto a la operatividad del software. Entonces, acá ya vamos a utilizar tres
43:34elementos importantes. El primer elemento, para eso necesitamos nosotros, bueno, si ustedes miran
43:41el diagrama en UML, el diagrama de componente y el diagrama de implementación, pues prácticamente tienen los
43:47mismos elementos gráficos, ¿cierto? Pero no se utilizan todos de la misma manera. En este caso,
44:01en el diagrama de despliegue se utilizan los nodos, que son estos cuadraditos que están acá, un nodo,
44:10se utilizan los nodos que representan justamente esa instancia física, ¿cierto? Que dentro de ella
44:21pues va a tener unos artefactos que tienen funcionalidades específicas. Un artefacto, pues
44:29es justamente esa herramienta o ese elemento que yo necesito para que se logre esa operatividad de
44:36ese sistema de información. Y este artefacto pues se construye mediante esta herramienta, este elemento gráfico
44:47que se llama node. Aquí tengo, ese sería el nodo que representa a esa, digamos, instancia como tal, o ese
44:56elemento clave físico de la operatividad del sistema de información, el software que se va a desarrollar.
45:05Y tenemos los artefactos que representan esos dispositivos, bueno, perdón, los nodos representan
45:11los dispositivos, los servidores, los equipos, ¿cierto? Que van a interactuar entre sí para que funcione
45:20ese sistema de información. Y los artefactos pues ya van a representar como tal esas funcionalidades,
45:26esas aplicaciones, esas herramientas tecnológicas que de una u otra manera logran que esa comunicación
45:36se haga a través de cada uno de esos nodos. Y por último, tenemos las conexiones, ¿vale?
45:46Si yo no establezco las conexiones y defino los protocolos, ¿vale? Los protocolos a través
45:52de los cuales estos dos elementos se van a conectar, entonces no voy a saber cómo va
45:57a circular la información entre ellos. Entonces este sería el tercer elemento, justamente
46:05el elemento de conexión. Entonces tenemos el nodo, el artefacto y el elemento de conexión.
46:14Entonces, cuando nosotros desarrollamos un sistema de información, nos encontramos,
46:20digamos, como básico, como básico, con cuatro estructuras, ¿listo? La primera de ellas
46:27es el cliente, que es justamente donde va a estar esa, digamos, esas herramientas que
46:35van a permitir conectar con el frontend, que sería como el servidor, el servidor web,
46:42donde está justamente alojada esa aplicación, ¿cierto? Aquí es donde va a estar esa herramienta
46:49de software que ustedes van a desarrollar y que el cliente, si es una aplicación web,
46:55pues a través del navegador, ¿cierto? Va a poder entrar al sitio web y a través de
47:00ese sitio web va a poder justamente acceder a esa herramienta de software que ustedes
47:09van a construir. Entonces, una vez ya yo tenga definido mi cliente y cuáles son las herramientas
47:18o los elementos que necesita para poder operar ese sistema, debo crear el frontend. Es el
47:27servidor web que es, digamos, esta estructura que va a garantizar que el cliente, y representa,
47:34digamos, como la interfaz también, a través del cual el cliente va a poder acceder, pues,
47:40a los datos que están dentro de la base de datos. Es decir, el cliente no puede hacer
47:46esto desde, digamos, como cliente y llegar directo a la base de datos. No lo puede hacer
47:54si no recorre tanto el frontend como el backend. Que son esos dos elementos clave para que
48:05el software opere tanto desde el lado del cliente como para que opere del lado del servidor.
48:13Y acá, como artefacto, pues voy a incluir todas esas herramientas que yo necesito para
48:17que, por ejemplo, en el caso del frontend, todas las herramientas que yo necesito para
48:22que ese sitio web funcione. Entonces, claramente necesito el lenguaje que voy a utilizar para la
48:28programación, voy a utilizar, como es un sitio, como es una aplicación web, voy a necesitar HTML,
48:34CSS para darle el estilo, el diseño, la estructura, la forma de ese sitio o esa herramienta de
48:42software. El framework que, digamos, me da a mí los patrones. Normalmente todo el tema de los
48:50patrones de diseño está muy relacionado con el framework porque ya trae estructuras que facilitan
48:57justamente la construcción de esos sitios o de esas herramientas web. Y de esa manera, pues,
49:03agiliza mucho y optimiza también mucho el tema de la creación del software. Y que, según el tipo
49:13del lenguaje de programación que yo utilice, pues así mismo voy a tener un framework que me va a
49:19permitir a mí la interpretación, el acceso a las librerías, el acceso a muchos métodos y
49:25herramientas que justamente garantizan que esa herramienta de software que se diseña en ese
49:33lenguaje de programación, pues, pueda funcionar adecuadamente. Y por último tenemos, digamos,
49:39todos esos archivos multimedia que yo necesito para que esa aplicación se vea bien. Audio,
49:45videos, imágenes, fuentes, todos esos elementos que son visibles al cliente una vez acceda a
49:56esa herramienta. Como es una herramienta web, pues, va a tener un protocolo de conexión HTTP,
50:04¿cierto? Que es ese protocolo de Internet. Obviamente va a necesitar una conexión de
50:10Internet estable para que se pueda generar la conexión entre esos dos elementos. Normalmente,
50:19la estructura de, digamos, o el diagrama de despliegue para la gran mayoría de herramientas
50:32de software o de plataformas web, pues, más o menos tienen prácticamente la misma estructura
50:42porque necesita de lo mismo para funcionar. Digamos que este ejemplo les va a servir a
50:47ustedes muchísimo respecto a los elementos que pueden incluir en ese diagrama. Luego
50:58tenemos el backend, que es el servidor de aplicaciones. Y ya esto está un poquito más
51:05del lado del servidor como tal, ¿cierto? Aquí es donde ya se empieza o digamos está
51:12más relacionado con todo el tema de la lógica del negocio, de cómo funciona ese sistema
51:20de información y cómo opera y cómo a través de las aplicaciones que están instaladas
51:25acá yo puedo acceder a esa base de datos. Entonces, algunos de los elementos que yo
51:33puedo encontrar dentro de este nodo están las APIs, que son justamente las que me van
51:38a permitir a mí que haya una interacción entre la interfaz y esa base de datos. Tenemos
51:47los middleware que nos permiten de una u otra forma generar respuestas al momento de que
51:54un cliente hace una solicitud y se le va a dar una respuesta, ¿cierto? Este middleware
51:59en el medio de esas solicitudes hace algunas operaciones como, por ejemplo, informar si
52:06hay errores o garantizar que, por ejemplo, el usuario esté bloqueado o haya iniciado
52:16sesión antes de hacer esa solicitud a modo de garantizar también esa seguridad. También
52:24tengo un framework del lado del servidor que dependiendo del lenguaje de programación
52:33también va a permitir que se puedan, digamos, desarrollar todos los procesos internos de
52:41la aplicación y en el caso de la tienda online, que es el que yo les estoy explicando,
52:47pues también voy a necesitar dentro de esos artefactos una pasarela de pagos. Esta pasarela
52:52pues es externa, normalmente digamos ya esas están diseñadas y lo que se hace es adquirir
53:01como tal ese servicio, pero hace parte también de lo que es el backend, todo el tema de los
53:08controladores, de los servicios que de una u otra manera se puedan implementar, ya sean,
53:17algunos se pueden construir y otros se pueden, en este caso la pasarela de pagos, pues lo
53:21ideal es adquirir el servicio de una que ya funcione porque ya viene como con criterios
53:26de seguridad establecidos que de una u otra manera garantiza que esas operaciones o esas
53:34transacciones se realicen de la forma más segura posible.
53:43Este backend que representa, digamos, como tal el servidor, la parte más de la lógica
53:48del negocio, pues va a necesitar también un protocolo de comunicación con la base
53:56de datos. Ese protocolo pues dependerá del tipo de base de datos que se utiliza. Si se
54:03utiliza una base de datos relacional o una base de datos no relacional, pues así mismo
54:07va a cambiar ese protocolo de comunicación. Luego ya en el nodo, que es el nodo como más
54:16profundo de todo este sistema, que es el de la base de datos, pues obviamente voy a tener
54:21el sistema de gestión de bases de datos, ¿cierto?, que es esa herramienta con la cual
54:26yo voy a construir todas esas entidades y todas esas tablas donde voy a almacenar la
54:32información. Voy a tener también el ORM, que es una herramienta que me va a permitir
54:40o me va a facilitar a mí, digamos, agilizar ese proceso de consulta de información porque
54:49lo que hace esta herramienta es, digamos, poner en capas superiores la información
54:54de la base de datos. De tal manera que al momento de yo hacer consultas, las respuestas
55:00que se generen sean mucho más rápidas y no tener que entrar todo el tiempo con los
55:09queries en SQL todo el tiempo a la base de datos haciendo consultas porque eso suele
55:13ser un poquito más demorado. Entonces, si yo traslado toda esa información a capas
55:17más superiores de lo que es la lógica del negocio, digamos, voy a facilitar un poquito
55:24el tema de la comunicación. También voy a tener dentro lo que es la base de datos
55:29mecanismos para hacer backups, hacer las copias de seguridad o para recuperar, ¿cierto?,
55:37bases de copias que ya yo haya implementado y que la quiera utilizar. Entonces también
55:41voy a tener, digamos, artefactos o métodos asociados a eso. Voy a tener métodos de integridad
55:52dentro de las transacciones que, por ejemplo, si yo voy a modificar varios campos al mismo
56:00tiempo de una base de datos y alguno de esos campos tiene algún error, entonces mediante
56:06ese sistema de integridad de las transacciones, pues yo poder, digamos, restituir esa base
56:12de datos antes del error y que no me vaya a generar de pronto inconsistencias en información
56:19que se va a almacenar. Entonces la idea es que ustedes, digamos, apoyado en este ejemplo
56:26que yo les acabo de explicar, puedan construir justamente este diagrama de despliegue o diagrama
56:34de implementación como también se conoce para ese software que ustedes están trabajando.
56:43Una vez finalice el diagrama, ya finalicen el diagrama, pues van a archivo, exportar,
56:52aquí a PNG, acá la captura de pantalla, y nos vamos acá a esta figura número 3 y
57:07aquí colocamos el diagrama. Entonces ya tendríamos esos dos diagramas elaborados
57:15y ya nos quedaría, pues, terminar el resto de la evidencia que es un poquito más teórica.
57:23Digamos que la parte práctica de estas tres evidencias está justamente en la construcción
57:29del diagrama de componentes y del diagrama de despliegue.
57:34¿Dudas, preguntas, inquietudes? ¿Quedó claro todo?
57:42Sí, señor. Entonces, recuerden que dentro de la plataforma
57:54ustedes tienen acceso también al formato. Es un poco lento esto acá. Esperemos que
58:21no sea que la plataforma esté presentando errores. Bueno, de todas maneras, pues saben
58:27que al entrar a cada una de estas evidencias, pues van a encontrar el documento como tal
58:32que yo les estoy mostrando acá, que ya les expliqué, justamente para que ustedes puedan
58:37cargar la evidencia. El único error que sí tiene es que acá la fecha estaba errada,
58:43en el que está en la plataforma dice 10 de octubre, acá realmente hay plazo hasta el
58:4720 de octubre para hacer la entrega de estas evidencias. ¿Listo? Aquí está el botoncito
58:55para acceder justamente a ese formato. ¿Alguna duda adicional que podamos resolver?
59:06No, señor, de mi parte no está claro. Perfecto. Listo. Entonces, voy a detener acá la grabación
59:23y voy a...
Comentarios