SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
Arquitectura de software
C4model
René Guamán-Quinche
Facultad de la Energía, las Industrias y los Recursos Naturales No Renovables
Carrera de Ingeniería en Sistemas/Computación
Enero, 2022
Loja, Ecuador
2
1. Conceptos
2. Abstracción
3. Modelo C4
4. Nivel de Contexto
5. Nivel de Contenedor
6. Nivel de Componente
7. Nivel de Código
8. Notación
Agenda
Introducción
Introducción
Introducción
Introducción
• Surge como solución para aliviar la brecha entre modelo y código
• Creado por Simon Brown
• Permite comunicar la arquitectura de un sistema en función del
detalle que se quiera proporcionar
• Se basa en la frase “Map of your code”
• Es una forma de crear mapas de su código, en varios niveles
de detalle, de la misma manera que usaría algo como Google
Maps para acercar y alejar un área que le interesa.
EL MODELO C4
• Está basado en cuatro niveles que describen el sistema con
distintos grados de granularidad
• El nivel de contexto
• El nivel de contenedores
• El nivel de componentes
• El nivel de código
EL MODELO C4
EL MODELO C4
EL MODELO C4
• Para crear estos mapas de su código:
• Necesita un conjunto común de abstracciones para crear un
lenguaje ubicuo para describir la estructura estática de un
sistema de software
• El modelo C4 considera las estructuras estáticas de un sistema
de software en términos de contenedores, componentes y
código. La gente (Person) usa los sistemas de software que
construimos.
EL MODELO C4
EL MODELO C4
Sistema de software:
• Es el nivel más alto de abstracción
• Describe algo que ofrece valor a sus usuarios, sean
humanos o no
• Incluye el sistema de software que está modelando y los
otros sistemas de software de los que depende su
sistema de software (o viceversa)
• En muchos casos, un sistema de software es "propiedad
de" un solo equipo de desarrollo de software
Nivel de Contexto
• Permite tener una imagen genérica de nuestro sistema
y sus interacciones con el exterior
• En este nivel podemos especificar los sistemas
externos con los que interactúa nuestro propio sistema
• El sistema que modelamos se considera una “caja
negra”, solo nos interesan sus relaciones externas
• También permite identificar los usuarios finales que
harán uso de la funcionalidad de nuestro software
Nivel de Contexto
• Aquí el detalle no es importante
• Elementos
• Primarios: El sistema a analizar
• Soporte: Usuarios y sistemas de software conectados directamente
• Audiencia: Todos, tanto técnicos como no técnicos, dentro y
fuera del equipo de desarrollo de software
• Persona: representa a uno de los usuarios humanos de su sistema de
software (por ejemplo, actores, roles, personajes, etc.)
Nivel de Contexto
Se ha utilizado un código de colores para indicar qué sistemas de software ya
existen (los recuadros grises).
Nivel de Contexto
Mostrar el límite de la empresa
En este ejemplo ligeramente modificado, la línea discontinua representa el
límite del banco y se utiliza para ilustrar lo que hay dentro y lo que hay fuera
del banco.
Nivel de Contexto
Elementos básicos
Nivel de Contexto
Ejemplo
Nivel de Contenedores
• Estructura de alto nivel de la arquitectura y como están
distribuidas las responsabilides
• Los contenedores referencian cualquier entidad que ejecuta
código o almacena datos
• Pueden verse como unidades desplegables o ejecutables
• Ejemplos de contenedores:
• Aplicaciones web
• Servicios web
• Aplicaciones de escritorio
• Bases de datos
• Sistema de ficheros
Nivel de Contenedores
• Muestra las decisiones tecnológicas más importantes
• Elementos:
• Primarios: contenedores dentro del sistema a analizar
• Soporte: Personas y sistemas de software conectados
directamente a los contenedores
• Audiencia: Personas técnicas dentro y fuera del equipo de
desarrollo de software; incluidos arquitectos de software,
desarrolladores y personal de operaciones/soporte
Notas: este diagrama no dice nada sobre escenarios de implementación, agrupación en
clústeres, replicación, conmutación por error, etc.
Nivel de Contenedores
• La línea discontinua representa el límite del sistema de banca por
Internet y muestra los contenedores (azul claro) en su interior
• Además, se ha utilizado una forma de cilindro para representar la
base de datos
Nivel de Contenedores
Nivel de Contenedores
Contenedor (aplicaciones y almacenes de datos)
¡No Docker! En el modelo C4,
Representa una aplicación o un almacén de datos
Es algo que debe estar ejecutándose para que el sistema de software general funcione
• Aplicación web del lado del servidor:
• una aplicación web Java EE que se ejecuta en Apache Tomcat
• una aplicación ASP.NET MVC que se ejecuta en Microsoft IIS
• una aplicación Ruby on Rails que se ejecuta en WEBrick
• una aplicación Node.js, etc.
• Aplicación web del lado del cliente:
• una aplicación de JavaScript que se ejecuta en un navegador web usando Angular,
Backbone.JS, jQuery, etc.
• Aplicación de escritorio del lado del cliente:
• una aplicación de escritorio de Windows escrita con WPF,
• una aplicación de escritorio de OS X escrita con Objective-C,
• una aplicación de escritorio multiplataforma escrita con JavaFX, etc.
Nivel de Contenedores
Contenedor (aplicaciones y almacenes de datos)
Es algo que debe estar ejecutándose para que el sistema de software general funcione
• Aplicación móvil:
• una aplicación de Apple iOS,
• una aplicación de Android,
• una aplicación de Microsoft Windows Phone, etc.
• Aplicación de consola del lado del servidor:
• una aplicación independiente (por ejemplo, "public static void main"),
• un proceso por lotes, etc.
• Función sin servidor - Serverless function:
• una sola función sin servidor (por ejemplo, Amazon Lambda, Azure Function,
etc.).
Nivel de Contenedores
Contenedor (aplicaciones y almacenes de datos)
Es algo que debe estar ejecutándose para que el sistema de software general funcione
• Base de datos:
• un esquema o base de datos en un sistema de gestión de base de datos relacional,
• almacén de documentos,
• base de datos de gráficos, etc.,
• MySQL, Microsoft SQL Server, Oracle Database, MongoDB, Riak, Cassandra, Neo4j,
etc.
• Blob o almacén de contenido: un almacén de blobs (p. ej., Amazon S3, Microsoft
Azure Blob Storage, etc.) o una red de entrega de contenido (p. ej., Akamai, Amazon
CloudFront, etc.).
• Sistema de archivos: un sistema de archivos local completo o una parte de un
sistema de archivos en red más grande (por ejemplo, SAN, NAS, etc.).
• Script de shell: un único script de shell escrito en Bash, etc.
Nivel de Componentes
• Dentro de cada contenedor podemos encontrar diversos
componentes
• Los componentes representan un grupo de funcionalidades
• Los componentes pueden tener relaciones entre sí y entre los
usuarios finales
• Muestra la responsabilidad de cada componente a alto nivel, así
como los detalles de implementación (tecnología utilizada, etc.)
Nivel de Componentes
• De cada componente nos interesa saber:
• Nombre
• Responsabilidades
• Detalles de implementación
• Elementos:
• Primarios: componentes dentro del contenedor
• Soporte: contenedores, personas y sistemas de sw conectados
directamente a los componentes
• Audiencia: Arquitectos de sw y desarrolladores
Nivel de Componentes
Componente
• La palabra "componente" es un término muy sobrecargado en la industria del
desarrollo de software,
• En este contexto, es una agrupación de funciones relacionadas encapsuladas detrás
de una interfaz bien definida
• En lenguajes: Java o C#, un componente es que es una colección de clases de
implementación detrás de una interfaz
• Aspectos como la forma en que se empaquetan esos componentes (por ejemplo, un
componente frente a muchos componentes por archivo JAR, DLL, biblioteca
compartida, etc.) es una preocupación separada y ortogonal.
• Todos los componentes dentro de un contenedor normalmente se ejecutan en el
mismo espacio de proceso.
• En C4, los componentes no son unidades desplegables por separado
Nivel de Componentes
• La línea discontinua representa el límite de la aplicación API y
muestra los componentes (azul claro) dentro de ella
Nivel de Componentes
Nivel de Código
• En este nivel se muestran detalles de la implementación de cada
componente
• Se pueden utilizar diagramas de clase, de entidad relación, o
similares
Nivel de Código
• Alcance: Un solo componente.
• Elementos primarios: Elementos de código (por ejemplo,
clases, interfaces, objetos, funciones, tablas de bases de datos,
etc.) dentro del alcance del componente.
• Público objetivo: Arquitectos y desarrolladores de software.
• Recomendado para la mayoría de los equipos: no, para la
documentación de larga duración, la mayoría de los IDE pueden
generar este nivel de detalle a pedido.
Notación
Herramientas
35
Cŕeditos
• Transparencias basadas por:
• Dr. Francisco José García Peñalvo / fgarcia@usal.es, Universidad de
Salamanca, MODELO C4 INGENIERÍA DE SOFTWARE I
https://repositorio.grial.eu/bitstream/grial/2482/1/C4%20model.pdf
• https://c4model.com/
• Visualising software architecture with the C4 model
• https://www.youtube.com/watch?v=x2-rSnhpw0g&t=111s
• https://s3.amazonaws.com/static.codingthearchitecture.com/presentati
ons/aotb2019-visualising-software-architecture-with-the-c4-model.pdf
Networking académico:
Correo electrónico: rguaman@unl.edu.ec
Twitter: @rene5254
SlideShare: https://es.slideshare.net/rene5254
36
Gracias

