SlideShare una empresa de Scribd logo
1 de 8
Descargar para leer sin conexión
LA ARQUITECTURA DE SOFTWARE
La arquitectura de software representa la estructura o estructuras del
sistema que consiste en componentes de software, las propiedades externas
visibles de esos componentes y las relaciones entre ellos.
Una Breve Historia de la Arquitectura de Software
Aunque el término “arquitectura de software”, tal y como lo concebimos
ahora, aparece en 1992 con el trabajo de Perry y Wolf[1], sus antecedentes
se remontan al menos hasta finales de la década de los sesenta. En 1968,
Dijkstra habla de una estructuración correcta de los sistemas de software,
aunque no la llama arquitectura como tal[2]. Posteriormente, en 1969, P. I.
Sharp, comentando las ideas de Dijkstra, ya usa el término arquitectura de
software al mencionar que quizá luego se hable de “la escuela de
arquitectura de software de Dijkstra”, y al mismo tiempo lamentar que la
industria de ese tiempo preste muy poca atención a ésta.
Durante la década de los setentas el concepto de arquitectura deambuló por
el aire sin una semántica clara y carente de una expresión pragmática. En
esta misma década, el diseño estructurado dio pie a la independencia entre
el diseño y la implementación. Los trabajos de Parnas sobre técnicas de
modularización en decisiones de diseño y familias de programas[3], fueron,
sin duda, aportaciones esenciales y permanentes.
Las decisiones “tempranas” de diseño, argüía Parnas, probablemente
permanecerían invariantes en el desarrollo de la solución; estas ideas se
convierten luego en lo que hoy se conocen como decisiones
arquitectónicas.
Rompiendo esquemas y acaparando la atención en la década de los
ochentas, aparece el paradigma de la orientación a objetos. En esta década
aparecen dos trabajos importantes de Mary Shaw, que retoman las
abstracciones de alto nivel: “Técnicas de abstracción en lenguajes
modernos de programación”[4] y “Los sistemas de gran escala requieren de
abstracciones de alto nivel”[5].
Hacia finales de los ochenta y principios de los noventa, comienza a
gestarse de manera más clara la idea de que las aplicaciones tienen una
morfología, una estructura.
El trabajo de Perry y Wolf[1] de 1992 es el punto de partida para lo que
hoy conocemos como arquitectura de software. Por un lado, son los
primeros que proponen un modelo para la arquitectura de software; este
modelo contempla a la arquitectura formada por tres componentes:
elementos, forma y razón. Los elementos pueden ser de procesamiento,
datos o conexión; la forma se define de acuerdo a las propiedades de, y a
las relaciones entre los elementos; la razón se contempla en términos de
restricciones del sistema, que se derivan de los requerimientos del sistema.
Perry y Wolf profetizaron que: “la década de los noventas, creemos, será la
década de la arquitectura de software”, lo cual se convirtió en realidad. A lo
largo de esa década, salieron a la luz varios trabajos con propuestas
relevantes, entre ellas, la programación basada en componentes[6], el
surgimiento de los patrones y estilos[7], el modelo de 4+1 vistas[8], y
lenguajes de descripción de arquitecturas (ADLs)[9] entre otras.
En la segunda mitad de los noventa aparecen los primeros libros de texto
dedicados a la arquitectura de software. El año 2000 cierra esta década con
dos trabajos clave: el modelo REST propuesto en la tesis de Roy Fielding
que pone la atención en Internet y los modelos orientados a servicios[10]; y
el trabajo de la IEEE, que genera una versión definitiva de la
recomendación IEEE std 1471-2000[11].
También en este año se abren nuevas perspectivas para la arquitectura de
software, aparecen las estrategias orientadas a líneas de productos y se
procura insertar la arquitectura de software dentro del ciclo de vida,
obligando a redefinir las metodologías referentes a él en términos de
arquitectura[12].
Actualmente hay una cierta efervescencia alrededor de desarrollos
centrados en arquitectura, métodos de análisis y diseño de arquitecturas
(dentro del ciclo de vida), análisis de arquitecturas de software basados en
escenarios, modelos de evaluación de arquitecturas de software y modelos
orientados por la arquitectura entre algunos otros tópicos.
Fundamentos de la Arquitectura de Software
Publicado en noviembre 7, 2012 por Editor
No podemos hablar de arquitectura del software sin relacionarnos con
la ingeniería de sistemas, generalmente llamada “Ingeniería de Software”,
ya que el diseño del software se encuentra en el núcleo técnico de la
Ingeniería de sistemas cuyo objetivo es producir software de alta calidad.
En la ingeniería de sistemas se ve al diseño como el “plano del software” y
se destaca que las áreas en las que se aplica son: los datos, la arquitectura,
las interfaces y los componentes.
Mientras que el diseño de datos transforma el dominio de información en
estructuras de datos, el diseño arquitectónico define la relación entre
elementos estructurales del software.
Se le denomina “diseño de interfaz” a la manera en que el software se
comunicará dentro de sí mismo, con otros sistemas y con las personas.
El diseño de los componentes transforma elementos estructurales en
descripciones procedimentales.
El proceso de diseño es un proceso interativo que está basado en principios
fundamentales para lograr su eficacia. Inicialmente se presenta en un nivel
de abstracción alto y cada vez se refina más. La calidad de su evolución se
evalúa mediante Revisiones Técnicas Formales (RTF).
Dentro de las directrices para la calidad del diseño se menciona que éste
deberá presentar unaestructura arquitectónica que sea creada con patrones
de diseño reconocibles; que esté formada por componentes de calidad y
funcionalmente independientes; que contenga interfaces que faciliten las
conexiones y que se pueda implementar evolutivamente.
Otra de las directrices indica que el diseño debe ser modular; además de
que debe contener diferentes representaciones y derivarse del análisis de
forma controlada.
Profundizando un poco en el proceso de diseño, explicaremos a qué se
refieren los principios de: abstracción, refinación, ocultamiento de
información y modulación que son básicos para lograr un buen diseño.
Abstracción: Es una descripción simplificada o especificación que enfatiza
algunos de los detalles o propiedades del sistema, mientras suprime otros.
Se refiere a los niveles de resolución de problema, los cuales pueden ser
altos si se especifica en lenguaje del entorno del problema; o bajo nivel de
abstracción (o inferior) si tiene una orientación procedimental. La
abstracción puede ser de datos, procedimientos y control.
La abstracción es procedimental cuando se trata de una secuencia
nombrada de instrucciones que tiene una función específica y limitada.
La abstracción es de datos cuando se hace referencia a una colección
nombrada de datos que describe un objeto de datos.
La abstracción es de control si explicita el mecanismo de control de
programa sin especificar los datos internos.
Refinamiento: Es la base del diseño. Es un proceso de elaboración que
comienza con un nivel de abstracción alto y va descendiendo
sucesivamente de nivel de abstracción hasta llegar a un nivel bajo. Durante
el proceso de refinamiento se van obteniendo detalles tanto de
procedimientos como de datos obteniendo mejores soluciones más fáciles
de implementar. El refinamiento tiene como objetivo encontrar detalles de
bajo nivel que podrían ser difíciles de plasmar.
El refinamiento hace que el diseñador trabaje sobre la sentencia original
proporcionando cada vez más detalles a medida que van teniendo lugar
sucesivamente todos y cada uno de los refinamientos.
Modularidad: Un método de diseño software se dice que es modular si
ayuda a los diseñadores a construir sistemas software formados por
elementos autónomos y organizados en arquitecturas sencillas. Se trata de
dividir el software en componentes nombrados y abordados por separado
llamados “módulos”, que se integran para resolver los requisitos del
problema.
La modularidad es el atributo de software que permite que un programa sea
manejable intelectualmente, por lo que se deduce que los módulos son los
componentes básicos de todo sistema y tienden a satisfacer a uno o más
requerimientos.
Un software monolítico (programa grande formado por un solo módulo) no
puede ser entendido fácilmente por el lector.
Aunque la modularidad sea benéfica para un sistema, tampoco debe
exagerarse en el número de módulos, estas guías ayudarán a hacer más
efectiva la modularidad:
– diseñar pocas interfaces (en un sistema formado por N módulos,
– el número de conexiones entre ellos debe acercarse al número mínimo
que al máximo);
– procurar interfaces estrechas (si dos módulos se comunican deben de
intercambiar el mínimo de información posible);
– lograr interfaces explícitas (la comunicación entre dos módulos debe
poder deducirse a partir del texto de ambos);
– cumplir el principio de ocultamiento de información: Los módulos de un
sistema deben diseñarse de modo que la información contenida en ellos sea
inaccesible a todos aquellos módulos que no necesiten tal información.
Uno de los conceptos fundamentales del diseño lo marca la arquitectura del
software, que -como ya lo habíamos mencionado- hace referencia a la
estructura global del software y a las formas en que ésta proporciona la
integridad conceptual de un sistema, dicha estructura es “jerárquica” en
forma de módulos.
La arquitectura de software debe ayudar a definir como interactúan los
componentes de software entre sí y las estructuras de los datos.
La jerarquía de control representa dos características, visibilidad y
conectividad.
La visibilidad es el conjunto de componentes de un programa que pueden
ser invocados o utilizados sus datos por un componente aun de manera
directa. La conectividad indica el conjunto de componentes que son
accedidos de manera directa por otros componentes.
La partición estructural de una arquitectura de software puede ser
horizontal (de acuerdo a las áreas de diseño) datos, procesos y control o
bien vertical definiendo una jerarquía de módulos (los módulos se
programan de tal forma que los datos no estén accesibles por otros
módulos).
Se dice que un diseño modular es efectivo cuando éste ayuda a reducir la
complejidad, facilita los cambios y ayuda a producir soluciones más
sencillas.
Los tres tipos de módulos existentes son: secuencial, incremental y
paralelo.
Por todo lo anteriormente expuesto, se llega a la conclusión de que la
“independencia funcional” del diseño se adquiere cuando se desarrollan los
conceptos de modularidad, abstracción y ocultamiento de información.
La independencia funcional se mide con base en dos criterios: cohesión y
acoplamiento.
Cohesión: es una extensión del principio de ocultación de información, es
deseable tener una alta cohesión. Esta se obtiene cuando el contenido de un
módulo está diseñado para realizar una tarea sencilla sin depender de otros
módulos; o bien que un módulo lleve a cabo sólo una función de
procesamiento.
El acoplamiento se refiere a la fuerza de la relación entre módulos de un
sistema. En general, los buenos diseñadores buscan desarrollar la estructura
de un sistema de tal forma que un módulo tenga poca dependencia de
cualquier otro módulo. Es necesario tener un bajo acoplamiento.
El acoplamiento se mide en las relaciones que guardan los módulos con sus
interfaces de entrada y salida. Hay tres tipos de acoplamiento: común, de
datos y control
UN FRAMEWORK
Es un entorno o ambiente de trabajo para desarrollo; dependiendo del
lenguaje normalmente integra componentes que facilitan el desarrollo de
aplicaciones como el soporte de programa, bibliotecas, plantillas y más.
MODELOS O VISTAS
Toda arquitectura de software debe describir diversos aspectos del
software. Generalmente, cada uno de estos aspectos se describe de una
manera más comprensible si se utilizan distintos modelos o vistas. Es
importante destacar que cada uno de ellos constituye una descripción
parcial de una misma arquitectura y es deseable que exista cierto
solapamiento entre ellos. Esto es así porque todas las vistas deben ser
coherentes entre sí, evidente dado que describen la misma cosa.
Cada paradigma de desarrollo exige diferente número y tipo de vistas o
modelos para describir una arquitectura. No obstante, existen al menos tres
vistas absolutamente fundamentales en cualquier arquitectura:
 La visión estática: describe qué componentes tiene la arquitectura.
 La visión funcional: describe qué hace cada componente.
 La visión dinámica: describe cómo se comportan los componentes a
