Upload
vutram
View
220
Download
1
Embed Size (px)
Citation preview
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
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 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 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
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