Agenda

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

description

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 - PowerPoint PPT Presentation

Transcript of Agenda

Page 1: Agenda

Maestría en Bioinformática

Bases de Datos y Sistemas de Información

Arquitectura de Software

Ing. Alfonso Vicente, [email protected]

Page 2: Agenda

Agenda

Arquitectura Arquitectura de Computadores Arquitectura de Software Arquitectura de Sistemas

ConceptosEvolución de la tecnología

PatronesEjemplo

Page 3: Agenda

Agenda

Mainframe – terminales PCs Arquitectura cliente – servidor Arquitectura de tres capas Aún más complejidad

Complejidad tecnológica Complejidad humana

ConceptosEvolución de la tecnología

PatronesEjemplo

Page 4: Agenda

Agenda

Patrones Antipatrones

ConceptosEvolución de la tecnología

PatronesEjemplo

Page 5: Agenda

Agenda

Desarrollo de un software para investigación genética

ConceptosEvolución de la tecnología

PatronesEjemplo

Page 6: Agenda

Agenda

Arquitectura Arquitectura de Computadores Arquitectura de Software Arquitectura de Sistemas

ConceptosEvolución de la tecnología

Complejidad actual

Page 7: Agenda

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

Page 8: Agenda

Conceptos

Arquitectura de Computadores

¿Cómo se organiza una computadora?

Page 9: Agenda

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 vida2. Topología3. Disciplina

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

Page 10: Agenda

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”

Page 11: Agenda

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 ...

Page 12: Agenda

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

Page 13: Agenda

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

Page 14: Agenda

Conceptos

Arquitectura de Sistemas

• Una buena arquitectura mejorará las posibilidades de cambiar la “estructura de la planta baja”

Page 15: Agenda

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)

Page 16: Agenda

Agenda

Mainframe – terminales PCs Arquitectura cliente – servidor Arquitectura de tres capas Aún más complejidad

Complejidad tecnológica Complejidad humana

ConceptosEvolución de la tecnología

Ejemplo

Page 17: Agenda

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

Page 18: Agenda

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

Page 19: Agenda

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

Page 20: Agenda

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

Page 21: Agenda

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

Page 22: Agenda

Evolución de la tecnología

Complejidad tecnológica – se puede manejar con una CMDB

Page 23: Agenda

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

Page 24: Agenda

Agenda

Patrones Antipatrones

ConceptosEvolución de la tecnología

PatronesEjemplo

Page 25: Agenda

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

Page 26: Agenda

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

Page 27: Agenda

Patrones

Patrones

• Ejemplo: Patrón Adapter o Wrapper, convierte la interface de una clase en lo que espera el cliente (ODBC, JDBC)

Page 28: Agenda

Patrones

Antipatrones

• Sirven para identificar malas prácticas

• Proveen alternativas para malas decisiones comunes

• Ejemplos: hard-coded, spaguetti-code, lava-flow, God-object, JayWalking

Page 29: Agenda

Agenda

Desarrollo de un software para investigación genética

ConceptosEvolución de la tecnología

PatronesEjemplo

Page 30: Agenda

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

Page 31: Agenda

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

Page 32: Agenda

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

Page 33: Agenda

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

Page 34: Agenda

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

Page 35: Agenda

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

Page 36: Agenda

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

Page 37: Agenda

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 testingDBA: Tenemos 28 bases de testing…Dev: En la que yo trabajo, se llama IGTDBA: ¿Y qué error te da?Dev: “The account is locked”DBA: Bien, ya sabemos lo que sucede, se lockeó ese usuario en la base IGTDev: ¿Podrían deslockearlo?DBA: Claro, ¿qué usuario es?Dev: Soy yo, Juan PérezDBA: No existe el usuario “Juan Pérez”Dev: El usuario se llama JPEREZ2DBA: Listo