Más contenido relacionado

La actualidad más candente

diagrama de casos de uso del negocio y del sistema
diagrama de casos de uso del negocio y del sistemadiagrama de casos de uso del negocio y del sistema
diagrama de casos de uso del negocio y del sistemaUniversidad Tecnológica
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
 
Unidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De RequerimientosUnidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De RequerimientosSergio Sanchez
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clasesNedoww Haw
 
Requerimientos Funcionales y No Funcionales
Requerimientos Funcionales y No FuncionalesRequerimientos Funcionales y No Funcionales
Requerimientos Funcionales y No FuncionalesCarlos Macallums
 
Requerimiento funcional y no funcional
Requerimiento funcional y no funcional Requerimiento funcional y no funcional
Requerimiento funcional y no funcional CristobalFicaV
 
Primeros artefactos de análisis. casos de uso
Primeros artefactos de análisis. casos de usoPrimeros artefactos de análisis. casos de uso
Primeros artefactos de análisis. casos de usoJuan Pablo Bustos Thames
 
Diccionario De Datos
Diccionario De DatosDiccionario De Datos
Diccionario De Datosnahun1385
 
Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Jose R. Hilera
 
Casos de Uso ejercicios
Casos de Uso ejerciciosCasos de Uso ejercicios
Casos de Uso ejerciciosWalter Chacon
 
