UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA SUR ÁREA DE ...biblio.uabcs.mx/tesis/te3221.pdf · En el...
Transcript of UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA SUR ÁREA DE ...biblio.uabcs.mx/tesis/te3221.pdf · En el...
UNIVERSIDAD AUTÓNOMA DE BAJA
CALIFORNIA SUR
ÁREA DE CONOCIMIENTOS DE
CIENCIAS DEL MAR
DEPARTAMENTO ACADÉMICO
SISTEMAS COMPUTACIONALES
TESIS
ACTUALIZACIÓN Y MEJORA DE RENDIMIENTO EN
SISTEMAS DE INTEGRACIÓN DE DATOS
QUE COMO REQUISITO PARA OBTENER EL TÍTULO DE:
LICENCIADO EN COMPUTACIÓN
PRESENTA:
RODOLFO GUTIÉRREZ ROJAS
DIRECTOR:
MSC. JESÚS ANDRÉS SANDOVAL BRINGAS
LA PAZ, B.C.S., OCTUBRE 2014
- 1 -
- 2 -
Dedicatoria
Dedico el presente trabajo a mis padres Rodolfo Gutiérrez Avedoy y María
Rojas Cuesta, que son las personas que hicieron todo en la vida para que yo pudiera
lograr mis sueños, por motivarme y darme la mano cuando sentía que el camino se
terminaba, gracias a su sabiduría influyeron en mi la madurez para lograr los
objetivos en mi vida, que siempre estuvieron listas para brindarme toda su ayuda,
ahora me toca regresar un poco de todo lo inmenso que me han otorgado.
Con todo mi cariño esta tesis se las dedico Papá y Mamá, y a quienes siempre
estuvieron conmigo como padres también amados abuelos, es para ustedes esta
tesis en agradecimiento por todo su apoyo y amor.
- 3 -
Agradecimientos
Un agradecimiento singular debo al profesor Jesús Andrés Sandoval Bringas
que, como Director de esta tesis, por su apoyo y amistad desde los inicios de la
carrera me ha orientado, apoyado y corregido durante todo mi ciclo de formación
con un interés y una entrega que han sobrepasado, por mucho, todas las
expectativas que, como alumno, deposité en su persona.
Agradezco también a mis amigos José Beltrán, Sergio García, Antonio Aguilar,
Cristian Almaraz, Héctor Aguilar, Alfredo Guzmán, Efraín Moreno, Francisco Medina,
Wendy Zavala, Daniela Gonzalez que han sido por mucho parte de mi crecimiento
profesional y personal y me han acompañado en las etapas más importantes y
cruciales de mi vida.
En especial agradezco a Rosalina Torres por su apoyo constante y haber sido
mi inspiración y motivación en el desarrollo de este trabajo.
Ya por último sin ser menos importantes quiero agradecer a todas las
personas que me ayudaron en la elaboración de este trabajo, desde la capacitación
en las tecnologías y metodologías utilizadas, en las cuales se basa la tesis, así como
al extenso grupo de grandes maestros que han formado parte de mi educación
desde el inicio de la carrera hasta la fecha que sigo aprendiendo de ellos, han sido
una guía fundamental para la elaboración del presente documento.
- 4 -
CONTENIDO
1. INFORMACIÓN DE LA EMPRESA .................................................................... - 8 -
2. ANTECEDENTES ............................................................................................. - 12 -
3. DESCRIPCIÓN DEL PROBLEMA ACTUAL. ................................................... - 15 -
4. SOLUCIÓN DEL PROBLEMA. ......................................................................... - 17 -
5. CALENDARIO DE ACTIVIDADES PARA LA ACTUALIZACIÓN A WEBMETHODS .................................................................................................... - 21 -
5.1 ALCANCE ........................................................................................................- 22 - 5.2 ANÁLISIS/PLANEACIÓN .....................................................................................- 22 - 5.3 CONFIGURACIÓN .............................................................................................- 23 - 5.4 DESARROLLO ..................................................................................................- 24 - 5.5 UNIT TESTING .................................................................................................- 24 - 5.6 USER ACCEPTANCE TESTING (UAT) .................................................................- 24 - 5.7 RESOLUCIÓN DE ERRORES ...............................................................................- 25 - 5.8 ENTREGA E IMPLEMENTACIÓN ...........................................................................- 25 - 5.9 POST-PROJECT REVIEW ..................................................................................- 25 -
6. DETERMINACIÓN DE REQUERIMIENTOS. .................................................... - 26 -
6.1 FUNCIONAMIENTO DE LA INTEGRACIÓN POR CONNECT:DIRECT ............................- 28 - 6.1.1 Flujo de información del AS400 al SQLServer por medio de Connect:Direct ....................................................................................................................... - 29 - 6.1.2 Flujo de información del SQLServer al AS400 por Connect:Direct ....... - 32 -
6.2 FUNCIONAMIENTO DE LA INTEGRACIÓN POR WEBMETHODS .................................- 35 - 6.2.1 Flujo de información de AS400 a SQLServer por webMethods ............ - 39 - 6.2.2 Flujo de información de SQLServer a AS400 por webMethods ............ - 41 -
7. JUSTIFICACIÓN DEL PROYECTO. ................................................................. - 43 -
7.1 OBJETIVOS DEL NEGOCIO A ALTO NIVEL Y CRITERIOS DE ÉXITO ............................- 45 - 7.2 ENTREGABLES DEL PROYECTO A ALTO NIVEL .....................................................- 46 - 7.3 ALCANCE DEL PROYECTO .................................................................................- 47 - 7.4 SUPOSICIONES DEL PROYECTO ........................................................................- 48 - 7.5 RIESGOS INICIALES DEL PROYECTO Y ALTERNATIVAS DE SOLUCIÓN ......................- 49 -
8. ESTÁNDARES DE NOMENCLATURA PARA EL DESARROLLO EN WEBMETHODS. ................................................................................................... - 50 -
8.1 TERRITORIO ....................................................................................................- 51 - 8.2 BROKERS ........................................................................................................- 51 - 8.3 ADAPTADORES ................................................................................................- 52 - 8.4 PAQUETES ......................................................................................................- 53 - 8.5 CARPETAS Y SUBCARPETAS .............................................................................- 55 - 8.6 SERVICIOS ......................................................................................................- 58 - 8.7 VARIABLES ......................................................................................................- 59 -
- 5 -
9. GUÍAS GENERALES DE DESARROLLO Y MEJORES PRÁCTICAS PARA EL DESARROLLO EN WEBMETHODS. ................................................................... - 60 -
10. ESTÁNDARES DE NOMENCLATURA PARA EL DESARROLLO EN SQL SERVER................................................................................................................ - 62 -
10.1 TABLAS .........................................................................................................- 62 - 10.2 CAMPOS .......................................................................................................- 65 - 10.3 RUTINAS DE OBJETOS ....................................................................................- 66 - 10.4 PARÁMETROS ................................................................................................- 71 - 10.4 VARIABLES ....................................................................................................- 71 -
11. GUÍAS GENERALES DE DESARROLLO Y MEJORES PRÁCTICAS PARA EL DESARROLLO SQL SERVER. ............................................................................ - 74 -
12.1 FASE 1 – FASE INICIAL ...................................................................................- 84 - 12.2 FASE 2 – FASE DE PLANEACIÓN ......................................................................- 86 - 12.3 FASE 3 – EJECUCIÓN .....................................................................................- 90 - 12.4 FASE 4 – CONTROL .......................................................................................- 91 - 12.5 FASE 5 – FASE DE ENTREGA O CIERRE DEL PROYECTO ....................................- 93 -
13. GLOSARIO ..................................................................................................... - 97 -
14. BIBLIOGRAFÍA ............................................................................................ - 101 -
- 6 -
INDICE DE ILUSTRACIONES ILUSTRACIÓN 1: VISTA GENERAL DE LOS AMBIENTES ............................................................. - 20 - ILUSTRACIÓN 2: ESCALA DE TIEMPO PARA EL PROYECTO ....................................................... - 21 - ILUSTRACIÓN 3 : VISTA GENERAL DEL PROYECTO .................................................................. - 21 - ILUSTRACIÓN 4 : ALCANCE DEL PROYECTO ........................................................................... - 22 - ILUSTRACIÓN 5 : ANÁLISIS/PLANEACIÓN ............................................................................... - 22 - ILUSTRACIÓN 6 : CONFIGURACIÓN ....................................................................................... - 23 - ILUSTRACIÓN 7 : DESARROLLO ............................................................................................ - 24 - ILUSTRACIÓN 8 : UNIT TESTING ........................................................................................... - 24 - ILUSTRACIÓN 9 : USER ACCEPTANCE TESTING (UAT) ........................................................... - 24 - ILUSTRACIÓN 10 : RESOLUCIÓN DE ERRORES ....................................................................... - 25 - ILUSTRACIÓN 11 : ENTREGA E IMPLEMENTACIÓN .................................................................. - 25 - ILUSTRACIÓN 12 : POST-PROJECT REVIEW ........................................................................... - 25 - ILUSTRACIÓN 13 : FLUJO DE ENVÍO DE INFORMACIÓN POR CONNECT:DIRECT ......................... - 28 - ILUSTRACIÓN 14 : CARPETA DE PASO DEL UPLOADER (STAGE). ........................................ - 30 - ILUSTRACIÓN 15 : CARPETA DE FINALIZADO DEL UPLOADER. .............................................. - 31 - ILUSTRACIÓN 16 : CARPETA DEL DOWNLOADER. .............................................................. - 33 - ILUSTRACIÓN 17 : CARPETA DE FINALIZADO DEL DOWNLOADER ............................................. - 34 - ILUSTRACIÓN 18 : FLUJO DEL ENVÍO DE INFORMACIÓN POR WEBMETHODS ............................. - 38 - ILUSTRACIÓN 19 : EJEMPLO DE UN PAQUETE ........................................................................ - 54 - ILUSTRACIÓN 20 : EJEMPLO DE NOMENCLATURA DE CARPETA PARA SERVICIOS PUBSUB ......... - 56 - ILUSTRACIÓN 21 : EJEMPLO DE NOMENCLATURA DE CARPETA PARA UTILIDADES GENERALES ... - 57 - ILUSTRACIÓN 22 : EJEMPLO DE NOMENCLATURA EN WEBMETHODS........................................ - 58 - ILUSTRACIÓN 23 : EJEMPLO DE CODIFICACIÓN DE UN SERVICIO DE WEBMETHODS .................. - 61 - ILUSTRACIÓN 24 : EJEMPLO DE NOMENCLATURA DE TABLAS EN SQL SERVER ........................ - 64 - ILUSTRACIÓN 25 : EJEMPLO DE NOMENCLATURA PARA CAMPOS EN SQL SERVER ................... - 65 - ILUSTRACIÓN 26 : APROBACIÓN DE PROYECTO ..................................................................... - 89 -
- 7 -
INDICE DE TABLAS
TABLA 1 : NOMBRES DE VARIABLES EN WEBMETHODS ..................................................- 59 - TABLA 2 : ACRÓNIMOS DE DOMINIOS EN AMWAY PARA DATOS .......................................- 64 - TABLA 3 : ACRÓNIMOS DE PROCESOS PARA NOMBRAR OBJETOS ...................................- 70 - TABLA 4 : NOMENCLATURA DE ACCIONES DE OBJETOS .................................................- 70 - TABLA 5 : NOMENCLATURA DE VARIABLES EN SQL SERVER .........................................- 73 -
- 8 -
1. INFORMACIÓN DE LA EMPRESA
Amway es una compañía de marketing multinivel fundada en 1959 en Estados
Unidos por Jay Van Andel y Rich DeVos. [1] El marketing multinivel (venta directa por
redes interactivas) es una modalidad que permite organizar un negocio en el cual los
productos y servicios son ofrecidos para consumo final mediante una red de
empresarios Amway. Este enfoque elimina o descarta la típica cadena de
comercialización, es decir, a los intermediarios y los gastos relacionados, lo cual
hace posible abaratar el proceso que va desde la elaboración del producto (o
servicios) hasta la puesta en manos del consumidor final, permitiendo que quede
dinero en la llamada red de comercialización, o distribuido entre los empresarios (o
los distribuidores y contacto directo del cliente). Así se generan ingresos
directamente proporcionales al volumen de ventas de los ABOs y sus redes. El
precio final es, en la mayoría de los casos mucho más económico que los productos
de la competencia al eliminar intermediarios y gastos varios como son: los gastos
publicitarios que lo único que hacen es aumentar drásticamente el importe final de
los productos distribuidos por canales tradicionales y que son inútiles en los tiempos
que corren pudiendo utilizar las nuevas tecnologías para poder ofrecer y distribuir
eficazmente los productos y servicios que los consumidores demandan. [2]
Amway abrió su primera filial en América Latina en 1985 en Panamá, seguido por
Guatemala en 1987, México en 1990, Brasil en 1991, Argentina en 1993, Honduras,
El Salvador, Chile y Uruguay en 1995. Para el año de 1996 se abrieron los
mercados de Costa Rica y Colombia, y finalmente Venezuela en 1998, desde ese
año no se ha realizado más aperturas en América Latina. Amway tiene en el mundo
3 millones de empresarios independientes, y que lleva un 7% de crecimiento
promedio anual en los últimos años. [1]
El CLOS es un modelo de negocios que facilita la posibilidad de crecimiento y
desarrollo del negocio Amway en los doce mercados de América Latina en los que
Amway tiene presencia.
- 9 -
El modelo de Negocio Amway consiste en 4 pasos: [3]
1. Consumir
Este paso consiste en probar personalmente los productos para
certificar su calidad, conocerlos. Se pueden comprar en inicio con hasta
el 30% de descuento al iniciar siendo un ABO.
2. Recomendar
Al conocer los productos se pueden recomendar y comercializar entre
conocidos, se puede ganar hasta un 43% en la comercialización.
3. Duplicar
Incrementar las ventas enseñando a otros a consumir, recomendar y
duplicar sus ventas instruyéndolos a hacer lo mismo que uno: consumir
y formar redes de negocio.
4. Capacitarse
En el Instituto de Negocios Amway se recibe apoyo a través de
entrenamientos presenciales y en línea, además se tiene acceso a
libros, audios, videos y folletos que ayudan a crecer el Negocio Amway.
Estos empresarios reciben ingresos de Amway de varias formas siendo cuatro las
básicas:
1. Pueden comprar los productos a precio de distribuidor y venderlos al
consumidor final por un precio mayor.
2. El proveedor de los productos ofrece compensaciones al empresario con base
a la venta de productos y servicios al consumidor.
3. El proveedor ofrece compensaciones por las ventas realizadas a través de la
red de empresarios Amway que éste haya registrado e instruido en el negocio.
4. Amway proporciona incentivos adicionales por metas logradas en
determinados periodos de tiempo.
- 10 -
Principios
Los co-fundadores, Jay Van Andel y Rich DeVos, delinearon los estándares éticos y
operacionales que continúan guiando a la compañía y a sus empresarios en todas
sus actividades. Estos principios fundamentales están literalmente tallados en piedra
afuera del Centro Mundial de Operaciones: Libertad, Familia, Esperanza y
Recompensa
Amway siempre apoyará la libertad fundamental de las personas en determinar su
propio futuro, brindándoles el tiempo y recursos para proteger y nutrir a su familia.
Adicionalmente, siempre ofrecerá esperanza para los individuos y la oportunidad de
recibir recompensas en proporción con sus esfuerzos.
Visión
La visión es simple, trabajar todos los días para ayudar a la gente a vivir mejor. Esto
se logra al ayudar a las personas a descubrir su potencial y alcanzar sus metas al
ofrecer mejores productos y oportunidades para el futuro y a compartir
generosamente mostrando solidaridad con las personas y sus comunidades, además
de la preocupación por el medio ambiente.
Valores
Sociedad. Amway está construida sobre este concepto, comenzando con la sociedad
entre los fundadores. Siempre se trata de hacer lo que al final sea lo más importante
para los asociados, de forma que aumente la confianza.
Integridad. El éxito no se mide simplemente a base de términos económicos, sino a
base del respeto, la confianza y la credibilidad que se gana.
- 11 -
Valor personal. Cada persona merece respeto y merece un trato justo y la
oportunidad de tener tanto éxito como le sea posible.
Logro. El enfoque que se tiene está en las mejoras, el progreso y los logros
continuos de las metas de cada individuo y grupo. Se fomenta la creatividad y la
innovación.
Responsabilidad Personal. Cada individuo es responsable de alcanzar sus metas
personales, al igual que dar el 100 por ciento de su esfuerzo para ayudar a alcanzar
las metas corporativas o del equipo, además se tiene la responsabilidad de ser
buenos ciudadanos en las comunidades donde vivimos y trabajamos.
Libre Empresa. Se ha probado claramente que el avance económico humano se
alcanza de mejor forma en una economía de libre mercado.
- 12 -
2. ANTECEDENTES
Las grandes empresas hoy en día suelen hacer frente a dos retos. El primero es la
incapacidad de alinear a sus organizaciones para actuar rápidamente. El segundo es
la incapacidad de aplicar los cambios lo suficientemente rápido para satisfacer las
constantes variaciones en las condiciones del mercado. Ambas de estas limitaciones
son a menudo el resultado de restricciones en procesos y tecnología que se han
acumulado a lo largo de años de reaccionar ante el mercado y los competidores.
Los líderes empresariales se encuentran a menudo lidiando entre si al tratar de
compartir una estrategia de negocio sin un lenguaje común para impulsar la
implementación. Eso es una oportunidad donde los servicios de IT son de gran
ayuda. Por ejemplo, pensar en “servicios” permite un enfoque único - con la
capacidad de actualizarse y perfeccionarse dinámicamente con la demanda del
mercado, o con los cambios en la estrategia del negocio.
Al pensar en “servicios”, los líderes de negocios y los equipos de tecnología
colaboran para eliminar las barreras que se presentan en el camino de la innovación.
En lugar de comenzar con procesos pre-definidos y con tecnologías pre-
configuradas, se debe empezar con el pensamiento centrado en las necesidades de
capacidades del negocio - tanto de hoy y de mañana. [4]
En la actualidad las demandas de los negocios siguen desafiando las capacidades
de IT con una presión creciente por hacer “más, mejor y rápido”, con una velocidad
acorde a las presiones del mercado. Se requiere además coherencia en varios
canales e integración de procesos. Los accionistas exigen mejorar los retornos sobre
la inversión (ROI), la competencia presiona y se buscan reducir costos y aumentar la
eficiencia y eficacia. Hacia adelante el camino no sólo exige soluciones, también
requiere agilidad en tiempos de respuesta ante los cambios.
- 13 -
Con la velocidad de cambios que ocurren con IT y las tendencias que se encuentran
a nivel mundial en las que se exigen más y mejores niveles de servicio, se ha
tornado crítico dentro de todo tipo de empresas (comercialización, entretenimiento,
entidades financieras, sitios de comercio electrónico) el poder contar con servicios de
IT más robustos, eficientes, rápidos y confiables que ofrezcan el entregar soluciones
a tiempo y cumpliendo con las exigencias que demandan los mercados. En Amway
Latinoamérica, la mayor parte de la información es gestionada a través de dos
plataformas de Bases de Datos, el núcleo de dicha información se encuentra
almacenada en servidores AS400 de IBM; y para el manejo o administración en
general del sitio web se hace por medio de SQL Server de Microsoft.
El AS400 está además compuesto por numerosos sistemas y subsistemas que
administran los módulos con los que se rige el negocio. A través de estos sistemas y
subsistemas se alimentan de información:
Distintos módulos dentro del mismo AS400.
El Global Data Warehouse (GDW).
La Base de Datos del eCommerce (SQL Server).
El módulo de premios, crecimiento y compensaciones (MAGIC)
El eCommerce utiliza bases de datos en SQL Server 2012; y para que pueda operar
correctamente requiere además de la información que se genera a través del sitio
alimentarse de la que se encuentra contenida en el AS400, por ejemplo la
actualización en inventarios, de precios e impuestos en los productos, los puntos
generados por los empresarios (cálculo de volumen de ventas del negocio), etc.
Además es necesario actualizar al AS400 con la información que es generada a
través del sitio web, como por ejemplo los nuevos clientes y empresarios que son
dados de alta o sufren alguna modificación en sus datos, como direcciones,
información personal, las órdenes que estos generan en línea, por mencionar solo
algunos.
- 14 -
Dicha actualización de información entre ambos ambientes se hace por medio de
Connect:Direct y las distintas formas en que se integra actualmente la información
son las siguientes:
1. Del AS400 al SQL Server (por medio de Connect:Direct).
2. Del SQL Server al AS400 (por medio de Connect:Direct).
3. Del AS400 al AS400 (por medio de webMethods y WebSphere MQ).
4. Del AS400 a GDW (por medio de webMethods).
5. Del AS400 a MAGIC (por medio de webMethods).
6. Del SQL Server a proveedores de servicios externos (por medio de web
services).
- 15 -
3. DESCRIPCIÓN DEL PROBLEMA ACTUAL.
Como ocurre en un gran número de organizaciones se cae en una zona de confort,
ya que mientras los procesos existentes devuelven un resultado esperado no importa
nada más mientras estos procesos cumplan con esa función, con lo que no se
contempla la oportunidad de actualizar dichos procesos, así como el atender un tema
importante existente en todo sistema de información que puede llegar a afectar con
el transcurso del tiempo cuando no se ejecuta un plan de acción apropiado, que es el
rendimiento de los sistemas. [5]
El resultado que trae un bajo rendimiento se refleja en la latencia disfuncional de la
integración de información, o que la información no se presente en los sistemas
destino a como es requerido por los procesos del negocio en un tiempo determinado,
que no se genere con un formato correcto para su operación, o lo que es más
común, que los procesos que manipulan esa información les tome más tiempo del
esperado y con esto se ven afectados otros sistemas y/o usuarios.
Un punto importante en el tema específico de Amway, es que es necesario que la
mayor parte de la información recolectada por cualquiera de los dos sistemas sea
sincronizada con el otro para mantener la integridad de datos entre ambos sistemas
para la correcta operación del negocio, con lo que es indispensable establecer un
canal de comunicación que permita tener la información actualizada de forma casi
inmediata entre ambas plataformas.
Esto se ejecuta con Connect:Direct, que al ser una herramienta considerada y
desarrollada para transmitir enormes paquetes de información por lotes y no para
realizar transacciones en línea (online), no es posible tener los datos actualizados de
forma inmediata (existe un retraso de al menos 5 minutos y hasta de 3 horas
dependiendo del tamaño del archivo generado), y esto también genera una carga
- 16 -
excesiva de trabajo con los procesos en el sistema del AS400 al generar la
información afectando con esto al rendimiento del sistema.
El no tener la información en línea representa un enorme problema debido a que
existe información que es crítico sea actualizada casi de inmediato, por ejemplo el
continuo movimiento de cambios en el inventario de los productos, las órdenes que
son generadas en cualquiera de los sistemas, información fiscal actualizada de
clientes, por mencionar algunas. Por lo que la función principal de trabajar con lotes
de información no es la adecuada para el objetivo que persigue el negocio.
Con esto también brotan un par de problemas extras relacionados a la integración de
datos que no se habían contemplado. Primeramente son los problemas en el
rendimiento de los procesos que manejan las integraciones, provocados por un
crecimiento inmenso no planeado y en segundo, los que son originados debido a que
se realizó un mal diseño en la arquitectura del manejo de la información.
El inmenso crecimiento de información en los sistemas de origen y/o destino
ocasionan actualmente problemas en el rendimiento de los procesos existentes y en
el sistema de integración de datos cuando necesitan navegar entre los datos
almacenados, ya sea para consultar o para realizar operaciones sobre ellos.
Es decir, si por ejemplo cuando solamente se consta de 10,000 registros y no existe
un problema con el rendimiento, al llegar a incrementarse a 1, 000,000 de registros,
las consultas y operaciones alcanzan mayores tiempos si no existe una arquitectura
apropiada en los procesos así como en la estructura del sistema. Por lo que no se
obtiene la información requerida oportunamente y no es transmitida a tiempo, o el
que ya se tiene la información integrada pero los procesos que hacen uso de ella
requieren demasiado tiempo en entregar el resultado deseado.
- 17 -
4. SOLUCIÓN DEL PROBLEMA.
La solución propuesta consta de dos puntos, sin seguir un orden en particular
(debido a que se realizarán de manera paralela), es el implementar una herramienta
que nos permita integrar la información de una forma más eficaz, efectiva, rápida y
segura; y mejorar el rendimiento de los procesos existentes que se ejecutan sobre la
base de datos del eCommerce.
Para la herramienta de integración se debe contemplar la que permita manejar las
transacciones en línea, que no tenga inconvenientes de compatibilidad entre las
plataformas de AS400 y SQL Server, que se ajuste a los lineamientos de la
organización, que sea eficaz y efectiva, además de confiable y que otorgue un
soporte técnico robusto en cualquier momento.
Para esto se seleccionó webMethods de Software AG, la cual se especializa en la
integración de procesos de negocios, es una herramienta que ya es utilizada
actualmente por otras filiales de Amway en el mundo, por lo que ya hay gente
capacitada en su manejo en el corporativo de Amway en Michigan.
Esta herramienta proporciona una plataforma integrada que incluye ambos servicios
de arquitectura orientada a servicios (SOA) y administración de procesos de
negocios (BPM); y actualmente existen diversos casos de éxito al haber sido
implementada en otras grandes organizaciones como por ejemplo Dell, Coca-Cola,
MAPFRE, FedEx, Citi Bank, FEMSA, por mencionar solamente algunas de ellas. [6]
Para poder implementarla en Amway Latinoamérica se generarán ambientes de
desarrollo y pruebas en AS400, SQL Server y webMethods.
De los lados de AS400 y SQL Server se va a crear una réplica de estructura y datos
de los ambientes actuales de Producción (PD). Esta se promoverá a los nuevos
servidores de desarrollo (DEV) y pruebas (QA) de SQL Server, el AS400 utilizará el
- 18 -
mismo server global que maneja actualmente, pero se crearán nuevos ambientes de
DEV y QA dentro del servidor; en el caso de webMethods se comprarán servidores
UNIX para todos los ambientes (DEV, QA y PD).
Como primer etapa se elaborará el plan del proyecto que detallará cada una de las
fases, esto nos permitirá establecer el tiempo, la capacidad y los recursos necesarios
que deberán ser asignados en cada una de las fases que componen el proyecto final.
[7]
La programación de código de los servicios/interfaces en webMethods, de
Tablas/Stored Procedures en SQL Server y de Programas/Triggers en AS400 se
desarrollará primero en el ambiente de DEV de cada uno de ellos, y se efectuarán
pruebas por cada uno de los involucrados que trabajaron el desarrollo en cada parte.
La etapa de documentación comprenderá la creación de manuales (estándares,
mejores prácticas a seguir en el desarrollo, convenciones, nomenclaturas, políticas,
protocolos), los requerimientos de la integraciones (documentos IDEA, formatos de
solicitud de integraciones, información general de archivos origen, destino, servicios
de integración), definición de objetos en Base de Datos (definición de estructuras de
tablas, sinónimos, vistas, Stored Procedures y Jobs, arquitectura en cada uno de los
ambientes), pruebas (documentos UAT, TAT, regresión, cartas de salida, cadencia y
defectos) y por último la inscripción al reléase (evidencias, aprobaciones y PCR de
ser necesario).
En la etapa de desarrollo se crearán ambientes exclusivos para este tipo de actividad
en los nuevos servidores; y existirán para los 3 sistemas (SQL Server, AS/400 y
webMethods). Los desarrolladores de cada sistema utilizarán sus equipos locales,
con ellos se conectarán a los servidores por medio de clientes proporcionados por
cada aplicativo en los que tendrán permisos generales para poder trabajar con los
objetos.
- 19 -
Cuando se realice un cambio, cada desarrollador será responsable de efectuar
pruebas unitarias de sus cambios. Todo cambio deberá ser registrado en el TFS, el
cual nos permitirá llevar una bitácora de los cambios y tener un control de las
versiones que existan de cada objeto.
Al confirmar que funciona correctamente se procederá a registrar el cambio creando
un incidente (INC) en REMEDY, con esto se solicita que sean revisados y aprobados
los cambios por gente de corporativo, ya aprobados se migran los cambios al
ambiente de QA. Únicamente el administrador de cada sistema puede promover los
cambios; no deberán ser aprobados y en consecuencia migrados cuando no cuenten
con la debida documentación y no se le haya asignado un INC.
Una vez que los cambios se muevan al ambiente de QA, la gente encargada del
desarrollo en conjunto con los usuarios del negocio tendrá un periodo de realización
de pruebas en el que deberán validar que la información se encuentre sincronizada
entre ambas plataformas y los cambios funcionen correctamente.
Esta fase también contiene la generación de la documentación en los resultados de
pruebas de rendimiento, técnicas y de usuario, esto se realiza con toda interfaz
desarrollada y se deberán colocar comentarios con todos los escenarios que se
tomaron en cuenta para llevar a cabo las pruebas (exitosos y fallidos).
Con esta documentación se podrán conseguir las aprobaciones necesarias por parte
del negocio que serán presentadas en el Comité de Cambios (CAB). Con ellos se
certificará que los cambios fueron exitosos y se mostrarán en el CAB para que se
pueda dar la aprobación final del proyecto y a continuación establecer una fecha en
la que puedan ser liberados en el ambiente de Producción.
Además de la implementación de nuevos desarrollos y de la actualización o mejora
de los procesos existentes, se establecerán dinámicas y actividades de monitoreo
constantes. [8] Esto nos permitirá analizar la actividad de los procesos en ejecución
- 20 -
para efecto de realizar una mejora continua como parte final del ciclo de vida del
proyecto, esto nos dará la pauta para la toma de decisiones, a trabajar de una
manera proactiva y no reactiva al reaccionar con mayor tiempo de anticipación ante
cualquier eventualidad que se pudiera presentar relacionada a estos temas.
Ilustración 1: Vista general de los ambientes
- 21 -
5. CALENDARIO DE ACTIVIDADES PARA LA ACTUALIZACIÓN A WEBMETHODS
Ilustración 2: Escala de tiempo para el proyecto
Ilustración 3 : Vista general del proyecto
- 22 -
5.1 Alcance
Ilustración 4 : Alcance del proyecto
5.2 Análisis/Planeación
Ilustración 5 : Análisis/Planeación
- 23 -
5.3 Configuración
Ilustración 6 : Configuración
- 24 -
5.4 Desarrollo
Ilustración 7 : Desarrollo
5.5 Unit Testing
Ilustración 8 : Unit Testing
5.6 User Acceptance Testing (UAT)
Ilustración 9 : User Acceptance Testing (UAT)
- 25 -
5.7 Resolución de Errores
Ilustración 10 : Resolución de errores
5.8 Entrega e Implementación
Ilustración 11 : Entrega e implementación
5.9 Post-Project Review
Ilustración 12 : Post-project Review
- 26 -
6. DETERMINACIÓN DE REQUERIMIENTOS.
En los sistemas de AS/400 y Web hay información almacenada que es similar, pero
difiere la manera en que es generada y de la fuente de la que proviene. Por citar un
ejemplo, en el AS/400 se genera información cuando es capturada desde una
terminal de usuario en los AEC (tiendas y centros de atención abiertos al público),
por usuarios del negocio o cuando el empresario habla directamente al Centro de
Atención Telefónica.
Mientras que en Web se genera la información exclusivamente por medio de las
operaciones realizadas en el sitio, como el registro de nuevos empresarios, órdenes
capturadas en línea o cambios en los datos personales.
La información de Amway está contenida en módulos que administran los siguientes
sistemas:
DMS – Distributor Management System
En este sistema se almacenan los datos personales de clientes y empresarios
tales como nombres, números telefónicos de casa, oficina y celular, correos
electrónicos, direcciones para entrega de pedidos, datos fiscales e información
crediticia, puntos personales, puntos grupales del negocio, volumen de ventas
en el negocio, balance en su saldo, etc.
OMS – Order Management System
Todo lo relacionado a las Órdenes que fueron generadas sin importar el medio
de captura es almacenado en este sistema, como órdenes de Internet,
telefónicas, las realizadas en las tiendas, las de empleados. Además
almacena detalles de paquetes y promociones, información de pago de las
órdenes, los métodos de pago disponibles en cada región, financiamientos,
eventos, etc.
- 27 -
IMS – Inventory Management System
La información correspondiente a los productos está almacenada en este
sistema. Aquí se tiene el inventario en existencia de las distintas bodegas, el
detalle de los productos, su descripción, el inventario total disponible en el
AS400 y que es enviado a web para ser mostrado (en web solo se muestra el
70% del inventario que hay disponible, esto para no ocupar todo el inventario
en caso que se realicen órdenes telefónicas), su precio, información referente
a impuestos, peso, clase, etc.
LMS – Learning Management System
Este sistema tiene almacenada la información de los materiales de
aprendizaje, así como el progreso que tiene cada uno de los usuarios en esos
cursos. Contiene datos de los cursos que han tomado los empresarios para
aprender sobre el negocio, calificaciones de los cursos o materiales de apoyo
solo, los cursos que toman los empleados que pueden aplicar para su plan de
desarrollo individual (PDI), por mencionar algunos ejemplos.
RMS – Remittance Management System
Aquí se llevan a cabo los cálculos que se realizan por la actividad del negocio
de los empresarios. Son los bonos que han ganado, niveles a los que han
calificado, cálculo de los puntos personales y grupales del negocio obtenidos
por compras/ventas propias (venta directa o venta al por menor [retail]) o las
operaciones hechas por sus líneas de patrocinio (multinivel).
TMS – Transportation Management System
Almacena la información de los transportistas, empresas de mensajería y
paquetería de toda la región de Latinoamérica, lo que permite establecer
tiempos de entrega y ofrecer el servicio de rastreo de órdenes.
- 28 -
6.1 Funcionamiento de la integración por Connect:Direct
Connect:Direct es una herramienta punto-a-punto y su principal función es transferir
archivos entre computadoras centrales (HUB) y sistemas de rango medio (en este
caso el servidor del AS400 y el SQL Server para web) y opera utilizando el protocolo
FTP. [9]
En Amway es utilizado para mover volúmenes de información de tamaño variable
entre el AS400 y el SQL Server mediante archivos de texto.
Ilustración 13 : Flujo de envío de información por Connect:Direct
- 29 -
6.1.1 Flujo de información del AS400 al SQLServer por medio de Connect:Direct
La forma en que fluye la información del AS400 al SQL Server a través del Connect:
Direct se ejecuta del siguiente modo:
1. Un proceso se crea y se corre en el AS400 (JOB), el cual genera un archivo
con la información requerida. Hay 2 tipos de archivos pueden generarse, un
Maestro (p. ej. EBUINFM.txt), el cual contiene toda la información del archivo
o un Detalle (p. ej. EBUINFD.txt), que almacena únicamente los registros que
fueron modificados o insertados en el archivo. Se diferencian por la letra que
llevan al final (M por Maestro y D por Detalle).
2. El Connect: Direct mantiene corriendo procesos que revisan si es generado un
nuevo archivo en el AS400 cada 5 minutos.
3. El Connect: Direct lo(s) toma e inserta en un Servidor de Paso de Archivos
(STAGE), colocándolo(s) en la carpeta del país que le corresponde y existe
una carpeta extra además la cual administra la información consolidada de
todos los mercados. En este paso son insertados los archivos que se corren
en los procesos de cada 3 horas en ese servidor.
4. Cada 3 horas se corre un JOB sobre el servidor que ejecuta el proceso del
UPLOADER, este es un proceso que trabaja con la información que es
enviada desde el AS400 para ser insertada en web y fue creado por el
negocio, se encuentra desarrollado en VB.NET y corre sobre cada una de las
carpetas principales de cada mercado revisando si existen archivos
pendientes de procesarse.
- 30 -
5. En caso de existir archivos pendientes de procesar se mueven a una carpeta
de paso (STAGGING) y se eliminan de la carpeta principal, en este paso el
UPLOADER determina por medio de un diccionario de datos si es un tipo de
archivo maestro o detalle.
Ilustración 14 : Carpeta de paso del UPLOADER (STAGE).
o Para los Maestro, se corre un DTS que limpia la tabla destino y por
medio de un diccionario de datos se efectúa un mapeo que inserta la
información del archivo de texto en la tabla de SQL.
o En el caso para los Detalle, se ejecuta un Procedimiento Almacenado
generado por el UPLOADER en la Base de Datos, y realiza la
operación de insertar el registro en caso de no existir el en la tabla o
modificarlo en caso que exista.
6. Se llenan 2 archivos que almacenan la actividad (LOGs) del UPLOADER.
o Si ocurre un error al momento de querer procesar la información en el
destino, el sistema captura el detalle en un Log de Errores, con la
fecha, hora, nombre del archivo, descripción detallada del error y es
enviado un correo electrónico junto con una alerta al celular de las
personas que están encargadas del monitoreo y de darle
mantenimiento al sistema.
- 31 -
o Si la transacción es exitosa, el sistema captura el detalle en un Log de
Actividades, guardando fecha, hora y nombre del archivo; y mueve los
archivos de texto de la carpeta de paso a la de finalizado con un prefijo
con fecha y hora de procesamiento. (p. ej.
20120404_121518_EBUINFM.txt).
Ilustración 15 : Carpeta de finalizado del UPLOADER.
- 32 -
6.1.2 Flujo de información del SQLServer al AS400 por Connect:Direct
Para el flujo del SQL Server al AS400 los pasos son:
1. Las tablas de trabajo del SQL Server en las que se quiere enviar la
información al AS400 contienen desencadenadores (TRIGGERS), que
insertan la información en las tablas de paso (IDDT – Internet Data
Downloader Transfer) una vez que la aplicación inserta la información sobre
las tablas de trabajo (por ejemplo al momento de finalizar el registro de un
nuevo empresario se dispara el desencadenador una vez que es confirmado
ese registro y está listo para enviarse al AS400).
2. Estas tablas de paso también están especificadas en el diccionario de datos, y
se registra información como nombre de la tabla de paso, nombre del archivo
de texto a generarse, procedimiento almacenado que mueve la información
entre la tabla de trabajo y la de paso, número del contador de la última
transacción enviada (para control interno del sistema), mapeo entre campos,
longitud y tipo de dato de cada campo, las posiciones en las que se debe
insertar la información de cada campo en el archivo de texto, etc.
3. El Connect: Direct mantiene corriendo cada 5 minutos un proceso que manda
llamar al DOWNLOADER examinando las tablas de paso, se compara el
último número de transacción (tabla de diccionario de datos) y con el último
número de transacción generado (tabla de paso), si este último es mayor al
que existe en el diccionario de datos, el DOWNLOADER selecciona los
registros del el último número de transacción del diccionario de datos al último
número de transacción existente en la tabla de paso.
4. El DOWNLOADER después se encarga de generar el(los) archivo(s) de texto
colocando el prefijo MEG (p. ej. MEGREGIS.txt) que se va(n) a enviar al
AS400, y lo(s) genera en el Servidor de Archivos de Paso, insertándolo(s) en
la carpeta del país que le corresponde(n).
- 33 -
Ilustración 16 : Carpeta del DOWNLOADER.
5. Cuando se genera el archivo en esta carpeta por default se indica que está
como pendiente de procesarse. El Connect: Direct mantiene corriendo un
proceso cada 5 minutos en busca de nuevos archivos que estén pendientes
de procesarse.
6. Posteriormente se van tomando de forma secuencial cada uno de estos
archivos e intenta insertarlos directamente en el AS400. Cuando se van
procesando cada uno de ellos, sus correspondientes archivos se van
moviendo a la carpeta de finalizado, y se le coloca a cada uno de ellos un
prefijo que contiene la fecha y hora de procesamiento (p. ej.
20120405_091624_MEGREGIS.txt).
7. El AS400 crea y corre un JOB que procesa la información contenida en el o
los archivo(s) de texto y la inserta en un archivo de paso en su lado, esto para
validar primero la información recibida desde web antes de poder insertarla en
el archivo final o de trabajo del AS400.
8. Se llenan 2 archivos que almacenan la actividad (LOGs) del DOWNLOADER.
o Si ocurre algún error, se llena el archivo de Log de Errores, y se
especifica la fecha, la hora, nombre del archivo con el error, una
pequeña descripción que mencione el detalle del error que ocurrió, se
envían un correo electrónico y una alerta al celular de las personas
- 34 -
encargadas de monitorear y darle mantenimiento al sistema para que
puedan darle seguimiento.
o Si es exitosa, se llena el log de actividades indicando que se realizó
correctamente la carga y se agrega la fecha, hora y nombre del archivo.
Ilustración 17 : Carpeta de finalizado del Downloader
- 35 -
6.2 Funcionamiento de la integración por webMethods
WebMethods es un software empresarial enfocado a la integración
de aplicaciones, de procesos de negocios y de reglas B2B (Business to Business) y
que proporciona una plataforma integrada que incluye tanto una arquitectura
orientada a servicios (SOA) como un administrador de procesos de negocios (BPM)
e integración con la nube. [6]
Este sistema se centra en los problemas que confrontan los negocios con respecto al
manejo de la información almacenada en los distintos módulos, sistemas y
subsistemas por los que están conformados; permitiéndoles aprovechar sus
existentes recursos de IT, lo cual lleva a una mayor velocidad, seguridad y eficiencia
en la implementación.
El poder optimizar la eficiencia en los procesos de negocios internos y externos lleva
a logar una mayor productividad y eficacia en dichos procesos de negocios y obtener
un ROI (Return On Investment – Retornos de la Inversión) más considerable para la
organización.
WebMethods soporta la creación e integración de distintos servicios, el mapeo de
datos en una gran variedad de formatos así como canales de comunicación entre
diversos sistemas. Es un servidor de integraciones (IS – Integration Server)
multiplataforma basado en Java por lo que soporta Java, C/C++ como lenguajes de
programación para desarrollar servicios, además se cuenta con un lenguaje gráfico
de programación llamado FLOW.
- 36 -
Lo que nos permite hacer esta herramienta: [10]
Integra lo que sea con todo
o Conecta cualquier sistema o repositorio de aplicaciones con una
facilidad similar a plug and play.
o Compartir información entre sistemas
o Enlaza dispositivos móviles y aplicaciones SaaS (Software as a
Service) de forma segura entre los sistemas empresariales
o Utiliza una única puerta de enlace B2B (Business To Business) para
enlazar a todos los socios comerciales
o Amplifica la información y las aplicaciones a los empleados, clientes y
socios en cualquier lugar
Innovar más rápidamente
o Re-utiliza servicios y sistemas existentes para acelerar los tiempos para
su comercialización
o Se adapta rápidamente a las nuevas y cambiantes necesidades del
negocio (como las nuevas regulaciones, fusiones, aplicaciones móviles
e integración con la nube)
o Aprovecha las oportunidades móviles que se ofrecen a través de la
infraestructura existente
Reduce costos y riesgos
o Re-utiliza los activos existentes a menor costo total de propiedad
o No más costos y complejidad de integraciones punto a punto
o Se pueden eliminar los sistemas redundantes o innecesarios de las
empresas adquiridas
o Mejora la gestión de riesgos y cumplimiento normativo con una versión
de datos compartidos
- 37 -
Algunos de los beneficios clave que se obtienen son: [10]
Conectividad con el repositorio de aplicaciones; las aplicaciones personalizadas,
empaquetadas, centralizadas y bases de datos pueden interactuar e intercambiar
información fácilmente.
Reduce los costos de mantenimiento; reduce el tiempo y costo de integrar
nuevas aplicaciones eliminando complejas conexiones punto a punto.
Mejora los tiempos para comercialización de las aplicaciones; re-utiliza los activos
existentes y construye nuevas aplicaciones más rápidamente sin comprometer la
calidad.
Mueve datos grandes; mantiene una base de datos en memoria autorizada que
combina información de distintos puntos de origen al tiempo que garantiza su
fidelidad.
Habilita aplicaciones móviles empresariales; aporta información del motor y
capacidades para alimentar las aplicaciones móviles empresariales de una
manera segura y bien administrada.
Mejora las relaciones con los socios; aborda socios más rápidamente y reduce los
errores.
Desbloquea el valor de negocio de información única; revela las APIs a terceros
desarrolladores para construir nuevas aplicaciones y con esto llegar a nuevos
clientes.
Garantiza la calidad de los datos de la empresa; asegura una versión única y de
referencia de datos consumidos por las aplicaciones del negocio.
Se alinean las operaciones de IT con los imperativos del negocio, gracias a la
interoperabilidad del modelo de procesos.
Se simplifican los procesos de distribución.
Maneja la Arquitectura orientada a web (WOA) y utiliza los servicios de estilo
REST que permiten crear rápidamente aplicaciones web híbridas (Mashups), web
y móviles.
- 38 -
Maneja una infraestructura ESB (Bus de Servicios de Negocios) que permite una
completa integración empresarial, y al estar basado en estándares es compatible
con todas las tecnologías.
Se garantiza que sea cual sea el volumen de mensajes, estos serán distribuidos
correctamente por el ESB y permitirá el intercambio de mensajes en tiempo real
entre las aplicaciones.
Ilustración 18 : Flujo del envío de información por webMethods
- 39 -
6.2.1 Flujo de información de AS400 a SQLServer por webMethods
El proceso para enviar información del AS400 al SQL Server utilizando webMethods
es el siguiente:
1. Para los archivos del AS400 contemplados a enviarse a través de
webMethods les son programados desencadenadores (TRIGGERS), con ellos
al detectar un cambio en la información del archivo se inserta el registro
modificado o creado en un archivo que se denomina tabla de paso o buffer.
2. En el caso exclusivo de Latinoamérica se desarrollaron solo 3 tipos de
archivos para buffer, uno que alberga información sobre OMS, otro para DMS
y el último para IMS, dependiendo de la biblioteca en la que se encuentra el
archivo modificado es donde se inserta la información en el buffer, cada
registro enviado al buffer se inserta con un valor de status 1, que indica que
está pendiente de procesarse.
3. webMethods mantiene servicios (SCHEDULED TASKS) ejecutándose cada
10, 15 y 30 segundos (son 3 servicios) sobre cada archivo de buffer en el
AS400 que buscan registros con un valor de status 1.
4. Cada uno de esos servicios obtiene 75 de los registros e inserta en el
BROKER de webMethods (esta acción de inserción se le denomina
PUBLISHED) como un documento UDM (nombredelarchivoUDM, por ejemplo
promotionsUDM, que almacena la información relacionada a las promociones
del sitio).
5. En el broker se crea un trigger definido para cada UDM, el cual desencadena
un nuevo servicio encargado de insertar la información en la tabla de paso
correspondiente en el SQL Server (a esta acción de inserción se le denomina
SUBSCRIBED) por medio de un ADAPTER SERVICE usando un controlador
JDBC que debe actualizarse con cada versión nueva que salga de SQL
Server (actualmente está siendo utilizada la versión 2008).
- 40 -
6. Durante este proceso de inserción se pueden especificar transformaciones de
datos en el mapeo de la información (p. ej. Convertir fecha de AS400 a
formato de SQL Server 1110527 -> 2011-05-27).
- 41 -
6.2.2 Flujo de información de SQLServer a AS400 por webMethods
El proceso inverso de enviar información de Web al AS400 se detalla a continuación:
En las tablas de paso de SQL Server que almacenan la información a enviarse
a AS400, webMethods crea en ellas un trigger que copia los datos recién
insertados en otra tabla que también es creada por webMethods al momento
de darse de alta el trigger denominada tabla de notificaciones, que es en sí
solamente una tabla de paso de datos temporal y sirve de control para la
transferencia de información entre los dos sistemas.
webMethods mantiene ejecutando un servicio cada minuto en busca de nueva
información en las tablas de notificaciones, en caso de existir datos en la tabla
el servicio adquieres esa información y la inserta en el BROKER mapeando
los campos en el documento UDM que le corresponde al tiempo que va
eliminando esos registros de las tablas de notificaciones (así se detecta si hay
información pendiente de enviarse, ya que si existe información en la tabla de
notificaciones indica que está pendiente por tomarse y lista para ser enviada).
En el BROKER se dan de alta Triggers para cada tipo de documento UDM
que contienen filtros que indican condiciones a ser consideradas para su
procesamiento (por ejemplo que solo procese información relacionada a un
mercado, o que no contemple datos de pruebas), y cada uno de ellos dispara
un nuevo servicio encargado de mandar llamar un programa del AS400 (API),
en el cual se inserta la información mapeando los campos necesarios entre el
UDM y la API.
Ya que la información es insertada en la API se corren procesos propios del
AS400, para validarla y realizar las transformaciones de datos
correspondientes en caso de ser necesario para que pueda ser insertada en el
archivo final o de trabajo la información recibida.
- 42 -
Ya sea que la información haya sido insertada correctamente en la API o que
haya ocurrido algún problema durante ese proceso, la API regresa un valor a
webMethods para indicarle si fue exitosa o no la operación (1 si se insertó
correctamente y 0 si ocurrió algún error).
- 43 -
7. JUSTIFICACIÓN DEL PROYECTO.
Toda organización debe mantenerse a la vanguardia en sus diferentes campos de
acción, y para poder realizar esto deben contar con lo último en sistemas de
información que puedan cubrir las necesidades tanto de su entorno interior como el
exterior. [11]
El rediseño de la organización basado en la adquisición de nuevas tecnologías que
den paso a un nuevo sistema de información no es tarea fácil, ya que se deben
tomar en cuenta muchos aspectos de la organización (recursos humanos,
económicos y operativos) y se debe seguir un proceso previamente definido para
poder hacer que este rediseño logre ser un éxito. [12]
Para realizar el rediseño de los sistemas de información en la organización se hizo
un análisis de las necesidades, se utilizaron dos metodologías importantes para
determinar las necesidades de información esenciales en la totalidad de la
organización:
El análisis de la empresa, que examina a toda la organización en términos de
sus unidades, funciones, procesos y elementos de información.
El análisis de los factores críticos para el éxito, este se basa en la premisa de
que las necesidades de información de la organización están determinadas
por un número reducido de factores críticos para el éxito.
Los sistemas que actualmente administran esa información deben considerar ciertos
puntos necesarios para el correcto funcionamiento, disponibilidad, confiabilidad y
seguridad con los servicios que se brindan para la oportunidad de negocio que se les
ofrece a los empresarios.
- 44 -
Existen cuatro clases de cambio estructural en las organizaciones que se pueden
presentar en el rediseño de los sistemas de información: [11]
1. Automatización; la forma más común de cambio en la organización que la
tecnología de información hace posible, que consiste en el uso de sistemas de
información con el fin de acelerar el desempeño con las tareas existentes.
2. Racionalización; consiste en la agilización de los procedimientos operativos
estándar eliminando cuellos de botella obvios, de modo que la automatización
haga más eficientes dichos procedimientos.
3. Reingeniería; que implica rediseñar radicalmente el flujo de trabajo y los
procesos de negocio que se siguen para brindar productos y servicios, con el
objeto de reducir radicalmente los costos del negocio.
4. Cambios de paradigma; que es la forma más radical de cambio en los
negocios e implica una re-conceptualización de la naturaleza del negocio y la
organización misma.
Teniendo en mente esas cuatro clases de cambio los puntos que se consideran para
este proyecto es mantener la consistencia de los datos que se manejan entre ambos
sistemas, que esos datos sean entregados en un periodo de tiempo establecido que
permita trabajar de forma inmediata con esa información y continuar con la operación
necesaria en el negocio.
Además de establecer políticas de desarrollo y seguridad, que aparte de ser
establecidas en la creación de nuevos procesos servirán para mejorar procesos
existentes, con esto se tendrán sistemas más eficaces y eficientes sin poner en
riesgo la funcionalidad y operación de los sistemas que manejan la información.
- 45 -
7.1 Objetivos del negocio a alto nivel y criterios de éxito
Los objetivos a alto nivel para este proyecto son:
Instalar y configurar una infraestructura de webMethods 8 en paralelo a
nuevos ambientes de bases de datos para poder lograr la mejora, al final
retirar los demás ambientes de integración que usan Connect:Direct.
Efectuar pruebas unitarias, de regresión, de usuario y de rendimiento para las
integraciones realizadas con webMethods 8 y en los procesos que serán
utilizados en las bases de datos.
Establecer políticas y documentación que marcan la pauta a desarrollar con la
base de datos y webMethods 8 para entregar sistemas más robustos y
eficientes.
Realizar mejoras a los procesos existentes en las Bases de Datos de SQL
Server y aplicar tales mejoras a los procesos que vayan a desarrollarse en la
implementación de este proyecto.
Dar un entrenamiento al resto del equipo de desarrollo y soporte con el
establecimiento de los nuevos lineamientos de desarrollo que serán creados
como manuales de desarrollo y mejores prácticas.
Establecer equipos que se harán responsables en los procesos de monitoreo
y manejo de incidentes que serán adicionados.
- 46 -
7.2 Entregables del proyecto a Alto Nivel
Los entregables específicos incluyen:
Un extenso y detallado plan de análisis, desarrollo e implementación que
deberá cumplirse en las fechas establecidas para poder asegurar una entrega
a tiempo que no impacte con las necesidades del negocio y con proyectos que
estén actualmente en ejecución.
Creación de ambientes de Desarrollo, Pruebas y Producción para la
implementación de webMethods 8 y las modificaciones necesarias que tienen
la finalidad de mejorar el rendimiento de los procesos actuales y nuevos que
son manipulados por el SQL Server.
Infraestructura necesaria para poder trabajar en paralelo con la
implementación de la nueva plataforma de webMethods 8 y la eliminación de
la actual plataforma de Connect:Direct.
Un BROKER y un grupo de servicios de transformación y manejo de datos de
webMethods 8 optimizados que manejen el flujo de grandes paquetes de
información al mismo tiempo y que serán implementado para todos los
mercados en los sitios de la región.
Procesos de monitoreo en el funcionamiento de todos los ambientes en los
que será implementada esta mejora, que permitirán obtener estadísticas del
uso y el rendimiento de cada uno de los sistemas, con eso podremos detectar
donde hay áreas de oportunidad de mejora continua, poder anticipar posibles
errores reduciendo los posibles riesgos que se presenten en el futuro, lo que
será un sistema proactivo y no reactivo.
Documentación detallada con las nuevas prácticas de desarrollo a ser
utilizadas que permiten tener sistemas más seguros, eficientes y eficaces.
- 47 -
7.3 Alcance del Proyecto
Lo que incluirá la implementación de este proyecto:
Construir y configurar ambientes físicos de Desarrollo, QA y Producción para
webMethods 8 y de SQL Server 2008.
Instalación de los productos y servicios (Broker, webMethods 8, Nimbus,
Database Engine Tuning Advisor, etc).
Incrementar el rendimiento en los procesos clave que son manejados en el
sitio, priorizando cada uno de estos de acuerdo a su funcionalidad y uso,
además del impacto que se puede generar al aplicar estos cambios.
Unidades de prueba del código para los ambientes de desarrollo y QA.
Pruebas de regresión de código en el ambiente de QA.
Pruebas de usuario.
Pruebas de rendimiento para webMethods y SQL Server 2008.
Soporte post implementación.
Entrenamiento para el desarrollo con los nuevos lineamientos, soporte en
producción y en todos los ambientes en cada una de las afiliadas,
coordinadores de integración y contactos clave en cada uno de los mercados.
Lo que excluye este proyecto:
Todo cambio de funcionalidad en base de datos o en integración que no haya
sido específicamente requerido y determinado para la transición de
webMethods 8 y el mejoramiento del rendimiento de los procesos de base de
datos, así como del resto de los componentes.
- 48 -
7.4 Suposiciones del Proyecto
No será necesaria la compra de nuevas licencias de SQL Server 2008, ni de
Windows Server, solamente las necesarias para webMethods 8.
No serán implementados cambios de funcionalidad en los actuales procesos
de negocio por lo que no será impactado la forma en que opera el negocio ya
que son cambios que únicamente afectan a la tecnología que está siendo
utilizada.
Los recursos para el proyecto contarán con el ancho de banda necesario para
poder desempeñar correctamente sus actividades.
Dichos recursos contarán con los accesos necesarios para revisión y
desempeño de actividades correctamente.
El tiempo estimado para otros proyectos grandes no se verá afectado por el
tiempo que será dedicado a este proyecto.
La infraestructura física y licencias necesarias estarás disponible de acuerdo
al tiempo programado en el proyecto.
El rendimiento de la infraestructura física será tan bueno o aún mejor que los
sistemas que se encuentran operando actualmente.
Los coordinadores de cada mercado dictados por el plan de proyecto estarán
completamente comprometidos durante la duración de la implementación en el
mercado.
Se dará seguimiento con juntas semanales de cadencia para llevar un control
adecuado del desarrollo del proyecto y estarán todos los involucrados
presentes.
- 49 -
7.5 Riesgos iniciales del proyecto y alternativas de solución
Disponibilidad de los recursos desconocida – Infraestructura, contacto clave
en cada mercado, usuarios.
Se debe establecer comunicación con tiempo con los gerentes de los recursos tan
pronto como los requerimientos de los recursos hayan sido identificados.
No hay un compromiso de tiempo para la implementación de cada ambiente.
Se debe comenzar la comunicación con cada uno de los dueños de los ambientes y
establecer un tiempo específico para el desarrollo de este proyecto.
Correr en ambientes paralelos – El mantenimiento de dos versiones de
código, el congelamiento de código, y unir código.
Se debe limitar el tiempo entre realizar la actualización y el despliegue de los
cambios, además se debe documentar el proceso que se realizará para unir el
código y deberán comunicarse los tiempos en el que se mantendrá un congelamiento
de desarrollo de nuevo código.
Continuar trabajando con Connect:Direct
Esta alternativa es la que supondría un menor costo, pero sería de un mayor riesgo a
tomar para el negocio al seguir operando en una plataforma que eventualmente
dejará de recibir soporte además de los detalles anteriormente descritos.
- 50 -
8. ESTÁNDARES DE NOMENCLATURA PARA EL DESARROLLO EN WEBMETHODS.
El estándar de nomenclatura para soluciones individuales debe proveer nombres
concisos y fácilmente reconocibles para todas las entidades y debe permitir una fácil
categorización.
Las siguientes reglas aplican para todas las nomenclaturas de la organización, a
menos que se indique lo contrario:
Cada parte de un nombre debe comenzar con una letra en mayúsculas
seguida de letras minúsculas, a menos que toda la parte sea una abreviatura
en mayúsculas.
El Origen siempre es abreviado como Src y el Destino como Tgt.
Todos los nombres deben contener solo caracteres alfanuméricos y guion
bajo.
Todos los nombres deben empezar con un tipo de dato alfabético.
El guion bajo (“_”) debe ser utilizado para separar segmentos de un nombre,
excepto a un nivel de atributo (los campos en un documento).
- 51 -
8.1 Territorio
El nombre de un territorio es utilizado para agrupar lógicamente los brokers. El
territorio agrupa los brokers basado en las aplicaciones y en la geografía. Brokers en
un territorio común comparten todos los tipos de documentos y grupos de clientes.
Sintaxis:
AMWAY_<Filial>_TERR<NúmeroDeSecuencia>
<Filial> Está compuesto por una abreviación de 2 o 3 caracteres de una filial de
Amway, por ejemplo México (MEX), Japón (JPN), etc.
<Número de secuencia> Un número de secuencia consecutivo para identificar cada
territorio en la filial.
Por ejemplo:
AMWAY_MEX_TERR01 (Usado para broker en México)
8.2 Brokers
Los brokers son nombrados con respecto a la filial y al ambiente en el que corren,
cada broker une el territorio basado en la aplicación o la geografía.
Sintaxis:
AMWAY_<Filial>_BROKER<NúmeroDeSecuencia>_<Ambiente>
<Filial> Está compuesto por una abreviación de 3 caracteres de una filial de Amway,
por ejemplo México (MEX), Japón (JPN), etc.
<Número de secuencia> Número consecutivo para identificar cada broker de la filial.
<Ambiente> Tipo de ambiente en el que el broker está corriendo (Desarrollo, QA,
Producción).
Por ejemplo:
AMWAY_MEX_BROKER01_PROD
- 52 -
8.3 Adaptadores
El nombre de un adaptador (que además es el id del cliente) es utilizado para
identificar el adaptador al Enterprise Server y a otros clientes del broker. Los
adaptadores son las únicas entidades que utilizan el nombre de la integración en su
estándar de nomenclatura, lo cual es para propósitos de desarrollo – por ejemplo
durante las pruebas, cada integración debe ser apagada independientemente.
Sintaxis:
AMWAY_<Filial>_<TipoDeBaseDeDatosDeLaAplicación>_<TipoDeTransacción>
Por ejemplo:
AMWAY_MEX_SQL_NOTX
AMWAY_MEX_SQL_LT
<Filial> Está compuesto por una abreviación de 2 o 3 caracteres de una filial de
Amway, por ejemplo México (MEX), Japón (JPN), etc.
<TipoDeBaseDeDatosDeLaAplicación > Especifica el nombre corto para el sistema o
la aplicación que integra (que se conecta a) webMethods a través del adaptador (por
ejemplo, SQL, ONYX, RMDM, etc).
<TipoDeTransacción> Tipo de transacción que se procesa (NOTX – Proceso de no
transacción, LT – Proceso de transacción local).
- 53 -
8.4 Paquetes
Algunas consideraciones a tomar en cuenta para nombrar los paquetes son las
siguientes:
Los nombres de los paquetes siempre deberán estar en modo mixto,
empezando con una mayúscula. Si el nombre está compuesto por varias
palabras, se debe colocar la primera letra de cada palabra en mayúsculas. Un
guion bajo es opcional para separar palabras clave; sin embargo, por defecto
esto no debe ser utilizado.
Los nombres de los paquetes no deben contener ningún símbolo que cause
problemas en cualquier sistema operativo. Para llevar esto a cabo, se debe
evitar utilizar todo tipo de dato que no sea alfanumérico.
El nombre del paquete necesita reflejar su propósito, o función del servicio que
contiene. Hay que evitar utilizar nombres genéricos, como “Desarrollo”, eso
indica una estructura de un ambiente o de procedimiento pero no su propósito.
Se debe crear una carpeta global en cada paquete. Esta debe igualar el
nombre del paquete, por lo que se debe escoger cuidadosamente que sea
apropiado tanto para el paquete como para la carpeta global. Este esquema
de nombres permite al desarrollador localizar fácilmente los paquetes
contenidos en la carpeta. Además ayuda a evitar conflictos con los nombres.
Es importante separar el código en unidades lógicas por paquete. La
portabilidad del código es prevista al nivel del paquete, es donde las tareas de
migraciones y administración de la configuración deben ser llevadas a cabo.
Hay que mantener los nombres cortos como wM en vez de webMethods.
No se deben crear nombres con mayúsculas y minúsculas aleatoriamente o
que no indiquen su función. Por ejemplo cOOlPkgTST.
No se deben utilizar artículos en el nombre. Por ejemplo ProbarLaConexion.
La clave del diseño a considerar para nombrar paquetes es que los paquetes juegan
un enorme rol en la portabilidad de los activos de integración desarrollados
(servicios, registros, etc.).
- 54 -
Debe haber un número considerable de paquetes como los activos de integraciones
que están divididos en trozos manejables que pueden ser promovidos entre
ambientes independientemente del trabajo que se está desarrollando por otras
integraciones en la organización. Sin embargo, demasiados paquetes puede causar
complicaciones, debido a que la dependencia que existe entre los paquetes puede
ser tan significante que controlar y promover los desarrollos se convierte incómodo
en administrar. La actividad principal para determinar su nomenclatura es desarrollar
una estructura de una carpeta global deseada para el activo de la integración. La
estructura del folder inevitablemente llevará a la estructura del paquete.
Sintaxis:
[AM]<Filial><Aplicación><TipoDeIntegración><InfoAdicional>
Por ejemplo:
AmLaOrderPubSub
AmGlDocs
[Am] – Especifica la organización a la que pertenece (Amway)
<Filial> Compuesto por una abreviación de 2 o 3 caracteres de una filial de Amway,
por ejemplo México (MEX), Japón (JPN), etc.
<TipoDeIntegración> Agrupa las integraciones de un tipo (Pub/Sub, Req/Rep o B2B).
<InfoAdicional> Es información adicional al nombre del paquete que indica el uso o
características generales del paquete – esto puede ser utilizado en vez de Aplicación
o TipoDeIntegración. Por ejemplo, un paquete de utilidades para Latinoamérica
puede ser llamado como AmLaUtil.
Ilustración 19 : Ejemplo de un Paquete
- 55 -
8.5 Carpetas y Subcarpetas
Algunas consideraciones a tomar en cuenta para nombrar las carpetas y subcarpetas
son las siguientes:
Una carpeta debe contener sub-carpetas o servicios, pero no combinación de
ambos. Una excepción es cuando una interface contiene un servicio de alto
nivel y sub-interfaces que contienen servicios de bajo nivel llamados por el
servicio de alto nivel y son específicos para ese servicio. La carpeta de mayor
nivel debe ser además una excepción para esto.
Los servicios que son rutinas genéricas no específicos a la estructura y/o
procesamiento de un paquete en particular deben ser almacenados en su
propio paquete. En general, son servicios considerados como utilidades si son
invocados por otros servicios que ejecutan tareas de mayor nivel. Por ejemplo:
servicios de fechas como addDaysToDate.
Mantener los nombres cortos. Por ejemplo wM en vez de webMethods.
No se debe repetir el nombre de la carpeta en el nombre del servicio.
No se deben crear nombres con mayúsculas aleatorias o que sean
misteriosos. Cómo cOOLSVcTST.
No utilizar artículos en el nombre. Cómo probarLaConexion.
La estructura de una carpeta debe ser como se muestra a continuación:
carpeta.subcarpeta.subcarpeta … nombreServicio
Donde la carpeta representa el más alto nivel en el espacio de los nombres (no en el
paquete), seguido por la jerarquía de subcarpetas, separados por puntos, y
finalmente por el nombre de los componentes (un registro, una especificación, un
servicio, etc.).
- 56 -
Un ejemplo de estructura de las carpetas es como se muestra a continuación:
Para integraciones PubSub
AmLAInventoryPubSub (nombre del paquete)
AmLAInventoryPubSub (nombre de carpeta de mayor nivel)
DocTypes (Para documentos de la sección)
Source (Para aplicaciones del origen)
IMS (Inventory Management System)
Target (Para aplicaciones del destino)
Database (Base de datos destino)
Mexico (Region de la base de datos)
Trigger (Para los desencadenadores de los archivos)
Ilustración 20 : Ejemplo de nomenclatura de carpeta para servicios PubSub
- 57 -
Para paquetes generales como Util
AmLAUtil (nombre del paquete)
AmLAUtil (nombre de carpeta de mayor nivel)
Jerarquía de carpetas (niveles múltiples de subcarpetas)
LAUtil (Funciones generales para LA de este paquete)
Ilustración 21 : Ejemplo de nomenclatura de carpeta para utilidades generales
- 58 -
8.6 Servicios
Los nombres de los servicios deben comenzar con un verbo en inglés, en
minúsculas, y todo objeto subsecuente en el nombre del servicio escrito con
mayúscula su primer letra (ejemplo: gerOrderDetails, processReturnUDM).
Los nombres de los servicios deben ser lo más descriptivos posible pero
utilizando abreviaciones reconocidas y más corto posibles (ejemplo wM para
webMethods)
Servicios de alto nivel o servicios de FLOW complejos deben contener a su
vez los paquetes que contienen los registros a los que hacen referencia.
Variables, nombres de servicios, etc. Deben ser utilizando la nomenclatura
general reconocida por Java, la cual dicta que la primera letra de cada variable
debe ir minúsculas, con cada palabra subsecuente en mayúsculas.
Ilustración 22 : Ejemplo de nomenclatura en webMethods
- 59 -
8.7 Variables
Para nombrar variables se debe seguir la nomenclatura reconocida generalmente por
Java, que indica que la primera letra de cada variable es en minúsculas, con cada
palabra subsecuente comenzando con mayúsculas.
Los nombres de las variables deben utilizar los siguientes sufijos: Sufijo Descripción
Qty Cantidad, por ejemplo orderQty
Date Fecha
Wt Peso (Weight)
Amt Monto (Amount)
Name Nombre de una entidad (persona, compañía, de negocio,
división, etc)
Id Identificador
Number Valor numérico solamente que indica un identificador o
valor de código (opuesto a la propiedad numérica como
una medida física, contador, cantidad, etc.)
Text Indica una expresión libre de información que incluye
caracteres alfanuméricos
Code Indica que es un valor de código y que implica que sea
restringido por un conjunto definido y limitado de valores
Pct Porcentaje (Percent)
Tabla 1 : Nombres de variables en webMethods
- 60 -
9. GUÍAS GENERALES DE DESARROLLO Y MEJORES PRÁCTICAS PARA EL DESARROLLO EN WEBMETHODS.
Al trabajar con un conjunto asociado de entradas (como información de
direcciones), es benéfico combinarlos en un solo registro y referenciar el
registro desde el pipeline. Esto promueve la modularidad, el mantenimiento y
lo más importante, permite una mayor validación.
Cuando múltiples servicios tengan el mismo uso (como 4 diferentes servicios
que se ocupan con órdenes de compra) es beneficioso el crear una
especificación de servicio y reverenciarlo desde el servicio (en vez de recrear
los elementos en cada uno de los 4 servicios). Esto promueve la seguridad,
modularidad y lo más importante, el mantenimiento.
Eliminar los valores del pipeline que ya no se necesiten. Esta destrucción
explícita de valores aumenta el rendimiento y la eficiencia.
Cuando se crea explícitamente una variable que es utilizada en el ámbito
únicamente dentro de un constructor en particular para un servicio (ejemplo un
contador de un ciclo, o una condición de decisión branch), esta variable es
considerada temporal. El desarrollador deberá denotar tal variable con el
prefijo “t_”, el cual indica una variable temporal. Todas las variables
temporales deberán ser destruidas explícitamente en el pipeline al concluir el
ámbito de su flujo (por ejemplo, al final del ciclo, al final de la condición
branch).
Al construir servicios codificados, se deberán destruir explícitamente el
pipeline así como su cursor. De esta forma se obtiene un incremento de
rendimiento y eficiencia.
Codificar servicios personalizados deben ser como última opción. En lo
posible se debe intentar reutilizar los servicios proporcionados por
webMethods. Esos servicios se encuentran en los paquetes WmPublic y
WmDB.
- 61 -
Si se necesita escribir mensajes personalizados al log del servidor, se puede
utilizar el servicio pub.flow:debugLog o utilizar el siguiente código en el
servicio de Java:
Debug.log(logLevel, logMessage) donde logLevel es el nivel de 0 a 10 y logMessage es la cadena que se desea imprimir.
[13]
Ilustración 23 : Ejemplo de codificación de un servicio de webMethods
- 62 -
10. ESTÁNDARES DE NOMENCLATURA PARA EL DESARROLLO EN SQL SERVER.
El estándar de nomenclatura para soluciones individuales debe proveer nombres
concisos y fácilmente reconocibles para todas las entidades y debe permitir una fácil
categorización. Se debe seguir firmemente ya que permitirá simplificar las tareas de
revisión y de realizar cambios futuros en los procesos que ya la integren. [14]
Las siguientes reglas aplican para todas las nomenclaturas de la organización, a
menos que se indique lo contrario:
10.1 Tablas
La estructura de nomenclatura para una tabla debe seguir las siguientes reglas:
Una letra (minúscula) indicando si la información es originada o mantenida en
su mayor parte por el sistema del AS400 o a través del sitio de Internet. Se
debe usar “a” para cuando sea el caso de AS400 e “i” para el caso de Internet.
Tres letras (minúsculas) que indiquen el dominio de la información para la
tabla.
Seguido por un guion bajo.
Cinco letras (mayúsculas) con un pequeño nombre descriptivo para la tabla.
En algunos casos llevarán el sufijo wm después del nombre para indicar que
es una tabla integrada por webMethods.
En algunos casos llevarán el sufijo s01 después del nombre para indicar que
es una tabla de paso de webMethods.
Por ejemplo:
iibo_TYPES Catálogo de tipos de ABOs
aamw_PERIO Catálogo de Periodos activos
aibo_ADDRE_wm Catálogo de direcciones de los ABOs
astg_POINT_s01 Tabla de paso de puntos de los ABOs
- 63 -
Algunos dominios que son utilizados actualmente son los siguientes:
Dominio Descripción
amw Uso general para aplicaciones de Amway
car Carriers (Transportistas)
cec Calidad En Casa
crm Reports (Reportes)
fin Financing (Financiamiento)
ibo Internet Business Owner (Información del ABO)
nlt Newsletter (Boletín de noticias)
ord Order data (Información de órdenes)
prd Products data (Información de productos)
prm Promotions (Promociones)
stg Staging tables (Tablas de paso para integraciones)
tms Order Tracking (Transportation Management System)
acc Content Administrator (Administrador de contenido)
atv AmwayTV
awc Awards (Premios)
blg AmwayOn
bok Business Kit (Kit de negocios)
con Constructor
ddt Downloader (Integraciones a AS400)
dit Ditto Orders (Órdenes de resurtido)
exa Examples (Ejemplos)
gri Grids (Cuadriculado)
ina INA (Instituto de Negocios Amway)
ire ABO Registration (Registro de ABOs)
log Log data (Información de registro de actividad)
lrn eLearn
mis Miscellaneous (Miscelánea)
myp My Amway Page
nws News (Noticias)
- 64 -
pri Principal
reg Registration Data (Información de registro)
sim Growth Simulator (Simulador de crecimiento)
src Source (Origen de datos)
sty Styles (Hojas de estilo)
tag Tags (Etiquetas)
xpr Amway Xpress
cnt Content (Contenido)
lms Learn Management System
lat Latinoamérica
sso Single Sign On (Inicio de sesión único)
Tabla 2 : Acrónimos de dominios en Amway para datos
Ilustración 24 : Ejemplo de nomenclatura de Tablas en SQL Server
- 65 -
10.2 Campos
Las reglas para nombrar los campos deben ser:
Una letra (minúscula) de la definición de su tabla, que indique si la información
es originada o mantenida en su mayor parte por el AS400 o por usuarios de
Internet. Se debe usar “a” para AS400 e “i” para Internet.
Tres letras (minúsculas) de la definición de su tabla, indicando el dominio de la
tabla seguido de un guion bajo.
Tres letras (minúsculas) de la descripción de su tabla (las tres letras más
significativas o se puede utilizar el dominio de la tabla).
Una descripción para el campo, distinguiendo entre palabras iniciándolas con
mayúsculas. Los acrónimos siempre deben ir en mayúsculas.
Por ejemplo:
aibo_typDescr Descripción para el tipo de IBO.
Iibo_iboName Nombre del IBO
Se deberá dar de alta en lo posible una Llave Primaria cuando se cree una tabla, de
no ser posible crearle una PK por su funcionalidad si deberá darse de alta un índice
CLUSTERED. Nunca se debe agregar el grupo de trabajo (FILEGROUP) a la
definición de la tabla, para que cuando el script sea ejecutado la tabla pueda tomar el
que se encuentra por default en la base de datos que se está corriendo.
Ilustración 25 : Ejemplo de nomenclatura para campos en SQL Server
- 66 -
10.3 Rutinas de Objetos
Para los Stored Procedures se deben tomar en cuenta los siguientes prefijos y
consideraciones:
dbo. – Todo objeto deberá llevar indicado al principio el esquema (SCHEMA)
al cual pertenece el objeto, por lo general se deberá utilizar el esquema dbo,
en caso que se utilice otro esquema para ese objeto en particular deberá
colocarse al principio.
awlasp_ - Deben iniciar con el prefijo awlasp que indica que es un Stored
Procedure de Amway Latinoamérica seguido por un guion bajo.
XXX_ - Seguido por tres letras en mayúsculas que indican el propósito o
proceso para el Stored Procedure en código de .NET seguido por un guion
bajo.
xxx_ - Seguido por tres letras en minúsculas que indiquen el dominio que el
Stored Procedure usa, en caso de que haya más de uno se debe utilizar el
que sea más relevante seguido por guion bajo.
NombreStoredProcedure - Al final se especifica un nombre utilizando una
mayúscula para la primera letra de cada palabra que vaya conformando el
nombre del Stored Procedure (en notación camelCase). El nombre debería
iniciar utilizando la acción que el Stored Procedure se supone debe realizar
(Select, Insert, Validate, etc.).
No utilizar números ni caracteres especiales para nombrarlos.
Sintaxis:
[Esquema].[awlasp]_[XXX]_[xxx]_[NombreStoredProcedure]
Por ejemplo:
dbo.awlasp_MAP_ibo_GenerateNormalMap
dbo.awlasp_GRA_ire_FinishRegistration
dbo.awlasp_ORD_shc_OrderCheckout
- 67 -
Para los Funciones Definidas por el Usuario se deben tomar en cuenta los siguientes
prefijos y consideraciones:
dbo. – Todo objeto deberá llevar indicado al principio el esquema al cual
pertenece el objeto, por lo general se deberá utilizar el esquema dbo, en caso
que se utilice otro esquema para ese objeto en particular deberá colocarse al
principio.
awlafn_ - Deben iniciar con el prefijo awlafn que indica que es una función de
Amway Latinoamérica seguido por un guion bajo.
XXX_ - Tres letras en mayúsculas que indican el propósito o proceso para la
función en código de .NET seguido por un guion bajo.
xxx_ - Tres letras en minúsculas que indiquen el dominio que la función utiliza,
si hay más de uno debe utilizar el que sea más relevante seguido por guion
bajo.
NombreFuncion - Al final se especifica un nombre utilizando una mayúscula
para la primera letra de cada palabra que forme el nombre de la función
(notación camelCase). Se debe comenzar el nombre utilizando la acción que
la función se supone debe realizar (Select, Insert, Validate, etc.).
No utilizar números ni caracteres especiales para nombrarlos.
Sintaxis:
[Esquema].[awlafn]_[XXX]_[xxx]_[NombreFuncion]
Por ejemplo:
dbo.awlafn_MAP_ibo_ValidateMapData
dbo.awlafn_GRA_ire_InsertRegistration
Hay que evitar el uso de funciones escalares. Ya que mientras pueden ser muy
útiles, también pueden ser un obstáculo para lograr un buen rendimiento del sistema
cuando operan ante grandes conjuntos de registros o cuando se ejecutan en
procesos iterativos.
- 68 -
Para los desencadenadores (TRIGGER) se deben tomar en cuenta los siguientes
prefijos y consideraciones:
dbo. – Todo objeto deberá llevar indicado al principio el esquema al cual
pertenece el objeto, por lo general se deberá utilizar el esquema dbo, en caso
que se utilice otro esquema para ese objeto en particular deberá colocarse al
principio.
awlatr_ - Deben iniciar con el prefijo awlatr que indica que es un trigger de
Amway Latinoamérica seguido por un guion bajo.
XXX_ - Tres letras en mayúsculas que indican el propósito o proceso para el
trigger en código de .NET seguido por un guion bajo.
xxx_ - Tres letras en minúsculas que indiquen el dominio que el trigger utiliza,
si hay más de uno debe utilizar el que sea más relevante seguido por guion
bajo.
NombreTrigger - Al final se especifica un nombre utilizando una mayúscula
para la primera letra de cada palabra que forme el nombre del trigger
(notación camelCase). Se debe comenzar el nombre utilizando la acción que
el trigger se supone debe realizar. Si realiza más de una operación se deben
incluir todas las abreviaturas de las operaciones en el nombre (Select, Insert,
Validate, etc. O en su caso Sel, Ins, Val, etc.).
No utilizar números ni caracteres especiales para nombrarlos.
Sintaxis:
[Esquema].[awlatr]_[XXX]_[xxx]_[NombreTrigger]
Por ejemplo:
dbo.awlatr_MAP_ibo_InsertData
dbo.awlatr_GRA_ire_RefreshCreditLimit
dbo.awlatr_IRE_ire_InsertUpdateData
- 69 -
Algunos de los propósitos o procesos utilizados actualmente para la nomenclatura de
objetos son los siguientes:
Proceso Descripción
GRA Aplicación General
CRM Aplicación de Mi Cliente
IRE Actualización y Registro de ABOs
ORD Órdenes
ACC Control de Acceso
LGN Proceso de Loggeo
MAP Mapas y Análisis de Líneas
NLT Newsletter
NWS Noticias
PRM Promociones
REG Registro al Newsletter
SHC Carrito de Compras
SIM Simulador de Crecimiento
STG Tablas de paso (Integraciones)
STY Estilos
TAG Etiquetas
UPL Proceso del Uploader (Integraciones)
LMS Learning Management System
SRH Controles de búsqueda
CTB Constructor del catálogo
CON Páginas de contenido
CAT Catálogo
AOR Textos largos en procesos de órdenes
AMI Procesos misceláneos
AIR Administración para registro
ACO Administrador de contenido para estereotipos
APR Parámetros de la aplicación
- 70 -
GAT Proceso relacionado al Gateway
MNU Constructor del Menú
IOR Registro durante compra
PWS Sitio Personalizado
CNT Cuenta de ABO (plan de ventas)
STS Librería de clases
NIP Aplicación para recordar el NIP
SAH Stock At Home
MYP My Amway Page (nueva implementación, antes conocida como
PWS)
Tabla 3 : Acrónimos de procesos para nombrar objetos
Nomenclatura de acciones u operaciones realizadas por los objetos:
Acción Descripción
Get Regresa 1 solo registro
Select Regresa múltiples registros
Validate Solo valida la información
Refresh Múltiples operaciones (Exclusivo de integraciones)
Insert Solo realiza inserciones (Insert(s))
Update Solo realiza actualizaciones (Update(s))
Delete Solo realiza borrados (Delete(s))
Process Múltiples operaciones (Exclusivo de Web)
Tabla 4 : Nomenclatura de acciones de objetos
Una regla importante es al utilizar las palabras reservadas escribiéndolas en
mayúsculas; como por ejemplo: SELECT, UPDATE, AND, JOIN, CREATE, INSERT,
BEGIN, CASE, ORDER, DECLARE, etc.
- 71 -
10.4 Parámetros
Solo definir parámetros que serán utilizados en la consulta
De ser posible, nombrar los parámetros con el nombre de la columna
relacionada usando el prefijo @p_
Definir los tipos de datos en los parámetros que sean iguales al tipo de dato
del campo a comparar. Esto permite al optimizador escoger el mejor plan de
ejecución para la consulta
Cuando se agreguen nuevos parámetros a un Stored Procedure existente, si
se agregan como NULLABLE o con un valor default no será necesario una
personalización del Stored Procedure
Los parámetros permiten valores default, lo que hace que el parámetro sea
opcional al momento de ejecutarlo. Declarar todos los parámetros como
opcionales no es recomendado debido a que errores potenciales nunca son
identificados, ya que en su lugar se procesan 0 registros - que es un posible
resultado, pero se espera que algo pueda ocurrir.
10.4 Variables
Usar el prefijo @ con las variables locales a diferencia de las variables de
entrada parametrizadas en un proceso que comienzan con @p_, de esta
forma se identificarán dentro del código cuales son las variables
pertenecientes a los parámetros que se reciben de la aplicación.
Solo declarar variables que sean utilizadas en la consulta
De ser posible, nombrar las variables de la misma forma que la columna
Definir tipos de datos en variables que sean igual al tipo de dato de la columna
de la tabla. Esto permite al optimizador escoger el mejor plan de ejecución
para la consulta
- 72 -
Utilizar la siguiente tabla como referencia para nombrar las variables
Tipo de Dato Prefijo Ejemplo
Bigint bint @bint_aibo_iboNumber
Bit bit @bit_astg_stgValue
Decimal dec @dec_afin_finCreLimit
Int int @int_aibo_poiPerio
Money mon @mon_aprd_evpTotal
Numeric num @num_aibo_iboTaxValue
Smallint sint @sint_astg_stgControl
Smallmoney smon @smon_aprd_evpSubTotal
Tinyint tint @tint_aibo_iboAge
Float flt @flt_aprm_prmPromotion
Real rl @rl_aibo_poiPV
Date dt @dt_astg_stgDate
Datetime dttm @dttm_astg_stgCreationDate
Datetime2 dttm2 @dttm_astg_stgAnotherTime
Datetimeoffset dttmos @ddtmos_Variable
Smalldatetime sdttm @sdttm_Variable
Time tm @tm_astg_stgTime
Char chr @chr_astg_stgAction
Varchar vchr @vchr_aamw_marCode
Text txt @txt_itag_lanCode
Nchar nchr @nchr_astg_stgAction
Nvarchar nvchr @nvchr_aamw_marCode
Ntext ntxt @ntxt_itag_lanCode
Binary bin @bin_aibo_iboPin2
Varbinary vbin @vbin_aibo_iboPin
Image img @img_iacc_accImage
Cursor crs @crs_Cursor
Hierarchyd hrc @hrc_iacc_accHierarchy
- 73 -
Sql_variant vnt @vnt_astg_stgVariant
Table tbl @tbl_aibo_DISTR
Timestamp tmst @tmst_Variable
Uniqueidentifier ui @ui_aibo_myId
Xml xml @xml_Variable
Tabla 5 : Nomenclatura de variables en SQL Server
- 74 -
11. GUÍAS GENERALES DE DESARROLLO Y MEJORES PRÁCTICAS
PARA EL DESARROLLO SQL SERVER.
Toda tabla debe tener un índice Clustered (usualmente es la llave primaria)
Se debe mantener todo el código en un sistema de control de versiones (TFS)
para llevar un historial de los cambios que se realicen.
Mantener las transacciones tan cortas como sea posible. Esto reduce los
bloqueos e incrementa la concurrencia de la aplicación, lo cual ayuda a
incrementar el rendimiento.
Utilizar mayúsculas para palabras reservadas y funciones del sistema.
El código deberá estar alineado y utilizar sangrías apropiadamente para una
mejor lectura y mantenimiento.
o Usar tabuladores en vez de espacios
o Utilizar espacios entre los operadores
Evitar el uso de sugerencias de consultas (HINTS)
o Solo usarlas en el caso de que se haya verificado que el hint realmente
incremente el rendimiento de la consulta
Usar la transacción de nivel de aislamiento menos restrictiva para la conexión
del usuario, en lugar de utilizar siempre el comando por default de READ
COMMITED.
Siempre que una aplicación de cliente necesite enviar código T-SQL al SQL
Server, se tiene que hacer a través de un Stored Procedure en vez de un
script o T-SQL embebido. Ya que los Stored Procedures ofrecen muchos
beneficios como:
o Reducen el tráfico en la red y la latencia, incrementando el rendimiento
y respuesta de la aplicación
o El plan de ejecución puede ser reutilizado, quedando en caché en
memoria del SQL disminuyendo la sobrecarga en el servidor.
o La ejecución de las solicitudes del cliente son más eficientes. Por
ejemplo, si una aplicación necesita insertar un enorme valor binario en
una columna de tipo de imagen sin hacerlo por medio de un Stored
- 75 -
Procedure, debe convertir el valor vinario en una cadena de caracteres
(que duplica su tamaño), y enviarlo al servidor. Cuando el server lo
recibe debe convertir el valor nuevamente a un formato binario. Esta es
una sobrecarga inútil, ya que por medio de un Stored Procedure se
evita este detalle declarando parámetros en formato binario, así no se
realiza la conversión y se reduce la sobrecarga e incrementando el
rendimiento.
o Ayudan a promover la reutilización de código. Aunque esto no
incrementa directamente el rendimiento de una aplicación, si
incrementa la productividad en desarrolladores al reducir la cantidad de
código requerido junto con reducir el tiempo de depuración.
o Encapsulan lógica. Ya que se puede modificar un Stored Procedure sin
afectar las aplicaciones cliente (asumiendo que se mantienen sin
cambios los parámetros y no cambia la forma de regresar los
resultados). Esto le ahorra tiempo al desarrollador.
o Proveen de mayor seguridad a la información que se maneja.
o Facilitan la afinación de rendimiento.
Utilizar la instrucción SET NOCOUNT ON al principio de cada Stored
Procedure, esto reduce la cantidad de información interactiva que es enviada
al cliente:
o Esta instrucción deberá incluirse en CASI todo Stored Procedure
o Al final se tiene que colocar la sentencia SET NOCOUNT OFF
o La única razón por la que se deberá evitar hacer el uso de la instrucción
en ON es cuando se tiene la necesidad de conocer la cantidad de
registros que se regresan para mostrarse
Encapsular todas las transacciones dentro de los Stored Procedures,
incluyendo las sentencias BEGIN TRANSACTION y COMMIT TRANSACTION
Evitar la necesidad de utilizar la sentencia NOLOCK en todas las tablas
estableciendo el nivel de aislamiento.
o Se debe colocar al principio del código la instrucción SET
TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
- 76 -
o Esto previene excesivos e innecesarios bloqueos mientras no existan
actualizaciones o inserciones simultáneas en la aplicación que requiere
un mayor nivel de aislamiento.
o Solo se debe utilizar en procedimientos que realicen consultas, no se
debe utilizar en procesos que realicen inserciones, borrados y
actualizaciones.
Declarar variables en una sola sección
o Utilizar una sola sentencia DECLARE y agrupar las declaraciones ahí
en cada subregión
o La declaración de variables tipo tabla deberán estar en declaraciones
DECLARE separadas
Tratar de llenar las variables con datos en una sola sentencia SELECT en vez
de utilizar distintas sentencias SET
Evitar el uso de tablas temporales. Es mejor utilizar variables tipo tabla. Si es
imperativo el uso de tablas temporales deberán ser utilizadas tablas
temporales locales (se declaran # en vez de ##)
Evitar el uso de funciones escalares
Antes de cerrar la codificación del Stored Procedure, revisar si no quedan
pedazos de código, parámetros o variables que no se utilicen y se hayan
utilizado solamente mientras se realizaban cambios, y removerlas.
Para un mejor rendimiento, todos los objetos que son llamados dentro del
Stored Procedure deben pertenecer al mismo Owner o esquema.
Una forma de asegurarse que los planes de ejecución de los Stored
Procedures son reutilizados en cada ejecución del mismo Stored Procedure es
cerciorarse que cualquier información de conexión del usuario, opciones SET,
opciones de la Base de Datos, o las opciones de la configuración del SQL
Server no cambian entre cada ejecución.
o En caso de que cambien, entonces el SQL Server considerará ese
Stored Procedure en cada ocasión como uno diferente y no será capaz
de reutilizar el plan de ejecución actual almacenado en memoria.
- 77 -
Se puede hacer un uso liberal de los comentarios por línea y por bloques
dentro del código T-SQL, ya que no afectan al rendimiento de la aplicación y
mejoran la productividad cuando se requiera regresar al código e intentar
modificarlo.
Evitar el uso de Sub-Consultas, en especial en la sentencia SELECT.
o Para esto usualmente se puede resolver por medio de un JOIN.
Utilizar EXCEPT en vez de IN
o En donde se pueda utilizar es mejor decidirse por EXCEPT ya que se
obtiene un mejor rendimiento.
En lo posible, evitar el uso de cursores
o Generalmente utilizan demasiados recursos del SQL Server y reducen
el rendimiento y la escalabilidad de las aplicaciones.
o Si es necesario realizar operaciones registro-por-registro existen otros
métodos para llevar a cabo esa actividad.
o En la mayoría de los casos no es necesario hacerlo registro-por-registro
y cuando sea posible hay que encontrar una manera de realizarlo como
“una operación agrupada”
o Evitar el uso de tablas temporales también.
Cuando se utilice la sentencia UNION, hay que mantener en mente que por
defecto, realiza lo equivalente a un SELECT DISTINCT en el conjunto final de
resultados.
o En otras palabras, UNION toma los resultados de dos conjuntos de
registros parecidos, los combina, y entonces realiza un SELECT
DISTINCT para eliminar los registros duplicados.
o Este proceso ocurre aun cuando no existen registros duplicados en el
conjunto de registros final.
o En caso de conocer la existencia de registros duplicados, y eso
presenta un problema para la aplicación, se debe utilizar la sentencia
UNION para eliminar esos duplicados.
o En caso de que no sea un problema, es mejor utilizar UNION ALL, lo
cual consume menos recursos.
- 78 -
Se debe evaluar cuidadosamente si la consulta SELECT necesita una
cláusula DISTINCT o no.
o Algunos desarrolladores automáticamente agregan esa cláusula a cada
una de sus sentencias SELECT, aun cuando no es necesario.
o Utilizar GROUP BY en vez de DISTINCT en lo posible.
En las consultas que se generen, no hay que regresar información de las
columnas que no son necesarias.
o Por ejemplo, no se debe utilizar SELECT * para regresar todas las
columnas de una tabla si no se necesita la información de todos los
campos.
o Adicionalmente el usar SELECT * previene el uso de índices cubiertos,
lo que potencialmente afecta al rendimiento de la consulta.
o En general hay que evitar el uso de cualquier sentencia *, como
COUNT (*), es mejor utilizar SELECT <Listado de los campos>,
COUNT (1), etc.
Siempre se debe incluir la cláusula WHERE en la sentencia SELECT para
reducir el número de registros a regresar.
o Solo se deben regresar los registros que sean necesarios.
Usar Alias para las tablas
o Asegurarse que el Alias es descriptivo para la tabla que representa,
como utilizar la abreviación de la tabla o el proceso.
o Utilizar ese Alias cuando se pongan referencias de las columnas a
través de la consulta.
o Asegurarse de que no se utilizan Alias distintos en cada consulta.
Asegurarse de regresar solamente la información que el procedimiento
necesite.
Si es necesario escribir una sentencia SELECT que obtenga información de
una sola tabla, no se debe realizar el SELECT sobre la información que
regresa una vista (VIEW) que apunta a múltiples tablas.
- 79 -
o En vez de eso, realizar el SELECT de la información sobre la tabla
directamente, o por medio de una vista que solo contenga la tabla en la
que se está interesado.
o Si se hace un SELECT sobre la información de la vista multi-tabla, la
consulta genera una sobrecarga innecesaria y el rendimiento se verá
entorpecido.
Cuando se escoja utilizar las cláusulas IN o BETWEEN en el T-SQL,
generalmente se deberá utilizar la cláusula BETWEEN, debido a que es más
eficiente.
o Aunque es preferible no utilizar ninguna de las 2 ya que afectan al
rendimiento del sistema.
o Buscar una forma de obtener los resultados usando GROUP BY,
JOINS, etc.
o En caso de que no se pueda obtener esos resultados por medio de
esas sentencias usar IN o BETWEEN.
Si la aplicación permite a usuarios el correr consultas, pero no es posible que
por medio de la aplicación prevenga a los usuarios de regresar cientos o
incluso miles de registros de información, es mejor considerar utilizar el
operador TOP en la sentencia SELECT
o De esta forma, se pueden limitar la cantidad de registros a regresar,
aun si el usuario no utiliza ningún criterio de selección para reducir el
número de registros que se regresan al cliente.
o Hay que utilizar la sentencia ORDER BY en lo posible al final de la
consulta.
Utilizar la sentencia ORDER BY moderadamente – por ejemplo DISTINCT,
ORDER BY y GROUP BY todos realizan operaciones de ordenamiento.
Evitar que las cláusulas WHERE no sean capaces de hacer que el motor de
Base de Datos optimice el plan de ejecución cuando se realice la consulta
(NON-SARGABLE)
- 80 -
o Una cláusula WHERE que no cumple con eso (SARGABLE) significa
que no puede tomar ventaja en el uso de un índice (asumiendo que hay
uno disponible) para acelerar la finalización de la consulta.
o Si una cláusula WHERE es NON-SARGABLE, significa que la cláusula
(o al menos parte de ella) al no tomar ventaja de un índice, realiza a su
vez un TABLE/INDEX SCAN, lo cual puede causar que el rendimiento
de la consulta se vea afectado.
o Argumentos de búsqueda NON-SARGABLE en la cláusula WHERE, tal
como “IS NULL”, “<>”, “!=”, “!>”, “!<”, “NOT”, “NOT EXISTS”, “NOT IN”,
“NOT LIKE”, “LIKE ‘%50’” generalmente previenen (pero no siempre) a
que el optimizador de la consulta utilice un índice para realizar la
búsqueda.
o Expresiones que incluyen una función en una columna, expresiones
con la misma columna en ambos lados del operador, o comparaciones
contra una columna, son NON-SARGABLE.
Evitar el uso de Stored Procedures anidados, ya que esto hace que las
liberaciones y depuraciones de código se tornen difíciles.
Evitar valores fijos que pueden ser parametrizados en el código.
Al utilizar la cláusula JOIN asegurarse que todos los campos de la llave
primaria de cada una de las tablas son utilizados.
o Si se usa un JOIN nunca se debe colocar un campo que haga
comparación a un valor constante, por ejemplo a.campo = ‘A’, excepto
en LEFT JOINs que implícitamente se convierte el LEFT JOIN por un
INNER JOIN.
o En vez de colocar esas restricciones en la sección del JOIN hay que
colocarlas en la sección del WHERE y siempre se deben utilizar JOINs
de estándar ANSI.
o Las columnas de los JOINs deberán estar en el mismo orden que en
los índices para ayudar a mejorar el rendimiento.
Utilizar comillas sencillas en vez de comillas dobles
- 81 -
o Nótese que una comilla sencilla es el correcto identificador de ‘texto’ y
las “comillas dobles” no lo son – las “comillas dobles” tienen el mismo
funcionamiento que los [corchetes], que sirven para identificar a un
objeto.
o Aunque las “comillas dobles” pueden identificar texto, tienen una
longitud fija de caracteres, lo cual puede causar que la información se
trunque.
Considerar el uso de expresiones comunes de tabla (COMMON TABLE
EXPRESSIONS – CTE) en vez de sub consultas cuando sea apropiado, esto
basado en el plan de ejecución.
o Las CTE son excelentes cuando se utilizan para consultas recursivas o
consultas repetibles.
Asegurarse que todas las consultas manejan índices.
Manejar una nomenclatura fija.
Llevar un historial de la actividad del servidor para un apropiado análisis en
busca de mejoras continuas.
Cuidar los espacios de memoria que vayan a ser reservados para los valores
que se manejen, por ejemplo hay mucha diferencia entre un CHAR (50) a un
VARCHAR (50) o de un BIGINT a un TINYINT o en ocasiones hasta un BIT
sirve para lo mismo.
Utilizar tablas normalizadas en las bases de datos.
o Múltiples tablas pequeñas son usualmente mejores que una sola tabla
grande.
Utilizar la cláusula LIKE apropiadamente, si se busca un resultado exacto es
mejor utilizar “=”, o si es un grupo de datos es mejor utilizar la cláusula IN o
BETWEEN (o en su defecto EXCEPT).
Para revisar la existencia de un registro es mejor utilizar IF EXISTS (SELECT
1) en lugar de IF (SELECT *…) > 1 o SELECT COUNT (*) > 1.
Usar libremente BEGIN y END, así como la sangría, que permiten identificar
correctamente los ámbitos dentro del código.
- 82 -
Solo crear índices basados en el uso y considerarlos en las columnas
utilizadas en cláusulas WHERE, ORDER BY, GROUP BY, DISTINCT, TOP.
Evitar la ejecución dinámica de código, ya que lleva a un pobre rendimiento al
generar un plan de ejecución cada vez que es ejecutado el código. En caso de
ser utilizado es mejor manejar la instrucción SP_EXECUTESQL en vez de la
instrucción EXECUTE ya que la primera incrementa la reusabilidad del código.
Por ejemplo:
CREATE PROCEDURE dbo.Procedimiento
En vez de:
CREATE PROCEDURE Procedimiento
Utilizar el nombre del esquema con el nombre del objeto, esto ayuda en
encontrar directamente el plan de compilación creado por el SQL en vez de
buscar los objetos en otro posible esquema antes de decidir utilizar un plan de
ejecución en caso de estar disponible. Este proceso de buscar y decidir un
esquema para un objeto lleva a un bloqueo (LOCK) de COMPILE en el Stored
Procedure y con esto se ve afectado su rendimiento, por eso se debe
referenciar a los objetos dentro del proceso al esquema al que pertenecen.
Por ejemplo: SELECT campo1, campo2, campo3 FROM dbo.tabla
En vez de: SELECT campo1, campo2, campo3 FROM tabla
Y mandar llamar al Stored Procedure como: EXECUTE dbo.Procedimiento
En vez de: EXECUTE Procedimiento
Utilizar TRY – CATCH para manejar apropiadamente los errores que puedan
ocurrir durante la ejecución.
Utilizar NOT EXISTS en vez de NOT IN, o en todo caso utilizar un OUTER
JOIN y revisar por valores NULL en la otra tabla.
- 83 -
Evitar el uso de los tipos de datos DATETIME, FLOAT y REAL en las llaves
primarias ya que generan un gasto innecesario de recursos que afecta al
rendimiento.
No nombrar los Stored Procedures con el prefijo SP_.
o El prefijo SP_ está reservado para Stored Procedures del Sistema.
o Cuando el manejador del SQL encuentra un Stored Procedure que lleva
el prefijo SP_ intenta localizarlo primero en la base de datos master,
después lo busca en cualquier calificador descrito (por Base de Datos,
Owner), y al final intenta con dbo como el OWNER.
[14] [15] [16] [17] [18]
- 84 -
12. PROCEDIMIENTO.
Para la realización de este proyecto se siguieron 5 fases de la administración de
proyectos utilizadas en Amway para proyectos grandes.
12.1 Fase 1 – Fase Inicial
En esta fase se definen los objetivos del proyecto y de los recursos necesarios para
la ejecución de las tareas. Las características del proyecto implican la necesidad de
una fase o etapa previa destinada a la preparación del mismo, fase que tiene una
gran trascendencia para la buena marcha del proyecto y que deberá ser
especialmente cuidada. Por lo que se realizó la tarea del reconocimiento para
determinar que el proyecto pudiera llevarse a cabo. Se incluye la formulación del
proyecto, el estudio de factibilidad, el diseño general y su aprobación. Al final de esta
etapa se decidirá por la continuidad o no del proyecto. [19]
El objetivo primordial fue obtener el suficiente fundamento para proceder con
ejercicios serios de planeación y alcance, en definir el alcance del proyecto:
Lo que el proyecto debe lograr.
Definir la meta global del proyecto.
Definir las expectativas generales del cliente final (en este caso el mismo
departamento de Sistemas al considerarse un proyecto interno y no del
negocio como tal) o de los interesados.
Precisar el alcance general del proyecto.
Seleccionar o determinar los miembros iniciales de los equipos que se
conformarán para llevarlo a cabo.
La visión, los casos de negocio y la lista de riesgos fueron creados y revisados
por distintos responsables.
Para esta fase se generaron dos documentos que deben ser avalados por los
auspiciantes de cada área para poder seguir adelante. [20]
- 85 -
Un documento (Estimate Worksheet) que contiene los estimados de:
Cada uno de los productos, servicios o proyectos a los que se les da un
mantenimiento actualmente en la organización y que pudieran formar parte de
este nuevo proyecto.
Del tiempo de esfuerzo en general que tomará el llevar a cabo el proyecto.
El tiempo en forma más detallada de lo que tomará cada una de las fases que
conforman el proyecto.
Los recursos internos y externos que deberán planificar el tiempo necesario
que les llevará el realizar las actividades.
El presupuesto que es necesario para cubrir todas las necesidades del
proyecto.
Otro documento (<nombre del proyecto> - Project Charter) que servirá como un acta
de constitución del proyecto, el cual autorizará formalmente el proyecto.
Este documento confiere al director o dueño del proyecto la autoridad para aplicar
recursos internos o externos de la organización a las actividades del proyecto.
En resumidas cuentas en esta fase se deberá armar un equipo, preparar un marco
preliminar y establecer la fecha de terminación. Los gerentes de nivel inferior pueden
saltarse este paso, ya que generalmente se reserva para los altos directivos o los
que van a financiar el proyecto, aunque los directivos de nivel inferior a veces tienen
la oportunidad de asistir. De cualquier forma, el resultado final de esta fase genera un
documento que es conocido como la carta del proyecto o Project Charter.
- 86 -
12.2 Fase 2 – Fase de Planeación
En esta fase se incluye el diseño específico, evaluación de costos y tiempos,
definición de términos y condiciones contractuales. Se trata de establecer cómo el
equipo de trabajo deberá satisfacer las restricciones de prestaciones, planificación
temporal y costo. Es una planificación detallada de consistencia al proyecto y evitará
sorpresas que nunca son bien recibidas. Al finalizar esta fase se habilita la firma del
contrato marco o general.
Aquí se implica el enumerar cada una de las tareas necesarias para completar el
proyecto y proporcionar fechas de terminación realistas para cada tarea. Dado que
los proyectos tienden a cambiar y a adaptarse constantemente, la planificación es
una fase iterativa que tiene lugar varias veces durante el ciclo de vida del proyecto.
El plan que se determine en esta fase debe responder preguntas básicas sobre el
proyecto:
¿Por qué? - ¿Cuál es el problema o el valor agregado al que va dirigido el
proyecto? ¿Por qué se está auspiciando?
¿Qué? - ¿Cuál es el trabajo que será desarrollado en el proyecto? ¿Cuáles
son los productos finales/entregables?
¿Quién? - ¿Quién estará involucrado y cuáles serán sus responsabilidades
dentro del proyecto? ¿Cómo estarán organizados?
¿Cuándo? - ¿Cuál será la línea de tiempo del proyecto y cuando los puntos
particularmente importantes, determinados como hitos (MILESTONES)
estarán completados?
Será muy importante el establecer los hitos clave dentro del proyecto, ya que nos
permitirán resaltar los momentos cruciales dentro del proyecto y de esta manera,
ayudarán a mejorar el control del proyecto. Ya que cualquier proyecto, sin importar el
tamaño que sea, debe ser dividido en pequeñas partes o sub-tareas.
- 87 -
Estos hitos nos brindarán distintas ventajas ya que:
Dan claridad al progreso del proyecto, esto es que al dividir el plan del
proyecto en tareas más pequeñas ayuda a establecer hitos claros que
facilitarán hacer un mejor progreso del mismo. Ya que permite al líder del
proyecto tener la oportunidad de poder siempre dar un paso atrás para
analizar el estado del proyecto y considerar cualquier decisión que requiera
ser tomada.
Mejora y facilita la actividad de toma de decisiones, porque la incorporación de
ellos en el plan del proyecto ayudarán al líder del proyecto a revisar los
estados del mismo, estado de los entregables, tiempos, riesgos y por ende la
toma de decisiones.
Como punto de motivación para el equipo; ya que dependiendo la naturaleza
del proyecto, su duración y su tamaño, en algunas ocasiones cuando un
proyecto de gran envergadura se alcanzan ciertos hitos es motivo para
celebrar por parte del equipo por el trabajo realizado hasta ese momento. Es
importante reconocer públicamente el buen trabajo realizado, lo cual motiva al
equipo de trabajo.
Más sencillo de gestionar para personas y departamentos; es evidente que la
división del proyecto en tareas más pequeñas ayudarán a cualquier líder de
proyecto a gestionar el proyecto y a que las personas y departamentos
involucrados puedan realizarlas con éxito.
Mejor control del presupuesto; es más sencilla la gestión y control del gasto
del presupuesto del proyecto. La estimación de duraciones, personas
involucradas y el equipo técnico necesario es más fácil de predecir cuando el
espacio de tiempo es más corto.
Identificación de entregables; la entrega a tiempo de entregables es evidencia
que indica el éxito de un hito. Estos deben ser acordados, documentados y
guardados como referencia para un futuro proyecto.
- 88 -
Se llenarán documentos que avalen el listado de tareas y actividades que guiarán al
logro de las metas o hitos del proyecto:
Diseño conceptual y de requerimientos
Condiciones del alcance detallados
Requerimientos funcionales
Un plan de pruebas a alto nivel
Un plan de implementación
Un plan de obtención
Un programa de especificaciones
Una vista técnica general
Requerimientos técnicos
Un plan de entrenamiento
Se trabajará además en la secuencia que deben seguir las actividades con el fin de
identificar posibles dependencias y principalmente conseguir que el plan sea
aprobado por los terceros apropiados.
Algo importante es que igualmente se debe trabajar en un plan de comunicación, que
mantendrá informada a la gente necesaria del desarrollo del proyecto.
Se determinará deberán estar siendo informados constantemente, comunicándoles
en qué etapa del proyecto se encuentra actualmente, el tipo de comunicado que se
debe hacer, cada cuanto tiempo, quién será el responsable de recibir y retransmitir
esa información, así como las metas y objetivos de esta comunicación.
Para planear y subsecuentemente reportar el progreso dentro del ambiente del
proyecto se va a hacer uso de fechas apoyadas con Diagramas de Gantt. En un
inicio el alcance del proyecto es definido y los métodos apropiados para completar el
proyecto son determinados.
- 89 -
Después de este paso, se lista la duración para las distintas tareas necesarias para
completar el trabajo y es agrupada en una estructura de división de trabajo. Las
dependencias lógicas entre las tareas son definidas utilizando una red de diagrama
de trabajo que permite identificar el camino crítico.
Los recursos necesarios son estimados así como el costo para cada actividad puede
ser asignado a cada recurso, con esto se obtiene el costo total del proyecto. En esta
etapa, el plan se pudo optimizar para alcanzar un balance apropiado entre el uso de
los recursos así como la duración del proyecto para cumplir con los objetivos de este
proyecto.
Una vez que fue establecido y acordado, el plan se convirtió en la línea base por lo
que el progreso será medido contra la línea base establecida a través de la vida del
proyecto. Las entradas para la fase de planeación del proyecto incluyen las gráficas
del proyecto y la propuesta conceptual, las salidas incluirán los requerimientos del
proyecto, la fecha del proyecto y el plan de la administración del proyecto.
Al presentarse el documento que contenga el listado de las tareas con los
responsables y tiempos, se colectarán las firmas de las personas a cargo del
proyecto (sponsors, gerentes, directores), el cual avalará que este fue autorizado
como se muestra en la siguiente imagen:
Ilustración 26 : Aprobación de proyecto
- 90 -
12.3 Fase 3 – Ejecución
La ejecución de este proyecto consistirá en reunir recursos y utilizarlos para crear las
entregas planeadas previamente. Esta será la fase más larga y más complicada del
ciclo de vida del proyecto y puede estar llena de problemas. Por lo tanto, es
responsabilidad del gerente del proyecto asegurar que todas las partes mantengan la
comunicación y que todos los recursos necesarios se distribuyan adecuadamente. El
gerente también debe asegurar de que los miembros del equipo sepan lo que tienen
que hacer. Esta es también una fase iterativa. [21]
Se representarán el conjunto de tareas y actividades que suponen la realización
propiamente dicha del proyecto, la ejecución de la obra de que se trate. Responderá,
ante todo, a las características técnicas específicas y supone pondrá en juego y
gestionará los recursos en la forma adecuada para desarrollar la labor en cuestión.
Ya que cada tipo de proyecto responde en este punto a su tecnología propia, que es
generalmente bien conocida por los técnicos en la materia.
Al ejecutarse el plan fue necesario:
Registrar el avance del proyecto, comparando la información que se tiene
actualmente con los datos que fueron estimados originalmente.
Revisar los recursos, el alcance y los factores de tiempo para balancear las
prioridades.
Identificar los problemas que puedan presentarse y lleven a un desfase en el
proyecto, vigilando posibles desviaciones del plan original.
Analizar la distribución de los recursos a través del proyecto, evitando
sobrecargas de trabajo para algún miembro del equipo.
Utilizar un tablero que mostró gráficamente los estados de las fases así como
los resultados de cada una de ellas, lo que permitió que el líder del proyecto
pudiera arbitrar en caso de variaciones.
- 91 -
12.4 Fase 4 – Control
Esta fase se produjo en conjunto con la fase de ejecución. Durante esta fase, se hizo
un seguimiento del trabajo. Esto garantizó que la calidad de las tareas siguiera
siendo elevada y mantuvo al proyecto en marcha. Esta fase además implicó la
realización de pruebas y corrección de los defectos que saltaron durante la
implementación. Fue imperativo que el equipo se mantuviera enfocado y comunicara
el estado del proyecto y de los hitos regularmente.
Esta fue la última fase iterativa. Requirió que se fuera mostrando el avance de los
desarrollos al cliente para su aprobación. Si el cliente no aprobaba o solicitaba un
cambio específico, el equipo debía entonces volver a la fase de planificación del
proyecto y ajustar el alcance para que coincidiera con los nuevos requerimientos aun
cuando se establecieran muy bien las necesidades del negocio dentro del BRS que
se llenó en un inicio del proyecto. En caso de ocurrir un cambio de alcance se
llenaría un documento con control de cambios que implicaba un costo extra y un
riesgo de no poder entregar el producto final en los tiempos establecidos.
Se requirió de una muy buena comunicación por parte del líder del proyecto, ya que
era responsable de la comunicación entre el equipo y el cliente. Para esto se
organizaron regularmente (una vez por semana) reuniones (juntas de cadencia) para
administrar al equipo del proyecto, y se pudiera discutir el progreso del mismo, con lo
que se fueron determinando prioridades para las siguientes semanas. De esas juntas
se generaron informes de progreso (minutas) que permitía a todas las personas
involucradas en el proyecto estar informadas sobre las acciones en progreso y
aquellas terminadas, con lo que se determinaba quienes tenían actividades
pendientes de realizar y se establecían responsables de ellas.
Esta vigilancia de tiempo de gestión fue ejecutada por el director del proyecto para
asegurarse de que los plazos se estuvieran cumpliendo a medida que el proyecto
avanzaba.
- 92 -
Las hojas de tiempo se utilizaron para controlar el tiempo que los miembros
individuales del equipo dedicaban a las tareas dentro del proyecto. El líder del equipo
pudo identificar y resolver los problemas de gestión del tiempo que surgieron.
Esto permitía una monitorización del trabajo realizado analizando cómo el progreso
difería de lo planificado e iniciando las acciones correctivas que fueran necesarias.
Incluyó también el liderazgo, proporcionando con ellos directrices a los recursos
humanos, subordinados (incluso personal externo) para que hicieran su trabajo de
forma efectiva y a tiempo.
De dicho liderazgo viene la tarea de vigilancia y control del proyecto que son
actividades cuya responsabilidad recaen en el gerente o líder del proyecto. Se pudo
llegar a delegar algunos aspectos, ya que si bien se debe tener claro que para
controlar el proyecto se debe disponer de una información elaborada y además
resulta imprescindible el tener una visión general, algo que sólo el gerente conoce.
El controlar no fue vigilar, fue conocer y tener capacidad de anticipación, corrección y
evaluación para identificar desviaciones y mejorar la implementación. Lo cual iba
más allá del día a día de las tareas operativas.
Para controlar la calidad efectivamente a medida que avanzó el proyecto, el equipo y
el líder de proyecto establecieron las directrices de calidad antes de la fase de
ejecución. Una vez que el líder del equipo supo cómo se iba a medir la calidad, pudo
tomar medidas para medir la calidad de la salida del equipo, identificar los problemas
de calidad y hacer las mejoras necesarias.
- 93 -
12.5 Fase 5 – Fase de Entrega o Cierre del Proyecto
Esta fase establece el cierre formal del proyecto, revisa los éxitos y los fracasos con
miras a mejorar el próximo, así como establecer planes de mejora continua para el
proyecto recién entregado. También consiste en comunicar el archivo del proyecto,
en capturar lecciones aprendidas y evaluar la ejecución contra el plan del proyecto.
Se culminó al poner en marcha el proyecto desarrollado, se comprobó que funciona
adecuadamente y responde a las especificaciones en su momento aprobadas.
Después de que el cliente finalmente aprobó la entrega, el equipo preparó un informe
posterior al cierre y se presentó a los altos directivos.
Esta fase es también muy importante no sólo por representar la culminación de la
operación sino por las dificultades que suele presentar en la práctica, alargándose
excesivamente y provocando retrasos y costos imprevistos.
Unos meses más tarde, después de que se hayan o no demostrado los beneficios
del proyecto, el equipo debe escribir una reseña de cierre del proyecto en el que
califiquen la tasa de éxito global del proyecto.
Aunque al cerrar el proyecto, en el mejor de los casos, significa el logro de los
objetivos previstos y la satisfacción de la necesidad que dio origen a la intervención,
la conclusión del proyecto suele crear algunos problemas y cierto stress y angustia
en el equipo de trabajo, como bien explica Luis Enrique Palacios en su libro La
Gerencia de Proyectos Un Enfoque Latino. [22]
Según este autor el cierre del proyecto suele crear, entre otras cosas, inseguridad
laboral ya que las personas que conforman el equipo del proyecto o desarrollan
cualquiera de las actividades de este, se quedarán sin empleo una vez que se haya
concluido con la intervención.
- 94 -
Este hecho puede generar incentivos para que los trabajadores retrasen las obras
con la finalidad de alargar el proyecto y no quedarse desempleados, por lo que es
importante prever este riesgo en la etapa de planificación y establecer mecanismos
que permitan mitigarlo.
Tales mecanismos fueron el que la gente especializada en las distintas áreas que
tuvieron participación en el proyecto liderara cada una de las actividades críticas
debido al conocimiento de la tecnología existente y de las reglas de negocio de la
organización; y las actividades comunes o genéricas fueran tomadas por el personal
externo.
De esta forma los líderes de cada actividad conocían en todo nivel la cantidad de
personas y tiempo necesario para poder cumplirlas en los tiempos que fueron
establecidos durante la fase de análisis y planeación, además de compartir el
conocimiento que tienen.
Esa transmisión de conocimiento logra evitar otro problema que puede presentarse
en algún momento determinado durante esta etapa, que es la deficiencia en la
transferencia del conocimiento a las personas que realizarán las actividades
operativas una vez que el proyecto haya culminado, ya que el equipo por lo general
se encuentra muy ocupado en la terminación de las actividades como para
encargarse de realizar los entrenamientos y capacitaciones al personal operativo,
error que es muy com
Y por último el problema a la resistencia que existe en el documentar y mantener un
registro de todos los acontecimientos ocurridos durante el proyecto, de manera tal
que la información pueda ser utilizada como guía para futuros proyectos con el fin de
evitar cometer los mismos errores u optimizar los procesos que se realizaron para
lograr resultados en menor tiempo y de mayor calidad.
- 95 -
Lo cual se manejó al documentar cada una de las fases desde el inicio con el llenado
del BRS y el documento IDEA.
El cierre del proyecto consiste principalmente en dos procesos, según lo refleja el
Project Management Body of Knowledge (PMBOK): [23]
La administración y cierre de contratos: que consiste, como su nombre lo
indica, en llevar a cabo todas las acciones que conduzcan a finalizar las
relaciones contractuales establecidas durante el desarrollo del proyecto.
Evaluando el proceso y extrayendo de este las posibles lecciones aprendidas.
El cierre administrativo del proyecto: este proceso consiste en la revisión de
todos los reportes de avance generados durante el proyecto, para garantizar
que se haya cumplido con todas las actividades y se han obtenido los
entregables esperados.
El cierre del proyecto, nos permitió constatar qué hicimos bien durante el desarrollo
de la intervención, identificar los errores en la gestión y aprender de estos para no
cometerlos en el futuro. De esta manera las lecciones aprendidas nos permiten
mejorar nuestro trabajo y se convierten en una fuente de información valiosa para
quienes decidan en un momento dado realizar un proyecto similar al que finalizamos.
Por lo que se puede decir que la mayor importancia de esta fase es el que extraemos
las lecciones aprendidas.
Mientras que lo oportuno es sistematizar la información a medida que se va
avanzando sobre el ciclo de vida, es al final en donde se tiene la oportunidad como
equipo de proyecto a sentarse en analizar que pasó durante cada una de las fases y
extraer información valiosa tanto para el equipo como para la organización.
- 96 -
Este recuento de todos los acontecimientos del proyecto, tanto de aquellos que
marcharon de manera eficiente como los que no, permitieron aprender y mejorar
nuestro desempeño en futuros proyectos.
Siguiendo a Luis Enrique Palacios, la evaluación de estas lecciones nos puede llevar
a tomar acciones como:
Incorporar a próximos proyectos actividades que no se habían visualizado en
la determinación del alcance y que fueron algunas críticas pero al final todas
importantes para realizar un mejor trabajo
Reconsiderar estimados en la duración o en el costo de una actividad en
particular
Identificar riesgos, previamente no considerados como la capacidad del
personal (tanto conocimiento técnico como de tiempos)
Incorporar nuevas cláusulas o quitar situaciones legales, para potenciar una
contratación más transparente, disminuir la burocracia que siempre aparece
en este tipo de actividades
Determinar mejores especificaciones y estándares de calidad
Introducir novedosos incentivos al personal
Concientizar en lo referente a la necesidad de subcontratar algunas
actividades, en las que no se tiene un know – how de primer nivel
- 97 -
13. GLOSARIO
A
ABO Acrónimo de Amway Business Owner -
Es el nombre corto con el que se le identifica a los Empresarios Amway, - 59 -, - 66 -
AEC Acrónimo de Amway Experience
Center, - 21 - Amway
American Way, en inglés la manera americana, - 3 -, - 4 -, - 5 -, - 6 -, - 8 -, - 10 -, - 12 -, - 21 -, - 23 -, - 46 -, - 47 -, - 50 -, - 59 -, - 60 -, - 62 -, - 63 -, - 64 -, - 66 -, - 80 -
API Acrónimo de Application Programming
Interface - Es un componente de software que su propósito principal es el definir un conjunto de funcionalidades que son independientes de su respectiva implementación, permitiendo tanto a la definición como a la implementación variar sin comprometer a la otra., - 36 -, - 37 -
AS400 Plataforma de IBM de gama media y
alta, utilizada para empresas y grandes departamentos. Es un sistema multiusuario, con una interfaz controlada mediante menús y comandos CL intuitivos que utiliza terminales y un sistema operativo basado en objetos y bibliotecas., - 8 -, - 9 -, - 11 -, - 12 -, - 13 -, - 22 -, - 23 -, - 24 -, - 27 -, - 28 -, - 34 -, - 35 -, - 36 -, - 37 -, - 58 -, - 59 -, - 61 -
B
B2B
Acrónimo de Business to Business - Es la transmisión de información referente a transacciones comerciales electrónicamente, normalmente utilizando tecnologías como EDI. En términos generales la expresión business to business no se encuentra limitada al entorno electrónico, sino que hace referencia de exclusión para destacar el origen y destino de una actividad, como puede ser la relación entre un fabricante y el distribuidor de un producto., - 30 -, - 31 -, - 50 -
BPM Acrónimo de Business Process
Management - Es un enfoque sistemático para mejorar el proceso de negocios de las organizaciones, a través de la colaboración entre las áreas de Administración y Tecnologías de Información., - 12 -, - 30 -
broker Broker - Es una estructura de alto
rendimiento, confiable que se utiliza para mensajear entre aplicaciones. En una arquitectura orientada a eventos es posible ejecutar en tiempo real, las interacciones entre distintas aplicaciones claves., - 35 -, - 46 -, - 47 -
C
CAB Change Advisory Board - Es un comité
que apoya al equipo de administración de cambios al otorgar aprobaciones de cambios solicitudes y asistiendo en la evluación y priorización de los
- 98 -
cambios. Generalmente está conformado por represtantes de IT y del Negocio, - 15 -
CLOS Consolidated Line Of Sponsorship,
Línea de Auspicio Consolidada, - 4 - Connect
Direct Es un software utilizado para
transferir archivos entre computadoras Mainframe y computadoras Midrange. Llamado originalmente Network Data Mover (NDM)., - 9 -
D
DEV Desarrollo - Es el ambiente donde
software, aplicaciones o servicios se encuentran aun en etapas alfa o beta de desarrollo., - 13 -
Desarrollo - Es el ambiente donde software, aplicaciones o servicios se encuentran aún en etapas alfa o beta de desarrollo., - 13 -
DOWNLOADER Aplicación personalizada desarrollada
por Amway, su principal función es copiar la información proveniente de web en el sistema de AS400., - 2 -, - 27 -, - 28 -, - 29 -
E
eCommerce Comercio Electrónico - Consiste en la
distribución, venta, compra, marketing y suministro de información de productos o servicios a través de internet., - 8 -, - 12 -
F
FLOW Lenguaje de Programación Gráfico que
corre dentro del servidor de integración de webMethods., - 30 -, - 54 -
G
GDW Sistema utilizado para generar
reportes y analizar datos. Es un almacén que colecciona datos orientado a un determinado ámbito (empresa, organización, etc.), integrado, no volátil y variable en el tiempo, que ayuda a la toma de decisiones en la entidad en la que se utiliza., - 8 -, - 9 -
I
IDEA Documento que contiene la
concepción a un alto nivel de un proyecto, contiene una breve descripción de lo que se desea lograr y estimados generales de tiempo, recursos, costos, etc., - 13 -, - 91 -
Integration Server Es una de las aplicaciones de núcleo en
la plataforma de webMethods. Es un servidor de integración empresarial multiplataforma basado en Java. Soporta la integración de distintos servicios, tales como el mapeo de datos entre formatos y la comunicación entre distintos sistemas. También puede ser conocido como el núcleo de WebMethods Enterprise Service Bus., - 30 -
IT
- 99 -
Information Technology - Tecnologías de Información, - 7 -, - 8 -, - 30 -, - 32 -
J
JOB Es una serie de operaciones ejecutadas
secuencialmente por el Agent de la Base de Datos., - 24 -, - 28 -
M
MAGIC Acrónimo para Managing Awards,
Growth, Incentives and Compensation (Administrar Premios, Crecimiento, Incentivos y Compensaciones), es un proyecto o solución global para los pagos de bonos a los empresarios., - 8 -, - 9 -
P
PCR Acrónimo de Project Change Request -
Es un documento que contiene la solicitud a ajustes en un sistema en desarrollo, - 13 -
PD El ambiente de Producción es un
término utilizado para describir la configuración donde el software y otros productos son puestos en marcha, en operación para ser utilizados por los usarios finalez., - 13 -
PMBOK Acrónimo de Project Management
Body of Knowledge - Es el conjunto de conocimientos en Dirección/Gestión/Administración de Proyectos generalmente reconocidos como buenas prácticas y que se constituye como estándar
de Administración de Proyectos., - 92 -
Q
QA Acrónimo de Quality Assurance - Es un
ambiente creado para prevenir errores o defectos de los productos y evitar problemas cuando dichas soluciones o servicios sean entregados a los usuarios finales., - 13 -, - 14 -, - 42 -, - 46 -
R
REMEDY Herramienta de BMC Software que por
medio de administración de procesos basados en ITIL permite administrar las etapas y servicios de aplicaciones y productos., - 14 -
ROI Return On Investment - Es una razón
financiera que compara el beneficio o la utilidad obtenida en relación a la inversión realizada, es decir, representa una herramienta para analizar el rendimiento que la empresa tiene desde el punto de vista financiero., - 7 -, - 30 -
S
SOA Es un software de diseño y una
arquitectura de diseño de patrones de software basada en distintas piezas de software que proporcionan una funcionalidad de aplicaciones como servicios a otras aplicaciones. Esto es conocido como orientado a servicios. Es independiente de cualquier
- 100 -
proveedor, producto o tecnología., - 12 -, - 30 -
STAGGING Objeto de paso, aquí se almacena la
información temporalmente antes de ser insertada en el objeto final o de trabajo., - 25 -
Stored Procedure Subrutina disponible para las
aplicaciones que accesan a un Sistema Relacional de Base de Datos., - 13 -, - 62 -, - 73 -, - 77 -, - 79 -
T
TAT Acrónimo de Technical Acceptance
Testing - Es la fase de pruebas en la cual el sistema se prueba para determinar si es aceptable acorde a las especificaciones técnicas establecidas., - 13 -
TFS Acrónimo de Team Foundation Server
- Herramienta de Microsoft que cubre completamente la administración del ciclo de vida de una aplicación, almacena el control de versiones del código, reporteos, administración de requerimientos, administración de proyectos, constructores automatizados, capacidades de pruebas y de liberaciones., - 14 -, - 70 -
Trigger Es un código de procedimientos que se
ejecuta automáticamente en respuesta a determinados eventos
sobre una tabla o vista en particular en una Base de Datos., - 13 -
U
UAT Acrónimo de User Acceptance Testing
- Consiste en los procesos de verificar que la solución funcione correctamente para el usuario. No es una prueba del sistema como tal, está más bien para asegurar que la solución funcione para el usuario, también llamado Beta Testing., - 2 -, - 13 -, - 19 -
UPLOADER Aplicación personalizada desarrollada
por Amway que su función es cargar información en web proveniente del sistema de AS400., - 2 -, - 24 -, - 25 -, - 26 -
W
webMethods Es un software enfocado en la
integración de aplicaciones, integración de procesos de negocios e integraciones entre socios B2B., - 2 -, - 9 -, - 12 -, - 13 -, - 14 -, - 33 -, - 34 -, - 36 -, - 37 -, - 40 -, - 41 -, - 42 -, - 43 -, - 47 -, - 48 -, - 49 -, - 51 -, - 54 -, - 56 -, - 57 -, - 58 -
WebSphere En un Software para entornos SOA que
permite procesos de negocio interconectados y dinámicos, además de proporcionar infraestructuras de aplicaciones altamente eficientes para todas las situaciones de negocio., - 9 -
- 101 -
14. BIBLIOGRAFÍA
[1] Wikipedia, «Amway,» [En línea]. Available: http://es.wikipedia.org/wiki/Amway.
[2] World Federation of Direct Selling Associations, «Venta Directa y Multinivel,» [En línea]. Available: http://www.wfdsa.org/legal_reg/index.cfm?fa=sp_ppaper2.
[3] Amway, «Inicia tu propio negocio,» [En línea]. Available: http://www.amway.com.mx/conozcaamway/iniciatupropionegocio.html.
[4] T. A. Adikesavan, Information Technology : Best practices and applications in business, PHI Publishing, 2012.
[5] J. C. Barnes y P. J. Rothstein, A guide to Business Continuity Planning, John Wiley & Sons, 2001.
[6] Wikipedia, «WebMethods,» [En línea]. Available: http://en.wikipedia.org/wiki/WebMethods.
[7] A. Cassidy y K. Guggenberg, A practical guide to Information System Process Improvement, CRC Press, 2000.
[8] Amway, «Conozca Amway,» [En línea]. Available: http://www.amway.com.mx/conozcaamway/.
[9] E. K. Waldorm, webMethods Developer, Psychopublishing, 2012.
[10] K.-H. Streibich, The Digital Enterprise, Software AG, 2014.
[11] P. Buech, R. Davis, C. Heller, J. Klueckmann y M. Kuppler, Intelligent Guide to Enterprise BPM, Software AG, 2012.
[12] T. Blickle, H. Hess, J. Klueckmann, M. Lees y B. Williams, Process Intelligence, Wiley Publishing, Inc., 2010.
[13] K. Garimella, M. Lees y B. Williams, BPM Basics, Wiley Publishing, Inc., 2008.
[14] M. Matsumura, B. Brauel y J. Shah, SOA Adoption, Wiley Publishing, Inc., 2009.
[15] W. R. Vaughn, Hitchhiker's Guide to Visual Studio and SQL Server: Best Practice Architectures and Examples, 7th Edition, Addison-Wesley Professional, 2006.
[16] S. Dam, SQL Server 2008 Query Performance Tuning Distilled, Apress, 2009.
[17] Microsoft Developer Network, «Improving SQL Server Performance,» [En línea]. Available: http://msdn.microsoft.com/en-us/library/ff647793.aspx.
[18] Microsoft Developer Network, «Monitor and Tune for Performance,» [En línea]. Available: http://msdn.microsoft.com/en-us/library/ms189081.aspx.
[19] MS SQL Tips, «DBA Best Practices,» [En línea]. Available: http://www.mssqltips.com/sql-server-tip-category/53/dba-best-practices/.
[20] Microsoft Technet, «SQL Server Best Practices,» [En línea]. Available: http://technet.microsoft.com/en-us/sqlserver/bb671430.aspx.
[21] Steve Jones, «SQL Server Central,» [En línea]. Available:
- 102 -
http://www.sqlservercentral.com/.
[22] ILX Group, «ITIL Training,» [En línea]. Available: http://www.itiltraining.com/.
[23] Wikipedia, «Information Technology Infrastructure Library,» [En línea]. Available: http://en.wikipedia.org/wiki/Information_Technology_Infrastructure_Library.
[24] Wikipedia, «Biblioteca de Infraestructura de Tecnologías de Información,» [En línea]. Available: http://es.wikipedia.org/wiki/Information_Technology_Infrastructure_Library.
[25] B. Orand, Foundations of IT Service Management, ITILYaBrady, 2011.
[26] A. T. Orr, Introduction To The ITIL Service Lifecycle, The Stationery Office, 2011.
[27] C. Agutter, ITIL Foundation Handbook, TSO, 2012.
[28] M. E. Bays, Software Release Methodology, Prentice Hall, 1999.
[29] J. A. Fitzsimmons y M. J. Fitzsimmons, Service Management : Operations, Strategy and Information Technology, McGraw-Hill, 2001.
[30] A. Hiles, Complete Guide to IT Service Level Agreements : Matching Service Quality to Business Needs, Rothstein Associates, 2002.
[31] A. Hiles, The Complete Guide to IT Service Level Agreements : Aligning IT Services to Business, Rothstein Associates, 2002.
[32] R. J. Latino y K. C. Latino, Root Cause Analysis : Improving Performance for Bottom Line Results, CRC Press, 2002.
[33] J. W. Toigo y M. R. Toigo, Disaster Recovery Planning : Strategies for Protecting Critical Information Assets, Prentice Hall, 2002.
[34] J. Van Bon, World Class IT Service Management Guide, Addison-Wesley, 2002.
[35] J. Van Bon, IT Service Management : An introduction based on ITIL, Van Haren Publishing, 2005.
[36] J. Van Bon, ITIL, Volume 3, Van Haren Publishing, 2007.