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.