miércoles, 1 de agosto de 2012

Software Arquitecture In Practice - Capitulo 2


Que es la Arquitectura de Software?




Cuando un proyecto cuenta con una Arquitectura de sistema este llegará crecer y desarrollarse como se espera ya que esta es requerida tanto para el proceso de desarrollo como de mantenimiento del sistema.
Es necesario explorar el valor de la arquitectura de software como influye esta en el desarrollo de un proyecto y el valor retornado a la empresa.
Se podria definir la Aquitectura de Sistemas de Software de computador como la estructura o estructuras del sistema que implica elementos de software, estos siempre con propiedades visibles y las reaciones entre estos.
La arquitectura es una abstraccion de un sistema que suprime los detalles de los elementos que no afecta al modo en que se utiliza, y nos da claridad sobre los sistemas que  pueden comprometer mas de una estructura ya que una estructura no es la arquitectura.
Todos sistema de computador con software tiene una arquitectura de software porque cada sistema que puede ser mostrado comprende elementos y una relacion entre ellos y teniendo en cuenta que el comportamiento de los elementos es lo que permite su interaccion siempre este es parte de la arquitectura
El estudio de arquitectura de software se ha desarrollado mediante la observación de los principios de diseño que los diseñadores han seguido al trabajar  en sistemas reales.
Todos sistema tiene una una arquitectura que puede ser estudiada independientemente de cualquier conocimiento que se tenga del proceso en que se diseño o evoluciono su arquitectura.

Las etapas representan el resultado de un conjunto de decisiones arquitectónicas:

-          Patrón: Un patrón puede ser pensado como un conjunto de restricciones sobre una arquitectura de los tipos de elementos y sus patrones de interacción y estas restricciones definen un conjunto o una familia de arquitecturas que las satisfacen
son conceptos útiles que captan elementos de una arquitectura. Cada uno es el resultado de las decisiones iniciales del diseño, los patrones presentan atributos de calidad. Esta es la razón por la arquitecto elige un patrón particular y no una al azar.

-        Modelo de Referencia: una descomposición estándar de un problema conocido en partes que ayudan a   resolver el problema.




-          Arquietectura de referencia: es el mapeo de que la funcionalidad a un sistema de descomposición
Un arquitecto de software debe diseñar un sistema que ofrece la concurrencia, portabilidad, modificabilidad, usabilidad, seguridad, y similares, y que refleja la consideración de las ventajas y desventajas entre estas necesidades.


La arquitectura de software es importante por:

-       La comunicación entre las partes interesadas. Arquitectura de software representa una abstracción de un sistema común donde  todos los actores del sistema pueden usarlo  como base para el entendimiento mutuo donde, diferentes intereses se pueden expresar, negociar y resuelver a un nivel que es intelectualmente manejable incluso para sistemas grandes y complejos.

Las primeras decisiones de diseño. Arquitectura de software, manifiesta las primeras decisiones de diseño sobre un sistema.es el primer punto en el que las decisiones de diseño que rigen el sistema a ser construido pueden ser analizadas.

Estas primeras decisiones son las más difíciles crear correctamente y la más difícil de cambiar más adelante en el proceso de desarrollo, y tienen los efectos más profundos.

-          La abstracción transferible de un sistema. Arquitectura de software constituye una parte relativamente pequeña, el modelo de intelectual este modelo es transferible a través de sistemas. En particular, se puede aplicar a otros sistemas que exhiben atributo de calidad similar y los requisitos funcionales y pueden promover a gran escala de re-uso.


Las estructuras arquitectonicas se dividen segun la naturaleza de sus elementos:

-          Estructuras de Modulo: los elementos son los módulos, que son unidades de ejecución. Los módulos representan una forma basada de considerar el sistema a través del codigo. Se les asigna áreas de responsabilidad funcional

• ¿Cómo es el sistema que se estructura como un conjunto de unidades de código (módulos)?
-          Descomposicion
-          Uso
-          Capas
-          Clases o Generalizacion

-          Estructuras de Componente y conector: los elementos son los 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 los componentes).
• ¿Cómo esta estructurado el sistema como un conjunto de elementos que tienen un comportamiento en tiempo de ejecución (los componentes) y las interacciones (conectores)?
-Procesos deComunicacio
-Concurrencia
-Datos compartidos
- Cliete-Servidor

-          Estructuras de Dsitribucion: muestran la relación entre los elementos de software y los elementos en uno o más entornos externos en el que el software es creado y ejecutado

• ¿Cómo esta el sistema relaconado con las estructuras non-software en su entorno (es decir, las CPU, los sistemas de archivos, redes, equipos de desarrollo, etc)?
-Despliegue
-Implementacion
-Asignacion de Trabajo

En Las estructura del sistema hay propiedades del sistema, además de su funcionalidad, como la distribución física, el proceso de comunicación y sincronización, que deben ser considerados a nivel arquitectónico. Cada estructura ofrece un método para razonar acerca de algunos de los atributos de calidad pertinentes.

Aunque las estructuras pueden dar diferentes perspectivas del sistema, estas no son independientes. Los Elementos de una se relacionan con elementos de otra, y tenemos que razonar acerca de estas relaciones.

Las estructuras representan los puntos primarios de ingeniería de apalancamiento de una arquitectura. Las estructuras individuales traen con ellos el poder de manipular uno o más atributos de calidad. Ellas representan un poderoso de separación de las preocupacpermiten separar las necesidades o preocupacion para enfocarlas en la creación de la arquitectura


Metodo Para validar que las estructuras no estaban en conflicto una con otra:

• Lógico. Los elementos son abstracciones "clave", que se manifiestan en el mundo orientado a objetos como objetos o clases de objetos. Esta es una vista en módulo.

• Proceso. Este punto de vista aborda la concurrencia y la distribución de funciones. Es una vista de componente-y-conector.

• Desarrollo. Esta vista muestra la organización de módulos de software, bibliotecas, subsistemas, y unidades de desarrollo. Es una vista de asignación, el mapeo de software para el entorno de desarrollo.

• Física. Este punto de vista de otros elementos traza en el procesamiento y nodos de comunicación y es también un punto de vista de la asignación (que otros llaman el punto de vista de despliegue).


En la lectura se conocieron diferentes conceptos sobre las diferentes  Arquitecturas que existen, lo que es mas claro es que la Arquitectura de Software se apropia de todos los procesos y estructuras que se encuentran en un sistema, estudia la comunicación y relación entre ellas. La arquitectura de software define los componentes que llevan a cabo alguna tarea de computación, sus interfaces y la comunicación entre ellos.







La arquitectura de software nos provee un lenguaje común que se puede expresar, resolver, negociar, manejar, ordenar y entender los diferentes tipos de sistemas, esta es muy importante porque nos permite modelar posibles soluciones y ver los diferentes procesos y estructuras de un sistema, es por eso que así de esa manera podemos desarrollar grandes proyectos y dar soluciones rápidas y eficientes a un problema sistémico.





No hay comentarios:

Publicar un comentario