Arquitectura de Sofware

Description

El este documento , están los conceptos de Arquitectura de software , y de la unidad 01, del curso Arquitectura de software de la universidad del Tolima.
Jose Gregorio PalacioSanchez
Slide Set by Jose Gregorio PalacioSanchez, updated more than 1 year ago
Jose Gregorio PalacioSanchez
Created by Jose Gregorio PalacioSanchez about 4 years ago
60
0

Resource summary

Slide 1

    Arquitectura de Software
    En el mundo Donde nos encontramos hay que saber las idea de lo fundamental  para sobrevivir y las ideas básica para saber como están hechas las cosas , Al estudiar  una ingeniera  de sistemas : Pensamos  que   cuando hablábamos de sistemas nos estabamos refiriendo ha  Equipos Tecnológicos o similares.  Pero llegamos a tomar en serio el concepto " sistema " ; y si decimos que un sistema es un conjunto de elementos interrelacionados con el fin de realizar una actividad: En ingeniera de software un sistema es un conjunto de instrucciones interrelacionadas  con el fin de realizar una actividad. Entonces La Arquitectura de Software es que es? : Para algunos estudiosos del area  “El software es un lugar donde se siembran sueños y se cosechan pesadillas, una ciénega abstracta y mística en la que terribles demonios luchan contra panaceas mágicas, un mundo de hombres lobo y balas de plata. ( Brad J. Cox). pg 35.  esto es concepto muy inusual; para definirlo mejor el software es en si mismo lo que se quiere llegar hacer , si se empieza a trabajar en las ideas de un proyecto real,  sabemos que todo proyecto  debe tener una planeación ,desarrollo , ordenamiento,  presupuesto y un talento humano; con capacidad de Solucionar un problema. Nos  estaremos Preguntando  si un software es todo eso;  entonces que es la Arquitectura de Software ?     

Slide 2

    Definición de Arquitectura de Software
    En una definición tal vez demasiado amplia, David Garlan establece que la Arquitectura de Software entrelaza el requerimiento y el código, ocupando el lugar que en los gráficos antiguos se reservaba para el diseño. La definición “oficial” de Arquitectura de Software se ha acordo en el documento de IEEE Std 1471-2000, adoptada también por Microsoft, que dice asi: La Arquitectura de Software es la organización fundamental de un sistema encarnada en sus componentes, las relaciones entre ellos y el ambiente y los principios que orientan su diseño y evolución.   Aunque las literaturas de ambos campos rara vez convergen, entendemos que es productivo contrastar esa definición con la de ingeniería de software, conforme al estándar IEEE 610.12.1990: La aplicación de una estrategia sistemática, disciplinada y cuantificable al desarrollo, aplicación y mantenimiento del software; (esto es, la aplicación de la ingeniería al software); Obsérvese entonces que lo  clave de la arquitectura es la organización ( de un concepto cualitativo o estructural), mientras que la ingeniería( tiene fundamentalmente que ver con una sistematicidad susceptible de cuantificarse). Para algunos, la arquitectura de software es un conjunto de patrones que proporcionan un marco de referencia necesario para guiar la construcción de un software, permitiendo a los programadores, analistas y todo el conjunto de desarrolladores del software compartir una misma línea de trabajo y cubrir todos los objetivos y restricciones de la aplicación. Es considerada el nivel más alto en el diseño de la arquitectura de un sistema puesto que establecen la estructura, funcionamiento e interacción entre las partes del software.    