Unidad 4 Mad Modelado Analisis Casos De Uso
Unidad 4 Mad Modelado Analisis Casos De UsoUnidad 4 Mad Modelado Analisis Casos De Uso
Unidad 4 Mad Modelado Analisis Casos De UsoSergio Sanchez
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetosyoiner santiago
 

La actualidad más candente (20)

Principios diseño del software
Principios diseño del software Principios diseño del software
Principios diseño del software
 
diagrama de casos de uso del negocio y del sistema
diagrama de casos de uso del negocio y del sistemadiagrama de casos de uso del negocio y del sistema
diagrama de casos de uso del negocio y del sistema
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
Unidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De RequerimientosUnidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De Requerimientos
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
Casos de uso
Casos de usoCasos de uso
Casos de uso
 
Diagrama de clases - Ejemplo monográfico 02
Diagrama de clases - Ejemplo monográfico 02Diagrama de clases - Ejemplo monográfico 02
Diagrama de clases - Ejemplo monográfico 02
 
Requerimientos Funcionales y No Funcionales
Requerimientos Funcionales y No FuncionalesRequerimientos Funcionales y No Funcionales
Requerimientos Funcionales y No Funcionales
 
Requerimiento funcional y no funcional
Requerimiento funcional y no funcional Requerimiento funcional y no funcional
Requerimiento funcional y no funcional
 
