Aplicaciones Empresariales

Anuncio
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
Descargar