Download Universidad Tecnológica de Querétaro
Document related concepts
no text concepts found
Transcript
Universidad Tecnológica de Querétaro Firmado digitalmente por Universidad Tecnológica de Querétaro Nombre de reconocimiento (DN): cn=Universidad Tecnológica de Querétaro, o=Universidad Tecnológica de Querétaro, ou, [email protected], c=MX Fecha: 2013.10.09 13:13:11 -05'00' UNIVERSIDAD TECNOLÓGICA DE QUERÉTARO Nombre del proyecto “NOVEMQoD” Empresa: NOVEM CAR INTERIOR DESIGN MÉXICO S.A. de C.V. Memoria que como parte de los requisitos para obtener el título de: TÉCNICO SUPERIOR UNIVERSITARIO EN TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN ÁREA SISTEMAS INFORMÁTICOS Presenta: DUARTE CRUZ ALEJANDRO ABRAHAM. Asesor de la UTEQ Asesor de la organización Ing. Elizabeth Medina Sánchez Ing. Miriam Cecilia Hernández Ordaz Santiago de Querétaro, Qro., Octubre del 2013. Resumen. Los procesos de producción, mantienen documentos como herramientas adicionales que proveen al personal involucrado, de la información oficial de la empresa, para el desempeño de sus labores ordinarias. Estos documentos son sujetos a modificaciones de acuerdo a diversos factores, tales como las necesidades del cliente de la empresa o de acuerdo a las normas de calidad aplicadas para determinado producto. Por lo que no existe un documento fijo para un proceso específico. Sin embargo todo documento generado, debe ser aprobado por el proceso de calidad. Por lo que el objetivo de este proyecto es el desarrollo y la implementación de una herramienta informática para el departamento de calidad; que permita el control sobre las diferentes clases de documentos existentes y utilizados dentro de los procesos de producción de la empresa. El sistema ofrece servicios de control de cambios, mediante la gestión de usuarios, dentro de grupos o roles bien definidos, con sus diferentes alcances dentro del sistema para cada uno de ellos. Los alcances permiten el control sobre las actividades realizadas en los documentos generados y/o previamente almacenados; asimismo ofrecen al coordinador del proceso de calidad, un absoluto control sobre la gestión de solicitudes de cambios sobre el documento utilizado en la fecha dentro de su proceso pertinente, mediante la recepción de notificaciones de solicitudes de cambios, hechas por el dueño de un documento explícito. El dueño se define a cualquier usuario del sistema que generare y/o modifique un documento existente, en base a un formato ya definido. Dentro de las funciones de esta gestión de solicitudes, el sistema le permite al coordinador de calidad, la aprobación o rechazo del documento propuesto para ser implementado en la línea de producción referente al proceso involucrado. Asimismo consultar cuales son las versiones de documentos actuales y el historial de los mismos que han sido elaborados durante un lapso de tiempo definido. También le permite notificar de la resolución final sobre la solicitud, mediante correo electrónico. Todo esto para incrementar el control de versiones y obtener un análisis preciso de las metodologías utilizadas en producción. 2 3 Dedicatorias. A mis padres, hermanos, amigos y al personal docente que labora en la Universidad Tecnológica de Querétaro, sin ellos, nada de esto sería posible y en especial a todas las personas que día a día laboran en la Universidad, destacando la importancia de su trabajo, por muy sencillo que parezca. A través de ellos aprendí a observar los pequeños detalles de gente leal, honesta, responsable y dedicada a su trabajo. Gracias a todos y cada uno de ustedes, por su humildad, sencillez, tenacidad y sobre todo por su valor único como seres humanos. Y es que en realidad, el aprendizaje ha comenzado a partir de ahora, la formación humana, desde siempre, el valor y trabajo digno es parte del día a día que he visto reflejado aquí en la UTEQ. 4 Agradecimientos. A todos los Dioses habidos y por haber por darme una nueva oportunidad día a día. A mi señora Madre por su amor incondicional y su naturaleza totalmente femenina. A mi señor padre, mi mejor compañero de equipo. Jefe: juntos lo hicimos posible. A todo el personal de la Universidad Tecnológica de Querétaro. ¡Gracias! 5 ÍNDICE 1. RESUMEN .......................................................................................................................2 2. DESCRIPTION... ..............................................................................................................3 3. DEDICATORIAS .............................................................................................. ………….4 4. AGRADECIMIENTOS ......................................................................................................5 5. ÍNDICE .............................................................................................................................6 I. INTRODUCCIÓN ..............................................................................................................7 II.ANTECEDENTES .............................................................................................................9 III. JUSTIFICACION ...........................................................................................................10 IV. OBJETIVOS..................................................................................................................11 V. ALCANCE ......................................................................................................................12 VI. ANÁLISIS DE RIESGOS...............................................................................................14 VII. FUNDAMENTACION TEÓRICA ..................................................................................16 VIII. PLAN DE ACTIVIDADES ............................................................................................18 IX. RECURSOS MATERIALES Y HUMANOS ....................................................................19 X. DESARROLLO DEL PROYECTO..................................................................................20 XI. RESULTADOS OBTENIDOS ........................................................................................29 XII. CONCLUSIONES Y RECOMENDACIONES ...............................................................30 XIII. ANEXOS XIV. BIBLIOGRAFÍA 6 I. INTRODUCCIÓN. Dentro de los procesos industriales o de cualquier otro ramo que actualmente son implementados por empresas nacionales o extranjeras; existe la necesidad de adquirir el control de todo el conjunto de elementos que desempeñan un papel fundamental dentro del proceso de producción, con la finalidad de administrar y optimizar el consumo de recursos necesarios inherentes al objetivo de la empresa. Además se requiere mantener evidencia objetiva de las distintas metodologías que se han implementado a lo largo del ciclo de vida empresarial y en concreto, el ciclo de vida de determinado producto manufacturado en la misma. Estos requerimientos facultan al personal involucrado de información veraz, oportuna y objetiva sobre sus metodologías y muestran claramente el resultado de cada una de ellas, pudiendo tener un eficiente flujo de información entre los departamentos y/o procesos administrativos y los procesos de producción, quienes finalmente son los productores de los bienes o productos. El adecuado control de estos elementos, definen dos conceptos fundamentales en la empresa: por un lado incrementan las posibilidades de modificar los procesos de producción con base en los elementos que se reflejan en el historial de metodologías implementadas y por otro lado, permiten la apertura de todo un abanico de posibilidades concretas basadas en los aspectos ya definidos. Por otro lado, no se puede omitir una de las necesidades frecuentes dentro del ramo industrial. La vital importancia de contar con una serie de requerimientos que en su conjunto son evaluados para ser proveedores certificados, de los bienes o insumos que producen. Estas certificaciones están fundamentadas en una serie de requerimientos que muchas veces producen áreas de oportunidad para la mejora en aspectos administrativos, con el fin de garantizar que el producto que ahí se desarrolla, reúne los parámetros requeridos por determinada ISO. Desde el momento en el que se adquiere un completo control sobre los elementos informativos, se incrementa la claridad de la información de todo el personal 7 involucrado, de tal manera que aunque existan modificaciones a los lineamientos establecidos para la producción, siempre se pueda tener la seguridad que existe una eficaz sincronización entre lo que “se debería hacer” y lo que realmente se hace en el nivel de producción. 8 II. ANTECEDENTES Novem Car Interior Design México, es una empresa alemana que abre sus líneas de producción en esta ciudad de Querétaro, en el año 2012. Por lo que aún tiene muchos procesos y lineamientos en estado de desarrollo constante. Cada uno de ellos, ya organizados eficientemente mediante el establecimiento de prioridades, en torno a la mejora constante del personal que ahí labora, con objeto de alcanzar y medir los altos estándares solicitados por sus estrictos clientes, tales como BMW, AUDI, GM. Para sus modelos automotrices de lujo. Uno de esos procesos que tienen alta prioridad es el de alcanzar la certificación en la ISO/TS 16949:2009, por lo que actualmente se encuentra dentro de este contexto. En el punto que se desarrolla este proyecto, es el elemento concerniente a la necesidad de unificar los distintos procesos de producción mediante los elementos que fungen como elemento dinámico entre los departamentos de calidad, ingeniería, los process experts de cada proceso, y demás departamentos administrativos involucrados, en el desarrollo del producto final. 9 III. JUSTIFICACIÓN. Las certificaciones suelen traer innumerables beneficios, no solo económicos, sino también para conjuntar los diversos aspectos que intervienen en el desarrollo de un producto específico, mediante la estandarización de los procesos involucrados en ello. Esto permite un alcance superior para efectos de control en los procesos, mediante las auditorías establecidas en el tiempo que se dictamine por parte de Novem Car. Sin embargo, uno de los grandes y principales motivos de No Conformidades al momento de ser auditados para alcanzar alguna certificación; es sin duda el control de la documentación para los procesos en producción. Por lo que la implementación del software Alfresco constituye un respaldo robusto para el control de esta documentación, incrementando considerablemente posibilidades de adquirir la certificación y estandarizar los procesos. 10 las IV. OBJETIVOS. Obtener la certificación ISO TS 16949. Reducir las No Conformidades durante las auditorías por parte de terceros, al Departamento de Calidad. Estandarizar la documentación en los procesos de producción mediante el uso de plantillas para generar documentos nuevos o actualizaciones de los mismos. Garantizar la confiabilidad del sistema con la adecuada implementación del servicio HTTP y HTTPS, en un servidor dentro de la intranet corporativa. Garantizar documentos únicos e irrepetibles mediante el control de versiones establecido por la configuración avanzada de la aplicación. Reducir el tiempo invertido en el Control de Documentos, mediante la implementación de una interfaz gráfica de usuario, sencilla e intuitiva. Delimitar las responsabilidades entre el Departamento de Calidad y los expertos de proceso como consecuencia de mantener un registro objetivo de los pormenores durante la evaluación de documentos candidatos a ser Controlados por el Sistema. Garantizar el control del archivo histórico de versiones para consultar y restaurar esas mismas versiones obsoletas en cualquier momento que sea requerido. Coadyuvar a incrementar los altos estándares de calidad requeridos por el cliente. 11 V. ALCANCE. El marco de alcance se delimita desde el punto inicial, basado en el Control de Documentos anterior; implementado mediante hojas de cálculo en Excel y su combinación con las características de Microsoft Sharepoint, en específico con la capacidad de poder abrir documentos en modo de Solo Lectura por aquellos usuarios que no sean Administradores del Sistema de Gestión de Calidad de Novem Car. Dentro de este concepto se toman los aspectos básicos ya descritos para delimitar una área de responsabilidad aplicada directamente a la funcionalidad del Software que se implementa dentro de la empresa. Además todas las características de flujos de trabajo adquieren mucha mayor fuerza, desde el momento de que el sistema implementado sustituye los numerosos correos electrónicos, los cuales eran la base primordial para la comunicación entre los Expertos de Proceso y el Personal del Departamento de Calidad. Asimismo la estructura primaria ha sido rediseñada para proveer todo un conjunto de datos organizados minuciosamente, tomando en cuenta ambos extremos de este flujo de trabajo: Departamento de Calidad y Usuarios de Procesos; garantizando que los documentos previamente desarrollados y aprobados por el Coordinador del Sistema de Gestión de Calidad, sean exactamente los mismos que se implementaron en el software, y además contengan los nuevos diseños que a raíz de este proyecto, se ha tomado la decisión de estandarizarlos, mediante el uso de plantillas completamente actualizadas en estricto apego a los requerimientos de los manuales y guías procedentes de Novem Car Alemania. Todo lo anterior, aplicando las políticas de privacidad para cada uno de los Procesos involucrados en la documentación para la fabricación del Producto Final, mediante la creación de Cuentas de Usuario debidamente validadas para proveer de seguridad dentro de la aplicación que se ejecuta en la intranet corporativa de Novem Car México. 12 Asimismo, con el fin de disminuir los tiempos de aprobación, se contempla la creación de reglas específicas para cada una de las localizaciones de los documentos, tales como la creación de firmas gestionadas por Certificados de Autoridad perfectamente adaptados a las necesidades de Novem Car y con su periodo de caducidad y renovación. Sin dejar de mencionar la conversión automática de formatos de Microsoft Office a documentos con formato PDF, y con el objeto de garantizar la autenticidad del documento, se insertan marcas de agua, y un código cifrado mediante el algoritmo SHA-256, mismo que puede ser consultado por el personal del Departamento, desde el Gerente, hasta los Auditores de Calidad, con el fin de estar en condiciones confiables de poder determinar la posible falsificación y/o alteración de los datos que ya se habían validado. Este mismo código cifrado, provee de identificadores únicos para cada documento, sin importar si se mantiene el mismo nombre durante la transición de las versiones que se generen durante el periodo de validez del documento. Se provee además de una base sólida para garantizar la fiabilidad del sistema y acciones automatizadas para la creación de copias de respaldo en frío; de todos los documentos existentes en el Sistema de Gestión de Calidad y su base de datos, garantizando que, en caso de desastre, se restauren cualquiera de las versiones anteriores de Documentos existentes en el momento de hacer el backup. Finalizando en la entrega del documento debidamente validado y en formato PDF al personal responsable, quedando evidencia totalmente objetiva de esta condición. El proyecto finaliza con el Sistema Alfresco debidamente instalado, configurado y con los documentos almacenados en él; asimismo con la entrega del manual de usuario para administración del sistema y manual de usuario estándar. 13 VI. ANÁLISIS DE RIESGOS. El cambio de formatos durante la migración de los documentos hacia el software. o Se deberán requerir los nuevos formatos y transformar los documentos al nuevo formato. Incompatibilidad con navegadores web con los certificados personalizados generados para la comunicación. o Solicitar al IT Manager, la actualización de Internet Explorer 9.0 a la versión más reciente. Duplicidad de los documentos existentes antes de la implementación. o Filtrar y detectar los documentos duplicados, comenzando de manera ascendente de acuerdo al Mapa de Procesos. Que el usuario no esté familiarizado con el uso de navegadores web y su contenido. o Capacitación en el uso de navegadores web. o Capacitación en el uso de sesiones de usuario. Múltiples capacitaciones en aspectos elementales del uso y medidas de seguridad con aplicaciones web. o Realizar evaluaciones al personal capacitado, para detectar áreas de oportunidad, eficientando el temario de capacitación. 14 Que existan modificaciones a las versiones ya aprobadas por el Departamento de Calidad. o Limitar y registrar los documentos que sean actualizados durante la migración. Que los documentos de algún proyecto específico fallen a raíz de cortes de electricidad, fallos de funcionabilidad en la aplicación, fallos en la seguridad de la aplicación. o Gestionar la adquisición de elementos tales como No-Break para el soporte del sistema con cortes de energía. o Gestionar el uso de medios de almacenamiento del respaldo del sistema. 15 soporte externos para VII. FUNDAMENTACIÓN TEÓRICA. El OpenSource beneficia la colaboración en el desarrollo de Software, haciendo que las aplicaciones sean de óptima calidad. Se demuestra que el modelo de distribución de Software es sustentable, sin forzar el cobro del desarrollo. Es posible trabajar en una empresa con aplicaciones OpenSource. Las pequeñas y medianas empresas al utilizar estas herramientas, evitan la piratería de software. La posibilidad de poder mejorar las aplicaciones sin depender del fabricante está haciendo que los gobiernos de algunas naciones desarrolladas, y en vías de desarrollo apoyen el OpenSource. La licencia de código abierto permite explícitamente: utilizar el programa para cualquier propósito y sin limitaciones, estudiar cómo funciona, redistribuir copias del programa (no se paga por la licencia) y/o Modificarlo. Tomando como referencia estos estatutos declarados en la por OpenSource, se han tomado extensiones de una aplicación existente en el mercado bajo el nombre de Alfresco Community Edition; la cual se encuentra desarrollada en Java Enterprise Edition; con Spring Framework, quien se encarga de implementar el patrón de diseño Modelo Vista Controlador (MVS). Las aplicaciones desarrolladas en Java Enterprise Edition, poseen una arquitectura multicapa, mismas que tienen el objetivo de delimitar las funciones de cada una de ellas, contemplando aspectos de escalabilidad con el fin de estar en facultad de poder realizar modificaciones al sistema desarrollado, directamente sobre una sola capa, sin necesidad de alterar la estructura original del resto de la aplicación. Al menos se deben manejar tres capas, la capa DAO (Data Access Object), la capa de Negocio y la capa de Presentación. Los accesos a la base de datos de la aplicación, se han manejado sobre el paradigma de Aplicaciones Orientadas a Aspectos, con ayuda del framework Hibernate, mismo que implementa las características de la API de persistencia de Java, mediante una variante del lenguaje tradicional SQL; llamado JPQL (Java Persistence Query Language). 16 El cual funciona mediante el uso de Mapeo por medio de anotaciones y ficheros XML dentro de las clases de la capa DAO (Data Access Object), con la implementación de estas anotaciones pertenecientes a la API de Java EE, dentro de una clase, se obtienen clases de tipo Entity, las cuales, necesitan tener atributos encapsulados y métodos simples que no implementen ninguna otra interfaz más que la Serializable, la cual permite la serialización (conversión a binarios) de los datos para poder ser transmitidos mediante la red. A las clases que tienen los atributos descritos anteriormente se les conoce como clases POJO (Plain Old Java Object). Estas clases permiten ser mapeadas mediante una Unidad de Persistencia descrito en un archivo XML dentro de la estructura de un proyecto tradicional Java EE. Esta unidad de persistencia, posee atributos mediante tags, los cuales describen los datos almacenados dentro del contenedor de aplicaciones, en este caso Apache Tomcat, que se utilizarán para gestionar la conexión a bases de datos. Las aplicaciones Enterprise Edition incorporan características basadas en CORBA (Common Object Request Broker Architecture) para poder trabajar con diferentes lenguajes de programación, por lo que la intercomunicación del sistema, no está limitado hacia aplicaciones Java, y además se pueden realizar aplicaciones ejecutándose en Granjas de Servidores, mediante el uso adecuado de CORBA. Otra de las ventajas que se han aprovechado, es la extensión de Java EE para desarrollar Web Services SOAP y RestFul, en el caso concreto de esta aplicación se ha utilizado REST (Representational Estate Transfer Protocol) por las características de diseño de la API de Alfresco, que ya expone estos SOAP-WS para implementar módulos de aplicaciones mediante el uso de AMP (Alfresco Module Package), mismas que incluyen archivos XML que describen las funcionabilidades del módulo desarrollado y que permiten tomar los web services ya implementados con Alfresco para obtener los datos necesarios de las capas más profundas de la aplicación, en el caso de la capa DAO, quien es la encargada de accesar a la base de datos para realizar operaciones de persistencia y/o recuperación de objetos persistentes. 17 VIII PLAN DE ACTIVIDADES Plan de actividades diseñado con el objetivo de conocer los requerimientos de la empresa, conocer que es exactamente un documento y adquirir el conocimiento para implementar la aplicación y los módulos que sean requeridos. 18 IX RECURSOS MATERIALES Y HUMANOS Para el desarrollo y la instalación del servidor en la intranet de Novem se requiere: Hardware: Computadora con 8 GB de RAM, Disco Duro de 500 GB Procesador Intel Core I5 a 3.2 Ghz Software: Se requiere de un JDK 1.6 o superior. Entorno de desarrollo integrado Eclipse con soporte de JavaEE 6. API de Alfresco. Microsoft Office. Contenedor de aplicaciones Catalina Tomcat 7.3 SGBD PostgreSQL. Código Fuente de Alfresco. Plugins Eclipse (Log4J; Hibernate, SpringFramework). Recursos Humanos: Auditoras de Calidad Personal relacionado con documentación. Coordinador de auditorías. Gerente de Calidad. Desarrollador de Software. 19 X. DESARROLLO DEL PROYECTO. CAPA DAO (Data Access Object). Mapeo de Clases Entidad y sus funciones derivadas. Durante las entrevistas al personal involucrado con la elaboración de documentación controlada por el Departamento de Calidad, se observó en los resultados que muchas personas desconocen el cambio de versiones entre los formatos que dan origen a un documento bajo su responsabilidad; por lo que la aplicación ha tomado como base esta necesidad de mantener la sincronización de todas estas modificaciones mediante notificaciones en cada uno de los componentes del lado de la capa de presentación del Software que se implementa. De esta manera, todo aquél usuario debidamente autenticado, se encontrará con una serie de elementos que le proporcionan información oportuna para sus intereses. Esto se realiza desde el inicio de la sesión por parte del usuario en el sistema. Una vez que haga una autenticación exitosa, el sistema realizará una consulta al SGBD PostgreSQL, para determinar el tipo de usuario que está ingresando y su rol específico dentro del sistema; con base en ello, todos los roles están debidamente asociados a una serie de aspectos, mismos que se determinan mediante mensajes y el uso de Interceptores entre objetos todos los acontecimientos que se han realizado; tomando como parte de esos acontecimientos, la fecha, hora y usuario que desencadena esta acción disparadora en el sistema. Siendo ingresados mediante la asociación entre los aspectos y el rol del usuario, a la base de datos; misma que posee sus clases entidad para la asociación entre las tablas de la BDD y las instancias de la clase entidad que de ella se deriven. Una vez realizada esta consulta, se procede a enviar los datos resultantes a la capa de negocio, misma que determinará todas aquellas instancias asociadas entre la vista y la capa DAO, para que esos datos sean transferidos a la capa de presentación, para dar lugar al correcto direccionamiento de los datos en el lugar apropiado. 20 El mapeo de las clases Entidad y las Tablas de la Base de datos, se realiza como se indica a continuación. El mapeo de Clases Entity con la BDD mediante anotaciones. La API de Java EE 6, nos provee de una serie de anotaciones que están diseñadas para que el mapeo entre dos elementos sea bastante sencilla y a su vez flexible y robusta para que el contenedor de aplicaciones determine exactamente cuál es la función de cada instancia de la clase y sus acciones adecuadas, en relación con la asociación de la base de datos y su interacción con las otras tablas; todo de acuerdo al diseño ya previsto para ello. Por lo tanto, tomando como principio la interacción de instancias de clases con otros objetos de distintas clases, misma que produce un resultado, se puede afirmar que las instancias de una clase entidad, interactúan con otras clases entidad; entonces, las tablas de la base de datos, interactúan las unas con las otras en función de las cardinalidades que se hayan implementado durante su construcción. Componentes en el mapeo de Clases y Tablas de la BDD. Las clases POJO deben ser totalmente independientes de otras interfaces, debido a que las interfaces como tal, no siempre pueden ser transferidas mediante la red; ya que su funcionamiento depende totalmente de la clase que implementa sus funciones y ellas pueden depender de otras clases o interfaces. Esto dejaría a una interfaz determinada, totalmente inservible, debido a la ausencia de componentes esenciales para su funcionamiento y que no pudieron ser transferidos. Por lo que necesariamente deben ser totalmente autónomas e independientes. La única interfaz que debe ser implementada fortuitamente es la interfaz Serializable, misma que permite la adecuada codificación de la clase que la implementa, para ser transferida mediante la red, y pueda ser decodificada adecuadamente en el sitio destino, es lo que se conoce como serialización. 21 Sin esta interfaz, la transferencia de estos datos resultaría inservible al no poder ser serializada para su transferencia y posterior interpretación. Las Tablas de la base de datos, corresponden a una arquitectura totalmente ordinaria: Tablas con atributos e identificadores de cada una de las tuplas (conjunto de datos u objetos) que almacenan los registros en ella referenciados. Aunque como se sabe, las buenas prácticas en el diseño de un esquema de base de datos, es fundamental para el correcto funcionamiento del sistema, debido a que están completamente asociadas a las clases Entidad de la aplicación JavaEE. La conjunción de los dos elementos descritos anteriormente, se hace posible gracias a un tercer elemento fundamental: La Unidad de Persistencia de Java; misma que se encuentra ubicada dentro de la arquitectura del proyecto JavaEE y que no es otra cosa más que un fichero decorado con tags correspondientes a un XML, esto aplica el mismo criterio y reglas que en el código HTML: Un tag puede contener uno o más tags dentro de su interior, a quienes determina como un atributo del elemento que está siendo señalado por medio de ese archivo XML. Por lo tanto como parte de la estructura de la unidad de persistencia, se tienen los siguientes elementos básicos: Versión del fichero XML, Atributos de la unidad de persistencia, proveedor del mapeo entre clases y Tablas, mismo que se conoce como ORM (Object Relational Mapping) y que establece el mapeo entre los elementos referenciados para facultar el uso de JPQL (Java Persistence Query Language), que es una derivación del SQL ordinario, añadiéndole el enfoque de Consultas Orientadas a Objetos. El nombre de la unidad de persistencia, tipo de transacción (local o por JNDI), Clases mapeadas, y las propiedades del JNDI (recomendado) o directamente los datos de conexión a la base de datos (No recomendado). JNDI (Java Naming Directory Interface) es el acrónimo que hace referencia a una instancia de un componente del contenendor de aplicaciones que se utiliza (es el mismo que da soporte al protocolo HTTP) y que contiene citada la instancia. Por lo que dentro de este tag se hace referencia a la instancia existente dentro del contenedor de aplicaciones; misma que puede ser creada mediante la consola de administración del contenedor de aplicaciones Java. 22 Es altamente recomendado el uso de un JNDI por la confidencialidad de los elementos clave para el acceso a la base de datos, tales como la URL, el nombre del usuario y la contraseña. De esta manera, se mantiene esa confidencialidad a todos los desarrolladores involucrados en el desarrollo del proyecto, sin revelar estos datos altamente sensibles. Como se puede apreciar, mediante esta unidad de persistencia, se establece la asociación de las clases referenciadas dentro de los tags y las tablas a las que se conecta el proveedor de mapeo (ORM) con los datos utilizados por los atributos del tipo de transacción que se esté empleando. Patrones de diseño utilizados. El patrón de diseño que se implementa para la transferencia entre las tres capas (DAO, Negocio y Presentación) que conforman la aplicación, es DTO (Data Transfer Object), que en realidad es una copia exacta de las clases y los atributos de cada una de las clases Entity, dentro de la capa de transferencia destino; esto es con la finalidad de que determinadas clases, puedan transferir mediante retornos de métodos, aquellos objetos que deseen ser transferidos. Sin este patrón de diseño, los datos de la capa DAO, no podrían ser transportados a la capa de Negocio, ya que las clases Entity, corresponden a un proyecto ajeno a la aplicación alojada en el lado del servidor. Por otro lado, cada una de las clases Entity está relacionada a una unidad de persistencia que las controla; para ello se implementa el patrón de diseño Facade que proporciona una única interfaz principal, misma que determina la conexión con la unidad de persistencia y de esta “fachada” implementa clases abstractas que pueden regresar determinadas consultas a la base de datos, mediante el lenguaje JPQL, que utiliza la sintaxis de objetos, esto es, se obtiene una instancia de una clase entity (previamente relacionada con la tabla de base de datos y esta instancia puede hacer uso de métodos relacionados con las operaciones CRUD de las bases de datos. 23 Estos métodos de consulta, son implementados mediante una clase abstracta que es la raíz dentro de la escala jerárquica de las clases Entidad, y el resto de clases heredan esos métodos para cada una de las tablas a las que se encuentren asociadas mediante el mapeo ya descrito. Este patrón de diseño está diseñado para evitar las múltiples instancias de la clase Abstracta, para cada una de las clases Entidad que de ella dependen. Es importante mencionar que esta clase abstracta (fachada), contiene una anotación hacia el nombre de la unidad de persistencia que se encuentra referenciado en el archivo “persistence.xml”. De ahí que una vez obteniendo una instancia de alguna de las clases que heredan de la clase abstracta, se pueda establecer la conexión a la base de datos, sin necesidad de hacer múltiples llamadas a la Unidad de Persistencia creada anteriormente. Capa de Negocio La capa de negocio proporciona todas las reglas que entren en juego dentro del límite del usuario autenticado. Esta capa de Negocio es alimentada por datos provenientes de los métodos getters de las clases Entity, mismas que están contenidas dentro de la capa DAO. El patrón de diseño que se utiliza para estos elementos, como ya se mencionó es el DTO. La capa de negocio delimita los límites de acuerdo al rol definido en users.xml del contenedor de aplicaciones Catalina Tomcat. Estos roles están definiendo el alcance que posee un usuario dentro del acceso a la base de datos y a la aplicación, además este mismo fichero posee el depósito de claves de acceso completamente cifradas, para obtener un certificado de seguridad emitido por la empresa que posee el sistema implementado. Esto con la finalidad de garantizar las conexiones cifradas dentro de la intranet corporativa, mediante el uso del protocolo HTTPS y SSL. 24 Lo anteriormente descrito, corresponde al primer filtro para definir el rol de los usuarios dentro del sistema, el siguiente filtro en el que se sustenta la capa de negocio, proviene directamente de la base de datos, donde se encuentran establecidas las asociaciones entre cada uno de los usuarios del sistema y su rol desempeñado en cada uno de los espacios que sean creados en el Sitio Web Alfresco. De esta asociación entre la tabla de usuarios, y los roles del sistema, surge la base para la definición de las acciones correspondientes; las limitantes que sean establecidas, son totalmente adaptables; esto es, cada uno de los sitios deben ser totalmente modificables de acuerdo al rol que se requiera; en conclusión: un sitio puede tener un rol predeterminado; sin embargo al momento de añadir un grupo de usuarios Colaboradores, puede establecerse un nuevo rol, sobrescribiendo al inicial; por ejemplo ese grupo de Colaboradores, podrá ser añadido como Administrador de ese sitio específico. Las reglas de negocio, están basadas fundamentalmente en el rol ya descrito, por lo que las acciones sobre cada uno de los documentos, están perfectamente limitadas a lo establecido por el administrador del sistema. Sea cual fuere el grupo al que se pertenezca, la aplicación está diseñada para crear flujos de trabajo en distintas formas, tales como Aprobación de un Documento, Revisión en Conjunto, Asignación de una tarea específica a uno o muchos usuarios y administrar los recursos que son empleados para esa actividad. Los roles. Las representaciones que en el sistema mantienen un marco de acción están sustentadas en la acción y delimitación efectiva de los roles de usuario. Esto es con el objetivo de presentar una interfaz gráfica de usuario, totalmente adecuada a cada uno de estos papeles específicos. Por lo que esta definición puede ser asociada a un conjunto de usuarios, que delimitan las acciones. Los roles que contiene el sistema por default, son los siguientes: 25 Administradores de Aplicación Está destinado a todos aquellos usuarios que tengan acceso a la administración de la aplicación, a la base de datos del sistema, capacidad de crear y eliminar sitios, documentos, elaborar estructuras de directorios, crear, suspender y eliminar cuentas de usuario del sistema, configuraciones de correo electrónico, etc. La definición de este rol está enteramente ligada al grupo Alfresco_Administrators y la de EMAILCONTRIBUTORS, este es el grupo root. Administradores de Sitio. Está diseñado para todos aquellos usuarios del sistema, que poseen capacidad de enviar invitaciones a otros usuarios, para unirse a los sitios que ellos administran. Este tipo de usuarios no tienen acceso a eliminación de documentos, sin embargo pueden agregar al nodo de un documento, versiones posteriores al documento. Tampoco pueden eliminar cuentas de usuario, aunque pueden expulsar a algún elemento del sitio al que administran. Colaboradores Poseen los derechos de modificar nuevas versiones del documento, dejando por un lado todos aquellos derechos anteriormente descritos. Pueden delegar actividades a terceros e incluso están autorizados a crear tareas en conjunto y reportar avances en los proyectos designados a todos los usuarios que les deleguen actividades específicas mediante el sistema. Contribuidores. Es el personal que tiene derecho a modificar directamente todos los aspectos de documentación, sin embargo tienen la limitante de que no pueden designar tareas a otras personas, aunque pueden reportar las tareas que les fueron asignadas por los roles superiores a estas cuentas. 26 Consumidores Son todos aquellos usuarios finales del sistema, que únicamente pueden descargar documentos, recibir flujos de trabajo y reportarlos sin hacer cambios dentro de la estructura general de la administración del proyecto. No están autorizados a realizar cambios de documentación, sin embargo pueden iniciar flujos de trabajo para enviar a revisión y posible posterior aprobación todos los documentos que sean elaborados por ellos. Enterprise Java Beans. Los EJB son objetos característicos de las aplicaciones Enterprise. Estos objetos son similares a cualquier otra instancia de clases, sin embargo poseen una arquitectura que les define la funcionabilidad orientada a aplicaciones Cliente – Servidor, por lo que sus instancias no son iguales a las de una clase ordinaria, sino que se inyectan mediante el uso de anotaciones características de Java @EJB. Estos Enterprise Java Beans poseen ciclos de vida distintos de acuerdo al diseño de la aplicación. Esto es, mientras el recolector de basura de Java SE adquiere el control sobre un objeto y decide cuando eliminarlo, en los EJB’s pueden ser administrados directamente por el contenedor de aplicaciones. Esto permite objetos persistentes aún en memoria, por ejemplo a lo largo de una sesión de usuario. Los Enterprise Java Beans mantienen la información que está relacionada con ellos y son los responsables de guardar los datos que son enviados a través de las diversas capas de la aplicación Java. Sus ciclos de vida son los siguientes: EJB’s de sesión, EJB’s de Aplicación y EJB’s Singleton. Estos últimos se utilizan para datos que son accesados concurrentemente durante la sesión de un usuario. Es importante mencionar que los EJB’s no son instanciados como tal, sino que se hace mediante la inyección en tiempo real de la aplicación, por lo que el consumo de recursos de la aplicación disminuye considerablemente. 27 Los EJB’s pueden hacer uso de interceptores, mismos que “interceptan” algún evento que inicia con una acción disparadora y pueden también efectuar acciones bajo distintos argumentos, tales como la invocación de métodos que a su vez, desencadenan la inyección de otros EJB’s, mismos que seguirán siendo persistentes, mientras el EJB que los invocó, mantenga su estado conversacional con el contenedor de aplicaciones. A esto se le conoce como CDI, (Context and Dependency Injection) por lo que este ciclo de vida está regido directamente con el contexto que le haya invocado. Capa de Presentación La capa de presentación está desarrollada en Java Server Pages, misma que mantienen la arquitectura jerárquica, esto es: se pueden desarrollar plantillas y las vistas que “heredan” de la principal, pueden implementar fragmentos de código JSP dentro de su contenido, mediante el uso de la sintaxis de JSP indicando el sitio en el que deberá incorporarse el fragmento de código almacenado en la plantilla. A diferencia del código HTML, JSP provee de una serie de anotaciones, mismas que pueden hacer referencia hacia componentes nativos dentro de la API de JavaEE 6. Todos los valores y datos que sean introducidos en los contenedores de la vista, están asociados directamente a la capa de negocio, con una comunicación bidireccional, mediante el uso de Managed Beans. Estos son objetos efímeros que establecen un puente de comunicación con los EJB a los que se encuentran asociados dentro del método del Managed Bean. Por lo tanto, toda la información que se procesa desde la interaz gráfica de usuario hasta la capa de negocio, es gracias a la acción de los Managed Beans. 28 XI. RESULTADOS OBTENIDOS. Se consiguió la implementación del Sistema de Administración de Contenidos Alfresco, dando como resultado los siguientes puntos: Estandarización de la documentación en los procesos de producción mediante el uso de plantillas para generar documentos nuevos o actualizaciones de los mismos. Se garantizan documentos únicos e irrepetibles mediante el control de versiones dentro del Sistema Gestor de Contenidos. Se disminuyó el tiempo invertido en el Control de Documentos, mediante la implementación de una interfaz gráfica de usuario, sencilla e intuitiva y además de la conversión a PDF con códigos QE conteniendo la URL del documento origen. Se delimitaron las responsabilidades entre el Departamento de Calidad y los expertos de proceso como consecuencia de mantener un registro objetivo de los pormenores durante la evaluación de documentos candidatos a ser Controlados por el Sistema, al hacer uso de los foros y wikis proporcionadas por el Sistema Gestor de Contenidos. Se garantiza el control y disponibilidad del archivo histórico de versiones para consultar y restaurar esas mismas versiones obsoletas en cualquier momento que sea requerido. Se incrementaron los altos estándares de calidad requeridos por el cliente, reflejados en los resultados de la auditoría hecha por General Motors. 29 XII. CONCLUSIONES Y RECOMENDACIONES Las aplicaciones web, proveen de diversas características que cubren los requerimientos por parte del cliente; sin embargo uno de los factores preponderantes en esta dualidad, corresponde enteramente a la experiencia por parte del desarrollador de software y más aún cuando el recurso humano está limitado únicamente al desarrollador. Por lo que suele ser motivo de que no se cumplan los tiempos previstos en el desarrollo del proyecto. La recomendación que se hace es evaluar la factibilidad del proyecto con base en la investigación de mercado, para saber si existe alguna herramienta ya creada con anterioridad, y esto para presentar un análisis de la relación costo-beneficio al cliente. Determinadas actividades suponen una serie de actividades dentro del desarrollo, y durante el mismo surgen diversas circunstancias que pueden ser contraproducentes para los tiempos establecidos. Esto es un motivo muy digno de detenerse unos momentos y preguntarse ¿Es realmente factible el desarrollo de este proyecto? ¿Tengo que buscar una alternativa ya existente en el mercado? En su defecto, negociar los tiempos de entrega, de tal manera que se contemplen los inconvenientes que se puedan presentar durante el desarrollo del proyecto. En el caso concreto del proyecto, se han cubierto los objetivos que se propusieron al inicio del proyecto. Aunque el software soporta la instalación sobre arreglos de discos RAID, se recomienda que los índices del motor de búsquedas, sean manejados directamente desde el contenedor de documentos para obtener un mejor performance en las funcionabilidades del motor. Asimismo los requerimientos de la empresa avanzan a pasos agigantados; por lo que se recomienda ampliamente mantener la visión de que el software necesita crecer junto con la empresa, de tal manera que muchos de los procesos que son aún necesarios los recursos humanos, puedan ser automatizados mediante mejoras constantes en los módulos AMP. 30 Esto me lleva a sugerir a las futuras generaciones que evidentemente el software es, de alguna manera un ser “vivo” el cual requiere que se le moldee y se le den los cuidados necesarios durante la concepción del mismo, de tal manera que nunca se pierda de vista el objetivo fundamental de la aplicación. 31 XIII. ANEXOS Tabla: Breve tabla comparativa de servidores Web del mercado. Servidor Disponibilidad Precio Apache Unix/Linux, Windows Libre. 95/98/NT/2000/XP/Vista/7/8 Bea Weblogic Windows NT, Sun Solaris, HP- Comercial, desde UX, IBM AIX, Linux, OS/400, 2.000.000 pts. Compaq Tru64 Unix, SGI IRIX Aproximadamente. y Siemens Reliant Unix Enhydra Windows NT/2000, Unix/Linux Libre. Jigsaw Unix/Linux, Windows Libre. 95/98/Millenium y NT/2000 Coldfusion Windows 95/98/NT/2000, Comercial, desde Linux, Solaris y HP-UX 260.000 pesos. aproximadamente. IIS Windows Comercial, desde 20.000 NT/2000/XP/Vista/7/8 pesos aproximadamente. NCSA HTTPd Unix/Linux, Windows 3.x,NT Libre. iPlanet HPUX, Solaris, IBM AIX, Comercial, desde Compaq Tru64 Unix, SGI 300.000 pesos IRIX, Windows NT/2000 aproximadamente. Unix/Linux Comercial, desde Zeus 340.000 pesos aproximadamente. 32 1 Cuadro comparativo de las ventajas de Java frente a PHP. Característica comparada Tipos de Datos PHP boolean, integer, float, string, array, object 2 Java boolean, char, byte, short, int, long, float, double, String, array, Object Ganador: Java al soportar mayor cantidad de tipos de datos. 1 Característica comparada Nombres de las variables PHP Las variables son representadas por una muestra del dólar seguida por el nombre de la variable. 2 Java El nombre variable es sensible a mayúsculas. Ganador: Java al ser más práctico el que no haya carácter especial para comenzar el nombre El nombre variable mayúsculas, posibilidades variables. 33 variable. es sensible a ampliando de las nombrar 1 Característica comparada Declaración de las variables PHP Se declara la variable cuando se crea. Su tipo se implica del valor asignado. Una variable puede cambiar su tipo si se asigna un nuevo valor. 2 Java Es conveniente que un programa pequeño no requiera declaraciones variables globales, pero para software grande, esto es el contraproducente. Las variables que cambian sus tipos basados muy en su peligrosas valor son en programas grandes. 1 Característica comparada Variables globales PHP PHP tiene una gran cantidad de variables predefinidas. 2 Java Java no tiene variables globales. Java. Las variables globales introducen bugs. posibles en software grande. 34 Característica comparada Una variable que contiene el nombre de otra variable 1 PHP Soportado 2 Java No soportado Ganador PHP Característica comparada Uso de bibliotecas externas 1 PHP PHP incluye bibliotecas. Bibliotecas de la importación de Java 2 Java Java. Incluyendo bibliotecas puede introducir ediciones variables del paquetes se alcance. Los estructuran mejor que bibliotecas incluidas Ganador Java 35 XIV. BIBLIOGRAFÍA Manuales e Instrucciones de trabajo. Instrucción de Trabajo de la empresa Novem Car Interior Design México (Impreso). Manual de Gestión de Documentos Novem Car Interior Design México Rev 01 2012 (Electrónico). Ayudas Visuales de la empresa (Electrónico). Referencias de Internet. Eric Jendrock, Ricardo Cervera-Navarro, Ian Evans, Devika Gollapudi, Kim Haase, William Markito, Chinmayee Srivathsa, (4 de Julio de 2013), The Java EE 6 Tutorial. Informática. Disponible en: http://docs.oracle.com/javaee/6/tutorial/doc/ Ubaldo Acosta (20 Junio 2010) Global Mentoring, Disponible en: http://globalmentoring.com.mx/curso-javaee/ Comunidad open source Alfresco (30 julio 2013), Foros Alfresco, disponible en: http://forums.alfresco.com/es Ernesto Castillo (1º agosto 2013) OpenSource Las ventajas y alcances de un sistema que comparte el conocimiento, disponible en: http://www.emb.cl/gerencia/articulo.mvc?xid=98 36 Alejandro Mellado García (3 de agosto 2013) Opensource, alternativas para la Empresa, disponible en: http://www.inf.uct.cl/~amellado/archivos/pre_os_empresa.pdf Microsoft Corporation (15 de mayo 2013) ¿Qué es sharepoint? Disponible en: http://office.microsoft.com/es-mx/sharepoint-server-help/que-es-sharepointHA010378184.aspx Anabell Comas (25 junio 2013) Java o PHP http://www.revista.unam.mx/vol.7/num12/art104/dic_art104.pdf 37 disponible en: