0% encontró este documento útil (0 votos)
574 vistas11 páginas

Fundamentos de La Arquitectura de Softwar1

La arquitectura de software se define como la estructura fundamental de un sistema, incluyendo los componentes, relaciones e interfases. Existen diferentes tipos de arquitecturas como la modular, cliente-servidor y de tres capas. Un arquitecto de software es responsable por diseñar la arquitectura óptima considerando objetivos, restricciones y atributos de calidad, además de guiar el desarrollo a través de estándares y mejores prácticas.

Cargado por

karina_zagaceta
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
574 vistas11 páginas

Fundamentos de La Arquitectura de Softwar1

La arquitectura de software se define como la estructura fundamental de un sistema, incluyendo los componentes, relaciones e interfases. Existen diferentes tipos de arquitecturas como la modular, cliente-servidor y de tres capas. Un arquitecto de software es responsable por diseñar la arquitectura óptima considerando objetivos, restricciones y atributos de calidad, además de guiar el desarrollo a través de estándares y mejores prácticas.

Cargado por

karina_zagaceta
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 11

FUNDAMENTOS DE LA ARQUITECTURA DE SOFTWARE.

DEFINICION DE LA ARQUITECTURA DE SOFTWARE:


La arquitectura de software de un programa o de un sistema computacional
est definida por la estructura, comprendida por los elementos de software, las
propiedades visibles de esos elementos y las relaciones entre ellos.
Tambin es la organizacin fundamental de un sistema encarnada en sus
componentes, las relaciones entre ellos, el ambiente y los principios que
orientan su diseo y evolucin.
La Arquitectura de Software es un nivel de diseo que hace foco en aspectos
ms all de los algoritmos y estructuras de datos de los sistemas. Es la
estructura jerrquica de los componentes/mdulos del programa, la manera de
interactuar de estos componentes y la estructura de los datos usados por estos
componentes.
La aplicacin de una estrategia sistemtica, disciplinada y cuantificable al
desarrollo, aplicacin y mantenimiento del software; esto es, la aplicacin de la
ingeniera al software.

Una Arquitectura de Software, tambin denominada Arquitectura lgica,


consiste en un conjunto de patrones y abstracciones coherentes que
proporcionan un marco definido y claro para interactuar con el cdigo fuente
del software.

Una arquitectura de software se selecciona y disea con base en


objetivos (requerimientos) y restricciones. Los objetivos son aquellos
prefijados para el sistema de informacin, pero no solamente los de tipo
funcional, tambin otros objetivos como la mantenibilidad, auditabilidad,
flexibilidad e interaccin con otros sistemas de informacin. Las
restricciones son aquellas limitaciones derivadas de las tecnologas
disponibles para implementar sistemas de informacin. Unas arquitecturas
son ms recomendables de implementar con ciertas tecnologas mientras
que otras tecnologas no son aptas para determinadas arquitecturas. Por
ejemplo, no es viable emplear una arquitectura de software de tres capas
para implementar sistemas en tiempo real.

FUNDAMENTOS DE ARQUITECTURA DE SOFTWARE


10

La arquitectura de software define, de manera abstracta, los


componentes que llevan a cabo alguna tarea de computacin, sus
interfaces y la comunicacin entre ellos. Toda arquitectura debe ser
implementable en una arquitectura fsica, que consiste simplemente en
determinar qu computadora tendr asignada cada tarea.

La arquitectura de software, tiene que ver con el diseo y la


implementacin de estructuras de software de alto nivel. Es el resultado de
ensamblar un cierto nmero de elementos arquitectnicos de forma
adecuada para satisfacer la mayor funcionalidad y requerimientos de
desempeo de un sistema, as como requerimientos no funcionales, como
la confiabilidad.

IMPORTANCIA DE LA ARQUITECTURA:
La arquitectura de software es de especial importancia ya que la manera en
que se estructura un sistema tiene un impacto directo sobre la capacidad de
este para satisfacer lo que se conoce como los atributos de calidad del sistema.
La manera en que se estructura un sistema permitir o impedir que se
satisfagan los atributos de calidad.

ARQUITECTURAS MS COMUNES:
Lo habitual es adoptar una arquitectura conocida en funcin de sus ventajas e
inconvenientes para cada caso en concreto. As, las arquitecturas ms
universales son:

Descomposicin Modular. Donde el software se estructura en grupos


funcionales muy acoplados.

Cliente-servidor. Donde el software reparte su carga de cmputo en dos


partes independientes pero sin reparto claro de funciones.

FUNDAMENTOS DE ARQUITECTURA DE SOFTWARE


10

Arquitectura de tres niveles. Especializacin de la arquitectura clienteservidor donde la carga se divide en tres partes (o capas) con un reparto
claro de funciones: una capa para la presentacin (interfaz de usuario), otra
para el clculo (donde se encuentra modelado el negocio) y otra para el
almacenamiento (persistencia). Una capa solamente tiene relacin con la
siguiente.

Otras arquitecturas afines menos conocidas son:

Modelo Vista Controlador.

En pipeline.

Entre pares.

En pizarra.