Primeros artefactos de análisis. casos de uso
Primeros artefactos de análisis. casos de usoPrimeros artefactos de análisis. casos de uso
Primeros artefactos de análisis. casos de uso
 
Diccionario De Datos
Diccionario De DatosDiccionario De Datos
Diccionario De Datos
 
Metodología WEB UWE
Metodología WEB UWEMetodología WEB UWE
Metodología WEB UWE
 
Diagramas de secuencia
Diagramas de secuenciaDiagramas de secuencia
Diagramas de secuencia
 
Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)
 
2. El proceso del software
2. El proceso del software2. El proceso del software
2. El proceso del software
 
Casos de Uso ejercicios
Casos de Uso ejerciciosCasos de Uso ejercicios
Casos de Uso ejercicios
 
Unidad 4 Mad Modelado Analisis Casos De Uso
Unidad 4 Mad Modelado Analisis Casos De UsoUnidad 4 Mad Modelado Analisis Casos De Uso
Unidad 4 Mad Modelado Analisis Casos De Uso
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetos
 
Formato ieee830(srs lleno)
Formato ieee830(srs lleno)Formato ieee830(srs lleno)
Formato ieee830(srs lleno)
 
Modelos de dominio
Modelos de dominioModelos de dominio
Modelos de dominio
 

Similar a Arquitectura de software C4model

Programación visual con VB.NET
Programación visual con VB.NETProgramación visual con VB.NET
Programación visual con VB.NETYamil Lambert
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaglfloresgilberto
 
Programación de nivel básico 1. c1.
Programación de nivel básico 1. c1.Programación de nivel básico 1. c1.
Programación de nivel básico 1. c1.DENIRAMIREZANDRADE
 
01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptxDyllanBastidas
 
Análisis y diseño de sistemas sesion 13 - diagrama de componentes y despliegue
Análisis y diseño de sistemas   sesion 13 - diagrama de componentes y despliegueAnálisis y diseño de sistemas   sesion 13 - diagrama de componentes y despliegue
Análisis y diseño de sistemas sesion 13 - diagrama de componentes y despliegueGianfrancoEduardoBra
 
Programación web
Programación webProgramación web
Programación weberic291285
 
Desarrollo aplicaciones windows c#
Desarrollo aplicaciones windows c#Desarrollo aplicaciones windows c#
Desarrollo aplicaciones windows c#Roger Campos
 
Sistemas gestores de base de datos y sql server 2008
Sistemas gestores de base de datos y sql server 2008Sistemas gestores de base de datos y sql server 2008
Sistemas gestores de base de datos y sql server 2008nadialsprom12
 
Mi Lenguaje de Programacion de Preferencia
Mi Lenguaje de Programacion de PreferenciaMi Lenguaje de Programacion de Preferencia
Mi Lenguaje de Programacion de PreferenciaNelson Rivera
 
Mi lenguaje de programacion de preferencia
Mi lenguaje de programacion de preferenciaMi lenguaje de programacion de preferencia
Mi lenguaje de programacion de preferenciaNelson Rivera
 
Introducción a Android
Introducción a AndroidIntroducción a Android
Introducción a Androidmcanalesc94
 
Backend middleware frontend (2)
Backend middleware frontend (2)Backend middleware frontend (2)
Backend middleware frontend (2)VirgCSan
 
Programación de nivel básico 1. c1. p1.
Programación de nivel básico 1. c1. p1.Programación de nivel básico 1. c1. p1.
Programación de nivel básico 1. c1. p1.DENIRAMIREZANDRADE
 

Similar a Arquitectura de software C4model (20)

Programación visual con VB.NET
Programación visual con VB.NETProgramación visual con VB.NET
Programación visual con VB.NET
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
 
Exposición CASE - IDE
Exposición CASE - IDEExposición CASE - IDE
Exposición CASE - IDE
 
Programación de nivel básico 1. c1.
Programación de nivel básico 1. c1.Programación de nivel básico 1. c1.
Programación de nivel básico 1. c1.
 
01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx
 
Análisis y diseño de sistemas sesion 13 - diagrama de componentes y despliegue
Análisis y diseño de sistemas   sesion 13 - diagrama de componentes y despliegueAnálisis y diseño de sistemas   sesion 13 - diagrama de componentes y despliegue
Análisis y diseño de sistemas sesion 13 - diagrama de componentes y despliegue
 
