Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Diseno y Arquitectura de Software Unidad 1 Arquitectura PDF
Diseno y Arquitectura de Software Unidad 1 Arquitectura PDF
Diseno y Arquitectura de Software Unidad 1 Arquitectura PDF
Unidad 1. Arquitectura
Programa de la asignatura:
Diseño y Arquitectura de Software
Unidad 1. Arquitectura
Clave: 150920517
Índice
Unidad 1.Arquitectura
Presentación de la unidad
Las vistas nos llevarán a tener una descripción de modelo de forma clara con un enfoque
arquitectónico, señalando los principales patrones existentes aplicables a la fabricación de
la Arquitectura de Software y ubicarla dentro del ciclo de vida del desarrollo de software.
Bienvenido(a) a la unidad 1.
Propósito
Competencia específica
También es importante aclarar que la fusión entre los conceptos que se abordarán sobre
AS y la práctica será un tema que involucre mucha dedicación, pues influyen muchos
factores para que suceda: a veces lo que dice la teoría difiere con los problemas reales de
la industria del desarrollo de software, y viceversa. Toma en cuenta que ninguna visión es
más importante que la otra. Considerando la problemática descrita, podrás proponer
soluciones que satisfagan las dos visiones: industrial y teórica.
En comparación con otras actividades que realiza el ser humano, el desarrollo de software
es una disciplina joven. Haciendo conciencia de ello, habrá quien diga que se puede
contar entre 60 u 80 años de su aparición formal. La evolución del desarrollo de software
ha sido a pasos acelerados, pues en la actualidad son muy pocos los ambientes o
entornos donde no se involucra de una manera u otra el funcionamiento del software, y
hay casos en donde la dependencia se ha hecho total, llegando a tal medida que la vida
humana, la seguridad de un país o la automatización del mecanismo de apagado de la
cafetera, dependen del correcto funcionamiento del software.
Cuando los requerimientos del software a desarrollar han salido de la etapa del análisis y
han sido entregados al arquitecto, éste decide que es tiempo de pensar en el cómo hará
que esos requerimientos queden cubiertos con una sólida arquitectura de software;
entonces, deberá modelar esas características de los requerimientos en la mencionada
arquitectura, es decir, describirla con una convención gráfica o un lenguaje formal de alto
nivel propio para representar la arquitectura resultante.
Para poder describir una arquitectura de manera estándar y adecuada surgió el uso de los
lenguajes de descripción de arquitecturas (ADLs), los cuales se utilizan para satisfacer
requerimientos descriptivos que necesitan un alto nivel de abstracción, requisito que
puede cumplir, por ejemplo, UML. Este nivel de abstracción en los sistemas se debe a
que cada vez se necesita que el software resuelva más problemas de la vida cotidiana, y
se ha permeado a todas las ramas y fases de la vida de las personas, no en ambientes
tan controlados como la academia, con las fórmulas matemáticas.
6
De esta forma, en la que cada quien lanza y usa su propia definición y especificación de
ADLs, no existe una definición generalizada los lenguajes, pero comúnmente debe
pensarse que estos lenguajes proporcionan un modelo explícito de componentes
conectores y sus respectivas configuraciones. Esta idea no es contradictoria con la
definición aplicada en párrafos anteriores, ya que allá se define como aplicación y aquí se
menciona como aceptación unívoca.
Los lenguajes de interconexión de módulos son los predecesores de los ADLs, pero estos
comienzan un desarrollo serio a partir de principios de los noventas, un poco antes de que
la arquitectura de software se tomara como una propuesta seria y necesaria. Los ADLs
cuentan con cuatro criterios que los definen como una entidad: componentes, conectores,
configuraciones y restricciones. Para poder considerar un lenguaje que pertenezca a la
familia de ADLs debe soportar por lo menos los siguientes elementos:
Componentes
Conexiones
Composición jerárquica
Paradigmas de computación
Paradigmas de comunicación
Modelos formales subyacentes
Soporte de herramientas para modelado, análisis, validación y verificación
Composición automática de código aplicativo
Abstracción de componentes
Relatividad
Capacidad para modelar componentes
Tipos y verificación de tipos
Ahora que ya tienes claro los elementos, te invitamos a comprender el siguiente tema de
las vistas de la arquitectura y no olvides comentar a tu facilitador las dudas que tengas
durante tu estudio en la unidad.
Entonces decimos que las vistas de una arquitectura pueden entenderse como un
subconjunto resultante de practicar una selección o abstracción sobre una realidad, desde
un punto de vista determinado para aplicarlo en la solución al problema presentado por
los requerimientos del cliente.
De manera más concreta, las vistas de una arquitectura dan el sentido de las partes que
conformarán la aplicación; como la mejor manera de dividir las operaciones que realizará
la solución de software, facilitando su entendimiento y mantenimiento.
De una manera más coloquial, imagina que tuvieras la necesidad de cocinar un pastel.
Las vistas de este pastel serán:
Ingredientes y preparación de la cobertura.
10
Es decir, cómo se ve, cómo se hace y cómo se hará uso de él; no confundir con los pasos
para su elaboración.
Existen muchas opiniones de las vistas de arquitectura. Hay comités muy reputados junto
con sus propuestas como RM-ODP, RUP, RDS, MDA, MOF, MEMO, XMI o IEEE 1471-
2000.
No se hará un análisis exhaustivo de las vistas que propone cada uno de estos comités,
solo mencionaremos que las vistas de una arquitectura describen, de manera lógica y de
sentido común, la división del trabajo total que hará la aplicación de software. Esta
descripción es muy cercana en cuanto a sus pasos a cualquier metodología de desarrollo
de software.
Estos tres puntos mencionados describen de manera simple pero relevante y en términos
muy básicos lo que una arquitectura denota en su vista alcanzar la solución
conceptualizada por el arquitecto.
Las razones para ello son variadas: en primer lugar, no existe una fundamentación
coherente para su uso en la disciplina; en segundo término, muchos estudiosos las
consideran problemáticas, porque la existencia de múltiples vistas introduce problemas de
integración y consistencia entre las diferentes vistas. Sin embargo, los arquitectos
11
Existe un problema común en AS, que consiste en tratar de solventar un problema cuya
complejidad sea muy alta por el elevado número de reglas de negocio que debe atender
con el desarrollo de software que esté conformado por una sola pieza única e indivisible,
provocando que sea intratable e inmantenible, por ello el arquitecto, quien es el
encargado de modelar soluciones fiables, propone dividir las complejidades a diferentes
vistas para dividir la citada complejidad y hacer el acercamiento hacia la solución más fácil
para él y para quienes estarán participando en etapas posteriores del ciclo de vida del
desarrollo del software.
Si se pudieran dividir las vistas de la AS se podría obtener dos versiones según el ámbito
de aplicación: el normal y el referido desde UML.
12
13
Para lo anterior se deben tener patrones arquitectónicos a los cuales adherirse, éstos nos
darán la pauta para poder tener una guía sobre cuál es la mejor manera de solventar la
situación que presentan los requerimientos del cliente, basado en experiencias anteriores
al resolver problemas similares con la finalidad de poder describir de manera correcta
una estructura que soportara al software (a la solución) por completo.
Respecto del párrafo anterior, un patrón de arquitectura deberá entenderse como una
guía que ofrecen solución a determinados problemas ya conocidos, respecto a
problemáticas fundadas en la ingeniería de software. También expresa de manera clara la
relación que hay entre los componentes de una solución basada en software y su
esquema de organización estructural, incluyendo todos los subsistemas y acciones que
deberá realizar cada uno de ellos, además de la manera correcta de comunicar el
resultado de esas acciones entre los mismos componentes, entre vistas o con otros
sistemas externos.
Los patrones arquitectónicos sirven también para describir las restricciones que tienen los
módulos que comprenderán al sistema, por ejemplo en la manera de comunicarse, la
seguridad que deberá implementar el sistema para resguardar los datos, de qué manera
viajarán estos datos y por qué protocolo de transmisión se hará.
Las relaciones entre los módulos, las vistas y los sistemas externos dan la estructura
necesaria para pasar de cualquier sistema de software a forma de esquema (gráfico o
no); la estructura, expresa de forma clara la composición total del sistema de software,
pudiendo ser de un nivel de abstracción muy alto hasta poder llegar a representarse de
manera muy detallada, a diferencia de los ADLs.
Debe considerarse a la AS como una conjunción de todos los elementos hasta ahora
descritos (ADL’s, patrones arquitectónicos, vistas) que harán una AS completa y robusta;
por ejemplo, hablando de diferentes sistemas con diferentes arquitecturas, entre ellas
pueden usar los mismos patrones arquitectónicos y tener más facilidad para la integración
entre ellos. Imagina que un estudiante de arquitectura (la arquitectura tradicional) está
encargado de elaborar un proyecto completo para un edificio; los patrones arquitectónicos
que él utilice deberán describir de manera clara cómo estará conformado el edificio, y lo
más importante: qué relación tendrá con otros edificios y con el ambiente en el cual se
encuentra.
15
Análisis
Diseño
Construcción
Pruebas
Implementación
Es importante aclarar que cada una de estas las etapas son específicas de RUP, pero no
difieren mucho de una teoría ampliamente aceptada e implementada por el proceso
administrativo.
Para tener de manera más clara la ubicación física de la AS dentro del modelo presentado
por RUP, se muestra la siguiente imagen donde se señala la etapa de Diseño, junto con
las etapas antecesoras y predecesoras:
AS
16
Después de haber comprendido la AS podrás realizar esta actividad que tiene la finalidad
de identificar los principales lenguajes de descripción de arquitecturas y sus
características para hacer de manera individual una descripción de estos elementos.
Para esta actividad es importante tener presente los términos estudiados durante esta
unidad, ya que tiene la finalidad de identificar los principales patrones de arquitectura de
software y distinguir de manera personal sus principales características, haciendo una
descripción de estos elementos. Por ello presta atención a lo que a continuación se te
solicita:
Instrucciones:
17
Autoevaluación
Para reforzar los conocimientos relacionados con los temas que se abordaron en esta
primera unidad del curso, es necesario que resuelvas el cuestionario de Autoevaluación.
Recuerda que es muy importante leer cuidadosamente los planteamientos indicados y
elegir la opción adecuada para cada uno.
Autorreflexiones
18
Cierre de la unidad
Has concluido la primera unidad del curso. A través de una revisión cronológica te has
introducido al conocimiento de los principales lenguajes descriptores de arquitectura y su
posible aplicación al ámbito real; también has estudiado la forma de cómo distinguir y
aplicar los diferentes patrones arquitectónicos.
Es aconsejable que revises nuevamente la unidad en caso de que los temas que se
acaban de mencionar no te sean familiares o no los recuerdes, de no ser este tu caso, ya
estás preparado(a) para seguir con la unidad dos, en donde continuarás con la revisión de
los modelos de arquitectura más utilizados. Todo ello con el fin de obtener el conocimiento
necesario para comenzar a realizar propuestas de arquitectura al final de la unidad 2.
Fuentes de consulta
Bass, L., Clemens, P., Kazman, R. (2003). Software Architecture in Practice (2ª
Ed.). Estados Unidos: Addison Wesley.
Reynoso, C., Kicillof, N (2004). Lenguajes de Descripción de Arquitectura.
Argentina: Universidad de Buenos Aires.
19