Slide 3

    Composicion de Arquitectura de Software
    ¿Qué son las arquitecturas de software? Imagina que eres un programador, analista u otro profesional que forma parte del Desarrollo de software. Necesitas conocer una serie de reglas que proporcionen el marco de referencia para guiar su construcción ¿verdad? Ese marco recibe el nombre de arquitectura de software. En la actualidad, ha sido calificada como el nivel más alto del diseño de arquitectura de un sistema y hace posible la interacción entre las distintas partes del software. Modelos de arquitectura de software, ¿los conoces? Cada nivel de diseño y desarrollo de estos sistemas presenta sus propias técnicas de análisis, sus reglas de composición, sus problemas, sus ventajas, etc., entre sus modelos podemos encontrar: Modelo dinámico. Aquí, el objetivo es describir el comportamiento del sistema a través del tiempo, y sus componentes son: modelo de máquina de estados, vista de actividades, vista de interacción... Modelo estructural. Sirve para describir los distintos tipos y relaciones estáticas que existen entre los distintos objetos de un sistema. En él encontramos: diagramas de clases, de casos de uso, de secuencia… Modelos de proceso. Pone el foco en los pasos involucrados en el desarrollo del software, de manera que la arquitectura es el resultado de seguir un script. ¿Ya sabes cuál encaja mejor con tu compañía? Todo lo que vamos a contarte a continuación define la forma de trabajar de un sistema. patrones comunes en la arquitectura de software Como te decíamos al principio, el desarrollo de software sigue una serie de pasos en su construcción, pero ¿sabes cuáles son? Aunque existen distintos modelos de arquitectura y procesos de desarrollo, podemos encontrar los siguientes arquetipos comunes, que describen los elementos y la relación entre ellos:   Conclusiones acerca de los patrones arquitectónicos Aunque todos los patrones que hemos definido en este post comunican la imagen de un sistema, no son arquitecturas en sí. El mundo de los desarrolladores es largo y complejo, pero la arquitectura de los sistemas y aplicaciones es vital para su funcionamiento. La arquitectura es quien diseña todas las entrañas del software, desde la estructura de sus datos hasta los algoritmos, y permite: Crear una base sólida para el proyecto. Definir una plataforma escalable. Garantizar un código propio mucho más visible. Reducir los costes y evitar las posibles duplicaciones. Mejorar el rendimiento y la calidad.  
    Caption: :

Slide 4

    Como te decíamos al principio, el desarrollo de software sigue una serie de pasos en su construcción, pero ¿sabes cuáles son? Aunque existen distintos modelos de arquitectura y procesos de desarrollo, podemos encontrar los siguientes arquetipos comunes, que describen los elementos y la relación entre ellos.
    Patrones en la Arquitectura de software
    Caption: : video tomado de YouTube.

Slide 5

    La arquitectura por capas  es un patrón que contiene grupos de sub-tareas , este tipo de estructuras se pueden separar por capas para mejorar una tarea, los componentes están organizados  en capas horizontales, cada capa tiene un roll y una responsabilidad única dentro de la aplicación. el patrón no define cuantas capas son y ni de que tipo deben ser. Puede utilizarse para estructurar programas que pueden descomponerse en subtareas. Cada una de ellas proporciona servicios a la capa siguiente y podemos encontrar las 4 comunes: capa de presentación, de aplicación, de lógica de negocios y de acceso a datos.
    Programación por capas.

Slide 6

    Arquitectura de microservicios.
    El patrón de Arquitectura de microservicios habla en que se puede desarrollar una aplicación como un conjunto de pequeños servicios, y en el que cada microservicio corre en su propio proceso; si estos microservicios necesitan comunicarsen,  lo hacen con mecanismos muy livianos. Normalmente estos estos servicios se desarrollan alrededor de las necesidades del negocio, cada proceso tiene que estar soportado por un proceso de despliegue automático.  Basa la construcción de las aplicaciones en un conjunto de pequeños servicios que se ejecutan en su propio proceso y se comunican con mecanismos ligeros. Por ejemplo: una API con recursos HTTP. Cada uno de estos servicios independientes se encargará de implementar una funcionalidad.

Slide 7

    Patrón cliente-servidor.
    El primero, se encarga de proporcionar servicios a múltiples componentes del cliente, mientras que este solicita servicios del servidor. Se trata de una especie de ‘escucha’ constante de las solicitudes del cliente. En la vida real es como encontrar un bien o servicio , donde se da respuestas  a una solicitud, algo similar ocurre en esta arquitectura , los clientes son los que solicitan infamación y un servidor es una maquina  puedo funcionar como bases de datos o como gestor de bases de datos, que almacena información. esto se realiza mediante protocolos. 

Slide 8

    Patrón maestro-esclavo.
    Suele utilizarse para replicaciones en la base de datos (la maestra es la fuente autorizada y las esclavas se sincronizan con ella). Estas dos partes distribuyen el trabajo y calculan el resultado final de toda la actividad que realizan dichos esclavos. Este patrón es una arquitectura fundamental que los desarrolladores utilizan cuando tienen dos o más procesos que necesitan ejecutarse de forma simultánea.