lo largo del tiempo y cómo interactúan entre sí.
Las vistas o modelos de una arquitectura de software pueden expresarse
mediante uno o varios lenguajes. El más obvio es el lenguaje natural, pero
existen otros lenguajes tales como los diagramas de estado, los diagramas
de flujo de datos, etc. Estos lenguajes son apropiados únicamente para un
modelo o vista. Afortunadamente existe cierto consenso en
adoptar UML(Unified Modeling Language, lenguaje unificado de
modelado) como lenguaje único para todos los modelos o vistas. Sin
embargo, un lenguaje generalista corre el peligro de no ser capaz de
describir determinadas restricciones de un sistema de información (o
expresarlas de manera incomprensible).
METODOLOGIA
Como ustedes saben, Scrum es una metodología ágil para la gestión del
desarrollo de software, que está basada en un proceso iterativo e
incremental. Debido a la importancia de la arquitectura de software, es
primordial definir claramente su papel en scrum. Es por esto que en el
presente artículo se describe una propuesta del papel de la arquitectura de
software en el ciclo de desarrollo de Scrum y de las responsabilidades del
arquitecto de software en esta metodología.
La competitividad del mercado de desarrollo de software y la necesidad de
los clientes de reducir el “time to market” obligan a las organizaciones de
desarrollo de software a ser agresivas en sus calendarios de entrega. Esto ha
hecho que hayan surgido metodologías de desarrollo de software ágiles
tales como Scrum: una metodología para la gestión y desarrollo de software
basada en un proceso iterativo e incremental. Su estructura está basada en
sprints los cuales son iteraciones de 1 a 4 semanas. Scrum se usa en
proyectos de entorno complejos, donde se desea obtener resultados rápidos
y la productividad es lo más importante [1].
En los proyectos basados en Scrum se consideran tres roles:
 Dueño del producto (Product Owner): Es quien determina las
