{"id":1794,"date":"2024-08-03T08:23:11","date_gmt":"2024-08-03T06:23:11","guid":{"rendered":"https:\/\/blog.sutilweb.eu\/?page_id=1794"},"modified":"2024-08-03T08:23:12","modified_gmt":"2024-08-03T06:23:12","slug":"16-arquitectura-de-software","status":"publish","type":"page","link":"https:\/\/sutilweb.eu\/index.php\/lenguajes\/php\/poo-php\/16-arquitectura-de-software\/","title":{"rendered":"16. Arquitectura de software"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Modelo vista controlador<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En este cap\u00edtulo abordaremos de manera te\u00f3rica lo que es importante a tratar para poder integrar todos los conocimientos a lo largo de estos cap\u00edtulos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"577\" height=\"423\" src=\"https:\/\/blog.sutilweb.eu\/wp-content\/uploads\/2024\/08\/Modelo-Vista-Controlador.png\" alt=\"\" class=\"wp-image-1796\" srcset=\"https:\/\/sutilweb.eu\/wp-content\/uploads\/2024\/08\/Modelo-Vista-Controlador.png 577w, https:\/\/sutilweb.eu\/wp-content\/uploads\/2024\/08\/Modelo-Vista-Controlador-300x220.png 300w\" sizes=\"auto, (max-width: 577px) 100vw, 577px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Funcionamiento<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tenemos un <strong>usuario<\/strong> el cual est\u00e1 haciendo peticiones al <strong>servidor<\/strong>, ese <strong>servidor<\/strong> se encarga de recibir peticiones y responderlas, e internamente funciona bajo el esquema arriba indicado. Tiene una parte que controla esas peticiones y las respuestas que el <strong>servidor<\/strong> vaya mandando. El <strong>modelo<\/strong> es la parte que se va a comunicar con los <strong>datos<\/strong>, dicho <strong>modelo<\/strong> devolver\u00e1 una <strong>vista<\/strong> que es la que se devuelve a la petici\u00f3n del <strong>usuario<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Arquitectura de software<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La <strong>arquitectura de software<\/strong> es la forma en la que se organizan los <strong>componentes<\/strong> de un <strong>sistema<\/strong>, la manera en como los mismos van a interactuar y se relacionan entre s\u00ed y tambi\u00e9n con su contexto, que son todos los agentes externos con los cuales nuestro <strong>sistema<\/strong> vaya a funcionar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dentro de la <strong>arquitectura de software<\/strong> se aplican ciertas normas y principios de <strong>dise\u00f1o<\/strong> y <strong>calidad<\/strong> con el objetivo de fortalecer y fomentar la usabilidad. Todas estas normas deben estar pensadas para que, si m\u00e1s adelante el <strong>sistema<\/strong> tiene que evolucionar, est\u00e9 preparado para dichos cambios o dicha evoluci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando estemos creando tenemos que pensar que nuestro <strong>software<\/strong> tenga la capacidad de crecer, tanto vertical como horizontalmente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Etapas de la arquitectura de software<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Las etapas que encontramos en la <strong>arquitectura de software<\/strong> son 4, que son las siguientes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Requerimientos<\/li>\n\n\n\n<li>Dise\u00f1o<\/li>\n\n\n\n<li>Documentaci\u00f3n<\/li>\n\n\n\n<li>Evaluaci\u00f3n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">En la etapa de <strong>requerimientos<\/strong> nos enfocamos a capturar las necesidades, y en base a dichas necesidades, priorizar las etapas del <strong>dise\u00f1o<\/strong> que vayamos a formular en la <strong>arquitectura de software<\/strong>. Posteriormente, el <strong>dise\u00f1o<\/strong> es la etapa central en la que se toman las decisiones m\u00e1s importantes, es donde empezamos a elegir tecnolog\u00edas, <strong>herramientas<\/strong>, tiempo que vamos a necesitar, y tambi\u00e9n vamos a elegir el <strong>patr\u00f3n de dise\u00f1o<\/strong> que mas nos convenga para desarrollar la <strong>aplicaci\u00f3n<\/strong>. En la etapa de <strong>documentaci\u00f3n<\/strong>, una vez creado el dise\u00f1o de la arquitectura, es necesario estar documentando todos los detalles de la fase de <strong>desarrollo de software<\/strong>, para que de esta manera, si hacemos entrega formal de nuestro <strong>sistema<\/strong>, y no vamos a tener que ver nada con dicho <strong>sistema<\/strong>, los futuros administradores tengan ese respaldo para que puedan intervenirlo de la manera adecuada, o aumentar las capacidades del <strong>sistema<\/strong> bas\u00e1ndose en los principios de la <strong>arquitectura<\/strong> de la cual fue creado. Inclusive si seguimos administrando dicho <strong>sistema<\/strong>, si ha pasado tiempo ya no recordamos bien que hicimos en su momento, con la <strong>documentaci\u00f3n<\/strong> tenemos todo a mano. La <strong>documentaci\u00f3n<\/strong> es muy importante en las etapas finales del <strong>software<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mientras se va documentando tambi\u00e9n se va evaluando, la <strong>evaluaci\u00f3n<\/strong> es un papel cr\u00edtico en el <strong>desarrollo<\/strong> de la <strong>arquitectura de software<\/strong>. Muchas veces la <strong>etapa de evaluaci\u00f3n<\/strong> hace que tengamos que regresar a la <strong>etapa de dise\u00f1o<\/strong>, tenemos un redise\u00f1o en el planteamiento de como hemos desarrollado el sistema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No confundir la <strong>arquitectura de software<\/strong> con el <strong>ciclo de vida de un sistema<\/strong>. De hecho, el <strong>ciclo de vida de un sistema<\/strong> estar\u00eda intr\u00ednseco en la etapa de dise\u00f1o del mismo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tipos de arquitectura de software<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Existen diversos tipos de arquitectura de software:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Descomposici\u00f3n modular<\/li>\n\n\n\n<li>Cliente &#8211; servidor<\/li>\n\n\n\n<li>Arquitectura de tres niveles: la interfaz se comunica con el controlador, y el controlador con el modelo. No hay interrelaci\u00f3n entre los 3 elementos.<\/li>\n\n\n\n<li>Modelo Vista Controlador (MVC): hay interdependencia entre interfaz, controlador y modelo.<\/li>\n\n\n\n<li>En filtros (pipeline)<\/li>\n\n\n\n<li>Entre pares<\/li>\n\n\n\n<li>En pizarra<\/li>\n\n\n\n<li>Dirigida por eventos: <strong>Angular<\/strong>, <strong>Backbone<\/strong>&#8230; trabajan con esta arquitectura.<\/li>\n\n\n\n<li>M\u00e1quinas virtuales<\/li>\n\n\n\n<li>Orientada a servicios<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">El <strong>Modelo Vista Controlador<\/strong> deriva de la <strong>arquitectura de tres niveles<\/strong>. Existe desde la d\u00e9cada de los 70. Cuando empiezan a existir las <strong>aplicaciones web<\/strong>, es el modelo por excelencia de dichas aplicaciones.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Modelo vista controlador En este cap\u00edtulo abordaremos de manera te\u00f3rica lo que es importante a tratar para poder integrar todos los conocimientos a lo largo de estos cap\u00edtulos. Funcionamiento Tenemos un usuario el cual est\u00e1 haciendo peticiones al servidor, ese servidor se encarga de recibir peticiones y responderlas, e internamente funciona bajo el esquema arriba [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1735,"menu_order":15,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-1794","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Sutil Web","author_link":"https:\/\/sutilweb.eu\/index.php\/author\/sutilweb\/"},"uagb_comment_info":0,"uagb_excerpt":"Modelo vista controlador En este cap\u00edtulo abordaremos de manera te\u00f3rica lo que es importante a tratar para poder integrar todos los conocimientos a lo largo de estos cap\u00edtulos. Funcionamiento Tenemos un usuario el cual est\u00e1 haciendo peticiones al servidor, ese servidor se encarga de recibir peticiones y responderlas, e internamente funciona bajo el esquema arriba&hellip;","_links":{"self":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/1794","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/comments?post=1794"}],"version-history":[{"count":2,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/1794\/revisions"}],"predecessor-version":[{"id":1797,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/1794\/revisions\/1797"}],"up":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/1735"}],"wp:attachment":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/media?parent=1794"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}