Programación web
Programación webProgramación web
Programación web
 
Desarrollo aplicaciones windows c#
Desarrollo aplicaciones windows c#Desarrollo aplicaciones windows c#
Desarrollo aplicaciones windows c#
 
Framework
FrameworkFramework
Framework
 
Sistemas gestores de base de datos y sql server 2008
Sistemas gestores de base de datos y sql server 2008Sistemas gestores de base de datos y sql server 2008
Sistemas gestores de base de datos y sql server 2008
 
Framework
FrameworkFramework
Framework
 
Aplicaciones java
Aplicaciones javaAplicaciones java
Aplicaciones java
 
Mi Lenguaje de Programacion de Preferencia
Mi Lenguaje de Programacion de PreferenciaMi Lenguaje de Programacion de Preferencia
Mi Lenguaje de Programacion de Preferencia
 
Mi lenguaje de programacion de preferencia
Mi lenguaje de programacion de preferenciaMi lenguaje de programacion de preferencia
Mi lenguaje de programacion de preferencia
 
Introducción a Android
Introducción a AndroidIntroducción a Android
Introducción a Android
 
C_Basico_Parte_I.pptx
C_Basico_Parte_I.pptxC_Basico_Parte_I.pptx
C_Basico_Parte_I.pptx
 
Software sao
Software saoSoftware sao
Software sao
 
Software
SoftwareSoftware
Software
 
Backend middleware frontend (2)
Backend middleware frontend (2)Backend middleware frontend (2)
Backend middleware frontend (2)
 
Programación de nivel básico 1. c1. p1.
Programación de nivel básico 1. c1. p1.Programación de nivel básico 1. c1. p1.
Programación de nivel básico 1. c1. p1.
 

Más de Rene Guaman-Quinche

Paradigma Programación Orientada a Objetos
Paradigma Programación Orientada a ObjetosParadigma Programación Orientada a Objetos
Paradigma Programación Orientada a ObjetosRene Guaman-Quinche
 
Fundamentos ingeniería de requisitos.pdf
Fundamentos ingeniería de requisitos.pdfFundamentos ingeniería de requisitos.pdf
Fundamentos ingeniería de requisitos.pdfRene Guaman-Quinche
 
Arquitectura sw varios niveles.pdf
Arquitectura sw varios niveles.pdfArquitectura sw varios niveles.pdf
Arquitectura sw varios niveles.pdfRene Guaman-Quinche
 
Introducción a los sistemas distribuidos
Introducción a los sistemas distribuidosIntroducción a los sistemas distribuidos
Introducción a los sistemas distribuidosRene Guaman-Quinche
 
Sistema de Archivos Distribuidos
Sistema de Archivos DistribuidosSistema de Archivos Distribuidos
Sistema de Archivos DistribuidosRene Guaman-Quinche
 
Unidad 2 diseño orientado a objetos
Unidad 2 diseño orientado a objetosUnidad 2 diseño orientado a objetos
Unidad 2 diseño orientado a objetosRene Guaman-Quinche
 
Tiempo, causalidad y estado global
Tiempo, causalidad y estado globalTiempo, causalidad y estado global
Tiempo, causalidad y estado globalRene Guaman-Quinche
 
Tiempo, causalidad y estado global Alberto Lafuente Teorìa
Tiempo, causalidad y estado global Alberto Lafuente TeorìaTiempo, causalidad y estado global Alberto Lafuente Teorìa
Tiempo, causalidad y estado global Alberto Lafuente TeorìaRene Guaman-Quinche
 
Tiempo, causalidad y estado global Alberto Lafuente Transparencias
Tiempo, causalidad y estado global Alberto Lafuente TransparenciasTiempo, causalidad y estado global Alberto Lafuente Transparencias
Tiempo, causalidad y estado global Alberto Lafuente TransparenciasRene Guaman-Quinche
 
Comunicacion intra procesos con socket
Comunicacion intra procesos con socketComunicacion intra procesos con socket
Comunicacion intra procesos con socketRene Guaman-Quinche
 