prioridades de los entregables.
 Maestro de Scrum (Scrum Master): Administra y facilita la ejecución
del proceso.
 Equipo de Trabajo (Stakeholders): Trabajan en conjunto para
entregar resultados en cada sprint.

Más contenido relacionado

La actualidad más candente

12 Clase Analisis Orientado A Objetos
12 Clase Analisis Orientado A Objetos12 Clase Analisis Orientado A Objetos
12 Clase Analisis Orientado A ObjetosJulio Pari
 
Presentacion herramientas CASE
Presentacion herramientas CASEPresentacion herramientas CASE
Presentacion herramientas CASEdavidsande
 
Fundamentos arquitectura del software
Fundamentos arquitectura del softwareFundamentos arquitectura del software
Fundamentos arquitectura del softwarevenezuela2015
 
Modelado de requisitos
Modelado de requisitosModelado de requisitos
Modelado de requisitosKleo Jorgee
 
Tipos de usuarios de base de datos diapositivas
Tipos de usuarios de base de datos diapositivasTipos de usuarios de base de datos diapositivas
Tipos de usuarios de base de datos diapositivasgrupo niche ortega
 
Arquitectura software.taxonomias.comportamiento.001
Arquitectura software.taxonomias.comportamiento.001Arquitectura software.taxonomias.comportamiento.001
Arquitectura software.taxonomias.comportamiento.001Jose Emilio Labra Gayo
 
Fase 2 trabajo colaborativobase de datos basicos
Fase 2 trabajo colaborativobase de datos  basicosFase 2 trabajo colaborativobase de datos  basicos
Fase 2 trabajo colaborativobase de datos basicosLuIsAVera15
 
Desarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a ObjetosDesarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a ObjetosDat@center S.A
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicaslandeta_p
 
Diccionario de datos
Diccionario de datosDiccionario de datos
Diccionario de datosmiranda271999
 
Planificacion De Proyectos De Software
Planificacion De Proyectos De SoftwarePlanificacion De Proyectos De Software
Planificacion De Proyectos De SoftwareIván Sanchez Vera
 
Metodologia orientada a objetos
Metodologia orientada a objetosMetodologia orientada a objetos
Metodologia orientada a objetosMariana Rodríguez
 
Estilos de Software
Estilos de SoftwareEstilos de Software
Estilos de Softwarebjjuarez
 
Modelado Orientado a Objetos
Modelado Orientado a ObjetosModelado Orientado a Objetos
Modelado Orientado a ObjetosRafael Miranda
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clasesjmachado614
 

La actualidad más candente (20)

12 Clase Analisis Orientado A Objetos
12 Clase Analisis Orientado A Objetos12 Clase Analisis Orientado A Objetos
12 Clase Analisis Orientado A Objetos
 
Presentacion herramientas CASE
Presentacion herramientas CASEPresentacion herramientas CASE
Presentacion herramientas CASE
 
Arquitectura pizarra
Arquitectura pizarraArquitectura pizarra
Arquitectura pizarra
 
Fundamentos arquitectura del software
Fundamentos arquitectura del softwareFundamentos arquitectura del software
Fundamentos arquitectura del software
 
Conceptos basicos de analisis y diseño
Conceptos basicos de analisis y diseñoConceptos basicos de analisis y diseño
Conceptos basicos de analisis y diseño
 