Orientada a servicios.

Dirigida por eventos.

Mquinas virtuales

QUIEN ES UN ARQUITECTO DE SOFTWARE?


Es la persona, equipo u organizacin responsable por la arquitectura del
sistema

que

se

est

llevando

cabo.

Un arquitecto de software no es simplemente un programador con


experiencia, sino la persona clave que ayudar a tomar decisiones
estratgicas acertadas para aprovechar al mximo la tecnologa en
nuestros

FUNDAMENTOS DE ARQUITECTURA DE SOFTWARE


10

sistemas.

A diferencia de un programador, el arquitecto de Software debe dominar


la mayor cantidad de tecnologas de software y prcticas de diseo, para
as poder tomar decisiones adecuadas para garantizar el mejor
desempeo, reuso, robustez, portabilidad, flexibilidad, escalabilidad y
mantenibilidad

de

las

aplicaciones.

El arquitecto de software es el lder tcnico del equipo, el rol natural al


que debe aspirar un programador experimentado que desea tomar
decisiones tcnicas relevantes en el desarrollo de un sistema.
Es el principal tomador de decisiones respecto a la manera en que ser
construida

la

aplicacin

por

los

programadores

del

equipo.

QUE CARACTERISTICAS Y COMPETENCIAS TIENE


EL ARQUITECTO DE SOFTWARE ?
Posee competencias tcnicas y conocimientos tecnolgicos.
Investiga nuevas tecnologas y comprende Frameworks arquitectnicos
y las mejores practicas.
Desarrolla rpidamente profundo conocimiento en una tecnologa.
Tiene liderazgo y autoridad.
Sigue y dirige a la vez.
Es un buen comunicador.
Entiende el dominio del negocio.
Es un negociador.

FUNDAMENTOS DE ARQUITECTURA DE SOFTWARE


10

Posee fuerte visin para los negocios.


Entiende la poltica de la empresa.
Puede trabajar con informacin ambigua o incompleta.
Identificar e interactuar con los interesados en el proyecto para
asegurarse
que
sus
necesidades
son
satisfechas.
Se orienta por objetivos y pro-actividad.
Debe poseer la madurez, visin y tener un juicio crtico.

RESPONSABILIDADES
SOFTWARE

DE

UN

ARQUITECTO

DE

Elaborar la arquitectura correcta para solucionar el problema que se encuentra


desarrollando es solo una parte de la responsabilidad del arquitecto.
Define y documenta la solucin, asegurndose que este acorde
con el sistema deseado y que adems es la - correcta para su
soporte y evolucin.
Se asegura que todos los involucrados estn utilizando la
solucin
elaborada
y
la
estn
utilizando
bien.
Conoce cuales cualidades sistmicas, deben alcanzarse y en qu
medida.
Responde sobre las inquietudes relacionadas con la seleccin de
herramientas y ambientes de desarrollo.
Resuelve

conflictos

ayuda

FUNDAMENTOS DE ARQUITECTURA DE SOFTWARE


10

generar

acuerdos.

Mantiene la moral, tanto en el interior del grupo de arquitectura


como al exterior.
Gerencia las estrategias de identificacin y mitigacin de los
riesgos
asociados
con
la
arquitectura.

ROL DEL ARQUITECTO DE SOFTWARE:

Conocer y ayudar a la implementacin de la Metodologa.

Conocer a la perfeccin los Requerimientos y Restricciones.

Alinearse con la Visin de la Organizacin.

Asesorar en la Planificacin y Estimacin del proyecto.

Definicin de Estndares y polticas de reusabilidad de componentes.

Proveer Gua Tcnica clara y consistente.

Seleccin de Infraestructura: Sistemas Operativos,

hardware, redes, sistemas de recuperacin, etc.

Coaching y Mentoring: Ayuda sobre problemas

tcnicos, ayuda en la evolucin profesional, etc.

Procesos de Desarrollo: Control de versiones de

cdigo fuente, procesos de construccin, integracin


continua, automatizacin de pruebas y otros procesos y
herramientas de desarrollo.
FUNDAMENTOS DE ARQUITECTURA DE SOFTWARE
10

Prcticas y Estndares: Estndares de codificacin y

libros blancos, seleccin de herramientas, etc.

Diseo, Desarrollo y Pruebas: Diagramas UML,

codificacin, pruebas unitarias, etc.

Experiencia: Conocimiento sobre tecnologas y

arquitecturas.

Estar al da en cuanto a tendencias tecnolgicas:

Agile, Web 2.0, SOA, Lightweight Java EE, etc.


Las Funciones del Arquitecto de Software:

Elaborar la arquitectura y diseo de software a partir de los


requerimientos del usuario. Haciendo uso de patrones de diseo previamente
conocidos, por experiencia personal o mantenindose actualizado con las
ltimas tcnicas y patrones.

Crear consenso y entendimiento de la arquitectura. Debe involucrar a


cada miembro del equipo, y lograr acuerdos respecto a la arquitectura, la cual
debe comunicar y vender.

Entender los requerimientos no funcionales:


