SlideShare una empresa de Scribd logo
1 de 31
Diseño modular de
sistemas
Desde el diseño general, podemos facilitar la entrega de software:
• En menos tiempo
• Con menos conflictos
• Y menos defectos
Introducción
¿Por qué queremos seguir lineamientos de diseño de
sistemas?
¿Qué es un diseño modular?
Sus ventajas y cómo lograrlo.
¿Por qué queremos seguir lineamientos
de diseño de sistemas?
En nuestro día a día, vivimos inconvenientes y dificultades debido a que las relaciones
entre las piezas de software no siguen patrones establecidos.
Esto nos afecta directamente:
1. Tardamos mucho tiempo haciendo cambios aparentemente sencillos.
2. Producimos incidentes aunque hacemos análisis cuidadosos y pruebas.
3. Nuestros esfuerzos de migración a nuevas tecnologías son muy costosos.
Esto quiere decir que no estamos en control debido a la complejidad del software, y
dicha complejidad se reduce si aplicamos líneas de diseño modular.
Esta guía trata con el diseño general de las piezas de software. Otro tema esencial es
el diseño del código fuente y sus algoritmos.
Empecemos definiendo qué es un
sistema
Llamamos un sistema a un conjunto de funcionalidades que están relacionadas y que operan
sobre una base de datos. En ciertos contextos, llamamos un “Servicio SINPE” a un sistema
dentro de la plataforma SINPE.
Un sistema se compone de todos los componentes de aplicación (DLLs), Servicios web
(webservices, wcfs) e interfaces graficas (web, desktop, etc).
Cada sistema es dueño de los objetos de base de datos que tienen que ver con sus
funcionalidades.
Por ejemplo, el servicio TVA es el dueño de todas sus Tablas. Si hace un cambio en una de sus
tablas, es responsable de que todo procedimiento almacenado y vista que opere sobre sus
tablas siga funcionando correctamente .
Igualmente, si hace un cambio en uno de sus componentes de aplicación, es responsable de
que todos sus clientes funcionen correctamente.
¿Qué es un diseño modular?
Llamaremos diseño modular a la idea de que la organización jerárquica de cualquier
sistema ayuda a mantener el orden y el control.
La naturaleza y nuestros mismos cuerpos siguen un diseño modular, donde los
órganos se componen de células que a su vez tienen componentes internos. Así se
mantiene el orden en el intercambio de información.
Las ventajas del diseño modular en
software
1. Nos permite hacer cambios con el mínimo impacto y riesgo.
2. Nos permite realizar desarrollos y liberaciones en paralelo y con menos conflictos.
Cómo identificar los
builds
Inicie con un buen modelo de casos de uso
Cada build es un canal de entrada.
Un sistema ofrece servicios por distintos
canales
Estos canales de entrada de datos serán la clave para lograr una separación adecuada.
CDF
ERP Otros sistemas
que necesitan
consultar datos
de cuentas
CalendarizadorPersonas
website webservice
webservice
Un build es un canal de entrada de datos
Bccr.Sinpe.Cdf.
ProcesosCalendarizados
Bccr.Sinpe.Cdf.Opciones
Bccr.Sinpe.Cdf.Erp Bccr.Sinpe.Cdf.Consultas
ERP Otros sistemas
que necesitan
consultar datos
de cuentas
Calendarizador
Personas
website webservice
webservice wcf
¿Cómo lograr el diseño modular?
1. Definiremos cómo dividir un sistema completo en unidades a las que llamaremos
Builds.
2. Definiremos cómo se pueden comunicar los Builds.
TVA GSP
¿Cómo identificar los builds de un
sistema?
A partir del modelo de casos de uso, identifique los distintos canales de entrada de
datos:
“Personas que usan el UI”: un website
“Contabilidad”: un webservice
“Entidad origen”: servicios wcf
“Hacienda”: webservices
“Procesos calendarizados”: servicios wcf.
Si cada canal de entrada es ejecutado por una pieza de software independiente,
entonces podemos entender, cambiar y liberar cambios en ese canal sin tener que
modificar o probar los demás.
Esto nos permite hacer desarrollos en paralelo para cada canal de entrada, lo que
implica menos conflictos de permisos y tiempo de desarrollo.
Un canal de entrada sirve a un tipo de
actor
CDF
ERP Otros sistemas
que necesitan
consultar datos
de cuentas
Calendarizador
Personas
website webservice
webservice
Cada canal de entrada de datos tendrá un
build para servicios que sólo él necesita.
Un ejemplo, el sistema PVB
Este sistema tiene los siguientes canales de entrada, es decir, los casos de uso son
iniciados por medio de:
-Un sitio web para funcionarios internos
-Un sitio web por medio de internet
-Ejecución automática de procesos calendarizados
-Consultas para otros sistemas
Con esta información general, podemos separar el sistema en cuatro builds. Cada uno
es independiente de los demás. Todos comparten y encapsulan su base de datos.
Cómo manejar las
relaciones
Los componentes de un build
Los builds encapsulan la base de datos
El manejo de referencias entre builds
Los builds protegen la base de datos
Los componentes de un build
Un build tiene un solo componente como un canal de entrada. Por ejemplo, un
website, wcf o webservice:
1. Si un build contiene un website, no da servicios WCF a otros sistemas.
2. Si ofrece servicios WCF para el sistema ERP, no contiene servicios Webservice
para la Contabilidad.
Los componentes de un build son utilizados solamente dentro del mismo build.
Un build puede acceder directamente a la base de datos del mismo sistema.
Bccr.Sinpe.Rex.Opciones
Personas
website
UI DS
Base de
datos de
Rex
Los builds encapsulan su base de datos
Bccr.Sinpe.Cdf.
ProcesosCalendarizados
Bccr.Sinpe.Cdf.Opciones
Bccr.Sinpe.Cdf.Erp Bccr.Sinpe.Cdf.Consultas
ERP Otros sistemas
que necesitan
consultar datos
de cuentas
Calendarizador
Personas
website webservice
webservice wcf
Para mantener un diseño modular, ningún otro sistema debe acceder a la base de datos ni a los DLLs
del servicio. Esto aplica también para nuestra base de datos la cual no accede a objetos de base de
datos de otros servicios o sistemas. Esta línea de diseño también abarca las vistas y llaves foráneas.
Con esto, encapsulamos los detalles de la persistencia de los datos y facilitamos los cambios a futuro.
Manejo de las referencias entre builds
Un build puede utilizar otros builds a través de servicios (wcf, webservice, web api).
No accede DLLs o a objetos de base de datos de otros sistemas.
Bccr.Sinpe.Cdf.Opciones
Personas
website
Objetos de base
de datos de otro
servicio
DLLs de otro
build
Los builds protegen su base de datos
Bccr.Sinpe.Cdf.
ProcesosCalendarizados
Bccr.Sinpe.Cdf.Opciones
Bccr.Sinpe.Cdf.Erp Bccr.Sinpe.Cdf.Consultas
website webservice
webservice wcf
Otros sistemas
Deberíamos poder modificar cualquier aspecto de la base de datos de
un sistema y los únicos impactados por los cambios deberían ser los
builds del propio sistema. Esto nos hace mas eficientes y confiables.
Respecto al rendimiento
¿Comunicar nuestros sistemas a través de servicios podría afectar el rendimiento?
Sabemos que lo más rápido es hacer las consultas directamente dentro de una sola
base de datos, sin embargo para poder mantener bajo control la complejidad de los
sistemas necesitamos mantener una separación de los esquemas de base de datos.
Lo más importante es que tengamos visibilidad del rendimiento de cada funcionalidad
que desarrollemos y así podemos optimizar cada consulta para que todo el proceso
tenga un rendimiento aceptable.
Para esto, utilice un profiler como Prefix para identificar el rendimiento de cada punto
de integración de la aplicación: http://stackify.com/prefix
Stackify Prefix
Esta herramienta se instala en la PC
de desarrollo y nos muestra el
rendimiento de:
Llamados web http, json
Llamados WCF, WS, Web APÍ
Consultas a base de datos
Excepciones
Etc.
http://stackify.com/prefix
Liberaciones
Un build es una unidad de liberación.
Los drops son los instaladores versionados.
Un build es una unidad de liberación
Todos los componentes del build se compilan, empaquetan y liberan siempre juntos.
Una separación adecuada de builds nos permite hacer cambios en paralelo, lo cual
nos ayuda a entregar software mas rápido.
Bccr.Sinpe.Rex.Opciones
Personas
website
UI DS Negocio
Base de
datos de
Rex
Drops – los instaladores versionados
Cada build es integrado por un servidor de integración continua, y genera un Drop.
Un Drop contiene todo lo necesario para instalar el software (componentes e
instrucciones para su instalación automática).
El Drop puede instalar solamente los componentes de su build, nunca los
componentes de otros Builds o componentes de terceros.
Los drops tienen etiquetas con su numero de versión, lo que permite una trazabilidad
completa desde del código fuente hasta los componentes en producción.
Por ejemplo, Bccr.Firma.Fva.Cliente-401 significa que en TFS hay un Label que se
puede consultar para obtener el código fuente que generó ese Drop. Además, en LAS
se registra esa versión, sus dependencias y las liberaciones asociadas.
Análisis de
dependencias
La importancia
¿Cómo analizar componentes?
¿Cómo analizar la base de datos?
La importancia de analizar las
dependencias de un sistema
El diseño modular nos ayuda a mantener las dependencias bajo control.
Es decir, cuando tenemos que cambiar un sistema queremos afectar a la mínima
cantidad de elementos para tardar menos tiempo y reducir el riesgo de incidentes.
Esto quiere decir, que con cada relación que agreguemos debemos revisar que se
respeten los lineamientos.
Este análisis de dependencias lo realizamos de dos maneras:
1. Con el sitio web de componentes
2. Con el SQL Server Management Studio
¿Cómo analizar las dependencias de mis
componentes?
Cada vez que un build de integración
continua se ejecuta, se analiza las
referencias de sus componentes hacia
DLLs o a WCFs, y dicha informción se
guarda en una base de datos.
En http://ponce/componentes, se
puede hacer consultas de dichas
dependencias:
- Entre componentes
- Entre builds.
- Entre sistemas (soluciones
tecnológicas)
¿Cómo analizar las dependencias de
base de datos?
En SQL Server Management Studio,
1. Verifique que sus objetos de base de datos no
referencian a objetos de otros sistemas.
2. Verifique que otros sistemas no referencien sus objetos.
Sabemos que las dependencias con Triggers pueden no
mostrarse en esta vista, por lo que en el siguiente slide
damos la opción más completa.
Idealmente, cada sistema debe poseer su base de datos
independiente.
La búsqueda más completa de
dependencias de base de datos
Para buscar en el código de la base de datos, consulte la tabla Syscomments. Esta
tabla del sistema contiene el código que define los procedimientos almacenados,
vistas y funciones.
select o.name, o.type
from syscomments c
inner join sysobjects o on o.id = c.id
where
c.text like '%CLCChequeAct%'
¿Por qué debo ocuparme de tantos
detalles?
Como profesionales, cada vez que modificamos un elemento de software somos
responsables por el buen funcionamiento de todos los otros elementos que lo
utilizan.
No hay diferencia si ese elemento es una clase .NET o un objeto de base de datos. Lo
más importante es que si no somos cuidadosos en este análisis, podríamos ocasionar
inconvenientes a las personas que dependen de nuestro software.
Conclusiones
1. Un sistema organizado con builds nos permite realizar desarrollos y liberaciones en
paralelo y con menos conflictos.
2. El diseño modular de los builds y su base de datos nos permite hacer cambios con
el mínimo impacto y riesgo.
Diseño modular de
sistemas
Desde el diseño general, podemos facilitar la entrega de software:
• En menos tiempo
• Con menos conflictos
• Y menos defectos

