Sei sulla pagina 1di 22

TEMA 1

Introducción a la Arquitectura de
software : Conceptos

Ing. Josué Obed Veizaga Gonzales MSc


Universidad Autónoma Gabriel René Moreno
Ing. Informática- Ing. De sistemas
Arquitectura… de qué?
 De Software. Involucra al diseño estructural del
software (únicamente) que forma parte de un sistema.

 De Sistemas de Software. Involucra al diseño


estructural de todo el sistema, entiéndase: Software,
Datos, Usuarios, el Ambiente Operacional y
Procedimientos.

Esto se debe a que muchas veces se utiliza la palabra software,


como sinónimo de sistema de software.
Qué es una arquitectura
software?
 La arquitectura del software define el sistema en términos de sus
componentes computacionales y de las relaciones entre ellos (Shaw &
Garlan, 1996)

 “Estructura o estructuras del sistema que comprende componentes de


software, propiedades visibles de esos componentes y las relaciones
entre ellos.”
Arquitectura de Software
 Ingeniero de software:
 Se preocupa de la parte estructural, y le preocupa poco
la estética.
 Se preocupa de los costos, a corto y a largo plazo.

 Sigue procedimientos bien definidos, lo suyo es más


ingeniería que arte.
 Interactúa poco con el cliente, las revisiones apuntan
más hacia el interior del equipo de trabajo.
 Trabaja en equipo.

 Utiliza ciclos de trabajo medianos a largos.

 Construye en base a los requisitos funcionales.


Arquitectura de Software
 Arquitecto de software:
 Se preocupa de la parte estética y funcional (usabilidad).

 No se preocupa de los costos asociados, ni de la parte


estructural que no esté directamente relacionada con su
trabajo.
 No sigue procedimientos rígidos, lo suyo está más cerca del
arte que de la ingeniería.
 Interactúa mucho con el cliente.

 Por lo general trabaja sólo o en grupos muy reducidos.

 Utiliza ciclos de trabajo cortos.

 Construye en base a lo que al cliente/usuario le


gusta....(requisitos no funcionales)
Arquitectura de Software
 La división entre el ingeniero y el arquitecto de
software, es una línea difusa.
 Ambos roles son necesarios y son complementarios....
El problema es que hay que ser conscientes de que un
buen ingeniero puede no ser un buen arquitecto, y
viceversa.
 Debido a estas diferencias, la arquitectura como
proceso o como producto, puede verse desde estos dos
puntos de vista.
 ... El desarrollo de software tradicional está más
orientado al trabajo del ingeniero de software.
 ... El desarrollo de aplicaciones para Web está más
orientado al trabajo del arquitecto de software.
Qué es Arquitectura de Software ?
Como producto (según el ingeniero):
 Un diseño de alto nivel.

 La estructura del sistema.

 Los componentes de un programa o sistema, sus


relaciones, y los principios que gobiernan su diseño y su
evolución en el tiempo.
 Descomposición de la funcionalidad en grandes bloques.

 Componentes, conectores, configuración y restricciones.

 Selección entre distintas alternativas de arquitectura.


 Es la clave del éxito a largo plazo.
Qué es Arquitectura de Software ?
Como Producto (según el Arquitecto):
 Es el conjunto de patrones de: interfaz, estructura,
navegación, y funcionalidad de un software.
 Interfaces y links.
 Un diseño que busca obtener una comprensión intuitiva
del sistema a través de su interfaz.
 Páginas Web relacionadas.
 Lo que el cliente/usuario desea.
 Es la clave del éxito a corto plazo.
Qué es Arquitectura de Software ?
Como Proceso (según el Ingeniero):
 Es el proceso de diseño de los macrocomponentes del
sistema y de sus relaciones.
 Es el proceso de diseño de la funcionalidad básica del
sistema.
 Es un proceso de diseño ingenieríl (paso a paso), basado
en los requisitos.
 Es la entrada y la base para el diseño detallado.
 Es el medio para probar las soluciones propuestas para
alcanzar algunos de los requisitos.
Qué es Arquitectura de Software ?
Como Proceso (según el Arquitecto):
 Es el proceso de definición de la imagen corporativa.
 Es el proceso de diseño de la apariencia y usabilidad de un
software.
 Es el proceso de captura/validación de las necesidades del
cliente/usuario.
 Es una forma de estructurar la información y la funcionalidad
que ofrece un software.
 Es una forma de reducir la ansiedad del cliente/usuario.
 Es una forma de que el cliente/usuario se sienta considerado
dentro de un desarrollo.
Influencias de los participantes sobre el arquitecto

usuario
final

Funcionalidad
Rendimiento
Seguridad
gerente del usabilidad soporte
proyecto aplicativo
Bajo costo
Rendimiento
del equipo
modificabilidad

arquitecto

líder de Corto tiempo en mercado Bajo costo y tiempo cliente


