0% encontró este documento útil (0 votos)
246 vistas7 páginas

Arquitectura de Software: Tipos y Principios

La arquitectura del software se refiere a la estructura de un sistema, incluyendo sus componentes, relaciones y propiedades externas. Existen diferentes estilos arquitectónicos como centrados en datos, de flujo de datos y de llamadas, los cuales imponen estructuras para organizar los componentes de un sistema. Un buen diseño arquitectónico debe cumplir con principios como el de responsabilidad única, módulos abiertos y cerrados, e independencia de las concreciones.

Cargado por

Edvin Sian
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 PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
246 vistas7 páginas

Arquitectura de Software: Tipos y Principios

La arquitectura del software se refiere a la estructura de un sistema, incluyendo sus componentes, relaciones y propiedades externas. Existen diferentes estilos arquitectónicos como centrados en datos, de flujo de datos y de llamadas, los cuales imponen estructuras para organizar los componentes de un sistema. Un buen diseño arquitectónico debe cumplir con principios como el de responsabilidad única, módulos abiertos y cerrados, e independencia de las concreciones.

Cargado por

Edvin Sian
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 PDF, TXT o lee en línea desde Scribd

La arquitectura del software:

es la estructura o estructuras del sistema, lo que comprende a los componentes del software, sus
propiedades externas visibles y las relaciones entre ellos.

arquitectura y diseño. Un diseño es una instancia de una arquitectura, similar a un objeto que es
una instancia de una clase. Por ejemplo, considere la arquitectura de cliente-servidor. Con esta
arquitectura es posible diseñar de muchos modos un sistema de software basado en red, con el
uso de una plataforma Java (Java EE) o Microsoft (estructura .NET). Entonces, hay una
arquitectura, pero con base en ella pueden crearse muchos diseños. Así, no es válido mezclar
“arquitectura” y “diseño”.

Inteligencia artificial: Sistemas que simulan o incrementan la cognición humana, su locomoción u


otros procesos orgánicos.
Comerciales y no lucrativos: Sistemas que son fundamentales para la operación de una
empresa de negocios.
• Comunicaciones: Sistemas que proveen la infraestructura para transferir y manejar datos, para
conectar usuarios de éstos o para presentar datos en la frontera de una infraestructura.
Contenido de autor: Sistemas que se emplean para crear o manipular artefactos de texto o
multimedios.
• Dispositivos: Sistemas que interactúan con el mundo físico a fin de brindar algún servicio
puntual a un individuo.
• Entretenimiento y deportes: Sistemas que administran eventos públicos o que proveen una
experiencia grupal de entretenimiento.
• Financieros: Sistemas que proporcionan la infraestructura para transferir y manejar dinero y
otros títulos.
• Juegos: Sistemas que dan una experiencia de entretenimiento a individuos o grupos

Gobierno: Sistemas que dan apoyo a la conducción y operaciones de una institución política local,
estatal, federal, global o de otro tipo.
• Industrial: Sistemas que simulan o controlan procesos físicos.
• Legal: Sistemas que dan apoyo a la industria jurídica.
• Médicos: Sistemas que diagnostican, curan o contribuyen a la investigación médica.
• Militares: Sistemas de consulta, comunicaciones, comando, control e inteligencia (o C4I), así
como de armas ofensivas y defensivas.
• Sistemas operativos: Sistemas que están inmediatamente instalados en el hardware para dar
servicios de software básico.
• Plataformas: Sistemas que se encuentran en los sistemas operativos para brindar servicios
avanzados.
• Científicos: Sistemas que se emplean para hacer investigación científica y aplicada.
• Herramientas: Sistemas que se utilizan para desarrollar otros sistemas.
• Transporte: Sistemas que controlan vehículos acuáticos, terrestres, aéreos o espaciales.
• Utilidades: Sistemas que interactúan con otro software para brindar algún servicio específico.

La ASI (Arquitectura de Software de Inmerpresencia) es un modelo nuevo de arquitectura de


software para diseñar, analizar e implementar aplicaciones que realizan un procesamiento
distribuido, asíncrono y paralelo de flujos de datos generales.

Un estilo arquitectónico es una transformación que se impone al diseño de todo el sistema.


El objetivo es establecer una estructura para todos los componentes del sistema.

Arquitecturas centradas en los datos. En el centro de esta arquitectura se halla un


almacenamiento de datos (como un archivo o base de datos) al que acceden con frecuencia otros
componentes que actualizan, agregan, eliminan o modifican los datos de cierto modo dentro
del almacenamiento.