Más contenido relacionado

La actualidad más candente

с- ми_за-откриване_на_атаки(ids)
с- ми_за-откриване_на_атаки(ids)с- ми_за-откриване_на_атаки(ids)
с- ми_за-откриване_на_атаки(ids)
ssalieva
 
Importance Of A Security Policy
Importance Of A Security PolicyImportance Of A Security Policy
Importance Of A Security Policy
charlesgarrett
 

La actualidad más candente (20)

Information Security Management System ISO/IEC 27001:2005
Information Security Management System ISO/IEC 27001:2005Information Security Management System ISO/IEC 27001:2005
Information Security Management System ISO/IEC 27001:2005
 
Ransomware Resistance
Ransomware ResistanceRansomware Resistance
Ransomware Resistance
 
VULNERABILITIES AND EXPLOITATION IN COMPUTER SYSTEM – PAST, PRESENT, AND FUTURE
VULNERABILITIES AND EXPLOITATION IN COMPUTER SYSTEM – PAST, PRESENT, AND FUTUREVULNERABILITIES AND EXPLOITATION IN COMPUTER SYSTEM – PAST, PRESENT, AND FUTURE
VULNERABILITIES AND EXPLOITATION IN COMPUTER SYSTEM – PAST, PRESENT, AND FUTURE
 