mercadeo Bajo costo; ventajas con de entrega, que no cambie
productos similares muy a menudo
Arquitectura Vs. Diseño
+ La arquitectura y el diseño difieren en tres áreas:
Arquitectura Diseño
Nivel de Alto nivel Bajo nivel. Enfoque
Abstracción específico en detalles
Entregables Planear subsistemas, interfaces Diseño detallado
con sistemas externos, componentes.
servicios horizontales,
frameworks, componentes Especificaciones de
reutilizables, prototipo codificación
arquitectónico
Áreas de Selección de tecnologías, Requerimientos
Enfoque Requerimientos no funcionales funcionales
(QoS),
Manejo de riesgos
Arquitectura en el proceso de desarrollo

Requisitos

Análisis

Diseño

Codificación

– Diseño de la Base de datos


Prueba
– Diseño de la Interfaz
– Diseño de la Arquitectura de Software
Mantenimiento
– Diseño de detalle procedimental
Importancia de la especificación de la
arquitectura
• Mejora la comunicación • Permite predecir las cualidades
entre las personas del sistema.
involucradas.
• Facilita la administración de la
• Brinda documentación evolución.
temprana acerca de las
decisiones de diseño. • Podría derivar en las líneas de
productos comparten
• Brinda restricciones a la arquitectura.
implementación.
• Establece una base para el
• Premite la validación entrenamiento de nuevo
temprana del sistema. personal.
Distribución del Costo del Software

Diseño

Programación

Mantenimiento

Pruebas
Arquitectura de Software y Calidad
de Software
 … diseñar buenas aquitecturas no sólo es rentable,
también ayuda a mejorar la calidad del software
obtenido.
 Qué es calidad de software?
 Qué significa la calidad de software, para el
desarrollador, para el cliente y para el usuario?
 Qué tiene que ver la arquitectura de software en este
asunto?
 Hay otras maneras de obtener calidad de software?
Arquitectura de Software y Calidad
de Software
 La mayoría de los requisitos de calidad pueden ser
alcanzados, sólo si son considerados desde la
arquitectura:
Funcionalidad: Usabilidad:
Pertinencia, Precisión, Entendibilidad, Aprendibilidad,
Interoperabilidad, Adherencia, Operabilidad, Aceptación de Uso
Seguridad

Mantenibilidad: Portabilidad:
Analizabilidad, Cambiabilidad, Adaptabilidad, Instanciabilidad,
Estabilidad, Demostrabilidad Adecuación, Reemplazabilidad

Eficiencia: Confiabilidad:
Rendimiento, Madurez, Tolerancia a Fallas,
Uso de Recursos Recuperabilidad
Elementos de la Arquitectura de
Software
 La arquitectura de software define:
 componentes - lugar de almacenamiento o cómputo:
 filtros, bases de datos, objetos, TDAs,
 conectores - mediadores entre componentes:
 llamadas a procedimientos, pipes, broadcast,
 propiedades - información para construcción y análisis del
software:
 pre/post condiciones, invariantes.
 Un estilo o patrón de arquitecturas una solución general a
un problema recurrente, a partir del cual se obtendrán
arquitecturas específicas para los distintos problemas.
 Un estilo o patrón de arquitecturas define una familia,
compuesta de:
 componentes y conectores,
 configuraciones,
 semántica de las restricciones.
¿Para qué la Arquitectura de
Software?
 Las personas necesitan pensar, diseñar, codificar, y
comunicarse en términos de grandes bloques.

 Es necesario diseñar sistemas de larga vida.

 Es necesario diseñar sistemas flexibles, extendibles,


adaptables y ojalá de bajo costo de mantención.

 En el caso de los sistemas para Web, deben soportar


una velocidad de evolución altísima.
¿Para qué más?
 Reutilización de alto nivel: actualmente solamente se
reutiliza el código y las estructuras de datos.
 Atacar problemas del ciclo de vida del software:
 modificabilidad, portabilidad, escalabilidad, eficiencia
del proceso de desarrollo, seguridad.
 A medida que el tamaño del sistema crece, las soluciones
a estos problemas radican más en la arquitectura.
 Tener un lenguaje común para diseñadores,
desarrolladores y usuarios.... aunque a veces esto es sólo
una expresión de deseo, mas que una realidad.
 ….. Pero fundamentalmente, para poder cumplir con
los “requisitos de calidad”.
Veamos el dibujo (casi) completo
Arquitectura
de Sistemas

Arq. del Escena- Arquitectura


rio de Trabajo para Software

Patrones Patrones
Servidores Redes Hardware
Arquitect. de Diseño
- B.D.
- Seguridad
- Transaccionales
- Web … a la arquitectura del escenario de trabajo,
- Usuarios
- etc. también se la conoce como Arquitectura Física
Conclusiones
 Arquitectura de software y arquitectura de sistemas de
software, son dos cosas distintas.
 No hay un concenso acerca de qué es y qué involucra
la arquitectura de software.
 ... Algunos sostienen que es complementaria a la
ingeniería de software.
 La arquitectura de software plantea desafíos que no
han sido muy bien manejados por la ingeniería de
software tradicional.
 Diseñar una buena arquitectura no sólo es necesario,
sino que además es una actividad rentable !!!
 El ingeniero de software tradicional y el arquitecto de
software, son dos roles complementarios y necesarios.

Potrebbero piacerti anche