Pensamiento de objetos
-
Upload
alejandro-dominguez -
Category
Documents
-
view
1.401 -
download
0
Transcript of Pensamiento de objetos
15/10/1998 PRINCIPIA INFORMATICA 1
INTRODUCCIÓN AL
PENSAMIENTO DE OBJETOS
ALEJANDRO DOMÍNGUEZ
15/10/1998 PRINCIPIA INFORMATICA 2
Temario
Objetivos
¿Por qué objetos?
¿Qué es un objeto?
Conceptos clave y terminología
Categorizando a los objetos
Pensamiento de objetos
15/10/1998 PRINCIPIA INFORMATICA 3
Objetivos
• Esta presentación proporcionará ...
– Una perspectiva general sobre la tecnología de objetos
– Un marco conceptual sólido para el pensamiento en objetos
• Esta presentación no discutirá ...
– Programación orientada a objetos (POO)
– Metodologías de análisis y diseño orientadas a objetos (ADOO)
– Productos comerciales
15/10/1998 PRINCIPIA INFORMATICA 4
¿PORQUÉ OBJETOS?
Ventajas estratégicas
Ventajas tácticas
Ventajas de negocios
15/10/1998 PRINCIPIA INFORMATICA 5
Ventajas estratégicas (1)
• Valor del dinero
– Ensamblaje de sistemas a partir de
componentes comerciales
• Amortización de los costos de las componentes en la
construcción de varios sistemas
– Estandarización de la infraestructura y las
componentes de negocios
• Gasto de dinero y tiempo en valores agregados
15/10/1998 PRINCIPIA INFORMATICA 6
Ventajas estratégicas (2)
• A tiempo para salida al mercado
– Minimiza la re-invención de lo que es común en
cada proyecto
– Construcción de nuevos sistemas a partir de los
datos y procesos ya existentes
• Retorno de las inversiones
– Integra (“envuelve”) sistemas heredados en
nuevos sistemas
– Estandariza en un ambiente “abierto” y
comercial
15/10/1998 PRINCIPIA INFORMATICA 7
Ventajas tácticas (1)
• Los objetos pueden ...
– representar cosas reales
– ser paralelos a nuestras
estructuras de
pensamiento
– estar organizados tal
como la gente ve al
mundo y a sus partes
componentes
15/10/1998 PRINCIPIA INFORMATICA 8
Ventajas tácticas (2)
• Los objetos son una
alternativa para una visión
del mundo alrededor de
las computadoras
• Los objetos permiten a los
modeladores,
desarrolladores, y usuarios
comunicarse y pensar con
la terminología del mundo
real
15/10/1998 PRINCIPIA INFORMATICA 9
Ventajas tácticas (3)
• Los sistemas son un reflejo
de los negocios
– Integración natural de las
aplicaciones existentes
• Compatibilidad interna y
externa, reutilización
– Datos y procedimientos del
negocio
– Reglas de negocios e
integridad de las
restricciones
15/10/1998 PRINCIPIA INFORMATICA 10
Ventajas tácticas (4)
• Manejo de diferencias
y cambios
– Colocan las reglas
divisionales/locales de
negocios en las
especializaciones
– Permanencia de las
definiciones, reglas y
datos corporativos en
lo general
15/10/1998 PRINCIPIA INFORMATICA 11
Ventajas de negocios
• Integración de los
procesos de negocios
– Distribuye “flujos de
trabajo” = workflow
(objetos de procesos) y
recursos (objetos de
entidades) a diferentes
niveles
– Integra los negocios con los
clientes y distribuidores a
través de compartir los
objetos de negocios
• Ingeniería de los
procesos de negocios
– Plug-ins escalables que
integran los procesos de
negocios entre empresas
colaboradoras a través de
interfaces compartidas
– Integración inmediata de
componentes de
negocios
15/10/1998 PRINCIPIA INFORMATICA 12
¿QUÉ ES UN OBJETO?
Un objeto es ...
¿Donde existen los objetos?
¿Por qué los objetos son diferentes?
¿Por qué los objetos son familiares?
Los objetos redefinen la modularidad
Los objetos son empaquetamiento
Los objetos son un paradigma
15/10/1998 PRINCIPIA INFORMATICA 13
Un objeto es ... (1)
• Una representación de algo como si fuera una componente bien definida– Se enfoca a un único
concepto
– Captura hechos acerca del concepto
– Encierra hechos con procedimientos, reglas
– Presenta una interfaz bien definida
Atributos
Operaciones
Nombre
del objeto
Atributos:
Operaciones:
15/10/1998 PRINCIPIA INFORMATICA 14
Un objeto es ... (2)
• Un paquete de datos,
procedimientos y
restricciones que representan
un concepto en
– el mundo de los negocios
– ambiente de computadoras
• Un módulo definido
alrededor de un dominio
conceptual en lugar de
estructuras de códigoProcedimientos
Restricciones
Datos
Nombre
del objeto
Atributos:
Operaciones:
15/10/1998 PRINCIPIA INFORMATICA 15
¿Dónde existen los objetos?
• Los objetos son una representaciónen ...
– el mundo real (i.e., negocios)– computadoras (i.e., tecnología)
• Entonces los objetos existen en ...– el modelado , análisis y reingeniería de
negocios– Análisis y diseño de sistemas– Software
• Los objetos son construcciones tanto para el modelado como para el software
– Los objetos no son sólo una forma de programar
Procedimientos
Restricciones
Datos
Nombre:
silla
Atributos:Costo
Dimensiones
PesoOperaciones:ComprarVenderMover
15/10/1998 PRINCIPIA INFORMATICA 16
¿Por qué los objetos son
diferentes?
• Sólo un conjunto de procedimientos y reglas actúan
sobre los datos– Control en la integridad de los datos
– Datos, procesos y reglas compartidos
• Todos los procedimientos, datos y reglas acerca del
sujeto están atados a un paquete bien definido e
integrado– Componentes de software
– Diseñar acorde a las especificaciones de las componentes
• La frontera del modulo es el sujeto, no el programa– Simplifica la reutilización
15/10/1998 PRINCIPIA INFORMATICA 17
¿Por qué los objetos son
familiares?
• Los objetos integran conceptos familiares como ...– Procesos y control de procesos
– Procedimientos, actividades, tareas, acciones
– Datos
– Reglas, políticas, restricciones
– Relaciones
– Eventos, desencadenamientos, resultados
• Los objetos son módulos que representan conceptos simples y bien definidos del dominio
15/10/1998 PRINCIPIA INFORMATICA 18
Los objetos redefinen la
modularidad
• La frontera del objeto determina su dominio– Separa el interior (el cómo) del
exterior (el qué) creando modularidad– Proporciona una interfaz bien definida
para otros objetos– Oculta la complejidad de la
implementación– Previene los conflictos en la
manipulación de atributos causados por procedimientos y reglas redundantes
• Los objetos son paquetes auto-contenidos
Procedimientos
Restricciones
Datos
Nombre:
silla
Atributos:Costo
Dimensiones
PesoOperaciones:ComprarVenderMover
15/10/1998 PRINCIPIA INFORMATICA 19
Los objetos son
empaquetamiento
• Los objetos se refieren al empaquetamiento– a nivel conceptual (de pensamiento)
– a nivel de implementación (software)
• Los objetos re-empaquetan los objetos existentes con nuevas características que hacen los conceptos existentes fáciles de utilizar– ¡Ojo! ... el empaquetamiento hace toda la
diferencia
– El nuevo empaquetamiento cambia el paradigma
15/10/1998 PRINCIPIA INFORMATICA 20
Los objetos son un paradigma
• ¿Qué es un paradigma?– Un marco de referencia o un punto de vista bien
definido
– Una forma de visualizar el mundo en el cual están bien definidas sus propias perspectivas y consecuencias
• Los objetos son un paradigma porque ...– Cambian nuestro punto de vista sobre la
realidad para proporcionarnos una perspectiva totalmente diferente
• ... destacando diferentes enfoques (consecuencias)
• ... visualizando la realidad de una forma nueva
15/10/1998 PRINCIPIA INFORMATICA 21
CONCEPTOS CLAVE Y
TERMINOLOGÍAEl pensamiento de objetos se basa en tipos
Las instancias almacenan datos
No todos los tipos tienen instancias
Clases abstractas
Clases concretas
Tipos + instancias = objetos
2 conceptos fundamentales
Generalización y especialización
¿Qué es jerarquía?
Propiedades de los objetos
Los objetos están activos
Herencia es un tipo de relación
Herencia múltiple vs. Herencia simple
Polimorfismo es un efecto colateral
Delegación es una relación
¿Por qué los “nuevos” términos?
15/10/1998 PRINCIPIA INFORMATICA 22
El pensamiento de objetos se
basa en tipos
• Un tipo o clase describe un conjunto de objetos con las mismas propiedades– Los tipos se utilizan el modelado de
negocios– Las clases se utilizan en el
diseño/programación
• Define los procedimientos, atributos y restricciones de todos los objetos de ese tipo– Los métodos están definidos en la
clase– Las variables están definidas en la
clase
Procedimientos
Restricciones
Datos
Nombre:
silla
Atributos:Costo
Dimensiones
PesoOperaciones:ComprarVenderMover
15/10/1998 PRINCIPIA INFORMATICA 23
Las instancias almacenan datos
• Instancia = un miembro del tipo o clase
• Una clase puede tener varias instancias– Las instancias tienen diferentes
valores para sus atributos– Los datos se almacenan en las
instancias
• Todas las instancias de una clase– son del mismo tipo– tienen el mismo comportamiento– tienen los mismos atributos
Nombre:
silla
Atributos:Costo
Dimensiones
PesoOperaciones:ComprarVenderMover
Clase:
silla
Atributos:Costo
Dimensiones
PesoOperaciones:ComprarVenderMover
La punta del triángulo indica de donde provienen las operaciones y atributos
15/10/1998 PRINCIPIA INFORMATICA 24
No todos los tipos tienen
instancias
• Los tipos de objetos existen por dos razones:– Para definir propiedades de otros tipos (i.e.,
especializaciones)
– Para crear instancias (i.e., registros en bases de datos)
– Así, se definen 2 tipos de tipos de objetos• Tipos abstractos: aquellos que se dan por definición
• Tipos concretos: aquellos que tiene instancias
– Los tipos abstractos son importantes en ...• Modelado de negocios y reingeniería de procesos en los
negocios
• Diseño de servidores
• Mapeo de tablas en base de datos
• Aplicaciones en análisis y diseño
15/10/1998 PRINCIPIA INFORMATICA 25
Clases abstractas
• Las clases abstractas no tienen instancias
– Por ejemplo: integer, float, string
– Las clases abstractas se crean para ...
• Generalizar características
• Facilitar cambios
• Crear oportunidades de re-utilización
• Eliminar redundancia
– Comúnmente las clases abstractas son superclases en la jerarquía
• Definen propiedades en común para todas las subclases
15/10/1998 PRINCIPIA INFORMATICA 26
Clases concretas
• Clases concretas pueden o tendrán instancias
– Por ejemplo: mobiliario
• Las clases concretas se crean para ...
– implementar un tipo de objetos
– reflejar diferencias
– crear instancias
• Comúnmente las clases concretas son subclases de una o mas clases abstractas. Así
– cumplen con las propiedades de la superclase
– agregar sus propias propiedades
– crear instancias de su tipo
15/10/1998 PRINCIPIA INFORMATICA 27
Tipos + instancias = objetos
• Los tipos capturan la forma y carácter de lo que representan– Los tipos abstractos capturan las propiedades comunes
– Las especializaciones capturan las diferencias
• Cada instancia captura los valores reales de las propiedades de lo que representa
• Un objeto es un término que puede comprender tanto tipos como instancias. Comúnmente se utiliza cuando ...– no es necesario distinguir entre las clases y la instancia
– se refiere a un concepto de la realidad
15/10/1998 PRINCIPIA INFORMATICA 28
2 conceptos fundamentales
• Encapsulamiento– La única forma de interactuar
con los datos es a través de un conjunto de procedimientos llamados servicios o métodos
– Proporciona el empaquetamiento que hace que el objeto se comporte como tal
• Especialización– Modificable para nuevos usos y
sin ningún cambio al objeto original
– Basados en tipos de jerarquías
Procedimientos =
servicios o
métodos
Datos
Nombre:
silla
Atributos:Costo
Dimensiones
PesoOperaciones:ComprarVenderMover
15/10/1998 PRINCIPIA INFORMATICA 29
Generalización y especialización
• La generalización contiene todas
las propiedades comunes
– Padre es más abstracto
• La especialización contiene la
diferencia en las propiedades
– Hijo es más concreto
• Cada especialización sirve para
un propósito específico
• Se puede organizar en una
jerarquía o superjerarquía
15/10/1998 PRINCIPIA INFORMATICA 30
¿Qué es jerarquía? (1)
• Una estructura de especialización donde el hijo puede tener al menos uno y sólo un padre– La estructura resultante es un
árbol
• La jerarquía facilita la separación de lo general de lo específico– Las hojas del árbol representan
conceptos más especializados que los nodos superiores
Cuentanombre, dirección,
estado, balance,
fecha de apertura,
fecha de cierre ...
sacar balance,
depositar, pedir
préstamo
Cuenta de
cheques
balance, balance mínimo, etc.
sacar balance,
depositar, pedir
préstamo
Cuenta de
ahorros
balance, balance mínimo, tasa de interés, etc.
sacar balance,
depositar, pedir
préstamo
15/10/1998 PRINCIPIA INFORMATICA 31
¿Qué es jerarquía? (2)
• Se pueden hacer objetos de
otros objetos
• Esto se conoce como
agregación
• El comportamiento del objeto
más grande se define por el
comportamiento de sus partes
componentes, separadamente y
en conjunción con el otro
derecho o izquierdo
Pie
patea
Mano
derecha o izquierda
agarra, toma, pasa por atrás, lanza
Malabarista
El diamante indica que un objeto está
hecho de otros objetos. El número
indica ´la cantidad de componentes
2 2
15/10/1998 PRINCIPIA INFORMATICA 32
Propiedades de los objetos
• Comportamiento, servicios, métodos
– Los procedimientos o funcionalidad que encapsula un tipo
• Atributos
– Variables o estructura de datos interna para el tipo de objetos
• Protocolo
– Como el objeto presenta un servicio al exterior
• Interacción, mensaje
– Un objeto solicita un servicio a ser ejecutado por otro objeto
• Relación
– Referencias estáticas de un objeto con otro
– Asociaciones estructurales entre padre e hijo
15/10/1998 PRINCIPIA INFORMATICA 33
Los objetos están activos
• Los objetos mandan mensajes para obtener el trabajo realizado por otros objetos
• Cualquier mensaje solicita un servicio
• El receptor exhibe su comportamiento en respuesta al mensaje
• El formato del mensaje es a través de un protocolo
• El intercambio total es una interacción
Solicitante
(cliente)
Receptor
(servidor)
Mensaje
15/10/1998 PRINCIPIA INFORMATICA 34
Herencia es un tipo de relación
• Es una forma de generalización y especialización– Es una relación– Es apropiada para el diseño y discusiones de
implementación
• Es un mecanismo para adquirir propiedades– aísla las propiedades comunes en el padre,
llamado superclase– aísla las diferencias en el hijo, llamado subclase
• Refleja la generalización del mundo real y los tipos de jerarquías
• Agrega propiedades a través de tipos de especialización
15/10/1998 PRINCIPIA INFORMATICA 35
Herencia simple vs. Herencia
múltiple
• Herencia simple: las propiedades adquiridas
provienen de un sólo padre
• Herencia múltiple: propiedades adquiridas de
más de un padre y se puede diferenciar o
seleccionar por origen
15/10/1998 PRINCIPIA INFORMATICA 36
Polimorfismo es un efecto
colateral
• Polimórfico significa “muchas formas”– Describe cómo un comportamiento cambia cuando
se escala la herencia de la clase
– Describe cómo un simple comportamiento puede evocar diferentes consecuencias en una especialización más que en la generalización
• Ejemplo: la operación “add” se puede utilizar de la siguiente forma add_line_item, add_to_balance, all_new_employee
• Polimorfismo es un resultado de “generalización y especialización” cuando se implementa por herencia
15/10/1998 PRINCIPIA INFORMATICA 37
Delegación es una relación
• Delegación es una forma de generalización y especialización– Actúa como (o toma el papel de) una relación– Delegación es especialización por liberación de
trabajo
• Es un mecanismo para adquirir propiedades– aísla las propiedades comunes en el padre– aísla diferencias en el hijo– no aplica con términos de superclase y subclase
• Refleja un comportamiento del mundo real• Agrega propiedades a través del comportamiento
15/10/1998 PRINCIPIA INFORMATICA 38
¿Por qué los “nuevos”
términos?
• El pensamiento de objetos se enfoca– al entendimiento de las cosas– su contexto y sus fronteras– su asociación con otras cosas en su contexto
• Es necesario un lenguaje para expresar esta forma de pensar– Los modelos convencionales del lenguaje pueden
expresar algunas partes– El diseño/programación convencionales pueden
expresar algunas partes– Los objetos juntan las partes– Los objetos conectan el pensamiento de negocios con
la programación
15/10/1998 PRINCIPIA INFORMATICA 39
CATEGORIZANDO A LOS
OBJETOS
Categorías de objetos
Objetos de tecnología
¿Por qué objetos de tecnología?
Objetos de aplicaciones
Objetos de negocios
¿Por qué objetos de negocios?
15/10/1998 PRINCIPIA INFORMATICA 40
Categorías de objetos (1)
• Los objetos están organizados 3 categorías
– Objetos de tecnología
– Objetos de aplicaciones
– Objetos de negocios
• Cada categoría es una subclase abstracta de objetos
Clase de objetos
Objetos de
aplicación
Objetos de
negocios
Objetos de
tecnología
15/10/1998 PRINCIPIA INFORMATICA 41
Categorías de objetos(2)
• Cada una sirve a un propósito diferente en
los negocios y la tecnología de
información (TI)
• Cada una emerge de un proceso específico
de TI
• Reutilización de cada una requiere de
planeación y organización
15/10/1998 PRINCIPIA INFORMATICA 42
Objetos de tecnología
• Un modelo o paquete de software utilizado en la infraestructura de las tecnologías de información y representando un simple concepto tecnológico
• Una forma de organizar la tecnología en una arquitectura estándar basada en partes comerciales y propias
• Utilizada para construir objetos de negocios, aplicaciones, y servicios de sistemas
15/10/1998 PRINCIPIA INFORMATICA 43
¿Por qué objetos de tecnología?
• Esta infraestructura tecnológica es un ensamblador para todas las aplicaciones de negocios y objetos de negocios– Proporciona partes estándar de fácil
ensamblaje– Aísla el ambiente de computación de las
aplicaciones y objetos de negocios– Hace todas las aplicaciones mas
consistentes, fáciles de aprender y dar mantenimiento
– Reduce los costos de diseño/programación y tiempo en partes pre-construidas
15/10/1998 PRINCIPIA INFORMATICA 44
Objetos de aplicaciones
• Herramientas de negocios compradas o a la medida para ejecutar tareas de negocios específicos o presentar información
• Ensambladas a partir de código de programas y objetos de tecnología
• Clientes de los servicios de objetos de negocios
• Presentan los servicios en capas, tales como ordenes de entrada, mantenimiento de bases de datos, facturación, y procesamiento de requisiciones
15/10/1998 PRINCIPIA INFORMATICA 45
Objetos de negocios
• Un modelo o paquete de software de procesos
de negocios, políticas y controles alrededor de
datos relacionado con un sólo concepto
• Una forma de organizar los datos correctos y los
procedimientos correctos en el lugar correcto
• Independiente de las aplicaciones
• Utilizados en la empresa para representar
conceptos compartidos de negocios tales como
clientes, órdenes, y productos
15/10/1998 PRINCIPIA INFORMATICA 46
¿Por qué objetos de negocios? (1)
• Administra las diferencias y cambios en las reglas de negocios– Colocan las reglas de negocios divisionales/locales
en las especializaciones– Conservan las definiciones corporativas, reglas de
negocios y datos en la generalización
• Ayudan a la reingeniería de procesos de negocios y a los aspectos relacionados– El método estructurado tradicional y orientado a
objetos tienen grandes diferencias– Las diferencias son caras a menos que produzcan
insumos
15/10/1998 PRINCIPIA INFORMATICA 47
¿Por qué objetos de negocios? (2)
• Datos, reglas, administración de procesos– Definiciones compartidas
de los conceptos fundamentales de negocios
– Procedimientos compartidos de datos y negocios
– Reglas compartidas de negocios e integridad de las restricciones
• Es un mecanismo de sistemas para reflejar los negocios– Utilizando aplicaciones que
comparten los objetos de negocios se puede romper con esquemas obsoletos
– Integra los sistemas heredados en un ambiente de objetos de negocios
– Genera estrategias consistentes de negocios, procesos, datos y definiciones en la empresa
15/10/1998 PRINCIPIA INFORMATICA 48
PENSAMIENTO DE OBJETOS
Pensamiento de objetos efectivo
El pensamiento de negocios está relacionado
con ...
Premisas para el pensamiento de objetos
Patrones de negocios
Utilización de los patrones de negocios
El inicio del pensamiento de negocios
15/10/1998 PRINCIPIA INFORMATICA 49
Pensamiento de objetos efectivo
• El pensamiento de objetos efectivo ...– Inicia en el nivel de la
ubicación espacial del problema (i.e., objetos de negocios)
– Se traslada a los servidores de software compartidos (i.e., marcos de objetos de negocios = business object frameworks = BOF)
– Se lleva a través del análisis de las aplicaciones (i.e., análisis orientado a objetos = AOO)
– Se refleja en el diseño de la aplicación (i.e., diseño orientado a objetos = DOO)
– Y se ejecuta en software (i.e., programación orientada a objetos = POO)
• Nota: POO no es un requisito para el pensamiento de objetos– Pero la POO hace posible la
realización del pensamiento de objetos en software
15/10/1998 PRINCIPIA INFORMATICA 50
El pensamiento de objetos está
relacionado con ... (1)
• Ingeniería de negocios
– Una reingeniería de procesos de negocios (BPR) y una mejora sustancial de los mismos es posible si se utilizan objetos de negocios para modelarlos y evaluarlos
• Rediseña la infraestructura para la implementación
– Mensajes a través de middleware que permiten a los objetos de negocios “simular” las actividades de negocios, datos almacenados y procedimientos activos
Objeto de
negocios
15/10/1998 PRINCIPIA INFORMATICA 51
El pensamiento de objetos está
relacionado con ... (2)
• Rediseño de las aplicaciones
– Las aplicaciones se convierten en controladores útiles para controlar servidores compartidos de objetos de negocios (todo vía el middleware)
• Aplica el pensamiento de empaquetado en cada paso
15/10/1998 PRINCIPIA INFORMATICA 52
Premisas para el pensamiento de
objetos
• Los negocios son más similares que disimilares– Los negocios son muy parecidos en un 80% en su
estructura, procesos, eventos
– La competitividad es sólo el 5% del modelo de negocios
– Las diferencias tácticas e industriales corresponden al 5%
• Si se capturan las similitudes de conexión y utilización de los objetos, entonces se puede– Especializarlos una y otra vez para diferentes usos
– Reutilizarlos de diferentes formas
15/10/1998 PRINCIPIA INFORMATICA 53
Patrones de negocios
• Una forma de resolver problemas que utiliza prototipos– guías genéricas de diseño,
arquetipos, plantillas
• Colección de objetos y asociaciones de negocios que capturan un tema recurrente– Las asociaciones pueden
ser interacciones, relaciones o grupos
• Sub-ensamblaje de negocios pre-fabricados– Ensambla un conjunto
de objetos y sus relaciones en un módulo
• Son una forma poderosa de iniciar el pensamiento de objetos en el nivel de los negocios
15/10/1998 PRINCIPIA INFORMATICA 54
Utilización de los patrones de
negocios
• Se pueden especializar acorde a las necesidades de los negocios– Esto implica reutilización en diferentes áreas de los
negocios, siempre y cuando exista una base común
• Eliminan la necesidad de la reinvención– Las arquitecturas de “conectar y usar” los requieren
para trabajar con modelos y aplicaciones de negocios
• Los sistemas son más fáciles de desarrollar para un negocio bien definido– Los patrones se enfocan al pensamiento de negocios,
haciendo el proceso de definición menos frustrante, más concreto
15/10/1998 PRINCIPIA INFORMATICA 55
El inicio del pensamiento de
negocios
• El pensamiento de objetos efectivo inicia con los
negocios– Las empresas enfocadas a los lenguajes de programación
normalmente fallan en la obtención de beneficios
substanciales de la tecnología de objetos
– Aquellas que inician con las aplicaciones normalmente desean
tener modelo de objetos de la empresa para su segundo
proyecto
– Los negocios que inician con objetos de negocios pueden
relacionar la estrategia de negocios y la actividad operacional
con las soluciones de software• Los negocios dirigen al software
• El software sirve a los negocios