{"id":34,"date":"2013-01-10T22:02:19","date_gmt":"2013-01-10T22:02:19","guid":{"rendered":"http:\/\/www.ucci.edu.pe\/blog\/ingenieria_sistemas\/?p=34"},"modified":"2014-05-10T15:10:52","modified_gmt":"2014-05-10T15:10:52","slug":"arquitectura-de-software-que-es-y-como-funciona","status":"publish","type":"post","link":"https:\/\/blog.continental.edu.pe\/sistemas-informatica\/2013\/01\/10\/arquitectura-de-software-que-es-y-como-funciona\/","title":{"rendered":"Arquitectura de Software: \u00bfQu\u00e9 es, y c\u00f3mo funciona?"},"content":{"rendered":"<figure><a href=\"http:\/\/blog.continental.edu.pe\/sistemas-informatica\/wp-content\/uploads\/sites\/10\/2013\/01\/software1.png\" rel=\"attachment wp-att-64\"><img class=\"aligncenter\" src=\"http:\/\/blog.continental.edu.pe\/sistemas-informatica\/wp-content\/uploads\/sites\/10\/2013\/01\/software1.png\" alt=\"software\" \/><\/a><\/figure>\n<p style=\"text-align: justify;\">\n<p style=\"text-align: justify;\">Debe ser muy com\u00fan, escuchar en la actualidad acerca de la Arquitectura de Software y sobre el rol que cumplen los Arquitectos en la implementaci\u00f3n de soluciones, pero conocemos de forma detallada \u00bfqu\u00e9 es la Arquitectura de Software?<\/p>\n<p style=\"text-align: justify;\">En las pr\u00f3ximas l\u00edneas estoy tratando de brindar un panorama resumido, pero a la vez detallado de la Arquitectura de Software.<\/p>\n<p style=\"text-align: justify;\">Definamos primero, que el dise\u00f1o de la Arquitectura de un Software es el proceso por el cual se define una soluci\u00f3n para los requisitos t\u00e9cnicos y operacionales del mismo. Este proceso define qu\u00e9 componentes forman el software, c\u00f3mo se relacionan entre ellos, y c\u00f3mo mediante su interacci\u00f3n llevan a cabo la funcionalidad especificada, cumpliendo con los criterios previamente establecidos; como seguridad, disponibilidad, eficiencia o usabilidad.<\/p>\n<p style=\"text-align: justify;\">Durante el dise\u00f1o de la arquitectura se tratan t\u00f3picos que puedan provocar un impacto importante en el \u00e9xito o fracaso de nuestro software. Son esenciales realizar las siguientes interrogantes para cubrir este punto:<\/p>\n<ul style=\"text-align: justify;\">\n<li>\u00bfEn qu\u00e9 entorno se desplegar\u00e1 nuestro software?<\/li>\n<li>\u00bfC\u00f3mo se pondr\u00e1 en producci\u00f3n nuestro software?<\/li>\n<li>\u00bfC\u00f3mo utilizar\u00e1n los usuarios nuestro software?<\/li>\n<li>\u00bfExisten requisitos adicionales que el software debe cumplir? (Por ejemplo: seguridad, rendimiento, concurrencia, configuraci\u00f3n, disponibilidad, entre otros)<\/li>\n<li>\u00bfCu\u00e1les ser\u00edan los cambios sobre la arquitectura propuesta, que impactar\u00edan al software durante o despu\u00e9s de desplegarse?<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Para dise\u00f1ar la arquitectura de un software es de vital importancia tomar en cuenta los intereses de los distintos agentes que participan. Estos, son los usuarios del software, el propio software y los objetivos del negocio. Cada uno de ellos establece requisitos y restricciones que deben tomarse en cuenta para el dise\u00f1o de la arquitectura, los que en alg\u00fan momento podr\u00edan entrar en conflicto.<\/p>\n<p style=\"text-align: justify;\">Para los usuarios es importante que el software responda a la interacci\u00f3n de una forma fluida, mientras que para los objetivos del negocio es importante que el software cueste poco. Los usuarios pueden querer que se implemente primero una funcionalidad \u00fatil para su trabajo del d\u00eda a d\u00eda, mientras que el software puede tener prioridad en que se implemente la funcionalidad que permita definir su estructura.<\/p>\n<p style=\"text-align: justify;\">He aqu\u00ed, que el trabajo del arquitecto es delinear los escenarios y requisitos de calidad importantes para cada agente as\u00ed como los puntos clave que debe cumplir y las acciones o circunstancias que no deben ocurrir.<\/p>\n<p style=\"text-align: justify;\">El objetivo final de la arquitectura es identificar los requisitos que producen un impacto en la estructura del software y reducir los riesgos asociados con la construcci\u00f3n del mismo. La arquitectura debe soportar los cambios futuros del software, del hardware y de funcionalidad demandada por los clientes (que ocurren muy a menudo). Del mismo modo, es responsabilidad del arquitecto analizar el impacto de sus decisiones de dise\u00f1o y establecer un compromiso entre los diferentes requisitos de calidad as\u00ed como entre los compromisos necesarios para satisfacer a los usuarios, al software y los objetivos del negocio.<\/p>\n<p style=\"text-align: justify;\">Finalmente, resumamos que la Arquitectura de Software deber\u00eda poseer las siguientes capacidades:<\/p>\n<ul style=\"text-align: justify;\">\n<li>Mostrar la estructura del software, pero ocultando los detalles.<\/li>\n<li>Concebir y dise\u00f1ar todos los casos de uso.<\/li>\n<li>Satisfacer en la medida de lo posible los intereses de los agentes.<\/li>\n<li>Ocuparse de los requisitos funcionales y de calidad.<\/li>\n<li>Determinar el tipo de software a desarrollar.<\/li>\n<li>Determinar los estilos arquitecturales que se usar\u00e1n.<\/li>\n<li>Tratar las principales cuestiones transversales.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">\u00a0Espero haber cubierto inicialmente puntos espec\u00edficos, que nos permitan entender un poco m\u00e1s acerca de lo que es y significa la Arquitectura de Software en la actualidad.<\/p>\n<p style=\"text-align: justify;\"><em><strong>Miguel Almeyda Sifuentes<\/strong><\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Debe ser muy com\u00fan, escuchar en la actualidad acerca de la Arquitectura de Software y sobre el rol que cumplen los Arquitectos en la implementaci\u00f3n de soluciones, pero conocemos de forma detallada \u00bfqu\u00e9 es la Arquitectura de Software? En las pr\u00f3ximas l\u00edneas estoy tratando de brindar un panorama resumido, pero a la vez detallado de [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":64,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.continental.edu.pe\/sistemas-informatica\/wp-json\/wp\/v2\/posts\/34"}],"collection":[{"href":"https:\/\/blog.continental.edu.pe\/sistemas-informatica\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.continental.edu.pe\/sistemas-informatica\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.continental.edu.pe\/sistemas-informatica\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.continental.edu.pe\/sistemas-informatica\/wp-json\/wp\/v2\/comments?post=34"}],"version-history":[{"count":2,"href":"https:\/\/blog.continental.edu.pe\/sistemas-informatica\/wp-json\/wp\/v2\/posts\/34\/revisions"}],"predecessor-version":[{"id":78,"href":"https:\/\/blog.continental.edu.pe\/sistemas-informatica\/wp-json\/wp\/v2\/posts\/34\/revisions\/78"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.continental.edu.pe\/sistemas-informatica\/wp-json\/wp\/v2\/media\/64"}],"wp:attachment":[{"href":"https:\/\/blog.continental.edu.pe\/sistemas-informatica\/wp-json\/wp\/v2\/media?parent=34"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.continental.edu.pe\/sistemas-informatica\/wp-json\/wp\/v2\/categories?post=34"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.continental.edu.pe\/sistemas-informatica\/wp-json\/wp\/v2\/tags?post=34"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}