Más de Rene Guaman-Quinche (20)

interfaces.pdf
interfaces.pdfinterfaces.pdf
interfaces.pdf
 
Paradigma Programación Orientada a Objetos
Paradigma Programación Orientada a ObjetosParadigma Programación Orientada a Objetos
Paradigma Programación Orientada a Objetos
 
Fundamentos ingeniería de requisitos.pdf
Fundamentos ingeniería de requisitos.pdfFundamentos ingeniería de requisitos.pdf
Fundamentos ingeniería de requisitos.pdf
 
replicacion heterogenea.pdf
replicacion heterogenea.pdfreplicacion heterogenea.pdf
replicacion heterogenea.pdf
 
Elicitación de requerimientos
Elicitación de requerimientosElicitación de requerimientos
Elicitación de requerimientos
 
Arquitectura sw varios niveles.pdf
Arquitectura sw varios niveles.pdfArquitectura sw varios niveles.pdf
Arquitectura sw varios niveles.pdf
 
Hilos con Posix
Hilos con PosixHilos con Posix
Hilos con Posix
 
Introducción a los sistemas distribuidos
Introducción a los sistemas distribuidosIntroducción a los sistemas distribuidos
Introducción a los sistemas distribuidos
 
Sistema de Archivos Distribuidos
Sistema de Archivos DistribuidosSistema de Archivos Distribuidos
Sistema de Archivos Distribuidos
 
RPC
RPCRPC
RPC
 
Unidad 2 diseño orientado a objetos
Unidad 2 diseño orientado a objetosUnidad 2 diseño orientado a objetos
Unidad 2 diseño orientado a objetos
 
Tiempo, causalidad y estado global
Tiempo, causalidad y estado globalTiempo, causalidad y estado global
Tiempo, causalidad y estado global
 
Tiempo, causalidad y estado global Alberto Lafuente Teorìa
Tiempo, causalidad y estado global Alberto Lafuente TeorìaTiempo, causalidad y estado global Alberto Lafuente Teorìa
Tiempo, causalidad y estado global Alberto Lafuente Teorìa
 
Tiempo, causalidad y estado global Alberto Lafuente Transparencias
Tiempo, causalidad y estado global Alberto Lafuente TransparenciasTiempo, causalidad y estado global Alberto Lafuente Transparencias
Tiempo, causalidad y estado global Alberto Lafuente Transparencias
 
Ciclo de vida software
Ciclo de vida softwareCiclo de vida software
Ciclo de vida software
 
Comunicacion intra procesos con socket
Comunicacion intra procesos con socketComunicacion intra procesos con socket
Comunicacion intra procesos con socket
 
Modelo paso de mensajes
Modelo paso de mensajesModelo paso de mensajes
Modelo paso de mensajes
 
RMI
RMIRMI
RMI
 
Requisitos no Funcionales
Requisitos no FuncionalesRequisitos no Funcionales
Requisitos no Funcionales
 
Requisitos funcionales
Requisitos funcionalesRequisitos funcionales
Requisitos funcionales
 

Último

Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 

Último (7)

Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 