с- ми_за-откриване_на_атаки(ids)
с- ми_за-откриване_на_атаки(ids)с- ми_за-откриване_на_атаки(ids)
с- ми_за-откриване_на_атаки(ids)
 
Penetration testing reporting and methodology
Penetration testing reporting and methodologyPenetration testing reporting and methodology
Penetration testing reporting and methodology
 
Importance Of A Security Policy
Importance Of A Security PolicyImportance Of A Security Policy
Importance Of A Security Policy
 
Global Cyber Security Outlook - Deloitte (Hotel_Digital_Security_Seminar_Sept...
Global Cyber Security Outlook - Deloitte (Hotel_Digital_Security_Seminar_Sept...Global Cyber Security Outlook - Deloitte (Hotel_Digital_Security_Seminar_Sept...
Global Cyber Security Outlook - Deloitte (Hotel_Digital_Security_Seminar_Sept...
 
Incident and Problem management simplified
Incident and Problem management simplifiedIncident and Problem management simplified
Incident and Problem management simplified
 
Information Security between Best Practices and ISO Standards
Information Security between Best Practices and ISO StandardsInformation Security between Best Practices and ISO Standards
Information Security between Best Practices and ISO Standards
 
ISO 27005:2022 Overview 221028.pdf
ISO 27005:2022 Overview 221028.pdfISO 27005:2022 Overview 221028.pdf
ISO 27005:2022 Overview 221028.pdf
 
Netpluz Managed SOC - MSS Service
Netpluz Managed SOC - MSS Service Netpluz Managed SOC - MSS Service
Netpluz Managed SOC - MSS Service
 
Cybersecurity Audit
Cybersecurity AuditCybersecurity Audit
Cybersecurity Audit
 
ITSM Toolset Selection
ITSM Toolset SelectionITSM Toolset Selection
ITSM Toolset Selection
 
8 Key Elements to Modern IT Operations Management with a Digital Operations C...
8 Key Elements to Modern IT Operations Management with a Digital Operations C...8 Key Elements to Modern IT Operations Management with a Digital Operations C...
8 Key Elements to Modern IT Operations Management with a Digital Operations C...
 
ISO 27001 In The Age Of Privacy
ISO 27001 In The Age Of PrivacyISO 27001 In The Age Of Privacy
ISO 27001 In The Age Of Privacy
 
Information security management system (isms) overview
Information security management system (isms) overviewInformation security management system (isms) overview
Information security management system (isms) overview
 
Identity & Access Management by K. K. Mookhey
Identity & Access Management by K. K. MookheyIdentity & Access Management by K. K. Mookhey
Identity & Access Management by K. K. Mookhey
 
Cybersecurity Risks for Businesses
Cybersecurity Risks for BusinessesCybersecurity Risks for Businesses
Cybersecurity Risks for Businesses
 
IBM Security QRadar
 IBM Security QRadar IBM Security QRadar
IBM Security QRadar
 
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngPhân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
 

Similar a Guia para el diseño modular de sistemas

Fundam servclient
Fundam servclientFundam servclient
Fundam servclient
tvazamar
 
Arquitectura 2
Arquitectura 2Arquitectura 2
Arquitectura 2
bistasa
 
Trabajo 2 exposicion
Trabajo 2 exposicionTrabajo 2 exposicion
Trabajo 2 exposicion
Evelin Oña
 
Unidad ii
Unidad iiUnidad ii
Unidad ii
Orlys05
 

Similar a Guia para el diseño modular de sistemas (20)

Clase De Fds22
Clase De Fds22Clase De Fds22
Clase De Fds22
 
3 capas
3 capas3 capas
3 capas
 
Fundam servclient
Fundam servclientFundam servclient
Fundam servclient
 
Arquitectura de Software
Arquitectura de SoftwareArquitectura de Software
Arquitectura de Software
 
Arquitecturas centralizadas
Arquitecturas centralizadasArquitecturas centralizadas
Arquitecturas centralizadas
 
Unidad 2 - Arquitectura.pptx
Unidad 2 - Arquitectura.pptxUnidad 2 - Arquitectura.pptx
Unidad 2 - Arquitectura.pptx
 
Arquitectura_de_microservicios.pdf
Arquitectura_de_microservicios.pdfArquitectura_de_microservicios.pdf
Arquitectura_de_microservicios.pdf
 
DISEÑO DE SISTEMAS.pptx
DISEÑO DE SISTEMAS.pptxDISEÑO DE SISTEMAS.pptx
DISEÑO DE SISTEMAS.pptx
 
Proyecto
ProyectoProyecto
Proyecto
 
Arquitecturas de software
Arquitecturas de software Arquitecturas de software
Arquitecturas de software
 
Introducción a SOR
Introducción a SORIntroducción a SOR
Introducción a SOR
 
Software
SoftwareSoftware
Software
 
Modelos de procesos de software(completo)
Modelos de procesos de software(completo)Modelos de procesos de software(completo)
Modelos de procesos de software(completo)
 
Arquitectura 2
Arquitectura 2Arquitectura 2
Arquitectura 2
 
Arquitectura
ArquitecturaArquitectura
Arquitectura
 
Arquitectura Web
Arquitectura WebArquitectura Web
Arquitectura Web
 
SOA en la Práctica: WCF & WSSF
SOA en la Práctica: WCF & WSSFSOA en la Práctica: WCF & WSSF
SOA en la Práctica: WCF & WSSF
 
Sistema de ventas, compras y almacén
Sistema de ventas, compras y almacénSistema de ventas, compras y almacén
Sistema de ventas, compras y almacén
 
Trabajo 2 exposicion
Trabajo 2 exposicionTrabajo 2 exposicion
Trabajo 2 exposicion
 
Unidad ii
Unidad iiUnidad ii
Unidad ii
 

Más de Oscar Centeno (7)

Documentación útil
Documentación útilDocumentación útil
Documentación útil
 
Taller - diseño gráfico robusto
Taller - diseño gráfico robustoTaller - diseño gráfico robusto
Taller - diseño gráfico robusto
 
Componentes: Organización
Componentes: OrganizaciónComponentes: Organización
Componentes: Organización
 
Componentes: Casos de uso
Componentes: Casos de usoComponentes: Casos de uso
Componentes: Casos de uso
 
Componentes: Definición y tipos
Componentes: Definición y tiposComponentes: Definición y tipos
Componentes: Definición y tipos
 
3 keys for enabling an agile software delivery
3 keys for enabling an agile software delivery3 keys for enabling an agile software delivery
3 keys for enabling an agile software delivery
 
Cómo descargar código .net de git hub
Cómo descargar código .net de git hubCómo descargar código .net de git hub
Cómo descargar código .net de git hub
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 
QUINTA SEXTA GENERACION de COMPUTADORAS
QUINTA  SEXTA GENERACION de COMPUTADORASQUINTA  SEXTA GENERACION de COMPUTADORAS
QUINTA SEXTA GENERACION de COMPUTADORAS
Marc Liust
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
Yanitza28
 

Último (18)

Función del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionFunción del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacion
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptxAVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Editorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfEditorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdf
 
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
10°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-810°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-8
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
QUINTA SEXTA GENERACION de COMPUTADORAS
QUINTA  SEXTA GENERACION de COMPUTADORASQUINTA  SEXTA GENERACION de COMPUTADORAS
QUINTA SEXTA GENERACION de COMPUTADORAS
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 

Guia para el diseño modular de sistemas

  • 1. Diseño modular de sistemas Desde el diseño general, podemos facilitar la entrega de software: • En menos tiempo • Con menos conflictos • Y menos defectos
  • 2. Introducción ¿Por qué queremos seguir lineamientos de diseño de sistemas? ¿Qué es un diseño modular? Sus ventajas y cómo lograrlo.
  • 3. ¿Por qué queremos seguir lineamientos de diseño de sistemas? En nuestro día a día, vivimos inconvenientes y dificultades debido a que las relaciones entre las piezas de software no siguen patrones establecidos. Esto nos afecta directamente: 1. Tardamos mucho tiempo haciendo cambios aparentemente sencillos. 2. Producimos incidentes aunque hacemos análisis cuidadosos y pruebas. 3. Nuestros esfuerzos de migración a nuevas tecnologías son muy costosos. Esto quiere decir que no estamos en control debido a la complejidad del software, y dicha complejidad se reduce si aplicamos líneas de diseño modular. Esta guía trata con el diseño general de las piezas de software. Otro tema esencial es el diseño del código fuente y sus algoritmos.
  • 4. Empecemos definiendo qué es un sistema Llamamos un sistema a un conjunto de funcionalidades que están relacionadas y que operan sobre una base de datos. En ciertos contextos, llamamos un “Servicio SINPE” a un sistema dentro de la plataforma SINPE. Un sistema se compone de todos los componentes de aplicación (DLLs), Servicios web (webservices, wcfs) e interfaces graficas (web, desktop, etc). Cada sistema es dueño de los objetos de base de datos que tienen que ver con sus funcionalidades. Por ejemplo, el servicio TVA es el dueño de todas sus Tablas. Si hace un cambio en una de sus tablas, es responsable de que todo procedimiento almacenado y vista que opere sobre sus tablas siga funcionando correctamente . Igualmente, si hace un cambio en uno de sus componentes de aplicación, es responsable de que todos sus clientes funcionen correctamente.
  • 5. ¿Qué es un diseño modular? Llamaremos diseño modular a la idea de que la organización jerárquica de cualquier sistema ayuda a mantener el orden y el control. La naturaleza y nuestros mismos cuerpos siguen un diseño modular, donde los órganos se componen de células que a su vez tienen componentes internos. Así se mantiene el orden en el intercambio de información.
  • 6. Las ventajas del diseño modular en software 1. Nos permite hacer cambios con el mínimo impacto y riesgo. 2. Nos permite realizar desarrollos y liberaciones en paralelo y con menos conflictos.
  • 7. Cómo identificar los builds Inicie con un buen modelo de casos de uso Cada build es un canal de entrada.
  • 8. Un sistema ofrece servicios por distintos canales Estos canales de entrada de datos serán la clave para lograr una separación adecuada. CDF ERP Otros sistemas que necesitan consultar datos de cuentas CalendarizadorPersonas website webservice webservice
  • 9. Un build es un canal de entrada de datos Bccr.Sinpe.Cdf. ProcesosCalendarizados Bccr.Sinpe.Cdf.Opciones Bccr.Sinpe.Cdf.Erp Bccr.Sinpe.Cdf.Consultas ERP Otros sistemas que necesitan consultar datos de cuentas Calendarizador Personas website webservice webservice wcf
  • 10. ¿Cómo lograr el diseño modular? 1. Definiremos cómo dividir un sistema completo en unidades a las que llamaremos Builds. 2. Definiremos cómo se pueden comunicar los Builds. TVA GSP
  • 11. ¿Cómo identificar los builds de un sistema? A partir del modelo de casos de uso, identifique los distintos canales de entrada de datos: “Personas que usan el UI”: un website “Contabilidad”: un webservice “Entidad origen”: servicios wcf “Hacienda”: webservices “Procesos calendarizados”: servicios wcf. Si cada canal de entrada es ejecutado por una pieza de software independiente, entonces podemos entender, cambiar y liberar cambios en ese canal sin tener que modificar o probar los demás. Esto nos permite hacer desarrollos en paralelo para cada canal de entrada, lo que implica menos conflictos de permisos y tiempo de desarrollo.
  • 12. Un canal de entrada sirve a un tipo de actor CDF ERP Otros sistemas que necesitan consultar datos de cuentas Calendarizador Personas website webservice webservice Cada canal de entrada de datos tendrá un build para servicios que sólo él necesita.
  • 13. Un ejemplo, el sistema PVB Este sistema tiene los siguientes canales de entrada, es decir, los casos de uso son iniciados por medio de: -Un sitio web para funcionarios internos -Un sitio web por medio de internet -Ejecución automática de procesos calendarizados -Consultas para otros sistemas Con esta información general, podemos separar el sistema en cuatro builds. Cada uno es independiente de los demás. Todos comparten y encapsulan su base de datos.
  • 14. Cómo manejar las relaciones Los componentes de un build Los builds encapsulan la base de datos El manejo de referencias entre builds Los builds protegen la base de datos
  • 15. Los componentes de un build Un build tiene un solo componente como un canal de entrada. Por ejemplo, un website, wcf o webservice: 1. Si un build contiene un website, no da servicios WCF a otros sistemas. 2. Si ofrece servicios WCF para el sistema ERP, no contiene servicios Webservice para la Contabilidad. Los componentes de un build son utilizados solamente dentro del mismo build. Un build puede acceder directamente a la base de datos del mismo sistema. Bccr.Sinpe.Rex.Opciones Personas website UI DS Base de datos de Rex
  • 16. Los builds encapsulan su base de datos Bccr.Sinpe.Cdf. ProcesosCalendarizados Bccr.Sinpe.Cdf.Opciones Bccr.Sinpe.Cdf.Erp Bccr.Sinpe.Cdf.Consultas ERP Otros sistemas que necesitan consultar datos de cuentas Calendarizador Personas website webservice webservice wcf Para mantener un diseño modular, ningún otro sistema debe acceder a la base de datos ni a los DLLs del servicio. Esto aplica también para nuestra base de datos la cual no accede a objetos de base de datos de otros servicios o sistemas. Esta línea de diseño también abarca las vistas y llaves foráneas. Con esto, encapsulamos los detalles de la persistencia de los datos y facilitamos los cambios a futuro.
  • 17. Manejo de las referencias entre builds Un build puede utilizar otros builds a través de servicios (wcf, webservice, web api). No accede DLLs o a objetos de base de datos de otros sistemas. Bccr.Sinpe.Cdf.Opciones Personas website Objetos de base de datos de otro servicio DLLs de otro build
  • 18. Los builds protegen su base de datos Bccr.Sinpe.Cdf. ProcesosCalendarizados Bccr.Sinpe.Cdf.Opciones Bccr.Sinpe.Cdf.Erp Bccr.Sinpe.Cdf.Consultas website webservice webservice wcf Otros sistemas Deberíamos poder modificar cualquier aspecto de la base de datos de un sistema y los únicos impactados por los cambios deberían ser los builds del propio sistema. Esto nos hace mas eficientes y confiables.
  • 19. Respecto al rendimiento ¿Comunicar nuestros sistemas a través de servicios podría afectar el rendimiento? Sabemos que lo más rápido es hacer las consultas directamente dentro de una sola base de datos, sin embargo para poder mantener bajo control la complejidad de los sistemas necesitamos mantener una separación de los esquemas de base de datos. Lo más importante es que tengamos visibilidad del rendimiento de cada funcionalidad que desarrollemos y así podemos optimizar cada consulta para que todo el proceso tenga un rendimiento aceptable. Para esto, utilice un profiler como Prefix para identificar el rendimiento de cada punto de integración de la aplicación: http://stackify.com/prefix
  • 20. Stackify Prefix Esta herramienta se instala en la PC de desarrollo y nos muestra el rendimiento de: Llamados web http, json Llamados WCF, WS, Web APÍ Consultas a base de datos Excepciones Etc. http://stackify.com/prefix
  • 21. Liberaciones Un build es una unidad de liberación. Los drops son los instaladores versionados.
  • 22. Un build es una unidad de liberación Todos los componentes del build se compilan, empaquetan y liberan siempre juntos. Una separación adecuada de builds nos permite hacer cambios en paralelo, lo cual nos ayuda a entregar software mas rápido. Bccr.Sinpe.Rex.Opciones Personas website UI DS Negocio Base de datos de Rex
  • 23. Drops – los instaladores versionados Cada build es integrado por un servidor de integración continua, y genera un Drop. Un Drop contiene todo lo necesario para instalar el software (componentes e instrucciones para su instalación automática). El Drop puede instalar solamente los componentes de su build, nunca los componentes de otros Builds o componentes de terceros. Los drops tienen etiquetas con su numero de versión, lo que permite una trazabilidad completa desde del código fuente hasta los componentes en producción. Por ejemplo, Bccr.Firma.Fva.Cliente-401 significa que en TFS hay un Label que se puede consultar para obtener el código fuente que generó ese Drop. Además, en LAS se registra esa versión, sus dependencias y las liberaciones asociadas.
  • 24. Análisis de dependencias La importancia ¿Cómo analizar componentes? ¿Cómo analizar la base de datos?
  • 25. La importancia de analizar las dependencias de un sistema El diseño modular nos ayuda a mantener las dependencias bajo control. Es decir, cuando tenemos que cambiar un sistema queremos afectar a la mínima cantidad de elementos para tardar menos tiempo y reducir el riesgo de incidentes. Esto quiere decir, que con cada relación que agreguemos debemos revisar que se respeten los lineamientos. Este análisis de dependencias lo realizamos de dos maneras: 1. Con el sitio web de componentes 2. Con el SQL Server Management Studio
  • 26. ¿Cómo analizar las dependencias de mis componentes? Cada vez que un build de integración continua se ejecuta, se analiza las referencias de sus componentes hacia DLLs o a WCFs, y dicha informción se guarda en una base de datos. En http://ponce/componentes, se puede hacer consultas de dichas dependencias: - Entre componentes - Entre builds. - Entre sistemas (soluciones tecnológicas)
  • 27. ¿Cómo analizar las dependencias de base de datos? En SQL Server Management Studio, 1. Verifique que sus objetos de base de datos no referencian a objetos de otros sistemas. 2. Verifique que otros sistemas no referencien sus objetos. Sabemos que las dependencias con Triggers pueden no mostrarse en esta vista, por lo que en el siguiente slide damos la opción más completa. Idealmente, cada sistema debe poseer su base de datos independiente.
  • 28. La búsqueda más completa de dependencias de base de datos Para buscar en el código de la base de datos, consulte la tabla Syscomments. Esta tabla del sistema contiene el código que define los procedimientos almacenados, vistas y funciones. select o.name, o.type from syscomments c inner join sysobjects o on o.id = c.id where c.text like '%CLCChequeAct%'
  • 29. ¿Por qué debo ocuparme de tantos detalles? Como profesionales, cada vez que modificamos un elemento de software somos responsables por el buen funcionamiento de todos los otros elementos que lo utilizan. No hay diferencia si ese elemento es una clase .NET o un objeto de base de datos. Lo más importante es que si no somos cuidadosos en este análisis, podríamos ocasionar inconvenientes a las personas que dependen de nuestro software.
  • 30. Conclusiones 1. Un sistema organizado con builds nos permite realizar desarrollos y liberaciones en paralelo y con menos conflictos. 2. El diseño modular de los builds y su base de datos nos permite hacer cambios con el mínimo impacto y riesgo.
  • 31. Diseño modular de sistemas Desde el diseño general, podemos facilitar la entrega de software: • En menos tiempo • Con menos conflictos • Y menos defectos