Arquitecturas de flujo de datos. Esta arquitectura se aplica cuando datos de entrada van a
transformarse en datos de salida a través de una serie de componentes computacionales o
manipuladores.

Arquitecturas de llamar y regresar. Este estilo arquitectónico permite obtener una estructura
de programa que es relativamente fácil de modificar y escalar.

Arquitecturas en capas
cada una ejecuta operaciones que se aproximan progresivamente al conjunto de instrucciones de
máquina.

Un arquetipo es una abstracción (similar a una clase) que representa un elemento de


comportamiento del Sistema. Un arquetipo es una clase o un patrón que representa una
abstracción fundamental de importancia crítica para el diseño de una arquitectura para el sistema
objetivo.

diagrama de contexto arquitectónico (DCA) para modelar la manera en la que el software


interactúa con entidades más allá de sus fronteras.

Sistemas superiores: aquellos que utilizan al sistema objetivo como parte de algún
esquema de procesamiento de alto nivel.
• Sistemas subordinados: los que son usados por el sistema objetivo y proveen datos o
procesamiento que son necesarios para completar las funciones del sistema objetivo.
• Sistemas entre iguales: son los que interactúan sobre una base de igualdad (por ejemplo,
la información se produce o consume por los iguales y por el sistema objetivo).
• Actores: entidades (personas, dispositivos, etc.) que interactúan con el sistema objetivo
mediante la producción o consumo de información que es necesaria para el procesamiento
de los requerimientos.

• Nodo. Representa una colección cohesiva de elementos de entrada y salida de la


función de seguridad del hogar. Por ejemplo, un nodo podría comprender 1) varios
sensores y 2) varios indicadores de alarma (salida).
• Detector. Abstracción que incluye todos los equipos de detección que alimentan con
información al sistema objetivo.
• Indicador. Abstracción que representa todos los mecanismos (como la sirena de la
alarma, luces, campana, etc.) que indican que está ocurriendo una condición de alarma.
• Controlador. Abstracción que ilustra el mecanismo que permite armar o desarmar
un nodo. Si los controladores residen en una red, tienen la capacidad de comunicarse
entre sí.

Las dependencias compartidas representan relaciones entre consumidores que usan los mismos
recursos
o productores que producen para los mismos consumidores.

Las dependencias de flujo representan relaciones de dependencia entre productores y


consumidores
de recursos.

Las dependencias de restricción representan restricciones en el flujo relativo del control entre
un conjunto de actividades.

El lenguaje de descripción arquitectónica (LDA) provee la semántica y sintaxis para describir


una arquitectura de software.
diseño estructurado se caracteriza con frecuencia como método de diseño orientado al flujo
porque provee una transición conveniente de un diagrama de flujo de datos.

El mapeo de transformación es un conjunto de pasos de diseño que permite mapear un DFD con
características de flujo de transformación en un estilo arquitectónico específico

Un componente es un bloque de construcción de software de cómputo

Principio Abierto-Cerrado (PAC). “Un módulo [componente] debe ser abierto para la extensión
pero cerrado para la modificación” [Mar00]. Este enunciado parece ser una contradicción,
pero representa una de las características más importantes de un buen diseño en el nivel de
componentes.

Principio de sustitución de Liskov (PSL). “Las subclases deben ser sustituibles por sus clases
de base” [Mar00]. sugiere que un componente que use una clase de base debe funcionar bien si
una clase derivada
de la clase base pasa al componente.

Principio de Inversión de la Dependencia (PID). “Dependa de las abstracciones. No dependa


de las concreciones” [Mar00]. Como se vio en el estudio del PAC, las abstracciones son el
lugar en el que es posible ampliar un diseño sin muchas dificultades.

Principio de segregación de la interfaz (PSI). “Es mejor tener muchas interfaces específicas
del cliente que una sola de propósito general” [Mar00]. Hay muchas instancias en las que múltiples
componentes del cliente usan las operaciones que provee una clase servidor.

Principio de equivalencia de la liberación de la reutilización (PER). “El gránulo de reutilización


es el gránulo de liberación” [Mar00]. Cuando las clases o componentes se diseñan para
ser reutilizables, existe un contrato implícito que se establece entre el desarrollador de la entidad
reutilizable y las personas que la emplearán.

Principio de cierre común (PCC). “Las clases que cambian juntas pertenecen a lo mismo”
[Mar00]. Las clases deben empacarse en forma cohesiva. Es decir, cuando las clases se agrupan
como parte de un diseño, deben estar dirigidas a la misma área de funciones o comportamiento.