Arquitectura de software C4model

  • 1. Arquitectura de software C4model René Guamán-Quinche Facultad de la Energía, las Industrias y los Recursos Naturales No Renovables Carrera de Ingeniería en Sistemas/Computación Enero, 2022 Loja, Ecuador
  • 2. 2 1. Conceptos 2. Abstracción 3. Modelo C4 4. Nivel de Contexto 5. Nivel de Contenedor 6. Nivel de Componente 7. Nivel de Código 8. Notación Agenda
  • 7. • Surge como solución para aliviar la brecha entre modelo y código • Creado por Simon Brown • Permite comunicar la arquitectura de un sistema en función del detalle que se quiera proporcionar • Se basa en la frase “Map of your code” • Es una forma de crear mapas de su código, en varios niveles de detalle, de la misma manera que usaría algo como Google Maps para acercar y alejar un área que le interesa. EL MODELO C4
  • 8. • Está basado en cuatro niveles que describen el sistema con distintos grados de granularidad • El nivel de contexto • El nivel de contenedores • El nivel de componentes • El nivel de código EL MODELO C4
  • 10. EL MODELO C4 • Para crear estos mapas de su código: • Necesita un conjunto común de abstracciones para crear un lenguaje ubicuo para describir la estructura estática de un sistema de software • El modelo C4 considera las estructuras estáticas de un sistema de software en términos de contenedores, componentes y código. La gente (Person) usa los sistemas de software que construimos.
  • 12. EL MODELO C4 Sistema de software: • Es el nivel más alto de abstracción • Describe algo que ofrece valor a sus usuarios, sean humanos o no • Incluye el sistema de software que está modelando y los otros sistemas de software de los que depende su sistema de software (o viceversa) • En muchos casos, un sistema de software es "propiedad de" un solo equipo de desarrollo de software
  • 13. Nivel de Contexto • Permite tener una imagen genérica de nuestro sistema y sus interacciones con el exterior • En este nivel podemos especificar los sistemas externos con los que interactúa nuestro propio sistema • El sistema que modelamos se considera una “caja negra”, solo nos interesan sus relaciones externas • También permite identificar los usuarios finales que harán uso de la funcionalidad de nuestro software
  • 14. Nivel de Contexto • Aquí el detalle no es importante • Elementos • Primarios: El sistema a analizar • Soporte: Usuarios y sistemas de software conectados directamente • Audiencia: Todos, tanto técnicos como no técnicos, dentro y fuera del equipo de desarrollo de software • Persona: representa a uno de los usuarios humanos de su sistema de software (por ejemplo, actores, roles, personajes, etc.)
  • 15. Nivel de Contexto Se ha utilizado un código de colores para indicar qué sistemas de software ya existen (los recuadros grises).
  • 16. Nivel de Contexto Mostrar el límite de la empresa En este ejemplo ligeramente modificado, la línea discontinua representa el límite del banco y se utiliza para ilustrar lo que hay dentro y lo que hay fuera del banco.
  • 19. Nivel de Contenedores • Estructura de alto nivel de la arquitectura y como están distribuidas las responsabilides • Los contenedores referencian cualquier entidad que ejecuta código o almacena datos • Pueden verse como unidades desplegables o ejecutables • Ejemplos de contenedores: • Aplicaciones web • Servicios web • Aplicaciones de escritorio • Bases de datos • Sistema de ficheros
  • 20. Nivel de Contenedores • Muestra las decisiones tecnológicas más importantes • Elementos: • Primarios: contenedores dentro del sistema a analizar • Soporte: Personas y sistemas de software conectados directamente a los contenedores • Audiencia: Personas técnicas dentro y fuera del equipo de desarrollo de software; incluidos arquitectos de software, desarrolladores y personal de operaciones/soporte Notas: este diagrama no dice nada sobre escenarios de implementación, agrupación en clústeres, replicación, conmutación por error, etc.
  • 21. Nivel de Contenedores • La línea discontinua representa el límite del sistema de banca por Internet y muestra los contenedores (azul claro) en su interior • Además, se ha utilizado una forma de cilindro para representar la base de datos
  • 23. Nivel de Contenedores Contenedor (aplicaciones y almacenes de datos) ¡No Docker! En el modelo C4, Representa una aplicación o un almacén de datos Es algo que debe estar ejecutándose para que el sistema de software general funcione • Aplicación web del lado del servidor: • una aplicación web Java EE que se ejecuta en Apache Tomcat • una aplicación ASP.NET MVC que se ejecuta en Microsoft IIS • una aplicación Ruby on Rails que se ejecuta en WEBrick • una aplicación Node.js, etc. • Aplicación web del lado del cliente: • una aplicación de JavaScript que se ejecuta en un navegador web usando Angular, Backbone.JS, jQuery, etc. • Aplicación de escritorio del lado del cliente: • una aplicación de escritorio de Windows escrita con WPF, • una aplicación de escritorio de OS X escrita con Objective-C, • una aplicación de escritorio multiplataforma escrita con JavaFX, etc.
  • 24. Nivel de Contenedores Contenedor (aplicaciones y almacenes de datos) Es algo que debe estar ejecutándose para que el sistema de software general funcione • Aplicación móvil: • una aplicación de Apple iOS, • una aplicación de Android, • una aplicación de Microsoft Windows Phone, etc. • Aplicación de consola del lado del servidor: • una aplicación independiente (por ejemplo, "public static void main"), • un proceso por lotes, etc. • Función sin servidor - Serverless function: • una sola función sin servidor (por ejemplo, Amazon Lambda, Azure Function, etc.).
  • 25. Nivel de Contenedores Contenedor (aplicaciones y almacenes de datos) Es algo que debe estar ejecutándose para que el sistema de software general funcione • Base de datos: • un esquema o base de datos en un sistema de gestión de base de datos relacional, • almacén de documentos, • base de datos de gráficos, etc., • MySQL, Microsoft SQL Server, Oracle Database, MongoDB, Riak, Cassandra, Neo4j, etc. • Blob o almacén de contenido: un almacén de blobs (p. ej., Amazon S3, Microsoft Azure Blob Storage, etc.) o una red de entrega de contenido (p. ej., Akamai, Amazon CloudFront, etc.). • Sistema de archivos: un sistema de archivos local completo o una parte de un sistema de archivos en red más grande (por ejemplo, SAN, NAS, etc.). • Script de shell: un único script de shell escrito en Bash, etc.
  • 26. Nivel de Componentes • Dentro de cada contenedor podemos encontrar diversos componentes • Los componentes representan un grupo de funcionalidades • Los componentes pueden tener relaciones entre sí y entre los usuarios finales • Muestra la responsabilidad de cada componente a alto nivel, así como los detalles de implementación (tecnología utilizada, etc.)
  • 27. Nivel de Componentes • De cada componente nos interesa saber: • Nombre • Responsabilidades • Detalles de implementación • Elementos: • Primarios: componentes dentro del contenedor • Soporte: contenedores, personas y sistemas de sw conectados directamente a los componentes • Audiencia: Arquitectos de sw y desarrolladores
  • 28. Nivel de Componentes Componente • La palabra "componente" es un término muy sobrecargado en la industria del desarrollo de software, • En este contexto, es una agrupación de funciones relacionadas encapsuladas detrás de una interfaz bien definida • En lenguajes: Java o C#, un componente es que es una colección de clases de implementación detrás de una interfaz • Aspectos como la forma en que se empaquetan esos componentes (por ejemplo, un componente frente a muchos componentes por archivo JAR, DLL, biblioteca compartida, etc.) es una preocupación separada y ortogonal. • Todos los componentes dentro de un contenedor normalmente se ejecutan en el mismo espacio de proceso. • En C4, los componentes no son unidades desplegables por separado
  • 29. Nivel de Componentes • La línea discontinua representa el límite de la aplicación API y muestra los componentes (azul claro) dentro de ella
  • 31. Nivel de Código • En este nivel se muestran detalles de la implementación de cada componente • Se pueden utilizar diagramas de clase, de entidad relación, o similares
  • 32. Nivel de Código • Alcance: Un solo componente. • Elementos primarios: Elementos de código (por ejemplo, clases, interfaces, objetos, funciones, tablas de bases de datos, etc.) dentro del alcance del componente. • Público objetivo: Arquitectos y desarrolladores de software. • Recomendado para la mayoría de los equipos: no, para la documentación de larga duración, la mayoría de los IDE pueden generar este nivel de detalle a pedido.
  • 35. 35 Cŕeditos • Transparencias basadas por: • Dr. Francisco José García Peñalvo / fgarcia@usal.es, Universidad de Salamanca, MODELO C4 INGENIERÍA DE SOFTWARE I https://repositorio.grial.eu/bitstream/grial/2482/1/C4%20model.pdf • https://c4model.com/ • Visualising software architecture with the C4 model • https://www.youtube.com/watch?v=x2-rSnhpw0g&t=111s • https://s3.amazonaws.com/static.codingthearchitecture.com/presentati ons/aotb2019-visualising-software-architecture-with-the-c4-model.pdf
  • 36. Networking académico: Correo electrónico: rguaman@unl.edu.ec Twitter: @rene5254 SlideShare: https://es.slideshare.net/rene5254 36 Gracias