Slide 9

    Filtro de tubería.
    Se utiliza, sobre todo, para la estructura de sistemas que producen y procesan una secuencia de datos. En la ingeniería de software, el filtro de tubería se aplica cuando los datos de entrada deben transformarse en datos de salida a través de componentes para el cálculo. Los componentes reciben el nombre de ‘filtros’ conectados entre sí por ‘tuberías’ que transmiten los datos.

Slide 10

    Patrones de Diseño en Arquitectura
    Patrones de diseño y arquitectura. Los patrones de diseño expresan esquemas para definir estructuras de diseño (o sus relaciones) con las que construir sistemas de software. Los patrones de arquitectura expresan un esquema organizativo estructural fundamental para sistemas de software. Patrones de diseño GRASP Los patrones GRASP representan los principios básicos de la asignación de responsabilidades a objetos, expresados en forma de patrones. GRASP es el acrónimo para General Responsibility Assignment Software Patterns (Patrones Generales de Software para Asignar Responsabilidades). Patrón de arquitectura MVC El patrón de arquitectura MVC, conocido por sus siglas en inglés Model View Controller, que significa Modelo Vista Controlador, permite realizar la programación multicapa, separando en tres componentes distintos los datos de una aplicación, la interfaz del usuario y la lógica de control. Este patrón se ve usualmente en aplicaciones web, donde la vista es la página Html y el código que provee de datos dinámicos a la página, el modelo es el sistema de gestión de base de datos y el controlador representa la lógica del negocio, que está formado por tres niveles:  

Slide 11

    Patrones básicos de asignación de responsabilidades Experto: Se encarga de asignar una responsabilidad al experto en información, o sea, aquella clase que cuenta con la información necesaria para cumplir la responsabilidad. Creador: Este patrón es el responsable de asignarle a la clase B la responsabilidad de crear una instancia de clase A. B es un creador de los objetos A. Alta Cohesión: Asigna una responsabilidad de forma tal que la cohesión siga siendo alta. Bajo Acoplamiento: Este patrón es el encargado de asignar una responsabilidad para conservar bajo acoplamiento. Controlador: Asigna la responsabilidad del manejo de un mensaje de los eventos de un sistema a una clase. Patrones de diseño GoF Los patrones GoF (Gang of Four, en español Pandilla de los Cuatro, formada por Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides) se clasifican en 3 categorías basadas en su propósito: creacionales, estructurales y de comportamiento. Creacionales: Los patrones creacionales abstraen el proceso de creación de instancias y ocultan los detalles de cómo los objetos son creados o inicializados.
    Estructurales: Los patrones estructurales se ocupan de cómo las clases y objetos se combinan para formar grandes estructuras y proporcionar nuevas funcionalidades. Comportamiento: Los patrones de comportamiento están relacionadas con los algoritmos y la asignación de responsabilidades entre los objetos. Son utilizados para organizar, manejar y combinar comportamientos. Modelo: representa la información con la que trabaja la aplicación, o sea, su lógica de negocio. Vista: convierte el modelo en una página web que facilita al usuario interactuar con ella. Controlador: es el encargado de procesar las interacciones del usuario y ejecuta los cambios adecuados en el modelo o en la vista.La arquitectura MVC separa la lógica de negocio (el modelo) y la presentación (la vista), lo que permite un mantenimiento más sencillo de las aplicaciones. El controlador es el encargado de aislar al modelo y a la vista de los detalles del protocolo usado para las peticiones (HTTP, consola de comandos, email, etc.). El modelo se encarga de la abstracción de la lógica referida a los datos, lo que permite que la vista y las acciones sean independientes de, por ejemplo, el tipo de gestor de bases de datos que la aplicación utiliza.
Show full summary Hide full summary

Similar

Introducción a la Ingeniería de Software
David Pacheco Ji
Ingeniería de Software
Michael F. Gonzalez
Glosario de términos de Ingeniería de Software
Eduardo Ahumada-Tello
Codigo de Etica del Ingeniero de software
ycjc1994
Temario Ingenieria de Software
Héctor Cruz
Estructura base de la metodología TSP
hector martinez
ÉTICA DEL INGENIERO DE SOFTWARE
Richard Esparza
Arquitectura de software 4+1 UML
Luis Galicia
METODOLOGÍAS CLÁSICAS
Carla Gamboa
Mantenimiento Software
Andrea Basantes