Documente Academic
Documente Profesional
Documente Cultură
Éxito competitivo, simplemente declarado fluye a la empresa que se las arregla para
establecer un control de arquitectura propietario sobre un espacio amplio, veloces,
competitivo.
Durante décadas, los diseñadores de software han aprendido a construir sistemas basados
exclusivamente en los requisitos técnicos. Conceptualmente, el documento de requisitos es
arrojado encima de la pared en cabina el diseñador de la, y el diseñador debe venir con un
diseño satisfactorio. Requisitos de engendrar diseño, que responde al sistema. Por supuesto,
los métodos de desarrollo de software moderno reconocen la ingenuidad de este modelo y
proporcionan a todo tipo de reacciones de diseñador de analista. Pero todavía hacen la
asunción implícita que el diseño es un producto de los requisitos técnicos del sistema,
período.
Esto es miope (consulte la barra lateral el sueco Vasa de barco) y no contar toda la historia.
¿Qué Supongamos que pasaría si dos diferentes arquitectos, trabajando en dos
organizaciones diferentes, se les dio la misma especificación de requisitos para un sistema?
¿Cree usted que produciría la misma arquitectura o otras diferentes?
Este capítulo presenta el ABC en detalle y sienta las bases para el resto del libro. Las partes
principales de la gira de libro el ciclo mediante el examen de los siguientes:
¿Cómo arquitecturas de producen sistemas que sugieren los requisitos y las nuevas
capacidades organizativas.
En cualquier esfuerzo de desarrollo, los requisitos de hacen explícito algunos ² pero sólo
algunos ² de las propiedades que desee del sistema final. No todos los requisitos se
refieren directamente a esas propiedades; un proceso de desarrollo o el uso de una
herramienta concreta puede tener el mandato por ellos. Pero la especificación de requisitos
sólo comienza a contar la historia. Incumplimiento de otras restricciones puede impedir el
sistema tan problemático como si funcionó mal.
El problema subyacente, por supuesto, es que cada actor tiene diferentes preocupaciones y
objetivos, algunos de los cuales pueden ser contradictorios. Propiedades pueden ser
enumerados y discutidos, por supuesto, en un artefacto como un documento de requisitos.
Pero es un documento de requisitos rara que hace un buen trabajo de captura de requisitos
de calidad de un sistema en detalle comprobable. La realidad es que el arquitecto tiene a
menudo rellenar los espacios en blanco y mediar en los conflictos.
Una organización puede tener una inversión de negocio inmediata en ciertos activos, como
las arquitecturas actuales y los productos basados en ellos. La base de un proyecto de
desarrollo puede ser que el sistema propuesto es el siguiente en una secuencia de sistemas
similares, y las estimaciones de gastos asuman un alto grado de reutilización de activos.
Tal vez desee hacer una inversión a largo plazo de las empresas en una infraestructura para
perseguir objetivos estratégicos y puede ver el sistema propuesto como uno de los medios
de financiación y ampliar la infraestructura de una organización.
Si los arquitectos para un sistema han tenido buenos resultados utilizando un enfoque
arquitectónico particular, tales como objetos distribuidos o invocación implícita, lo más
probable es que tratarán de ese mismo enfoque en un nuevo esfuerzo de desarrollo. Por el
contrario, si su experiencia previa con este enfoque fue desastrosa, los arquitectos pueden
ser reacios a vuelva a intentarlo. Opciones de arquitectura también pueden provenir de un
arquitecto de la formación, la exposición a los patrones arquitectónicos con éxito o
exposición a los sistemas que han trabajado especialmente mal o particularmente bien. Los
arquitectos también podría experimentar con un patrón de arquitectura o extraídas de un
libro (como éste) o un curso de técnica.
Influencias en una arquitectura provienen de una amplia variedad de fuentes. Algunos son
sólo implícita, mientras que otros son explícitamente en los conflictos.
Casi nunca son las propiedades requeridas por el negocio y los objetivos de la organización
conscientemente entendidas, y mucho menos plenamente articuladas. De hecho, incluso los
requerimientos del cliente son rara vez documentados completamente, lo que significa que
no se haya resuelto el conflicto inevitable entre los objetivos de los diferentes interesados.
Sin embargo, los arquitectos deban conocer y comprender la naturaleza, origen y prioridad
de restricciones en el proyecto lo antes posible. Por lo tanto, deben identificar y participar
activamente a las partes interesadas para solicitar sus necesidades y expectativas. Sin tal
compromiso, las partes interesadas, en algún momento, exigirá que los arquitectos explican
por qué cada uno propuesto arquitectura es inaceptable, así retrasar el proyecto y los
trabajadores de ralentí. Principio de compromiso de las partes interesadas permite a los
arquitectos a comprender las limitaciones de la tarea, manejar las expectativas, negociar las
prioridades y tomar soluciones de compromiso. Arquitectura de revisiones (cubiertas en la
tercera parte) y creación de prototipos iterativo son dos medios para su realización.
Es evidente que los arquitectos necesitan más de sólo técnicas. Las explicaciones a los una
interesados u otra será necesarias en relación con las prioridades elegidas de diferentes
propiedades y por qué los interesados particulares no están teniendo todas sus expectativas
satisfechos. A continuación, para un arquitecto eficaz, habilidades de comunicación, la
negociación y la diplomacia son esenciales.
El mensaje principal de este libro es las relaciones entre los objetivos de negocio, los
requisitos del producto, la experiencia de arquitectos, arquitecturas y envió el formulario de
sistemas se repite un ciclo con comentarios que puede administrar un negocio. Un negocio
administra este ciclo para manejar el crecimiento, para ampliar su área de empresa y para
tomar ventaja de las inversiones anteriores en la arquitectura y la construcción del sistema.
Figura 1.4 muestra los bucles de retroalimentación. Algunos de los comentarios proviene de
la arquitectura, y algunos proviene del sistema construido de ella.
La arquitectura puede afectar a los requisitos del cliente para el sistema siguiente, dando al
cliente la oportunidad de recibir un sistema (basado en la misma arquitectura) de una
manera más confiable, oportuna y económica que si el sistema posterior fueron construidos
desde cero. El cliente puede estar dispuesto a relajar algunos requisitos para obtener estas
economías. Cubetas de software claramente ha afectado a los requisitos de las personas
mediante el suministro de soluciones que no se ajustan a sus necesidades precisas, pero en
su lugar son baratas y (en el mejor de los mundos posibles) de alta calidad. Las líneas de
productos tienen el mismo efecto en los clientes que no puede ser tan flexible con sus
normas. En el capítulo 15 (CelsuisTech, un caso de estudio en el desarrollo de la línea de
productos), le mostraremos cómo una arquitectura de la línea de producto causado los
clientes felizmente comprometer sus necesidades porque podrían obtener software de alta
calidad que se ajusten a sus necesidades básicas rápida, confiable y a un menor costo.
El proceso de creación del sistema de afectará de experiencia del arquitecto con sistemas
posteriores al agregar a la base de la experiencia corporativa. Un sistema que con éxito fue
construido alrededor de un bus de la herramienta o.Máquinas de estado finito netas o
encapsuladas generará sistemas similares, construidos en el futuro de la misma manera. Por
otra parte, arquitecturas que no tienen menos probabilidades de ser elegido para futuros
proyectos.
ACTIVIDADES DE LA ARQUITECTURA
Estas son todas cuestiones que deben involucrar a los arquitectos del sistema. No pueden
ser decididos exclusivamente por un arquitecto, pero si no es consultado un arquitecto en la
creación de las oportunidades empresariales, puede ser imposible de alcanzar los objetivos
de negocio.
Comprender los requerimientos
Hay una variedad de técnicas para obtener los requisitos de las partes interesadas. Por
ejemplo, el análisis orientado a objetos utiliza escenarios, o "casos de uso" encarnar
requisitos. Sistemas de seguridad crítica utilizan enfoques más rigurosos, como modelos de
máquina de estado finito o especificación formal de idiomas. En el capítulo 4 (atributos de
calidad de entendimiento), presentamos una colección de escenarios de atributo de calidad
que admiten la captura de requisitos de calidad para un sistema.
Otra técnica que nos ayuda a comprender requisitos es la creación de prototipos. Prototipos
pueden ayudar a modelar el comportamiento deseado, diseñar la interfaz de usuario o
analizar la utilización de los recursos. Esto ayuda a que el sistema "real" a los ojos de sus
grupos de interés y rápidamente puede catalizar las decisiones sobre el diseño del sistema y
el diseño de su interfaz de usuario.
En el libro de hito The Mythical Man, Fred Brooks sostiene con fuerza y con elocuencia
que la integridad conceptual es la clave para diseño de sistema de sonido y que sólo puede
ser contaba con integridad conceptual por un pequeño número de mentes que se unen para
diseñar la arquitectura del sistema. Capítulos 5 (logro de cualidades) y 7 (diseño de la
arquitectura) se muestra cómo crear una arquitectura para lograr su comportamiento y
requisitos de calidad.
La arquitectura de la comunicación
Para que la arquitectura es eficaz como la columna vertebral del diseño del proyecto, debe
comunicarse claramente y sin ambigüedades a todas las partes interesadas. Los
desarrolladores deben entender las asignaciones de trabajo requiere de ellos, encargados de
pruebas deben comprender la estructura de la tarea les impone, gestión debe comprender las
implicaciones de programación sugiere y así sucesivamente. Para este fin, documentación
la arquitectura de la debe ser informativo, sin ambigüedades y legible por muchas personas
con antecedentes de variada. Discutimos sobre la documentación de arquitecturas en el
capítulo 9 (documentar arquitecturas de Software).
Evaluación de una arquitectura para las cualidades que soporta es esencial para garantizar
que el sistema había construido a partir de que la arquitectura satisface las necesidades de
sus agentes interesados. Cada vez más extendido es técnicas de análisis para evaluar los
atributos de calidad que imparte una arquitectura a un sistema. Técnicas basadas en el
escenario de proporcionan uno de los enfoques más generales y eficaces para la evaluación
de una arquitectura. La metodología más madura se encuentra en el método de análisis de
equilibrio de arquitectura (ATAM) del capítulo 11, mientras que el método de análisis de
beneficio (CBAM) de costo del capítulo 12 proporciona el vínculo crítico a las
implicaciones económicas de las decisiones de la arquitectura.
Esta actividad se ocupa de mantener los desarrolladores fiel a las estructuras y protocolos
de interacción limitada por la arquitectura. Tener una arquitectura explícita y bien
comunicada es el primer paso para garantizar la conformidad de arquitectura. Es mejor
tener un entorno o infraestructura que ayuda activamente a los desarrolladores en la
creación y mantenimiento de la arquitectura (en lugar de sólo el código).
Por último, cuando se crea y se utiliza una arquitectura, entra en una fase de
mantenimiento. Una vigilancia constante es necesaria para asegurar que la arquitectura real
y su representación permanecen fieles a unos a otros durante esta fase. Aunque la labor en
esta esfera es comparativamente inmadura, ha habido intensa actividad en los últimos años.
Capítulo 10 (reconstrucción de arquitecturas de Software) va a presentar el estado actual de
recuperarse de una arquitectura de un sistema existente y garantizar que se ajusta a la
arquitectura especificada.
No obstante, existen reglas que se deben seguir al diseñar una arquitectura. Incumplimiento
de cualquiera de estos no significa automáticamente que la arquitectura se ser fatalmente
defectuosa, pero por lo menos sirva como una señal de advertencia que debe investigarse.
La arquitectura debe ser bien documentada, con al menos una vista estática y una vista
dinámica (que se explica en el capítulo 2), utilizando una notación de acuerdo en que todas
las partes interesadas puedan entender con un esfuerzo mínimo.
La arquitectura se distribuya a los actores del sistema, que deben participar activamente en
su examen.
La arquitectura debe ser analizada para medidas cuantitativas aplicables (por ejemplo,
rendimiento máximo) y formalmente evaluada para los atributos de calidad antes de que sea
demasiado tarde hacer cambios en ella.
Cada módulo debe tener una interfaz bien definida que encapsula u "oculta" aspectos
pueden cambiables (por ejemplo, aplicación estrategias y datos de estructura selecciones)
de otro software que utilice sus instalaciones. Estas interfaces deberían permitir que sus
equipos de desarrollo respectivas trabajar en gran medida de forma independiente.
Módulos que producen datos deberán ser independientes de módulos que consumen datos.
Esto tiende a aumentar modificabilidad debido a cambios a menudo se limitan a la
producción o el lado de consumo de los datos. Si se agregan datos nuevos, ambas partes
tendrán que cambiar, pero la separación permite el upgrade (incremental) puesta en escena.
Para los sistemas de procesamiento en paralelo, la arquitectura debe cuentan con procesos
bien definidos o tareas que no reflejan necesariamente la estructura de descomposición de
módulo. Es decir, de procesos pueden subprocesos a través de más de un módulo; un
módulo puede incluir procedimientos que se invocan como parte de más de un proceso (el
caso de estudio de A-7E del capítulo 3 es un ejemplo de emplear este principio).
Cada tarea o proceso se debe escribir para que su asignación a un procesador específico
puede modificarse fácilmente, tal vez incluso en tiempo de ejecución.
Como se examen los casos prácticos de este libro, con éxito, cada uno de los cuales
resuelve un problema arquitectónico desafiante, es útil ver cuántos de ellos seguido cada
una de estas reglas. Este conjunto de reglas no es ni completa ni absoluta, pero puede servir
como un guidepost para un arquitecto a partir de avanzar en un problema de diseño de la
arquitectura.
m Resumen
En este capítulo, nos mostró que la arquitectura es más que el resultado de los requisitos
funcionales para un sistema. También es el resultado de fondo del arquitecto, el entorno
técnico en las que vive el arquitecto y objetivos de negocio de la organización
patrocinadora. A su vez, la arquitectura influye el entorno que lo había generado mediante
la adición de su presencia para el entorno técnico y dando el negocio nuevas posibilidades
de marketing. Hemos introducido el ciclo de negocio de arquitectura como el motivo para
este libro, pero el lector debe tener en cuenta que la ABC como se describe aquí se
extenderá en capítulos posteriores.
Por último, nos propuso un conjunto de reglas que generalmente llevan a arquitecturas de
éxito.
Figura 2.1, tomado de una descripción del sistema para una simulación acústica submarina,
pretende describir ese "nivel superior arquitectura" del sistema y es precisamente el tipo de
diagrama que se muestra más a menudo para ayudar a explicar una arquitectura.
¿Exactamente qué podemos decir de ella?
Al parecer todos los elementos tienen algún tipo de relación entre sí, ya que el diagrama
está totalmente conectado.
? ¿Es esto una arquitectura? Asumiendo (como muchas definiciones) que la
arquitectura es un conjunto de componentes (de los cuales tenemos cuatro) y
conexiones entre ellos (también presente), este diagrama parece llenar el proyecto
de ley. ¿Sin embargo, incluso si aceptamos la definición más primitiva, lo podemos
no decir del diagrama?
? ¿Cuál es la naturaleza de los elementos? ¿Cuál es el significado de su separación?
¿Que ejecuten en procesadores separados? ¿Funcionan a veces? ¿Los elementos
constan de procesos, programas o ambos? ¿Que representan formas en las que se
dividirá el trabajo del proyecto, o que transmiten una sensación de separación de
tiempo de ejecución? ¿Son objetos, tareas, funciones, procesos, programas
distribuidos o algo más?
? ¿Cuáles son las responsabilidades de los elementos? ¿Qué es lo que hacen? ¿Cuál es
su función en el sistema?
? ¿Cuál es el significado de las conexiones? ¿Significan las conexiones que los
elementos comunican entre sí, controlan unos a otros, envían datos entre sí, utilizan
mutuamente, invocan entre sí, sincronizan entre sí, compartan algún secreto de
ocultación de información entre sí, o alguna combinación de estas u otras
relaciones? ¿Cuáles son los mecanismos para la comunicación? ¿Qué información
fluye a través de los mecanismos, cualquiera sea?
? ¿Cuál es el significado del diseño? ¿Por qué es CP en un nivel separado? ¿Exige a
los otros tres elementos, y los otros no se les permite llamarlo? ¿Contiene los otros
tres en un sentido de unidad de implementación? ¿O no hay simplemente espacio
para poner todos los cuatro elementos en la misma fila en el diagrama?
Hay que levantar estas preguntas porque si no sabemos con precisión cuáles son los
elementos y cómo cooperan para lograr el propósito del sistema, diagramas, como no son
mucho ayudan y pueden considerarse escepticismo.
[1] Es un ligero cambio de la primera edición. Allí los elementos primarios fueron llamados
"componentes", un término que desde entonces ha sido estrechamente asociado con el
movimiento de la ingeniería de software basado en componentes, tomando un sabor
decididamente de tiempo de ejecución. "Elemento" fue elegido aquí para transmitir algo
más general.
Propiedades "Visibles externamente" son estos supuestos otros elementos pueden hacer de
un elemento, como sus servicios prestados, características de rendimiento, de fallas de
manipulación, uso de recursos compartidos y así sucesivamente. Echemos un vistazo a
algunas de las implicaciones de esta definición con más detalle.
En segundo lugar, la definición deja en clara que los sistemas pueden y lo componen más
de una estructura y que nadie la estructura puede irrefutablemente dicen ser la arquitectura.
Por ejemplo, en que todos los proyectos no triviales se dividen en unidades de ejecución;
Estas unidades tienen responsabilidades específicas y con frecuencia son la base de las
asignaciones de trabajo para la programación de equipos. Este tipo de elemento compone
de programas y datos que se puede llamar a software en otras unidades de aplicación o
acceso y programas y datos que son privados. En grandes proyectos, estos elementos se
subdividen casi seguro para realizar asignaciones a subequipos. Este es un tipo de
estructura que se utiliza para describir un sistema. Es muy estática que se centra en la forma
de la funcionalidad del sistema es dividida y asignada a los equipos de implementación.
Otras estructuras son mucho más centradas en el camino que los elementos interactúan
entre sí en tiempo de ejecución para llevar a cabo la función del sistema. Supongamos que
el sistema es construido como un conjunto de procesos paralelos. Los procesos que se darán
en tiempo de ejecución, los programas en las distintas unidades de aplicación se ha descrito
anteriormente que se encadenan secuencialmente a juntos forma cada proceso, y las
relaciones de sincronización entre los procesos constituyen otro tipo de estructura que se
utiliza a menudo para describir un sistema.
¿Cualquiera de estas estructuras son solo la arquitectura? No, aunque todos ellos transmiten
información arquitectónica. La arquitectura consta de estas estructuras, así como muchos
otros. Este ejemplo muestra que puesto que la arquitectura puede incluir más de un tipo de
estructura, hay más de un tipo de elemento (por ejemplo, la unidad de ejecución y
procesos), más de un tipo de interacción entre elementos (por ejemplo, Subdivisión y
sincronización) y aún más de un contexto (por ejemplo, el tiempo de desarrollo frente a
tiempo de ejecución). Por la intención, la definición no especifica cuáles son los elementos
de la arquitectura y las relaciones. ¿Es un objeto de un elemento de software? ¿Un proceso?
¿Una biblioteca? ¿Una base de datos? ¿Un producto comercial? Puede ser cualquiera de
estas cosas y más.
En tercer lugar, la definición implica que cada sistema informático con el software tiene
una arquitectura de software, ya que cada sistema puede demostrar que comprenden los
elementos y las relaciones entre ellos. En el caso más trivial, un sistema de sí mismo es un
único elemento ² poco interesante y probablemente nonuseful pero una arquitectura sin
embargo. A pesar de que cada sistema tiene una arquitectura, no significa necesariamente
que la arquitectura se conoce a nadie. Quizás todas las personas que diseñó el sistema han
quedado atrás, ha desaparecido la documentación (o nunca fue producido), el código fuente
se ha perdido (o nunca se entregó), y todo lo que tenemos es el código binario de ejecución.
Esto revela la diferencia entre la arquitectura de un sistema y la representación de esa
arquitectura. Por desgracia, una arquitectura puede existir independientemente de su
descripción o especificación, que plantea la importancia de la documentación de la
arquitectura (que se describe en el capítulo 9) y la reconstrucción de la arquitectura (que se
describen en el capítulo 10).
En cuarto lugar, el comportamiento de cada elemento es parte de la arquitectura, en la
medida que el comportamiento puede ser observado o discernir desde el punto de vista de
otro elemento. Este tipo de comportamiento es lo que permite que los elementos que
interactúan entre sí, que claramente es parte de la arquitectura. Esta es otra razón que los
dibujos de líneas y cuadro que se pasan como arquitecturas no son las arquitecturas en
absoluto. Son simplemente cuadro de líneas y dibujos ² o, para ser más benéficas, que
sirven como información sobre el proporcionar más información que explica lo que
realmente hacen los elementos que se muestran. Cuando observamos los nombres de los
cuadros (base de datos, interfaz gráfica de usuario, ejecutivo, etc.), un lector puede
imaginar la funcionalidad y el comportamiento de los elementos correspondientes. Esta
imagen mental acerca a una arquitectura, pero surge de la mente del observador y se basa
en información que no está presente. No queremos decir que el comportamiento exacto y el
rendimiento de cada elemento deben estar documentadas en todas las circunstancias; Sin
embargo, en la medida en que comportamiento de un elemento influye en cómo otro
elemento deben escribirse en interactuar con él o influye en la aceptabilidad del sistema en
su conjunto, este comportamiento es parte de la arquitectura de software.
Uno de los aspectos más útiles de los patrones es que exhiben los atributos de calidad
conocidos. Por eso, el arquitecto elige un modelo concreto y no uno al azar. Algunos
patrones representan soluciones conocidas a problemas de rendimiento, otros prestan bien a
los sistemas de alta seguridad, aún otros se han utilizado con éxito en sistemas de alta
disponibilidad. Elegir un modelo arquitectónico es a menudo la primera opción de grandes
del diseño del arquitecto.
Un modelo de referencia es una división de funcionalidad junto con el flujo de datos entre
las piezas. Un modelo de referencia es un estándar de la descomposición de un problema
conocido en partes que cooperativamente resolver el problema. A partir de experiencia,
modelos de referencia son una característica de dominios maduros. ¿Puede que usted
nombre las partes estándar de un compilador o un sistema de gestión de base de datos?
¿Puede explicar en términos generales cómo las partes trabajan juntos para lograr su
propósito colectivo? Si es así, es porque ha aprendido un modelo de referencia de estas
aplicaciones.
Una vez la arquitectura ha sido acordada, a continuación, es casi imposible, por razones de
gestión y de negocios, para modificarlo. Se trata de un argumento (entre muchos) para la
realización de una evaluación completa antes de la congelación de la arquitectura de
software para un sistema de gran tamaño.
Si usted cree que será necesario escalabilidad en su sistema, usted tiene que localizar
cuidadosamente la utilización de recursos para facilitar la introducción de reemplazos de
mayor capacidad.
Si desea que los elementos del sistema debe ser reutilizables en otros sistemas, debe
restringir el acoplamiento baja-frecuencia para que al extraer un elemento no sale con
demasiados archivos adjuntos a su entorno actual para ser útil.
Las estrategias para estos y otros atributos de calidad son supremamente arquitectónicas. Es
importante comprender, sin embargo, que la arquitectura por sí sola no puede garantizar la
funcionalidad o la calidad. Pobres decisiones de diseño o implementación aguas abajo
siempre pueden socavar una adecuada arquitectónica
Decidir cuando cambios son esenciales, determinar qué trazados de cambio tienen el menor
riesgo, evaluar las consecuencias de los cambios propuestos y arbitrar secuencias y las
prioridades para los cambios solicitados todos requieren amplios conocimientos sobre
relaciones, rendimiento y comportamientos de los elementos de software de sistema. Estos
son en la descripción del trabajo de un arquitecto. Razonamiento acerca de la arquitectura
puede proporcionar la información necesaria para tomar decisiones acerca de los cambios
propuestos.
Un caso especial de tener el ejecutable del sistema temprano es que los posibles problemas
de rendimiento pueden identificarse a principios de ciclo de vida del producto.
Los sistemas pueden construirse usando elementos grandes, desarrollados desde el exterior
Considerando que los paradigmas de software anteriores se centraron en la programación
como la principal actividad, con el progreso que se mide en líneas de código, a menudo en
desarrollo basado en la arquitectura se centra en componer o montaje de elementos que
están probables que se han desarrollado por separado, incluso independientemente, unos de
otros. Esta composición es posible porque la arquitectura define los elementos que pueden
ser incorporados en el sistema. Limita el posible de los reemplazos (o adiciones) de acuerdo
con cómo interactúan con su medio ambiente, cómo recibir y renunciar al control, qué datos
que consumen y productos, cómo acceden a los datos y qué protocolos que se utilizan para
la comunicación y el intercambio de recursos.
Propiedades del diseño de software siguen desde la elección del patrón arquitectónico.
Patrones que son más convenientes para un problema particular deberían mejorar la
aplicación de la solución de diseño resultante, tal vez, haciéndolo más fácil arbitrar el
conflicto de las limitaciones de diseño, mediante el aumento de conocimientos sobre los
contextos de diseño muy poco, o ayudando a superficies incoherencias en las
especificaciones de requisitos.
Por lo que es con el software. Los sistemas modernos son más de lo suficientemente
complejos como para que sea difícil captarles todos a la vez. En su lugar, restringimos
nuestra atención en un momento dado a uno o un pequeño número de las estructuras del
sistema software. Para comunicarse de manera significativa sobre una arquitectura,
debemos dejar claro qué estructura o estructuras que estamos debatiendo en este momento:
vista que estamos llevando a cabo de la arquitectura.
? Módulo de estructuras. Aquí los elementos son módulos, que son las unidades de
ejecución. Módulos representan una forma basada en código de considerar el
sistema. Se asignan a las áreas de responsabilidad funcional. Hay menos énfasis en
cómo el software resultante manifiesta en tiempo de ejecución. Módulo de
estructuras nos permiten responder a preguntas como ¿qué es la responsabilidad
funcional asignada a cada módulo? ¿Qué otros elementos de software de un módulo
puede utilizar? ¿Qué otro software ¿utiliza realmente? ¿Qué módulos están
relacionadas con otros módulos por generalización o especialización (es decir,
herencia) relaciones?
? Estructuras de componente y el conector. Aquí los elementos son componentes de
tiempo de ejecución (que son las principales unidades de computación) y conectores
(que son los vehículos de comunicación entre componentes). ¿Estructuras de
componente y el conector ayudar a responder preguntas tales como lo que son los
principales componentes de la ejecución y cómo interactúan? ¿Cuáles son los
principales datos compartidos almacena? ¿Qué partes del sistema se replican?
¿Cómo does progresan los datos a través del sistema? ¿Qué partes del sistema
pueden ejecutar en paralelo? ¿Cómo puede cambiar la estructura del sistema como
se ejecuta?
? Estructuras de asignación. Estructuras de asignación muestran la relación entre los
elementos de software y de los elementos en uno o varios entornos externos en el
que se crea y se ejecuta el software. Responden a preguntas como ¿qué procesador
cada elemento de software ejecutar en? ¿En qué archivos está construyendo cada
elemento almacenado durante el desarrollo, pruebas y sistema? ¿Qué es la
asignación de elementos de software para equipos de desarrollo?
Estas tres estructuras corresponden a los tres tipos generales de decisión que implica
el diseño de la arquitectura:
? ¿Cómo es el sistema estructurarse como un conjunto de unidades de código
(módulos)?
? ¿Cómo es el sistema estructurarse como un conjunto de elementos que tienen
interacciones (conectores) y comportamiento de tiempo de ejecución
(componentes)?
? ¿Cómo es el sistema que se refieren a las estructuras nonsoftware en su entorno (es
decir, CPUs, sistemas de archivos, redes, equipos de desarrollo, etc.)?
ESTRUCTURAS DE SOFTWARE
En la figura 2.3 se muestran algunas de las estructuras de software más comunes y útil.
Éstas se describen en las secciones siguientes.
Módulo
Las siguientes las estructuras basadas en el módulo.
? Descomposiciónm Las unidades son módulos relacionados entre sí por la relación
"es un submódulo de", que muestra cómo más grandes módulos se descomponen en
recursivamente de los más pequeño hasta que estén lo suficientemente pequeños
para ser fácil de entender. Los módulos de esta estructura representan un punto de
partida común para el diseño, como el arquitecto enumera lo que tendrá que hacer
las unidades de software y asigna cada elemento a un módulo para el posterior
diseño (más detallado) y eventual aplicación. Módulos a menudo tienen asociados
productos (es decir, las especificaciones de interfaz, código, probar planes, etc..). La
estructura de descomposición proporciona una gran parte de la modificabilidad del
sistema, asegurándose de que probable que los cambios son de la competencia de
como máximo unos pequeños módulos. A menudo se utiliza como base para de
organización el desarrollo del proyecto, incluyendo la estructura de la
documentación y sus planes de integración y prueba. Las unidades de esta estructura
a menudo tienen nombres específicos de la organización. Ciertas normas del
Departamento de defensa de Estados Unidos, por ejemplo, definen elementos de
configuración de Software de ordenador (CSCIs) y componentes de Software de
ordenador (células madre cancerosas), que son unidades de descomposición
modular. En el capítulo 15, vamos a ver grupos de funciones de sistema y funciones
del sistema como las unidades de descomposición.
? Uso. Las unidades de esta estructura importante pero se pasa por alto también son
módulos, o (en circunstancias cuando lo justifique un grano más fino)
procedimientos o recursos en las interfaces de módulos. Las unidades están
relacionadas por la relación de usos. Una unidad utiliza otro si la corrección de la
primera requiere la presencia de una versión correcta (en lugar de un stub) de la
segunda. La estructura de usos se utiliza para el ingeniero de sistemas que pueden
ser fácilmente extendido para agregar funcionalidad o subconjuntos funcionales
útiles desde el que se pueden extraer fácilmente. La capacidad fácilmente
subconjunto un sistema de trabajo permite desarrollo incremental, una disciplina de
compilación potente que se tratarán más detalladamente en el capítulo 7.
? En capasm Cuando las relaciones de usos de esta estructura son cuidadosamente
controladas en forma particular, surge un sistema de capas, en el que una capa es un
conjunto coherente de funcionalidad relacionada. En una estructura estrictamente en
capas, la capa n sólo puede usar los servicios de capa n-1. Muchas variaciones de
esto (y una disminución de esta restricción estructural) se producen en la práctica,
sin embargo. Las capas son a menudo diseñadas como abstracciones (máquinas
virtuales) que se ocultan los detalles de implementación por debajo de las capas
superiores, engendrando portabilidad. Vamos a ver las capas en los estudios de caso
de los capítulos 3, 13 y 15.
? Clase, o generalizaciónm Las unidades de módulo en esta estructura se denominan
clases. La relación es "hereda-de" o "es-an-instancia-." Esta vista es compatible con
el razonamiento acerca de las colecciones de un comportamiento similar o
capacidad (es decir, las clases que heredan de otras clases de) y parametrizadas
diferencias que son capturadas por subclasificación. La estructura de clase nos
permite razonar sobre la reutilización y la adición incremental de funcionalidad.
Componente y el conector
Estas estructuras incluyen lo siguiente.
? Proceso, o procesos de comunicaciónm Al igual que todas las estructuras de
componente y el conector, éste es ortogonal a las estructuras basadas en el módulo y
se ocupa de los aspectos dinámicos de un sistema en ejecución. Las unidades de
aquí son procesos o hilos que están conectados entre sí por las operaciones de
comunicación, sincronización y exclusión. La relación en esto (y en todas las
estructuras de componente y el conector) es adjunto, que muestra cómo los
componentes y conectores están enganchados juntos. La estructura del proceso es
importante para ayudar a ingeniero de disponibilidad y rendimiento de ejecución de
un sistema.
? Concurrenciam Esta estructura de componente y el conector permite el arquitecto
determinar oportunidades de paralelismo y las ubicaciones donde se produzcan
contención de recursos. Las unidades son componentes y los conectores son "hilos
de lógicas". Un subproceso lógico es una secuencia de computación que se puede
asignar a un subproceso físico independiente más adelante en el proceso de diseño.
La estructura de la concurrencia se utiliza principios de diseño para identificar los
requisitos para la gestión de las cuestiones relacionadas con la ejecución simultánea.
? Datos compartidos, o repositoriom Esta estructura consta de componentes y
conectores que creación, almacenan y acceder a datos persistentes. Si el sistema está
estructurado, de hecho, alrededor de uno o más depósitos de datos compartidos, esta
estructura es una buena para iluminar. Muestra cómo los datos es producidos y
consumidos por elementos de software de tiempo de ejecución, y se puede utilizar
para garantizar el buen rendimiento y la integridad de los datos.
? Cliente y el servidor. Si el sistema está construido como un grupo de cooperantes
de clientes y servidores, esto es una buena estructura de componente y el conector
para iluminar. Los componentes son los clientes y servidores, y los conectores son
protocolos y mensajes que comparten para llevar a cabo la labor del sistema. Esto es
útil para la separación de preocupaciones (con soporte modificabilidad), para la
distribución física y para (soporte de tiempo de ejecución rendimiento) de equilibrio
de carga.
Asignación
Las siguientes estructuras de asignación.
? Desplieguem La estructura de implementación muestra cómo el software se asigna a
los elementos de procesamiento de hardware y de la comunicación. Los elementos
son rutas de comunicación, entidades (procesadores) de hardware y software
(generalmente un proceso desde una vista de componente y el conector). Las
relaciones son "asignado a," que muestra en qué unidades físicos residen los
elementos de software, y "migra-a," si la asignación es dinámica. Esta vista permite
a un ingeniero para razonar sobre la integridad de los datos, rendimiento,
disponibilidad y seguridad. Es de particular interés en sistemas distribuidos o
paralelos.
? Implementaciónm Esta estructura muestra cómo se asignan los elementos de
software (por lo general módulos) para el archivo structure(s) en el desarrollo,
integración o entornos de control de la configuración del sistema. Esto es crítico
para la gestión de las actividades de desarrollo y procesos de construcción.
? Asignación de trabajom Esta estructura asigna la responsabilidad de la aplicación y
la integración de los módulos a los equipos de desarrollo adecuadas. Disponer de
una estructura de asignación de trabajo como parte de la arquitectura hace claro que
la decisión sobre quién hace el trabajo tiene arquitectónica, así como las
consecuencias de la gestión. El arquitecto sabrá la experiencia necesaria en cada
equipo. También, en proyectos de gran desarrollo distribuido multi-de origen, la
estructura de asignación de trabajo es el medio para llamadas unidades de
compatibilidad funcional y asignarlos a un solo equipo, en lugar de haberlos
implementado todas las personas que las necesita.
? Lógicam Los elementos son "abstracciones claves," que se manifiestan en el mundo
orientado a objetos como objetos o clases de objetos. Esta es una vista de módulo.
? Procesom Este punto de vista aborda la concurrencia y distribución de funcionalidad.
Es una vista de componente y el conector.
? Desarrollom Esta vista muestra la organización de los módulos de software,
bibliotecas, subsistemas y unidades de desarrollo. Es una vista de asignación,
software de asignación para el entorno de desarrollo.
? Físicam Este punto de vista mapas de otros elementos en nodos de procesamiento y
comunicación y también es una vista de asignación (que otros llaman la vista de la
implementación).
Al mismo tiempo esencialmente que Krutchen publicó su trabajo, Soni, Nord y Hofmeister
[Soni 95] publicó un papel influyente en la que informaron de las estructuras puestas en uso
en muchos proyectos por los arquitectos de software en su organización. Sus opiniones
fueron conceptuales, módulo de interconexión, la ejecución y código. Una vez más, estos se
asignan claramente a los modelos de módulo, componente y el conector y asignación.
Seguido de otros autores, y la lista de las estructuras disponibles crece cada vez más rica.
Por supuesto, no debe utilizar todos ellos a pesar de que la mayoría de ellos de hecho va a
existir en el sistema que se va a crear. En cambio, consideran que una de las obligaciones
del arquitecto es comprender cómo las diversas estructuras conducen a atributos de calidad
y, a continuación, elija los que mejor le proporcionará esos atributos. Este punto se tratará
con mayor detalle en el capítulo 9, sobre representación arquitectónica.
2m Resumen
Este capítulo define la arquitectura de software y también introdujo los conceptos
conexos de modelo de referencia, la arquitectura de referencia y patrón arquitectónico.
Hemos explicado por qué arquitectura es un concepto fundamentalmente útil en ingeniería
de software, en términos de las percepciones de principios proporciona en el sistema, la
comunicación permite que entre las partes interesadas y el valor que se proporciona como
un activo reutilizable. Todos estos temas se ampliará en los capítulos siguientes.
Nuestra definición de la arquitectura deja claro que los sistemas comprenden muchas
estructuras. Mostramos varios de los más comúnmente utilizan en las estructuras y
explicaron cómo cada uno sirve como una ingeniería aprovechar el punto en el proceso de
diseño.
Página Web de arquitectura del Instituto de ingeniería de Software software [SEI ATA]
proporciona una amplia variedad de recursos de arquitectura de software y de vínculos,
incluyendo una amplia colección de definiciones del término.
Paulish [Paulish 02] trata sobre la relación entre el costo y la programación a la existencia
de una arquitectura.
Capítulo 3m Sistema de aviónica de A-7E: un estudio de caso en el uso de estructuras
arquitectónicas
Estructura de tiempo de ejecución de un programa orientado a menudo tiene poco que ver
con su estructura de código. La estructura de código está congelada en tiempo de
compilación; consta de las clases en las relaciones de herencia fijo. Estructura de tiempo de
ejecución de un programa consiste en rápida evolución de las redes de comunicación de
objetos. De hecho, las dos estructuras son en gran medida independientes. Tratando de
[comprender] una de la otra es como tratar de comprender la dinámica de los ecosistemas
de la vida de la taxonomía estática de plantas y animales y viceversa.
Este capítulo presentará un estudio de caso de una arquitectura diseñada por la ingeniería y
la especificación de tres estructuras arquitectónicas específicas: módulo de descomposición,
usos y proceso. Vamos a ver cómo estas estructuras complementan mutuamente para
proporcionar una imagen completa de cómo funciona el sistema, y vamos a ver cómo
ciertas cualidades del sistema se ven afectados por cada uno. La tabla 3.1 se resumen las
tres estructuras que vamos a debatir.
Los arquitectos incluyen uno de los autores de este libro y uno de los líderes en el
desarrollo de principios de ingeniería de software, pero los arquitectos tenían poca
experiencia en el dominio de la aviónica, aunque tienen acceso a otros sistemas de aviónica
y a expertos en aviónica. No hubo ningún compilador disponibles para la plataforma de
destino.
? Un sondeo de aire que las medidas de presión barométrica y velocidad del aire.
? Un radar con visión de futuro que puede tener como objetivo en acimut y elevación
y devuelve el rango de línea recta hasta el punto sobre el terreno en el que se indica.
? Un radar Doppler que informa de la velocidad y el ángulo de desviación (la
diferencia entre la dirección en la que es puntiaguda nariz de la aeronave y la
dirección en la que se mueve sobre el terreno).
? Un conjunto de medición inercial (IMS) que informa aceleraciones a lo largo de
cada uno de los tres ejes ortogonales. El software debe leer estas aceleraciones de
manera oportuna e integrarlos con el tiempo para obtener velocidades, y deben
integrar las velocidades con el tiempo para obtener la posición actual del avión en el
mundo físico. También debe administrar la alineación y compensar por la deriva de
los ejes para mantenerlos al norte, señaló este y vertical, respectivamente, para que
las mediciones con exactitud corresponden a marco de referencia la aeronave.
? Una interfaz al sistema de medición inercial del portaaviones, a través del cual el
avión puede calcular su posición actual, mientras que a bordo del buque.
? Sensores que informan que de seis bajo las alas bomba racks de la A-7E mantienen
las armas y que de más de 100 tipos de armas en el repertorio de la aeronave son. El
software almacena grandes tablas de los parámetros para cada tipo de arma, que
dejarlo a calcular cómo esa arma se mueve a través de la atmósfera en una
trayectoria balística de caída libre.
? Un altímetro de radar que mide la distancia al suelo.
? Una pantalla de mapa que siempre muestra la ubicación actual de la aeronave
moviendo una tira de película de iluminación posterior como viaja en el avión. El
piloto puede elegir orientación del mapa para que la parte superior corresponde que
el título actual o true hacia el norte.
? Una pantalla de mano a mano: un dispositivo que proyecta la información digital y
artístico sobre una ventana transparente entre el piloto y el parabrisas. Como
posición de cabeza del piloto asume fijo y conocido, la pantalla puede utilizarse
para superponer información sobre el mundo real, tales como la posición de destino
o una línea que muestra la dirección de la aeronave del viaje.
? Un teclado y un trío de windows de la pequeña pantalla alfanumérica. Con el
teclado, el piloto puede solicitar aproximadamente cien tipos de información digital
desde el equipo. Un banco de switches en el panel de control de equipo permite el
piloto elegir la navegación deseada y modalidades de entrega de armas.
? Varias luces y diales y una señal acústica.
? Incrustación en su latitud y la longitud mediante el teclado
? Torre del mapa con una palanca de mando hasta sus coordenadas son bajo el punto
de mira del centro y, a continuación, "designándolo" al presionar un botón especial
en la palanca
?
? Con el objetivo del radar con visión de futuro al punto y designándolo
? Torre un símbolo especial en la pantalla de la mano a mano hasta que superpone el
punto de interés sobre el terreno y, a continuación, designándolo
El software proporciona, a continuación, información de navegación (la dirección, la
distancia, la hora de ir) y señales direccionales en la pantalla de mano a mano que tomar el
avión para la ubicación designada.
El piloto puede elegir entre más de dos docenas modos de navegación, basados en qué
sensores son más confiables en las condiciones del momento. El software tiene por lo
menos cinco formas directas e indirectas para calcular la altura actual del avión, incluyendo
un esquema trigonométrico utilizando el ángulo de rango y elevación del radar con visión
de futuro como componentes de un triángulo (véase la figura 3.3). Hay más de 20 modos de
entrega de armas, todos exigentes en términos de los cálculos en tiempo real (repetidos 25
veces por segundo) sea necesario para mantener el A-7E del bombardeo de precisión.
A-7Es fueron retirados del servicio activo en la década de 1980, pero combatientes de la
generación actual cuentan con una pantalla de mano a mano y modos de entrega y la
navegación de armas que muestran una fuertes influencian del corsario.
? Utiliza, una estructura de módulos
? Proceso, una estructura de componentes y conectores
? A su vez se tratará con cada uno de ellos.
ESTRUCTURA DE DESCOMPOSICIÓN
A menos que un programa es lo suficientemente pequeño para ser producida por un
programador único, debemos pensar cómo el trabajo se divide en unidades que pueden ser
implementadas por separado y el modo en que se relacionarán los módulos. La unidad de la
estructura de descomposición es, por supuesto, el módulo. Un módulo puede considerarse
como la definición de un grupo de procedimientos, algunos públicos y algunos privados,
además de un conjunto de estructuras de datos privados. La relación entre módulos en la
estructura de descomposición es "es-a-submódulo-de" o "acciones-a-secreto-con."
Antes de 1977, rendimiento era el objetivo fundamental de los sistemas incrustados (como
muchos otros). El objetivo de los diseñadores de A-7E era equilibrar el rendimiento con
modificabilidad y demostrar que era posible lograr modificabilidad sin comprometer el
rendimiento.
Ocultación de información
La descomposición de módulo de A-7E se basa en ocultar información. Una táctica de
arquitectura revisará en el capítulo 5, ocultación de obras por encapsular los detalles del
sistema que puedan cambiar de forma independiente en diferentes módulos de información.
La interfaz de un módulo revela sólo aquellos aspectos que considera poco probable que el
cambio; los detalles ocultados por la interfaz del módulo son secretos del módulo.
Por ejemplo, si un dispositivo como un sensor de altitud del avión es probable que sustituir
durante la vida de un programa de aviónica, el principio de ocultación de información hace
que los detalles de interactuar con el dispositivo el secreto de un módulo. La interfaz con el
módulo proporciona una abstracción del sensor, consistente en tal vez de un solo programa
que devuelve el valor más reciente medido por el sensor, porque todos los sensores de
reemplazo probablemente compartan esta capacidad. Si alguna vez se sustituye el sensor,
sólo las partes internas de ese módulo deben cambiar; el resto del software no se ve
afectado.
Ocultación de información se aplica al exigir que los módulos interactúan sólo a través de
un conjunto definido de instalaciones públicas ² sus interfaces. Cada módulo proporciona
un conjunto de procedimientos de acceso, que puede ser llamado por cualquier otro módulo
en el sistema. Los procedimientos de acceso proporcionan los medios sólo entre para
interactuar con la información encapsulada en un módulo.
Por supuesto, esto es la filosofía de diseño basado en objetos, con una diferencia clave:
mientras que los objetos son creados a partir de los objetos físicos inherentes a la aplicación
o dibuja de ideas intuitivas acerca del sistema, información-ocultar módulos se derivan
mediante los cambios al software que se percepción como probable que durante tiempo de
vida del sistema de catalogación.
? Estructura de cada módulo debería ser suficientemente simple ser entendido
plenamente.
? Es posible cambiar la implementación de un módulo sin conocimiento de la
aplicación de otros módulos y sin afectar el comportamiento de los demás módulos.
? La facilidad de hacer un cambio en el diseño debe tener una relación razonable con
la probabilidad de que el cambio que se necesita; es posible realizar cambios
probablemente sin cambiar cualquier módulo de interfaz; menos probabilidades de
cambios pueden implicar cambios en la interfaz pero sólo para módulos que son
pequeños y no utilizado. Sólo muy poco probable que los cambios deben exigir
cambios en las interfaces de módulos ampliamente utilizados.
? Es posible hacer un software importante cambio como un conjunto de cambios
independientes de módulos individuales (es decir, excepto para los cambios en la
interfaz, los programadores de cambiar los módulos individuales no es necesario
para comunicarse). Si no se revisan las interfaces de módulo, es posible ejecutar y
probar cualquier combinación de viejas y nuevas versiones del módulo.
Tabla 3.2. ¿Cómo la estructura de descomposición del módulo de A-7E logra objetivos de
calidad
La Guía del módulo pasa a explicar cómo los conflictos entre estas categorías (por ejemplo,
es una parte de algoritmo requiere del comportamiento o una decisión de software?) son
arbitrado por una especificación de requerimientos completa y sin ambigüedades y, a
continuación, se proporciona la descomposición de segundo nivel. Las secciones siguientes
describen cómo se descompone el módulo de la decisión de Software.
Los secretos del módulo de tipo de datos de aplicación son la representación de datos
utilizados en las variables y los procedimientos utilizados para implementar operaciones en
esas variables. Unidades de medida (por ejemplo, pies, segundos o radianes) forman parte
de la representación y están ocultos. En su caso, los módulos ofrecen a los operadores de
conversión que ofrecen o aceptan valores reales en las unidades especificadas.
El banquero de datos proporciona valores para todos los datos de ese informe sobre el
estado interno de un módulo o sobre el estado de la aeronave. El banquero de datos también
señales de eventos que implican cambios en los valores que suministra. El banquero de
datos se utiliza como consumidores y los productores son módulos separados, incluso
cuando son ambos submódulos de un módulo más grande. El banquero de datos no se
utiliza si los consumidores requieren a miembros específicos de la secuencia de valores
calculados por el productor o un valor producido es únicamente una función de los valores
de parámetros de entrada para el procedimiento de producción, tales como sin(x).[1]
La Guía de módulo describe una tercera-(y en algunos casos una cuarta-) descomposición
nivel, pero que se ha omitido aquí. Figura 3.4 muestra la estructura de descomposición de la
arquitectura de A-7E hasta el tercer nivel. Tenga en cuenta que muchos de los módulos de
interfaz de dispositivo tienen los mismos nombres que los módulos del controlador de
función. La diferencia es que los módulos de interfaz de dispositivo se programan con
conocimiento de la manera en que el software se interrelaciona con los dispositivos; los
módulos del controlador de función se programan con el conocimiento de los valores
necesarios para ser calculado y enviado a dichos dispositivos. Esto sugiere otra relación
arquitectónico que vamos a explorar poco: cómo el software en estos módulos coopera para
realizar sus trabajos.
En el capítulo anterior, nos comentó que arquitecturas de servir como el modelo para un
proyecto en desarrollo, así como para el software. En el caso de la arquitectura de A-7E,
esta estructura de descomposición del módulo de segundo nivel se convirtió en consagrados
en muchas formas: documentación de diseño, archivos de configuración-controlada en
línea, planes de pruebas, programación de equipos, procedimientos de examen y
programación de proyectos y hitos todos lo usó como su unidad de referencia.
ESTRUCTURA DE USOS
La segunda estructura más importante de interés en la arquitectura de A-7E es la estructura
de usos. La estructura de descomposición lleva a cabo ninguna información sobre la
ejecución del software; podría hacer una suposición educada sobre cómo dos
procedimientos en diferentes módulos interactuar en tiempo de ejecución, pero esta
información no es de hecho en la descomposición del módulo. En su lugar, la estructura de
usos suministra la imagen autoritaria de cómo interactúa el software.
La relación de usos
El concepto detrás de la estructura de usos es la relación de usos. Procedimiento a se dice
que utilice el procedimiento b si un procedimiento funcionan correctamente b debe estar
presente para el procedimiento a para atender sus necesidades. En la práctica, esta relación
es similar, pero no exactamente lo mismo que la relación de llamadas. Procedimiento a
usualmente llama procedimiento b porque la usa. Sin embargo, aquí tiene dos casos donde
los usos y las llamadas son diferentes:
Procedimiento b realiza su función sin que se llama al procedimiento A, pero un usos de los
resultados. Los resultados podrían ser un almacén de datos actualizados b deja tras de sí. O
b puede ser un manejador de interrupción que a supone que existe y funciones
correctamente. A usa, pero no exige, B.
Conocer los requisitos de calidad, por supuesto, sólo proporciona un objetivo para el
arquitecto. En el capítulo 5, enumeramos las herramientas (tácticas y patrones) en el kit del
arquitecto que se utilizan para alcanzar los atributos de calidad. Alta disponibilidad, por
ejemplo, depende de tener alguna forma de redundancia en datos o código, y esta
redundancia genera consideraciones adicionales para el arquitecto (por ejemplo, para
asegurar la sincronización entre las repeticiones).
Una vez que ha diseñado una arquitectura, deben documentarse. Se trata de una cuestión de
documentar en primer lugar las opiniones pertinentes y, a continuación, el material que se
extiende más allá de cualquier vista determinada. Capítulo 9 detalla cómo documentar una
arquitectura.
Nota: Felix Bachmann y Mark Klein son altos miembros del personal técnico en el Instituto
de ingeniería de Software.
"Cheshire-gato," [Alice] comenzó, más bien tímidamente « "Podría decirme, por favor, de
qué manera debería ir desde aquí?" "Eso depende mucho en la que desee ir," dijo el gato.
"Oh, no sé mucho cuidado donde ²" dijo Alicia. A continuación, no importa que forma
vaya, "dijo el gato. "² siempre y cuando llegar a alguna parte," dijo Alicia. "¡ Oh, estás
seguro hacer eso," dijo el gato, "si sólo caminas durante bastante tiempo."
Aquí, nuestro enfoque es en la comprensión de cómo expresar las cualidades que queremos
nuestra arquitectura para proporcionar al sistema o sistemas que estamos construyendo
desde él. Comenzamos el debate sobre la relación entre los atributos de calidad y
arquitectura de software mirando de cerca de atributos de calidad. ¿Qué significa decir que
un sistema es modificable o fiable o seguro? En este capítulo se caracteriza estos atributos y
explica cómo puede utilizarse esta caracterización para expresar los requisitos de calidad
para un sistema.
m La funcionalidad y la arquitectura
Atributos de funcionalidad y calidad son ortogonales. Esta Declaración suena más bien
negrita en primer lugar, pero cuando usted pensar en ello te das cuenta de que no puede ser
de otra manera. Si no fueron ortogonales atributos de calidad y funcionalidad, la elección
de la función dictaría el nivel de seguridad o el rendimiento o la disponibilidad o la
facilidad de uso. Claramente sin embargo, es posible elegir independientemente un nivel
deseado de cada uno. Ahora, eso no quiere decir que cualquier nivel de cualquier atributo
de calidad es alcanzable con cualquier función. Manipulación de imágenes gráficas
complejas o una base de datos enorme de clasificación puede ser inherentemente complejo,
haciendo imposible la veloz rendimiento. Pero lo que es posible es que, para cualquiera de
estas funciones las opciones elegidas como arquitecto determinará el nivel relativo de
calidad. Algunas opciones de arquitectura conducirá a un mayor rendimiento; Algunos
conducirá en la otra dirección. Habida cuenta de este entendimiento, el propósito de este
capítulo es, al igual que con una buena arquitectura, para separar las preocupaciones.
Examinará cada atributo de calidad importante a su vez y aprender a pensar en ello de una
manera disciplinada.
¿Cuál es la funcionalidad? Es la capacidad del sistema para hacer el trabajo para los que fue
concebido. Una tarea requiere que muchas o la mayoría de los elementos del sistema de
trabaja de manera coordinada para completar el trabajo, así como autores, electricistas,
plomeros, perchas de cartón yeso, pintores, y acabado de carpinteros vienen todos juntos a
cooperativamente construir una casa. Por lo tanto, si los elementos no se han asignado las
responsabilidades correctas o no han sido dotados de las instalaciones correctas para
coordinar con otros elementos (de modo que, por ejemplo, saben cuándo es tiempo para que
puedan empezar a su parte de la tarea), el sistema no podrá ofrecer la funcionalidad
necesaria.
? Facilidad de uso implica aspectos arquitectónicos y nonarchitectural. Los aspectos
nonarchitectural incluyen hacer la interfaz de usuario clara y fácil de usar. ¿Debe
proporciona un botón de opción o de una casilla de verificación? ¿Qué diseño de
pantalla es más intuitivo? ¿Qué tipo de letra es más claro? Aunque estos detalles son
importantes tremendamente para el usuario final y facilidad de uso de influencia, no
son arquitectónicos porque pertenecen a los detalles de diseño. Sin embargo es
arquitectónico, si un sistema proporciona al usuario con la capacidad de cancelar
operaciones, para deshacer las operaciones, o con los datos de reutilización
previamente especificados. Estos requisitos incluyen la cooperación de varios
elementos.
? Modificabilidad se determina por cómo la funcionalidad se divide (arquitectura) y
por técnicas dentro de un módulo (nonarchitectural) de codificación. Por lo tanto, un
sistema es modificable si cambios implican al menor número posible de elementos
distintos. Esta fue la base de la estructura de descomposición del módulo de A-7E
en el capítulo 3. A pesar de tener la arquitectura ideal, sin embargo, siempre es
posible hacer un sistema difícil modificar mediante la escritura de código oscuro.
? Rendimiento consiste en las dependencias de arquitectura y nonarchitectural. Se
depende parcialmente de cuánto comunicación es necesaria entre los componentes
(arquitectura), parcialmente sobre el tipo de funcionalidad que se ha asignado a cada
componente (arquitectura), parcialmente en los recursos compartidos de cómo se
asignan (arquitectura), parcialmente en la elección de algoritmos para implementar
la funcionalidad seleccionada (nonarchitectural), y parcialmente en cómo estos
algoritmos están codificados (nonarchitectural).
Dentro de los sistemas complejos, atributos de calidad nunca pueden lograrse de manera
aislada. El logro de cada uno tendrá un efecto, a veces positivo y a veces negativos, en el
logro de los demás. Por ejemplo, seguridad y confiabilidad a menudo existen en un Estado
de tensión mutua: el sistema más seguro tiene la menor cantidad de puntos de falla,
normalmente un núcleo de seguridad. El sistema más confiable tiene más puntos de falla,
normalmente un conjunto de procesos redundantes o procesadores donde el hecho de que
cualquiera no hará que el sistema falle. Otro ejemplo de la tensión entre los atributos de
calidad es que casi cada atributo de calidad afecta negativamente al rendimiento. Tomar la
portabilidad. La principal técnica para el logro de software portable es aislar las
dependencias del sistema, que introduce la sobrecarga en la ejecución del sistema,
normalmente como límites de proceso o procedimiento, y esto perjudica el rendimiento.
Comencemos nuestro tour de atributos de calidad. Examinaremos las siguientes tres clases:
Atributos de calidad del sistema han sido de interés para la comunidad de software por lo
menos desde la década de 1970. Hay una variedad de taxonomías publicadas y las
definiciones, y muchos de ellos tienen sus propias comunidades de investigación y
practicante. Desde la perspectiva de un arquitecto, hay tres problemas con debates
anteriores de atributos de calidad de sistema:
? Las definiciones proporcionadas para un atributo no están operativas. Tiene sentido
decir que un sistema sea modificable. Cada sistema es modificable con respecto a
un conjunto de cambios y no modificable con respecto a otro. Los otros atributos
son similares.
? Un foco de discusión es, a menudo, en cuya calidad un aspecto particular pertenece
a. ¿Es un error del sistema un aspecto de la disponibilidad, un aspecto de seguridad
o un aspecto de la facilidad de uso? Todas las comunidades de atributo tres
reclaman la propiedad de un fallo del sistema.
? Cada comunidad de atributo ha desarrollado su propio vocabulario. La comunidad
de rendimiento tiene "eventos" llegar a un sistema, la comunidad de seguridad tiene
"ataques" de llegar a un sistema, la comunidad de disponibilidad tiene "fallas" de un
sistema y la comunidad de usabilidad tiene "usuario de entrada". Todos estos
realmente pueden referirse a la ocurrencia misma, pero se describen usando
términos diferentes.
Una solución para los dos primeros de estos problemas (definiciones rehusadas y
preocuparse de superposición) es utilizar los escenarios de atributo de calidad como medio
de caracterizar los atributos de calidad. Una solución para el tercer problema es
proporcionar una breve discusión de cada atributo, concentrándose en sus preocupaciones
subyacentes ² para ilustrar los conceptos que son fundamentales para esa comunidad de
atributo.
? Fuente de estímulo. Se trata de una entidad (un ser humano, un sistema informático
o cualquier otro actuador) que generó el estímulo.
? Estímulo. El estímulo es una condición que debe considerarse cuando llega a un
sistema.
? Medio ambiente. El estímulo se produce dentro de ciertas condiciones. El sistema
puede estar en una condición de sobrecarga o puede que esté ejecutando cuando se
produce el estímulo, o alguna otra condición puede ser cierto.
? Artefacto. Algunos artefacto es estimulada. Esto puede ser todo el sistema o algunas
piezas de la misma.
? Respuesta. La respuesta es la actividad realizada después de la llegada del estímulo.
? Medida de la respuesta. Cuando se produce la respuesta, debe ser medible de alguna
manera para que el requisito se puede probar.
Escenario de disponibilidad
El origen del estímulo es importante ya que las respuestas diferentes pueden ser necesarias
en función de lo que es. Por ejemplo, una solicitud de una fuente de confianza puede
tratarse de manera diferente de una solicitud de una fuente que no se confía en un escenario
de seguridad. El medio ambiente también puede afectar la respuesta, en que un evento al
llegar a un sistema puede tratarse de forma diferente si el sistema ya está sobrecargado. El
artefacto que se estimula es menos importante como requisito. Casi siempre es el sistema y
lo explícitamente llamamos por dos razones.
En primer lugar, muchos requisitos hacen suposiciones sobre la parte interna del sistema
(por ejemplo, "un servidor Web dentro de la falla del sistema"). En segundo lugar, cuando
utilizamos escenarios dentro de un método de diseño o de evaluación, refinamos el
artefacto de escenario a ser bastante explícito sobre la parte del sistema que se está
estimulado. Por último, ser explícito acerca del valor de la respuesta es importante para que
los requisitos de atributo de calidad se hacen explícitos. Por lo tanto, incluimos la medida
de la respuesta como una parte del escenario.
Escenario de modificabilidad
Un escenario de modificabilidad de ejemplo es "un desarrollador desea cambiar la interfaz
de usuario para hacer que color de fondo de una pantalla azul. Este cambio se hará al
código en tiempo de diseño. Lleva menos de tres horas para hacer y probar el cambio y no
hay efecto secundario se cambios en el comportamiento". Figura 4.4 ilustra este escenario
de ejemplo (omitiendo algunos detalles menores por brevedad).
Figura m m Escenario de modificabilidad de ejemplo
Una colección de escenarios concretos puede utilizarse como los requisitos de atributo de
calidad para un sistema. Cada escenario es lo suficientemente concreta para ser
significativa al arquitecto, y los detalles de la respuesta son lo suficientemente
significativos como para que sea posible comprobar si el sistema ha logrado la respuesta.
Cuando obteniendo requisitos, por lo general organizamos nuestra discusión de escenarios
generales por atributos de calidad; Si el mismo escenario se genera por dos atributos
diferentes, uno se puede eliminar.
Para cada atributo presentamos una tabla que ofrece posible independiente del sistema
valores para cada una de las seis partes de un escenario de calidad. Se genera un escenario
de calidad general, elija un valor para cada elemento; se genera un escenario concreto como
parte de la obtención de requisitos eligiendo una o más entradas de cada columna de la
tabla y, a continuación, haciendo el resultado legible. Por ejemplo, el escenario que se
muestra en la figura 4.4 se genera desde el escenario de modificabilidad dado en la tabla 4.2
(en la página 83), pero las partes individuales fueron editadas ligeramente para hacerlos leer
sin problemas como un escenario.
Ahora hablamos de los seis más común e importante calidad atributos, con el doble
objetivo de identificar los conceptos utilizados por el atributo comunidad y proporcionar un
método para generar escenarios generales para dicho atributo.
DISPONIBILIDAD
Entre las esferas de interés se encuentran cómo se detecta una falla del sistema, con qué
frecuencia puede ocurrir falla en el sistema, lo que ocurre cuando se produce un error,
durante cuánto tiempo un sistema puede estar fuera de operación, cuando pueden ocurren
fallas con la seguridad y modo de evitar fallas, y qué tipo de notificaciones es necesario
cuando se produce un error.
Tenemos que diferenciar entre los errores y fallas. Una falla puede llegar a ser un fracaso si
no corregida o enmascarados. Es decir, un fracaso es observable por usuario del sistema y
un fallo no lo es. Cuando un observable hace convertirse en fallas, se convierte en un
fracaso. Por ejemplo, un fallo puede elegir el algoritmo mal para un cálculo, lo que resulta
en un error de cálculo que hace que el sistema falle.
De este procede términos como disponibilidad del 99,9%, o una 0,1% de probabilidad que
el sistema no estará operativo cuando sea necesario.
Paradas programadas (es decir, fuera de servicio) no se consideran por lo general al calcular
la disponibilidad, ya que el sistema "no es necesario" por definición. Esto conduce a
situaciones donde el sistema está inactivo y se esperan los usuarios, pero el tiempo de
inactividad está programada y por lo tanto, no se cuenta contra cualquier requisito de
disponibilidad.
Fuente de estímulo. Hay diferenciar entre las indicaciones internas y externas de fallas o
fracaso ya que la respuesta del sistema deseado puede ser diferente. En nuestro ejemplo, el
mensaje inesperado llega de fuera del sistema.
-En la figura 4.3, el estímulo es que llegue un mensaje no previsto. Este es un ejemplo de
un error de sincronización. El componente que generó el mensaje lo hicieron en un
momento diferente de lo que se esperaba.
Artefacto. Especifica el recurso que se requiere para ser altamente disponibles, tales como
un procesador, el canal de comunicación, el proceso o el almacenamiento de información.
Medio ambiente. El estado del sistema cuando se produce el error o el fracaso también
puede afectar la respuesta del sistema deseado. Por ejemplo, si el sistema ya ha visto
algunos errores y está funcionando en distintos de modo normal, puede ser deseable para
apagar totalmente. Sin embargo, si este es el primer fallo observado, algunos degradación
de función o el tiempo de respuesta puede ser preferible. En nuestro ejemplo, el sistema
está funcionando normalmente.
Respuesta. Hay una serie de posibles reacciones a un error del sistema. Estos incluyen el
fracaso, notificar a los usuarios seleccionados u otros sistemas, cambiar a un modo
degradado con función de menos capacidad o menos, apagar los sistemas externos, o llegar
a ser no está disponible durante la reparación de inicio de sesión. En nuestro ejemplo, el
sistema debe notificar al operador del mensaje inesperado y seguirán funcionando
normalmente.
Tabla 4.1 presenta los valores posibles para cada parte de un escenario de disponibilidad.
1.? ¿Lo que puede cambiar (el artefacto)? Un cambio produzca en cualquier aspecto de
un sistema más comúnmente las funciones que el sistema calcula, la plataforma que
el sistema existe en (el hardware, sistema operativo, middleware, etc.), el entorno en
el que el sistema Opera (los sistemas con los que debe interoperar, los protocolos
que se utiliza para comunicarse con el resto del mundo, etc.), las cualidades las
exposiciones de sistema (su rendimiento, su fiabilidad y incluso sus futuras
modificaciones) y su capacidad (número de usuarios admitidos, número de
operaciones simultáneas, etc.). Algunas partes del sistema, tales como la interfaz de
usuario o de la plataforma, son suficientemente distinguido y sujetos a cambios, los
que consideramos por separado. La categoría de los cambios de plataforma también
se denomina portabilidad. Esos cambios pueden agregar, eliminar o modificar
alguno de estos aspectos.
2.? ¿Cuándo es el cambio realizado y lo que hace (medio ambiente)? Más comúnmente
en el pasado, se realizó un cambio al código fuente. Es decir, un desarrollador se
tuvo que hacer el cambio, que fue probado y, a continuación, desplegado en una
nueva versión. Ahora, sin embargo, la cuestión de cuando se realiza un cambio está
entrelazada con la cuestión de quién lo hace. Un usuario final cambiar el protector
de pantalla claramente es realizar un cambio en uno de los aspectos del sistema.
Igualmente claro, no está en la misma categoría que cambiar el sistema para que se
puede utilizar en la Web, en lugar de en un solo equipo. Cambios es posible a la
aplicación (modificando el código fuente), durante la compilación (mediante
switches de tiempo de compilación), durante la generación (por elección de las
bibliotecas), durante la instalación de configuración (por una variedad de técnicas,
incluyendo la configuración de parámetros) o durante la ejecución (por valor de
parámetro). También es posible un cambio por un desarrollador, un usuario final o
un administrador del sistema.
? Fuente de estímulo. Esta parte especifica que realiza los cambios ² el
desarrollador, un administrador del sistema o un usuario final. Claramente, debe
haber maquinaria en el lugar para permitir que el administrador del sistema o
usuario final modificar un sistema, pero esto es algo común. En la figura 4.4, la
modificación deba efectuarse por el desarrollador.
? Estímulo. Esta parte especifica los cambios a realizar. Un cambio puede ser la
adición de una función, la modificación de una función existente o la supresión de
una función. También se puede hacer a las cualidades del sistema ² lo que es más
sensible, aumentar su disponibilidad y así sucesivamente. También puede cambiar
la capacidad del sistema. Aumentar el número de usuarios simultáneos es un
requisito frecuente. En nuestro ejemplo, el estímulo es una solicitud para hacer una
modificación, que puede ser a la función, calidad o capacidad.
? Variación es un concepto asociado a las líneas de productos de software (consulte el
capítulo 14). Al considerar la variación, un factor es el número de veces que se debe
especificar una variación determinada. Uno que tiene que hacerse con frecuencia va
a imponer un requisito más estricto sobre las medidas de respuesta de uno que se
hace sólo esporádicamente.
? Artefacto. Esta parte especifica lo que debe cambiarse ² la funcionalidad de un
sistema, su plataforma, su interfaz de usuario, su entorno o otro sistema con el que
interopera. En la figura 4.4, la modificación es la interfaz de usuario.
? Medio ambiente. Esta parte especifica cuando es posible el cambio: tiempo de
diseño, tiempo de compilación, construir la hora, tiempo de iniciación o el tiempo
de ejecución. En nuestro ejemplo, la modificación es que se produzca en tiempo de
diseño.
? Respuesta. Quien hace el cambio debe comprender cómo hacerlo y, a continuación,
convertirlo en, la prueba y desplegarlo. En nuestro ejemplo, la modificación se
realiza sin efectos secundarios.
? Medida de la respuesta. Todas las respuestas posibles toman tiempo y cuestan
dinero, y por lo tanto tiempo y los costos son las medidas más deseables. Tiempo no
siempre es posible predecir, sin embargo, y por lo tanto menos medidas ideales se
utilizan con frecuencia, tales como la magnitud del cambio (número de módulos
afectados). En nuestro ejemplo, el tiempo para realizar la modificación debe ser
menos de tres horas.
Tabla 4.2 presenta los valores posibles para cada parte de un escenario de modificabilidad.
PERFORMANCE
Una de las cosas que hacen de rendimiento complicado es el número de orígenes de eventos
y los patrones de llegada. Eventos pueden llegar desde las solicitudes del usuario, de otros
sistemas o desde el sistema. Un sistema de servicios financieros basados en Web obtiene
eventos de sus usuarios (posiblemente numeración en las decenas o cientos de miles). Un
sistema de control de motor obtiene sus solicitudes desde el paso del tiempo y debe
controlar tanto el disparo de la ignición cuando un cilindro está en la posición correcta y la
mezcla del combustible para maximizar la energía y reducir al mínimo la contaminación.
Un patrón de llegada para eventos puede caracterizarse como periódicos o estocástico. Por
ejemplo, un evento periódico puede llegar cada 10 milisegundos. Evento periódico llegada
se ve más a menudo en sistemas en tiempo real. Llegada estocástico significa que eventos
llegan de acuerdo con alguna distribución probabilística. Eventos también pueden llegar
esporádicamente, es decir, con arreglo a una distribución no capturarla por
caracterizaciones estocásticos o periódicos.
Varios usuarios u otros factores de carga pueden ser modelados mediante la variación de la
trama de la llegada de eventos. En otras palabras, desde el punto de vista del rendimiento
del sistema, no importa si un usuario envía solicitudes de 20 en un período de tiempo o si
dos usuarios envían 10. Lo que importa es el patrón de llegada en el servidor y las
dependencias dentro de las solicitudes.
La respuesta del sistema a un estímulo puede ser caracterizado por la latencia (el tiempo
entre la llegada del estímulo y la respuesta del sistema a ella), los plazos en el
procesamiento (en el controlador de motor, por ejemplo, el combustible debe encender
cuando el cilindro está en una posición determinada, introduciendo un plazo de
procesamiento), el rendimiento del sistema (por ejemplo, el número de transacciones que el
sistema pueda procesar en un segundo), la variación de la respuesta (la variación en la
latencia), el número de eventos que no procesados ya que el sistema estaba demasiado
ocupado para responder y los datos que se perdieron debido a que el sistema estaba
demasiado ocupado.
Observe que esta formulación no tiene en cuenta si el sistema está en red o standalone.
Tampoco (todavía) considera la configuración del sistema o el consumo de recursos. Estas
cuestiones son dependientes de soluciones de arquitectura, que se explica en el capítulo 5.
? Estímulom Los estímulos son las llegadas de evento. El patrón de llegada puede ser
caracterizado como periódico, estocástico o esporádicos. En nuestro ejemplo, el
estímulo es la iniciación estocástica de 1.000 transacciones por minuto.
? Artefactom El artefacto es siempre los servicios del sistema, como en nuestro
ejemplo.
? Medio ambientem El sistema puede estar en diferentes modos de funcionamiento,
como normal, emergencia, o de sobrecarga. En nuestro ejemplo, el sistema está en
modo normal.
? Respuestam El sistema debe procesar los eventos que llegan. Esto puede causar un
cambio en el entorno del sistema (por ejemplo, de normal a modo de sobrecarga).
En nuestro ejemplo, se procesan las transacciones.
? Medida de la respuestam Las medidas de respuesta son el tiempo necesario para
procesar los eventos que llegan (latencia o un plazo por el que se debe procesar el
evento), la variación en este momento (jitter), el número de eventos que se pueden
procesar dentro de un intervalo de tiempo determinado (producción), o una
caracterización de los eventos que no puede ser procesado (miss tasa de pérdida de
datos). En nuestro ejemplo, las transacciones deben procesarse con un promedio de
latencia de dos segundos.
SEGURIDAD
La seguridad es una medida de la capacidad del sistema para resistir el uso no autorizado
mientras ofrece sus servicios a los usuarios legítimos. Un intento de romper la seguridad se
llama un ataque [1] y puede tomar un número de formas. Puede ser un intento no
autorizado para acceder a datos o servicios o para modificar los datos o puede tener por
objeto negar servicios a los usuarios legítimos.
Los ataques, a menudo ocasiones para medios de comunicación amplia cobertura, pueden
variar de robo de dinero por transferencia electrónica a la modificación de datos
confidenciales, contra el robo de números de tarjeta de crédito a la destrucción de archivos
en los sistemas informáticos, o a los ataques de denegación de servicio llevado a cabo por
gusanos o virus de. Aún así, los elementos de un escenario general de seguridad son los
mismos que los elementos de otros escenarios nuestros generales ² un estímulo y su
origen, un entorno, el destino bajo ataque, la respuesta deseada del sistema y la medida de
esta respuesta.
2.? Confidencialidad es que los datos de la propiedad o los servicios están protegidos
contra accesos no autorizados. Esto significa que un hacker no puede tener acceso a
sus declaraciones de impuestos de ingresos en un equipo de Gobierno.
3.? Integridad es que los datos de la propiedad o servicios se entregan como se
esperaba. Esto significa que su grado no ha cambiado desde que el instructor le
asignó.
4.? El aseguramiento es la propiedad de que las partes en una transacción son quienes
pretende ser. Esto significa que, cuando un cliente envía un número de tarjeta de
crédito a un comerciante de Internet, el comerciante es que el cliente piensa que son.
5.? La disponibilidad es la propiedad que el sistema estará disponible para uso legítimo.
Esto significa que un ataque de denegación de servicio no impide que sus pedidos
de este libro.
Cada una de estas categorías de seguridad da lugar a una colección de escenarios generales.
? Fuente de estímulo. El origen del ataque puede ser un ser humano u otro sistema. Se
habrá sido previamente identificado (correctamente o incorrectamente) o puede ser
actualmente desconocido. Si el origen del ataque es altamente motivado (dicen por
motivos políticos), a continuación, las medidas defensivas como "sabemos que
usted es y será enjuiciar le" no están probables que sean eficaces; en tales casos, la
motivación del usuario puede ser importante. Si la fuente tiene acceso a gran
cantidad de recursos (por ejemplo, un gobierno), las medidas defensivas son muy
difíciles. El ataque es el acceso no autorizado, la modificación o la denegación de
servicio.
? Artefacto. El objetivo del ataque puede ser los servicios del sistema o los datos
dentro de ella. En nuestro ejemplo, el objetivo es datos dentro del sistema.
? Medio ambientem El ataque puede venir cuando el sistema está ya sea en línea o sin
conexión, o conectado a o desconectado de una red, ya sea detrás de un firewall o
abre a la red.
TESTABILIDAD
Testabilidad de software se refiere a la facilidad con la que es posible software para
demostrar sus fallas a través de pruebas (por lo general basada en ejecución). Al menos
40% del coste de desarrollo de sistemas bien diseñados es tomado por pruebas. Si el
arquitecto de software puede reducir este costo, la recompensa es grande.
Para que un sistema ser debidamente comprobables, deberán poder controlar las entradas y
el estado interno de cada componente y luego a observar sus resultados. Con frecuencia,
esto se hace mediante el uso de un instrumento de la prueba, diseñado para ejercer el
software de prueba de software especializado. Esto puede ser tan simple como una
capacidad de reproducción para los datos registrados a través de distintas interfaces o tan
complicado como una cámara de prueba para un motor.
? Fuente de estímulom La prueba se realiza mediante dispositivos de pruebas de
unidad, encargados de pruebas de integración, encargados de pruebas de sistema o
el cliente. Por otros desarrolladores o por un grupo externo, se puede realizar un
examen del diseño. En nuestro ejemplo, la prueba se realiza por un tester.
? Estímulom El estímulo para la prueba es que se cumpla un hito en el proceso de
desarrollo. Esta puede ser la realización de un incremento de análisis o el diseño, la
realización de un incremento de codificación, como una clase, la integración
completa de un subsistema o la realización de todo el sistema. En nuestro ejemplo,
la prueba se activa por la finalización de una unidad de código.
? Artefactom Un diseño, una pieza de código, o todo el sistema es el artefacto que se
está probando. En nuestro ejemplo, una unidad de código es someterse.
? Medio ambientem La prueba puede ocurrir en tiempo de diseño, en tiempo de
desarrollo, en tiempo de compilación o en tiempo de implementación. En la figura
4.7, la prueba se produce durante el desarrollo.
? Respuestam Puesto Testabilidad está relacionado con la observación y la capacidad
de control, la respuesta deseada es que el sistema puede ser controlado para realizar
las pruebas deseadas y que se puede observar la respuesta a cada prueba. En nuestro
ejemplo, la unidad puede ser controlada y capturan de sus respuestas.
? Medida de la respuestam Las medidas de respuesta son el porcentaje de
declaraciones que han sido ejecutadas en alguna prueba, la longitud de la cadena
más larga de la prueba (una medida de la dificultad de efectuar las pruebas) y las
estimaciones de la probabilidad de encontrar errores adicionales. En la figura 4.7, la
medición es el porcentaje de cobertura de instrucciones ejecutables.
FACILIDAD DE USO
Facilidad de uso se ocupa de lo fácil que es para que el usuario realizar una tarea deseada y
el tipo de soporte de usuario que proporciona el sistema. Se puede dividir en las siguientes
áreas:
? Características del sistema de aprendizajem Si el usuario no está familiarizado con
un sistema en particular o un aspecto particular de la misma, ¿qué puede el sistema
hacer para facilitar la tarea de aprendizaje?
? Uso eficiente de un sistema. ¿Qué puede hacer el sistema para hacer que el usuario
más eficiente en su funcionamiento?
? Minimiza el impacto de los erroresm ¿Qué puede hacer el sistema para que un error
de usuario tiene un impacto mínimo?
? Adaptando el sistema a las necesidades del usuariom ¿Cómo puede adaptar el
usuario (o el propio sistema) para facilitar la tarea del usuario?
? Aumento de confianza y satisfacciónm ¿Qué hace el sistema para dar la confianza
de los usuarios que se tiene la acción correcta?
? Fuente de estímulom El usuario final es siempre la fuente del estímulo.
? Estímulo. El estímulo es que el usuario final desea utilizar un sistema de manera
eficiente, aprender a utilizar el sistema, minimizar el impacto de los errores, adaptar
el sistema o se sienten cómodos con el sistema. En nuestro ejemplo, el usuario desea
cancelar una operación, que es un ejemplo de reducir al mínimo el impacto de los
errores.
? Artefactom El artefacto es siempre el sistema.
? Medio ambientem Las acciones del usuario con el que la facilidad de uso se refiere
siempre se producen en tiempo de ejecución o en el momento de la configuración de
sistema. Cualquier acción que se produce antes de a continuación, se lleva a cabo
por desarrolladores y, aunque un usuario también puede ser el desarrollador,
distinguimos entre estas funciones incluso si lleva a cabo por la misma persona. En
la figura 4.8, la cancelación se produce en tiempo de ejecución.
? Respuesta. El sistema debe proporcionar al usuario las características necesarias o
anticiparse a las necesidades del usuario. En nuestro ejemplo, la cancelación se
produce como los deseos del usuario y el sistema se restaura a su estado anterior.
? Medida de la respuesta. La respuesta se mide por el tiempo de la tarea, número de
errores, número de problemas resueltos, satisfacción de los usuarios, ganancia de
conocimiento del usuario, relación de operaciones exitosas al total de operaciones, o
la cantidad de datos/tiempo perdido cuando se produce un error. En la figura 4.8, la
cancelación debe ocurrir en menos de un segundo.
4.7 Tabla da los estímulos posibles para cada uno de los atributos y muestra una serie de
conceptos diferentes. Algunos estímulos se producen en tiempo de ejecución y otros se
producen antes. El problema para el arquitecto es comprender cuál de estos estímulos
representan la misma aparición, que son agregados de otros estímulos, y que son
independientes. Una vez que las relaciones son claras, que el arquitecto puede comunicarlas
a las diversas partes interesadas utilizando el lenguaje que cada uno comprende. No
podemos dar las relaciones entre los estímulos de manera general porque dependen
parcialmente sobre el medio ambiente. Un evento de rendimiento puede ser atómico o
puede ser un agregado de otras apariciones de nivel inferior; una falla puede ser un evento
de rendimiento individual o un conjunto. Por ejemplo, puede ocurrir con un intercambio de
severalmessages entre un cliente y un servidor (que culminaron en un mensaje inesperado),
cada uno de ellos es un evento atómico desde una perspectiva de rendimiento.
m Cualidades de negocios
Además de las cualidades que se aplican directamente a un sistema, una serie de objetivos
de calidad de negocios con frecuencia forma a la arquitectura de un sistema. Estos objetivos
se centran en costo, programación, mercado y consideraciones de marketing. Cada uno de
ellos padece la misma ambigüedad que tienen cualidades del sistema y que necesitan para
hacerse específicos con los escenarios a fin de hacerlas apropiadas para influir en el proceso
de diseño y hacerse comprobables. Aquí, nos presentarlos como generalidades, sin embargo
y dejar la generación de escenarios como una de nuestras preguntas de discusión.
? Tiempo de comercializaciónm Si hay presión de la competencia o una breve
ventana de oportunidad para un producto o sistema, tiempo de desarrollo se
convierte en un importante. Esto a su vez lleva a presión para comprar o de lo
contrario reutilizar los elementos existentes. Tiempo de comercialización a menudo
se reduce mediante el uso de elementos prediseñados como productos comerciales
de (COTS) disponibles en el mercado o reutilizados de proyectos previos. La
capacidad para insertar o implementar un subconjunto del sistema depende de la
descomposición del sistema en elementos.
? Costo y beneficiom El esfuerzo de desarrollo, naturalmente, tendrá un presupuesto
que no deberá ser superado. Diferentes arquitecturas producirá los costos de
desarrollo diferentes. Por ejemplo, una arquitectura que se basa en la tecnología (o
conocimientos especializados con una tecnología) no residente en la organización
en desarrollo será más caro a darse cuenta de que uno que se aprovecha de los
activos ya internos. Una arquitectura que es altamente flexible normalmente será
más costosa construir que uno que es rígida (aunque es menos costoso de mantener
y modificar).
? Toda la vida proyectada del sistemam Si el sistema va a tener una vida útil larga,
modificabilidad, escalabilidad y portabilidad convertido en importantes. Pero el
edificio en la infraestructura adicional (por ejemplo, una capa para apoyar la
portabilidad) por lo general pondrá en peligro al mercado. Por otra parte, un
producto modificable y ampliable es más probable que sobreviven por más tiempo
en el mercado, extender su vida útil.
? Mercado de destinom Para el software (mercado de masas) para fines generales, las
plataformas en el cual un sistema funciona tan bien como su función conjunto de
voluntad determinan el tamaño del mercado potencial. Por lo tanto, portabilidad y
funcionalidad son clave para la participación en el mercado. Otras cualidades, tales
como el rendimiento, fiabilidad y facilidad de uso también desempeñan un papel.
Para atacar un gran mercado con una colección de productos relacionados, debe
considerarse un enfoque de línea de producto en el que un núcleo del sistema es
común (con frecuencia incluidas las disposiciones para la portabilidad) y alrededor
de las capas de software cada vez más especificidad que se construyen. Este
enfoque se tratarán en el capítulo 14, que trata sobre las líneas de productos de
software.
? Plan de puesta en servicio. Si un producto es que se introduzcan como
funcionalidad básica con muchas características lanzadas más tarde, la flexibilidad y
la personalización de la arquitectura son importantes. En particular, el sistema debe
construirse con la facilidad de expansión y contracción en mente.
? Integración con sistemas heredadosm Si el nuevo sistema tiene que integrar con los
sistemas existentes, se debe tener cuidado para definir los mecanismos de
integración adecuada. Esta propiedad es claramente de la comercialización de
importancia, pero tiene importantes implicaciones de arquitectura. Por ejemplo, la
capacidad de integrar un sistema heredado con un servidor HTTP para que sea
accesible desde la Web ha sido un objetivo de marketing en muchas empresas en la
última década. Las restricciones arquitectónicas que implica esta integración deben
ser analizadas.
m7 Cualidades de la arquitectura de
Además de las cualidades del sistema y cualidades relacionadas con el entorno empresarial
en el que se está desarrollando el sistema, también hay cualidades directamente
relacionados con la arquitectura que son importantes para alcanzar. Discutimos sobre tres,
dejando nuevamente a la generación de escenarios específicos a nuestras preguntas de
discusión.
Integridad conceptual es el tema subyacente o la visión que unifica el diseño del sistema en
todos los niveles. La arquitectura debe hacer cosas similares de manera similar. Fred
Brooks escribe enfáticamente que integridad conceptual de un sistema es de importancia de
primer orden, y que los sistemas sin ella no:
Exactitud e integridad son esenciales para la arquitectura permitir todos requisitos del
sistema y las limitaciones de recursos de tiempo de ejecución para cumplirse. Una
evaluación formal, tal como se prescribe en la tercera parte, es una vez más mejor
esperanza del arquitecto para una arquitectura correcta y completa.
Porque edificabilidad suele medirse en términos de costo y tiempo, existe una relación entre
ella y varios modelos de costos. Sin embargo, la edificabilidad es más complejo que lo que
se trata por lo general en modelos de costos. Se crea un sistema de ciertos materiales, y
estos materiales se crean usando una variedad de herramientas. Por ejemplo, una interfaz de
usuario puede ser construida de elementos en una caja de herramientas de interfaz de
usuario (llamada widgets o controles), y estos widgets pueden ser manipulados por un
constructor de interfaces de usuario. Los widgets son los materiales y el generador es la
herramienta, por lo que un elemento de Edificabilidad es el partido entre los materiales que
van a utilizar en el sistema y las herramientas que están disponibles para manipularlos. Otro
aspecto de la edificabilidad es conocimiento sobre el problema a ser resuelto. El
fundamento de este aspecto es para acelerar el tiempo para comercializar y no obligar a
proveedores potenciales para invertir en la comprensión y la ingeniería de un nuevo
concepto. Un diseño que proyecta una solución en términos de conceptos bien entendidos,
por tanto, es más generable que uno que introduce nuevos conceptos.
Nota: Felix Bachmann, Mark Klein y madera de proyecto de ley son altos miembros del
personal técnico en el Instituto de ingeniería de Software.
Capítulo 4 caracteriza una serie de atributos de calidad del sistema. Esa caracterización fue
en términos de una colección de escenarios. Comprender el significado de un atributo de
calidad permite obtener los requisitos de calidad, pero no proporciona ninguna ayuda para
entender cómo alcanzarlos. En este capítulo, comenzamos a proporcionar esa ayuda. Para
cada uno de los atributos de calidad de seis sistema que elaboramos en el capítulo 4,
proporcionamos orientación arquitectónica por su logro. Las tácticas que se enumeran aquí
no cubren todos los atributos de calidad posible, pero vamos a ver tácticas para la
integración en el capítulo 8.
Tácticas pueden refinar otras tácticas. Se identificaron redundancia como táctica. Como tal,
puede ser refinado en la redundancia de datos (en un sistema de base de datos) o
redundancia de computación (en un sistema de control integrado). Ambos tipos son
también tácticas. Hay más mejoras que puede emplear un diseñador para concretar cada
tipo de redundancia. Para cada atributo de calidad que discutir, organizamos las tácticas
como una jerarquía.
Organizamos las tácticas para cada atributo de calidad del sistema como una jerarquía, pero
es importante comprender que cada jerarquía está diseñado exclusivamente para mostrar
algunas de las tácticas, y que cualquier lista de tácticas es necesariamente incompleto. Para
cada uno de los seis atributos que elaboramos en el capítulo 4 (disponibilidad,
modificabilidad, rendimiento, seguridad, Testabilidad y facilidad de uso), discutimos sobre
enfoques tácticos para su realización. Para cada uno, presentamos una organización de las
tácticas y una breve discusión. La organización pretende proporcionar una ruta de acceso
para el arquitecto buscar tácticas adecuadas.
Muchas de las tácticas que discutimos están disponibles dentro de los entornos de ejecución
estándar tales como sistemas operativos, servidores de aplicaciones y sistemas de gestión
de base de datos. Es aún importante comprender las tácticas utilizadas para que los efectos
del uso de un determinado uno puede considerarse durante el diseño y la evaluación. Todos
los enfoques para mantener disponibilidad implican algún tipo de redundancia, algún tipo
de control para detectar un error de la salud y algún tipo de recuperación cuando se detecta
un fallo. En algunos casos, la supervisión o la recuperación es automática y en otros es
manual.
DETECCIÓN DE FALLAS
? Ping/eco. Uno de los componentes emite un ping y espera recibir de vuelta un eco,
dentro de un plazo predefinido, desde el componente bajo la lupa. Esto puede usarse
dentro de un grupo de componentes mutuamente responsables de una tarea.
También puede utilizar se utilizan los clientes para garantizar que un objeto de
servidor y la ruta de comunicación con el servidor funcionen dentro de los límites
del rendimiento esperado. Detectores de fallas "Ping/eco" pueden ser organizados
en una jerarquía, en la que un detector de nivel inferior hace ping en los procesos de
software con los que comparte un procesador, y los detectores de fallas de nivel
superiores haga ping a los de nivel inferior. Esto utiliza menos ancho de banda de
las comunicaciones que un detector de fallas remoto que hace ping en todos los
procesos.
? Latido (temporizador de hombre muerto). En este caso un componente emite un
mensaje de latido periódicamente y se escucha otro componente. Si se produce un
error en los latidos del corazón, el componente original se supone que han fracasado
y se notifica un componente de corrección de errores. Los latidos del corazón
también pueden transportar datos. Por ejemplo, un cajero automático puede enviar
periódicamente el registro de la última transacción a un servidor. Este mensaje no
sólo actúa como un latido de corazón, sino que también transmite datos a procesar.
? Excepciones. Un método para reconocer errores es encontrar una excepción que se
produce cuando una de las clases de errores que hemos debatido en el capítulo 4 se
reconoce. El controlador de excepciones se ejecuta normalmente en el mismo
proceso que introdujo la excepción.
Recuperación ante fallas consiste en preparar para la recuperación y hacer la reparación del
sistema. Siguen algunas tácticas de preparación y reparación.
? A votarm Procesos que se ejecutan en los procesadores redundantes cada uno tener
entrada equivalente y calculan un valor de salida simple que se envía a un votante.
Si el votante detecta un comportamiento anormal de un solo procesador, no lo son.
El algoritmo de voto puede ser "reglas de mayoría" o "componente preferido" o
algún otro algoritmo. Este método se utiliza para corregir el funcionamiento
defectuoso de algoritmos o el fracaso de un procesador y a menudo se utiliza en
sistemas de control. Si todos los procesadores utilizan los mismos algoritmos, la
redundancia detecta sólo un fallo de procesador y no un error de algoritmo. Por lo
tanto, si la consecuencia de una falla es extrema, como la posible pérdida de la vida,
los componentes redundantes pueden ser diversos.
? Redundancia activa (hot reinicio)m Todos los componentes redundantes responden
a eventos en paralelo. En consecuencia, son todos en el mismo Estado. La respuesta
de sólo un componente es utilizado (por lo general, la primera en responder), y el
resto se descartan. Cuando ocurre una falla, el tiempo de inactividad de los sistemas
que utilizan esta táctica es milisegundos desde la copia de seguridad es la actual y la
única vez para recuperar es el tiempo de conmutación. Redundancia activa se utiliza
a menudo en una configuración cliente/servidor, tales como sistemas de gestión de
base de datos, que respuestas rápidas sean necesarias incluso cuando se produce un
error. En un sistema distribuido de alta disponibilidad, la redundancia puede ser en
las rutas de comunicación. Por ejemplo, puede ser conveniente utilizar una red LAN
con un número de caminos paralelos y colocar cada componente redundante en una
ruta de acceso independiente. En este caso, un solo fallo de puente o ruta de acceso
no hará todos los componentes del sistema no está disponible.
? Hay tácticas para la reparación que se basan en la reintroducción de componente.
Cuando se produce un error en un componente redundante, puede ser presentada de
nuevo después de se ha corregido. Estas tácticas son operación de sombra, estado
resincronización y rollback.
? Operación de sombram Puede ejecutar un componente previamente fallido en
"modo de sombra" por un corto tiempo para asegurarse de que imita el
comportamiento de los componentes de trabajo antes de restaurarla al servicio.
? Resincronización estatal. Las tácticas de redundancia activa y pasiva requieren el
componente que se va a restaurar su estado actualizado antes de su retorno al
servicio. El enfoque de actualización dependerá el tiempo de inactividad que puede
mantenerse, el tamaño de la actualización y el número de mensajes requeridos para
la actualización. Un único mensaje que contiene el Estado es preferible, si es
posible. Actualizaciones de estado incremental, con períodos de servicio entre
incrementos, llevan a software complicado.
? Punto de comprobación/rollbackm Un punto de comprobación es una grabación de
un estado coherente creada periódicamente o en respuesta a eventos específicos. A
veces un sistema no cumple de manera inusual, con un Estado detectar incoherente.
En este caso, el sistema debe restaurarse utilizando un punto de comprobación
anterior de un estado consistente y un registro de las transacciones que se ha
producido desde que se tomó la instantánea.
PREVENCIÓN DE ERRORES
? Eliminación del serviciom Esta táctica quita un componente del sistema de
operación a someterse a algunas de las actividades para prevenir fallas previstos. Un
ejemplo está reiniciando un componente para evitar fugas de memoria causando una
falla. Si esta eliminación del servicio es automática, una estrategia de arquitectura
puede diseñarse para apoyarlo. Si es manual, el sistema debe estar diseñado para
apoyarlo.
? Transaccionesm Una transacción es la agrupación de varios pasos secuenciales tal
que a la vez el paquete completo puede deshacerse. Las transacciones se utilizan
para evitar que los datos se vean afectados si se produce un error en un paso en un
proceso y también para prevenir colisiones entre varios subprocesos simultáneos,
acceso a los mismos datos.
? Monitor de procesosm Una vez que se ha detectado un fallo en un proceso, un
proceso de vigilancia puede eliminar el proceso nonperforming y crear una nueva
instancia de la misma, inicializada a algún Estado apropiado como en la táctica de
repuesto.
? Mantener la coherencia semántica. Coherencia semántica se refiere a las relaciones
entre responsabilidades en un módulo. El objetivo es garantizar que todas estas
responsabilidades trabajan juntos sin excesiva dependencia de otros módulos. Logro
de este objetivo se viene desde la elección de responsabilidades que tienen
coherencia semántica. Métricas de acoplamiento y de cohesión son un intento de
medir la coherencia semántica, pero faltan en el contexto de un cambio. En su lugar,
la coherencia semántica debe medirse contra un conjunto de cambios previstos. Una
subtactic es abstraer servicios comunes. Prestación de servicios comunes a través de
módulos especiales es visto generalmente como un apoyo a su reutilización. Esto es
correcto, pero también abstraer servicios comunes admite modificabilidad. Si han
sido resumieron los servicios comunes, las modificaciones que se les tendrá que
hacerse una sola vez, en lugar de en cada módulo donde se utilizan los servicios.
Por otra parte, modificación a los módulos de utilizar esos servicios no afectará a
otros usuarios. Esta táctica, pues, admite localización no sólo de las modificaciones,
pero también la prevención de los efectos de rizo. Ejemplos de abstraer servicios
comunes son el uso de marcos de aplicación y el uso de otro software de
middleware.
? Anticipar los cambios esperados. Teniendo en cuenta el conjunto de cambios
previstos proporciona una manera de evaluar una asignación especial de
responsabilidades. La pregunta básica es "Para cada cambio, does la
descomposición propuesta limitar el conjunto de módulos que deben ser
modificados para lograrlo?" Una pregunta asociada es "fundamentalmente
diferentes cambios afectan los módulos mismos?" ¿Cómo es diferente de coherencia
semántica? Asignar responsabilidades basados en coherencia semántica asume que
semánticamente coherentes cambios esperados. La táctica de anticipar los cambios
esperados no preocuparse a la coherencia de las responsabilidades de un módulo de
sino más bien de minimizar los efectos de los cambios. En realidad, esta táctica es
difícil de utilizar por sí mismo, ya que no es posible anticipar todos los cambios. Por
esa razón, normalmente sirve junto con coherencia semántica.
? Generalizar el módulo. Haciendo un módulo más general permite calcular una gama
más amplia de funciones basadas en la entrada. La entrada puede ser pensado de
como la definición de un lenguaje para el módulo, que puede ser tan simple como
hacer parámetros de constantes de entrada o tan complicado como implementar el
módulo como intérprete y hacer los parámetros de entrada un programa en lenguaje
del intérprete. El general más un módulo, más probable pidió cambios pueden
hacerse por adjusing el idioma de entrada, en lugar de mediante la modificación del
módulo.
? Limitar las opciones posibles. Modificaciones, especialmente dentro de una línea de
productos (ver capítulo 14), puede ser que ahora van y, por tanto, afectar a muchos
módulos. La restricción de las posibles opciones será reducir el efecto de estas
modificaciones. Por ejemplo, un punto de variación en una línea de productos puede
ser que permite un cambio de procesador. Restringir los cambios de procesador a
los miembros de la misma familia limita las opciones posibles.
Comenzamos nuestra discusión del efecto rizo con un análisis de los diversos tipos de
dependencias que un módulo puede tener en otra. Identificamos ocho tipos:
1.? Sintaxis de
-datos. B compilar (o ejecutar) correctamente, el tipo (o formato) de los datos que se
produce por el a y consumidos por b debe ser coherente con el tipo (o formato) de
datos asumidas por B.
2.? Semántica de
-datos. Para que b ejecutar correctamente, la semántica de los datos producidos por
el a y consumidos por b debe ser coherente con los supuestos de B.
3.? Secuencia de
-datos. Para que b ejecutar correctamente, deben recibir los datos producidos por el
a en una secuencia fija. Por ejemplo, encabezado de un paquete de datos debe
preceder a su cuerpo en el orden de recepción (a diferencia de los protocolos que
tienen el número de secuencia integrado en los datos).
4.? Identidad de una interfaz de la a. A puede tener varias interfaces. Para que b
compilar y ejecutar correctamente, la identidad (nombre o identificador) de la
interfaz debe ser coherente con los supuestos de B.
Con esta comprensión de los tipos de dependencia, ahora podemos discutir tácticas
disponibles al arquitecto para prevenir el efecto rizo para determinados tipos.
? Ocultar la informaciónm Ocultación de información es la descomposición de las
responsabilidades para una entidad (un sistema o algunos descomposición de un
sistema) en piezas más pequeñas y elegir qué información para hacer que se va a
hacer público y privado. Las responsabilidades públicas están disponibles a través
de interfaces especificadas. El objetivo es aislar cambios dentro de un módulo y
evitar que los cambios se propaguen a otros. Esta es la técnica más antigua para la
prevención de cambios de materiales de multiplicación. Está fuertemente
relacionado con "prever cambios esperados" porque utiliza esos cambios como base
para la descomposición.
? Mantener las interfaces existentes. Si b depende el nombre y la firma de una
interfaz de la A, mantenimiento de esta interfaz y su sintaxis permite b para
permanecer sin cambios. Por supuesto, esta táctica no necesariamente funciona si b
tiene una dependencia semántica A, ya que los cambios en el significado de los
datos y servicios son difíciles de máscara. Además, es difícil a las dependencias de
la máscara en la calidad de los datos o la calidad del servicio, uso de recursos o la
propiedad de recursos. Estabilidad de interfaz también se consigue al separar la
interfaz de la aplicación. Esto permite la creación de interfaces abstractas de las
variaciones de esa máscara. Pueden estar materializadas las variaciones dentro de
las obligaciones contraídas, o que pueden ser consagrados al reemplazar una
implementación de un módulo con el otro.
Las categorías de dos táctica que hemos discutido hasta ahora están diseñadas para reducir
al mínimo el número de módulos que requieren cambiar para aplicar las modificaciones.
Nuestros escenarios de modificabilidad son dos elementos que no están satisfechos al
reducir el número de módulos que cambiar: el tiempo de implementación y que permite
nondevelopers realizar cambios. Aplazamiento de enlace de tiempo soporta ambos de estos
escenarios a costa de que requieren una infraestructura adicional para admitir el enlace.
En diversas ocasiones se pueden enlazar las decisiones en el sistema de ejecución. Las que
afectan a tiempo de implementación discutimos sobre. La implementación de un sistema
viene dictada por algún tipo de proceso. Cuando se realiza una modificación por el
desarrollador, suele haber un proceso de pruebas y distribución que determina el tiempo
que transcurre entre la realización del cambio y la disponibilidad de ese cambio al usuario
final. Enlace en tiempo de ejecución significa que el sistema se ha preparado para ese
enlace y se han completado todos los pasos de pruebas y distribución. Aplazamiento de
enlace de tiempo también es compatible con lo que permite al usuario final o el
administrador del sistema realizar la configuración o brindar información que afecta al
comportamiento.
Muchas tácticas están destinadas a tener impacto en tiempo o en tiempo de ejecución, como
los siguientes.
? Registro de tiempo de ejecución es compatible con la operación de "plug-and-play"
a costa de una sobrecarga adicional para administrar el registro. Registro de
publicación/suscripción, por ejemplo, puede implementarse en tiempo de ejecución
o de carga.
? Archivos de configuración están destinados a establecer parámetros en el inicio.
? Polimorfismo permite el enlace de llamadas a métodos.
? Reemplazo de componentes permite el enlace en tiempo de carga.
? Cumplimiento de protocolos definidos permite el enlace de tiempo de ejecución de
procesos independientes.