Maestría en Bioinformática Bases de Datos y Sistemas de...

37
Maestría en Bioinformática Bases de Datos y Sistemas de Información Arquitectura de Software Ing. Alfonso Vicente, PMP [email protected]

Transcript of Maestría en Bioinformática Bases de Datos y Sistemas de...

Maestría en Bioinformática

Bases de Datos y Sistemas de Información

Arquitectura de Software

Ing. Alfonso Vicente, PMP [email protected]

Agenda

Arquitectura

Arquitectura de Computadores

Arquitectura de Software

Arquitectura de Sistemas

Conceptos

Evolución de la tecnología

Patrones

Ejemplo

Agenda

Mainframe – terminales

PCs

Arquitectura cliente – servidor

Arquitectura de tres capas

Aún más complejidad

Complejidad tecnológica

Complejidad humana

Conceptos

Evolución de la tecnología

Patrones

Ejemplo

Agenda

Patrones

Antipatrones Conceptos

Evolución de la tecnología

Patrones

Ejemplo

Agenda

Desarrollo de un software para

investigación genética Conceptos

Evolución de la tecnología

Patrones

Ejemplo

Agenda

Arquitectura

Arquitectura de Computadores

Arquitectura de Software

Arquitectura de Sistemas

Conceptos

Evolución de la tecnología

Complejidad actual

Conceptos

Arquitectura

(Del lat. architectūra)

1. f. Arte de proyectar y construir edificios.

2. f. Inform. Estructura lógica y física de los componentes

de un computador.

Diccionario de la Real Academia Española

En general, se refiere a la estructura interna, así como al

proceso de construcción. Aplica a muchos tipos diferentes de

construcciones complejas: edificios, embarcaciones,

computadoras, lenguaje, sistemas informáticos, sistemas de

bases de datos

Conceptos

Arquitectura de Computadores

¿Cómo se organiza una computadora?

Conceptos

Arquitectura de Software

“La organización fundamental de un sistema, representada por

sus componentes, sus relaciones entre ellos y con su entorno,

y los principios que gobiernan su diseño y evolución.”

IEEE 1471-2000: Recommended Practice for Architecture Description of

Software-Intensive Systems

1. Proceso dentro del ciclo de vida

2. Topología

3. Disciplina

http://www.sei.cmu.edu/architecture/definitions.html

Conceptos

Arquitectura de Sistemas

• IEEE: “An architecture is the highest-level concept of a

system in its environment”

• Arquitectura como “diseño”, y arquitectura como “estilo”

Conceptos

Arquitectura de Sistemas

• Martin Fowler: “Yo defino la arquitectura como una palabra

que usamos cuando queremos hablar de diseño pero

queremos que suene importante”

• Arquitectura = diseño de alto nivel ... pero es importante !

• Como en un edificio: bosquejo, primeros planos, maqueta,

vecinos, entrada de garages, basura, sombras, electricidad,

sanitaria, datos, terminaciones ...

• Casi al terminar quisiéramos hacer un cambio en la

estructura de la planta baja ...

Conceptos

Arquitectura de Sistemas

• Responde: ¿cómo se organiza un Sistema de Información?

• Es un modelo conceptual

que define estructura,

comportamiento, y vistas

de un sistema

• Es útil para propósitos

técnicos y organizativos

Conceptos

Arquitectura de Sistemas

- ¿Para qué?

- Para …

Dimensión técnica Dimensión organizacional

• cumplir los objetivos y requerimientos del

sistema

• permitir la distribución o particionamiento del sistema

• reducir los costos de mantenimiento

• incrementar el reuso y las posibilidades de integración

• comunicar el diseño de alto nivel

• proveer el contexto del sistema

• facilitar la gestión del trabajo

Conceptos

Arquitectura de Sistemas

• Una buena arquitectura mejorará las posibilidades de

cambiar la “estructura de la planta baja”

Conceptos

Arquitectura de Sistemas

• No se ve igual en la academia y en la industria

• Estilos arquitectónicos que oirán:

• Arquitecturas Orientadas a Objetos

• Arquitecturas en capas

• Model-View-Controller (MVC)

• Arquitecturas Orientadas a Servicios (SOA)

Agenda

Mainframe – terminales

PCs

Arquitectura cliente – servidor

Arquitectura de tres capas

Aún más complejidad

Complejidad tecnológica

Complejidad humana

Conceptos

Evolución de la tecnología

Ejemplo

Evolución de la tecnología

Mainframe – terminales

• El procesamiento se realiza en el mainframe

• La terminal no sirve para otra cosa

• Problemas: costo, limitaciones de las

tecnologías para mainframe, aparición de

las PCs

Evolución de la tecnología

PCs – Aplicaciones de escritorio

• El procesamiento se realiza en la PC

• WordPerfect, Lotus, … MS Office, mail,

Internet, emuladores de terminal

• Problemas: Compartir documentos, acceso

concurrente, seguridad de la información,

volumen de información

Evolución de la tecnología

Arquitectura cliente – servidor

• Parte del procesamiento se realiza en el

servidor, parte en el cliente

• Clipper, Visual Basic, Oracle Forms (4.5),

Java Swing

• Problemas: Distribución del software,

configuración, escalabilidad, tráfico de red

Evolución de la tecnología

Arquitectura de tres capas – la novedad es el “middleware”

• Parte del procesamiento se realiza en el

database server, parte en el application

server, parte en el cliente

• JEE, LAMP

• Problemas: aumentó la complejidad

Evolución de la tecnología

