[MUSIC] Vamos a discutir acerca de algunas herramientas de diseño que los ingenieros informáticos utilizan. >> you hemos visto que las aplicaciones Web modernas implican una cantidad significativa de complejidad, sobre todo, en el lado del servidor. Pero incluso lo que está sucediendo en el lado del cliente, en el navegador, se complica con el tiempo. Una aplicación Web típica involucra numerosos protocolos, lenguajes de programación y tecnología a través de toda la pila Web. Y esto hace que el desarrollo, mantenimiento y ampliación de aplicaciones Web complejas sea extremadamente difícil. Por lo tanto, tenemos que usar una base de principios de diseños sólidos. Con el fin de simplificar el desarrollo y mantenimiento de aplicaciones Web. Los ingenieros de software utilizan utilizan la abstracción para gestionar la complejidad. No se pueden mantener todos los detalles asociados con un sistema de software grande en la cabeza del ingeniero. Hay demasiada complejidad, y, si se intenta, es probable que se cometan errores. La mente humana no puede manejar tanta complejidad, por lo cual, debemos utilizar lo que se denomina abstracción. La abstracción representa las características esenciales de un componente de diseño de software sin incluir los detalles de fondo. En otras palabras, se extrae la complejidad del diseño a través de la representación de los elementos más importantes de este diseño. Los patrones de diseño proporcionan abstracciónes útiles para la construcción de sistemas de software. Algunas de las abstracciones de diseño más importantes utilizadas por los ingenieros de software son Los patrones de diseño. ¿Pero qué es un patrón de diseño? Es una solución reutilizable para un problema de diseño que implica un conjunto de componentes que interactúan. Con el fin de resolver un problema de diseño general con cualquier contexto particular. Vamos a echar un vistazo a esta definición. Un patrón de diseños es una solución reutilizable que involucra componentes de software que interactúan entre ellos. En otras palabras, un patrón de diseño especifica cómo se deben organizar estos componentes con el fin de resolver este problema. Estos son, a menudo, componentes de software que pueden estar a un nivel bastante alto o pueden estar en un nivel muy bajo. Por ejemplo, el nivel de un objeto en un sistema orientado a objetos. El término contexto, utilizado en esta definición. Describe las circunstancias concretas en las que usted está tratando de aplicar este patrón de diseño. En otras palabras, los factores motivadores individuales son problemas que necesitan ser resueltos. Con el fin de construir un sistema de software con éxito. Hablaremos de ello en un momento. Los patrones de diseño son plantillas abstractas que se pueden aplicar una y otra vez en muchos contextos diferentes. Es importante entender que los patrones de diseño no son código real. Sino que simplemente son ideas de diseño que simplemente ocurren muchas veces. En otras palabras, son suficientemente corrientes como para darles un nombre. Y hay muchas formas diferentes de implementar un patrón de diseño. ¿Por qué deberíamos hacer esto? Hay patrones de diseño bien conocidos que a menudo se usan solos o en combinación para simplificar diseños complejos. Además, los patrones de diseño proporcionan una manera de comunicarnos entre nosotros acerca de las partes particulares de un diseño. Esto es, los patrones de diseño son la lengua vernacular que los ingenieros de software utilizan para comunicarse entre sí. He aquí un ejemplo. El modelo de servidor de cliente-servidor que hemos utilizado, es un modelo de patrón de diseño. Echemos un vistazo a sus características, es una plantilla reutilizable que se puede aplicar una y otra vez. En nuestro caso, lo hemos aplicado en el problema de la comunicación a través de internet, durante el uso de la World Wide Web. Este es nuestro contexto. El punto central de la arquitectura cliente-servidor, es distribuir los componentes de una aplicación entre cliente y servidor de alguna manera. Qué cosa está colocada en cada sitio, es lo que determina el tipo particular de arquitectura cliente-servidor. Por ejemplo, usted podría estar tratando de compartir una base de datos entre un grupo de usuarios, o archivos a una impresora. Esta es una escena de contexto muy común, en el que se utilizaría la arquitectura cliente-servidor. Y en nuestro caso estamos distribuyendo el navegador para el cliente y el servidor web, para el servidor. Y lo que tenemos aquí son componentes interactuando, es decir, el navegador que interactúa con el servidor web. Y cuando ahora utilizo el término cliente-servidor, you tiene usted inmediatamente una idea de lo que esto significa. De lo que este diseño implica, con el fin de poder construir aplicaciones web complejas. Vamos a tener que hacer uso de numerosos patrones de diseño a lo largo de este curso. Lo que nos ayudará a organizar cómo se colocan las piezas dentro de una arquitectura de aplicaciones web. Vamos a empezar por elaborar el patrón de diseño cliente-servidor con más detalle en el siguiente vídeo.