IPC2 PS 2013 Primer Proyecto(vFinal)
Transcript of IPC2 PS 2013 Primer Proyecto(vFinal)
Universidad de San Carlos de Guatemala
Facultad de Ingeniería
Escuela de Ciencias y Sistemas
Introducción a la Computación y Programación 2
Primer Semestre, 2013
Grupo “R”
El jueves de la semana pasada Juan Chacón, CFO de Grupo R, se encontraba en su oficina
generando los estados financieros corporativos del grupo, esta actividad era necesaria debido a que
todos los viernes primeros de mes la junta directiva del grupo se reunía para revisar, monitorear y
definir acciones con respecto a los resultados financieros obtenidos. Como era de costumbre el Lic.
Chacón iniciaba todos los jueves previos al primer viernes del mes a colectar toda la información
necesaria para poder generar los diferentes documentos financieros.
El Lic. Chacón comenta que esta actividad era una actividad bastante sencilla a inicios de los años
2,000 cuando el grupo contaba solamente con la empresa Distribuidora de Recargas S.A,
posteriormente el grupo comenzó a crecer comprando y desarrollando tres empresas más: Mega
Banana, Don Cándido, y Súper Cambio, cada una de las cuales contaba con un área contable,
operativa, administrativa y comercial.
Aquella tarde de jueves el Lic. Chacón pudo notar que en los últimos 6 meses la consolidación de la
información era cada vez más complicada, extensa y cada vez la probabilidad que fuera exacta era
más baja, en esta ocasión en específico eran las 15:00 horas y aún no habían generado ni un solo
documento financiero situación que definitivamente era preocupante ya que de esta información
dependía el rumbo financiero de la empresa, así como también la toma de decisiones correctas que
afectarían a corto y a mediano plazo a todo el grupo.
Cabe mencionar que hace algunos años el Lic. Chacón, recibió algunos cursos sobre páginas WEB,
Blogs, Animación de Flash, los cuales le permitieron adquirir algunas competencias que lo ayudaban
a identificar que algo estaba pasando con el flujo de Información, y comenzó a cuestionarse: ¿Por
qué la información no está lista cuando se necesita? ¿Por qué es necesario generar la información
sí esta se genera en todos los puntos de venta de la empresa? ¿Qué pasa con las herramientas de
IT (Tecnología de Información por sus siglas en inglés) de la empresa, que no proveen esa
información? Esa misma tarde el Lic. Chacón contactó a Lic. Carlo Magno CTO del grupo a una
reunión. Carlo y Juan platicaron durante varias horas, periodo en el cuál surgieron varios tópicos y
conversaciones de interés, y al finalizar la conversación Carlo comentó a Juan: la empresa cuenta
con 5 ERP1, un ERP de uso corporativo y uno para cada empresa. Juan comentó que cada ERP era
diferente, cada uno fue desarrollado en tecnologías diferentes, bases de datos diferentes y
administrados con DBMS diferentes, etc. También comentó que cada empresa utilizaba un sistema
Web que era utilizado en los diferentes puntos de venta, estas aplicaciones Web alimentan el ERP
de su empresa en línea para que la información esté disponible siempre para propósitos
financieros, administrativos, operativos, comerciales, etc. Mientras más explicaciones brindaba
Carlo a Juan, este último se preocupaba cada vez más. Por último Carlo comentó a Juan: La
1 ERP: Sistemas de Planificación Empresarial cuyo objetivo es gestionar la información para
sistematizar y automatizar, procesos y prácticas de un negocio.
situación principal es: Tenemos 5 fuentes de información, 4 de ellas alimentan a un principal que es
el ERP Corporativo y lo hacen por medio un proceso manual (un usuario de cada empresa,
descarga la información del ERP de la empresa y la sube al ERP Corporativo) y es por eso que la
información no está fluyendo a la velocidad que se necesita.
Juan se preocupó y pregunto a Carlo ¿Por qué se hizo de esa forma? ¿Por qué no se centralizó todo
en una sola base de datos?, Carlo comentó que esto se había hecho así, porque las empresas
“Mega Banana”, “Don Cándido”, y “Súper Cambio” fueron empresas adquiridas por el grupo, cada
una de estas ya contaba con su ERP, y en aquel tiempo se necesitaba iniciar los más rápido posible
por tal razón se decidió que la integración en una sola base de datos sería en una segunda fase,
fase cuyo objetivo era la integración de todos los sistemas de las empresas. Segunda fase que
jamás se ha llevado a cabo debido a las distintas prioridades de la empresa.
Por último Juan bromeo con Carlo utilizando la expresión “Houston we’ve a problem!” Juan le
expresó a Carlo: “necesito información en línea y en tiempo real” esta información es de suma
importancia para el grupo, para tomar decisiones certeras y adecuadas. Necesito la información
este en línea y en tiempo real lo más pronto posible, de hecho a más tardar al siguiente mes.
Estamos planeando convertirnos en una empresa pública en el siguiente trimestre, razón por la cual
la certeza de información que la empresa pueda proveer es un requisito indispensable para cumplir
con dicho objetivo. Mañana estaré platicando con el CEO para verificar como podemos apoyarte,
esto es prioritario.
Carlo sabía que el reto era grande, la cantidad de actividades a realizar eran considerable, el
tiempo no era su mejor amigo y el grupo se encontraba a cortos pasos de buscar nuevos
horizontes, las únicas preguntas que rondaban en la mente de Carlo eran: ¿Cómo consolido la
información del grupo en un base de datos? ¿Cómo hago accesible la información del grupo en
tiempo real? ¿Me dará tiempo en un mes?, etc.
Las Herramientas de IT Grupo R contaba con 5 ERP, cada ERP brindaba funcionalidades diferentes y muy específicas para
cada empresa. La estrategia de uso para cada ERP era sencilla: Aprovechar al máximo toda
funcionalidad del ERP, si alguno de ellos no poseía las funcionalidades necesarias se desarrollaba
un sistema y/o los módulos necesarios para que estos se integraran con el ERP a nivel de datos.
Grupo R contaba con dos ERP tipo cliente/servidor y 3 ERP tipo web, todos con bases de datos
diferentes y DBMS similares (Véase Anexo 1). Por otra parte Grupo R también contaba con 4
sistemas WEB, cada uno de ellos totalmente integrados con el ERP de su empresa a nivel de datos;
esto significa que cada dato que se almacena en las bases de datos de los aplicativos se replica en
tiempo real a cada una de las bases de datos del ERP de cada empresa (Véase Anexo 2 y Anexo 3).
Cabe mencionar que Grupo R contaba con más de 1200 puntos de venta2, que funcionaban en un
horario de 07:00 a 20:00 donde el 60 % de los puntos de venta utilizaban PDV, el 20% de los
puntos de venta utilizaba PDV Online, el 10% utilizaba RestOS y el otro 10% utilizaba Exchange. De
esta forma cada punto de venta registraba las ventas de los productos de cada empresa. Debido a
que cada empresa de Grupo R se dedicaba a negocios diferentes jamás existió la necesidad de
2 Punto de Venta: Término utilizado por Grupo R para nombrar a una ubicación física posible de
localizar geográficamente en el cual se realizaba la venta de los productos de cada empresa.
colocar dos herramientas de empresas diferentes en el mismo punto venta, ventaja que permitió
facilitar la operatividad y dinámica del negocio en cada punto de venta ya que a los vendedores se
le hacía mucho más fácil utilizar solamente un sistema.
Consolidación de la Información Todas las mañanas un empleado del departamento de contabilidad de cada empresa dedicaba 30 a
45 minutos realizando las siguientes actividades.
1. Buscando la información de los productos y/o servicios vendidos el día anterior
2. Depurando la información encontrada
3. Exportando la información a un archivo
4. Modificando el archivo para que este pudiera ser utilizado por el sistema Dynamico.
5. Cargado el archivo al sistema Dynamico
6. Verificando que los datos se hayan cargado correctamente.
En algunas ocasiones estos seis pasos lograban completarse muy rápidamente, especialmente en
los sistemas TROMBIT, EXACT y ASPIX, situación totalmente diferente en el sistema ROSPEL que
de alguna forma siempre presentaba algún tipo de inconveniente al usuario final el cual
imposibilitaba que la información pudiera ser cargado a Dynamico en tiempo y forma. Al momento
de concluir las actividades el empleado de contabilidad informaba vía correo electrónico al auxiliar
de contabilidad corporativa que la información ya estaba cargada en Dynamico. El auxiliar de
contabilidad corporativa esperaba la notificación de las cuatro empresas para proceder con el
análisis corporativo diario. María Solórzano, auxiliar corporativo comenta: “La información nunca
llega a tiempo, generalmente son las 11 de la mañana y aún no he recibido nada, en el mejor de
los casos la información me llega en el día, es muy común que la información este cargada en
Dynamico después de 48 horas, de hecho tengo casos registrados en los cuales la información ha
llegado con un periodo de retraso de 10 días, ¡No podemos seguir así!”
El Gran Reto Carlo sabía que tenía que actuar muy rápidamente, responder con agilidad y brindar resultados lo
más pronto posible. Realizó varios análisis a los ERP y sistemas existentes, los procesos de
consolidación de datos, las bases de datos existentes, con los cuales definió que el problema que
debía resolver era: ¿Cómo hago para trasladar los datos en las bases de datos de
TROMBIT, EXACT, ASPIX, y ROSPEL hacia DYNAMICO en línea?
Dentro del marco de análisis de las bases de datos existentes pudo observar que:
1. Las bases de datos de los sistemas TROMBIT Y EXACT poseen las siguientes características
a. Todos los datos de los registros de las tablas principales se encontraban
encriptados, así como también los procedimientos almacenados que agregaban y/o
extraían información.
b. Solamente se tenía acceso a los datos necesarios a través de tablas resumen, no
normalizadas. (Ver Anexo 4 y Anexo 5)
c. No se poseía documentación sobre cómo descifrar los registros y/o procedimientos
almacenados.
2. Las bases de datos de los sistemas ASPIX y ROSPEL poseen las siguientes características
a. Bases de datos normalizada
b. Poca documentación de las tablas y campos (Ver Anexo 6)
c. Facilidad para extraer los datos
3. Todas las bases de datos estaban protegidas por el fabricante, es decir, sí alguna tabla era
manipulada en definición, estructura y/o eventos la empresa perdía el contrato de soporte
y la garantía de software
El análisis de las bases de datos permitió comprender a Carlo que lo que necesitaba era una
solución para extraer los datos de las bases de datos, almacenarlos en una base de datos temporal
y luego trasladar los datos obtenidos y centralizados a la base de datos de Dynamico. A esta
solución la llamó INTEGRATOR y tiene como objetivo “Trasladar los datos de los ERPs de las
Empresas al ERP Corporativo”. INTEGRATOR debía contar con las siguientes características:
1. Monitorear todas las bases de datos de los ERP cada 5 minutos
2. Trasladar la información de las bases de datos de los ERP locales a una base de datos
Centralizada
3. Verificar y validar que toda información trasladada a la base de datos centralizada haya
sido traslada correctamente
4. Trasladar la información de la base de datos centralizada a la base de Datos de Dynamico.
5. Contar con una aplicación de tipo Web:
a. Segura, protegida por usuario y contraseña.
b. Consulta de Histórico de Traslado de Información:
i. De las bases de datos locales de ERP hacia la base de datos de
INTEGRATOR
ii. De la base de datos de INTEGRATOR a la base de datos de Dynamico.
c. Reporte de Histórico de Traslado de Información
i. De las bases de datos locales de ERP hacia la base de datos de
INTEGRATOR
ii. De la base de datos de INTEGRATOR a la base de datos de Dynamico.
d. Alerte
i. Si la información ha o no ha sido trasladada correctamente:
1. De las bases de datos locales de ERP hacia la base de datos de
INTEGRATOR
2. De la base de datos de INTEGRATOR a la base de datos de
Dynamico.
e. Permita manejar excepciones
i. Sí algún traslado de información falla en cualquier punto INTEGRATOR
deberá poder eliminar ese traslado de información para proceder a iniciar
uno nuevo. Esto será realizado por únicamente por el usuario y no de
forma automática
f. Generar el estado de resultados para el equipo corporativo (Anexo 7)
Sobre el Proyecto Carlo decidió contratar a un Ingeniero de Software para analizar los requerimientos de software, así
como también diseñar el software, desarrollar, probar e implementar el software. Para ello Carlo
decidió realizar el proyecto en tres fases, a continuación la descripción de entregables de la primera
fase:
1. Requerimientos del Sistema
a. Panorama General
b. Clientes
c. Metas
d. Funciones del Sistema
e. Atributos del Sistema
2. Análisis del Sistema Orientado a Objetos
a. Diagrama de Casos de Uso
b. Especificación de Casos de Uso a Alto Nivel
c. Especificación de Casos de Uso Escenciales (Todos)
d. Modelo Conceptual
3. Glosario
4. Arquitectura General Preliminar de la Solución
5. Diagramas Entidad Relación Documentados
6. Planificación de Proyecto Utilizando Microsoft Project basada en la metodología iterativa
incremental y casos de uso.
Valor del Proyecto: 05 (cinco) Puntos.
Fecha de Entrega: Martes, 12 de marzo de 2013
Anexos
Anexo 1: ERP de Grupo R Empresa ERP Arquitectura Tecnología DBMS
Distribuidora de
Recargas S.A
Trombis Cliente / Servidor .NET 1.1 SQL Server 2008 R2
Mega Banana S.A Exact Cliente / Servidor Java 1.3 SQL Server 2008 R2
Don Candido S.A Aspix WEB ASP 3.0 SQL Server 2008 R2
Super Cambio Rospel WEB ASP 3.0 SQL Server 2008 R2
Grupo R Dynamico WEB .NET 4.0 SQL Server 2008 R2
Los ERP Trombis, Exact, Aspix, Rospel y Dynamico, son sistemas de planeación de recursos
empresariales que permite la gestión de información para sistematizar y automatizar varios
procesos, actividades y prácticas del negocio. Cada uno de estos ERP son sistemas que contienen
módulos tales como: producción, ventas, compras, contabilidad, inventarios, pedidos, pagos,
nóminas, etc. Generalmente los ERP son sistemas que son utilizados de forma administrativa, y no
como sistemas de contacto y/o atención directa al cliente.
Anexo 2: Sistemas de Grupo R Empresa Sistema Arquitectura Tecnología DBMS
Distribuidora de Cargas S.A
PDV WEB ASP SQL Server 2000
Mega Banana S.A PDV
Online
WEB ASP MySQL
Don Candido S.A RestOS WEB ASP.NET 2.0 SQL Server 2000
Super Cambio Exchange WEB ASP.NET 2.0 SQL Server 2000
Grupo R
PDV, PDV Online, Rest OS, y Exchange, son herramientas WEB, desarrolladas por cada empresa,
para poder realizar las diferentes ventas de los diferentes productos y servicios. Cada empresa
tiene un cajero y/o vendedor asignado en su punto de venta el cual accede desde su computadora
al sitio respectivo. Desde allí realiza la venta del producto y/o servicio para que luego esta
información viaje al ERP de cada empresa.
Anexo 3: ERP y Sistemas de Grupo R Empresa ERP Sistemas Método de Integración
Distribuidora de
Cargas S.A
Trombis PDV COM +
Mega Banana S.A Exact PDV Online WEB Services
Don Candido S.A Aspix RestOS WEB Services
Super Cambio Rospel Exchange Archivos
Grupo R Dynamico PDV
Anexo 4: Base de Datos de TROMBIS
tbl_resumen_ventas tbl_resumen_costosOperativosVariables
tbl_resumen_costosOperativosFijos tbl_resumen_otrosConceptos
idResumenVentasPK
datosCliente
resumenVenta
detalleVenta
idResumenCostoOperativoVariablePK
resumenCostosOperativosVariables
detalleCostosOperativosVariables
idResumenCostoOperativoFijoPK
resumenCostoOperativosFijo
detalleCostoOperativoFijo
idResumenOtrosConceptosPK
resumenOtrosConceptos
detalleOtrosConceptos
Ilustración 1 Modelo de Datos de Base de Datos Trombis
Tabla: tbl_resumen_ventas
Contiene la información de todas las ventas registradas.
Campo Tipo de Dato Descripción
idResumenVentas Int AutoIncrement
datosCliente Varchar(500) Contiene la información de la persona a la cual se realizó
una venta. Es un texto estructurado de la siguiente forma: [Nombre del Cliente]|[dirección]|[NIT]
Ejemplo Luis Fernando Salazar|4ta. Calle 20-25 Z. 7|C.F
resumenVenta Varchar(500) Contiene la información de la venta realizada. Es un texto
con el siguiente formato: [FechaVenta(ddmmyyyy)]|[total]
Ejemplo:
12022012|275.00
DetalleVenta Text Contiene el detalle de la venta realizada. Es un texto
estructurado de la siguiente forma: [NombreProducto]|[Cantidad]|[PrecioProducto]|[SubTotal]
Ejemplo:
Recarga Q25.00|1|25.00|25.00 Recarga Q50.00|1|50.00|50.00
Recarga Q100.00|2|100.00|200.00
Anotaciones:
Es posible que este campo contenga varias líneas.
tbl_resumen_costosOperativosVariables: Contiene el listado de todos los costos operativos variables de la empresa.
Campo Tipo de Dato Descripción
idResumenCostoOperativoVariables
Int AutoIncrement
resumenCostosOperativosVariabl
es
Varchar(500) Contiene el resumen de los costos
operativos variables que fueron pagados por la empresa. Es un texto con el siguiente
formato: [Fecha(ddmmyyyy)]|CostoOperativo]|[total]
Ejemplo:
20122013|COMISION DE VENTAS|1.50
detalleCostosOperativosVariables Text Contiene el detalle de los costos operativos
variables que fueron pagados por la empresa. Es un texto con el siguiente
formato
[DescripciónCosto]|[Cantidad]|[Valor]|[SubTotal]
Ejemplo: COMISION RECARGA|1|0.25|0.25
COMISION RECARGA|1|1.00|1.00
COMISION RECARGA|1|0.25|0.25
Anotaciones: Es posible que este campo posea varias
líneas.
tbl_resumen_costosOperativosFijos: Contiene el listado de todos los costos operativos fijos de la empresa.
Campo Tipo de Dato Descripción
idResumenCostoOperativoFijo Int AutoIncrement
resumenCostoOperativoFijo Varchar(500) Contiene el resumen de los costos operativos fijos que fueron pagados por la empresa. Es
un texto con el siguiente formato: [Fecha(ddmmyyyy)]|CostoOperativo]|[total]
Ejemplo:
20122013|NOMINA ADMINISTRATIVA|200.00
detalleCostoOperativoFijo Text Contiene el detalle de los costos operativos
variables que fueron pagados por la empresa.
Es un texto con el siguiente formato [DescripcionCosto]|[Cantidad]|[Valor]|[SubTo
tal] Ejemplo:
PAGO SALARIO 1|1|100.00|100.00 PAGO SALARIO 2|1|50.01|50.01
PAGO SALARIO 3|1|49.99|49.99
Anotaciones:
Es posible que este campo posea varias líneas.
tbl_resumen_otrosConceptos: Contiene la información de otros conceptos cancelados por la empresa.
Campo Tipo de Dato Descripción
idResumenOtrosConceptos Int AutoIncrement
resumenOtrosConceptos Varchar(500) Contiene el resumen otros conceptos pagados
por la empresa. Es un texto con el siguiente
formato: [Fecha(ddmmyyyy)]|DEPRECIACION|INTERE
SES|IMPUESTOS]|[total] Ejemplo:
20122013|DEPRECIACION|200.00
20122013|INTERESES|200.00 20122013|IMPUESTOS|200.00
Anotaciones: Este campo contiene solamente un registro.
Arriba se muestran 3 para ejemplificar los tres tipos valores que pueden estar en el
campo.
detalleOtrosConceptos Text Contiene el detalle de otros conceptos pagados por la empresa. Es un texto con el
siguiente formato
[DescripcionConcepto]|[Cantidad]|[Valor]|[SubTotal]
Ejemplo: PAGO DE IUSI|1|100.00|100.00
PAGO DE ISR|1|100.00|100.00
Anotaciones:
Es posible que este campo posea varias líneas.
Anexo 5: Base de Datos EXACT
historico_transacciones
idHistoricoTransaccionesPK
fecha
descripción
Ilustración 2 Modelo de Datos de Base de Datos EXACT
Historico_transacciones
Contiene el registro de todas las transacciones realizadas
Campo Tipo de Dato Descripción
idHistoricoTransacciones Int AutoIncrement
Fecha Datetime Contiene la fecha en la cual fue realizada la
transacción
Descripción Text Contiene un XML que detalla la transacción
El campo descripción, puede contener un XML con el siguiente formato:
<?xml version="1.0" encoding="UTF-8" ?>
<TipoTransaccion>
<!--
A continuación se listan los valores que puede tener este campo:
VENTA|COSTO_OPERATIVO|COSTO_FIJO|PAGO_INTERESES|PAGO_IMPUESTOS|DEPRECIACION
Solamente puede tener 1 valor. No puede ser nulo.
--->
</TipoTransaccion>
<datosCliente>
<!-- Los datos de cliente estarán disponibles sí existe una venta --->
<nombre><!—- Nombre Completo ---></nombre>
<direccion><!-- Dirección ---></direccion>
<nit><!-- NIT o C/F---></nit>
</datosCliente>
<resumenTransaccion>
<totalTransaccion><!-- Suma de Sub Total---></totalTransaccion>
<numeroRegistros><!-- Cantidad de Registros en Detalle Transacción
---></numeroRegistros >
</resumenTransaccion>
<detalleTransaccion>
<registro>
<cantidad><!-- Número cuantificador de descripción
---></cantidad>
<descripicion><!-- Descripción---></descripción>
<valor><!-- Valor de Descriipción---></valor>
<subtotal><!-- Número x Valor---></subtotal>
</registro>
</detalleTransaccion>
Anexo 6: Base de Datos ASPIX y ROSPEL
Observaciones Generales al Modelo de Datos
1. Las tablas “Venta” y “DetalleVenta” contienen la información de todas ventas realizadas por
la empresa
2. Las tablas “Gastos” y “DetalleGastos” contienen la información de todos los costos
operativos (variables y fijos) realizados por la empresa
3. Las tablas “OtrosGastos” y “DetallesOtrosGastos” contienen la información de los rubros
como Impuestos, Intereses, Depreciación
Anexo 7: Estado de Resultados Grupo R 2011
Ventas Netas Q 1,500.00
Costos Operativos Variables -Q 1,230.00
Utilidad Bruta Q 270.00
Costos Operativos Fijos sin Depreciación -Q 90.00
Utilidad antes de Intereses, Impuestos, depreciación y amortización (UAIIDA)
Q 180.00
Depreciación -Q 50.00
Utilidad de Operación Neta (NOI) Q 130.00
Intereses -Q 40.00
Utilidades antes de Impuestos (UAI) Q 90.00
Impuestos (40%) -Q 36.00
Utilidad Neta Q 54.00