scieee AI-readable full text Open interactive document viewer

Desarrollo de un de sistema de servicio al cliente con Microsoft Dynamics Customer Service integrándolo con servicios cognitivos de Azure reconocimiento de intención y análisis de voz y texto

Cardona Arévalo, Álvaro

Abstract

Grado en Ingeniería Informática

Full text

TRABAJO FIN DE GRADO Grado en Ingenier ´ ıa Inform´ atica 2020/2021 Desarrollo de un de sistema de servicio al cliente con Microsoft Dynamics Customer Service integr´andolo con servicios cognitivos de Azure reconocimiento de intenci´on y an´alisis de voz y texto Autor: ´ Alvaro Cardona Ar´evalo Tutor UVa: Benjam´ın Sahelices Fern´andez Tutores Everis: Alberto Casero de la Calle ´ Alvaro Est´ebanez Barrena Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Agradecimientos Agradecer a mi familia, por su apoyo incondicional. Gracias a esa fe depositada en mi y alg´un que otro empuj´on, que han hecho que hoy pueda presumir de ser Ingeniero Inform´atico. A mi pareja, por su constante apoyo y cari˜no, que ha estado siempre ah´ı para escucharme y me ha levantado el ´animo en esos d´ıas de baj´on y falta de lucidez. A mis tutores de Everis, ´ Alvaro Est´ebanez y Alberto Casero, por ofrecerme esta oportunidad y por la implicaci´on para ense˜narme y ayudarme en este proyecto. De ellos he aprendido mucho. A mi tutor, Benjam´ın Sahelices, por acompa˜narme y ayudarme en esta etapa. Y por ´ultimo, menci´on especial a mis amigos de El Team, por las buenas experiencias vividas, que han hecho de mi formaci´on en la Universidad una etapa inolvidable. 2 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 3 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Resumen “El cliente siempre tiene la raz´on”. Este lema tiene una gran importancia hoy en d´ıa. La satisfacci´on del cliente es una prioridad para la mayor´ıa de las empresas, por lo que un buen servicio de atenci´on al cliente es fundamental para alcanzar el ´exito. Este proyecto se ha llevado a cabo con objeto de mejorar el servicio de atenci´on al cliente. Este documento presenta el desarrollo de un sistema de servicio al cliente con servicios cognitivos de Microsoft Azure, integrados para la plataforma Microsoft Dynamics 365, localizada en la nube. La soluci´on implementada ofrece un an´alisis de texto y reconocimiento de intenci´on, destinados a mejorar el tratamiento de incidencias y conseguir una mayor satisfacci´on del cliente. 4 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 5 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Abstract “The customer is always right”. This motto is of great importance today. Customer satisfaction is a priority for most companies. This is why good customer service is critical to success. This project has been carried out in order to improve customer service. This document presents the development of a customer service system with integrated Microsoft Azure cognitive services for the Microsoft Dynamics 365 cloud platform. The implemented solution offers text analysis and acknowledgement of intent, aimed at improving incident handling and achieving higher customer satisfaction. 6 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 7 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica ´ Indice 1. Introducci´on 15 1.1. Objetivosdeltrabajo................................... 16 2. Entorno tecnol´ogico 17 2.1. MicrosoftDynamics365 ................................. 18 2.2. MicrosoftAzure...................................... 20 2.3. Otrasherramientas.................................... 23 2.3.1. Microsoft Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.3.2. Plugin Registration Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.3.3. C#......................................... 23 2.3.4. GanttProject ................................... 23 2.3.5. StarUML ..................................... 24 2.3.6. LaTeX....................................... 24 3. An´alisis 25 3.1. Requisitos......................................... 26 3.1.1. Requisitos Funcionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.1.2. Requisitos no Funcionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.2. Roles............................................ 32 3.3. Actores .......................................... 33 3.4. Casosdeuso........................................ 34 4. Dise˜no 43 4.1. Diagramasdesecuencia.................................. 44 4.2. Arquitectural´ogica.................................... 52 5. Plan de proyecto 55 5.1. Planificaci´on del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 5.1.1. Sprint1 ...................................... 57 5.1.2. Sprint2 ...................................... 58 5.1.3. Sprint3 ...................................... 60 5.1.4. Sprint4 ...................................... 61 5.1.5. Sprint5 ...................................... 62 5.1.6. Sprint6 ...................................... 63 5.1.7. Sprint7 ...................................... 64 5.1.8. Sprint8 ...................................... 65 5.2. Presupuestodelproyecto................................. 67 5.3. Gesti´onderiesgos..................................... 71 6. Implementaci´on y pruebas 76 6.1. Personalizaci´on del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 6.1.1. Registro de un producto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 6.1.2. Registro de un cliente potencial . . . . . . . . . . . . . . . . . . . . . . . . . 78 8 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 1. Introducci´on El servicio de atenci´on al cliente se define como la asistencia y asesoramiento que una empresa ofrece a las personas que compran o utilizan sus productos o servicios. Este servicio puede suponer la diferencia entre el ´exito o el fracaso de un negocio. El lado humano del servicio de atenci´on al cliente es lo que realmente define una buena atenci´on al cliente. Los clientes esperan respuestas r´apidas y en los canales que ellos eligen, pero estas son las expectativas m´ınimas. Las experiencias que ganan a los clientes tienen que ver con c´omo sienten que se les trata. Un servicio de atenci´on al cliente es excelente cuando supera las expectativas de un cliente. Esto podr´ıa incluir ofrecer un soporte proactivo y anticiparse a las necesidades de los clientes o adelantarse a un problema antes de que ocurra. [1] Este proyecto se focalizar´a en un soporte reactivo, que consiste en la atenci´on que surge cuando un cliente contacta con la empresa por diferentes motivos. Concretamente, el motivo objeto de estudio es el reporte de incidencias relacionadas a la venta de un producto o servicio. La aplicaci´on a desarrollar se encargar´a de interpretar los mensajes de incidencia de los clientes y asignarlos a una cola espec´ıfica en funci´on de su interpretaci´on. Para esta interpretaci´on se utilizar´an funciones cognitivas de reconocimiento de intenci´on y an´alisis de voz y texto. Dynamics 365 es un sistema CRM (Customer Relationship Management), proporciona una soluci´on de gesti´on de las relaciones con clientes, orientada normalmente a gestionar tres ´areas b´asicas: la gesti´on comercial, el marketing y el servicio postventa o de atenci´on al cliente. Por tanto, esta plataforma cloud permitir´a gestionar el proceso de venta requerido para este trabajo. Sobre el sistema se integrar´an servicios cognitivos con Azure, cuyo objetivo es ofrecer, por medio de la interpretaci´on de incidencias en funci´on de reconocimiento de intenciones y an´alisis de voz y texto, un soporte reactivo que optimice la satisfacci´on de los clientes. Se observar´a, que finalmente no ha sido posible implementar la funci´on de an´alisis de voz, ya que ha quedado fuera del alcance de un trabajo de fin de grado. A lo largo de esta memoria se describe, el proceso de desarrollo de una aplicaci´on que permita interpretar y analizar incidencias, y las asigne a una cola diferente en funci´on de la satisfacci´on aparente del cliente. El desarrollo de una aplicaci´on no se centra exclusivamente en su implementaci´on, sino que es imprescindible realizar una planificaci´on, an´alisis y dise˜no sobre la aplicaci´on. 15 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 1.1. Objetivos del trabajo En este trabajo de fin de grado se realizar´a la integraci´on de servicios cognitivos a trav´es de Azure con el objetivo de desarrollar un sistema de servicio al cliente con reconocimiento de intenci´on y an´alisis de voz y texto, por medio de Microsoft Dynamics Customer Service. Para conseguir este objetivo, se deben satisfacer diferentes objetivos espec´ıficos: Comprender el modelo de gesti´on CRM, orientado al cliente. Formarse en la herramienta personalizable Microsoft Dynamics 365. Formarse en el servicio de computaci´on Microsoft Azure. Integrar funciones inteligentes a trav´es de los servicios cognitivos de Azure. Realizar el an´alisis y dise˜no de una herramienta que integre servicios cognitivos para ofrecer un servicio al cliente con reconocimiento de intenci´on y an´alisis de texto. Realizar el an´alisis y dise˜no de una herramienta que integre servicios cognitivos para ofrecer un servicio al cliente con reconocimiento de intenci´on y an´alisis de voz. Implementar una aplicaci´on que integre servicios cognitivos para ofrecer un servicio al cliente con reconocimiento de intenci´on y an´alisis de texto. Implementar una aplicaci´on que integre servicios cognitivos para ofrecer un servicio al cliente con reconocimiento de intenci´on y an´alisis de voz. Valorar el posible uso de la aplicaci´on a nivel empresarial. 16 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 2. Entorno tecnol´ogico La transformaci´on digital es un hecho y cada vez m´as se demandan productos y servicios que se ajustan a necesidades m´as concretas. Por esta raz´on, Microsoft est´a cambiando su modelo de licenciamiento hacia un sistema m´as adaptable. El producto no ha cambiado, lo que ha cambiado es la forma de consumirlo y los servicios o productos m´as rentables se encuentran alojados en la nube. La tecnolog´ıa nube est´a englobada en tres grandes vertientes dependiendo de la manera en la que se comercializa: [2] IaaS: Infraestructura como servicio que el cliente alquila y es totalmente escalable dependiendo de las necesidades. PaaS: Plataforma como servicio donde puedes contar con las herramientas adecuadas para el desarrollo en nube evitando sobrecargas de sistema. SaaS: Software como servicio que permite el alquiler de licencias dependiendo de las necesidades de cada usuario. [2] Figura 1: Vertientes de la nube Dentro de estas vertientes, Microsoft tiene soluciones que aportan valor diferencial a un negocio, dot´andolo de mayor rentabilidad y un mejor rendimiento. Entre otras, Dynamics 365 yAzure, focos principales en el desarrollo de este trabajo de fin de grado. En este apartado se describen las diferentes herramientas tecnol´ogicas que se han utilizado para el desarrollo del proyecto. 17 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 2.1. Microsoft Dynamics 365 Actualmente, un negocio exitoso es aquel que analiza la informaci´on con la inteligencia necesaria para anticiparse y responder a las necesidades de los clientes en tiempo real. Aqu´ı es donde aparece Microsoft Dynamics 365. Dynamics 365 es un conjunto de aplicaciones empresariales inteligentes que ayudan a gestionar un negocio y ofrecen mejores resultados a trav´es de conocimientos predictivos generados mediante inteligencia artificial. [3] Con la potencia de la nube inteligente de Microsoft, integra a la perfecci´on las funcionalidades de CRM y ERP, junto con las aplicaciones de productividad, que permiten identificar y conseguir nuevas oportunidades. Customer Relationship Management (CRM): Un software CRM es una soluci´on de gesti´on de las relaciones con clientes que, permite centralizar en una base de datos todas las interacciones entre una empresa y sus clientes. [4] Esta soluci´on CRM de Microsoft cuenta con potentes herramientas para mejorar los procesos de venta, marketing y servicio al cliente de la empresa. Junto con la integraci´on de Microsoft Office Outlook, Microsoft Dynamics CRM ofrece una soluci´on r´apida, flexible y econ´omica. Microsoft Dynamics CRM contribuye a conseguir una mejora consistente y medible en los procesos empresariales diarios de: •Ventas •Servicio •Marketing •Atenci´on al cliente [5] Enterprise Resource Planning (ERP): Un ERP es es un software de gesti´on empresarial que permite planificar y controlar los procesos y recursos de negocio de una empresa. Se trata de conseguir que todos los datos de la compa˜n´ıa est´en integrados y conectados. Un ERP bien gestionado optimiza los procesos de la empresa, da acceso a la informaci´on a todos los actores que la necesitan y agiliza la respuesta de cara al cliente. [6] Figura 2: CRM y ERP 18 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Dynamics 365 for Customer Service Este proyecto est´a enfocado principalmente a la parte de servicio de atenci´on al cliente, conocida como Microsoft Dynamics Customer Service.Dynamics 365 for Customer Service es un conjunto de funcionalidades centradas en mejorar la atenci´on al cliente y su experiencia global con los servicios de la empresa, ofreciendo recursos que se adaptan a las necesidades propias de cada negocio. De esta forma, se logran relaciones m´as directas relaciones m´as directas y ´agiles, que refuerzan la imagen de la empresa de cara al p´ublico y mejoran la fidelizaci´on de los que ya conf´ıan en los servicios ofrecidos. [7] Dynamics 365 for Customer Service destaca por: Comunicaci´on omnicanal: Se trata de una herramienta que coordina la programaci´on de reuniones en ambas direcciones. Mediante una planificaci´on automatizada es sencillo organizar el tiempo de los t´ecnicos de campo de manera eficiente, y administrar m´as ´ordenes de trabajo por d´ıa. Gesti´on de existencias: Esta soluci´on incluye todo lo necesario para la gesti´on de inventario en todas las localidades. Las actualizaciones constantes garantizan que siempre se tenga la informaci´on en tiempo real para supervisar el stock del servicio y la reserva oportuna del material requerido. Inteligencia artificial: Predicci´on media y proactividad en la prestaci´on de servicios a los clientes por medio de herramientas anal´ıticas. Ofrece informes interactivos y visualizaci´on de datos que ayudan para identificar tendencias y predecir oportunidades. [8] Dynamics 365 for Sales Para llevar a cabo un proceso de servicio de atenci´on al cliente basado en incidencias, como sucede en este proyecto, es imprescindible la existencia de un proceso de venta. Aqu´ı es donde aparece Dynamics 365 for Sales, un conjunto de aplicaciones especialmente pensadas para conocer las necesidades de los clientes, favorecer la relaci´on con ellos, atraerlos eficazmente y cerrar acuerdos. Dynamics 365 for Sales ofrece m´ultiples ventajas: Venta inteligente Proporciona a los clientes lo que necesitan Impulsa la prodctividad de ventas Mejora la preparaci´on de los empleados Mejora el rendimiento de ventas Aumenta la rentabilidad de las ventas Consolida tus clientes Innova en el negocio [9] 19 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 2.2. Microsoft Azure Azure es la plataforma de computaci´on en la nube p´ublica de Microsoft. Proporciona una gama de servicios en la nube, incluidos los de computaci´on, anal´ıtica, almacenamiento y redes. Los usuarios pueden elegir entre estos servicios para desarrollar y escalar nuevas aplicaciones, o ejecutar aplicaciones ya existentes en la nube. [10] Microsoft Azure se considera ampliamente como un servicio de plataforma como servicio (PaaS) e infraestructura como servicio (IaaS). Microsoft clasifica los servicios de Azure en once tipos principales de productos: C´omputo: Estos servicios proporcionan m´aquinas virtuales, contenedores, procesamiento por lotes y acceso a aplicaciones remotas. Web y m´ovil: Estos servicios soportan el desarrollo y despliegue de aplicaciones web y m´oviles, y tambi´en ofrecen funciones para la administraci´on, notificaci´on y generaci´on de informes de API. Almacenamiento de datos: Esta categor´ıa incluye las ofertas de base de datos como servicio para SQL y NoSQL, as´ı como almacenamiento en la nube no estructurado y en cach´e. Anal´ıtica: Estos servicios proporcionan an´alisis y almacenamiento distribuidos, as´ı como anal´ıtica en tiempo real, an´alisis de big data, lagos de datos, aprendizaje autom´atico y data warehousing. Redes: Este grupo incluye redes virtuales, conexiones y pasarelas dedicadas, as´ı como servicios para la administraci´on del tr´afico, el equilibrio de carga y el alojamiento del sistema de nombres de dominio (DNS). Red de entrega de contenido y medios (CDN): Estos servicios incluyen streaming por demanda, codificaci´on y reproducci´on e indexaci´on de medios. Integraci´on h´ıbrida: Son servicios para la copia de seguridad de servidores, la recuperaci´on de sitios y la conexi´on de nubes privadas y p´ublicas. Gesti´on de identidades y accesos (IAM): Estas ofertas garantizan que solo los usuarios autorizados puedan utilizar los servicios de Azure, y ayudar a proteger las claves de cifrado y otra informaci´on confidencial. Internet de las cosas (IoT): Estos servicios ayudan a los usuarios a capturar, monitorear y analizar los datos de IoT, de sensores y otros dispositivos. Desarrollo: Estos servicios ayudan a los desarrolladores de aplicaciones a compartir c´odigo, probar aplicaciones y rastrear posibles problemas. Azure soporta una variedad de lenguajes de programaci´on de aplicaciones, incluyendo JavaScript, Python, .NET y Node.js. 20 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Gesti´on y seguridad: Estos productos ayudan a los administradores de nube a gestionar su implementaci´on de Azure, a programar y ejecutar trabajos, y a crear automatizaci´on. Este grupo de productos tambi´en incluye capacidades para identificar y responder a amenazas de seguridad en la nube. [10] Para el desarrollo de este proyecto, se ha fijado el foco en Azure Cognitive Service. Estos son una serie de servicios en forma de API REST creadas por Microsoft que facilitan el uso de la inteligencia artificial de una forma sencilla y directa a todas las aplicaciones. Estos se dividen en cinco grandes categor´ıas: Visi´on: Las APIs de esta categor´ıa ayudan a identificar cosas como objetos o caras (reconocimiento facial) dentro de im´agenes. Tambi´en permiten identificar emociones tanto en im´agenes como en v´ıdeos con caras. Voz: Estas APIs de voz permiten hacer cosas tales como convertir el texto en voz y viceversa. Conocimiento: Estas APIs permiten, por ejemplo, recomendar productos a clientes dependiendo de la actividad pasada del usuario. Tambi´en pueden ayudar a extraer informaci´on relevante dentro de textos. B´usqueda: Estas APIs proporcionan capacidades de b´usqueda dentro de nuestras aplicaciones usando como motor Bing.com. Pueden ayudar en cosas como la b´usqueda de im´agenes, noticias, v´ıdeos y p´aginas web. Lenguaje: Estas APIs se pueden usar para extraer an´alisis del sentimiento de textos o detectar texto en escritos a mano. Tambi´en ayudan a realizar correcciones gramaticales y ortogr´aficas en textos. [11] En este proyecto se ha utilizado uno de los servicios de lenguaje, Text Analytics. Text Analytics Text Analytics API es un servicio basado en la nube que proporciona caracter´ısticas de procesamiento de lenguaje natural (NLP) para miner´ıa de texto y an´alisis de texto, incluidos: an´alisis de sentimiento, miner´ıa de opiniones, detecci´on de idiomas y reconocimiento de entidades con nombre.[12] Los correos electr´onicos, las rese˜nas en l´ınea, los tweets, las notas de los agentes del centro de llamadas, los resultados de las encuestas y otros tipos de comentarios escritos contienen informaci´on sobre sus clientes. El an´alisis de texto es la forma de descubrir el significado de todo este texto no estructurado. Permite descubrir patrones y temas, revelando los deseos y necesidades de los clientes. [13] Text Analytics ofrece diferentes funciones: An´alisis de opiniones/sentimientos 21 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Extracci´on de frases clave Detecci´on de idiomas Reconocimiento de entidades con nombre El objetivo de este trabajo de fin de grado es la comprensi´on de la satisfacci´on de los clientes, por lo que resulta de inter´es la funcionalidad del an´alisis de opiniones. El an´alisis de sentimiento se utiliza para averiguar qu´e piensa el p´ublico de una marca o tema espec´ıfico mediante la miner´ıa de texto, con el fin de obtener pistas acerca de si sus opiniones son positivas o negativas. La caracter´ıstica proporciona etiquetas de opini´on (“negative”, “neutral” y “positive”) basadas en la mayor puntuaci´on de confianza que ha encontrado el servicio tanto en el nivel de oraci´on como en el de documento. Esta caracter´ıstica tambi´en devuelve puntuaciones de confianza entre 0 y 1 para todos los documentos, con el fin de indicar una opini´on positiva, neutra o negativa. [12] En caso de requirir un an´alisis m´as completo, se puede utilizar miner´ıa de opiniones. Esta es una extensi´on de An´alisis de sentimiento que proporciona informaci´on m´as detallada sobre las opiniones relacionadas con los aspectos (como los atributos de los productos o servicios) en el texto. Figura 3: An´alisis de sentimiento / Miner´ıa de opiniones Se puede afirmar, por tanto, que el servicio de an´alisis de sentimiento que ofrece Text Analytics es uno de los focos principales de este proyecto. 22 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 2.3. Otras herramientas 2.3.1. Microsoft Visual Studio Microsoft Visual Studio es un entorno de desarrollo integrado que se usa para editar, depurar y compilar c´odigo, as´ı como publicar aplicaciones. Un entorno de desarrollo integrado (IDE) es un programa con numerosas caracter´ısticas que se pueden usar para muchos aspectos del desarrollo de software. M´as all´a del editor est´andar y el depurador que proporcionan la mayor´ıa de IDE, Visual Studio incluye compiladores, herramientas de finalizaci´on de c´odigo, dise˜nadores gr´aficos y muchas m´as caracter´ısticas para facilitar el proceso de desarrollo de software.[14] Es compatible con m´ultiples lenguajes de programaci´on y entornos de desarrollo web. Este entorno se ha utilizado para el desarrollo del c´odigo de la aplicaci´on. 2.3.2. Plugin Registration Tool Plugin Registration Tool es una herramienta de registro de complementos, la cual se ha utilizado para registrar el complemento desarrollado en el sistema. 2.3.3. C# C# es el lenguaje de programaci´on que se ha utilizado para el desarrollo de la aplicaci´on. Est´a orientado a objetos. C# es considerado como una evoluci´on y necesidad de ciertas circunstancias. Este presenta los atributos positivos de C++, Java y Visual Basic y los mejora otorgando un lenguaje fuerte y actualizado. Esta herramienta fue dise˜nada para su uso en .Net, plataforma creada por Microsoft, la cual tiene como objetivo que los usuarios logren crear aplicaciones con sencillez. [15] Las principales ventajas que presenta el uso C# en comparaci´on con otros lenguajes es su potencia como lenguaje, pero tambi´en su flexibilidad. Soporta la mayor´ıa de paradigmas, destacando el paradigma funcional que combinado con el paradigma orientado a objetos hacen del lenguaje uno de los m´as potentes. [16] 2.3.4. GanttProject La planificaci´on de un proyecto es una parte de vital importancia para llevar a cabo un proyecto. Para el desarrollo de la misma se ha utilizado GanttProject.GanttProject es una aplicaci´on de escritorio multiplataforma para la programaci´on y gesti´on de proyectos. Una de sus funcionalidades principales es la creaci´on de diagramas de Gantt. El dise˜no del gr´afico permite visualizar el desglose de tareas o actividades programadas, los eventos o hitos en el desarrollo del proyecto, adem´as de las relaciones jer´arquicas y de interdependencia entre tareas. [17] Este programa permite incluir los recursos humanos utilizados para cada tarea y el coste asociado a los mismos. 23 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 2.3.5. StarUML StarUML es una herramienta para el modelado de software basado en los est´andares UML(Unified Modeling Language) y MDA (Model Driven Arquitecture). [18] Este software se ha utilizado para la definici´on de casos de uso y sus respectivos diagramas de secuencia. 2.3.6. LaTeX LaTeX es un sistema de composici´on de documentos. Este ofrece m´ultiples ventajas con respecto a los editores de texto habituales. Mayor calidad de texto y figuras. Facilidad de inserci´on de ´ındices y bibliograf´ıa. Facilita la introducci´on de f´ormulas y el uso de la notaci´on matem´atica. Separa el estilo del propio contenido. [19] Se ha utilizado LaTeX para la preparaci´on del documento asociado al proyecto. 24 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Requisito no Funcional - 05 Nombre Probabilidad de fallo Autor ´ Alvaro Cardona Ar´evalo Descripci´on La probabilidad de fallo del sistema no podr´a ser superior a 0.05. Tabla 19: Requisito no Funcional - 05 Requisito no Funcional - 06 Nombre Registro de un caso Autor ´ Alvaro Cardona Ar´evalo Descripci´on En el registro de un caso se deben contemplar al menos las siguientes propiedades: Asunto, cliente, contacto, descripci´on y puntuaci´on de sentimiento. Tabla 20: Requisito no Funcional - 06 31 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 3.2. Roles Para el desarrollo del proyecto se ha requerido la participaci´on de diferentes roles que se pueden observar en la Tabla 21: Rol Responsabilidad Jefe de proyecto Es la persona encargada de planificar, ejecutar y monitorizar las acciones que forman parte de un proceso. Su objetivo central es la toma de decisiones en funci´on de los requerimientos de cada situaci´on o contexto. Analista Es la persona encargada de crear soluciones al problema planteado por el cliente. Define los requisitos y las herramientas que se utilizar´an para el desarrollo del proyecto. Dise˜nador Es la persona encargada de identificar y definir las responsabilidades, operaciones, atributos y relaciones de los elementos de dise˜no. El dise˜nador se asegura de que el dise˜no sea coherente con la arquitectura de software, y que est´e detallado hasta un punto en que pueda proceder la implementaci´on. Desarrollador Es la persona encargada de la implementaci´on del proyecto. Tester Es la persona encargada de realizar pruebas, con el objetivo de encontrar posibles errores en la implementaci´on. Tabla 21: Roles en el proyecto 32 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 3.3. Actores Los actores son los usuarios y otros sistemas con los que se pueda comunicar con la aplicaci´on. Un actor representa un conjunto coherente de roles que los usuarios de los casos de uso juegan al interactuar con el sistema. Actor - 01 Nombre Usuario Rol Actor principal Descripci´on Persona encargada de gestionar el proceso de venta y de servicio de atenci´on al cliente por medio de Dynamics 365. Tabla 22: Actor - Usuario Actor - 02 Nombre Cliente Rol Actor iniciador Descripci´on Persona que se pone en contacto con el servicio de atenci´on al cliente para reportar una incidencia en base a una venta. No tiene contacto directo con el sistema, pero sus decisiones influyen en ´el. Tabla 23: Actor - Cliente 33 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 3.4. Casos de uso Los casos de uso constituyen la base de gran parte del primer trabajo de an´alisis y dise˜no. Estos son ´utiles para capturar requerimientos, ayudar a definir la arquitectura, establecer las pautas para el dise˜no y las pruebas funcionales. Los casos de uso son una gu´ıa de los elementos que ser´an incluidos en los documentos de usuarios para las aplicaciones, as´ı como la forma en como ´estos deben ser empleados. Tambi´en establecen las bases para los protocolos de comunicaci´on entre aplicaciones y el dise˜no de las interfaces gr´aficas, entre otros. La validez de los casos de uso viene dada cuando los usuarios e involucrados del sistema aceptan el funcionamiento propuesto en los CU, siempre que la redacci´on de los mismo sea buena, no dejando cabida a ambig¨uedades. Entonces, los casos de uso deben ser ´utiles y ofrecer valor tanto al equipo de usuarios e involucrados como a los desarrolladores del proyecto. [22] 34 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Nombre e ID del CU CU-01. Registro de un producto en Dynamics 365 Actores Usuario (actor principal) Descripci´on El usuario registra la informaci´on de un producto en Dynamics 365. Precondiciones 1. El usuario debe tener acceso a Microsoft Dynamics 365. 2. Dynamics 365 debe estar activo. 3. El usuario debe encontrarse en el centro de ventas de Dynamics 365. Postcondiciones El sistema deber´a haber registrado la instancia que contiene la informaci´on del producto. Flujo normal 1. El usuario solicita la creaci´on de una nueva instancia para un nuevo producto. 2. El sistema pide los datos relacionados con el producto. 3. El usuario introduce los datos del producto. 4. El sistema solicita una lista de precios para el producto. 5. El usuario introduce la lista de precios. 6. El sistema crea una instancia con el producto. 7. El usuario solicita la activaci´on del producto. 8. El sistema activa el producto. Flujo alternativo - Excepciones El sistema no funciona correctamente. Tabla 24: CU-01. Registro de un producto en Dynamics 365 35 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Nombre e ID del CU CU-02. Registro de un cliente potencial en Dynamics 365 Actores Usuario (actor principal) Cliente (actor iniciador) Descripci´on El usuario registra la informaci´on de un cliente potencial en Dynamics 365. Precondiciones 1. El usuario debe tener acceso a Microsoft Dynamics 365. 2. Dynamics 365 debe estar activo. 3. El usuario debe encontrarse en el centro de ventas de Dynamics 365. Postcondiciones El sistema deber´a haber registrado la instancia que contiene la informaci´on del cliente potencial. Flujo normal 1. El usuario solicita la creaci´on de una nueva instancia para un cliente potencial. 2. El sistema pide los datos relacionados al cliente potencial. 3. El usuario introduce los datos del cliente potencial. 4. El sistema crea una instancia con el cliente potencial. Flujo alternativo - Excepciones El sistema no funciona correctamente. Tabla 25: CU-02. Registro de un cliente potencial en Dynamics 365 36 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Nombre e ID del CU CU-03. Registro de una oportunidad de negocio en Dynamics 365 Actores Usuario (actor principal) Descripci´on El usuario registra la informaci´on de una oportunidad de negocio en Dynamics 365. Precondiciones 1. El usuario debe tener acceso a Microsoft Dynamics 365. 2. Dynamics 365 debe estar activo. 3. El usuario debe encontrarse en el centro de ventas de Dynamics 365. 4. Debe existir una instancia con los datos del cliente potencial. 5. Deben existir instancias con el producto de inter´es y una lista de precios. Postcondiciones El sistema deber´a haber registrado la instancia que contiene la informaci´on de la oportunidad de negocio. Flujo normal 1. El usuario solicita la creaci´on de una nueva instancia para una oportunidad de negocio asociada a un cliente potencial. 2. El sistema genera una cuenta y un contacto asociada al cliente potencial y pide los datos relacionados con la oportunidad de negocio. 3. El usuario introduce los datos de la oportunidad de negocio. 4. El sistema pide un producto. 5. El usuario selecciona un producto. 6. El sistema crea una instancia con la oportunidad de negocio. Flujo alternativo - Excepciones El sistema no funciona correctamente. Tabla 26: CU-03. Registro de una oportunidad de negocio en Dynamics 365 37 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Nombre e ID del CU CU-04. Registro de una oferta en Dynamics 365 Actores Usuario (actor principal) Descripci´on El usuario registra la informaci´on de una oferta en Dynamics 365. Precondiciones 1. El usuario debe tener acceso a Microsoft Dynamics 365. 2. Dynamics 365 debe estar activo. 3. El usuario debe encontrarse en el centro de ventas de Dynamics 365. 4. Debe existir una instancia con los datos de la oportunidad de negocio. Postcondiciones El sistema deber´a haber registrado la instancia que contiene la informaci´on de la oferta. Flujo normal 1. El usuario solicita la creaci´on de una nueva instancia para una oferta asociada a una oportunidad de negocio. 2. El sistema pide los datos relacionados con la oferta. 3. El usuario introduce los datos de la oferta. 4. El sistema crea una instancia con la oferta. Flujo alternativo - Excepciones El sistema no funciona correctamente. Tabla 27: CU-04. Registro de una oferta en Dynamics 365 38 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Nombre e ID del CU CU-05. Registro de un pedido en Dynamics 365 Actores Usuario (actor principal) Cliente (actor iniciador) Descripci´on El usuario registra la informaci´on de un pedido en Dynamics 365. Precondiciones 1. El usuario debe tener acceso a Microsoft Dynamics 365. 2. Dynamics 365 debe estar activo. 3. El usuario debe encontrarse en el centro de ventas de Dynamics 365. 4. Debe existir una instancia con los datos de la oferta. 5. El cliente debe aceptar la oferta enviada por el usuario. Postcondiciones El sistema deber´a haber registrado la instancia que contiene la informaci´on del pedido. Flujo normal 1. El usuario activa la oferta. 2. El sistema comunica al usuario que la oferta est´a activada. 3. El usuario env´ıa la oferta al cliente. 4. El cliente acepta la oferta lanzada por el usuario. 5. El usuario solicita la creaci´on de una nueva instancia para un pedido asociado a una oferta. 6. El sistema muestra los datos al usuario y crea una instancia con el pedido. Flujo alternativo 4.1. Si el cliente no acepta la oferta, el usuario revisa la oferta y la modifica si procede, para enviarla de nuevo al cliente y que este la acepte. Si el cliente no acepta, el caso de uso finaliza. Excepciones El sistema no funciona correctamente. Tabla 28: CU-05. Registro de un pedido en Dynamics 365 39 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Nombre e ID del CU CU-06. Registro de una cola en Dynamics 365 Actores Usuario (actor principal) Descripci´on Se crea una cola en la que se almacenan todos los casos. Precondiciones 1. El usuario debe tener acceso a Microsoft Dynamics 365. 2. Dynamics 365 debe estar activo. 3. El usuario debe tener el rol de seguridad de Administrador de ventas o marketing, Administrador del servicio al cliente, Administrador del sistema o Personalizador del sistema o permisos equivalentes. Postcondiciones El sistema deber´a haber registrado la instancia con la informaci´on de la cola de casos. Flujo normal 1. El usuario solicita la creaci´on de una nueva instancia para una cola. 2. El sistema pide los datos relacionados con la cola. 3. El usuario introduce los datos de la cola. 4. El sistema crea una instancia con la cola de casos. Tambi´en se generar´a un buz´on. 5. El usuario accede al buz´on y lo activa. 6. El sistema permite la activaci´on del buz´on asociado a la cola. Flujo alternativo - Excepciones El sistema no funciona correctamente. Tabla 29: CU-06. Registro de una cola en Dynamics 365 40 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Registro de una oferta en Dynamics 365 Figura 8: Diagrama de secuencia del CU-04 47 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Registro de un pedido en Dynamics 365 Figura 9: Diagrama de secuencia del CU-05 48 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Registro de una cola en Dynamics 365 Figura 10: Diagrama de secuencia del CU-06 49 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Registro de un caso a partir de un correo electr´onico en Dynamics 365 Figura 11: Diagrama de secuencia del CU-07 50 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Almacenar un caso en una cola Figura 12: Diagrama de secuencia del CU-08 51 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 4.2. Arquitectura l´ogica La arquitectura de software muestra las estructuras de un sistema, compuestas de elementos con propiedades visibles de forma externa y las relaciones que existen entre ellos. [26] La arquitectura de software es de especial importancia ya que la manera en que se estructura un sistema tiene un impacto directo sobre la capacidad de este para satisfacer lo que se conoce como atributos de calidad del sistema. [27] En funci´on de los atributos de calidad que se desea optimizar y del tipo de problema que se busca resolver se utilizar´a un tipo de estructura u otro. En este caso, se ha desarrollado un plugin para un servicio cloud sobre una plataforma ya construida, por lo que el sistema se basa en la estructura de Dynamics 365. Microsoft Dynamics 365 ofrece varios modelos de programaci´on dise˜nados para brindar la flexibilidad de elegir la mejor opci´on en funci´on de las necesidades. El diagrama de la figura 13 [28] muestra los diferentes estilos de desarrollo adecuados en base al tipo de soluci´on. Figura 13: Modelos de programaci´on Para este proyecto, se ha desarrollado un flujo de trabajo personalizado, por lo que se han utilizado ensamblados SDK de .NET. Estos est´an disponibles como paquetes NuGet. Cuando se usan los ensamblados SDK para escribir c´odigo, se trabaja con el servicio web de la organizaci´on para conectarse a una instancia de Dynamics 365 y realizar las operaciones de servicio web admitidas. [29]. 52 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica El complemento, por su parte, hace uso de un servicio REST para la llamada a la API de Text Analytics. REST es una arquitectura de desarrollo web que puede ser utilizada en cualquier cliente HTTP. Esta emplea una interfaz web que usa hipermedios para la representaci´on y transici´on de la informaci´on. La principal ventaja de esta arquitectura es que ha aportado a la web una mayor escalabilidad, que se consigue gracias a una serie de caracter´ısticas:[30] Es un protocolo sin estado, debido a que no se guarda la informaci´on en el servidor. Presenta un conjunto de operaciones bien definidas, entre las que destacan GET, POST, PUT y DELETE. Utiliza URIs ´unicas siguiendo una sintaxis universal. Emplea hipermedios para representar la informaci´on, que suelen ser HTML, XML o JSON. [30] Para conectar el cliente con el recurso web, se ha utilizado la funci´on UploadString. Esta funci´on carga la cadena especificada en el recurso especificado mediante el m´etodo POST, operaci´on que proporciona la arquitectura REST. El m´etodo POST introduce los par´ametros en la solicitud HTTP para el servidor. De esta forma, quedan ocultos para el usuario, proporcionando as´ı una mayor confidencialidad. Patrones de dise˜no Un patr´on de dise˜no es una soluci´on general y reutilizable aplicable a diferentes problemas de dise˜no de software. Estos se usan para identificar condiciones de error y problemas en el c´odigo que pueden no ser evidentes en ese momento. [31] A continuaci´on se muestran algunos de los patrones de dise˜no utilizados para el desarrollo del complemento: Factory: Se definen m´etodos exclusivos para la creaci´on de objetos. Builder: Se separa la creaci´on de las solicitudes de su estructura. Adapter: Permite que las clases incompatibles trabajen juntas al convertir la interfaz de una clase en otra. Se transforma el objeto en un JSON para que el recurso web reciba la solicitud de forma correcta. Como se ha comentado anteriormente, el dise˜no elegido define los atributos de calidad que proporciona el sistema. Algunos de los atributos de calidad alcanzados son: Escalabilidad: Se consigue debido al uso de la estructura REST, que permite separar entre cliente y servidor. 53 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Desplegabilidad: La aplicaci´on tiene gran facilidad de despliegue, dado que se activa autom´aticamente. Disponibilidad: El sistema est´a disponible en todo momento debido a su funcionalidad autom´atica. Interoperabilidad: Facilidad de intercambio de informaci´on entre diferentes sistemas (Dynamics 365 yAzure). Testeabilidad: El sistema desarrollado es f´acil de probar. Rendimiento: Gran rendimiento del sistema. Por un lado, permite ofrece una mejora de tiempo al ser un proceso autom´atico. Por otro lado, esquiva la necesidad de recursos humanos para determinar la prioridad de la incidencia. Modularidad: El complemento se ha desarrollado a trav´es de modulos separados para cada funcionalidad. Confidencialidad: El m´etodo POST introduce los par´ametros en la solicitud HTTP para el servidor, de forma que quedan ocultos para el usuario. Extensibilidad: El sistema ofrece facilidad de implementar extensiones al sistema. Eficiencia: El sistema ofrece una buena funcionalidad utilizando el menor n´umero de recursos. 54 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 5. Plan de proyecto Un plan de proyecto es un conjunto de acciones estimadas para alcanzar un objetivo determinado. Para ello, debe desarrollarse bajo el paraguas de una estrategia alineada con la de la empresa, y utilizando un planificador. El plan de ejecuci´on de un proyecto funciona tambi´en como una herramienta de comunicaci´on con el resto de involucrados en el proyecto. Adem´as de servir para organizar y planificar los elementos de un proyecto, sirve para transmitir la informaci´on a los dem´as. De ah´ı que tenga que ser claro y directo, legible por todos. Por este motivo, un plan de proyecto debe ser el nexo de uni´on de todos y coordinar el trabajo de todo el equipo. [32] Un plan de proyecto debe tener en cuenta los siguientes principios b´asicos: Todo plan de proyecto ha de estar orientado a la estrategia de la empresa. Un plan de proyecto debe seguir una metodolog´ıa determinada, t´ecnicas de planificaci´on de proyectos. Si trabajamos en un sector como el del desarrollo de software, las t´ecnicas que mejor se adaptan ser´an las ´agiles. Uno de los m´aximos objetivos de un plan de proyecto es el de simplificar todos los elementos del mismo. Al tratarse de una herramienta de comunicaci´on, ha de ser claro y legible por todo el equipo. En el plan de proyecto tambi´en se establecen unos objetivos y unas sub-tareas. Debe contemplar los contratiempos. Los actuales planes de proyecto est´an sujetos a la imperante versatilidad del actual mercado competitivo. Planificaci´on flexible. Un plan de proyecto que contemple decisiones de ´ultima hora, debe permitir cambios y ofrecer soluciones optimizadas para cada modificaci´on. Prev´e los distintos escenarios. En esta gesti´on del riesgo, un plan de proyecto tiene en cuenta las posibles situaciones que se pueden dar durante la ejecuci´on de proyecto. Por ´ultimo, es fundamental que un plan de proyecto sea realista. De nada sirve planificar lo que sabemos que nunca se llegar´a a ejecutar. [32] El plan de acci´on de un proyecto comprende unos pasos b´asicos, independientemente al sector al est´e orientado. Se trata de un proyecto de planeaci´on en s´ı mismo. Para ello, se tendr´a un especial cuidado y se incluir´an nuevas acciones en funci´on a los requisitos de nuestro tipo de sector. Estas acciones ayudar´an a saber c´omo planificar un proyecto. 1. Identificaci´on del objetivo principal o necesidad por la que comenzamos un proyecto. 2. Estudio y an´alisis de la situaci´on actual. 55 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 3. Planificaci´on de actividades de un proyecto. Se seleccionar´a una herramienta que verdaderamente tenga en cuenta cambios, riesgos, gesti´on de costes y trabajo en equipo. 4. Reuni´on de Kick-off con el equipo. Para poder poner en marcha cuanto el proyecto, es importante llevar a una reuni´on de arranque un primer esbozo del plan de proyecto. 5. Detecci´on de las actividades cr´ıticas. El camino cr´ıtico del proyecto definir´a la duraci´on del mismo. 6. Reuniones y comunicaci´on individual con cada departamento. Se negociar´a con ellos cada uno de los plazos y necesidades, y se ir´an asignando tareas y detallando objetivos y sub-tareas en cada una de ellas. 7. Se asignan responsabilidades y se involucra a todo equipo. 8. Seguimiento y control de entregables y pasos siguientes. En este paso entran en juego las reuniones de hito, pero tambi´en el seguimiento continuo de la evoluci´on de proyecto. Aunque el seguimiento y control no pertenezca a la fase de planificaci´on de un proyecto, s´ı que ha de tenerse en cuenta durante la elaboraci´on del plan de proyecto. Precisamente, por el establecimiento de hitos y la divisi´on de bloques de actividad. [32] 5.1. Planificaci´on del proyecto La planificaci´on del proyecto es la ordenaci´on sistem´atica de las tareas para lograr un objetivo, donde se expone lo que se necesita hacer y c´omo debe llevarse a cabo. Esto var´ıa en funci´on del ´area de aplicaci´on y de la complejidad del proyecto, y deber´ıa ser suficientemente robusto como para responder al entorno cambiante del mismo. [33] Para este proyecto, se ha optado por utilizar una metodolog´ıa Agile basada en Scrum. En Scrum se realizan entregas parciales y regulares del producto final. Por ello, est´a especialmente indicado para proyectos en entornos complejos, donde se necesita obtener resultados pronto, donde los requisitos son cambiantes o poco definidos, donde la innovaci´on, la competitividad, la flexibilidad y la productividad son fundamentales.[34] En Scrum un proyecto se ejecuta en ciclos temporales cortos y de duraci´on fija, en nuestro caso de dos semanas. Es un proceso iterativo, y en cada iteraci´on o Sprint se debe proporcionar un resultado completo, un incremento del producto final que el cliente pueda observar siempre que lo desee. Es por esto que desde el primer Sprint se debe tener un m´ınimo del producto y, por tanto, se ha decidido seguir una estructura que permita avanzar, para cada Sprint, en todos y cada uno de los siguientes puntos: 1. Toma de requisitos y objetivos 2. An´alisis de las posibles soluciones y estudio 56 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 5.1.6. Sprint 6 El Sprint 6 ha sido desarrollado desde el 22 de Febrero de 2021 hasta el 5 de Marzo de 2021. En este Sprint se han incluido las tareas no completadas del Sprint anterior. La Tabla 38 contiene las tareas programadas para este Sprint. Tareas Situaci´on Plugin que convierte HTML en texto plano Realizado Pruebas en aplicaci´on de consola Realizado Modificar CU-07 Realizado Modificar diagrama de secuencia CU-7 Realizado Plugin de an´alisis de sentimiento Realizado Actualizar documentaci´on Realizado Preparaci´on y entrega del Hito 6 Realizado Tabla 38: Sprint 6 Figura 19: Diagrama de Gantt del Sprint 6 Este Sprint se ha enfocado en la implementaci´on de la aplicaci´on. A pesar de haber obtenido un plugin de an´alisis de sentimiento con resultados, se ha optado por buscar una soluci´on que pueda aportar una mayor escalabilidad y mantenibilidad. Por tanto, se seguir´a trabajando en el pr´oximo Sprint. 63 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 5.1.7. Sprint 7 El Sprint 7 ha sido desarrollado desde el 8 de Marzo de 2021 hasta el 19 de Marzo de 2021. En este Sprint se ha seguido trabajando con el plugin del Sprint anterior, el cual se busca mejorar. La Tabla 39 contiene las tareas programadas para este Sprint. Tareas Situaci´on Unificar complementos Realizado Implementaci´on de la llamada a la API Text Analytics Por terminar Documentar implementaci´on Por terminar Actualizar documentaci´on Realizado Preparaci´on y entrega del Hito 7 Realizado Tabla 39: Sprint 7 Figura 20: Diagrama de Gantt del Sprint 7 El desarrollador es el principal participante en este Sprint, con una gran carga de trabajo. No se ha conseguido completar las tareas a tiempo, por lo que se utilizar´a una peque˜na parte del siguiente Sprint para finalizar la parte de implementaci´on del proyecto. 64 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 5.1.8. Sprint 8 El Sprint 8 ha sido desarrollado desde el 22 de Marzo de 2021 hasta el 6 de Abril de 2021. En este Sprint se ha finalizado la implementaci´on de la aplicaci´on, y se ha enfocado principalmente en la documentaci´on, ya que es el ´ultimo Sprint de este trabajo de fin de grado. El objetivo es completar la documentaci´on y conseguir un proyecto preparado para enviar al cliente (en este caso virtual). La Tabla 40 contiene las tareas programadas para este ´ultimo Sprint. Tareas Situaci´on Terminar plugin Realizado Pruebas en la aplicaci´on Realizado Documentar implementaci´on Realizado Resumen del TFG y agradecimientos Realizado Conclusiones Realizado Trabajo futuro Realizado Actualizar documentaci´on Realizado Preparaci´on y entrega del Hito final Realizado Tabla 40: Sprint 8 Figura 21: Diagrama de Gantt del Sprint 8 65 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Tras realizar el ´ultimo Sprint del trabajo, se ha realizado una evaluaci´on de los objetivos del proyecto, con objeto de comprobar el ´exito de los mismos. Este proyecto est´a destinado a desarrollar un sistema de servicio al cliente con reconocimiento de intenci´on y an´alisis de voz y texto. No obstante, el desarrollo de este trabajo de fin de grado es una prueba de concepto, por lo que desde un principio se ha considerado la posibilidad de que alguno de los objetivos fijados fuese intangible en el margen de tiempo establecido para la realizaci´on de un trabajo de fin de grado. Esto ha ocurrido con uno de los objetivos principales fijados. Este refiere a la integraci´on de un servicio cognitivo de an´alisis de voz, el cual ha quedado fuera del alcance de este proyecto. En cualquier caso, resultar´ıa muy interesante continuar con el desarrollo de este proyecto, dada su gran utilidad. 66 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 5.2. Presupuesto del proyecto Un presupuesto es la estimaci´on futura de las operaciones y los recursos de una empresa para un proyecto. Se elabora para obtener los objetivos econ´omicos y financieros propuestos en un periodo determinado. Es decir, elaborar un presupuesto es simplemente sentarse a planear lo que se desea hacer en el futuro y expresarlo en t´erminos monetarios. Cuando se elabora un presupuesto para una empresa se est´a planeando a futuro. Obviamente, todo esto no pasa de ser una estimaci´on en base a la experiencia e informaci´on la cual puede variar en funci´on de numerosos factores ajenos a la empresa. [35] Elaborar el presupuesto para un proyecto sirve para: 1. Saber cu´anto dinero se va a ganar: Tener en mente la cantidad de ingresos que se generar´an mensualmente ayudar´a a definir qu´e gastos se pueden asumir. 2. Conocer a d´onde va a ir el dinero: Esto permitir´a definir qu´e gastos son necesarios y cu´ales no, de tal modo que se puedan tomar decisiones estrat´egicas con responsabilidad. 3. Ver el modo de organizar las finanzas: Tomar el control de la econom´ıa de la empresa permitir´a priorizar gastos, fijar objetivos, desarrollar habilidades para analizar distintas situaciones y reaccionar de manera adecuada ante a los imprevistos que puedan surgir. 4. Establecer el m´etodo para alcanzar los objetivos: Una vez se hayan organizado los beneficios y los gastos se podr´an concretar los objetivos a corto, medio y largo plazo para que de este modo se pueda ir planificando su consecuci´on de forma ordenada y coherente. [35] En este caso, al ser un proyecto de fin de carrera, no se considerar´an beneficios. Por lo tanto, en este apartado ´unicamente se estimar´an los costes monetarios y temporales del proyecto. Se tendr´an en cuenta los diferentes tipos de coste, para calcular el coste total del proyecto. Coste de recursos tecnol´ogicos Un recurso tecnol´ogico es un medio que se vale de la tecnolog´ıa para cumplir con su prop´osito. Existen dos tipos de recurso tecnol´ogico: Recursos tecnol´ogicos tangibles: aquellos recursos relacionados con la tecnolog´ıa que son f´ısicos, es decir que se pueden medir y contar. Recursos tecnol´ogicos intangibles: tambi´en conocidos como transversales, son aquellos recursos que no pueden verse, medirse ni contarse, ya que son informaciones o conocimientos inmateriales. 67 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Para este proyecto, ya se dispon´ıa previamente del ´unico recurso tecnol´ogico tangible requerido, el ordenador del alumno. Por tanto, no se ha considerado necesario incluir el coste de este en la estimaci´on del coste total del proyecto. De esta forma, los costes considerados en este apartado corresponden a recursos tecnol´ogicos transversales. Se han utilizado dos aplicaciones de Dynamics 365, por lo que se ha requerido una licencia para Dynamics 365 for Sales y otra para Dynamics 365 for Customer Service.Microsoft ofrece distintos niveles de licencia, en funci´on de los privilegios con los que cuenta el usuario. Las tablas 41 y 42 muestran las posibilidades que ofrece Microsoft para estas aplicaciones. Licencia Dynamics 365 for Sales por usuario Sales Professional 54.80 e/ mes Sales Enterprise 80.10 e/ mes Sales Premium 113.80 e/ mes Tabla 41: Licencias Dynamics 365 for Sales Licencia Dynamics 365 for Customer Service por usuario Customer Service Professional 42.20 e/ mes Customer Service Enterprise 80.10 e/ mes Tabla 42: Licencias Dynamics 365 for Customer Service En ambos casos se ha utilizado la licencia Professional, ya que es suficiente para la tesitura de este proyecto, a pesar de ser la que menos privilegios ofrece. El resto de licencias ser´ıan m´as adecuadas para grandes empresas, que requieren una actividad continua y solventar posibles problemas con rapidez. De Microsoft Azure, por su parte, se requerir´a una licencia para la aplicaci´on Text Analytics procedente del m´odulo de Servicios Cognitivos de Azure.Text Analytics se puede adquirir por niveles. Los registros de texto corresponden al n´umero de unidades de 1000 caracteres en un documento que se proporcionan como entrada en una solicitud de la API Text Analytics. 68 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Instancia Precio Gratis 5000 transacciones gratis por mes Est´andar 0-500000 registros de texto - 0.844epor 1000 registros de texto De 0.5M a 2.5M de registros de texto - 0.633epor 1000 registros de texto De 2.5M a 10M de registros de texto - 0.253epor 1000 registros de texto M´as de 10M de registros de texto - 0.211epor 1000 registros de texto S0 63.00 e/ mes Hasta 25000 transacciones al mes Uso por encima del l´ımite: 2.530epor mil transacciones S1 210.71 e/ mes Hasta 100000 transacciones al mes Uso por encima del l´ımite: 2.11epor mil transacciones S2 843.09 e/ mes Hasta 500000 transacciones al mes Uso por encima del l´ımite: 1.69epor mil transacciones S3 2108.12 e/ mes Hasta 2500000 transacciones al mes Uso por encima del l´ımite: 0.84epor mil transacciones S4 4216.49 e/ mes Hasta 10000000 transacciones al mes Uso por encima del l´ımite: o.42epor mil transacciones Tabla 43: Licencias Text Analytics de Azure En este caso, a priori no se necesitan m´as de 5000 transacciones al mes, por lo que para este proyecto se ha utilizado la instancia gratis de Text Analytics. El coste total de los recursos tecnol´ogicos se puede apreciar en la tabla 44. Licencia Coste (e) / mes Total meses Coste (e) Dynamics 365 for Sales 54.80 e5 274.00 e Dynamics 365 for Customer Service 42.20 e5 211.00 e Azure Text Analytics 0 e5 0 e Total 485.00 e Tabla 44: Coste de recursos tecnol´ogicos 69 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Coste de recursos humanos La gesti´on de los recursos humanos del proyecto incluye los procesos que organizan, gestionan y conducen al equipo del proyecto, que est´a compuesto por las personas a las que se han asignado roles y responsabilidades para completar el proyecto. Los miembros del equipo del proyecto pueden tener diferentes habilidades, pueden estar asignados a tiempo completo o a tiempo parcial, y se pueden incorporar o retirar del grupo de trabajo conforme avanza el proyecto. [36] Estos tienen diferentes sueldos asignados en funci´on de su rol en el proyecto. En este caso, el responsable del TFG ejercer´a todos y cada uno de los diferentes roles, y por tanto el coste de recursos humanos ser´a de 0e. No obstante, si es una empresa la encargada de desarrollar este proyecto, se puede contemplar el coste de recursos humanos en la tabla 45. El proyecto tiene un coste de tiempo estimado de 300 horas, repartidas entre los participantes en funci´on de su rol. Este tiempo es aproximado, ya que es una estimaci´on previa a su desarrollo, por lo que podr´ıa verse incrementado en caso de aparecer alg´un contratiempo. Rol Coste (e) / hora Total horas Coste (e) Jefe de proyecto 56.07 e84 4709.88 e Analista 42.06 e38 1598.28 e Dise˜nador 44.40 e44 1953.60 e Desarrollador 30.36 e118 3582.48 e Tester 23.37 e16 373.92 e Total 12218.16 e Tabla 45: Coste de recursos humanos Coste total El coste total del proyecto se corresponde con la suma de los recursos tecnol´ogicos y los humanos. La tabla 46 muestra el presupuesto del proyecto. Recurso Coste Recursos tecnol´ogicos 485.00 e Recursos humanos 12218.16 e Total 12703.16 e Tabla 46: Coste total 70 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 5.3. Gesti´on de riesgos La gesti´on de riesgos es el proceso que se encarga de identificar, analizar y responder a factores de riesgo a lo largo de la vida de un proyecto y en beneficio de sus objetivos. Una gesti´on de riesgos adecuada implica el control de posibles eventos futuros. [37] La gesti´on de riesgos en Scrum est´a integrada en su propio ADN. Un marco de gesti´on ´agil como Scrum es un modelo que ve el proyecto, y est´a en continuo contacto con el cliente. De esta forma, a partir de Sprints, el equipo de proyecto va entregando al cliente “trozos” del proyecto, de forma que tenga la oportunidad de validarlos y asegurar que el proyecto va por el camino adecuado. Estos ciclos iterativos cortos minimizan cualquier impacto imprevisto en el desarrollo del producto. [38] Scrum, a trav´es de su propio funcionamiento, minimiza los riesgos teniendo en cuenta lo siguiente: La flexibilidad reduce los riesgos relacionados con el negocio. En cualquier momento se pueden a˜nadir o eliminar requisitos, y el nivel directivo/cliente est´a involucrado desde la perspectiva del negocio. El Feedback peri´odico reduce los riesgos relativos a expectivas. La propiedad del proyecto por parte del equipo de desarrollo y su responsabilidad colectiva respecto al ´exito o fracaso del proyecto, reduce los riesgos de estimaciones. La entrega iterativa reduce los riesgos de inversi´on, de forma que al ir disponiendo de productos “usables” muy pronto, se detectan antes las posibles incongruencias con el mercado y as´ı ser capaces de reorientar el producto y la inversi´on adecuada. [38] No obstante, independientemente del proyecto y del marco elegido para su gesti´on, es necesario identificar la mejor manera de gestionar los riesgos. Existe un consenso bastante aceptado sobre cu´ales son los pasos a seguir, que se pueden apreciar en la figura 22. Figura 22: Gesti´on de riesgos 71 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Por tanto, a pesar de las ventajas que proporciona una metodolog´ıa basada en Scrum en gesti´on de riesgos, se han identificado los posibles riesgos de este proyecto, para aumentar la probabilidad de ´exito del mismo. R - 01. Estimaci´on optimista de tiempos Probabilidad Casi seguro Impacto Mayor Magnitud de la p´erdida (semanas) 2 Plan de contingencia Realizar una estimaci´on pesimista para tener un margen de error. Tabla 47: R - 01 R - 02. Dise˜no inadecuado Probabilidad Posible Impacto Moderado Magnitud de la p´erdida (semanas) 0.7 Plan de contingencia Analizar el problema con cuidado, incrementando la carga de trabajo en el dise˜no si es necesario. Tabla 48: R - 02 R - 03. Falta de tiempo de estudio Probabilidad Posible Impacto Menor Magnitud de la p´erdida (semanas) 0.5 Plan de contingencia Dedicar m´as tiempo al estudio de software y de nuevas herramientas. Tabla 49: R - 03 72 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 6.1.3. Registro de una oportunidad de negocio Una oportunidad de negocio es el momento ideal para llevar a cabo una idea empresarial y obtener ganancias. En este caso, se considera una oportunidad de negocio en el momento en el que un cliente potencial muestra inter´es por un producto o servicio. El flujo para registrar una oportunidad de negocio es el siguiente: 1. Acceder a la instancia de un cliente potencial sobre el que se desea abrir una oportunidad de negocio. 2. Para abrir una oportunidad de negocio sobre ese cliente potencial, pulsar el bot´on Calificar. 3. El sistema pide una cuenta y un contacto. Si se pulsa el bot´on Continuar sin especificar cuenta y contacto, el sistema crea autom´aticamente nuevos registros de cuenta y contacto con la informaci´on del cliente potencial. 4. Aparecer´a el formulario de la figura 26, donde se especifican las caracter´ısticas de la oportunidad de negocio. Figura 26: Formulario de una oportunidad de negocio 5. A˜nadir las caracter´ısticas de la oportunidad de negocio. 6. A˜nadir el producto que se desea incluir en la oportunidad. Para esto, el sistema muestra otro formulario, que se puede observar en la figura 27 79 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Figura 27: Formulario de una oportunidad de negocio (a˜nadir producto) 7. Guardar la oportunidad de negocio, de forma que queda registrada en el sistema. Se han registrado las siguientes oportunidades de negocio: Alberto Pino - Xiaomi Mi Note 10 Alonso Robles - Xiaomi Redmi Note 9S 6.1.4. Registro de una oferta Tras una posibilidad de negocio sobre el cliente potencial, llega el momento de realizar una oferta, es decir, de ofrecer al cliente el producto o servicio de inter´es a cambio de un precio establecido. El flujo para registrar una oferta es el siguiente: 1. Acceder a la instancia de una oportunidad de negocio sobre la que se desea lanzar una oferta. 2. En el apartado Ofertas de la oportunidad, pulsar el bot´on Crear Oferta que aparece en la figura 28. Figura 28: Bot´on Crear Oferta 80 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Figura 29: Formulario Oferta 3. Aparecer´a el formulario de la figura 29, donde se especifican las caracter´ısticas de la oferta. 4. Guardar la oferta, de forma que queda registrada en el sistema. Se han registrado las siguientes ofertas: Alberto Pino - Xiaomi Mi Note 10 - 284$ Alonso Robles - Xiaomi Redmi Note 9S - 199$ 6.1.5. Registro de un pedido Tras lanzar una oferta al cliente potencial, si este acepta, se debe registrar un pedido, para completar el proceso de venta. El flujo para registrar un pedido es el siguiente: 1. Acceder a la instancia de una oferta sobre la que se desea realizar un pedido. 2. Activar la oferta. 3. Enviar la oferta al cliente. 4. Una vez el cliente ha aceptado la oferta, pulsar el bot´on Crear pedido dentro de la instancia de la oferta. 5. Aparecer´a la ventana de la figura 30, que muestra algunas caracter´ısticas del pedido. 81 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Figura 30: Formulario Pedido 6. Pulsar el bot´on Aceptar. El sistema registrar´a el pedido y mostrar´a al usuario sus caracter´ısticas, como en la figura 31. Figura 31: Pedido Se han registrado pedidos para las ofertas lanzadas. 82 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 6.2. Registro de un caso procedente de correo electr´onico en el sistema En esta fase de la implementaci´on, se contempla el proceso de registro de un caso a partir de un mensaje de correo electr´onico. Un caso representa una situaci´on o incidente que un cliente notifica y requiere una soluci´on. Los casos se han dise˜nado para seguir el proceso desde la entrada inicial de un incidente hasta su resoluci´on definitiva, pasando por el proceso de correcci´on del problema.[41] El flujo que se ha seguido para este punto es el siguiente: 1. A˜nadir nuevo campo a la entidad Caso para almacenar la puntuaci´on de sentimiento. 2. Crear proceso que se active cuando llegue un correo electr´onico. 3. Integrar complemento que transforme el contenido del mensaje a texto plano y obtenga una puntuaci´on de sentimiento mediante una llamada a la API de Text Analytics. 4. Crear un caso con el contenido del mensaje y la puntuaci´on de sentimiento. 6.2.1. Registro de un atributo en la entidad Caso Esta aplicaci´on realizar´a una llamada a la API de Text Analytics, la cual devolver´a un valor de 0.0000000000 a 1.0000000000, que representa la puntuaci´on de sentimiento del mensaje enviado en la solicitud. Para que se puedan direccionar los casos a una cola espec´ıfica en funci´on de este valor, se debe almacenar en alg´un lugar. La soluci´on m´as sencilla es en el propio caso. Para registrar el nuevo campo Puntuaci´on de sentimiento en la entidad Caso, se sigue el siguiente flujo: 1. Acceder al entorno Configuraci´on avanzada. 2. Abrir la pantalla de Personalizaciones del Sistema, dentro del apartado Personalizaciones. Aparece el formulario de la figura 32. 83 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Figura 32: Formulario personalizaciones 3. Buscar la entidad Caso. Esta entidad cuenta con el esquema mostrado en la figura 33. Figura 33: Entidad Caso 4. Acceder a Campos (Fields) de la entidad, y crear uno nuevo. 5. Rellenar las propiedades del nuevo campo. Este ser´a de tipo decimal. La figura 34 muestra estas propiedades. 84 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Figura 34: Nuevo campo 6. Guardar el campo y publicar las personalizaciones. 7. Una vez se ha creado el campo, se debe a˜nadir a los formularios que se desee. Por tanto, en la entidad Caso, acceder a Formularios (Forms) y seleccionar el formulario que se quiere editar. En este caso, queremos a˜nadir el campo al formulario creaci´on de un caso y al de interacci´on con el usuario. La figura 35 muestra la vista del formulario en el centro, y, a la derecha, los campos que no se muestran en ´el. 85 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Figura 35: Formulario 8. Arrastrar el campo Puntuaci´on de sentimiento a la zona del formulario en la que se quiere mostrar. 9. Guardar el formulario y publicar las personalizaciones. Tras realizar este proceso, el campo Puntuaci´on de sentimiento queda almacenado en la entidad Caso y se muestra en los formularios que se utilizan en este proyecto. 86 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 6.2.2. Registro de un proceso para la creaci´on autom´atica de casos El siguiente paso en el desarrollo de la aplicaci´on es el registro de un proceso, el cual debe activarse cuando llega un mensaje de correo electr´onico. Dentro de un proceso se pueden especificar diferentes condiciones, realizar acciones e incluso utilizar complementos externos que permiten acciones m´as complejas. El flujo para registrar el proceso es: 1. Acceder a Processes, dentro de Advanced Settings. 2. Pulsar el bot´on New para la creaci´on de un nuevo proceso. 3. Se debe rellenar el formulario de la figura 36. Se define un nombre para el proceso, y se categoriza como flujo de trabajo (Workflow). Tambi´en se debe a˜nadir la entidad que activar´a el proceso, en este caso Email. Figura 36: Crear nuevo proceso 87 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 4. Tras pulsar el bot´on OK, aparecer´a una nueva ventana emergente, que se muestra en la figura 37. En esta pantalla, se debe cambiar el proceso a nivel de organizaci´on, y seleccionar cu´ando se desea activar el proceso. En este caso, se ha seleccionado la casilla Record is created, dado que el objetivo es que el proceso salte cuando se crea un nuevo mensaje de correo electr´onico. Figura 37: Crear nuevo proceso 2 5. En la parte de abajo se puede apreciar un panel, en el que se define cualquier tipo de acci´on o condici´on que se necesite. Este se muestra en la figura 38. Figura 38: Crear nuevo proceso 3 6. Por ´ultimo, guardar el proceso. Las condiciones y complementos que se utilizan en este proceso se especifican en los apartados 6.2.3 y 6.2.4. 88 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Figura 50: getDocumentsSentiment El m´etodo getDocumentsSentiment recibe como par´ametros de entrada un String con el cuerpo del mensaje de correo electr´onico y otro String con el idioma detectado. Tiene como objetivo crear la solicitud que se enviar´a posteriormente al servicio de Text Analytics. Para esto, se han implementado nuevas clases, ya que el objeto cuenta con una estructura ligeramente diferente a la utilizada para crear la solicitud de detecci´on de idioma. SentimentHeader ySentimentDocument son las clases que se han utilizado para crear el objeto. Se utilizan para el cabecero de la solicitud y, para rellenar los atributos de la misma, respectivamente. La clase SentimentDocument cuenta con los atributos language,id ytext. Al primer atributo se le asigna el idioma detectado, y el contenido del mensaje se incluir´a en el atributo text. Por su parte, id se completar´a con un “1”, que refiere al identificador del mensaje, que siempre ser´a “1” debido a que se realiza una llamada para cada mensaje de correo electr´onico. getDocumentsSentiment devuelve como par´ametro de salida, la solicitud de tipo SentimentHeader. En la figura 51 se observa la estructura de cada solicitud. Figura 51: Solicitud an´alisis de sentimiento Una vez se ha creado la solicitud, se realiza el proceso de serializaci´on, para convertir el objeto en formato JSON y poder enviar la petici´on al servicio. Para esto se ha utilizado SerializeJsonSentiment. Este m´etodo recibe como par´ametro de entrada la solicitud de tipo SentimentHeader, y devuelve un String con el JSON generado. Figura 52: Serializar JSON para an´alisis de sentimiento Para realizar la llamada al recurso de Text Analytics para an´alisis de sentimiento, se reutiliza el m´etodo MakeRequest. En este caso, la direcci´on Uri recibida como par´ametro de entrada, contiene la direcci´on del recurso de an´alisis de texto. El String, hace referencia al JSON devuelto por SerializeJsonSentiment. Para enviar la solicitud, se construye un nuevo cliente, y gracias a la funci´on 95 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica UploadString, se carga el JSON. Este m´etodo devuelve un String con el JSON de salida, que tiene una estructura como la observada en la figura 53. Figura 53: JSON de salida para an´alisis de sentimiento Por ´ultimo, para extraer la puntuaci´on de sentimiento del JSON obtenido, se ha realizado un proceso de deserializaci´on sobre el JSON. Este proceso se ha definido en el m´etodo DeserializeJsonSentiment. Este recibe como par´ametro de entrada el String con el JSON. Se han utilizado diferentes clases para definir la estructura del objeto en que se transformar´a el JSON. Por tanto, se han creado las clases HeaderResponse,SentimentResponse ySentimentError. Con la funci´on de JsonConvert denominada DeserializeObject, se transforma el JSON en un objeto de tipo HeaderResponse, del que se podr´a extraer la puntuaci´on de sentimiento, localizada en el atributo “score”. Este m´etodo devuelve un dato de tipo Decimal con la puntuaci´on de sentimiento obtenida a trav´es de Text Analytics. Figura 54: Deserializar sentimiento El procedimiento descrito en este punto, hace referencia a la parte externa a la plataforma de Dynamics 365. Por medio de este complemento, realizando una llamada al mismo desde un workflow con una clave para un recurso de Text Analytics y un mensaje, se obtienen dos par´ametros de salida, correspondientes al mensaje en formato de texto plano, y a la puntuaci´on de sentimiento del mismo. 96 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 6.2.4. Creaci´on de un caso Previamente, en el apartado 6.2.2, se ha comentado que, el proceso creado se activar´a cuando llegue un mensaje de correo electr´onico. No obstante, no interesa que se cree un caso para cada correo electr´onico recibido, por lo que se han a˜nadido condiciones para reducir el n´umero de casos irrelevantes creados. En este caso, se han implementado dos condiciones b´asicas. Estas condiciones permiten la creaci´on de casos ´unicamente a los mensajes de correo electr´onico no vac´ıos, cuyo emisor es un contacto. De esta forma, se evita analizar mensajes que carecen de contenido, y que proceden de personas externas a la organizaci´on. Figura 55: Condiciones del proceso Despu´es de definir las condiciones, se completa el funcionamiento del proceso. Antes de la creaci´on de un caso, se a˜nade un nuevo paso que llama al complemento desarrollado en el apartado 6.2.3. Esta llamada debe incluir los par´ametros de entrada que se muestran en la figura 56. Figura 56: Par´ametros de entrada Por ´ultimo, se a˜nade un paso de creaci´on de entidad. Se selecciona la entidad “Caso”, y se completan las propiedades de la forma que se muestra en las figuras 57 y 58. 97 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Figura 57: Propiedades del caso Figura 58: Propiedades del caso 2 Tras realizar estos pasos, se completa el proceso. Por tanto, cada mensaje de correo electr´onico recibido, activar´a el proceso y, si cumple las condiciones especificadas, realizar´a el an´alisis que ofrece el complemento y se crear´a un caso. 98 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 6.3. Redirecci´on de casos 6.3.1. Registro de una cola Las colas se consideran la ubicaci´on central para la administraci´on del trabajo, y son fundamentales para organizar, asignar prioridades y supervisar el progreso del trabajo. Desde el punto de vista de programaci´on, una cola es una recopilaci´on de elementos de cola. Un elemento de cola sirve como contenedor para un registro de entidad, como una tarea, un correo electr´onico o un caso que necesita procesamiento. [42] El flujo para registar una cola es el siguiente: 1. Acceder a Service Management, dentro de Advanced Settings. 2. Seleccionar Queues. 3. Solicitar la creaci´on de una nueva cola. 4. Aparecer´a el formulario de la figura 59, donde se especifican las caracter´ısticas de la cola. Figura 59: Crear nueva cola 5. A˜nadir las caracter´ısticas de la cola, as´ı como el correo electr´onico de entrada, que ir´a asociado a la cola. 6. Guardar la cola, de forma que queda registrada en el sistema. Se ha registrado la siguiente cola para el almacenamiento de casos de prueba: 99 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Cola casos TFG. Figura 60: Cola de casos Para la aplicaci´on desarrollada en este proyecto, se han tenido en cuenta dos colas. Cada una de ellas almacenar´a casos en funci´on del grado de satisfacci´on de los clientes. TFG: Prioridad alta: Esta cola almacena los casos de m´axima prioridad, en los que la puntuaci´on de sentimiento del cliente tiene un valor entre 0.0000000000 y 0.4999999999, indicador de una influencia negativa de la satisfacci´on del cliente. TFG: Prioridad baja: En esta cola se almacenan los casos que cuentan con una puntuaci´on de sentimiento mayor o igual que 0.5000000000 y menor o igual que 1.0000000000. Estos casos no ser´an prioritarios, ya que cuentan con una puntuaci´on de sentimiento positiva. La asignaci´on de casos a agentes especializados es otro punto que resultar´ıa interesante, pero se encuentra fuera del alcance de este proyecto. 100 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 6.4. Pruebas La etapa de pruebas es una de las fases del ciclo de vida de los proyectos. La importancia de esta fase ser´a mayor o menor seg´un las caracter´ısticas del sistema desarrollado, llegando a ser vital en sistemas de tiempo real u otros en los que los errores sean irrecuperables. [43] Un error es un comportamiento distinto del que espera un usuario razonable. Puede haber errores aunque se hayan seguido todos los pasos indicados en el an´alisis y en el dise˜no, y hasta en los requisitos aprobados por el usuario. [44] Las pruebas no tienen el objeto de prevenir errores sino de detectarlos. Se efect´uan sobre el trabajo realizado y se deben encarar con la intenci´on de descubrir la mayor cantidad de errores posible. Las pruebas son pr´acticas a realizar en diversos momentos de la vida del sistema de informaci´on para verificar: El correcto funcionamiento de los componentes del sistema. El correcto ensamblaje entre los distintos componentes. El funcionamiento correcto de las interfaces entre los distintos subsistemas que lo componen y con el resto de sistemas de informaci´on con los que se comunica. El funcionamiento correcto del sistema integrado de hardware y software en el entorno de operaci´on. Que el sistema cumple con el funcionamiento esperado y permite al usuario de dicho sistema que determine su aceptaci´on, desde el punto de vista de su funcionalidad y rendimiento. Que los cambios sobre un componente de un sistema de informaci´on, no introducen un comportamiento no deseado o errores adicionales en otros componentes no modificados. [44] Las diversas pruebas a que debe ser sometido un sistema deben ser realizadas tanto por el equipo de desarrolladores, como por los usuarios, equipos de operaci´on y mantenimiento en la implantaci´on, aceptaci´on y mantenimiento del sistema de informaci´on. [44] 101 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 6.4.1. Pruebas en la personalizaci´on del sistema En este primer punto, se van a tratar las distintas pruebas realizadas para una correcta preparaci´on y personalizaci´on del entorno Dynamics 365. La persona encargada de realizar estas pruebas es el desarrollador, puesto que estas se han realizado antes de la implementaci´on, con el objetivo de afianzar conocimientos acerca del funcionamiento del sistema. Esto es necesario para que la implementaci´on de la personalizaci´on de Dynamics 365 sea fluida y libre de posibles errores o carencias. En primer lugar, se ha accedido al Centro de Ventas de Dynamics 365, desde el cual se han a˜nadido nuevos registros para un primer contacto con el sistema. El flujo que se ha seguido coincide con los casos de uso CU-01,CU-02,CU-03,CU-04 yCU-05 : 1. Para empezar, se han hecho pruebas para la creaci´on de productos. Ha aparecido un problema relacionado con el idioma del entorno, que se puede apreciar en la Figura 61. Se ha conseguido solucionar cambiando, en la configuraci´on personalizada del entorno, el idioma, espa˜nol por defecto, al ingl´es, idioma nativo del sistema. Figura 61: Error registro productos 2. Se han realizado pruebas sobre el registro de clientes potenciales. 3. A continuaci´on, se ha calificado el cliente potencial para realizar pruebas acerca de una oportunidad de negocio. En este paso ha aparecido un nuevo problema relacionado con el producto a seleccionar para la oportunidad de negocio, ya que no aparece el producto deseado en la lista de productos existentes, por lo que no se puede generar una oportunidad de negocio relacionada a ese producto. Este problema viene dado por parte del producto, el cual no se ha publicado. Por tanto, el problema se ha atajado r´apidamente publicando el producto. 4. Se han realizado pruebas sobre el registro de ofertas. 5. Para completar la venta, se han desarrollado pruebas para familiarizarse con el registro de pedidos. 102 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica 6.4.2. Pruebas para el registro de un caso procedente de correo electr´onico en el sistema En este apartado se han realizado las pruebas necesarias para el registro de casos a partir de correos el´ectronicos entrantes. Este procedimiento debe ser autom´atico, puesto que interesa evitar la necesidad de intervenir manualmente durante la ejecuci´on del proyecto, una vez desarrollado. Las reglas de creaci´on y actualizaci´on de registros satisfacen estas necesidades. Mediante las reglas de creaci´on y actualizaci´on de registros en Dynamics 365 Customer Service, puede crear o actualizar autom´aticamente registros del sistema o personalizarlos desde actividades de entrada, como correos electr´onicos, actividades sociales, o actividades personalizadas sin escribir ning´un c´odigo. [45] En este caso, como se ha mencionado anteriormente, se necesita una regla para la creaci´on de casos a partir de correos electr´onicos. Para la implementaci´on de una regla, se accede a la secci´on Service Management, dentro de Advanced Settings. Se selecciona Automatic Record Creation and Update Rules, donde se pueden crear nuevas reglas o editar las ya existentes. En el formulario de creaci´on de una nueva regla, se a˜naden las condiciones para la creaci´on o actualizaci´on del registro y las acciones que se toman, entre otras. La implementaci´on de reglas es la primera opci´on sobre la que se ha trabajado, ya que se considera la m´as eficiente por su ausencia de c´odigo. No obstante, y a pesar de haber dedicado una significativa cantidad de tiempo, no se ha logrado llegar a ejecutar estas reglas, por motivos desconocidos ajenos a un uso incorrecto de las reglas, ya que no se ha recibido ning´un error. Finalmente, se ha optado por utilizar un proceso, el cu´al se active cada vez que se reciba un correo electr´onico y, si cumple las condiciones que se especifican, cree un caso. Se han desarrollado m´ultiples pruebas hasta conseguir el proceso deseado. En primer lugar, se ha registrado una cola en el sistema, que se utilizar´a para realizar pruebas y almacenar los casos creados en estas pruebas. A continuaci´on, se ha desarrollado un proceso que se activa al recibir un mensaje de correo electr´onico, y se ejecuta si se cumplen las condiciones necesarias. Aqu´ı es donde se ha comenzado con la realizaci´on de las pruebas. Primero de todo, se ha tratado el proceso de tal forma que crease un caso por cada correo electr´onico, para comprobar que era posible utilizar un proceso para la implementaci´on de este trabajo. As´ı pues, se han realizado diferentes pruebas para completar las propiedades del caso, para lo que se han utilizado valores din´amicos, que permiten extraer propiedades del mensaje para a˜nadirlas as´ı al caso. Una parte importante consiste en extraer el cuerpo del mensaje, lo que se consigue utilizando un valor din´amico denominado Description. Este valor extra´ıdo se encuentra en formato HTML, por lo que se ha realizado diferentes pruebas con los m´ultiples valores din´amicos para comprobar si alguno de ellos pod´ıa extraer ´unicamente el contenido del mensaje. Finalmente, tras no obtener un resultado exitoso, se ha optado por desarrollar un complemento que extraiga el 103 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica cuerpo del mensaje y lo transforme a texto plano. Una vez se ha confirmado que el proceso crea casos con ´exito, y antes de desarrollar el complemento para el texto, se deben a˜nadir condiciones para la activaci´on del caso, ya que no se desea crear un caso a partir de cada mensaje de correo electr´onico recibido. Tras realizar diversas pruebas, se ha optado por a˜nadir una sola condici´on, que active el proceso cuando el remitente del mensaje coincida con un contacto almacenado en el sistema. En principio se pretend´ıa a˜nadir otra condici´on para que ´unicamente los mensajes de contactos con pedidos asociados activen el proceso, no obstante, se ha desestimado puesto que las diversas pruebas realizadas eran fallidas, y no se ha considerado que fuera un elemento vital para este proyecto. Sin embargo, podr´ıa considerarse un punto a estudiar para trabajo futuro. En este punto, el proceso tiene implementada la parte nativa de la aplicaci´on, por lo que el resto de funcionalidad del proceso se debe realizar utilizando complementos externos o plugins. El primer complemento que se ha tratado corresponde a la transformaci´on de un texto en formato HTML a texto plano. Para el desarrollo de complementos, se ha generado una aplicaci´on de consola, que permita realizar pruebas con el c´odigo del plugin antes de registrarlo en el sistema. De esta forma, se pueden encontrar errores de una forma m´as sencilla y se gana mucho tiempo, ya que para realizar una prueba en el sistema, hay un proceso bastante largo de registro del complemento y testing del mismo. Al conseguir un resultado exitoso en el desarrollo del complemento de conversi´on de un texto en formato HTML a texto plano, se debe registrar el plugin en el sistema. Para ello, se han requerido algunas pruebas en Visual Studio y posteriormente en Plugin Registration Tool. Finalmente, se han realizado pruebas para comprobar que el caso registrado con el cuerpo del mensaje como texto plano. Para conectar con el servicio de Text Analytics y obtener una puntuaci´on de sentimiento a partir del cuerpo del mensaje, se ha desarrollado otro complemento. Este solicita el texto plano obtenido a partir del plugin anterior, realiza una llamada a la API de Text Analytics y le pasa el texto, devolviendo una puntuaci´on con el sentimiento del mensaje. Se han llevado a cabo m´ultiples pruebas en la aplicaci´on de consola, hasta dar con una soluci´on exitosa. Se ha registrado el plugin en el sistema, y una vez se han realizado pruebas dentro del sistema se ha hallado un error, que permit´ıa obtener resultados ´unicamente en algunos mensajes. Este est´a relacionado con la conexi´on al servicio, y se han observado dos posibles errores de desarrollo a ra´ız de esta anomal´ıa. 1. Al tener dos plugins consecutivos, cabe la posibilidad de que el segundo plugin se inicie antes de que el primero haya registrado el resultado en la base de datos. 2. En el plugin se utiliza una solicitud con estructura predefinida, de forma que la aplicaci´on no ser´ıa escalable ni mantenible. 104 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica Referencias [1] T. Ramroop, “Definici´on de servicio de atenci´on al cliente y habilidades que exige, en 2020 y en adelante.” https://www.zendesk.es/blog/customer-service-skills/#: ~:text=El%20servicio%20de%20atenci%C3%B3n%20al%20cliente%20se%20define%2C% 20seg%C3%BAn%20Lexico,una%20buena%20atenci%C3%B3n%20al%20cliente., 2018. [Online; ´ultimo acceso 26 de Diciembre de 2020]. [2] J. Arbiol, “¿Qu´e es Microsoft Azure y para qu´e sirve? Por qu´e elegir la plataforma cloud de Microsoft.” https://www.hiberus.com/crecemos-contigo/ azure-la-plataforma-cloud-de-microsoft/, 2019. [Online; ´ultimo acceso 18 de Febrero de 2021]. [3] M. D. 365, “¿Qu´e es Dynamics 365?.” https://dynamics.microsoft.com/es-mx/ what-is-dynamics365/. [Online; ´ultimo acceso 14 de Enero de 2021]. [4] elegirCRM, “¿Qu´e es un CRM?.” https://www.elegircrm.com/crm/que-es-un-crm. [Online; ´ultimo acceso 14 de Enero de 2021]. [5] N. Consulting, “Dynamics CRM es el software de gesti´on de relaciones con el cliente.” https: //www.nubit.es/microsoft-dynamics-crm/. [Online; ´ultimo acceso 14 de Enero de 2021]. [6] E. R. apser, “El software ERP: ejemplos, tipos y uso en la empresa.” https://apser.es/ el-software-erp-ejemplos-tipos-y-uso-en-la-empresa/, 2015. [Online; ´ultimo acceso 14 de Enero de 2021]. [7] Aitana, “Dynamics 365 for Customer Service.” https://www.aitana.es/soluciones/ dynamics-365/dynamics-365-for-customer-service/#:~:text=Dynamics%20365% 20for%20Customer%20Service%20es%20un%20conjunto%20de%20funcionalidades, necesidades%20propias%20de%20cada%20negocio. [Online; ´ultimo acceso 14 de Enero de 2021]. [8] Aitana, “Dynamics 365 for Customer Service.” https://www.aitana.es/wp-content/ uploads/dynamic-365-customer-service.pdf. [Online; ´ultimo acceso 14 de Enero de 2021]. [9] D. Consulting, “Dynamics 365 Customer Engagement (CRM).” https://www. dqsconsulting.com/soluciones/dynamics-365/crm/. [Online; ´ultimo acceso 14 de Enero de 2021]. [10] S. J. Bigelow, “Microsoft Azure (Windows Azure).” https://searchdatacenter. techtarget.com/es/definicion/Microsoft-Azure-Windows-Azure, 2017. [Online; ´ultimo acceso 18 de Febrero de 2021]. [11] A. G. Miravet, “¿Qu´e son los servicios cognitivos?.” https://itblogsogeti.com/2018/02/ 27/que-son-los-servicios-cognitivos/comment-page-1/, 2018. [Online; ´ultimo acceso 18 de Febrero de 2021]. 111 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica [12] Aahill, “¿Qu´e es Text Analytics API?.” https://docs.microsoft.com/es-es/azure/ cognitive-services/text-analytics/overview, 2020. [Online; ´ultimo acceso 18 de Febrero de 2021]. [13] Clarabridge, “¿Qu´e es Text Analytics?.” https://www.clarabridge.com/ customer-experience-dictionary/text-analytics. [Online; ´ultimo acceso 18 de Febrero de 2021]. [14] T. G. Lee, “Le damos la bienvenida al IDE de Visual Studio.” https://docs.microsoft. com/es-es/visualstudio/get-started/visual-studio-ide?view=vs-2019, 2019. [Online; ´ultimo acceso 30 de Marzo de 2021]. [15] J. J. Rivera, “C#. Qu´e es y para qu´e se utiliza.” https://negociosyestrategia.com/blog/ que-es-csharp/, 2018. [Online; ´ultimo acceso 1 de Abril de 2021]. [16] F. J. G. Gala, “Desarrollo de software con C#.” https://rootear.com/desarrollo/ desarrollo-software-csharp#:~:text=Las%20principales%20ventajas%20que% 20presenta,uno%20de%20los%20m%C3%A1s%20potentes., 2015. [Online; ´ultimo acceso 1 de Abril de 2021]. [17] A. P´erez, “GanttProject: An´alisis del Software.” https://www.obsbusiness.school/blog/ ganttproject-analisis-del-software, 2014. [Online; ´ultimo acceso 31 de Marzo de 2021]. [18] S. Zamenfeld, “StarUML una herramienta para modelado.” https://www.brainlabs. com.ar/novedad/staruml-una-herramienta-para-modelado/#:~:text=StarUML%20es% 20una%20herramienta%20para,uno%20de%20licencia%20abierta%20GNU, 2011. [Online; ´ultimo acceso 30 de Marzo de 2021]. [19] J. Dur´an, “¿Qu´e es LaTeX y c´omo usarlo f´acilmente?.” https://www.somosbinarios.es/ que-es-latex-como-usar-latex/, 2019. [Online; ´ultimo acceso 1 de Abril de 2021]. [20] F. S. Knowledge, “Qu´e es y para qu´e sirve un An´alisis Funcional.” https://www.fhios.es/ para-que-sirve-un-analisis-funcional/. [Online; ´ultimo acceso 1 de Diciembre de 2020]. [21] O. B. School, “Gesti´on de requisitos de un proyecto: fin, caracter´ısticas y responsables.” https://obsbusiness.school/ es/blog-project-management/areas-de-conocimiento-pmbok-1/ gestion-de-requisitos-de-un-proyecto-fin-caracteristicas-y-responsables. [Online; ´ultimo acceso 15 de Diciembre de 2020]. [22] A. P. Rodr´ıguez, “Estructuraci´on y Especificaci´on de Casos de Uso.” https://sites.google.com/site/alfonsoperezr/investigacion/ estructuracin-y-especificacin-de-casos-de-uos. [Online; ´ultimo acceso 29 de Noviembre de 2020]. [23] J. M. Drake, “Programaci´on orientada a objetos: Lenguages, Metodolog´ıas y Herramientas.” https://www.ctr.unican.es/asignaturas/MC_OO/Doc/OO_08_I2_Proceso.pdf, 2008. [Online; ´ultimo acceso 25 de Febrero de 2021]. 112 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica [24] RUP, “Rol: Dise˜nador.” https://cgrw01.cgr.go.cr/rup/RUP.es/LargeProjects/core. base_rup/roles/rup_designer_BA8DE74E.html. [Online; ´ultimo acceso 25 de Febrero de 2021]. [25] IBM, “Diagrama de secuencia.” https://cgrw01.cgr.go.cr/rup/RUP.es/LargeProjects/ core.base_rup/guidances/guidelines/sequence_diagram_AFA76EBB.html. [Online; ´ultimo acceso 12 de Diciembre de 2020]. [26] J. C. A., “¿Qu´e es la arquitectura de software?.” https://www.johanachuquino.com/ disenar-una-correcta-arquitectura-de-software/, 2018. [Online; ´ultimo acceso 24 de Febrero de 2021]. [27] H. Cervantes, “Arquitectura de software.” https://sg.com.mx/revista/27/ arquitectura-software. [Online; ´ultimo acceso 26 de Febrero de 2021]. [28] J. Daly, “Modelos de programaci´on para Dynamics 365 Customer Engagement (local).” https://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/ developer/programming-models, 2019. [Online; ´ultimo acceso 1 de Abril de 2021]. [29] J. Daly, “Elija su estilo de desarrollo para Dynamics 365 Customer Engagement (local).” https://docs.microsoft.com/en-us/dynamics365/customerengagement/ on-premises/developer/choose-development-style, 2019. [Online; ´ultimo acceso 1 de Abril de 2021]. [30] G. W. App, “¿Qu´e es REST? Conoce su potencia.” https://gausswebapp.com/ arquitectura-rest.html, 2014. [Online; ´ultimo acceso 1 de Abril de 2021]. [31] M. M. Canelo, “¿Qu´e son los patrones de dise˜no de software?.” https://profile.es/blog/ patrones-de-diseno-de-software/, 2020. [Online; ´ultimo acceso 1 de Abril de 2021]. [32] R. B. Teresa Canive, “PLAN DE PROYECTO COMPETITIVO.” https://www. sinnaps.com/blog-gestion-proyectos/plan-de-proyecto#:~:text=Un%20plan% 20de%20proyecto%20es,para%20alcanzar%20un%20objetivo%20determinado.&text= Se%20trata%20de%20una%20de,%2C%20equipo%2C%20costes%2C%20etc. [Online; ´ultimo acceso 22 de Diciembre de 2020]. [33] D. Directivo, “Qu´e es y para qu´e sirve un An´alisis Funcional.” https://www.unir.net/ empresa/desarrollo-directivo/estrategia-de-negocio/planificacion-proyecto/, 2020. [Online; ´ultimo acceso 5 de Diciembre de 2020]. [34] P. ´agiles, “Qu´e es SCRUM.” https://proyectosagiles.org/que-es-scrum/. [Online; ´ultimo acceso 5 de Diciembre de 2020]. [35] Anonymous, “¿Qu´e es un presupuesto? Conoce los tipos de presupuesto y ejemplos para su c´alculo.” https://www.gestion.org/que-es-un-presupuesto/. [Online; ´ultimo acceso 12 de Enero de 2021]. 113 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica [36] V. Granadino, “Gesti´on de recursos humanos para proyectos.” https://www.esan.edu.pe/ conexion/actualidad/2016/07/06/gestion-de-recursos-humanos-para-proyectos/#: ~:text=La%20gesti%C3%B3n%20de%20los%20recursos,responsabilidades%20para% 20completar%20el%20proyecto., 2016. [Online; ´ultimo acceso 12 de Enero de 2021]. [37] G. E. de Postgrado, “Gesti´on de riesgos: ¿Qu´e es? ¿Por qu´e emplearla? ¿C´omo emplearla?.” https://gerens.pe/blog/gestion-riesgo-que-por-que-como/, 2016. [Online; ´ultimo acceso 15 de Enero de 2021]. [38] ´ Angel N´ajera P´erez, “Gesti´on de riesgos en Scrum.” https://wolfproject.es/ scrum-riesgos-gestion/. [Online; ´ultimo acceso 15 de Enero de 2021]. [39] R. L´opez, “PLANIFICAR, IMPLEMENTAR Y CONTROLAR. LAS TRES FASES DE UN PROYECTO EXITOSO.” https://blog.tactio.es/ planificar-implementar-y-controlar-las-tres-fases-de-un-proyecto-exitoso/, 2019. [Online; ´ultimo acceso 29 de Diciembre de 2020]. [40] W. G. Hern´andez, “La implementaci´on de procesos de informatizaci´on en organizaciones como competencia en la formaci´on de profesionales en inform´atica.” https://www.scielo.sa.cr/ scielo.php?script=sci_arttext&pid=S1659-41422016000200030, 2016. [Online; ´ultimo acceso 29 de Diciembre de 2020]. [41] Microsoft, “Informaci´on general sobre la administraci´on de casos.” https: //docs.microsoft.com/es-es/learn/modules/managing-cases-with-dynamics-365/ 1-case-management-overviewl, 2020. [Online; ´ultimo acceso 27 de Enero de 2021]. [42] J. Daly, “Entidades de cola.” https://docs.microsoft.com/es-es/dynamics365/ customerengagement/on-premises/developer/queue-entities, 2017. [Online; ´ultimo acceso 3 de Febrero de 2021]. [43] C. F. Pablo Su´arez, “Documentaci´on y pruebas.” http://materias.fi.uba.ar/7507/ content/20101/lecturas/documentacion_pruebas.pdf, 2003. [Online; ´ultimo acceso 28 de Diciembre de 2020]. [44] altp1972, “Documentaci´on y Pruebas en el Desarrollo Tradicional del Software.” https://gsitic.wordpress.com/2018/05/01/ biii11-pruebas-planificacion-y-documentacion-utilizacion-de-datos-de-prueba-pruebas-de-software-hardware-procedimientos-y-datos/, 2018. [Online; ´ultimo acceso 28 de Diciembre de 2020]. [45] N. Nellimarla, “Configurar reglas para crear y actualizar registros autom´aticamente.” https://docs.microsoft.com/es-es/dynamics365/customer-service/ set-up-rules-to-automatically-create-or-update-records, 2020. [Online; ´ultimo acceso 20 de Enero de 2021]. [46] C. C. Elatam, “Seminario Web - Dynamics 365 para servicio al cliente.” https://www. youtube.com/watch?v=VyYSWJs5Hkk, 2017. [Online; ´ultimo acceso 28 de Noviembre de 2020]. 114 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica [47] A. Management, “Ventas y Marketing: Conoce Dynamics 365 for Sales Customer Service.” https://www.youtube.com/watch?v=AfharuHzSGU, 2018. [Online; ´ultimo acceso 29 de Noviembre de 2020]. [48] J. Salido, “C´omo plantear correctamente el objetivo del TFG.” https://www.esi.uclm.es/ www/jsalido/TFG/objetivoTFG.html, 2018. [Online; ´ultimo acceso 30 de Noviembre de 2020]. [49] C. C. Elatam, “Microsoft Dynamics 365 Customer Service ¿C´omo hacer que tu servicio al cliente funcione?.” https://www.youtube.com/watch?v=GZ85oZRHPuc, 2018. [Online; ´ultimo acceso 29 de Noviembre de 2020]. [50] M. Vega, “Casos de uso UML.” https://lsi.ugr.es/~mvega/docis/casos%20de%20uso. pdf, 2010. [Online; ´ultimo acceso 3 de Diciembre de 2020]. [51] R. A. R. Morillo, “Requerimientos no funcionales: Ejemplos.” http://www.pmoinformatica. com/2015/05/requerimientos-no-funcionales-ejemplos.html, 2014. [Online; ´ultimo acceso 23 de Diciembre de 2020]. [52] Anonymous, “ACTORES, ROLES E INTERACCIONES.” http://fsi2013.blogspot. com/2013/12/actores-roles-e-interacciones.html#:~:text=ACTORES%20DENTRO% 20DEL%20DESARROLLO%20DE%20SOFTWARE&text=Los%20actores%20son%20los%20usuarios, que%20interact%C3%BAa%20con%20el%20sujeto.%22, 2013. [Online; ´ultimo acceso 11 de Enero de 2021]. [53] G. Oliveira, “Como crear un presupuesto de proyecto eficiente.” https://blog. softexpert.com/es/como-crear-un-presupuesto-de-proyecto-eficiente/#:~: text=El%20presupuesto%20de%20proyecto%20es,completar%20las%20tareas%20del% 20proyecto., 2017. [Online; ´ultimo acceso 12 de Enero de 2021]. [54] R. de Enciclopedia Econ´omica, “Recursos tecnol´ogicos.” https://enciclopediaeconomica. com/recursos-tecnologicos/, 2019. [Online; ´ultimo acceso 13 de Enero de 2021]. [55] AlfaPeople, “¿Qu´e es Microsoft Dynamics 365 y c´omo puede ayudar mi empresa?.” https: //www.youtube.com/watch?v=hzSIFdR8yfY, 2017. [Online; ´ultimo acceso 14 de Enero de 2021]. [56] C. Villarreal, “7 errores comunes en proyectos de desarrollo de software.” https://www.northware.mx/2016/01/04/ 7-errores-comunes-en-proyectos-de-desarrollo-de-software/. [Online; ´ultimo acceso 15 de Enero de 2021]. [57] Microsoft, “Informaci´on general de Dynamics 365 App for Outlook.” https://docs. microsoft.com/es-es/dynamics365/outlook-app/overview, 2019. [Online; ´ultimo acceso 15 de Enero de 2021]. 115 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica [58] C. de Souza, “Reglas de creaci´on y actualizaci´on de registros de Dynamics 365 para convertir correos electr´onicos en casos.” https://carldesouza.com/ dynamics-365-record-creation-update-rules-email-case/#:~:text=In%20Dynamics% 20365%2C%20you%20can,Automatic%20Case%20Creation%20Rules)%3A, 2018. [Online; ´ultimo acceso 22 de Enero de 2021]. [59] N. Nellimarla, “Crear autom´aticamente un caso desde un correo electr´onico en un cliente web.” https://docs.microsoft.com/es-es/dynamics365/customer-service/ automatically-create-case-from-email, 2020. [Online; ´ultimo acceso 22 de Enero de 2021]. [60] Aahill, “Inicio r´apido: Uso de la biblioteca cliente y la API REST de Text Analytics.” https://docs.microsoft.com/es-es/azure/cognitive-services/ text-analytics/quickstarts/client-libraries-rest-api?tabs=version-3-1& pivots=programming-language-csharp, 2021. [Online; ´ultimo acceso 4 de Febrero de 2021]. [61] Phecke, “microsoft/PowerApps-Samples.” https://github.com/microsoft/ PowerApps-Samples, 2021. [Online; ´ultimo acceso 16 de Febrero de 2021]. [62] T. S. Inform´aticas, “¿Qu´e es Microsoft Azure? ¿C´omo funciona?.” https://www.tecon.es/ que-es-microsoft-azure-como-funciona/. [Online; ´ultimo acceso 18 de Febrero de 2021]. [63] T. E. Times, “Definition of ’Systems Design’.” https://economictimes.indiatimes.com/ definition/systems-design, 2021. [Online; ´ultimo acceso 25 de Febrero de 2021]. [64] U. militar de Nueva Granada, “Introducci´on al dise˜no y arquitectura de software.” http://virtual.umng.edu.co/distancia/ecosistema/odin/odin_desktop.php?path= Li4vb3Zhcy9pbmdlbmllcmlhX2luZm9ybWF0aWNhL2FycXVpdGVjdHVyYV9kZV9wYXRyb25lc195X3NvZnR3YXJlL3VuaWRhZF8xLw= =#slide_4.3. [Online; ´ultimo acceso 25 de Febrero de 2021]. [65] M. Zapata, “Atributos de calidad del software.” https://manuelzapata.co/ atributos-de-calidad/, 2019. [Online; ´ultimo acceso 26 de Febrero de 2021]. [66] R. Hat, “¿Qu´e es la arquitectura orientada a los servicios (SOA)?.” https://www.redhat. com/es/topics/cloud-native-apps/what-is-service-oriented-architecture#:~: text=La%20arquitectura%20orientada%20a%20los%20servicios%20(SOA)%20es%20un% 20tipo,red%20con%20un%20lenguaje%20com%C3%BAn. [Online; ´ultimo acceso 26 de Febrero de 2021]. [67] R. PowerData, “Qu´e es la arquitectura orientada a servicios SOA.” https: //blog.powerdata.es/el-valor-de-la-gestion-de-datos/bid/394442/ qu-es-la-arquitectura-orientada-a-servicios-soa#:~:text=La%20arquitectura% 20orientada%20a%20servicios%20(SOA)%20es%20el%20nexo%20que,reducir%20los% 20costes%20de%20integraci%C3%B3n., 2014. [Online; ´ultimo acceso 26 de Febrero de 2021]. 116 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica [68] L. Alexander, “initial commit of Azure sentiment analysis solution.” https:// github.com/lucasalexander/Crm-Sample-Code/blob/master/CrmAzureTextAnalysis/ CrmAzureTextAnalysis/AnalyzeSentiment.cs. [Online; ´ultimo acceso 1 de Marzo de 2021]. [69] P. Hecke, “samples.” https://github.com/microsoft/PowerApps-Samples/blob/master/ cds/orgsvc/C%23/Azurecustomworkflowactivity/Azurecustomworkflowactivity/ SampleProgram.cs. [Online; ´ultimo acceso 1 de Marzo de 2021]. [70] [71] L. Alexander, “Sentiment Analysis in Microsoft Dynamics CRM Using Azure Text Analytics (Recorded Webcast).” https://msdynamicsworld.com/webcast/customer-service/ sentiment-analysis-microsoft-dynamics-crm-using-azure-text-analytics-record, 2016. [Online; ´ultimo acceso 2 de Marzo de 2021]. [72] Microsoft, “Escribir un complemento con Azure personalizado.” https://docs. microsoft.com/es-es/dynamics365/customerengagement/on-premises/developer/ write-custom-azure-aware-plugin, 2018. [Online; ´ultimo acceso 2 de Marzo de 2021]. [73] E. Bruno, “CognitiveServices – Text Analytics API, detecci´on de lenguaje, an´alisis de sentimiento y m´as utilizando Azure.” https://elbruno.com/2016/04/09/ cognitiveservices-text-analytics-api-deteccion-de-lenguaje-analisis-de-sentimiento-y-mas-utilizando-azure/, 2016. [Online; ´ultimo acceso 1 de Marzo de 2021]. [74] Microsoft, “Ejemplo: Detectar idioma con Text Analytics.” https://docs. microsoft.com/es-es/azure/cognitive-services/text-analytics/how-tos/ text-analytics-how-to-language-detection#step-3-view-the-results, 2020. [Online; ´ultimo acceso 1 de Marzo de 2021]. [75] Microsoft, “C´omo llamar a la API REST de Text Analytics.” https://docs. microsoft.com/es-es/azure/cognitive-services/text-analytics/how-tos/ text-analytics-how-to-call-api?tabs=synchronous, 2020. [Online; ´ultimo acceso 1 de Marzo de 2021]. [76] M. R. Flores, “Analyzing the Sentiment of Documents.” https://github.com/Azure/ azure-sdk-for-net/blob/master/sdk/textanalytics/Azure.AI.TextAnalytics/ samples/Sample2_AnalyzeSentiment.md, 2020. [Online; ´ultimo acceso 3 de Marzo de 2021]. [77] T. Pal, “Working with Microsoft Cognitive Text Analytics.” https://www.codeguru.com/ csharp/csharp/cs_misc/working-with-microsoft-cognitive-text-analytics.html, 2018. [Online; ´ultimo acceso 3 de Marzo de 2021]. [78] J. Ahl´en, “An´alisis de texto y an´alisis de sentimientos con Microsoft Cognitive Services.” https://www.johanahlen.info/en/2017/04/ text-analytics-and-sentiment-analysis-with-microsoft-cognitive-services/, 2017. [Online; ´ultimo acceso 3 de Marzo de 2021]. 117 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica [79] Microsoft, “Ejercicio: llame a la API de Text Analytics desde la consola de pruebas en l´ınea.” https://docs.microsoft.com/en-us/ learn/modules/classify-user-feedback-with-the-text-analytics-api/ 3-exercise-call-the-text-analytics-api-using-the-api-testing-console. [Online; ´ultimo acceso 3 de Marzo de 2021]. [80] M. Peart, “Comprender las vistas (listas).” https://docs.microsoft.com/es-es/ dynamics365/customerengagement/on-premises/customize/create-edit-views, 2018. [Online; ´ultimo acceso 9 de Marzo de 2021]. [81] M. Peart, “Crear y editar campos (atributos).” https://docs.microsoft.com/es-es/ dynamics365/customerengagement/on-premises/customize/create-edit-fields, 2018. [Online; ´ultimo acceso 9 de Marzo de 2021]. [82] M. Peart, “Creaci´on o edici´on de un formulario principal para entidades.” https: //docs.microsoft.com/es-es/dynamics365/customerengagement/on-premises/ customize/create-edit-main-forms, 2018. [Online; ´ultimo acceso 9 de Marzo de 2021]. [83] T. C. C. esp, “Como leer y escribir archivos JSON en C con JSON.Net.” https://www. youtube.com/watch?v=8gGqnSkBhzc, 2020. [Online; ´ultimo acceso 22 de Marzo de 2021]. [84] S. Overflow, “Could not load file or assembly ’Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed’ or one of its dependencies.” https://stackoverflow.com/questions/38202038/ could-not-load-file-or-assembly-newtonsoft-json-version-7-0-0-0-culture-neutr/ 38202870#38202870, 2017. [Online; ´ultimo acceso 22 de Marzo de 2021]. [85] S. Overflow, “Could not load file or assembly ’Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed’.” https://stackoverflow.com/questions/22507189/ could-not-load-file-or-assembly-newtonsoft-json-version-4-5-0-0-culture-neutr, 2014. [Online; ´ultimo acceso 22 de Marzo de 2021]. [86] N. S. Lønberg, “Business Process Error - MetadataCache.” https:// www.crmug.com/communities/community-home/digestviewer/viewthread? MessageKey=fb8e3669-454f-44fe-976c-97e049f187ea&CommunityKey= dc83c23b-ede0-4070-ae7a-dd90859148a6&tab=digestviewer, 2019. [Online; ´ultimo acceso 25 de Marzo de 2021]. [87] B. Wagner, “Pausa e interrupci´on de subprocesos.” https://docs.microsoft.com/es-es/ dotnet/standard/threading/pausing-and-resuming-threads, 2017. [Online; ´ultimo acceso 25 de Marzo de 2021]. [88] Microsoft, “WebClient.UploadString M´etodo.” https://docs.microsoft.com/es-es/ dotnet/api/system.net.webclient.uploadstring?view=netframework-4.8. [Online; ´ultimo acceso 26 de Marzo de 2021]. 118 Trabajo de Fin de Grado Universidad de Valladolid CURSO 2020-2021 Grado en Ingenier´ıa Inform´atica [89] S. Overflow, “Incoherencia de accesibilidad: el tipo de par´ametro es menos accesible que el m´etodo 34 20.” https://es.stackoverflow.com/ questions/81508/incoherencia-de-accesibilidad-el-tipo-de-par%C3% A1metro-es-menos-accesible-que-el-m%C3%A9, 2018. [Online; ´ultimo acceso 26 de Marzo de 2021]. [90] J. M. R. Moncayo, “¿Qu´e es REST? Conoce su potencia.” https://openwebinars.net/blog/ que-es-rest-conoce-su-potencia/, 2018. [Online; ´ultimo acceso 1 de Abril de 2021]. 119