370 likes | 569 Views
Maestría en Bioinformática Bases de Datos y Sistemas de Información Arquitectura de Software Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy. Agenda. Arquitectura Arquitectura de Computadores Arquitectura de Software Arquitectura de Sistemas. Conceptos Evolución de la tecnología
E N D
Maestría en BioinformáticaBases de Datos y Sistemas de InformaciónArquitectura de SoftwareIng. Alfonso Vicente, PMPalfonso.vicente@logos.com.uy
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 • Complejidadtecnológica • Complejidadhumana 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) • f. Arte de proyectar y construir edificios. • 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 • Proceso dentro del ciclo de vida • Topología • 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 …
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 • Complejidadtecnológica • Complejidadhumana 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 Complejidadtecnológica – se puedemanejar con una CMDB
Evolución de la tecnología Complejidadhumana – CTO y/o PM deberíantenerlasherramientas... CEO CTO Architectsysadmin DBA AS AdminDeveloper 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 • Contratadospara 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 ArchitectDBAsSysadmins • AS AdminTester 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: “Theaccountislocked” • 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