# Arquitectura Software para Estrategia <!-- Put the link to this slide here so people can follow --> slide: https://hackmd.io/@ogarcia/arquitectura --- La arquitectura de software se refiere al diseño y organización de los **componentes** de un sistema de software, incluyendo sus **estructuras**, **módulos**, **interfaces** y **relaciones**, con el objetivo de cumplir con los **requisitos** funcionales y no funcionales del sistema. --- ## Requisitos Funcionales - Objetivos y necesidades del usuario - Qué hace el sistema, cómo se comporta y qué resultados produce --- ## Requisitos no funcionales - Características del sistema no relacionadas con su funcionalidad - Seguridad, la escalabilidad, la usabilidad, la fiabilidad, el rendimiento y la accesibilidad --- ## Pero los requisitos son complejos... - Están vinculados al **dominio** de aplicación - El dominio es complicado, específico, especializado... - Para entender los requisitos es necesario entender el dominio :wink: --- ## ¿Cómo abordar la complejidad? - Descomposición Top-Down: descomponer un problema grande en varios pequeños - Abstracción: considerar una pieza como una caja cerrada que proporciona uno o varios servicios Piensa cómo describes lo que un coche puede hacer --- ## Bajando el nivel de abstracción > Vamos a describir la estructura de cada una de las moléculas que componen el coche :-1: Descripción demasiado exhaustiva, impracticable --- ## Subiendo el nivel de abstracción > Es una caja metálica que se desplaza y con ella su contenido :-1: Descripción demasiado ambigüa --- ## ¿Cómo seleccionar el nivel adecuado? Hay innumerables formas de descomponer un sistema complejo :fearful: :::success Imagina que quieres construir un sitio para que vivan seres humanos ::: --- ## Existen abstracciones típicas ... que dependen del dominio > piso, casa, edificio, cabaña, choza, chalet ... ... incluso podemos bajar un poco más > ventana, puerta, lavabo, cocina --- ## Los arquitectos usan abstracciones Abstracciones que funcionaron bien en el pasado > Estaría bien tener un sitio donde preparar comidas, otro para dormir, otro para asearse, otro para .. --- ## Los arquitectos reutilizan patrones Patrones que se repiten una y otra vez > Todas las viviendas tienen ventanas. ¿Por qué? porque una vez las puse y resultaron útiles y agradables. Para cumplir con los requisitos, tanto funcionales como no funcionales --- ## La abstracción de una `ventana` :thinking_face: ventana :thinking_face: :::info No sientes la necesidad de decir más; escondes los detalles, que tienen uno varios cristales, aislante, capacidad de abrirse de varias formas. ::: --- ## ¿Bajamos el nivel de abstracción de `ventana`? > Buscamos qué tipo de cristales son los más adecuados, analizamos si hacemos la ventana con hierro, aluminio, con plastilina, con cemento? ¿Pensamos como hacer que se puedan abrir y cerrar? :tired_face: Pues nos va a salir barata de ventana --- ## Mejor nos quedamos en este nivel Mejor buscamos un fabricante de ventanas, y elegimos una del catálogo de ese fabricante. :smiley: cost-effective, entrega inmediata, calidad estandarizada ... :unamused: pero no hay ventanas con forma de PepaPig, ¡yo quiero una ventana con forma de PepaPig :cry:! --- ## Abstracciones típicas ![](https://hackmd.io/_uploads/rypO09mkn.png){width=10}
{"metaMigratedAt":"2023-06-17T19:47:54.535Z","metaMigratedFrom":"YAML","title":"Arquitectura Software para Estrategia","breaks":true,"description":"Arquitectura Software para Estrategia","contributors":"[{\"id\":\"93855254-5bcf-438a-b2d1-f9f805e036e4\",\"add\":3865,\"del\":334}]"}
    225 views