Vista previa del material en texto
Facultad de Ciencias Técnicas Carrera de Ingeniería Informática. Sistema para el control financiero en la gestión del proceso inversionista del programa de desarrollo agropecuario. Trabajo de diploma para optar por el título de Ingeniería en Informática Autor: Ariel Ricardo García Zaldívar. Tutores: Msc. Arlety García García. Espec. Damaris Álvarez López. Consultantes: Ing. Nivaildo Polanco Martínez. Lic. Yasser Guillermo Álvarez. Isla de la Juventud, junio 2016 DECLARACIÓN DE AUTORÍA Declaro que soy el único autor de este trabajo y autorizo a la Unidad Empresarial de Base Proyectos e Ingeniería del MINAG (ENPA) de la Isla de la Juventud y al Centro de Estudios de Ingeniería y Sistemas para que hagan el uso que estimen pertinente con este trabajo. Para que así conste firmo la presente a los _____ días del mes de ______________ del _________. Ariel Ricardo García Zaldívar ________________________ Msc. Arlety García García. ____________________________ Nombre completo del primer tutor Espec. Damaris Álvarez López. ____________________________ Nombre completo del segundo tutor OPINIÓN DEL USUARIO DEL TRABAJO DE DIPLOMA El Trabajo de Diploma, titulado <Título>, fue realizado en nuestra entidad <Nombre completo de la entidad que utilizará el sistema>. Se considera que, en correspondencia con los objetivos trazados, el trabajo realizado le satisface: Los resultados de este Trabajo de Diploma le reportan a esta entidad los beneficios siguientes (cuantificar): ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ Como resultado de la implantación de este trabajo se reporta un efecto económico que asciende a <valor> MN y/o <valor> CUC. (Este valor debe ser REAL, no indica lo que se reportará, sino lo que reporta a la entidad. Puede desglosarse por conceptos, tales como: cuánto cuesta un software análogo en el mercado internacional, valor de los materiales que se ahorran por la existencia del software, valor anual del (de los) salario(s) equivalente al tiempo que se ahorra por la existencia del software). Y para que así conste, se firma la presente a los ____ días del mes de __________ del año ______ ______________________________________________ _____________________ Nombre del representante de la entidad Cargo ____________________ Firma Cuño OPINIÓN DEL TUTOR DEL TRABAJO DE DIPLOMA Título: <Título del trabajo de diploma> Autor: <Nombres y apellidos del autor o los autores> El tutor del presente Trabajo de Diploma considera que durante su ejecución el estudiante mostró las cualidades que a continuación se detallan. <Aquí el tutor debe expresar cualitativamente su opinión y medir (usando la escala: muy alta, alta, adecuada) entre otras las cualidades siguientes: Independencia Originalidad Creatividad Laboriosidad Responsabilidad> <Además, debe evaluar la calidad científico-técnica del trabajo realizado (resultados y documento) y expresar su opinión sobre el valor de los resultados obtenidos (aplicación y beneficios) > Por todo lo anteriormente expresado considero que el estudiante está apto para ejercer como Ingeniero Informático; y propongo que se le otorgue al Trabajo de Diploma la calificación de <nota 2-Desaprobado, 3-Aprobado, 4-Bien, 5- Excelente>. <Además, si considera que los resultados poseen valor para ser publicados, debe expresarlo también> ____________________________ Nombre completo del primer tutor <Grado científico, Categoría docente y/o investigativa> (Si procede) ____________________________ Nombre completo del segundo tutor <Grado científico, Categoría docente y/o investigativa> Fecha: _____________ Agradecimientos A mis tutoras, Damaris quien me atendió con mucha paciencia durante mis visitas a la ENPA, en especial a la Msc. Arlety García García por su apoyo, aliento y estímulo para seguir hacia delante y no perder de vista el objetivo, por sus consejos como profesional y madre durante la carrera. A mis consultantes, Nivaildo por sus aportes y tiempo dedicado para el desarrollo de la investigación, a Guille por su tiempo e ingenio “gracias man”. A mis compañeros durante los cinco años de carrera con los cuales compartí los “tiempos de universidad”, por los madrugadazos y momentos compartidos “good time”. A Teresita quien me dedicó mucho de su preciado tiempo y corrigió mis gazapos. A Dylan por aventurarnos a su proyecto comunitario “Mochileros por Cuba”. A todos los profesores que de una manera u otra aportaron a mi formación como profesional. A todos los colegas que se me acercaron para preguntarme por la tesis. A todos muchas gracias. Dedicatoria A: Mis padres los cuales trajeron a esta vida dos ingenieros, por sus ejemplos como luchadores y por querer darles alguna satisfacción por estos tiempos, de mi para ustedes. A: Mi hermano por sus consejos y debates técnicos, a mi cuñi por su preocupación e alegría que trae consigo. A: Mi titi lili por lo que hemos vivido juntos, lo que acontece y lo que será, mientras sea juntos lo abrazo, gracias por seguir ahí. A: Mi suegri, mis tias a todas gracias por su apoyo. Resumen La Unidad Empresarial de Base Proyectos e Ingeniería del MINAG (ENPA), tiene como objeto social prestar servicios en el control integral técnico-financiero, organización, planificación y seguimiento a ejecución de inversiones agropecuarias, con el objetivo de fomentar el desarrollo de este sector. Actualmente cuentan con un Excel donde se gestiona la información referente al control financiero del proceso inversionista, esta herramienta no satisface sus necesidades al propiciar errores y ser susceptible a la pérdida de información, trayendo como consecuencia alteraciones o pérdidas financieras. Es por ello que el presente trabajo de diploma se plantea como objetivo principal implementar un sistema informático que optimice el control financiero en la gestión del proceso inversionista del programa de desarrollo agropecuario en la Isla de la Juventud. Para darle solución al objetivo propuesto se utilizaron como herramientas de programación, el gestor de base de datos PostgreSQL 9.4, como frameworks Laravel 5.2 y Bootstrap 3.2, el entorno de desarrollo PhpStorm 9.0.2 y como metodología ágil de desarrollo de software la Programación Extrema. El sistema para el control financiero en la gestión del proceso inversionista del programa de desarrollo agropecuario al ser implementado logra un mejor control financiero sobre los gastos incurridos brindándole al inversionista un mayor acercamiento sobre el estado financiero de la inversión, mayor organización de los datos, mejor seguridad y persistencia de la información del proceso inversionista, así como la optimización del tiempo en la elaboración de reportes sistemáticos a los inversionistas. Palabras claves: control financiero, proceso inversionista,sistema informático, inversión. Summary The Managerial Unit of Base Projects and Engineering of the MINAG (ENPA), it has like social object to lend services in the technician-financial integral control, organization, planning and pursuit to execution of agricultural investments, with the objective of fomenting the development of this sector. At the moment they have an Excel where the information is negotiated with respect to the financial control of the process investor, this tool doesn't satisfy its necessities when propitiating errors and susceptible being to the loss of information, bringing as consequence alterations or financial losses. It is for it that the present diploma work thinks about as main objective to implement a computer system that optimizes the financial control in the administration of the process investor of the program of agricultural development in the Youth's Island. To give solution to the proposed objective they were used as programming tools, the database agent PostgreSQL 9.4, as frameworks Laravel 5.2 and Bootstrap 3.2, the development environment PhpStorm 9.0.2 and I eat agile methodology of software development the Extreme Programming. The system for the financial control in the administration of the process investor of the program of agricultural development when being implemented achieves a better financial control on the incurred expenses offering the investor a bigger approach on the financial state of the investment, bigger organization of the data, better security and persistence of the information of the process investor, as well as the optimization of the time in the elaboration of systematic reports to the investors. Key words: financial control, process investor, computer system, investment. Índice Introducción ---------------------------------------------------------------------------------------- 1 Capítulo 1 Fundamentos teóricos (o estado el Arte) -------------------------------- 7 1.1 Introducción ------------------------------------------------------------------------------ 7 1.2 Objeto de estudio ----------------------------------------------------------------------- 8 1.3 Procesos de automatización -------------------------------------------------------- 10 1.4 Sistemas automatizados existentes vinculados al campo de acción ---- 10 1.5 Metodología de desarrollo del software------------------------------------------13 1.6 Tendencias y tecnologías actuales -----------------------------------------------15 1.7 Análisis crítico de las fuentes y bibliografías utilizadas ----------------------21 1.8 Conclusiones parciales del capítulo ----------------------------------------------22 Capítulo 2 Exploración, planificación y diseño de la solución propuesta---23 2.1 Introducción------------------------------------------------------------------------------23 2.2 Descripción del sistema propuesto------------------------------------------------23 2.3 Fase de exploración-------------------------------------------------------------------24 2.4 Fase de planificación -----------------------------------------------------------------26 2.5 Diseño ------------------------------------------------------------------------------------29 2.6 Conclusiones parciales del capítulo-----------------------------------------------34 Capítulo 3 Implementación, prueba y validación diseño de la solución propuesta ------------------------------------------------------------------------------------------35 3.1 Introducción -----------------------------------------------------------------------------35 3.2 Implementación ------------------------------------------------------------------------35 3.3 Prueba------------------------------------------------------------------------------------39 3.4 Conclusiones parciales del capítulo ----------------------------------------------45 Conclusiones-------------------------------------------------------------------------------------46 Recomendaciones ------------------------------------------------------------------------------ 47 Referencias bibliográficas ------------------------------------------------------------------- 48 Glosario de términos --------------------------------------------------------------------------- 50 Anexos ------------------------------------------------------------------------------------------------ I Índice de figuras Figura 1. Gráfico encuesta inicial-------------------------------------------------------------13 Figura 2. Patrón arquitectónico MVC --------------------------------------------------------30 Figura 3. Modelo de datos----------------------------------------------------------------------33 Figura 4. Diagrama de despliegue----------------------------------------------------------- 39 Figura 5. Gráfico pruebas satisfactorias ----------------------------------------------------42 Figura 6. Gráfico pruebas satisfactorias ----------------------------------------------------43 Figura 7. Gráfico encuesta final---------------------------------------------------------------44 Índice de tablas Tabla 1. Historias de usuario: Controlar documentos----------------------------------- 25 Tabla 2. Historias de usuario: Gestionar inversión---------------------------------------26 Tabla 3. Estimación de esfuerzo por historia de usuario -------------------------------27 Tabla 4. Duración de Iteraciones -------------------------------------------------------------29 Tabla 5. Plan de entregas ----------------------------------------------------------------------29 Tabla 6. Tarjetas CRC: Inversion-------------------------------------------------------------32 Tabla 7. Tarjetas CRC: GastoEquipo--------------------------------------------------------33 Tabla 8. Tareas de ingeniería por iteración ------------------------------------------------36 Tabla 9. Tareas de ingeniería por iteración: Listar documentos----------------------37 Tabla 10. Tareas de ingeniería por iteración: Listar documentos --------------------37 Tabla 11. Prueba de aceptación: Controlar documentos-------------------------------41 Tabla 12. Prueba de aceptación: Gestionar inversión-----------------------------------41 Tabla 13. Resultados encuesta inicial -------------------------------------------------------IV Tabla 14. Resultados encuesta final ----------------------------------------------------------V Tablas Historias de usuarios --------------------------------------------------------------------V Tablas Tarjetas CRC -----------------------------------------------------------------------------IX Tablas Tareas de ingeniería--------------------------------------------------------------------XI Tablas Pruebas de aceptación---------------------------------------------------------------XXI 1 Introducción El mundo de la comercialización y los negocios se vuelve cada día más competitivo; exige mayor calidad en el diseño, control en la ejecución de los proyectos y reclama el uso de las nuevas tecnologías de la informática y las comunicaciones (NTIC). Cuba se inserta en esta realidad y se esfuerza por perfeccionar su proceso inversionista. Las inversiones generan el desarrollo social, pero requieren de la ejecución de proyectos con altos costos. La Dirección Integrada de Proyectos (DIP) hace viable este propósito; es la técnica de dirección a través de la cual se dirigen y coordinan los recursos humanos, financieros y materiales a lo largo del proceso inversionista. Es el método para la dirección de los proyectos informáticos que desarrolla una entidad determinada, con el objetivo de optimizar el uso de los recursos, obtener los resultados en los plazos establecidos en el marco del presupuesto y con la calidad requerida por el cliente y las partes interesadas.(Machado Pedraza & Delgado Victore, 2011) A finalesde la década del 70, el Ministerio de la Agricultura en Cuba (MINAG) enfrentó el reto de incrementar la producción de alimentos para la población. Dentro del cúmulo de tareas que ello representa, se pone especial énfasis en la ejecución y control de las inversiones propuestas. Para lograr este importante objetivo, en marzo de 1981 se crea la Empresa Nacional de Proyectos Agropecuarios (ENPA), cuya principal tarea es la de colaborar en el ordenamiento de todo el proceso inversionista. En el contexto actual cubano es necesario aplicar todos los conocimientos científicos y técnicos -especialmente en el sector agropecuario, sector estratégico para la seguridad y sustentabilidad alimentaria del país- y apoyar la implementación de los lineamientos en función del nuevo modelo económico, usando de forma racional los escasos recursos con que contamos, por lo que se impone trabajar en el mejoramiento del proceso inversionista a nivel de la base productiva, dotándola de herramientas sencillas que le permitan gestionar, de manera eficiente y eficaz, los recursos a invertir. (Morales Cabrera, 2013) Plantea (Torres, 2016) que para lograr el uso eficiente del suelo agrícola, aumentar los rendimientos e indicadores de eficiencia, así como para propiciar el 2 ahorro y uso racional de los recursos disponibles proyectados, se han insertado en Cuba los programas de desarrollo agropecuario, como política económica y social del Partido, que tiene el objetivo de garantizar el desarrollo integral en los territorios e incrementar las producciones agropecuarias con el propósito de abastecer a la población y sustituir importaciones. En la Isla de la Juventud se ejecuta uno de estos planes de desarrollo integral, en el cual el sector agropecuario es el protagonista de ese proceso inversionista, cuyo objetivo es mejorar el autoabastecimiento local y reducir la dependencia de otros territorios del país. En función del plan de desarrollo pinero está la Unidad Empresarial de Base Proyectos e Ingeniería del MINAG (ENPA), que es la encargada de rectorar su ejecución. En cualquier proceso inversionista, el control financiero es fundamental. Este analiza los resultados reales de una empresa y hace que gane en seguridad y confianza. Entre sus funciones básicas está el rendimiento de beneficios, la situación fiscal y el estado de las inversiones. En visita realizada a la Unidad Empresarial de Base Proyectos e Ingeniería del MINAG (ENPA) de nuestro territorio, se observaron las siguientes irregularidades: Es insuficiente la herramienta utilizada como soporte de la información, ya que restringe las posibilidades de enriquecimiento, actualización o transformación de los contenidos referidos al control financiero y al proceso inversionista en general, debido a la forma en que se procesa la información; la misma se almacena en documentos Word o Excel, lo que resulta muy engorroso a la hora de manipular los datos, ya sea para realizar una búsqueda, modificar algún dato o cualquier actividad ya que la información está descentralizada, lo que afecta la calidad y rapidez en el proceso de inversión. Lo expuesto anteriormente provoca: · Demora en la búsqueda y recuperación de datos provocando gran pérdida de tiempo. · Incorrecta manipulación de los datos lo que se traduce como pérdidas o alteraciones financieras. · Pérdida de información lo que origina errores en el proceso. 3 · Demora en la entrega de información a los clientes. · La herramienta utilizada hace que el control financiero no sea fiable. La situación antes declarada revela la necesidad de encontrar solución al siguiente problema científico: ¿Cómo optimizar el control financiero en la gestión del proceso inversionista del programa de desarrollo agropecuario en la Isla de la Juventud? Objeto de estudio: Proceso inversionista del programa de desarrollo agropecuario. Campo de acción: Informatización del control financiero inversionista. Objetivo de la investigación: Implementar un sistema informático que optimice el control financiero en la gestión del proceso inversionista del programa de desarrollo agropecuario de la Isla de la Juventud. Preguntas Científicas. 1. ¿Qué fundamentos teóricos sustentan el control financiero en la gestión del proceso inversionista del programa de desarrollo agropecuario en la Isla de la Juventud? 2. ¿Cuál es el estado actual del control financiero en la gestión del proceso inversionista del programa de desarrollo agropecuario en la Isla de la Juventud? 3. ¿Qué sistema informático implementar para optimizar el control financiero en la gestión del proceso inversionista del programa de desarrollo agropecuario en la Isla de la Juventud? 4. ¿Qué factibilidad práctica presenta la herramienta informática propuesta y su implementación en la práctica? 4 Tareas de Investigación. 1. Sistematización del estudio de los referentes teóricos que sustentan el control financiero en la gestión del proceso inversionista del programa de desarrollo agropecuario en la Isla de la Juventud. 2. Diagnóstico actual del control financiero en la gestión del proceso inversionista del programa de desarrollo agropecuario en la Isla de la Juventud. 3. Implementación de un sistema informático que optimice el control financiero en la gestión del proceso inversionista del programa de desarrollo agropecuario en la Isla de la Juventud. 4. Constatación de la factibilidad de la propuesta y su implementación en la práctica. Métodos empleados. Teóricos. Analítico-Sintético: Permitió el análisis de la información obtenida en el proceso de investigación, realizado en la DIP ubicada en la ENPA, y empleada para la realización del sistema. Además, se utilizó para el análisis de la información existente dentro y fuera del país como antecedentes del presente estudio, identificando así conceptos, definiciones, avances y otros elementos determinantes, y de utilidad. Modelación: Ayudó la creación de modelos que representan abstracciones de la realidad y de la cual se obtienen los artefactos con el objetivo de obtener una representación visual del sistema según plantea la metodología. Enfoque de sistema: Permitió analizar de forma estructurada los componentes de la solución propuesta, jerárquica y funcionalmente. Métodos empíricos: Entrevista: Facilitó la comprensión acerca de la labor del equipo de especialistas de la DIP a través de criterios del director, y la necesidad de aplicar las nuevas tecnologías de la información para mejorar su funcionamiento. (Anexo 1) 5 Observación científica: Posibilitó obtener una mejor perspectiva acerca del funcionamiento y organización de la empresa, así como de la interacción de los especialistas y técnicos. (Anexo 2) Encuesta: Permitió la recopilación de información a través de preguntas a los trabajadores, partiendo de un diagnóstico inicial y final sobre la factibilidad de la investigación. (Anexo 3) Matemáticos: Estadística descriptiva y estadística inferencial: Se utilizó la estadística descriptiva para la selección de la muestra, facilitando la recolección, organización, procesamiento, análisis e interpretación de la información para llegar por medio de la estadística inferencial a conclusiones cuantitativas y cualitativas. La población estuvo constituida por 35 personas, todos trabajadores de la ENPA de los cuales 13 constituyen la muestra, lo que representa un 37% de la población seleccionada. La muestra escogida es intencional pues la constituye el equipo de especialistas de la Dirección Integrada de Proyectos (DIP), los que llevan el control integral técnico-financiero de las inversiones. Novedad científica: La novedad científica de la investigación consiste en la realización de un sistema para optimizar el control financiero en la gestión delproceso inversionista agropecuario, esta herramienta ayudará a minimizar las alteraciones financieras durante la ejecución de la inversión, factor importante para garantizar la sostenibilidad y desarrollo del territorio. Además potenciará la informatización de la agricultura cubana, necesidad impostergable para el desarrollo de este sector. Significación práctica: La significación práctica reside en el aporte de un sistema informático para optimizar el control financiero en la gestión del proceso inversionista agropecuario que se lleva a cabo en la ENPA, esta logra un mejor control, organización, seguridad y persistencia de la información en su procesamiento, disminuye el tiempo de acceso y búsqueda de la información además de 6 centralizarla, proporciona un front-end a las entidades inversionistas que les brinda un mayor acercamiento sobre el estado financiero de la inversión. Estructura de la tesis La investigación está formada por la introducción, tres capítulos, las conclusiones, recomendaciones, referencias bibliográficas, el glosario de términos y los anexos. Capítulo 1: Fundamentación Teórica En este capítulo se hace referencia al objeto de estudio y los sistemas automatizados existentes vinculados al campo de acción. Es realizada la fundamentación de los objetivos, además de ser explicada la metodología que guiará el proceso de desarrollo del software, las tendencias y las tecnologías actuales. Por último, se hace un análisis crítico de las fuentes y bibliografías utilizadas. Capítulo 2: Modelo del problema según metodología que se utiliza y solución propuesta En este capítulo se describe el sistema propuesto y se desarrollan las fases de exploración, planificación y diseño de la metodología ágil Programación Extrema. A través de estas fases son planteados los artefactos correspondientes a esta metodología como las historias de usuario, el plan de iteraciones, el plan de entregas, las tarjetas CRC (Clase, Responsabilidad y Colaboración) y el modelo de datos. Capítulo 3: Implementación, prueba y validación Este capítulo contiene las tareas de ingeniería por cada historia de usuario identificada, los estándares de codificación, las pruebas de aceptación empleadas para validar la solución propuesta y los resultados de las encuestas aplicada a la muestra seleccionada. 7 Capítulo 1 Fundamentos teóricos (o estado el Arte) 1.1 Introducción En este capítulo se presenta un estudio del estado del arte de los sistemas automatizados relacionados al campo de acción, se describen algunos conceptos asociados al dominio del problema, el flujo actual del proceso inversionista agropecuario, el análisis crítico de estos y se identifican los que serán objetos de automatización. Se explica la metodología que guiará todo el proceso de desarrollo del software, así como las tecnologías y tendencias actuales utilizadas para el desarrollo del sistema informático. Por último, se hace un análisis crítico de las fuentes y bibliografías utilizadas. Plantea (Teruel, 2014) que el control financiero es el estudio y análisis de los resultados reales de una empresa, enfocados desde distintas perspectivas y momentos, comparados con los objetivos, planes y programas empresariales, tanto a corto como en el mediano y largo plazo. Dichos análisis requieren de unos procesos de control y ajustes para comprobar y garantizar que se están siguiendo los planes de negocio. De esta forma, será posible modificarlos de la forma correcta en caso de desviaciones, irregularidades o cambios imprevistos. El autor utiliza esta definición pues la considera básica para la investigación, ya que la propuesta desarrolla un sistema de control de las finanzas del proceso inversionista en un sector tan sensible y estratégico como lo es la agricultura. Para la mejor comprensión del “sistema de control financiero en la gestión del proceso inversionista del programa de desarrollo agropecuario” se describen conceptos correspondientes al dominio del problema. Inversión es el gasto de recursos financieros, humanos y materiales con la finalidad de obtener ulteriores beneficios económicos, sociales y medioambientales, a través de la explotación de nuevos activos fijos tangibles e intangibles. 8 El proceso inversionista es entonces el sistema dinámico que integra las actividades o servicios que realizan los sujetos que en él participan, desde su concepción inicial hasta la puesta en explotación. Los gastos en que pueden incurrir en la inversión se estructuran en “Construcción y Montaje: Son los trabajos de preparación de los terrenos correspondientes al área de la inversión, demoliciones asociadas a la inversión, la construcción civil y el montaje hasta la puesta en funcionamiento de las instalaciones o inmuebles. Equipos: Es el valor de la totalidad de los equipos y maquinarias, incluye los de transporte y el mobiliario, ya sean importados o de producción nacional e independientemente que requieran o no trabajos de montaje y que constituyan parte integrante del proceso productivo o de servicio. Incluye el gasto por concepto de fletes, seguros, gastos de transportación a su destino final y de instalación. Otros: Incluye los gastos de inversión que no clasifican en los componentes anteriores, tales como: los gastos de pre- inversión, capacitación, adiestramiento, documentación técnica y de proyecto, promoción y comercialización, administración y gastos requeridos para las pruebas y puesta en explotación”. («DECRETO No. 327», 2015). 1.2 Objeto de estudio 1.2.1 Flujo actual de los procesos Dentro de los servicios que presta la Empresa de Proyectos e Ingeniería del Ministerio de la Agricultura (ENPA), está apoyar la ejecución y el control financiero de las inversiones propuestas en el programa de desarrollo agropecuario cuyo objetivo es garantizar el desarrollo integral en el territorio, abastecer la población y reducir las importaciones. La pre-inversión es la etapa donde comienza el flujo actual de los procesos, en donde se gestiona la documentación requerida por la inversión en esta fase (microlocalización, ingeniería básica, estudio de factibilidad y proyecto ejecutivo) esta se aprueba a través del procedimiento de ventanilla única del Instituto de Planificación Física (IPF). Una vez el IPF consulta con los organismos competentes, la inversión continua a la siguiente fase, este proceso es responsabilidad del especialista de documentación de la DIP. Se procede luego 9 a la fase de ejecución, en la que se aprueban los certificados de licencias definitivas, y el constructor y suministrador presentan semanalmente al Dpto. de control financiero los modelos donde se recogen los trabajos y gastos incurridos en los diferentes componentes de la inversión (construcción y montaje, equipos, otros), estos datos se traducen y actualizan en gastos realizados y se reflejan en la etapa correspondiente. Al concluir la ejecución, la obra pasa a la fase de habitable o explotación en la que se realizan pruebas, inspecciones y análisis de post-inversión por el personal técnico y otros organismos, los cuales avalan y aprueban el control de habitable o explotación de la inversión. 1.2.2 Análisis crítico de la ejecución de los procesos El control financiero en la gestión del proceso inversionista del programa de desarrollo agropecuario realizado por el equipo de especialistas de la DIP en la ENPA presenta dificultades. La herramienta utilizada como soporte de la información en el control financiero de suministros utilizados en los diferentes servicios, equipamiento de producción o servicios durante la inversión, así como los diferentes trabajos en obras, maneja los datos de forma manual, esto facilita errores en la gestión de la información transformados en pérdidas o alteraciones financieras.La gestión de documentos durante la pre-inversión, ejecución y post-inversión es registrada en diferentes formatos ocasionando demora y deterioro de estos. El equipo de especialistas de la DIP emite semanalmente un parte general donde se recogen los resultados de las inversiones en ejecución, una vez conformado este informe es revisado por el jefe del Dpto. y posteriormente por el director. Este proceso se ejecuta de forma manual con el correspondiente consumo de tiempo y los posibles errores que puede cometer el personal implicado en el proceso. De lo expuesto hasta aquí se puede concluir que el sistema en general es insuficiente a pesar de la labor realizada por el equipo de trabajo. Además, el proceso inversionista del territorio está sujeto a incumplimientos que hacen que el proceso en general sea defectuoso y conspire con el objetivo fundamental de contribuir al desarrollo. 10 1.3 Procesos de automatización Con el objetivo de brindar solución a los problemas planteados se ha determinado informatizar los siguientes procesos: 1. Inserción de los datos correspondientes al control integral de ejecución y financiero de la inversión, así como su documentación en la gestión del proceso inversionista agropecuario. 2. Control financiero de los gastos incurridos durante el proceso inversionista agropecuario. 3. Front-end donde se los inversionistas visualicen información relevante acerca del estado financiero de la inversión en tiempo real. 4. Elaboración de reportes sobre el control del proceso inversionista. 5. Aprobación de la documentación requerida en el proceso inversionista. 1.4 Sistemas automatizados existentes vinculados al campo de acción Durante la investigación se encontraron varios sistemas relacionados al control financiero del proceso inversionista agropecuario, los principales fueron: Software para Gestión Integral de Empresas Agropecuarias y agronegocios (AgroSIGA) AgroSIGA es un software de gestión Integral de empresas agropecuarias y agronegocios on line, que permite a empresas agropecuarias gestionar y conocer exactamente sus resultados para tomar las decisiones correctas en el mercado, posee muchas funcionalidades para dar soporte a la gestión, se comercializa mediante el pago de un servicio mensual. Algunos módulos del sistema de gestión agropecuaria. Módulo de planificación agrícola. Módulo de gestión de ganadería. Módulo de control de stock e inventarios y depósitos. Módulo de administración permite registrar compras, ventas, notas de créditos, débitos y llevar cuentas corrientes por cliente y proveedor. Módulo financiero. 11 Módulo de gestión de contratos: el sistema permite dar un seguimiento detallado a los contratos de ventas y entrega definidos con sus clientes. Módulo Mobile: permite enviar órdenes de trabajo a dispositivos móviles, actualizar el estado de las labores planificadas, consultar stock y cuentas corrientes desde el celular. SoftAgro Es un software agropecuario integrado que cubre todas las operaciones rurales de producción más las tareas administrativas, stocks, planes de siembra, compras de insumos, finanzas y contabilidad. Simplifica la administración y el control de las tareas de las empresas agrícolas y ganaderas. Sistema para la gestión de la información de los Proyectos agropecuarios en el sector ganadero (SIGEPA) Es un software como alternativa de solución a las deficiencias en la gestión de la información de los proyectos agropecuarios en el sector ganadero, en Cienfuegos Cuba. Se divide en 3 módulos, gestiona todo lo referente al grado de infesta de marabú en la provincia, módulo de administración y gestiona proyectos agropecuarios del sector, reúne disímiles funcionalidades distribuidas entre todos sus módulos. Sistemas, Aplicaciones y Productos (SAP). Compañía líder en software de gestión empresarial principalmente en entornos cliente/servidor, brinda soluciones que responden a las necesidades de las pequeñas y medianas empresas, hasta grandes corporativos y multinacionales ubicado en Europa. Presenta módulos para la gestión inversionista, de materiales, recursos humanos, finanzas entre otros. Algunas características del módulo de gestión inversionista: Gestión de efectivo. Gestión de riesgos de mercado. Gestión de fondos. Gestión general de gastos. Logística: Ventas y distribución. Planificación y Control de producción. http://www.monografias.com/trabajos11/empre/empre.shtml 12 Planificación de producción. Gestión de materiales. Gestión de mantenimiento y servicio. Al finalizar el análisis de varios de los sistemas de gestión existentes en el mundo y nuestro país, se determinó que estos solucionan problemas similares al planteado y que poseen algunas funcionalidades de las que se necesitan implementar tales como: módulo para la administración de usuarios, gestión de materiales, gestión de mantenimiento y servicio de gestión general de gastos. Pese a lo planteado, estos sistemas no se ajustan a las necesidades del país debido a que requieren pagos mensuales por su licencia, al ser privados, estos requieren conexión on line con el proveedor, siendo inconvenientes para nuestro modelo económico, o resuelven problemáticas específicas del sector agropecuario, no poseen alguna característica que permita mostrar información de interés al cliente sin ser autenticado además en el control de los procesos no integran la gestión de documentos como parte integral del control. Diagnóstico inicial Con el objetivo de constatar si el control financiero propicia un eficiente proceso inversionista en la ENPA se realizó una encuesta inicial. Las preguntas giraron alrededor de la herramienta con la que trabajan los especialistas, la existencia de algún software que permite el control financiero en la gestión del proceso inversionista agropecuario y la necesidad de implementar un sistema informático fiable para garantizar un control financiero de calidad. (Anexo 3) Para verificar la validez del instrumento aplicado se realizó el cálculo del alfa de Cronbach que arrojó como resultado la validez de la encuesta, la cual se ilustra a continuación: 13 Figura 1. Gráfico encuesta inicial. Al efectuar el análisis de la encuesta esta arrojó las insuficiencias de la herramienta con la que se trabaja y la necesidad de implementar un sistema informático confiable para realizar el control financiero del proceso inversionista de la ENPA con los requisitos que hoy impone el plan de desarrollo. 1.5 Metodología de desarrollo del software La industria del software ha adquirido gran auge en las últimas décadas. Cada día son más las demandas de diferentes tipos de software menos el tiempo disponible para desarrollarlos y más cambiantes los requerimientos iniciales de éstos. Para hacer frente a esta demanda es necesario producir software de calidad en el menor tiempo posible(Pérez Ramírez, Oliveros Guntín, Alvarez Alonso, & Coello Mena, 2008a). Como toda industria, la de software también tiene normas y pasos a seguir para ayudar a los desarrolladores en la producción: las metodologías de desarrollo de software. A través de los años han surgido diferentes metodologías. Algunas hacen más énfasis en el control del proceso, estableciendo rigurosamente las actividades y los artefactos que se deben producir, las herramientas y notaciones a utilizar, las cuales se denominan metodologías tradicionales; y 14 otras denominadas metodologías ágiles se centran más en las personas que en el proceso, dan mayor valor al individuo, al equipo de desarrollo y a su colaboración con el cliente; proponiendo un desarrollo incremental del software con iteraciones muy cortas y la documentación necesaria entreellas se encuentra Extreme Programming (XP) (Pérez Ramírez et al., 2008a). Programación extrema(XP) XP es definida por su autor, Kent Beck, como una metodología ágil para el desarrollo de software destinada a ser utilizada por equipos de desarrollo pequeños y medianos (de 2 a 10 miembros) que se enfrenten a proyectos con requerimientos imprecisos o cambiantes. Las relaciones desarrollador- desarrollador y desarrolladores-cliente son fundamentales en esta metodología. La adopción del cliente como un miembro más del equipo de desarrollo es la clave del éxito(Pérez Ramírez et al., 2008a). El ciclo de trabajo de esta metodología consta de 5 fases: Exploración: en esta fase el cliente redacta las historias de usuario (HU), se calculan los puntos estimados de cada HU, los desarrolladores estudian las tecnologías a utilizar. Planificación: fase donde se asigna prioridad a las historias de usuario, se estima el esfuerzo total, el plan de iteraciones y el plan de entrega. Diseño: en esta fase se crean las tarjetas clase, responsabilidad y colaboración (CRC) las cuales definen una clase expresando sus funcionalidades y las otras clases con las que colabora. Implementación: es donde se definen las tareas de ingeniería para que los desarrolladores tengan una guía para implementar todas las HU. Pruebas: en esta fase se realizan las pruebas de aceptación a cada una de las HU para probar que cumplen con las funcionalidades que desea el cliente. Plantea (Letelier & Penadés, 2003) que XP es una metodología ágil centrada en potenciar las relaciones interpersonales como clave para el éxito en el desarrollo 15 de software, promoviendo el trabajo en equipo, preocupándose por el aprendizaje de los desarrolladores, y propiciando un buen clima de trabajo. XP se basa en realimentación continua entre el cliente y el equipo de desarrollo, comunicación fluida entre todos los participantes, simplicidad en las soluciones implementadas y coraje para enfrentar los cambios. XP se define como especialmente adecuada para proyectos con requisitos imprecisos y muy cambiantes, y donde existe un alto riesgo técnico. 1.6 Tendencias y tecnologías actuales 1.6.1Sistema informático Es un conjunto de partes que funcionan relacionándose entre sí con un objetivo preciso. Sus partes son: hardware, software y las personas que lo usan. Estos permiten almacenar, procesar y/o acceder a la información. (Alegsa, 2009) Aplicación web Es toda herramienta que se encuentre dentro de un servidor web al que un usuario puede acceder mediante un navegador web y conexión a Internet u otra red. Las ventajas que ofrecen son: Actualizaciones automáticas: a la hora de hacer uso de una aplicación web la misma estará en total dependencia de un desarrollador, quien será el encargado de las actualizaciones. No deben instalarse: solo bastará con la conexión a Internet u otra red y un navegador web como mediador, por lo tanto tampoco ocupará espacio en nuestro disco duro. Compatibilidad: solo es necesario un navegador actualizado para que sean compatibles, independientemente del sistema operativo que se tenga. 1.6.2 Arquitectura de software Arquitectura de software abarca el conjunto de decisiones importantes sobre la organización de un sistema de software, que incluye la selección de la estructura elementos y sus interfaces por el cual el sistema está compuesto.(Rey, 2015) 16 Modelo Vista Controlador (MVC) Es un patrón de diseño (solución reutilizable en problemas con un contexto común en el diseño de software) que separa los datos, la lógica de negocios y las interfaces de usuario. Está separado en tres componentes: comúnmente se encarga de comunicarse con la base de datos mediante funciones que accederán a las tablas y realizarán las funciones habituales de datos (modelo), es el código que nos permitirá presentar los datos que el modelo nos proporciona (vista) y la capa que sirve de enlace entre la vista y el modelo ya que envía comandos al modelo para actualizar su estado y a la vista correspondiente para cambiar su presentación pero no es el encargado de manipular los datos ni de generar una salida (controlador) . Está basado en la ideología de separación de conceptos.(Sandoval Gomez, 2014) 1.6.3 Lenguajes de programación Define (Pérez, 2016) y de forma sencilla que un lenguaje de programación es un lenguaje diseñado para que los humanos podamos dar instrucciones a un equipo y este realice las tareas que nosotros le solicitamos mediante ese código (conjunto de reglas sintácticas y semánticas que permiten expresar instrucciones que luego serán interpretadas). Lenguajes y tecnologías del lado del cliente JavaScript es un lenguaje de programación, al igual que PHP, se utiliza principalmente del lado del cliente (es decir, se ejecuta en nuestro ordenador, no en el servidor) permitiendo crear efectos atractivos y dinámicos rápidamente en las páginas web, gran parte de la programación en este lenguaje está centrada en describir objetos, escribir funciones que respondan a movimientos del mouse, aperturas, utilización de teclas, cargas de páginas entre otras, los navegadores modernos interpretan el código JavaScript integrado en las páginas web(González, 2014). Recientemente NodeJs servidor web completamente javascript interactúa entre la vista y el servidor sin necesidad de recargar las páginas. Hojas de Estilos en Cascada (CSS3) es un lenguaje utilizado en la presentación de documentos HTML, sirve para organizar la presentación y 17 aspecto de una página web. Este lenguaje es principalmente utilizado por parte de los navegadores web de internet y por los programadores web informáticos para elegir multitud de opciones de presentación como colores, tipos y tamaños de letra, entre otros(Sierra, 2015). Se selecciona CSS3 por los aspectos mencionados. HTML 5 (HyperText Markup Language) es una colección de estándares para el diseño y desarrollo de páginas web. Esta colección representa la manera en que se presenta la información en el explorador de internet y la manera de interactuar con ella, nos permite una mayor interacción entre nuestras páginas web, así como una mayor facilidad a la hora de codificar nuestro diseño básico. Esta nueva versión se basó en el diseño más común de las páginas web alrededor del mundo para llegar a un estándar de etiquetas que realicen las mismas tareas de manera más rápida y eficiente(Bowman, 2013a). Ajax son las siglas de Asynchronous JavaScript And XML y es una tecnología que permite a una página web actualizarse de forma dinámica sin que tenga que recargarse completamente, evitar las demoras propias de las peticiones y respuestas del servidor mediante la transmisión de datos en segundo plano usando un protocolo específicamente diseñado para la transmisión rápida de pequeños paquetes de datos, permite la transmisión de datos en múltiples formatos: XML, JSON, EBML, texto plano, HTML(Krall, 2016). Se utilizó por sus principales características que se explicaron anteriormente. Lenguaje del lado del servidor PHP (acrónimo recursivo de PHP: Hypertext Preprocessor) es un lenguaje de código abierto muy popular especialmente adecuado para el desarrollo web y que puede ser incrustado en HTML, tiene soporte para conectarse a una gran variedad de base de datos como: MySQL, PostgreSQL, Oracle, entre otras. Posee soporte de características de programación orientada a objetos, librerías incluidas que contienen clases implementadas para facilitar el trabajo de los desarrolladores. Se selecciona PHP por los aspectos mencionados y además por poseer gran rendimiento utilizando un servidor modesto.(González, 2016) 18 1.6.4 Marcos de Trabajo Según (Cristina, 2014) un framework es una estructura conceptual y tecnológica compuesta por librerías, componentes y clasesque facilitan el desarrollo ágil, seguro y escalable de una aplicación. Laravel Es un framework web MVC (Modelo Vista Controlador) escrito en PHP de última generación y diseñado con la filosofía de la convención de la configuración. Es decir que gana en simplicidad, flexibilidad y robustez. Está desarrollado con varios componentes de Symfony, y proporciona un marco de desarrollo que hace que las tareas comunes, como la autenticación, enrutamiento, sesiones y el almacenamiento en caché sea mucho más fácil de implementar.(Nuñez, 2014) A continuación se describen ventajas por las que se utilizó este marco de trabajo. Ventajas Reducción de costos y tiempos en el desarrollo y mantenimiento. Curva de aprendizaje relativamente Baja (en comparación con otros framework Php). Flexible y adaptable no solo al MVC Tradicional (Modelo vista controlador) sino que para reducir código propone usar “Routes with clousures” Buena y abundante documentación sobre todo en el sitio oficial. Hace que el manejo de los datos en Laravel no sea complejo; mediante Eloquent (ORM) la interacción con las bases de datos es totalmente orientada a objetos, siendo compatible con la gran mayoría de las bases de datos del mercado actual y facilitando la migración de nuestros datos de una forma fácil y segura. Facilita el manejo de ruteo de nuestra aplicación como así también la generación de url amigables y control de enlaces auto–actualizables lo que hace más fácil el mantenimiento de un sitio web. El sistema de plantillas Blade de Laravel, trae consigo la generación de mejoras en la parte de presentación de la aplicación como la generación de plantillas más simples y limpias en el código y además incluye un 19 sistema de cache que las hace más rápidas, lo que mejora el rendimiento de la aplicación. También cuenta con una herramienta de interfaces de líneas de comando llamada Artisan que me permite programar tareas programadas como por ejemplo ejecutar migraciones, pruebas programadas, etc. Bootstrap Un entorno de desarrollo con una serie de recursos que simplifican el desarrollo de un proyecto web con html5, css3 y Jquery, de manera que simplifica mucho el trabajo a la hora de diseñar, ya que el framework bootstrap ya tiene una buena parte del trabajo hecho lo cual simplifica mucho la tarea del desarrollo. Permite dar forma a un sitio web mediante librerías CSS que incluyen tipografías, botones, cuadros, menús y otros elementos que pueden ser utilizados en cualquier sitio web, incluye librerías jquery e integra design responsive en tus proyectos o sea se integra fácilmente a cualquier dispositivo.(ferreira, 2015) Jquery jQuery es considerado un Framework de Javascript, o ambiente de desarrollo, es un marco de desarrollo el cual contiene funcionalidades, librerías pre- desarrolladas. Nos permite agregar efectos y funcionalidades complejas a nuestro sitio web, como por ejemplo: galerías de fotos dinámicas y elegantes, validación de formularios, calendarios, hacer aparecer y desaparecer elementos en nuestra página y muchas otras poderosas opciones. Otra ventaja sin duda es la posibilidad que nos brinda de trabajar con AJAX, sin preocuparnos de los detalles complejos de la programación.(Bowman, 2013b) 1.6.5 Entorno de Desarrollo Integrado Un Entorno de Desarrollo Integrado (IDE), es un programa informático compuesto por un conjunto de herramientas de programación. Proporciona servicios integrales para los programadores informáticos para el desarrollo de software ya que para hacer un programa lo más conveniente es que tengamos un entorno de desarrollo integrado. Por lo tanto, un IDE son varias herramientas de programación agrupadas en un solo programa.(Marketing digital, 2015) 20 PhpStorm PhpStorm es uno de los entornos de programación más completos de la actualidad, permite editar código no sólo del lenguaje de programación PHP. Es perfecto para trabajar con Symfony, Drupal, WordPress, Zend Framework, laravel, Magento, CakePHP, Yii, y otros marcos. Proporciona la mejor finalización de código, refactorización y la prevención de errores en la marcha. Posee características que ayudan a escribir código limpio que es fácil de mantener, proporciona un autocompletado de código bueno y permite la gestión de proyectos con facilidad.(PhpStorm, 2016) 1.6.6 Sistema de Gestión de Bases de Datos (SGBD) Un Sistema Gestor de Base de Datos (SGBD) es un conjunto de programas que administran y gestionan la información contenida en una base de datos. Ayuda a realizar la definición, la manipulación, el control de la seguridad y la privacidad de los datos y el mantenimiento de la integridad de éstos dentro de la base de datos.(Hernández Camejo & Martínez Sánchez, 2015) Postgres PostgreSQL es un SGBD relacional, robusto, confiable y mantiene la integridad de los datos. Se caracteriza por ser un sistema de alto rendimiento y gran flexibilidad al permitir definir funciones personalizadas por medio de varios lenguajes, está desarrollado bajo código abierto, es multiplataforma, permite que los clientes hagan búsquedas (sólo de lectura) en los servidores mientras están en modo de recuperación o esperad de esta manera podemos hacer tareas de mantenimiento o recuperación sin bloquear completamente el sistema.(Anton, 2015) 1.6.7 Herramienta CASE Visual Paradigm Las herramientas CASE comprenden un conjunto de programas de diferentes tipos, empleados para ayudar a las actividades del proceso de desarrollo de software, tales como: análisis de requerimientos, modelado de sistemas, depuración y pruebas. Visual Paradigm es una herramienta CASE que soporta el lenguaje UML, dispone de varios diagramas como los de clases, de objetos, de casos de uso 21 del negocio y de paquetes; brinda facilidades de uso para la creación de estos y permite generar código a partir de ellos.(Hernández Camejo & Martínez Sánchez, 2015) 1.7 Análisis crítico de las fuentes y bibliografías utilizadas Las bibliografías y fuentes utilizadas para el desarrollo de esta investigación, fueron tomadas de sitios oficiales, se compararon sus contenidos y se tomó posición por los escogidos. Fueron consultadas también tesis de años anteriores, y se hizo uso, además, de las conferencias de las asignaturas recibidas. Las informaciones tomadas de estas fuentes y bibliografías son múltiples y se basó en las tecnologías actuales y de mejor rendimiento. 22 1.8 Conclusiones parciales del capítulo El estudio realizado sobre los referentes teóricos que sustentan la investigación arrojó como solución al objetivo propuesto, la selección de una aplicación web por sus características. La arquitectura que se adoptó fue Modelo Vista Controlador, como lenguajes de programación se utilizó PHP 5 y JavaScript, el sistema gestor de base de datos PostgreSQL 9.4, los frameworks Laravel 5.2 y Bootstrap 3.2, el entorno de desarrollo PhpStorm 9.0.2 y por último la herramienta CASE Visual Paradigm. La metodología de desarrollo de software escogida para la elaboración de la solución es la Programación Extrema. 23 Capítulo 2 Exploración, planificación y diseño de la solución propuesta 2.1 Introducción En el presente capítulo se elabora la solución propuesta al cumplir con las fases de exploración, planificación y diseño definidas por la metodología ágil Programación Extrema (XP). Según la metodología se desarrollan los artefactos correspondientes como son: las historias de usuario (HU), el plan de iteraciones, el plan de entregas y las tarjetas CRC (Clase, Responsabilidad y Colaboración). Es argumentada la arquitectura y los patrones de diseño utilizados, así como se describeel modelo de datos. 2.2 Descripción del sistema propuesto En este trabajo se propone el desarrollo de un sistema informático que constituirá un módulo del portal principal de trabajo de la Unidad Empresarial de Base Proyectos e Ingeniería del MINAG (ENPA). Esta logra un mejor control financiero, organización, seguridad y persistencia de la información en la gestión del proceso inversionista del programa de desarrollo agropecuario. La interfaz es sencilla y de fácil navegabilidad, brinda información acerca de la ENPA, además les permite a los inversionistas monitorear mediante gráficos los gastos realizados por cada concepto de inversión, suministros utilizados y su cantidad en tiempo real. El sistema cuenta con 3 roles: administrador: es el encargado de gestionar los usuarios; especialista: es quien gestiona los datos referentes al control de ejecución, gastos realizados en los conceptos de inversión, verifica quienes intervienen en el objeto de obra (constructor, suministrador) y si se importa algún equipo (la entidad importadora); el especialista doc: es el encargado de verificar y controlar la documentación requerida por la inversión, habilitar y deshabilitar la inversión según se haya concluido o desaprobado algún documento. 24 2.3 Fase de exploración Según (Letelier & Penadés, 2003) en esta fase, los clientes plantean a grandes rasgos las historias de usuario que son de interés para la primera entrega del producto. Al mismo tiempo el equipo de desarrollo se familiariza con las herramientas, tecnologías y prácticas que se utilizarán en el proyecto. Se prueba la tecnología y se exploran las posibilidades de la arquitectura del sistema construyendo un prototipo. La fase de exploración toma de pocas semanas a pocos meses, dependiendo del tamaño y familiaridad que tengan los programadores con la tecnología. 2.3.1 Historias de usuarios (HU) Las “Historias de usuarios” (“User stories”) sustituyen a los documentos de especificación funcional, y a los “casos de uso”. Estas “historias” son escritas por el cliente, en su propio lenguaje, como descripciones cortas de lo que el sistema debe realizar, deben tener el detalle mínimo como para que los programadores puedan realizar una estimación poco riesgosa del tiempo que llevará su desarrollo(Joskowicz, 2008a). Durante la fase de exploración se identificaron nueve HU. (Anexo 4) A continuación se muestran HU definidas por el cliente en conjunto con el desarrollador: Historia de Usuario Número: 1 HU: Controlar documentos. Usuario: Especialista doc Prioridad en negocio: Alta Riesgo en desarrollo: Medio Puntos estimados: 3 Iteración asignada: 1 Programador responsable: Ariel R. García Zaldivar. Descripción: El especialista doc es el encargado de controlar los documentos de la inversión integrarlos a ella y conocer su estado. Esto constituye poder realizar las acciones de listar, insertar y modificar los documentos. Observaciones: La documentación relacionada a la inversión es de vital importancia, recogen grandes volúmenes de información importante para el cliente por lo tanto no se eliminan. 25 Prototipo de interfaz: Tabla 1. Historias de usuario: Controlar documentos. Historia de Usuario Número: 1 HU: Gestionar inversión. Usuario: Especialista. Prioridad en negocio: Alta Riesgo en desarrollo: Medio Puntos estimados: 3 Iteración asignada: 1 Programador responsable: Ariel R. García Zaldivar. Descripción: El especialista gestiona datos característicos de la inversión e información relacionada. Esto constituye poder realizar las acciones de listar, insertar y modificar. Observaciones: También se gestiona la información de capital extranjero, patrocinador en caso la inversión tenga esas características. Prototipo de interfaz: 26 Tabla 2. Historias de usuario: Gestionar inversión. 2.4 Fase de planificación Esta fase según (Pérez Ramírez, Oliveros Guntín, Alvarez Alonso, & Coello Mena, 2008b) presenta las siguientes características: 1. El cliente asigna prioridad a las historias de usuario. 2. Los desarrolladores estiman el esfuerzo total. 3. Los desarrolladores estiman la velocidad del equipo. 4. El cliente y los desarrolladores elaboran el plan de entrega. 27 2.4.1 Estimación de esfuerzo por historias de usuarios La estimación de esfuerzo que se realizó para cada una de las historias de usuario arrojó el siguiente resultado: Historias de usuarios Puntos estimados (semanas) 1 Controlar documentos. 3 2 Gestionar inversión. 3 3 Gestionar componentes de la inversión. 3 4 Deshabilitar inversión. 2 5 Obtener la cantidad de gastos por componentes. 2 6 Obtener front-end. 2 7 Gestionar empresa inversionista. 2 8 Gestionar supervisores. 2 9 Obtener reportes. 2 Tabla 3. Estimación de esfuerzo por historia de usuario. 2.4.2 Plan de iteraciones Plantea (Joskowicz, 2008a) que las historias de usuarios seleccionadas para cada entrega son desarrolladas y probadas en un ciclo de iteración, de acuerdo al orden preestablecido. Al comienzo de cada ciclo, se realiza una reunión de planificación de la iteración. Cada historia de usuario se traduce en tareas específicas de programación. Asimismo, para cada historia de usuario se establecen las pruebas de aceptación. Estas pruebas se realizan al final del ciclo en el que se desarrollan, pero también al final de cada uno de los ciclos siguientes, para verificar que subsiguientes iteraciones no han afectado a las anteriores. Las pruebas de aceptación que hayan fallado en el ciclo anterior son analizadas para evaluar su corrección, así como para prever que no vuelvan a ocurrir. 28 Iteración 1: En esta iteración se implementaron las historias de usuario de mayor prioridad correspondiente al control de documentos en la primera etapa de pre-inversión así como la gestión de la inversión y sus componentes. Se implementaron funcionalidades como insertar, modificar, listar documentos registrar su estado, así como habilitar y deshabilitar la inversión. Iteración 2: En esta iteración se realizaron las historias de usuario pertenecientes a deshabilitar la inversión, al control de gastos realizados por componentes durante las etapas de la inversión así como su visualización mediante un front-end. Se implementaron funcionalidades como insertar, modificar, listar y mostrar mediante gráficos los gastos en componentes de la inversión. Iteración 3: En esta fase se efectuaron las historias de usuario donde se gestiona el inversionista, supervisores por inversión y se obtienen los reportes del proceso inversionista agropecuario. Al terminar la misma se completó el primer módulo del sistema para el control financiero en la gestión del proceso inversionista del programa de desarrollo agropecuario de la Isla de la Juventud. Con esta el cliente podrá probar todas las funcionalidades. 2.4.3 Duración de las iteraciones Plan de duración de las iteraciones y el orden de implementación de las historias de usuario según la prioridad establecida por el cliente, el cual se puede observar a continuación en la siguiente tabla: Iteración Historias de usuario Duración (semanas) 1 1 Controlar documentos. 9 2 Gestionar inversión. 3 Gestionar componentes de la inversión. 2 4 Deshabilitar inversión. 6 5 Obtener la cantidad de gastos por componentes. 6 Obtener front-end. 29 Tabla 4. Duración de Iteraciones. 2.4.4 Plan de entregas Según (Letelier & Penadés, 2003) la idea es producir rápidamente versiones del sistema que sean operativas, aunque obviamente no cuenten con toda la funcionalidad pretendida para el sistema pero sí que constituyan un resultado de valor para el negocio. A continuación se mues el plan de entregas en la siguiente tabla:Iteración Fecha de entrega 1 7 de marzo de 2016 2 18 de abril de 2016 3 30 e mayo de 2016 Tabla 5. Plan de entregas. 2.5 Diseño Plantea(Letelier & Penadés, 2003) que se debe diseñar la solución más simple que pueda funcionar y ser implementada en un momento determinado del proyecto. La complejidad innecesaria y el código extra debe ser removido inmediatamente. El autor asume el concepto de diseño del software citado por (Letelier & Penadés, 2003) que fuera dado por el estadounidense máster en ciencias en el área de ciencias de la computación Kent Beck cuando planteó que es y cito…” diseño adecuado para el software es aquel que: supera con éxito todas las pruebas, no tiene lógica duplicada, refleja claramente la intención de 3 7 Gestionar empresa inversionista. 6 8 Gestionar supervisores. 9 Obtener reportes. Total 21 30 implementación de los programadores y tiene el menor número posible de clases y métodos…” 2.5.1 Arquitectura de software La arquitectura de la aplicación está dada según el patrón arquitectónico Modelo Vista Controlador (MVC) que separa los datos, la interfaz de usuario, y la lógica de control en tres componentes distintos. A continuación se ilustra el patrón arquitectónico MVC: Figura 2. Patrón arquitectónico MVC. 2.5.2 Patrones de diseño Los patones de diseño son descripciones de clases y objetos relacionados, que tienen como particularidad la resolución de problemas de diseño comunes en un determinado contexto. Ayudan a capturar conocimiento y a crear un vocabulario técnico de los aspectos claves de una estructura de diseño común, lo cual los hace útiles para crear un diseño orientado a objetos flexible, elegante y reutilizable. El autor asume la definición de Patrones de diseño por (Hernández Camejo & Martínez Sánchez, 2015) escrita por (Varela, 2011). Identifican además las clases e instancias participantes, los roles, las colaboraciones y la distribución de responsabilidades. Cada patrón de diseño se centra en un problema concreto, describe cómo aplicarlo y si tiene sentido 31 hacerlo, teniendo en cuenta otras restricciones de diseño, así como las consecuencias, las ventajas e inconvenientes del uso. Para diseñar la herramienta se emplearon un conjunto de patrones de diseño que constituyen soluciones simples y elegantes a problemas específicos y comunes del diseño orientado a objetos. A continuación se describen los patrones empleados. Patrones Generales de Software para Asignar Responsabilidades (GRASP) Los patrones GRASP describen los principios fundamentales de la asignación de responsabilidades a objetos, expresados en forma de patrones. Son a la vez principios o técnicas de trabajo utilizadas para mejorar los diseños orientados a objetos, como el polimorfismo y la alta cohesión. Para el desarrollo del diseño del sistema se definen los siguientes patrones GRASP: Alta cohesión: asigna una responsabilidad de modo que la cohesión siga siendo alta. La cohesión es una medida de cuán relacionadas y enfocadas están las responsabilidades de una clase. Un elemento con responsabilidades altamente relacionadas y que no hace una gran cantidad de trabajo tiene alta cohesión. Bajo acoplamiento: mide la fuerza con que una clase está conectada a otra, de esta forma una clase con bajo acoplamiento debe tener un número mínimo de dependencia con otras clases. Este patrón se tuvo presente debido a la importancia que se le atribuye a realizar un diseño de clases independientes que puedan soportar los cambios de una manera fácil y a la vez permitan la reutilización Controlador: sirve como intermediario entre una determinada interfaz y el algoritmo que la implementa, de tal forma que es la que recibe los datos del usuario y la que los envía a las distintas clases según el método llamado. Este patrón sugiere que la lógica de negocios debe estar separada de la capa de presentación, esto para aumentar la reutilización de código y a la vez tener un mayor control. 32 Creador: guía la asignación de responsabilidades relacionadas con la creación de objetos. El propósito fundamental de este patrón es encontrar un creador que se debe conectar con el objeto producido en cualquier evento. Brinda soporte a un bajo acoplamiento lo que supone menos dependencias respecto al mantenimiento y mejores oportunidades de reutilización. Experto: nos indica, por ejemplo, que la responsabilidad de la creación de un objeto o la implementación de un método, debe recaer sobre la clase que conoce toda la información necesaria para crearlo. De este modo obtendremos un diseño con mayor cohesión y así la información se mantiene encapsulada (disminución del acoplamiento). 2.5.3 Tarjetas CRC La técnica CRC propone una forma de trabajo, preferentemente grupal, para encontrar los objetos del dominio de la aplicación, sus responsabilidades y cómo colaboran con otros para realizar tareas. Esta técnica utiliza las llamadas tarjetas CRC, las cuáles registran el nombre de las clases, sus responsabilidades y las otras clases con las que colaboran. El autor asume la definición de técnica CRC citado por (Hernández Camejo & Martínez Sánchez, 2015) escrito por (Beck, y otros, 1989). Las tarjetas CRC ayudan al equipo a identificar las clases que participan en el diseño de la herramienta. Las responsabilidades de una clase son cualquier información que ella conoce o actividad que realiza y los colaboradores son clases que se requieren para recibir información necesaria y completar una responsabilidad. (Anexo 5) A continuación se muestran tarjetas CRC: Clase: Inversion Responsabilidades: Listar las inversiones que existen. Inserta nuevas inversiones. Obtener detalles de inversión. Colaboradores: Empresa Estado Tabla 6. Tarjeta CRC: Inversion. 33 Clase: GastoEquipo Responsabilidades: Listar todos los gastos por equipos en las inversiones habilitadas. Editar los gastos por equipos. Insertar todos los gastos por equipos en las inversiones habilitadas. Colaboradores: Inversion Equipo Tabla 7. Tarjeta CRC: GastoEquipo. 2.5.4 Modelo de datos El modelo de datos permite describir los elementos de la realidad que intervienen en el proceso inversionista y la forma en que se relacionan estos elementos entre sí. A continuación el modelo de datos del sistema propuesto: Figura 3. Modelo de datos. 34 2.6 Conclusiones parciales del capítulo La fase de exploración posibilitó la realización de las historias de usuarios donde quedaron expuestos los requisitos necesarios para la solución. La planificación del plan de iteraciones permitió conocer las historias de usuario de cada iteración y el orden de prioridad de cada una para su desarrollo. En el plan de entrega se planteó las diferentes fechas aproximadas en que se entregaron las versiones de la aplicación con la fecha final de entrega de la versión completa. La arquitectura de la aplicación sustentada en el patrón arquitectónico Modelo Vista Controlador, facilitó separar los componentes del software para implementarlos por separados y realizar labores de mejora de forma. El diseño de las tarjetas CRC permitió identificar las clases principales, las relaciones entre ellas y sus responsabilidades. 35 Capítulo 3 Implementación, prueba y validación diseño de la solución propuesta 3.1 Introducción En el presente capítulo se realizan las tareas de ingeniería, se representa a través del diagrama de despliegue la forma física en que quedará distribuido el sistema, se exponen las pruebas de aceptación realizadas por el cliente para validar la aplicación así como los resultados de la encuesta final, y los resultados de los métodos aplicados. 3.2Implementación La metodología XP plantea que la implementación de un software debe realizarse de forma iterativa, para obtener al culminar cada iteración un producto funcional que debe ser probado y mostrado al cliente para retroalimentar a los desarrolladores con la opinión de este. (Joskowicz, 2008b) 3.2.1 Tareas de ingeniería Una vez identificadas las HU los programadores proceden a descomponer cada una en tareas específicas, las denominadas tareas de programación, que son escritas técnicamente y darán solución a las historias correspondientes, ver en Anexo 6. A continuación se muestran las tareas de ingeniería correspondiente a cada HU por iteración: 36 Tabla 8. Tareas de ingeniería por iteración. A continuación se detallan dos tareas de ingeniería correspondiente a la primera iteración: Iteración Historias de usuario Tareas de ingeniería 1 Controlar documentos. Listar documentos. Editar documentos. Insertar documentos. Gestionar inversión. Listar inversión. Editar inversión. Insertar inversión Controlar componentes de la inversión. Listar componentes. Editar componentes. Insertar componentes. 2 Deshabilitar inversión. Deshabilitar la inversión. Obtener la cantidad de gastos por componentes. Mostrar el acumulado de gastos por componente. Obtener front-end. Mostrar gráficos sobre el estado de gastos incurridos por componente. 3 Gestionar empresa inversionista. Listar empresa inversionista. Editar empresa inversionista. Insertar empresa inversionista. Eliminar datos relacionados a la empresa inversionista. Gestionar supervisores. Listar supervisores. Editar supervisores. Insertar supervisores. Listar supervisores por inversión. Obtener reportes. Generar reporte del control de gastos por componentes. Generar reporte del control del proceso inversionista. 37 Tarea de ingeniería Número de tarea: 1 Número de HU: 1 Nombre de la tarea: Listar documentos. Tipo de tarea: Desarrollo Puntos Estimados: 0.3 Fecha inicio: 02/02/2016 Fecha fin: 03/02/2016 Programador responsable: Ariel R. García Zaldivar. Descripción: Se muestran los documentos de las inversiones en una interfaz que se designa para esto. Una vez que el especialista doc accede a la vista de los documentos, automáticamente aparecerán todos los registros que están almacenados en la base de datos. Tabla 9. Tareas de ingeniería por iteración: Listar documentos. Tarea de ingeniería Número de tarea: 6 Número de HU: 2 Nombre de la tarea: Insertar inversión. Tipo de tarea: Desarrollo Puntos Estimados: 0.6 Fecha inicio: 12/02/2016 Fecha fin: 15/02/2016 Programador responsable: Ariel R. García Zaldivar. Descripción: Al especialista acceder a la vista inversión y seleccionar el botón nueva inversión se muestra un modal el cual contiene los criterios de la inversión, posteriormente al accionar el botón guardar se almacena la inversión. Tabla 10. Tareas de ingeniería por iteración: Listar documentos. 3.2.2 Estándares de codificación XP promueve la programación basada en estándares, de manera que sea entendible por todos y que facilite la recodificación.(Joskowicz, 2008b) 38 Estándares de codificación para Laravel Orientado al contenido de los ficheros PHP y a los nombres de las clases y métodos. Deben usarse únicamente las etiquetas <? php y <?=. Debe usarse sólo UTF-8 without BOM para código PHP. Un fichero debería contener o bien estructuras y símbolos (clases, funciones, constantes, etc.) o bien partes de la lógica secundaria (informes, configuración, etc.) pero no deberían hacerse las dos cosas. Los Namespaces y las clases deben cumplir el estándar PSR-4. Las constantes de las clases deben declararse en mayúsculas usando guiones bajos como separadores. Los nombres de los métodos deben declararse en notación CamelCase. Orientado a los nombres de los Namespaces, Clases y Ficheros. Su objetivo es facilitar la carga automática de clases Las rutas completas de los Namespaces deben tener la estructura Proveedor\Namespace\NombreDeLaClase. Todas las rutas deben tener un Proveedor (Vendor Name). Los Namespaces pueden estar compuestos de todos los Sub- Namespaces que se desee. Todas las rutas deben acabar en un Nombre de Clase (Class Name). Los guiones bajos no tienen ningún significado especial (modificación sobre PSR-0). Se pueden combinar mayúsculas y minúsculas. Todos los nombres de clase deben usar un estilo 'case-sensitive'. Cada namespace puede tener tantos sub-namespaces como se quiera. Todos los archivos deben tener la extensión .php. 39 3.2.3 Diagrama de despliegue En el contexto del Lenguaje Unificado de Modelado (UML), un diagrama de despliegue se encuentra dentro de la familia de diagramas estructurales y describe un aspecto del sistema en sí. En este caso, el diagrama de despliegue describe el despliegue físico de información generada por el programa de software en los componentes de hardware. Los requerimientos mínimos de los nodos son: Servidor Web: procesador a 500 MHz (recomendado 1 GHz). Memoria RAM: mínimo 256 MB (recomendado 512 MB o superior). Servidor base de datos: Procesador a 550 MHz, Memoria RAM: 256 MB, 40 GB de Disco Duro extensible. PC cliente: Memoria RAM: 256 MB A continuación se ilustra el diagrama de despliegue del sistema: Figura 4. Diagrama de despliegue. 3.3 Prueba 40 Plantea (Letelier & Penadés, 2003) son ejecutadas constantemente ante cada modificación del sistema. Los clientes es criben las pruebas funcionales para cada historia de usuario que deba validarse. En este contexto de desarrollo evolutivo y de énfasis en pruebas constantes, la automatización para apoyar esta actividad es crucial. 3.3.1 Pruebas de aceptación Las pruebas de aceptación son creadas en base a las historias de usuarios, en cada ciclo de la iteración del desarrollo. El cliente debe especificar uno o diversos escenarios para comprobar que una historia de usuario ha sido correctamente implementada. Las pruebas de aceptación son consideradas como “pruebas de caja negra” (“Black box system tests”). Los clientes son responsables de verificar que los resultados de estas pruebas sean correctos. Asimismo, en caso de que fallen varias pruebas, deben indicar el orden de prioridad de resolución. Una historia de usuario no se puede considerar terminada hasta tanto pase correctamente todas las pruebas de aceptación. Dado que la responsabilidad es grupal, es recomendable publicar los resultados de las pruebas de aceptación, de manera que todo el equipo esté al tanto de esta información. (Joskowicz, 2008b). (Anexo 7) 41 A continuación se presentan las siguientes pruebas: Prueba de aceptación Código: HU1_P3 HU: Controlar documentos. Nombre: Insertar documentos. Descripción: Los documentos deben ser de formato doc ,pdf ,xls ,docx y el usuario debe estar registrado por el rol ‘especialista doc’ en el sistema. Condiciones de ejecución: El usuario debe estar registrado por el rol ‘especialista doc’ en el sistema. Entradas / Pasos de ejecución: Se intenta insertar los documentos al escribir los datos en los formularios y oprimir el botón “Guardar”. Resultado esperado: El sistema muestra el documento guardado. Resultado obtenido: Se obtiene el resultado esperado. Evaluación de la prueba: Satisfactoria Tabla 11. Prueba de aceptación: Controlar documentos. Prueba de aceptación Código: HU2_P2 HU: Gestionar inversión. Nombre: Editar inversión. Descripción: Prueba para la funcionalidad editar inversión del sistema. Condiciones de ejecución: El usuario debe estar registrado por el rol ‘especialista’ en el sistema. Entradas / Pasos