Está en la página 1de 23

INGENIERÍA DE DISEÑO

UNIDAD TEMÁTICA II
PROFESORA ROCÍO LETICIA SALAS CRUZ
ARQUITECTURA DE
SOFTWARE
¿QUÉ ES?

Según el Software Engineering Institute, la arquitectura de


software se refiere a las estructuras de un sistema, compuestas por
elementos con propiedades visibles de forma externa y las
relaciones que existen entre ellos.

Es decir, estos elementos pueden ser objetos, clases, componentes,


archivos, nodos, directorios y configuraciones.
PATRONES DE
DISEÑO
DEFINICIÓN
Son soluciones a problemas
comunes que ya han sido
planteados y resueltos de forma
óptima, comprobada y
fundamentalmente certera y por
ende no es necesario gastar tiempo
en reinventar el hilo negro.
CREACIONALES

• Resuelven problemas relacionados a la construcción


de objetos y los patrones de este tipo nos ayudan a
encapsular (aislar) y abstraer dicho proceso de
creación
Builder Factory Method Abstract Factory Singleton

• Simplifica y • Construye • Manejar • Instancias


divide la objetos objetos de públicas
lógica de genéricos sin categorías únicas
construir importarle el generales, pero accesibles
objetos muy subtipo sin perder el durante toda la
grandes concreto subtipo ejecución de
concreto un programa
ESTRUCTURALES

• Solucionan problemas relacionados a lo que se conoce


como composición de clases y objetos, esto es, la
adición de instancias distintas que comprenden los
atributos de una instancia en particular
Composite Decorator Facade

• Reunir objetos • Agregar • Agrupar distintos


más simples para comportamientos servicios o
construir otros específicos funcionalidades
más complejos dinámicamente a en una interfaz de
un objeto acceso común
COMPORTAMIENTO

• Solucionan problemas relacionados a lo que se conoce


como composición de clases y objetos, esto es, la
adición de instancias distintas que comprenden los
atributos de una instancia en particular
Observer Strategy

• Poder hacer que instancias de • Otorga la capacidad de manejar


una clase estén pendientes de distintas formas de realizar una
las acciones que realizan acción determinando cuándo es
instancias de otra clase conveniente usar cierta forma
de resolver el mismo problema
IMPORTANCIA

Soluciones
Facilitan la
Son universales fiables Agilizan el
mantenibilidad y
y estandarizados totalmente desarrollo
legibilidad
comprobadas
MVC
M O D E L O V I S TA C O N T R O L A D O R
Es una de las arquitecturas más
utilizadas en la actualidad desde
hace muchos años.

Principalmente usado en el ámbito


de los sistemas web.

Su característica principal es la de
abstraer en 3 capas especializadas
todo lo concerniente a una
aplicación.
COMPONENTES

Modelo

• Tiene como objetivo englobar todos los datos e información con la cuál interactúe el sistema. Es
decir, bases de datos, archivos de información o recursos.

Vista

• Presentación de la información al usuario. Es la capa que interactúa directamente con el usuario.

Controlador

• Se encuentra la lógica de negocio de nuestra aplicación y donde se llevan a cabo todos los
procesos.
MVVW
MODEL VIEW VIEWMODEL
Esta arquitectura nació como una
alternativa a aplicarse en la
construcción de la parte de la UI en
las aplicaciones web, pero pronto
fue adoptada para el desarrollo de
aplicaciones móviles donde
actualmente es la arquitectura más
popular.
COMPONENTES

Model

• Al igual que en el MVC, la capa Model contiene todo lo relacionado a la información y datos que
maneje la aplicación principalmente JSON y clases simples.

View

• Tenemos que hace referencia a la interfaz de usuario, principalmente haciendo uso de XML.

ViewModel

• Es una capa que se encarga de responder a los eventos que se disparen en la interfaz de usuario ya sea
modificando directamente de algún modo la UI o bien, accediendo a la información de la capa Model.
MICROSERVICIOS
A L T E R N A T I VA A A R Q U I T E C T U R A S
MONOLÍTICAS
Nace para obtener más flexibilidad
y reducir los costos de implementar
cambios en aplicaciones de gran
envergadura.

También responde a la necesidad


de tener que usar distintas
tecnologías al mismo tiempo dado
que las necesidades del sistema no
pueden ser cubiertas de forma
satisfactoria por una sola.
VENTAJAS
Flexibilidad

• Permite distribuir de mejor manera los recursos sólo a aquellos módulos –microservicios- que así lo requieran
y no gastar poder de cómputo en otros que no lo requieran

Libertad tecnológica

• Implementaciones usando distintos lenguajes o bases de datos pueden coexistir y así aprovechar las fortalezas
específicas que cada lenguaje posee con respecto a los demás en problemas específicos.

Facilidad de despliegue

• Los microservicios son autónomos esto quiere decir que cada módulo se ejecuta como una única aplicación
ligera por lo que para introducir cambios no se tiene que interrumpir la ejecución de todo el sistema sino sólo
del microservicio en cuestión.
DESVENTAJAS
Complejidad

• El bajo acoplamiento que caracteriza a los microservicios suele dar problemas porque es más complicado abstraer un
servicio para que sea totalmente autónomo si este maneja procesos de negocio muy grandes

Difícil integración con bases de datos

• Suele ser difícil respetar la filosofía de los microservicios en un contexto de bases de datos, principalmente
relacionales, pues idealmente cada microservicio debería tener su propia base de datos, pero es difícil fragmentar los
esquemas de bases de datos de este modo porque generalmente toda la información está fuertemente relacionada entre

Diversidad de recursos técnicos

• La ventaja de los microservicios se sustenta mucho en la libertad tecnológica y esto implica tener capacidad de
costear personal altamente especializado en diversas tecnologías lo cual puede resultar costoso
ILUSTRACIONES

• Todas las ilustraciones usadas en esta diapositiva han sido tomadas de los íconos disponibles
dentro de power point.

También podría gustarte