Modelado de requisitos
Modelado de requisitosModelado de requisitos
Modelado de requisitos
 
Tipos de usuarios de base de datos diapositivas
Tipos de usuarios de base de datos diapositivasTipos de usuarios de base de datos diapositivas
Tipos de usuarios de base de datos diapositivas
 
Arquitectura software.taxonomias.comportamiento.001
Arquitectura software.taxonomias.comportamiento.001Arquitectura software.taxonomias.comportamiento.001
Arquitectura software.taxonomias.comportamiento.001
 
Fase 2 trabajo colaborativobase de datos basicos
Fase 2 trabajo colaborativobase de datos  basicosFase 2 trabajo colaborativobase de datos  basicos
Fase 2 trabajo colaborativobase de datos basicos
 
Metodologia orientada a objeto
Metodologia orientada a objetoMetodologia orientada a objeto
Metodologia orientada a objeto
 
Desarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a ObjetosDesarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a Objetos
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicas
 
Metodologia Estructurada
Metodologia Estructurada Metodologia Estructurada
Metodologia Estructurada
 
Diccionario de datos
Diccionario de datosDiccionario de datos
Diccionario de datos
 
Planificacion De Proyectos De Software
Planificacion De Proyectos De SoftwarePlanificacion De Proyectos De Software
Planificacion De Proyectos De Software
 
Diseño de interfaz de usuario
Diseño de interfaz de usuarioDiseño de interfaz de usuario
Diseño de interfaz de usuario
 
Metodologia orientada a objetos
Metodologia orientada a objetosMetodologia orientada a objetos
Metodologia orientada a objetos
 
Estilos de Software
Estilos de SoftwareEstilos de Software
Estilos de Software
 
Modelado Orientado a Objetos
Modelado Orientado a ObjetosModelado Orientado a Objetos
Modelado Orientado a Objetos
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 

Destacado

100G - What Comes Next
100G - What Comes Next100G - What Comes Next
100G - What Comes NextADVA
 
Playstatin
PlaystatinPlaystatin
Playstatinffabiana
 
Enlace por puente de hidrógeno
Enlace por puente de hidrógenoEnlace por puente de hidrógeno
Enlace por puente de hidrógenoDannys Hidalgo
 
Self Image made by Sathish Prince
Self Image made by Sathish PrinceSelf Image made by Sathish Prince
Self Image made by Sathish PrinceSathish Latchireddi
 
Breathing Freely By Spirare Foundation
Breathing Freely By Spirare FoundationBreathing Freely By Spirare Foundation
Breathing Freely By Spirare Foundationguest5d0da5
 
Ciencias naturales-tomo-21
Ciencias naturales-tomo-21Ciencias naturales-tomo-21
Ciencias naturales-tomo-21Dannys Hidalgo
 
Лексика до теми "Характер людини"
Лексика до теми "Характер людини"Лексика до теми "Характер людини"
Лексика до теми "Характер людини"aliusia77
 
Dinámica atmosférica
Dinámica atmosféricaDinámica atmosférica
Dinámica atmosféricaDannys Hidalgo
 
Mariana ramos-meoño
Mariana ramos-meoñoMariana ramos-meoño
Mariana ramos-meoñoMariana258
 
Урок 20 для 7 класу - Таблиці, електронні таблиці
Урок 20 для 7 класу - Таблиці, електронні таблиціУрок 20 для 7 класу - Таблиці, електронні таблиці
Урок 20 для 7 класу - Таблиці, електронні таблиціVsimPPT
 
Урок 22 для 4 класу - Алгоритми з циклами
Урок 22 для 4 класу - Алгоритми з цикламиУрок 22 для 4 класу - Алгоритми з циклами
Урок 22 для 4 класу - Алгоритми з цикламиVsimPPT
 

Destacado (14)

Reunião COMJOVEM - Palestra: "Gestão de riscos como ferramenta estratégica pa...
Reunião COMJOVEM - Palestra: "Gestão de riscos como ferramenta estratégica pa...Reunião COMJOVEM - Palestra: "Gestão de riscos como ferramenta estratégica pa...
Reunião COMJOVEM - Palestra: "Gestão de riscos como ferramenta estratégica pa...
 
100G - What Comes Next
100G - What Comes Next100G - What Comes Next
100G - What Comes Next
 
Playstatin
PlaystatinPlaystatin
Playstatin
 
Enlace por puente de hidrógeno
Enlace por puente de hidrógenoEnlace por puente de hidrógeno
Enlace por puente de hidrógeno
 
Self Image made by Sathish Prince
Self Image made by Sathish PrinceSelf Image made by Sathish Prince
Self Image made by Sathish Prince
 
Breathing Freely By Spirare Foundation
Breathing Freely By Spirare FoundationBreathing Freely By Spirare Foundation
Breathing Freely By Spirare Foundation
 
Ciencias naturales-tomo-21
Ciencias naturales-tomo-21Ciencias naturales-tomo-21
Ciencias naturales-tomo-21
 
Лексика до теми "Характер людини"
Лексика до теми "Характер людини"Лексика до теми "Характер людини"
Лексика до теми "Характер людини"
 
Dinámica atmosférica
Dinámica atmosféricaDinámica atmosférica
Dinámica atmosférica
 
Makalah efsi
Makalah efsiMakalah efsi
Makalah efsi
 
Mariana ramos-meoño
Mariana ramos-meoñoMariana ramos-meoño
Mariana ramos-meoño
 
Raman spectroscopy
Raman spectroscopyRaman spectroscopy
Raman spectroscopy
 
Урок 20 для 7 класу - Таблиці, електронні таблиці
Урок 20 для 7 класу - Таблиці, електронні таблиціУрок 20 для 7 класу - Таблиці, електронні таблиці
Урок 20 для 7 класу - Таблиці, електронні таблиці
 
