28/03/2014 Aplicaciones Empresariales Clase 1 Lic. Ariel Trellini ¿Qué tipo de aplicaciones son? DCIC - UNS Desarrollo de Aplicaciones Empresariales • 8 Aplicaciones Empresariales Aplicaciones Empresariales Ejemplos Características ¿Quién puede dar ejemplos de aplicaciones empresariales? Aplicaciones Empresariales Aplicaciones No Empresariales Sistema de sueldos Inyección de combustible en autos Administración de pacientes Procesadores de texto Seguimientos postales Controladores de ascensores Seguros Controladores de planta Banca electrónica Switches telefónicos Sistemas contables Sistemas operativos Stock Compiladores Venta electrónica Juegos Lic. Ariel Trellini • DCIC • UNS Datos Persistentes: La información persistida generalmente es el núcleo del sistema y su ciclo de vida es más amplio que el del resto de los componentes. Gran Cantidad de Datos: Un sistema moderado contará con alrededor de 1GB de datos, organizados en decenas de millones de registros, siendo esta información la mayor parte del sistema. Acceso Concurrente a Datos: Generalmente muchas personas acceden a los datos concurrentemente. Debido a esto, hay problemas bien determinados que deben abordarse para asegurar que los distintos usuarios pueden acceder a la información de manera confiable. Retail Desarrollo de Aplicaciones Empresariales • 9 Lic. Ariel Trellini • DCIC • UNS Aplicaciones Empresariales Características Desarrollo de Aplicaciones Empresariales • 10 Lic. Ariel Trellini • DCIC • UNS Aplicaciones Empresariales Características Gran Cantidad de UI: Para manejar tanta información es necesario disponer de cientos de pantallas que permitan presentar los datos de distinta forma y, eventualmente, para distintas audiencias. Integrado con Otras Aplicaciones Empresariales: Las aplicaciones empresariales raramente viven de manera aislada; generalmente requieren integrarse con otras aplicaciones de la empresa o fuera de la misma Mucha gente cree que las aplicaciones empresarias implican grandes sistemas. Sin embargo es importante recordar que no todas las aplicaciones empresariales son grandes, aunque aun así pueden proveer un montón de valor a la empresa. Lógica de Negocio Compleja: Las reglas de negocio nos caen encima y por más que intentemos darle integridad lógica, no se puede hacer mucho. Unas pocos miles de estos casos extraordinarios es lo que conduce a una “compleja ilógica de negocio” que hace que el sw de negocios sea tan complejo. Desarrollo de Aplicaciones Empresariales • 11 Lic. Ariel Trellini • DCIC • UNS Desarrollo de Aplicaciones Empresariales • 12 Lic. Ariel Trellini • DCIC • UNS 1 28/03/2014 Aplicaciones Empresariales Tipos de Aplicaciones Empresariales Aplicaciones Empresariales Tipos de Aplicaciones Empresariales Ejemplo 2: Proceso de automatización de acuerdos de leasing Ejemplo 1: Aplicación B2C de venta on-line Capaz de manejar un muy alto volumen de usuarios Solución razonablemente eficiente en términos de recursos utilizados Escalable, tal que se pueda incrementar la carga agregando más hw Lógica de dominio bastante directa Presentación web genérica tal que pueda ser accedida por la mayor cantidad de usuarios posibles, soportando el rango más amplio de browsers Base de datos para almacenar las órdenes de compra Comunicación con el sistema de inventario Desarrollo de Aplicaciones Empresariales • 13 Lic. Ariel Trellini • DCIC • UNS Aplicaciones Empresariales Tipos de Aplicaciones Empresariales No tendrá más de 100 usuarios a la vez Lógica de negocio mucho más compleja Calcular montos mensuales del leasing Manejar eventos como retornos tempranos y pagos fuera de término Validar datos de la operación de leasing Reglas de negocio cambiantes y con muchas excepciones Interfaces gráficas más complejas Comportamiento transaccional más complejo, debido a la complejidad de interacción Complejo esquema de base de datos Desarrollo de Aplicaciones Empresariales • 14 Lic. Ariel Trellini • DCIC • UNS Aplicaciones Empresariales Tipos de Aplicaciones Empresariales Conclusión Ejemplo 3: Sistema de tracking de gastos Pocos usuarios Lógica de negocio simple Es accedido desde dentro de la compañía a través de una interfaz web Construirlo rápidamente Prever su crecimiento. Proveer más funcionalidad, integrarlo con otros sistemas, etc. Las aplicaciones empresariales son diferentes y estos problemas diferentes conducen a diferentes maneras de hacer las cosas. Usar la misma arquitectura para el Ejemplo 3 que para los dos anteriores haría más lento el desarrollo del sistema y le agregaría complejidad que eventualmente complicaría su futura evolución (sobre-arquitecturar). Desarrollo de Aplicaciones Empresariales • 15 Lic. Ariel Trellini • DCIC • UNS Desarrollo de Aplicaciones Empresariales • 16 Lic. Ariel Trellini • DCIC • UNS Arquitectura de Software ¿Qué es la Arquitectura de Software? Comencemos con la siguiente definición Arquitectura de Software Mitos y leyendas La arquitectura de software es el conjunto de decisiones que el Arquitecto de Software toma. - ¿Qué decisiones toma un Arquitecto de Software? Aquellas que son arquitecturalmente significativas ! - ¿Y qué es algo arquitecturalmente significativo? Lo que el arquitecto de software decide… ¿Quién me puede decir qué es la arquitectura de software? Desarrollo de Aplicaciones Empresariales • 17 Lic. Ariel Trellini • DCIC • UNS Desarrollo de Aplicaciones Empresariales • 18 Lic. Ariel Trellini • DCIC • UNS 2 28/03/2014 Arquitectura de Software ¿Qué es ? Arquitectura de Software ¿Qué es ? La organización general del sistema. Garlan & Shaw (94) Partes que componen el software y sus relaciones. Kruchten La organización fundamental de un sistema, expresada a través de sus componentes, las relaciones entre ellos y el ambiente, y los principios que gobiernan su diseño y evolución. Una arquitectura es el conjunto de decisiones importantes sobre la organización de un sistema de software, la selección de los elementos estructurales y sus interfaces por los cuales el sistema está compuesto, junto con su comportamiento como es especificado en las colaboraciones entre estos elementos, la composición de estos elementos estructurales y de comportamiento en subsistemas progresivamente más grandes, y el estilo de arquitectura que guía a esta organización (estos elementos y sus interfaces, sus colaboraciones y su composición). Booch, Rumbaugh y Jacobson en UML User Guide IEEE, 1995 Conjunto de decisiones de diseño que se hacen en etapas tempranas del proyecto. (Addison-Wesley, 1999) Es diseño de software, pero en palabras importantes. Martin Fowler Anónimo Desarrollo de Aplicaciones Empresariales • 19 Lic. Ariel Trellini • DCIC • UNS Arquitectura de Software ¿Qué es ? Desarrollo de Aplicaciones Empresariales • 20 Lic. Ariel Trellini • DCIC • UNS Arquitectura de Software ¿Qué es ? Es más alto nivel conceptual de un sistema en su ambiente. La arquitectura de un sistema de software (en algún punto en el tiempo) es su organización o estructura de componentes importantes interactuando a través de interfaces, y dichos componentes siendo compuestos de, sucesivamente, componentes e interfaces más pequeños. En muchos proyectos de software exitosos, los desarrolladores expertos RUP / IEEE pequeños, pero la arquitectura solamente incluye a aquellos que trabajan en el proyecto tienen un entendimiento compartido del diseño del sistema. Este entendimiento compartido, llamado “arquitectura”, incluye cómo el sistema se divide en componentes, y cómo los componentes interactúan a través de interfaces. Estos componentes, generalmente, están compuestos de componentes más componentes e interfaces más relevantes para los desarrolladores. Ralph Jonhson Ralph Jonhson ¿Qué es “el más alto nivel conceptual de un sistema”? Los clientes tienen distintos conceptos y visiones que los desarrolladores. Entonces la arquitectura sería el más alto nivel conceptual que los desarrolladores tienen del sistema y su ambiente ¿Qué hace que un componente sea importante? Desarrollo de Aplicaciones Empresariales • 21 Esta definición es más apropiada ya que deja en claro que la arquitectura es una construcción social, porque no sólo depende del software sino también de: Qué parte del software es considerada importante por el grupo de consenso. Qué personas toman las decisiones Lic. Ariel Trellini • DCIC • UNS Arquitectura de Software ¿Qué es ? Desarrollo de Aplicaciones Empresariales • 22 Lic. Ariel Trellini • DCIC • UNS Arquitectura de Software ¿Qué es ? La arquitectura trata de las cosas importantes. Sean lo que fueren esas cosas. Objetivo de arquitectura de software Eliminar el impacto y costo de cambios Ralph Jonhson Toda la arquitectura es diseño, pero no todo el diseño es arquitectura. La arquitectura representa las decisiones de diseño que le dan forma a un sistema, donde la importancia es medida por el costo del cambio. Booch Pero no todo es tan feliz en la vida: … hacer que todo sea fácil de cambiar hace que el sistema entero sea muy complejo… Ralph Jonhson Desarrollo de Aplicaciones Empresariales • 23 Lic. Ariel Trellini • DCIC • UNS Desarrollo de Aplicaciones Empresariales • 24 Lic. Ariel Trellini • DCIC • UNS 3 28/03/2014 Arquitectura de Software ¿Qué es ? Arquitectura de Software ¿Qué es ? ¿Cómo podríamos mantener a raya la complejidad incrementando la flexibilidad? Reconocer dónde es necesaria la flexibilidad para reducir el impacto y costo del cambio Tratar de diferir la obligación de tomar una decisión específica de arquitectura que nos bloquearía en una solución muy particular hasta que tengamos el conocimiento necesario que nos permita tomar una decisión lo más fundamentada posible Aislar las decisiones de las cuales no estamos seguros, asegurando que dichas decisiones iniciales sean fáciles de cambiar a medida que vayan surgiendo el conocimiento e información suficientes para asegurar una buena alternativa de solución. Desarrollo de Aplicaciones Empresariales • 25 Lic. Ariel Trellini • DCIC • UNS Identificar las costuras en un sistema involucra identificar líneas claras de demarcación en tu arquitectura. En ambas márgenes de aquellas líneas, encontrarás componentes que pueden cambiar independientemente, sin afectar a los componentes del otro lado, siempre y cuando los componentes a ambos lados cumplan con el contrato especificado por la interfaz. Booch, UML User Guide Modularidad combinada con patrones de diseño y los principios SOLID representan nuestra mejor esperanza para minimizar el costo del cambio. Desarrollo de Aplicaciones Empresariales • 26 Lic. Ariel Trellini • DCIC • UNS 4