Principio de la reutilización común (PRC). “Las clases que no se reutilizan juntas no deben
agruparse juntas” [Mar00]. Cuando cambia una o más clases dentro de un paquete, cambia el
número de liberación del paquete.

Interfaces. Las interfaces dan información importante sobre la comunicación y la colaboración


(también nos ayudan a cumplir el PAC).

cohesión la “unidad de objetivo” de un componente.

Funcional. Lo tienen sobre todo las operaciones; este nivel de cohesión ocurre cuando un
componente realiza un cálculo y luego devuelve el resultado.

De capa. Lo tienen los paquetes, componentes y clases; este tipo de cohesión ocurre
cuando una capa más alta accede a los servicios de otra más baja, pero ésta no tiene acceso
a las superiors.

De comunicación. Todas las operaciones que acceden a los mismos datos se definen
dentro de una clase.

El acoplamiento es la medición cualitativa del grado en el que las clases se conectan una con
otra. Conforme las clases (y componentes) se hacen más interdependientes, el acoplamiento
crece.

Acoplamiento del control. Tiene lugar si la operación A( ) invoca a la operación B( ) y


pasa una bandera de control a B.

Acoplamiento de molde. Se presenta cuando se declara a ClaseB como un tipo para un


argumento de una operación de ClaseA.

Acoplamiento de datos. Ocurre si las operaciones pasan cadenas largas de argumentos


de datos.

Acoplamiento de rutina de llamada. Tiene lugar cuando una operación invoca a otra.

Acoplamiento de tipo de uso. Ocurre si el componente A usa un tipo de datos definidos


