Anda di halaman 1dari 37

Maestra en Bioinformtica

Bases de Datos y Sistemas de Informacin

Arquitectura de Software
Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy

Agenda

Conceptos Evolucin de la tecnologa Patrones Ejemplo

Arquitectura Arquitectura de Computadores Arquitectura de Software Arquitectura de Sistemas

Agenda

Conceptos Evolucin de la tecnologa Patrones Ejemplo

Mainframe terminales PCs Arquitectura cliente servidor Arquitectura de tres capas An ms complejidad Complejidad tecnolgica Complejidad humana

Agenda

Conceptos Evolucin de la tecnologa Patrones Ejemplo

Patrones Antipatrones

Agenda

Conceptos Evolucin de la tecnologa Patrones Ejemplo

Desarrollo de un software para investigacin gentica

Agenda

Conceptos Evolucin de la tecnologa Complejidad actual

Arquitectura Arquitectura de Computadores Arquitectura de Software Arquitectura de Sistemas

Conceptos
Arquitectura

(Del lat. architectra) 1. f. Arte de proyectar y construir edificios. 2. f. Inform. Estructura lgica y fsica de los componentes de un computador.
Diccionario de la Real Academia Espaola

En general, se refiere a la estructura interna, as como al proceso de construccin. Aplica a muchos tipos diferentes de construcciones complejas: edificios, embarcaciones, computadoras, lenguaje, sistemas informticos, sistemas de bases de datos

Conceptos
Arquitectura de Computadores

Cmo se organiza una computadora?

Conceptos
Arquitectura de Software

La organizacin fundamental de un sistema, representada por sus componentes, sus relaciones entre ellos y con su entorno, y los principios que gobiernan su diseo y evolucin.
IEEE 1471-2000: Recommended Practice for Architecture Description of Software-Intensive Systems

1. Proceso dentro del ciclo de vida 2. Topologa 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 diseo, y arquitectura como estilo

Conceptos
Arquitectura de Sistemas

Martin Fowler: Yo defino la arquitectura como una palabra que usamos cuando queremos hablar de diseo pero queremos que suene importante
Arquitectura = diseo 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 quisiramos hacer un cambio en la estructura de la planta baja ...

Conceptos
Arquitectura de Sistemas

Responde: cmo se organiza un Sistema de Informacin?


Es un modelo conceptual que define estructura, comportamiento, y vistas de un sistema

Es til para propsitos tcnicos y organizativos

Conceptos
Arquitectura de Sistemas
- Para qu? - Para
Dimensin tcnica Dimensin organizacional

cumplir los objetivos y requerimientos del comunicar el diseo de alto nivel sistema proveer el contexto del sistema permitir la distribucin o particionamiento del sistema facilitar la gestin del trabajo

reducir los costos de mantenimiento


incrementar el reuso y las posibilidades de integracin

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 arquitectnicos que oirn: Arquitecturas Orientadas a Objetos Arquitecturas en capas Model-View-Controller (MVC) Arquitecturas Orientadas a Servicios (SOA)

Agenda

Conceptos Evolucin de la tecnologa Ejemplo

Mainframe terminales PCs Arquitectura cliente servidor Arquitectura de tres capas An ms complejidad Complejidad tecnolgica Complejidad humana

Evolucin de la tecnologa
Mainframe terminales

El procesamiento se realiza en el mainframe


La terminal no sirve para otra cosa Problemas: costo, limitaciones de las tecnologas para mainframe, aparicin de las PCs

Evolucin de la tecnologa
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 informacin, volumen de informacin

Evolucin de la tecnologa
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: Distribucin del software, configuracin, escalabilidad, trfico de red

Evolucin de la tecnologa
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

Evolucin de la tecnologa
An ms complejidad

Middleware basado en RPC, como Java RMI (PolyGUI)


Colas de mensajes (MQSeries, JMS) Web Services, BPEL Virtualizacin, Proxy, Firewall, DMZ, VPN, Load Balancer, Cluster, SAN ... una organizacin mediana/grande puede tener todas estas tecnologas distribuidas en decenas de nodos

Evolucin de la tecnologa
Complejidad tecnolgica se puede manejar con una CMDB

Evolucin de la tecnologa
Complejidad humana CTO y/o PM deberan tener las herramientas...
CEO CTO Architect sysadmin

DBA

AS Admin

Developer

Net Admin

Tester

Project Manager

Functional

CSO

Agenda

Conceptos Evolucin de la tecnologa Patrones Ejemplo

Patrones Antipatrones

Patrones
Patrones

Una solucin conocida a un problema recurrente


Un patrn codifica conocimiento especfico acumulado por la experiencia en un dominio Todos los sistemas bien estructurados siguen patrones

Patrones
Patrones

Segn GoF, un patrn debe tener 4 elementos:


Nombre, para identificarlo Problema, indica cundo aplicarlo Solucin, indica el diseo a seguir Consecuencias, costos y beneficios

Patrones
Patrones

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

Patrones
Antipatrones

Sirven para identificar malas prcticas


Proveen alternativas para malas decisiones comunes Ejemplos: hard-coded, spaguetti-code, lava-flow, God-object, JayWalking

Agenda

Conceptos Evolucin de la tecnologa Patrones Ejemplo

Desarrollo de un software para investigacin gentica

Desarrollo de un SW para investigacin gentica


Contratados para el proyecto:
PM MSc en BioInf. Lder funcional PhD en gentica 3 desarrolladores Ing. en Comp. 2 funcionales Lic. en Biologa

Participan, funcionarios de la empresa:

CTO

Architect

DBAs

Sysadmins

AS Admin

Tester

Net Admin

Desarrollo de un SW para investigacin gentica


El CTO acuerda con el PM que tendrn los recursos para 3 ambientes Ambiente de desarrollo Ambiente de testing Ambiente de produccin El arquitecto acuerda con el PM que el software tendr una arquitectura de 3 capas

Habr un sistema de versionado del cdigo, y un sistema de bug tracking, deployados en el ambiente de desarrollo

Desarrollo de un SW para investigacin gentica


El sysadmin dice que no hay servidores, y propone virtualizar desarrollo y testing en un solo servidor fsico

Desarrollo de un SW para investigacin gentica


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 ms tiempo del previsto para tener listos los servidores, y pide que alguien ms se haga cargo de la instalacin 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 investigacin gentica


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 saba 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 difcil nadie la contesta Dos das despus un disco se llena y se cae el ambiente de desarrollo, con todo lo que tiene

Desarrollo de un SW para investigacin gentica


El software entra en produccin en Beta

Ocurre un error en produccin que no haba 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 investigacin gentica


Muchos ms problemas pueden ocurrir

Para los no-tcnicos, las claves son:


Conocer tanto como sea posible la infraestructura tecnolgica y el lenguaje de los tcnicos Tener documentacin actualizada

Ser tan especfico como sea posible (est prohibido decir me da un error, no puedo entrar, )
Conocer a los tcnicos, porque despus de todo, son personas

Desarrollo de un SW para investigacin gentica


Ser especfico significa decir dnde (nombre), quin (nombre), cmo (contexto) y qu (cdigo de error) sucede
Dev: No puedo entrar a la base, podrn 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: Podran deslockearlo? DBA: Claro, qu usuario es? Dev: Soy yo, Juan Prez DBA: No existe el usuario Juan Prez Dev: El usuario se llama JPEREZ2 DBA: Listo

Anda mungkin juga menyukai