Урок 22 для 4 класу - Алгоритми з циклами
Урок 22 для 4 класу - Алгоритми з цикламиУрок 22 для 4 класу - Алгоритми з циклами
Урок 22 для 4 класу - Алгоритми з циклами
 

Similar a La evolución de la arquitectura de software

Diseño de-la-arquitectura-de-software
Diseño de-la-arquitectura-de-softwareDiseño de-la-arquitectura-de-software
Diseño de-la-arquitectura-de-softwareAndresRealp1
 
DiseñO Del Software E IngenieríA Del Software
DiseñO Del Software E IngenieríA Del SoftwareDiseñO Del Software E IngenieríA Del Software
DiseñO Del Software E IngenieríA Del Softwarelcastillo110
 
Arquitectura de software.docx
Arquitectura de software.docxArquitectura de software.docx
Arquitectura de software.docxKeiberOrtiz1
 
Ra semana 13 2
Ra semana 13 2Ra semana 13 2
Ra semana 13 2victdiazm
 
Fundamentos y metodos analisis de requerimiento
Fundamentos y metodos analisis de requerimientoFundamentos y metodos analisis de requerimiento
Fundamentos y metodos analisis de requerimientoMonica Naranjo
 
Diseno Software
Diseno SoftwareDiseno Software
Diseno Softwarealfmuny
 
Fundamentos del diseño de software
Fundamentos del diseño de software Fundamentos del diseño de software
Fundamentos del diseño de software AlessandreMndez
 
Tema 4: Diseño arquitectónico de software
Tema 4: Diseño arquitectónico de softwareTema 4: Diseño arquitectónico de software
Tema 4: Diseño arquitectónico de softwareMagemyl Egana
 
Fundamentos Basicos para El Diseño de Software
Fundamentos Basicos para El Diseño de SoftwareFundamentos Basicos para El Diseño de Software
Fundamentos Basicos para El Diseño de SoftwareRicardoAlvarez235
 
Unidad 2.1 DiseñO De Sistemas
Unidad 2.1 DiseñO De SistemasUnidad 2.1 DiseñO De Sistemas
Unidad 2.1 DiseñO De SistemasSergio Sanchez
 
Metodología de Diseño Estructurado.pptx
Metodología de Diseño Estructurado.pptx Metodología de Diseño Estructurado.pptx
Metodología de Diseño Estructurado.pptx AlvareL
 

Similar a La evolución de la arquitectura de software (20)

Diseño de-la-arquitectura-de-software
Diseño de-la-arquitectura-de-softwareDiseño de-la-arquitectura-de-software
Diseño de-la-arquitectura-de-software
 
Software exposicion
Software exposicionSoftware exposicion
Software exposicion
 
Fundamentos
FundamentosFundamentos
Fundamentos
 
Patrones
PatronesPatrones
Patrones
 
DiseñO Del Software E IngenieríA Del Software
DiseñO Del Software E IngenieríA Del SoftwareDiseñO Del Software E IngenieríA Del Software
DiseñO Del Software E IngenieríA Del Software
 
Arquitectura de software.docx
Arquitectura de software.docxArquitectura de software.docx
Arquitectura de software.docx
 
Ra semana 13 2
Ra semana 13 2Ra semana 13 2
Ra semana 13 2
 
Fundamentos y metodos analisis de requerimiento
Fundamentos y metodos analisis de requerimientoFundamentos y metodos analisis de requerimiento
Fundamentos y metodos analisis de requerimiento
 
Diseno Software
Diseno SoftwareDiseno Software
Diseno Software
 
MVC.ppt
MVC.pptMVC.ppt
MVC.ppt
 
Guia Yahveh
Guia YahvehGuia Yahveh
Guia Yahveh
 
Fundamentos del diseño de software
Fundamentos del diseño de software Fundamentos del diseño de software
Fundamentos del diseño de software
 
Juan velasquez
Juan velasquezJuan velasquez
Juan velasquez
 
Tema 4: Diseño arquitectónico de software
Tema 4: Diseño arquitectónico de softwareTema 4: Diseño arquitectónico de software
Tema 4: Diseño arquitectónico de software
 
Arquitectura. de Software. en ambientes distribuidos.
Arquitectura. de Software. en ambientes distribuidos.Arquitectura. de Software. en ambientes distribuidos.
Arquitectura. de Software. en ambientes distribuidos.
 
Fundamentos Basicos para El Diseño de Software
Fundamentos Basicos para El Diseño de SoftwareFundamentos Basicos para El Diseño de Software
Fundamentos Basicos para El Diseño de Software
 
9.diseño de la arquitectura
9.diseño de la arquitectura9.diseño de la arquitectura
9.diseño de la arquitectura
 
Unidad 2.1 DiseñO De Sistemas
Unidad 2.1 DiseñO De SistemasUnidad 2.1 DiseñO De Sistemas
Unidad 2.1 DiseñO De Sistemas
 
Metodología de Diseño Estructurado.pptx
Metodología de Diseño Estructurado.pptx Metodología de Diseño Estructurado.pptx
Metodología de Diseño Estructurado.pptx
 
Deber analisis
Deber analisisDeber analisis
Deber analisis
 

Más de Dannys Hidalgo

Más de Dannys Hidalgo (12)

Solvatacion
SolvatacionSolvatacion
Solvatacion
 
Quimica
QuimicaQuimica
Quimica
 
Quimica organica, naturaleza y sociedad
Quimica organica, naturaleza y sociedadQuimica organica, naturaleza y sociedad
Quimica organica, naturaleza y sociedad
 