Aún más complejidad

• Middleware basado en RPC, como Java RMI (PolyGUI)

• Colas de mensajes (MQSeries, JMS)

• Web Services, BPEL

• Virtualización, Proxy, Firewall, DMZ, VPN, Load Balancer,

Cluster, SAN

... una organización mediana/grande puede tener todas

estas tecnologías distribuidas en decenas de nodos

Evolución de la tecnología

Complejidad tecnológica – se puede manejar con una CMDB

Evolución de la tecnología

Complejidad humana – CTO y/o PM deberían tener las

herramientas...

CEO CTO Architect sysadmin

DBA AS Admin Developer Net Admin

Tester Project Manager Functional CSO

Agenda

Patrones

Antipatrones Conceptos

Evolución de la tecnología

Patrones

Ejemplo

Patrones

Patrones

• Una solución conocida a un

problema recurrente

• Un patrón codifica conoci-

miento específico acumula-

do por la experiencia en un

dominio

• Todos los sistemas bien

estructurados siguen patro-

nes

Patrones

Patrones

• Según GoF, un patrón debe tener 4 elementos:

• Nombre, para identificarlo

• Problema, indica cuándo aplicarlo

• Solución, indica el diseño a seguir

• Consecuencias, costos y beneficios

Patrones

Patrones

• Ejemplo: Patrón Adapter o Wrapper, convierte la interface de

una clase en lo que espera el cliente (ODBC, JDBC)

Patrones

Antipatrones

• Sirven para identificar malas

prácticas

• Proveen alternativas para

malas decisiones comunes

• Ejemplos: hard-coded,

spaguetti-code, lava-flow,

God-object, JayWalking

Agenda

Desarrollo de un software para

investigación genética Conceptos

Evolución de la tecnología

Patrones

Ejemplo

Desarrollo de un SW para investigación genética

Contratados para el proyecto:

PM Líder funcional 3 desarrolladores 2 funcionales

MSc en BioInf. PhD en genética Ing. en Comp. Lic. en Biología

Participan, funcionarios de la empresa:

CTO Architect DBAs Sysadmins

AS Admin Tester Net Admin

Desarrollo de un SW para investigación genética

• El CTO acuerda con el PM que tendrán los recursos para 3

ambientes

• Ambiente de desarrollo

• Ambiente de testing

• Ambiente de producción

• El arquitecto acuerda con el PM que el software tendrá una

arquitectura de 3 capas

• Habrá un sistema de versionado del código, y un sistema de

bug tracking, deployados en el ambiente de desarrollo

Desarrollo de un SW para investigación genética

• El sysadmin dice que no hay servidores, y propone

virtualizar desarrollo y testing en un solo servidor físico

Desarrollo de un SW para investigación genética

• Los desarrolladores se quejan de que los funcionales no

tienen los requerimientos claros

• Los funcionales se quejan de que los desarrolladores no

hacen esfuerzos por comprender el problema

• El sysadmin pide más tiempo del previsto para tener listos

los servidores, y pide que alguien más se haga cargo de la

instalación de los sistemas de versionado y bug tracking

• Los DBAs se pelean con los AS Admins para no hacerse

cargo de lo anterior

... hasta que el proyecto comienza a encaminarse

Desarrollo de un SW para investigación genética

• Los funcionales piden una VPN para poder testear desde

sus casas, ya que los resultados demoran mucho

• El Net Admin dice que debe consultarlo con el CSO

• El CSO se enoja porque no sabía nada de este proyecto, y

les pide que fundamenten el pedido por escrito

• Los DBAs preguntan si las bases van a seguir creciendo al

ritmo que vienen creciendo. Como es una pregunta difícil

nadie la contesta

• Dos días después un disco se llena y se cae el ambiente de

desarrollo, con todo lo que tiene

Desarrollo de un SW para investigación genética

• El software entra en producción en “Beta”

• Ocurre un error en producción que no había sido testeado

• El tester dice que “la gente del proyecto” no supo hacer los

casos de prueba

• El PM alega que nunca recibieron ayuda del tester

• Uno de los desarrolladores, por error, elimina una tabla y se

solicita que se recupere la base a un estado consistente

• El DBA contesta que va a demorar y que no toquen nada

hasta que les avise que el ambiente quedó recuperado

Desarrollo de un SW para investigación genética

• Muchos más problemas pueden ocurrir

• Para los no-técnicos, las claves son:

• Conocer tanto como sea posible la infraestructura

tecnológica y el lenguaje de los técnicos

• Tener documentación actualizada

• Ser tan específico como sea posible (está prohibido decir

“me da un error”, “no puedo entrar”, )

• Conocer a los técnicos, porque después de todo, son

personas

Desarrollo de un SW para investigación genética

• Ser específico significa decir dónde (nombre), quién

(nombre), cómo (contexto) y qué (código de error) sucede

Dev: No puedo entrar a la base, ¿podrán fijarse qué pasa?

DBA: ¿A qué base?

Dev: A la de testing

DBA: Tenemos 28 bases de testing…

Dev: En la que yo trabajo, se llama IGT

DBA: ¿Y qué error te da?

Dev: “The account is locked”

DBA: Bien, ya sabemos lo que sucede, se lockeó ese usuario en la base IGT

Dev: ¿Podrían deslockearlo?

DBA: Claro, ¿qué usuario es?

Dev: Soy yo, Juan Pérez

DBA: No existe el usuario “Juan Pérez”

Dev: El usuario se llama JPEREZ2

DBA: Listo