o La mayora de los requerimientos no funcionales son de naturaleza
tcnica, y suelen tener mucha influencia en la arquitectura.
o El entendimiento adecuado de estos requerimientos es crucial para
desempear este rol.
o No basta con asumir cuales son esos requerimientos, se necesita
indagar sobre ellos y determinar las necesidades reales.

FUNDAMENTOS DE ARQUITECTURA DE SOFTWARE


10

o Incluir estructuras, lineamientos, principios y liderazgo sobre


los aspectos tcnicos del software.
o Esta responsabilidad vara mucho si se est trabajando con un sistema
con arquitectura definida frente a disear un nuevo sistema.
o Puede llegar a ser un reto, considerando todos los elementos a
considerar: costo, licenciamiento, relaciones con proveedores, estrategia
de tecnologa, compatibilidad, interoperabilidad, soporte, instalacin,
polticas de actualizacin, ambientes de usuario final, etc.
o Seleccionar tecnologas se trata de evaluar los riesgos, reducindolos
cuando existe alta complejidad e incertidumbre y aumentarlos cuando
existen beneficios (oportunidades).
o Toda decisin de tecnologa debera ser revisada y aprobada.
o Al disear el software, el arquitecto debe preguntarse si la arquitectura
seleccionada podr satisfacer los requerimientos funcionales y en
especial los no funcionales.
o Las arquitecturas tambin se pueden probar, y si hacemos esto al
principio, podemos evitar el fracaso del proyecto.

Diferencias entre el Arquitecto de Software del Lder


de Desarrollo

El lder de desarrollo se enfoca en conocimiento detallado de reas


especficas mientras que el arquitecto de software necesita ver los
problemas de forma amplia, desde diferentes perspectivas, enfocndose
en integrar las partes en una red que permita solucionar el problema
global.

El Arquitecto de Software maneja el problema y la solucin a una mayor


escala y nivel de abstraccin.

Sus decisiones tienen mayor impacto en la duracin del proyecto y los


riesgos.

Hacer Arquitectura de Software es tener una visin holstica, ver el


panorama amplio, para entender como funcional el sistema como un
todo.

FUNDAMENTOS DE ARQUITECTURA DE SOFTWARE


10

Diferentes Funciones segn el tipo de Arquitecto de


Software
Segn el arquitecto sea Empresarial, De Aplicacin o de Solucin, manejarn
distintos niveles de complejidad, como se muestra en la siguiente tabla.

Tipo de
Arquitecto

Pensamiento
Estratgico

Interacciones
entre
Sistemas

Comunicaciones

Diseo

Empresarial

Entre
Proyectos.

Altamente
abstracto.

En toda la
organizacin.

Mnimo, de
Alto Nivel.

Soluciones

Enfocado en
una solucin.

Muy
detallado.

Mltiples equipos
de Proyecto.

Detallado.

Aplicaciones

Reutilizacin y
mantenimiento
de
componentes.

Centrado en
una sola
aplicacin.

Un solo equipo
de proyecto.

Muy
detallado.

Herramientas que debe manejar

Lenguaje de documentacin visual (ej. UML).

Diseo de Base de datos.

Procesos y herramientas de desarrollo.

Aspectos positivos de un Arquitecto de Software

Es un rol clave que tiene potencial de agregar mucho valor si se


desempea adecuadamente, lo cual implica por lo general mayor
sueldo.

Debe interactuar con personas clave en la organizacin, equipo de


desarrollo y comunidad de usuarios, por lo que es un rol bastante visible.
Esto implica mayores oportunidades de carrera.

Retos a enfrentar
Uno de los principales problemas que enfrenta un arquitecto de software
en el da a da, son los requerimientos funcionales con informacin
FUNDAMENTOS DE ARQUITECTURA DE SOFTWARE
10

incorrecta o incompleta. Requiere de mucha habilidad el poder identificar


requerimientos mal documentados antes que sea demasiado tarde.
Para ser un buen arquitecto de software, es necesario estar en
constante estudio de las nuevas tcnicas, patrones y herramientas. Para
lograr esto se requiere esfuerzo, incluyendo sacrificios de tiempo
personal y familiar para invertirlo en autoestudio, cursos, entre otros.
El rol implica balancear tantos factores que es muy fcil fracasar, si
esto ocurre, uno de los primeros que tendr que rendir cuentas es el
Arquitecto de Software, por lo que el reto es no fracasar.
Con frecuencia, la complejidad del rol es subestimada, por lo que
corresponde al Arquitecto ser un buen comunicador para demostrar el
valor agregado del diseo y arquitectura en el proceso de desarrollo de
software.

FASES EN QUE PARTICIPA UN ARQUITECTO DE


SOFTWARE:

Pre diseo.

Anlisis del dominio.

Diseo esquemtico.

Desarrollo del diseo.

Documentacin del proyecto.

Seleccin y contratacin.

Construccin.

Post Construccin.

ARQUITECTURA VS DISEO.

FUNDAMENTOS DE ARQUITECTURA DE SOFTWARE


10

FUNDAMENTOS DE ARQUITECTURA DE SOFTWARE


10

También podría gustarte