Larson matematicas 2_capitulo_muestra
Larson matematicas 2_capitulo_muestraLarson matematicas 2_capitulo_muestra
Larson matematicas 2_capitulo_muestra
 
Ingenieria en informatica unellez
Ingenieria en informatica unellezIngenieria en informatica unellez
Ingenieria en informatica unellez
 
Futbol sala
Futbol salaFutbol sala
Futbol sala
 
Estadistica
EstadisticaEstadistica
Estadistica
 
Edades de la tierra
Edades de la tierraEdades de la tierra
Edades de la tierra
 
Edad de la tierra
Edad de la tierraEdad de la tierra
Edad de la tierra
 
Ecologia
EcologiaEcologia
Ecologia
 
Cstierra
CstierraCstierra
Cstierra
 
Codigo de etica
Codigo de eticaCodigo de etica
Codigo de etica
 

Último

Cadenas de Markov investigación de operaciones
Cadenas de Markov investigación de operacionesCadenas de Markov investigación de operaciones
Cadenas de Markov investigación de operacionesal21510263
 
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfCAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfReneBellido1
 
COMPONENTES DE LA VIA FERREA UAJMS - BOLIVIA
COMPONENTES DE LA VIA FERREA UAJMS - BOLIVIACOMPONENTES DE LA VIA FERREA UAJMS - BOLIVIA
COMPONENTES DE LA VIA FERREA UAJMS - BOLIVIARafaelPaco2
 
Parámetros de Perforación y Voladura. para Plataformas
Parámetros de  Perforación y Voladura. para PlataformasParámetros de  Perforación y Voladura. para Plataformas
Parámetros de Perforación y Voladura. para PlataformasSegundo Silva Maguiña
 
Uso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendiosUso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendioseduardochavezg1
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdfAnthonyTiclia
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.pptVitobailon
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
3039_ftg_01Entregable 003_Matematica.pptx
3039_ftg_01Entregable 003_Matematica.pptx3039_ftg_01Entregable 003_Matematica.pptx
3039_ftg_01Entregable 003_Matematica.pptxJhordanGonzalo
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfIsbelRodrguez
 
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdfPPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdfZamiertCruzSuyo
 
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfErikNivor
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEANDECE
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
Fisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfFisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfJessLeonelVargasJimn
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCANDECE
 
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfCENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfpaola110264
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaSHERELYNSAMANTHAPALO1
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones025ca20
 

Último (20)

Cadenas de Markov investigación de operaciones
Cadenas de Markov investigación de operacionesCadenas de Markov investigación de operaciones
Cadenas de Markov investigación de operaciones
 
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfCAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
 
COMPONENTES DE LA VIA FERREA UAJMS - BOLIVIA
COMPONENTES DE LA VIA FERREA UAJMS - BOLIVIACOMPONENTES DE LA VIA FERREA UAJMS - BOLIVIA
COMPONENTES DE LA VIA FERREA UAJMS - BOLIVIA
 
Parámetros de Perforación y Voladura. para Plataformas
Parámetros de  Perforación y Voladura. para PlataformasParámetros de  Perforación y Voladura. para Plataformas
Parámetros de Perforación y Voladura. para Plataformas
 
Uso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendiosUso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendios
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.ppt
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
3039_ftg_01Entregable 003_Matematica.pptx
3039_ftg_01Entregable 003_Matematica.pptx3039_ftg_01Entregable 003_Matematica.pptx
3039_ftg_01Entregable 003_Matematica.pptx
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdf
 
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdfPPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
 
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSE
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
Fisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfFisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdf
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRC
 
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfCENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresa
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones
 

