DESARROLLO DE UN SISTEMA DE CONTROL DE INVENTARIO FÍSICO Y DE SOFTWARE BAJO UNA ARQUITECTURA WEB IMPLEMENTANDO PROTOTIPADO Y PROGRAMACIÓN EXTREMA PARA CYZA OUTSOURCING
S.A.
Elaborado por:
JORGE EMILIO ARAQUE GONZALEZ Cod 20022020007
UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS FACULTAD DE INGENIERIA
INGENIERÍA DE SISTEMAS BOGOTÁ
DESARROLLO DE UN SISTEMA DE CONTROL DE INVENTARIO FÍSICO Y DE SOFTWARE BAJO UNA ARQUITECTURA WEB IMPLEMENTANDO PROTOTIPADO Y PROGRAMACIÓN EXTREMA PARA CYZA OUTSOURCING
S.A.
Elaborado por:
JORGE EMILIO ARAQUE GONZALEZ Cod 20022020007
Directora:
LILIAN ASTRID BEJARANO GARZÓN Ingeniera de Sistemas
UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS FACULTAD DE INGENIERIA
INGENIERÍA DE SISTEMAS BOGOTÁ
Nota de Aceptación:
_________________________________ _________________________________ _________________________________ _________________________________ _________________________________ _________________________________
Jurados
_____________________________________________
_____________________________________________
_____________________________________________ LILIAN BEJARANO (Directora Interna)
3 CONTENIDO
Pág.
LISTA DE FIGURAS ... 6
LISTA DE TABLAS ... 8
INTRODUCCIÓN ... 10
1. PLANTEAMIENTO DEL PROBLEMA ... 12
2. OBJETIVOS ... 14
General: ... 14
Específicos: ... 14
3. JUSTIFICACIÓN ... 15
4. MARCO REFERENCIAL... 18
4.1 MARCO TEÓRICO ... 18
4.1.1 Sistema de Inventario. ... 18
4.1.2 Clasificación de los Inventarios de acuerdo a la localización física. ... 19
4.1.3 Fundamentos de la Codificación de Barras. ... 20
4.1.4 Fundamentos del Escaneado. ... 27
4.2 ESTADO DEL ARTE ... 31
4.2.1 Software Mónica ... 32
4.2.2 TPV Comercios ... 33
4.2.3 EcountERP ... 34
4.3 MARCO CONCEPTUAL ... 37
4.3.1 Arquitectura Multicapa ... 37
4.3.2 Arquitectura Física... 44
4.3.3 Herramientas RAD ... 45
4.3.4 Asp.NET ... 45
4.3.5 Visual Studio ... 46
4.3.6 Servidor de Aplicaciones ... 46
4
4.3.7.1 Controles de Telerik para ASP Ajax ... 46
5. METODOLOGÍA ... 48
5.1 PROGRAMACIÓN EXTREMA... 48
5.1.1 Valores de la Programación Extrema ... 48
5.1.2 Principios básicos de la Programación Extrema ... 49
5.1.3 Roles dentro de la programación extrema ... 53
5.2 PROTOTIPOS ... 54
5.2.1 Prototipo corregido ... 55
5.2.2 El prototipo corregido dentro de la Programación Extrema ... 55
5.3 ESTRUCTURA DE DESGLOSE EDT ... 56
6. DISEÑO METODOLÓGICO ... 58
6.1 FASE DE LEVANTAMIENTO DE DATOS ... 58
6.1.1 Identificación de Interesados ... 58
6.1.2 Historias de Usuarios ... 59
6.1.3 Levantamiento de Requerimientos ... 64
6.1.4 Casos de Uso ... 72
6.1.5 Diagramación de Flujos de Sistema De Inventarios ... 77
6.2 FASE DE PLANEACIÓN ... 78
6.2.1 Plan de Desarrollo ... 78
6.2.1.1 Desglose de Trabajo ... 81
6.2.1.2 Proceso de Desarrollo ... 84
6.2.1.3 Diagrama de Proceso de desarrollo de un Ciclo ... 85
6.2.1.4 Diagrama de Proceso de desarrollo proyecto General ... 86
6.2.2 Plan de Pruebas ... 87
6.2.3 Plan de Control de Cambios ... 87
6.2.4 Plan de Cierre de Proyecto ... 87
6.3 FASE DE DESARROLLO ... 88
6.3.1 Creación del proyecto ... 88
6.3.2 Desarrollo de Proyecto Base ... 88
5
6.3.4 Construcción de Servicios Web ... 98
6.3.5 Instalador Cliente de Servicios Windows ... 98
6.4 FASE DE PRUEBAS Y CONTROL DE CAMBIOS ... 99
6.4.1 Pruebas de Integración ... 99
6.4.2 Control de Cambios ... 110
6.4.3 Pruebas de Aceptación ... 111
6.5 FASE CIERRE ... 115
7 ANÁLISIS COSTO/BENEFICIO ... 116
7.1 COSTOS ... 116
7.2 BENEFICIOS ... 117
7.3 COMPARATIVO CON OTRAS PROPUESTAS DEL MERCADO ... 119
8. CONCLUSIONES ... 121
9. REFERENCIAS ... 122
10. BIBLIOGRAFÍA ... 123
11. CITAS DE INTERNET ... 124
6
LISTA DE FIGURAS
Pág.
Figura 1. Partes del código de barras2. ... 22
Figura 2. Code 1282 ... 23
Figura 3. Code 392 ... 23
Figura 4. Intercalado 2 de 52 ... 23
Figura 5. Código EAN2 ... 24
Figura 6. Código UPC2... 24
Figura 7. Código QR2 ... 25
Figura 8. Datamatrix2 ... 25
Figura 9. Código PostNet2 ... 26
Figura 10. CódigoPDF4172 ... 26
Figura 11. Escaneado del Código. ... 27
Figura 12. Lápiz Óptico ... 28
Figura 13. Escáner CCD ... 28
Figura 14.Escáner de Pistola ... 29
Figura 15. Laser Omnidireccional ... 30
Figura 16. Escáner de Ranura ... 30
Figura 17. Pantalla de Inventarios de Software Mónica ... 32
Figura 18. Módulo de Inventarios. Software TPV Comercios ... 34
Figura 19. Vista de Ecount Software ... 36
Figura 20. Esquema de Componentes de la aplicación ... 38
Figura 21.Esquema lógico de la capa de presentación ... 39
Figura 22. Esquema lógico de la capa de negocio ... 41
Figura 23. Esquema lógico de la capa de acceso a datos ... 42
Figura 24. Diagrama físico y de red de la aplicación ... 44
Figura 25. Taller de Diseño RAD (Rapid Application Management) ... 55
Figura 26. Diagrama típico de un esquema de desglose de trabajo ... 57
Figura 27. Caso de Uso para REQ-FNC-01 ... 72
Figura 28. Diagrama Caso de Uso para REQ-FNC-02 ... 72
Figura 29. Diagrama Caso de Uso para REQ-FNC-03 ... 73
Figura 30. Diagrama Caso de Uso para REQ-FNC-04 ... 73
Figura 31. Diagrama Caso de Uso para REQ-FNC-05 ... 73
Figura 32. Diagrama Caso de Uso para REQ-FNC-06 ... 74
Figura 33. Diagrama Caso de Uso para REQ-FNC-07 ... 75
Figura 34. Diagrama Caso de Uso para REQ-FNC-08 ... 75
Figura 35. Diagrama Caso de Uso para REQ-FNC-09 ... 76
7
8
LISTA DE TABLAS
Pág.
Tabla 1. Listado de Interesados Sistema de Inventarios Cyza ... 58
Tabla 2. Historia de Usuario HU1 ... 59
Tabla 3. Historia de Usuario HU2 ... 59
Tabla 4. Historia de Usuario HU3 ... 60
Tabla 5. Historia de Usuario HU4 ... 60
Tabla 6. Historia de Usuario HU5 ... 60
Tabla 7. Historia de Usuario HU6 ... 61
Tabla 8. Historia de Usuario HU7 ... 61
Tabla 9. Historia de Usuario HU8 ... 61
Tabla 10. Historia de Usuario HU9 ... 62
Tabla 11. Historia de Usuario HU10 ... 62
Tabla 12. Historia de Usuario HU11 ... 62
Tabla 13. Historia de Usuario HU12 ... 63
Tabla 14. Historia de Usuario HU13 ... 63
Tabla 15. Historia de Usuario HU14 ... 63
Tabla 16. Historia de Usuario HU15 ... 64
Tabla 17. Historia de Usuario HU16 ... 64
Tabla 18. Requerimiento Funcional REQ-FNC-01 ... 65
Tabla 19. Requerimiento Funcional REQ-FNC-02 ... 65
Tabla 20. Requerimiento Funcional REQ-FNC-03 ... 66
Tabla 21. Requerimiento Funcional REQ-FNC-04 ... 66
Tabla 22. Requerimiento Funcional REQ-FNC-05 ... 67
Tabla 23. Requerimiento Funcional REQ-FNC-06 ... 67
Tabla 24. Requerimiento Funcional REQ-FNC-07 ... 68
Tabla 25. Requerimiento Funcional REQ-FNC-08 ... 68
Tabla 26. Requerimiento Funcional REQ-FNC-09 ... 69
Tabla 27. Requerimiento Funcional REQ-FNC-10 ... 69
Tabla 28. Requerimiento Funcional REQ-FNC-11 ... 70
Tabla 29. Requerimiento No Funcional REQ-NFN-01 ... 71
Tabla 30. Requerimiento No Funcional REQ-NFN-02 ... 71
Tabla 31. Requerimiento No Funcional REQ-NFN-03 ... 71
Tabla 32. Requerimiento No Funcional REQ-NFN-04 ... 71
Tabla 33. Tabla de Módulos del Sistema de Inventario Cyza ... 79
Tabla 34. Tabla de Desglose de Trabajo Sistema de Inventario Cyza ... 81
Tabla 35. Formato de Pruebas 1. Proyecto Base ... 99
9
Tabla 37. Formato de Pruebas 3. Proyecto Base ... 101
Tabla 38. Formato de Pruebas 4. Proyecto Base ... 101
Tabla 39. Formato de Pruebas 5. Proyecto Base ... 102
Tabla 40. Formato de Pruebas 1. Modulo Administración del Sistema ... 102
Tabla 41. Formato de Pruebas 2. Modulo Administración del Sistema ... 103
Tabla 42. Formato de Pruebas 1. Modulo Administración de Usuarios ... 104
Tabla 43. Formato de Pruebas 2. Modulo Administración de Usuarios ... 105
Tabla 44. Formato de Pruebas 1. Módulo de Ingreso de Elementos ... 106
Tabla 45.Formato de Pruebas 1. Módulo de Consultas ... 107
Tabla 46. Formato de Pruebas 1. Módulo de Reportes ... 108
Tabla 47. Formato de Pruebas 1. Módulo de Histórico ... 109
Tabla 48. Formato de Pruebas 1. Instalador Cliente ... 109
Tabla 49. Historial de Cambios ... 110
Tabla 50. Prueba 1 para REQ-FNC-5 ... 111
Tabla 51. Prueba 2 para REQ-FNC-05 ... 112
Tabla 52. Prueba 3 para REQ-FNC-03 ... 113
Tabla 53. Prueba 4 para REQ-FNC-03 ... 113
Tabla 54. Prueba 5 para REQ-FNC-05 ... 114
Tabla 55. Formulario de Pruebas de Aceptación ... 111
Tabla 56. Lista de entregables del proyecto ... 115
10
INTRODUCCIÓN
Toda organización requiere administrar sus recursos tecnológicos y conocer plenamente la existencia de equipos e infraestructura informática a su disposición. Estos tipos de controles se pueden supervisar con herramientas que faciliten el acceso a dicha información y además permitan realizar tareas de mantención y rastreo constante.
El proyecto planteado implementa un aplicativo programado a medida de las necesidades de la empresa para el control y gestión automática de inventarios de hardware y software de toda la plataforma informática. Esta solución consiste en la elaboración de un software que administra y presenta información referente a las características físicas y descriptivas de los equipos.
Se realiza un estudio de la tecnología, información requerida, recursos y alcances para verificar la viabilidad del proyecto y las ventajas obtenidas al desarrollar un software propio y a la medida para Cyza Outsourcing S.A.
El software es implementado siguiendo las principales fases para la ejecución de proyectos que son planeación, desarrollo, control, seguimiento y cierre.
El proceso de planeación descubre la funcionalidad de la futura solución y establece el procedimiento de desarrollo del software, programación de tiempo y la gestión de recursos a disposición. Todo esto es resultado de actividades de levantamiento de datos, entrevistas, estudio de requerimientos funcionales, casos de usos, historias de usuarios y diagramación de roles.
11
El proceso de seguimiento y control de cambios se realiza en ciclos cortos, donde el resultado de una codificación es inmediatamente sometida a prueba con resultados que pueden ser satisfactorios o que deben entrar a recodificar para somerterlo a un ciclo de cambio. Este proceso es elemental en la programación extrema donde la codificación, pruebas y corrección se hacen en paralelo en el proceso de implementación.
El código satisfactorio será incluido en el prototipo base el cual va reuniendo todos los requerimientos funcionales del software hasta llegar a convertirse en el producto final con toda la plataforma completa y totalmente funcional, esta es la fase de cierre.
12
1. PLANTEAMIENTO DEL PROBLEMA
Cyza Outsourcing S.A. es una empresa que ofrece servicios de seguridad documental y cuenta con el apoyo de personal especializado que complementa los procesos referentes a este sector. Es así como pertenecen al equipo de trabajo personas con perfiles de investigador, grafólogos, dactiloscopistas, abogados y técnicos que hacen parte del proceso que garantiza transacciones seguras referentes a la identidad de un cliente.
Por ello cada funcionario es dotado de elementos asignados por Cyza para adelantar sus procesos particulares y acceder a las herramientas necesarias para cumplir con sus tareas específicas. Es importante para la compañía conocer en todo momento la disponibilidad de sus activos y recursos, entre los que se encuentran equipos de cómputo, equipos de ofimática como impresoras, escáneres o copiadoras, escritorios, sillas y para algunos cargos especializados dispositivos biométricos. Asimismo saber a qué personas ha sido asignado cada elemento entregado.
13
Por la naturaleza del sistema que se lleva actualmente para alimentar el documento de Inventario, el proceso de actualización es realmente engorroso. En muchos casos los equipos se trasladan de una sede a otra y no es posible hacerles un seguimiento concreto porque tales movimientos no han sido registrados ni actualizados en el soporte documental.
Nuevamente, y por las características tan básicas en las que se adelanta este proceso de levantamiento de inventario, se presume que la información no está segura, inclusive con un alto grado de inconsistencia en los datos ya que se ha presentado el caso en el que se manipula más de un archivo, utilizando documentos copia que generan dispersión de la información. De esta forma no se puede determinar cuál es el archivo original ni cuál es el actualizado. Todos los esfuerzos para llevar un Inventario actualizado podrían irse abajo con el simple hecho de que se perdiera el archivo de hoja de cálculo con el que se trabaja en la actualidad.
Otro proceso directamente afectado es el asociado con el seguimiento de la asignación de equipos. En la empresa es habitual que se haga la contratación de personal por periodos cortos firmando contratos a término fijo con duraciones hasta de 3 meses. Por ello es indispensable un sistema que entregue información precisa de los elementos que le han sido asignados a un funcionario en particular para poder generar documentos de paz y salvo al final de cada periodo de contratación. Esto en la actualidad no se está llevando debido al nivel de complejidad que representa entregar a tiempo un listado de los equipos asignados a la persona que está próxima a entregar su cargo.
Formulación del Problema:
14
2. OBJETIVOS
General:
• Desarrollar un aplicativo Web a la medida para realizar tareas de Gestión de Inventarios y licenciamiento de claves de software en equipos físicos y componentes de software apoyado en un dispositivo lector de código de barras para Cyza Outsourcing S.A.
Específicos:
• Ejecutar el levantamiento de la información correspondiente a recursos físicos como equipos de cómputo, biométricos, de monitoreo y de control de acceso capturando sus características diferenciadoras como su marca y referencia para alimentar la información del repositorio de datos que almacene ésta información.
• Desarrollar una rutina de autenticación contra Directorio Activo para los usuarios que pretendan ingresar al Sistema de Control de Inventarios implementando la estructura de usuarios y unidades organizacionales que propone el modelo de Active Directory para determinar accesos y funciones de autorización de ingreso al software.
• Desarrollar un componente que permita monitorear el estado de hardware de los computadores que pertenezcan a Cyza para hacer seguimiento de cambios en su configuración y que permitan ser reportados al servidor central de forma automática.
• Crear roles específicos para los usuarios que van a utilizar la aplicación mediante módulos que encapsulen funciones específicas de tal manera que las tareas de un operario difieran de las sugeridas para un administrador. • Registrar el artículo inventariado junto con su información asociada
mediante la captura y lectura del código de barras utilizando una pistola lectora.
• Implementar la programación extrema como base de la metodología a utilizar en el proceso de desarrollo del Sistema de Control de Inventarios e incluir el prototipado como un componente complementario a la fase de taller de diseño propio de una metodología ágil como lo es XP.
15
3. JUSTIFICACIÓN
Toda compañía se apoya en herramientas que le permitan facilitar la ejecución de sus procesos internos en todos los niveles, ya sean operativos, de calidad, administrativos e inclusive de investigación y desarrollo. Particularmente habiendo estudiado las necesidades de una empresa emergente como lo es Cyza Outsourcing S.A. existen muchos procesos que requieren ser potenciados con ayuda de software adicional. Bajo un contexto ingenieril y queriendo brindar soluciones que apoyen estos procedimientos, se ha optado por abordar el caso puntual de la gestión de inventarios para recursos físicos y de software con los que la compañía cuenta y que son esenciales para garantizar el cumplimiento de sus tareas operativas.
De la mano de herramientas que pretenden incrementar la consistencia y el buen funcionamiento de un proceso como lo es un Sistema de Gestión de Calidad (SGC) y cuya implementación es complementaria a la etapa de desarrollo de software, se presenta una oportunidad para integrar dichos estándares a esta propuesta de implementación de Gestión de Inventario para no solo aplicar el desarrollo de un software que cubra una necesidad sino que además permita ejecutar el proceso de desarrollo anclado a metodologías de buenas prácticas en todos los procesos de construcción del software, regidos por políticas de calidad.
16
propuesto pretende cumplir con las condiciones de un administrador de inventarios pero a la vez debe ser capaz de funcionar como un administrador de terminales de computación de forma remota y segundo para permitir la integración de forma flexible con otros componentes de software desarrollados en Cyza Outsourcing S.A para potenciar sus funcionalidades y centralizar la información de varias áreas en una estructura distribuida de pequeños aplicativos.
La importancia de realizar esta implementación radica en la oportunidad de sistematizar una operación que facilite la gestión de inventario sobre los recursos tanto físicos como recursos de software de Cyza Outsourcing S.A. llevando procesos previos a la implementación de código como lo son, el análisis de los actores implicados en las necesidades que se pretenden cubrir, el levantamiento de requerimientos funcionales y no funcionales así como los procesos propios de la implementación a nivel de programación que implican el uso de metodologías de desarrollo, todo esto bajo el marco de estándares destinados a mejorar el resultado final y el cual la empresa ha comenzado a apropiar para todas sus áreas.
Naturalmente para el departamento de Desarrollo estas condiciones están orientadas a garantizar que las técnicas empleadas permitan un proceso de desarrollo ágil, óptimo, de buenas prestaciones y limpio en su elaboración y ejecución.
La solución planteada permitirá agilizar los procesos de recolección de datos sobre los elementos que formen parte del inventario de la empresa, será un software a disposición de la compañía para llevar seguimiento de todos sus activos y cuyo número crece rápidamente considerando que la compañía se encuentra en plena expansión haciendo de esta futura herramienta un elemento de primordial complemento a solicitudes puntuales sobre el estado de cada activo.
17
18
4. MARCO REFERENCIAL
4.1 MARCO TEÓRICO
4.1.1 Sistema de Inventario. Un concepto general define el sistema de inventario como una relación ordenada de bienes y existencias de una entidad o empresa con la finalidad de conocer el estado y la cantidad de elementos disponibles. Según Muller: “Un inventario puede ser algo tan elemental como una botella de limpiador de vidrios empleada como parte del programa de mantenimiento de un edificio, o algo más complejo, como una combinación de materias primas y ensamblajes que forma parte de un proceso de manufactura” (Muller, 2004)[1]. Dependiendo del contexto y la actividad comercial de cada organización se puede establecer una definición más precisa sobre el Inventario. En muchas ocasiones tal definición va orientada a empresas que tienen una mayor actividad comercial y que su núcleo de negocio es el de comprar materia prima para generar productos terminados. Para estos casos se presenta una mayor importancia en determinar costes de adquisición, valores adicionales de procesamiento de productos y la estimación del valor final de su producto destinado a la venta. Según Taha “se considera a los inventarios como un mal necesario: si son muy pocos, causan costosas interrupciones; si son demasiados equivalen a tener un capital ocioso” (Muller, 2004)[1].
En un contexto más específico los inventarios tienen varios elementos categorizados dependiendo fundamentalmente de su naturaleza en la organización. De esta manera se clasifican en:
• Materias primas • Productos terminados • Productos en proceso • Artículos de consumo
• Artículos para servicio, reparación y repuesto
19
4.1.2 Clasificación de los Inventarios de acuerdo a la localización física. Partiendo del hecho de que se debe conocer la ubicación física de un artículo para poder contarlo, saber quién lo tiene en custodia o en qué sede de la empresa se encuentra se establece de manera teórica las distintas clasificaciones que se le puede otorgar a un inventario y las consideraciones que tiene el llevar una u otra distribución. Independientemente del espacio que las compañías dispongan para el almacenamiento de sus productos, existen sistemas de localización que utilizan mejor el espacio y me manera más eficaz que otros (Muller, 2004)[3].
El propósito de un sistema de localización de materiales es la definición de procedimientos que permita seguir el movimiento de los productos dentro de las instalaciones y para considerar qué sistema de localización funciona mejor se debe tratar de maximizar y estimar lo siguiente:
• Uso del espacio • Uso del equipo
• Uso de la mano de obra
• Accesibilidad a todos los artículos • Protección contra daños
• Facilidad para localizar los artículos • Reducción de costos administrativos
Intentar implementar un único sistema puede ser difícil de realizar, en ocasiones es preciso contemplar la posibilidad de implementar más de una modalidad de seguimiento para optimizar la administración del inventario. La clasificación es la siguiente:
20
4.1.2.2 Sistemas de localización fija. Cada artículo tiene su lugar. Si una unidad de existencias se almacena en grandes cantidades, puede tener dos o más sitios de almacenamiento. Sin embargo, tomadas colectivamente, todas estas posiciones son los únicos lugares donde el artículo puede permanecer en las instalaciones, y ningún otro artículo puede quedar allí. Los sistemas de localización fija exigen grandes cantidades de espacio pensando en el momento en que exista un grado máximo de elementos para almacenar. También se debe contar con la existencia de espacios disponibles pero que no se encuentran en uso pero que sin embargo pueden ser plenamente usados en el momento en que se requieran ya sea por la forma del producto, por las características singulares de otros productos que al llegar serán asignados a ésta particular ubicación y que no pueden ser ocupados. A esta situación se le conoce como efecto panal. (Muller, 2004)[3].
4.1.2.3 Sistemas de localización aleatoria. Su principal característica es que nada tiene un lugar fijo, pero se sabe dónde está todo. Existe una maximización del espacio por cuanto ningún artículo tiene una ubicación fija y puede situarse donde exista espacio. Los sistemas de memoria no dependen del sitio de almacenamiento, ni de las características particulares de los elementos inventariados, únicamente dependen de la mente del encargado de los inventarios. Los sistemas aleatorios tienen la flexibilidad de los sistemas de memoria, unida al control de los sistemas fijos. Como lo indica Muller (2004)[3]:
“En esencia, un artículo puede situarse en cualquier lugar, siempre y cuando su localización se anote con precisión en una base de datos de computador o en un sistema manual de tarjetas. Cuando el artículo se mueve, se elimina de la respectiva localización. Por consiguiente la dirección de una unidad de existencias es la localización donde se encuentra mientras permanezca allí”. (Muller p.65) [3]
21
“Mientras menos se dependa de la intervención humana para identifica elementos, registrar información y hacer seguimiento de datos, más oportunos y exactos serán los registros. La codificación de barras es una valiosa herramienta para capturar datos importantes con rapidez y precisión. La eficiencia en la captura de información y la precisión del código de barras suelen ser razones suficientes para justificar, en cuanto a costo, la instalación de la codificación de barras dentro de una operación de levantamiento de datos” (Muller, 2004)[3].
La codificación de barras es un método óptico para lograr la identificación automática de cualquier elemento mediante un conjunto de líneas paralelas verticales de distinto grosor y espaciado que en su conjunto contienen una determinada información. Depende de una luz visible o invisible que se refleja en un dibujo impreso. Las barras o áreas oscuras en el interior del dibujo absorben la luz, y los espacios o áreas intermedias la reflejan. La absorción y la reflexión contrastante las capta un aparato que lee el dibujo reflejado y decodifica la información.
La correspondencia o mapeo entre la información y el código que la representa se denomina simbología1. Existen simbologías para diferentes aplicaciones, cada una de ellas con diferentes características que pueden ser las siguientes.
• Numéricas o alfanuméricas
• De longitud fija o longitud variable • Discretas o continuas
• Número de grosor de elementos • De auto verificación
4.1.3.1 Elementos de los códigos de barras. El lenguaje de un código de barras es un alfabeto fijo compuesto de diversos patrones de barras oscuras y espacios de luz intermedios. Existen muchos tipos de códigos de barras y no todos son símbolos. Sus partes se describen en la siguiente figura.
22
Figura 1. Partes del código de barras2 .
• Zona de Silencio: (Quietzone). Corresponde a un área en blanco prudencial que le permite al lector de código ubicar un punto inicial desde el cual pueda realizar las mediciones. Se encuentra en los dos extremos debido a que la lectura se puede realizar de izquierda a derecha o viceversa.
• Carácter Inicio: Con la finalidad de que los códigos se puedan leer en cualquier dirección, los caracteres iniciales y finales indican al escáner dónde comienza el mensaje. Es habitual que el carácter que se encuentra a la izquierda o en la parte superior del símbolo sea el inicial, y aquel que se encuentra a la derecha o en la parte inferior corresponda al final.
• Caracteres de datos: Estos constituyen el mensaje real dentro del código y pueden estar conformados por letras del alfabeto, números, símbolos o una combinación de los tres.
23 4.1.3.2 Tipos de códigos de barras
Figura 2. Code 1282
Esta simbología es un código de barras muy compacto para toda aplicación alfa numérica. El conjunto de caracteres ASCII completo (128 caracteres) puede ser codificado en esta simbología sin duplicar caracteres. Si el código de barras tiene 4 o más números consecutivos los números están codificados en modo doble densidad donde dos caracteres están codificados en una sola posición.
Figura 3. Code 392
El code 39 es el código de barras de uso más común para aplicaciones regulares. Es popular debido a que puede contener texto y números (A-Z, 0-9 +,-) y puede ser leído por casi cualquier lector de código de barras en su propia configuración y es uno de los primeros en ser implementados dentro de los más modernos. Es un código de barras de ancho variable y puede tolerar cualquier número de caracteres que el lector pueda barrer.
24
Es un código de barras exclusivamente numérico cuya figura es ligeramente más larga que el código de barras UPC-A cuando se codifica con 10 dígitos. Esta simbología tiene la flexibilidad para codificar cualquier número par de dígitos. Si el número es impar se coloca un cero al principio. Este código es un excelente candidato para aplicaciones exclusivamente numéricas y es la mejor simbología para lectores de montaje fijo.
Figura 5. Código EAN2
Es un sistema de códigos de barras adoptado por más de 100 países. El más usual es el EAN13 como el presentado en la Figura 5. El primer digito siempre se sitúa afuera más otros once dígitos. El tren de números es completado con un dígito de control que se calcula realizando la siguiente operación para el código 123456789722:
• Se invierte el orden del número de entrada así: 227987654321 • Se suman los números en posición impar: 2+7+8+6+4+2 = 29 • Se multiplica por tres el resultado: 29*3 = 87
• Suma de las posiciones pares: 2+9+7+5+3+1 = 27 • Suma total 87+27 = 114
• Decena inmediatamente superior: 120 • Digito de control: 120-114 = 6
25
Es la simbología más usada en el comercio minorista de EEUU para codificación exclusiva de números con una longitud de 12 dígitos. El primer número es llamado “numero de sistema” que va del 1 al 7 indicando un tamaño y peso determinado. Los dígitos del segundo al sexto representan el número del fabricante que debe ser único y que es asignado por un organismo de control. Los dígitos del séptimo al onceavo corresponden al código que el fabricante asigna a cada producto mientras que el doceavo dígito realiza la función de código de control.
Figura 7. Código QR2
El código QR es un sistema para almacenar información en una matriz de puntos viéndose como un código de barras bidimensional creado por la compañía Denso Wave en 1994 y se caracteriza por tener tres cuadrados que permiten detectar la posición del código al lector. En la actualidad este tipo de código es muy difundido para almacenar URLs para buscar productos por internet ya que muchos dispositivos móviles ahora tienen la capacidad de leer este tipo de simbología.
26
Es un sistema industrial de codificación bidimensional que permite la generación de un gran volumen de información en un formato muy reducido, con una alta fiabilidad de lectura gracias a sus sistemas de información redundante y corrección de errores que permiten una lectura con hasta un 30% de daño.
Figura 9. Código PostNet2
Este tipo de simbología está reservado a la industria postal usando este tipo de código de barras en los sobres de mensajería. El uso de este código acelera la gestión de correos logrando ahorros de tiempo por clasificación automática. PostNet es creado en 1980 implantándose en el Servicio Postal de los Estados Unidos.
Figura 10. CódigoPDF4172
4.1.4 Fundamentos del Escaneado.
existen dispositivos encargados de hacer la lectura de estas s cuales son llamados escáner de código de barras
realiza la lectura y emite la interpretación del código que representan la consecución de líneas y espacios de la imagen.
básicamente de un láser
lectura del láser y la interfaz de comunicación entre el dispositivo y un computador, ya sea por intermedio de un cable, bluetooth o Wifi.
4.1.4.1 Procedimiento de lectura
dispositivo denominado “escáner” proyecta una luz sobre un símbolo de código de barras y la obtención de la información proveniente del código de barras se realiza al capturar la luz que es reflejada de las ár
barras. Internamente existe una conversión de una señal visual análoga a una señal digital haciendo un proceso de decodificación de la información representada en el código de barras. (Muller 2004)
El láser del escáner comienza a leer el código de barras en un espacio blanco que es una zona fija antes de la primera barra y continúa pasando hasta la última línea, para finalizar en el espacio blanco que sigue a ésta. Debido a que el código no se puede leer si se pasa el escáner fuera de la zona del símbolo, las alturas de las barras se eligen de manera tal
área del código de barras. Mientras más larga sea la información a codificar, más largo será el código de barra
2Wikipedia. Escáner de Código de Barras. Consultado en
http://es.wikipedia.org/wiki/Esc%C3%A1ner_de_c%C3%B3digo_de_barras
27
4.1.4 Fundamentos del Escaneado. Para hacer uso de los códigos de barras existen dispositivos encargados de hacer la lectura de estas s
cuales son llamados escáner de código de barras que por medio de un lá realiza la lectura y emite la interpretación del código que representan la consecución de líneas y espacios de la imagen. Un escáner se compone láser, un decodificador que realiza la interpretación de la y la interfaz de comunicación entre el dispositivo y un computador, ya sea por intermedio de un cable, bluetooth o Wifi.
.4.1 Procedimiento de lectura. La lectura se produce en el instante en que un dispositivo denominado “escáner” proyecta una luz sobre un símbolo de código de barras y la obtención de la información proveniente del código de barras se realiza al capturar la luz que es reflejada de las áreas oscuras y claras del símbolo de barras. Internamente existe una conversión de una señal visual análoga a una haciendo un proceso de decodificación de la información representada en el código de barras. (Muller 2004) [3]
Figura 11. Escaneado del Código.
del escáner comienza a leer el código de barras en un espacio blanco que es una zona fija antes de la primera barra y continúa pasando hasta la última línea, para finalizar en el espacio blanco que sigue a ésta. Debido a que el código se pasa el escáner fuera de la zona del símbolo, las alturas de las barras se eligen de manera tal que la zona de lectura se mantenga dentro del área del código de barras. Mientras más larga sea la información a codificar, más largo será el código de barras necesario.2
Wikipedia. Escáner de Código de Barras. Consultado en
http://es.wikipedia.org/wiki/Esc%C3%A1ner_de_c%C3%B3digo_de_barras
hacer uso de los códigos de barras existen dispositivos encargados de hacer la lectura de estas simbologías los por medio de un láser realiza la lectura y emite la interpretación del código que representan la Un escáner se compone , un decodificador que realiza la interpretación de la y la interfaz de comunicación entre el dispositivo y un computador,
La lectura se produce en el instante en que un dispositivo denominado “escáner” proyecta una luz sobre un símbolo de código de barras y la obtención de la información proveniente del código de barras se realiza eas oscuras y claras del símbolo de barras. Internamente existe una conversión de una señal visual análoga a una haciendo un proceso de decodificación de la información
28
4.1.4.2 Tecnologías de lecturas. Actualmente se distinguen las siguientes tecnologías de lectura de código de barras:
Figura 12. Lápiz Óptico
Se trata de un periférico parecido a un lápiz normal que se utiliza sobre una pantalla o una superficie plana. Está conectado a un cordón eléctrico y requiere de un software especial para su funcionamiento. El lápiz contiene sensores luminosos y envía una señal al computador cada vez que registra una luz, por ejemplo cuando los elementos negros que se encuentran debajo de la punta del lápiz son detectados e interpretados como una señal eléctrica. Su desventaja radica en que debe ser deslizado a lo ancho del código y el envío de una señal digital por cada barra detectada se hará a la misma frecuencia y velocidad con que se deslice el lápiz por la superficie y depende de la calidad de la impresión del código de barras.
Figura 13. Escáner CCD
Escáner CCD (Changed Coupled Device)3
29
Los escáneres CCD tienen una cabeza lectora del mismo ancho que el código de barras aproximadamente de 2 a 4 pulgadas. El usuario coloca la cabeza del lector en el código de barras y una serie de Leds barre el código de barras y lo lee. Puede trabajar con casi todos los códigos de barras de baja calidad y requiere una superficie relativamente plana. Este escáner debe estar a menos de 1 centímetro de distancia para leer el código. La superficie puede estar ligeramente curva en la dirección de las barras.
Figura 14.Escáner de Pistola
Escáner de Pistola4
Este dispositivo realiza un barrido mediante una luz láser y genera una señal similar a la del lápiz óptico pero a mayor frecuencia. Esta señal es conocida como HHLC (Hand Held Laser Combatible), no requiere decodificador de teclado y puede leer a distancia de 5 a 30 centímetros. Puede tener inconvenientes de lectura cuando hay demasiada luz ambiental.
30
Figura 15. Laser Omnidireccional
Escáner Omnidireccional5
Este tipo de lectores funciona enviando un patrón de rayos laser que permite leer un símbolo de código de barras sin importar su orientación. Tiene la ventaja de ofrecer un índice de FRR (False Rate Rejection) muy cercano al 100% gracias a su precisión. Como su característica principal es que se encuentran fijos en un lugar los códigos de barras son llevados hacia ellos. Son ampliamente usados en las cajas registradoras de supermercado o ensamblados en las bandas transportadoras donde leen las cajas o paquetes cuando estos se mueven en la línea. También usados en las líneas aéreas para procesar equipaje.
Figura 16. Escáner de Ranura
Escáner de Ranura6
31
Los escáneres de Ranura son implementados para control de tiempo y relojes chequeadores de trabajo, seguridad y otros sistemas. Tienen una ranura por la cual se pasan las tarjetas con código de barra al igual de cómo lo haría un lector de bandas magnéticas que usan las tarjetas de crédito.
4.2 ESTADO DEL ARTE
Los sistemas de control de inventarios tienen un antecedente íntimamente relacionado con el concepto de la administración y surge como una necesidad específica de control. La teoría de inventarios está orientada a construir la metodología adecuada para procurar una mejor organización de los elementos que serán objeto de ordenamiento, ya sean materias primas, productos en proceso, suministros que complementan la operación de una empresa o sus productos terminados.
En la actualidad se puede disponer de infinidad de soluciones de software orientadas a los sistemas de inventarios que se diferencian unos de otros, ya sea por el esquema de arquitectura que la solución plantea o el conjunto de funcionalidades que la herramienta propone. Luego de haber estudiado varias opciones se puede enmarcar que existe una gama extensa de propuestas enfocadas a brindar soluciones al tema de la organización de los productos dentro de una empresa pero sobretodo orientado para las que tienen una razón social comercial en su mayoría. Este direccionamiento por supuesto que es totalmente válido ya que como parte de la optimización de recursos y el uso adecuado de los productos de una empresa va enlazada su organización, conocimiento de lo que se tiene y la concientización del diferencial costo/ beneficio que determina el nivel de productividad que se está generando. Por eso fue común encontrar el control de inventario como un módulo que complementa una agrupación de servicios y funciones que cubren integralmente las necesidades de un negocio o una empresa a mayor escala junto con soluciones orientadas a compras, facturación, nómina y contabilidad en general. Las siguientes son algunas de las herramientas vigentes y que se diferencian básicamente en el esquema de software siendo unas totalmente web mientras que otras manejan un entorno de instalación local. 6 Escáner de Ranura Marson MT-412. Consultado en: http://spanish.alibaba.com/product-
32
4.2.1 Software Mónica7. Es un paquete integral que presenta soluciones orientadas a contabilidad que incluye módulos de facturación, cuentas por cobrar, cuentas por pagar y trae un módulo específico para control de inventario. Incluye además muchas herramientas que facilitan los procedimientos contables como conversión de moneda, generación de facturas o cálculo de comisión para vendedores y clasificaciones especiales para rotular productos (físicos, servicios, ocasionales).
Características.
• Diseñado por Technotel, una empresa con una trayectoria de más de 22 años originaria de Miami (Florida).
• Software completamente en español.
• Aplicativo para funcionar localmente en un computador convencional. • Funciona sobre sistemas Windows.
• La persistencia de datos esta soportada en Microsoft SQL Express 2008. • Sus funcionalidades están orientadas a empresas cuyo núcleo de negocio
sea la comercialización de productos.
• Su costo redondea los $290.000 pesos colombianos.
Figura 17. Pantalla de Inventarios de Software Mónica
Fuente: http://www.technotel.com/monica-requerimientos.html#4
33
4.2.2 TPV Comercios8. Una completa herramienta para administración de negocios con módulos especializados en gestionar productos desde un enfoque comercial y administrativo, manejando por separado la gestión back-office (administración) y front-office (ventas).
Características:
• Desarrollado por Atrisoft con trayectoria de 10 años en el mercado.
• Aplicaciones soportadas con certificaciones Microsoft y Partner de Microsoft para Sistemas Embebidos.
• Permite clasificar los productos por categorías o familias.
• Puede definir diferentes políticas de precios de acuerdo a los clientes, temporadas u horarios de trabajo.
• Permite la consulta e impresión de etiquetas definiendo formatos personalizados.
• Contiene un sistema gestión de tickets orientado al empleado que toma el pedido permitiendo la política de comisiones por venta.
• Realiza gestión de cajas llevando de forma automática los movimientos de dinero y pudiendo realizar históricos de cierres de caja.
• Permite realizar gestión de relación con proveedores.
• Permite usar múltiples puntos de venta teniendo terminales independientes con una base de consulta centralizada para evitar duplicidad.
• Su costo oscila los $93.000 pesos colombianos.
34
Figura 18. Módulo de Inventarios. Software TPV Comercios
Fuente: http://www.atrisoft.com/Product/Details/300271857
4.2.3 EcountERP9. Un sistema basado en la web presentado como una herramienta personalizable para pymes cuyo acceso se realiza a través de internet gracias a que cuenta con una arquitectura basada en la nube (cloud computing) que permite la facilidad de acceder mediante dispositivos móviles. Presenta todo
35
un paquete modular para contabilidad, inventario, producción, ventas compras y comercio. Aunque la empresa que lo desarrolla es oriental, se preocupa por adaptar sus preferencias a los estándares latinoamericanos y normatividades vigentes.
Características:
• Acceso mediante la nube. • Registro ilimitado de usuarios. • Certificación en ISO 27001.
• Ofrece un sistema integrado de soluciones (incluyendo inventario) • Actualizaciones gratuitas.
36
Figura 19. Vista de Ecount Software
37 4.3 MARCO CONCEPTUAL
Lo que se describe a continuación corresponde a la explicación procedimental que se pretende realizar en la etapa de desarrollo del software para Cyza Outsourcing S.A incluyendo la concepción lógica de los componentes que harán parte de la solución planteada. Dicha explicación incluye herramientas de software, componentes que enriquecen la interfaz gráfica del software y conceptos que Cyza Outsourcing aplica para sus proyectos y que como principales interesados en la solución de software desean que permanezcan presentes en esta propuesta para garantizar identidad corporativa.
El Sistema de Gestión de Inventarios para Cyza Outsourcing está orientado a desarrollarse bajo el modelo arquitectónico que propone Microsoft.Net. Un Framework que expande su funcionalidad a las facilidades que prestan las aplicaciones basadas en la Web y que se soportan en estándares abiertos como XML (Extensible Markup Language) estableciendo una intercomunicación entre sistemas indiferentemente de la plataforma en que fueron desarrollados, enriqueciendo su funcionalidad y permitiendo una mayor facilidad de acceso mediante cualquier dispositivo con conectividad a internet. (Ceballos p.5)[4]
4.3.1 Arquitectura Multicapa10 Para obtener una mayor concepción lógica de la aplicación web se pretende implementar una técnica orientada a aplicaciones empresariales que permite una fácil administración y construcción. La programación Multicapa propone dividir los componentes de la aplicación en capas definidas con funciones específicas como lo son:
• Capa de presentación • Capa de negocio
• Capa de acceso a datos
La facilidad que ofrece implementar éste esquema es permitir la manipulación independiente de cada capa pero sin olvidar que cada una de ellas debe interactuar con su similar. Si se requiere incluir una nueva funcionalidad o un nuevo componente que involucre a una capa específica, se puede realizar tal cambio sin que esto afecte las demás capas conservando su independencia.
38
La manera en que cada capa se comunica con la otra será a través de APIs (Interfaz de Programación de Aplicaciones) que son generadas por la herramienta RAD integrada en el entorno de trabajo de Visual Studio. Cada API encierra en una librería el conjunto de funciones y procedimientos propios de su capa para ser utilizados como una abstracción de ella. Inclusive los componentes de terceros se manifiestan en el aplicativo mediante funcionalidades encerradas en APIs que el proveedor entrega para adaptar a las aplicaciones.
Figura 20. Esquema de Componentes de la aplicación
Fuente: Diseño personal11
4.3.1.1 Capa de presentación. Dentro de ésta capa se encuentran todos los componentes de interfaz gráfica de cara al usuario y que serán la herramienta de interacción con el aplicativo. Es de vital importancia que se realice en vista de diseño una presentación clara de la información. Particularmente cada frontal debe
39
cumplir con un esquema acorde con la empresa generando identidad del aplicativo dentro de la compañía.
La aplicación contará con una página maestra que será la que contenga el esquema de diseño principal de la aplicación. Este formulario web tiene la particularidad de que se carga una sola vez al ejecutar la aplicación lo que permite instanciar allí únicamente componentes o variables de aplicación que serán llamados una única vez durante todo el ciclo de vida del aplicativo.
Figura 21.Esquema lógico de la capa de presentación
Fuente: Diseño personal12
Adicionalmente existirán los formularios web llamados ContentPage que serán encapsulados por la página maestra. Estas páginas de contenido serán las que tengan toda la distribución de controles aspx y ajax, las vistas de formatos, tablas, listas desplegables, y la manipulación general de los datos a través de estos controles que logren la interacción con el usuario. (Johnson p.584)[5]
40
Cada formulario web cuenta con un componente que administra la vista de diseño con su correspondiente generación de código html que hace posible la renderización de todos los controles para hacerlos visibles en un browser. Adicional a esto se enlaza un archivo con extensión .cs (C#) o .vb (VisualBasic) que se denomina CodeBehind y que tiene como función encapsular allí todo el componente lógico detrás de su diseño como funciones y control de eventos sobre los componentes visuales. (Johnson p.20)[5]
4.3.1.2 Capa de negocio. En ésta capa residen los criterios de validación que están sujetos a las reglas de negocio definidas en un principio para los datos que son transportados desde y hacia la capa de presentación, así como los datos que están próximos a ser almacenados en el motor de base de datos mediante la comunicación con la capa de datos.
41
Figura 22. Esquema lógico de la capa de negocio
Diseño personal13
Aunque los controles contenidos en los formularios web de la capa de presentación incluyen componentes que ayudan a validar los datos mediante comprobaciones como su longitud o su tipo, la gran mayoría de funciones de validación sobre los datos provenientes de los frontales web deben recaer en la capa de negocio. Es importante que se valide desde aquí la compatibilidad o nulidad de un dato específico si la capa de negocio comprueba que este tipo de dato será aceptado por la base de datos. En resumen la capa de negocio debe garantizar que todo dato proveniente de la capa de presentación cumple integralmente con la definición de datos que son esperados en los campos de cada tabla de la base de datos.
Adicional a lo descrito anteriormente esta capa permite agrupar lógicamente bibliotecas complementarias que eventualmente tendrían la función de presentar métodos utilitarios que podrán ser usados transversalmente en el aplicativo pudiéndose pensar en un API que se encargue del cifrado de datos, o transformaciones específicas que no pudiera contener las bibliotecas que por defecto ofrece Visual Studio. De esta manera podrían ser llamados desde cualquiera de las capas que conforman la aplicación.
42
4.3.1.3 Capa de acceso a datos Desde esta capa se agrupan todos los métodos que serán de ayuda para establecer la comunicación con el motor de base de datos. La capa de acceso a datos administrará todo el proceso de acceso al repositorio de almacenamiento de datos como la apertura de conexiones, las cadenas de conexión a SQL, las consultas a la base de datos las cuales se realizarán por intermedio de procedimientos almacenados, esto con el fin de evitar presentar consultas transact-sql visibles desde aplicación y evitando así ataques por inyección de código.
Como existen procesos recurrentes sobre operaciones comunes de consulta y escritura en la base de datos, la capa de acceso a datos incluye un componente de terceros llamado Enterprise Library14 que permite encapsular implícitamente
rutinas que se encargan de aperturas, cierres y liberación de conexiones cada vez que se requiere tener acceso a la base de datos. Adicional a esto es importante incluir un objeto de acceso denominado ADO.Net (Access Data Object) presente en Visual Studio (para otros motores existen elementos como OracleClient para Oracle) que será el objeto representante que mediará entre la aplicación y la instancia de base de datos. (Johnson, 2007)[5].
Figura 23. Esquema lógico de la capa de acceso a datos
Fuente: Diseño personal15
14 MSDN-Microsoft. Enterprise Library. Disponible en: http://msdn.microsoft.com/en-us/library/ff632023.aspx
43
44
4.3.2 Arquitectura Física La distribución física requerida para poner en marcha el aplicativo de gestión de inventarios sugiere la disposición de los recursos presentados en el siguiente esquema físico y de red.
Figura 24. Diagrama físico y de red de la aplicación
Fuente: Diseño personal16
Al interior de Cyza Outsourcing existe una granja de servidores con roles específicos. Los servidores dispuestos son:
• Servidor Web (Dominio) • Servidor de Aplicaciones • Servidor de Directorio Activo • Servidor de Base de Datos
45
Actualmente la empresa ya cuenta con esta estructura de red de servidores y cumplen las funciones que posteriormente serán explicadas.
El servidor web también realiza funciones de servidor de dominio y es quien resuelve la dirección www.cyza.com.co de la compañía. Este servidor está de cara a internet tras un Firewall que restringe las peticiones no deseadas. Internamente se comunica con el servidor de aplicaciones donde residirá la aplicación web. El servidor de aplicaciones es un servidor virtualizado que ejecuta el Administrador de Aplicaciones bajo IIS (Internet Information Services) que será el contenedor del pool de aplicaciones donde se encontrará el sistema de gestión de inventarios. El acceso al aplicativo de gestión de inventarios tendrá un componente de autenticación contra Directorio Activo consultando la existencia de los usuarios al Servidor de Active Directory destinado para esta función. Esta funcionalidad es muy importante de cara a futuras integraciones del aplicativo con otros proyectos de la empresa ya que de esta manera se podrá realizar una construcción integral de aplicaciones centralizadas en un único repositorio de usuarios.
La persistencia de los datos estará a cargo del servidor de bases de datos que se encargará de controlar la instancia de SQL Server que almacenará el catálogo de datos destinada a guardar los registros generados en la aplicación. La ventaja de mantener el repositorio independiente de la aplicación implica que dicha información podrá ser administrada y salvaguardada mediante los procesos habituales de aseguramiento de la información como el copiado, restauración, gestión de backups o tareas programadas que ayudarán a cuidar la integridad de las bases de datos de todos los repositorios de la compañía incluyendo el nuevo.
4.3.3 Herramientas RAD Son recursos de software que tienen como propósito adelantar desarrollos en tiempos muy cortos y que junto con metodologías que comparten esta necesidad de inmediatez permiten cumplir con el objetivo principal: reducción de tiempos. RAD (Rapid Application Development) es un enfoque orientado a objetos integrando métodos de desarrollo y software, se adapta muy bien al proceso de satisfacer más de cerca los requerimientos cambiantes de los negocios. Muy útil además cuando existe una competencia cercana y es necesario ofrecer una solución más rápida que el resto de los rivales donde prima la ley del que “pegue primero”. (Kendall, 1995)
46
Los formularios Web se utilizan para crear aplicaciones en las cuales la interfaz primaria de usuario es un explorador. Entre ellas se incluyen las aplicaciones que se ponen a disposición del público a través de la red. Una característica importante es que no hay costos de distribución, puesto que los usuarios tienen ya instalada la única parte de la aplicación que necesitan: el browser.
Las aplicaciones de formularios Web son por definición independientes de la plataforma; es decir, los usuarios pueden interactuar con la aplicación independientemente del tipo de explorador que tengan, e incluso, del tipo de equipo que utilicen. (Ceballos, 1999)[4].
4.3.5 Visual Studio Visual Studio es un conjunto completo de herramientas de desarrollo para construir aplicaciones Web, servicios Web, aplicaciones Windows o de escritorio y aplicaciones para dispositivos móviles. El entorno de desarrollo integrado que ofrece esta plataforma como todas sus herramientas y con la biblioteca de clases .NET Framework, es compartido en su totalidad por Visual Basic, Visual C++, y Visual C#, permitiendo así crear con facilidad soluciones en las que intervengan varios lenguajes y en las que el diseño se realiza separadamente respecto a la programación.
4.3.6 Servidor de Aplicaciones. Es un software que proporciona aplicaciones a los equipos o dispositivos cliente, por lo general a través de internet y utilizando el protocolo http. Los servidores de aplicaciones se distinguen de los servidores web por el uso extensivo de contenido dinámico y por su frecuente integración con base de datos.
Un servidor de aplicaciones es un producto basado en un componente que se encuentra en el plano intermedio de la arquitectura central de un servidor. Proporciona servicios “middleware” es decir, trabaja con un intermediario para la seguridad y el mantenimiento además de proveer el servicio a datos.
4.3.7 Controles Propietarios Paquete realizado por otros proveedores de software que distribuyen versiones personalizadas y mejoradas de los controles ASP tradicionales existentes dentro de VisualStudio.NET.
47
48
5. METODOLOGÍA
5.1 PROGRAMACIÓN EXTREMA
La Programación Extrema (XP) forma parte del movimiento de desarrollo ágil de software que se basa en la adaptabilidad de cualquier cambio como medio para aumentar las posibilidades de éxito de un proyecto y que tiene como premisas los siguientes aspectos (Beck, 1999)[8]:
• Los individuos y sus interacciones son más importantes que los procesos y las herramientas.
• El software que funciona es más importante que la documentación exhaustiva.
• La colaboración con el cliente en lugar de la negociación de contratos. • La buena disposición ante el cambio en lugar de seguir un plan cerrado.
La Programación Extrema es un enfoque que ha adoptado prácticas de desarrollo de software ya existentes en otras metodologías de desarrollo y las ha llevado al extremo. Un ejemplo de ello es la retroalimentación que es importante para los programadores, analistas, diseñadores, usuarios y computadores. Así que la programación extrema usa ciclos de retroalimentación cada vez más rápidos e intensos, que proporcionan más información. Este enfoque de programación intenta definir un plan global del sistema, desarrollar y liberar rápidamente el software y posteriormente revisarlo de forma continua para incorporarle características adicionales. (Kendall, 1999)[7].
La implementación de cada uno de los principios y valores que esta metodología sugiere será descrita a continuación queriendo explicarse el cómo será puesto en práctica para obtener los mejores resultados durante todo el desarrollo del proyecto en Cyza Outsourcing S.A.
49
• Comunicación: Los proyectos de los sistemas que requieren una actualización constante y un diseño técnico, son especialmente propensos a errores por falta de comunicación. Si se suman problemas típicos como fechas de entrega ajustadas, uso de jerga especializada y la muy común concepción de que los programadores son poco comunicativos con las personas, entonces hay serias posibilidades de fallar en éste ámbito. Para ello ya se aplica en el área de desarrollo la práctica de reuniones cortas y periódicas de alrededor de 15 minutos para resolver dudas e inquietudes entre los miembros del equipo y el director de desarrollo y para enterarse de los avances del proyecto.
• Simpleza: Es un pensamiento que implica no abrumarse por la aparente complejidad de la tarea. Consiste en comenzar por el elemento más sencillo y a partir de allí construir el requerimiento con sus características adicionales, pero para ello se debe tener claro el enfoque referente a las metas del proyecto.
• Retroalimentación: Ocurre cuando existe un prototipo que es evaluado por los clientes y principales interesados en ese desarrollo. Una retroalimentación crítica viene de los clientes que comparan la meta del plan con el progreso que se ha tenido. De esta manera la retroalimentación ayuda a los programadores a hacer los ajustes necesarios para orientar el software al resultado esperado.
• Valentía: Este valor se rige por un nivel de confianza propio y a su vez existente en el equipo de desarrollo. Es no tener miedo a empezar de nuevo si es necesario, teniendo la perspicacia de reconocer ese momento ayudándose del instinto. Para Kendall (1995)[7]“La valentía es un valor de alto riesgo y de alta recompensa que anima a la experimentación que el equipo puede tomar de una forma más rápida e innovadora para lograr su meta” (Kendall, 1995)[7].
5.1.2 Principios básicos de la Programación Extrema Se trata de doce principios agrupados en cuatro grandes categorías así (Kendall, 1995)[7]:
5.1.2.1 Retroalimentación a escala fina.
50
estas entradas. El área de desarrollo cuenta con la participación de una ingeniera con el rol de “Encargada de Pruebas” (tester) y está en la capacidad de realizar las pruebas unitarias que pretenden medir el funcionamiento puntual de una parte de la aplicación.
• Proceso de planificación: en esta fase el cliente tendrá que escribir sus necesidades, definiendo las actividades que realizará el sistema. Se creará un documento llamado “Historias del Usuario” (UserStories) que conformarán el “Plan de Liberación”, el cual define los tiempos de entrega de la aplicación para recibir retroalimentación por parte del usuario.
• El cliente en el sitio: tendrá la potestad de determinar los requerimientos, definir las funcionalidades, señalar las prioridades y responder a las preguntas de los programadores. Esta fuerte interacción con el programador disminuye el tiempo de comunicación y la cantidad de documentación, junto con los altos costes que su creación generan. Para Cyza el principal cliente será el representante del área que hará un fuerte uso del sistema de control de inventarios que para este caso se trata del área de infraestructura quienes son los que actualmente llevan a cabo el levantamiento de inventario sobre los equipos de la compañía.
• Programación en parejas: Este principio requiere que los programadores que sigan esta metodología escriban su código en parejas, compartiendo una sola máquina para promover el trabajo en equipo y el incremento de la calidad en el código.
51
actuar como colaborador en este aspecto será el “tester” a quien podrá indicársele el comportamiento de la funcionalidad que está a punto de probar. Como el área de desarrollo de Cyza es pequeño es común que los compañeros de codificación conozcan funcionalidades, estándares de codificación en común e inclusive se relaten experiencias de codificado que otro miembro del grupo haya experimentado en sus proyectos para ser retroalimentado al grupo.
5.1.2.2 Proceso continuo en lugar de por lotes
• Integración continua: permite al equipo hacer un rápido progreso implementando las nuevas características del software. En lugar de crear “builds” (versiones) estables de acuerdo a un cronograma establecido, los equipos de programadores XP pueden reunir su código y reconstruir el sistema varias veces al día. El entorno de trabajo de VisualStudio.Net facilita la realización de este ejercicio ya que su Framework incluye un Servidor de Aplicaciones virtual que permite compilar y ejecutar el aplicativo en tiempo real para lograr visualizar los avances obtenidos.
• Refactorización: permite mejorar el diseño del sistema a través de todo el proceso de desarrollo. Los programadores evalúan continuamente el diseño y re codifican lo necesario. La finalidad es mantener un sistema enfocado a proveer el valor de negocio mediante la minimización del código duplicado e ineficiente.
52 5.1.2.3 Entendimiento Compartido
• Diseño simple: se basa en la filosofía de que el mayor valor de los negocios es entregado por el programa más sencillo que cumpla los requerimientos. Simple Design se enfoca en proporcionar un sistema que cubra las necesidades inmediatas del cliente, ni más ni menos.
• Metáfora: es desarrollada por los programadores al inicio del proyecto, define una historia de cómo funciona el sistema completo. XP estimula historias que son breves descripciones de un trabajo de un sistema.
• Propiedad colectiva del código: un código con propiedad compartida. Nadie es el propietario de nada, todos son el propietario de todo. Este método evita hacer lo que hacen los métodos tradicionales en los que un simple programador posee un conjunto de código y solo él conoce su funcionamiento.
• Estándar de codificación: define la propiedad del código compartido así como las reglas para escribir y documentar el código y la comunicación entre diferentes piezas del mismo, desarrolladas por diferentes equipos. Los programadores las han de seguir de tal manera que el código en el sistema se vea como si hubiera estado escrito por una sola persona.
5.1.2.4 Bienestar del programador
53
5.1.3 Roles dentro de la programación extrema
5.1.3.1 El cliente Es el responsable de conducir el proyecto. Toma decisiones de negocio y debe entender los cambios del mismo a lo largo del tiempo: identifica si una historia tiene el mismo valor ahora que cuando se identificó.
Derechos
• Cambiar el alcance del proyecto para hacer frente a los cambios en la planificación.
• Determinar qué funcionalidades serán las siguientes en implementarse. • Medir el progreso del proyecto en cualquier momento, lanzando las pruebas
de aceptación.
• Detener el proyecto en cualquier momento sin perder la inversión realizada, manteniendo en producción un producto estable y continuar planificando otras funcionalidades más importantes.
Responsabilidades
• Confiar en las decisiones técnicas de los desarrolladores. • Analizar los riesgos correctamente.
• Seleccionar las historias que aportan más valor para cada iteración.
• Definir las historias de usuario de forma precisa, permitiendo a los desarrolladores realizar estimaciones precisas.
• Participar en el equipo ofreciendo directrices y feedback tan pronto y preciso como sea posible.
5.1.3.2 El Programador Una vez que se han comprendido las historias de usuario, la metodología XP adjudica a los programadores la responsabilidad de tomar decisiones técnicas. Los desarrolladores estiman el tiempo que les va a tomar cada historia y transforman las historias de usuario en código.
Derechos
• Estimación de su propio trabajo, teniendo autoridad para tomar decisiones técnicas.
• Delimitar el trabajo responsabilizándose de aquellas tareas que van a ser capaces de llevar a cabo.