en el componente B (esto ocurre siempre que “una clase declara una variable de instancia
o una variable local como si tuviera otra clase para su tipo”

Acoplamiento de inclusión o importación. Pasa cuando el componente A importa o incluye


un paquete o el contenido del componente B.

Acoplamiento externo. Sucede si un componente se comunica o colabora con componentes


de infraestructura (por ejemplo, funciones del sistema operativo, capacidad de la
base de datos, funciones de telecomunicación, etc.).

webapp es una función cohesiva bien definida que manipula contenido o da procesamiento de
cómputo o de datos para un usuario final.

El diseño del contenido en el nivel de componentes se centra en objetos de contenido y en la


forma en la que se empacan para su presentación a un usuario final de webapps.

Las tablas de decisión proporcionan una notación que traduce las acciones y condiciones
(descritas en la narración del procesamiento o caso de uso) a una forma tabular.

El lenguaje de diseño del programa (LDP) también llamado castellano estructurado o


seudocódigo, incorpora la estructura lógica de un lenguaje de programación y la expresividad de
forma libre de un lenguaje natural (como el castellano).

reglas doradas:
1. Dejar el control al usuario.
2. Reducir la carga de memoria del usuario.
3. Hacer que la interfaz sea consistente.

análisis y diseño de la interfaz de usuario comienza con la creación de diferentes modelos del
funcionamiento del sistema (según se percibe desde fuera).

La construcción de la interfaz comienza por lo general con la creación de un prototipo que


permite evaluar los escenarios de uso.

Entrevistas. Éste es el enfoque más directo, los miembros del equipo de software se reúnen con
los usuarios para entender mejor sus necesidades, motivaciones, cultura laboral y una multitud de
aspectos adicionales

Información de ventas. El personal de ventas habla con los usuarios de manera regular y recaba
información que ayuda al equipo de software a clasificarlos y a entender mejor sus requerimientos.
Información de mercadotecnia. El análisis del mercado es invaluable para la definición de
segmentos del mercado y para la comprensión sobre cómo usará el software en formas sutilmente
distintas cada uno de estos segmentos.

Información de apoyo. El equipo de apoyo habla a diario con los usuarios.

un patrón de diseño es una abstracción que prescribe una solución de diseño para un problema
de diseño bien delimitado.

cuatro aspectos comunes del diseño: tiempo de respuesta del sistema, herramientas de ayuda
para el usuario, manejo de información errónea y leyendas de los comandos.

cuatro aspectos comunes del diseño: tiempo de respuesta del sistema, herramientas de ayuda
para el usuario, manejo de información errónea y leyendas de los comandos.

la Ley de Fitt “es un método eficaz para modelar movimientos rápidos e intencionados, donde un
apéndice (como una mano) comienza en reposo en una posición específica de arranque y vuelve
al reposo dentro de un área objetivo” [Zha02].

Un patrón de diseño se caracteriza como “una regla de tres partes que expresa una relación
entre cierto contexto, un problema y una solución”

patrón no generativo debido a que describe un contexto y un problema

Los patrones arquitectónicos describen problemas de diseño de base amplia que se resuelven
con el empleo
de un enfoque estructural.

Los patrones de datos describen problemas recurrentes orientados a datos y las soluciones de
modelado de datos que pueden emplearse para resolverlos.

Los patrones de componentes (también llamados patrones de diseño) se enfocan a problemas


asociados
con el desarrollo de subsistemas y componentes, así como a la manera en la que se comunican
entre sí y su ubicación dentro de una arquitectura mayor.

Los patrones creacionales se centran en la “creación, composición y representación” de objetos.

Los patrones estructurales se centran en problemas y soluciones asociados con la manera en


la que se organizan e integran las clases y objetos para construir una estructura más grande.

Los patrones conductuales se enfocan a problemas asociados con la asignación de


responsabilidad
entre los objetos y a la manera en la que se efectúa la comunicación entre ellos.

Una estructura no es un patrón arquitectónico, sino un esqueleto con varios “puntos de conexión”
(también llamados ganchos o ranuras) que permiten adaptarlo a un dominio de problema
específico.

Un lenguaje de patrón agrupa un conjunto de patrones, cada uno de los cuales se describe con el
uso de un formato estandarizado e interrelacionado para mostrar cómo colaboran los patrones
para resolver problemas en un dominio de aplicación.

Los patrones de diseño en el nivel de componentes brindan soluciones comprobadas que se


abocan a uno o más subproblemas extraídos del modelo de requerimientos.
NavegacióndeAltoNivel Se usa cuando un sitio o aplicación implementa cierto número de
funciones importantes.

ApilarTarjetas (CardStack) : Se utiliza cuando deben seleccionarse aleatoriamente cierto número


de subfunciones o categorías de contenido específicas relacionadas con una característica o
función.

Llenar los espacios Permite introducir datos alfanuméricos en un “cuadro de texto”.

OrdenarTabla (SortableTable) Despliega una lista larga de registros que pueden ordenarse por
medio
de un mecanismo de cambio para cualquier etiqueta de columna.

MigajasdePan (BreadCrumbs) Brinda una ruta completa de navegación cuando el usuario trabaja
con una jerarquía compleja de páginas o pantallas.

Editar (EditInPlace) Brinda capacidades de edición de texto sencillo para ciertos tipos de
contenido en la ubicación que se muestra en la pantalla.

BúsquedaSimple (SimpleSearch) Da la capacidad de buscar un sitio web o fuente persistente de


datos para un concepto simple de datos descritos por una cadena alfanumérica.

Mago (Wizard): Lleva al usuario paso a paso a través de una tarea compleja y lo guía para que la
termine por medio de ventanas sencillas en la pantalla.

CarritodeCompras (ShoppingCart) Da una lista de artículos seleccionados para compra.

IndicadordeAvance (ProgressIndicator) Proporciona una indicación del avance cuando una


operación dura más de n segundos.

La granularidad determina el nivel de abstracción que se considera (¿el patrón se aplica a toda la
webapp, a una sola página web,

El diseño estético, también llamado diseño gráfico, es una actividad artística que complementa
los aspectos técnicos del diseño de las webapps.

El diseño arquitectónico está ligado con las metas establecidas para una webapp

El diseño del contenido se centra en la definición de la estructura general de los hipermedios de


la webapp.
Las estructuras de malla son una opción arquitectónica que se aplica cuando es posible
organizar el contenido de una webapp en forma categórica en dos (o más) dimensiones.

Una estructura de red o “telaraña pura” es similar en muchos sentidos a la arquitectura que
evoluciona a partir de sistemas orientados a objetos.

La arquitectura de una webapp describe una infraestructura que permite que un sistema o
aplicación basados en web alcance sus objetivos empresariales.

unidades semánticas de navegación (USN): conjunto de estructuras de información y


navegación relacionadas que colaboran para el cumplimiento de un subconjunto de requerimientos
del usuario relacionados.

Vínculo de navegación individual: incluye vínculos basados en texto, iconos, botones e


interruptores, así como metáforas gráficas.
Barra de navegación horizontal: enlista las categorías principales de contenido o de funciones en
una barra que contiene vínculos apropiados.

Pestañas: metáfora que no es más que una variación de la barra o columna de navegación y
representa categorías de contenido o funciones como pestañas que se seleccionan cuando se
requiere un vínculo.

Mapas del sitio: dan una tabla de contenido que incluye todo el contenido a fin de
navegar hacia todos los objetos y funciones contenidas dentro de la webapp.

El diseño conceptual del MDHOO genera una representación de los subsistemas, clases y
relaciones que definen el dominio de aplicación para la webapp.

También podría gustarte