La evolución de la arquitectura de software

  • 1. LA ARQUITECTURA DE SOFTWARE La arquitectura de software representa la estructura o estructuras del sistema que consiste en componentes de software, las propiedades externas visibles de esos componentes y las relaciones entre ellos. Una Breve Historia de la Arquitectura de Software Aunque el término “arquitectura de software”, tal y como lo concebimos ahora, aparece en 1992 con el trabajo de Perry y Wolf[1], sus antecedentes se remontan al menos hasta finales de la década de los sesenta. En 1968, Dijkstra habla de una estructuración correcta de los sistemas de software, aunque no la llama arquitectura como tal[2]. Posteriormente, en 1969, P. I. Sharp, comentando las ideas de Dijkstra, ya usa el término arquitectura de software al mencionar que quizá luego se hable de “la escuela de arquitectura de software de Dijkstra”, y al mismo tiempo lamentar que la industria de ese tiempo preste muy poca atención a ésta. Durante la década de los setentas el concepto de arquitectura deambuló por el aire sin una semántica clara y carente de una expresión pragmática. En esta misma década, el diseño estructurado dio pie a la independencia entre el diseño y la implementación. Los trabajos de Parnas sobre técnicas de modularización en decisiones de diseño y familias de programas[3], fueron, sin duda, aportaciones esenciales y permanentes. Las decisiones “tempranas” de diseño, argüía Parnas, probablemente permanecerían invariantes en el desarrollo de la solución; estas ideas se convierten luego en lo que hoy se conocen como decisiones arquitectónicas. Rompiendo esquemas y acaparando la atención en la década de los ochentas, aparece el paradigma de la orientación a objetos. En esta década aparecen dos trabajos importantes de Mary Shaw, que retoman las abstracciones de alto nivel: “Técnicas de abstracción en lenguajes modernos de programación”[4] y “Los sistemas de gran escala requieren de abstracciones de alto nivel”[5]. Hacia finales de los ochenta y principios de los noventa, comienza a gestarse de manera más clara la idea de que las aplicaciones tienen una morfología, una estructura.
  • 2. El trabajo de Perry y Wolf[1] de 1992 es el punto de partida para lo que hoy conocemos como arquitectura de software. Por un lado, son los primeros que proponen un modelo para la arquitectura de software; este modelo contempla a la arquitectura formada por tres componentes: elementos, forma y razón. Los elementos pueden ser de procesamiento, datos o conexión; la forma se define de acuerdo a las propiedades de, y a las relaciones entre los elementos; la razón se contempla en términos de restricciones del sistema, que se derivan de los requerimientos del sistema. Perry y Wolf profetizaron que: “la década de los noventas, creemos, será la década de la arquitectura de software”, lo cual se convirtió en realidad. A lo largo de esa década, salieron a la luz varios trabajos con propuestas relevantes, entre ellas, la programación basada en componentes[6], el surgimiento de los patrones y estilos[7], el modelo de 4+1 vistas[8], y lenguajes de descripción de arquitecturas (ADLs)[9] entre otras. En la segunda mitad de los noventa aparecen los primeros libros de texto dedicados a la arquitectura de software. El año 2000 cierra esta década con dos trabajos clave: el modelo REST propuesto en la tesis de Roy Fielding que pone la atención en Internet y los modelos orientados a servicios[10]; y el trabajo de la IEEE, que genera una versión definitiva de la recomendación IEEE std 1471-2000[11]. También en este año se abren nuevas perspectivas para la arquitectura de software, aparecen las estrategias orientadas a líneas de productos y se procura insertar la arquitectura de software dentro del ciclo de vida, obligando a redefinir las metodologías referentes a él en términos de arquitectura[12]. Actualmente hay una cierta efervescencia alrededor de desarrollos centrados en arquitectura, métodos de análisis y diseño de arquitecturas (dentro del ciclo de vida), análisis de arquitecturas de software basados en escenarios, modelos de evaluación de arquitecturas de software y modelos orientados por la arquitectura entre algunos otros tópicos.
  • 3. Fundamentos de la Arquitectura de Software Publicado en noviembre 7, 2012 por Editor No podemos hablar de arquitectura del software sin relacionarnos con la ingeniería de sistemas, generalmente llamada “Ingeniería de Software”, ya que el diseño del software se encuentra en el núcleo técnico de la Ingeniería de sistemas cuyo objetivo es producir software de alta calidad. En la ingeniería de sistemas se ve al diseño como el “plano del software” y se destaca que las áreas en las que se aplica son: los datos, la arquitectura, las interfaces y los componentes. Mientras que el diseño de datos transforma el dominio de información en estructuras de datos, el diseño arquitectónico define la relación entre elementos estructurales del software. Se le denomina “diseño de interfaz” a la manera en que el software se comunicará dentro de sí mismo, con otros sistemas y con las personas. El diseño de los componentes transforma elementos estructurales en descripciones procedimentales. El proceso de diseño es un proceso interativo que está basado en principios fundamentales para lograr su eficacia. Inicialmente se presenta en un nivel de abstracción alto y cada vez se refina más. La calidad de su evolución se evalúa mediante Revisiones Técnicas Formales (RTF). Dentro de las directrices para la calidad del diseño se menciona que éste deberá presentar unaestructura arquitectónica que sea creada con patrones de diseño reconocibles; que esté formada por componentes de calidad y funcionalmente independientes; que contenga interfaces que faciliten las conexiones y que se pueda implementar evolutivamente. Otra de las directrices indica que el diseño debe ser modular; además de que debe contener diferentes representaciones y derivarse del análisis de forma controlada. Profundizando un poco en el proceso de diseño, explicaremos a qué se refieren los principios de: abstracción, refinación, ocultamiento de información y modulación que son básicos para lograr un buen diseño.
  • 4. Abstracción: Es una descripción simplificada o especificación que enfatiza algunos de los detalles o propiedades del sistema, mientras suprime otros. Se refiere a los niveles de resolución de problema, los cuales pueden ser altos si se especifica en lenguaje del entorno del problema; o bajo nivel de abstracción (o inferior) si tiene una orientación procedimental. La abstracción puede ser de datos, procedimientos y control. La abstracción es procedimental cuando se trata de una secuencia nombrada de instrucciones que tiene una función específica y limitada. La abstracción es de datos cuando se hace referencia a una colección nombrada de datos que describe un objeto de datos. La abstracción es de control si explicita el mecanismo de control de programa sin especificar los datos internos. Refinamiento: Es la base del diseño. Es un proceso de elaboración que comienza con un nivel de abstracción alto y va descendiendo sucesivamente de nivel de abstracción hasta llegar a un nivel bajo. Durante el proceso de refinamiento se van obteniendo detalles tanto de procedimientos como de datos obteniendo mejores soluciones más fáciles de implementar. El refinamiento tiene como objetivo encontrar detalles de bajo nivel que podrían ser difíciles de plasmar. El refinamiento hace que el diseñador trabaje sobre la sentencia original proporcionando cada vez más detalles a medida que van teniendo lugar sucesivamente todos y cada uno de los refinamientos. Modularidad: Un método de diseño software se dice que es modular si ayuda a los diseñadores a construir sistemas software formados por elementos autónomos y organizados en arquitecturas sencillas. Se trata de dividir el software en componentes nombrados y abordados por separado llamados “módulos”, que se integran para resolver los requisitos del problema. La modularidad es el atributo de software que permite que un programa sea manejable intelectualmente, por lo que se deduce que los módulos son los componentes básicos de todo sistema y tienden a satisfacer a uno o más requerimientos.
  • 5. Un software monolítico (programa grande formado por un solo módulo) no puede ser entendido fácilmente por el lector. Aunque la modularidad sea benéfica para un sistema, tampoco debe exagerarse en el número de módulos, estas guías ayudarán a hacer más efectiva la modularidad: – diseñar pocas interfaces (en un sistema formado por N módulos, – el número de conexiones entre ellos debe acercarse al número mínimo que al máximo); – procurar interfaces estrechas (si dos módulos se comunican deben de intercambiar el mínimo de información posible); – lograr interfaces explícitas (la comunicación entre dos módulos debe poder deducirse a partir del texto de ambos); – cumplir el principio de ocultamiento de información: Los módulos de un sistema deben diseñarse de modo que la información contenida en ellos sea inaccesible a todos aquellos módulos que no necesiten tal información. Uno de los conceptos fundamentales del diseño lo marca la arquitectura del software, que -como ya lo habíamos mencionado- hace referencia a la estructura global del software y a las formas en que ésta proporciona la integridad conceptual de un sistema, dicha estructura es “jerárquica” en forma de módulos. La arquitectura de software debe ayudar a definir como interactúan los componentes de software entre sí y las estructuras de los datos. La jerarquía de control representa dos características, visibilidad y conectividad. La visibilidad es el conjunto de componentes de un programa que pueden ser invocados o utilizados sus datos por un componente aun de manera directa. La conectividad indica el conjunto de componentes que son accedidos de manera directa por otros componentes. La partición estructural de una arquitectura de software puede ser horizontal (de acuerdo a las áreas de diseño) datos, procesos y control o bien vertical definiendo una jerarquía de módulos (los módulos se programan de tal forma que los datos no estén accesibles por otros módulos).
  • 6. Se dice que un diseño modular es efectivo cuando éste ayuda a reducir la complejidad, facilita los cambios y ayuda a producir soluciones más sencillas. Los tres tipos de módulos existentes son: secuencial, incremental y paralelo. Por todo lo anteriormente expuesto, se llega a la conclusión de que la “independencia funcional” del diseño se adquiere cuando se desarrollan los conceptos de modularidad, abstracción y ocultamiento de información. La independencia funcional se mide con base en dos criterios: cohesión y acoplamiento. Cohesión: es una extensión del principio de ocultación de información, es deseable tener una alta cohesión. Esta se obtiene cuando el contenido de un módulo está diseñado para realizar una tarea sencilla sin depender de otros módulos; o bien que un módulo lleve a cabo sólo una función de procesamiento. El acoplamiento se refiere a la fuerza de la relación entre módulos de un sistema. En general, los buenos diseñadores buscan desarrollar la estructura de un sistema de tal forma que un módulo tenga poca dependencia de cualquier otro módulo. Es necesario tener un bajo acoplamiento. El acoplamiento se mide en las relaciones que guardan los módulos con sus interfaces de entrada y salida. Hay tres tipos de acoplamiento: común, de datos y control UN FRAMEWORK Es un entorno o ambiente de trabajo para desarrollo; dependiendo del lenguaje normalmente integra componentes que facilitan el desarrollo de aplicaciones como el soporte de programa, bibliotecas, plantillas y más. MODELOS O VISTAS Toda arquitectura de software debe describir diversos aspectos del software. Generalmente, cada uno de estos aspectos se describe de una manera más comprensible si se utilizan distintos modelos o vistas. Es importante destacar que cada uno de ellos constituye una descripción
  • 7. parcial de una misma arquitectura y es deseable que exista cierto solapamiento entre ellos. Esto es así porque todas las vistas deben ser coherentes entre sí, evidente dado que describen la misma cosa. Cada paradigma de desarrollo exige diferente número y tipo de vistas o modelos para describir una arquitectura. No obstante, existen al menos tres vistas absolutamente fundamentales en cualquier arquitectura:  La visión estática: describe qué componentes tiene la arquitectura.  La visión funcional: describe qué hace cada componente.  La visión dinámica: describe cómo se comportan los componentes a lo largo del tiempo y cómo interactúan entre sí. Las vistas o modelos de una arquitectura de software pueden expresarse mediante uno o varios lenguajes. El más obvio es el lenguaje natural, pero existen otros lenguajes tales como los diagramas de estado, los diagramas de flujo de datos, etc. Estos lenguajes son apropiados únicamente para un modelo o vista. Afortunadamente existe cierto consenso en adoptar UML(Unified Modeling Language, lenguaje unificado de modelado) como lenguaje único para todos los modelos o vistas. Sin embargo, un lenguaje generalista corre el peligro de no ser capaz de describir determinadas restricciones de un sistema de información (o expresarlas de manera incomprensible). METODOLOGIA Como ustedes saben, Scrum es una metodología ágil para la gestión del desarrollo de software, que está basada en un proceso iterativo e incremental. Debido a la importancia de la arquitectura de software, es primordial definir claramente su papel en scrum. Es por esto que en el presente artículo se describe una propuesta del papel de la arquitectura de software en el ciclo de desarrollo de Scrum y de las responsabilidades del arquitecto de software en esta metodología. La competitividad del mercado de desarrollo de software y la necesidad de los clientes de reducir el “time to market” obligan a las organizaciones de desarrollo de software a ser agresivas en sus calendarios de entrega. Esto ha hecho que hayan surgido metodologías de desarrollo de software ágiles tales como Scrum: una metodología para la gestión y desarrollo de software basada en un proceso iterativo e incremental. Su estructura está basada en
  • 8. sprints los cuales son iteraciones de 1 a 4 semanas. Scrum se usa en proyectos de entorno complejos, donde se desea obtener resultados rápidos y la productividad es lo más importante [1]. En los proyectos basados en Scrum se consideran tres roles:  Dueño del producto (Product Owner): Es quien determina las prioridades de los entregables.  Maestro de Scrum (Scrum Master): Administra y facilita la ejecución del proceso.  Equipo de Trabajo (Stakeholders): Trabajan en conjunto para entregar resultados en cada sprint.