====== Projeto de Software ======
===== Contextualização =====
Uma concessionária prestadora de serviço público de distribuição de energia enfrenta um desafio importante para atender os níveis acordados de qualidade de atendimento deteminados pela agência reguladora. Em razão de problemas operacionais e da infraestrutura de fornecimento, os canais tradicionais de atendimento estão sendo acionados com volume acima da capacidade, isto tem gerado descontentamentos por parte do consumidor e aplicação de multas pelos órgãos compententes, fragilizando a empresa e prejudicando sua capacidade de recuperação nesse momento crítico citado.
Como estratégia para responder à altura do impacto levantado, a área de inovação da Concessionária sugeriu o uso de tecnologia de chatbot para que as demandas pudessem ser paralelizadas, com objetivo de reduzir a necessidade de acesso ao atendimento convencional no balcão.
A empresa atende aproximadamente 5 milhões de residências em suas regiões de atuação, as famílias possuem em média 3 moradores por residência e o consumo dos serviços de atendimento representa algo em torno de 25% desse público.
O órgão regulador e demais órgãos de controle determinam que o tempo de espera nas ligações não supere 10min até que o consumidor tenha uma resposta ao seu problema. A Concessionária conta hoje com 50 postos de atendimento, espalhados pela região, com 4 pontos de atentimento por posto, atendendo tanto o serviço 0800 como no atendimento presencial. A meta é que haja uma redução de 25% do volume de atendimento nestes postos com a entrada no serviço de chatbot.
{{ :selecao:chatbot-anatomia.png?nolink |}}
Figura 1 - Anatomia do Chatbot
===== Requisitos do Projeto =====
Você é o arquiteto do sistema, sua tarefa é liderar a equipe de desenvolvimento que irá criar um sistema que atenda a todas as expectativas da empresa, com base na anatomia descrita na Figura 1. Após algumas reuniões com os stakeholders do projeto, você levantou alguns requisitos:
* O chatbot deve ser um serviço completamente independente do sistema comercial, no entanto, deve estar integrado ao sistema para controle de autenticação e consumo dos serviços disponíveis no sistema comercial.
* Como demonstrado na Figura 1, o chatbot deve ser integrado à outros canais consumindo os mesmos serviços do sistema comercial, os canais essenciais são Facebook Messenger e Whatsapp.
* Os casos de uso que o sistema deverá implementar são Autenticar Consumidor, Consultar Segunda Via de Conta, Consultar Registro de Atendimento, Solicitar Serviços e Consultar Pagamentos.
===== Objetivos do Projeto =====
Com base na especificação, sua tarefa é criar uma arquitetura para o sistema, considerando os requisitos apresentados. Seu projeto será avaliado pela qualidade com que ele suporta os requisitos e pela clareza com que as informações são descritas. A arquitetura pode ser baseada em qualquer tecnologia corporativa, que atenda aos requisitos elencados, considerando uma operação em escala com grande volume de informações. Alguns diagramas UML são exigidos:
* Diagrama de classes obedecendo o diagrama de domínio apresentados na especificação. Métodos públicos referenciados em outros diagramas devem estar presentes.
* Diagrama de Componentes. Exemplos de componentes são EJBs, Servlets, JSPs, POJOs e Gerenciadores/Controladores ou Implementações de Design Patterns.
* **Diagrama de Deployment.**
* Diagrama de Sequência ou de Colaboração um para cada um dos casos de uso listados.
Há ainda a necessidade de incluir no projeto uma listagem dos três maiores riscos técnicos que foram identificados, juntamente com uma estratégia de atenuação para cada um destes riscos. É importante também que sejam listadas todas as hipóteses feitas sobre o sistema durante o projeto da arquitetura e que tenha um impacto em seu design. Liste também as decisões tomadas durante o projeto.
Os únicos artefatos exigidos para compor a nota desta etapa da prova são os diagramas e a lista de riscos. Cada item avaliado possui um valor em pontos. É preciso fazer uma pontuação mínima em cada item e a pontuação total também deve superar determinado valor mínimo.
====== Arquitetura do Projeto ======
Deste ponto em diante você deverá desenvolver o seu trabalho para que seja acompanhado em tempo de execução, o resultado do seu trabalho. Esperamos que você conclua esse trabalho em 15 dias, tendo como prazo final do dia 05/07/18.
===== Diagrama de Classes =====
===== Diagrama de Componentes =====
===== Diagrama de Deployment =====
{{ :selecao:diagrama_de_implantacao.png?nolink |}}
Figura 2 - Diagrama de Deployment
===== Diagramas de Sequência =====
===== Riscos Técnicos =====
- Um dos riscos técnicos é em relação a segurança da informação, às informações do consumidor não podem ser divulgadas para terceiros. Como o chatbot irá funcionar dentro de algum canal já existente (facebook, whatsapp, messenger, entre outros) é preciso utilizar o que esses canais oferecem de segurança para que assim possa ser garantido ao consumidor que suas informações não serão divulgadas.
- O tempo de resposta e a disponibilidade do chatbot também são importantes, o chatbot deve estar sempre disponível e preparado para falar com vários consumidores ao mesmo tempo sem que deixe nenhum esperar para que assim os consumidores não demorem muito para resolver seus problemas e multas não sejam aplicadas a empresa. A indisponibilidade do chatbot pode ser causada por erros de código ou por alguma falha que ocorreu no canal que o chatbot utiliza, como os canais que esse chatbot irá utilizar são estáveis é preciso garantir que o código do chatbot está bem testado, livre de bugs e as atualizações devem ser feitas de forma rápida e em momentos oportunos para que o consumidor não sinta que o chatbot precisou ficar offline por alguns minutos. Já o tempo de resposta do chatbot pode ser alto caso ocorra algum problema no datacenter onde o chatbot está hospedado ou na comunicação com o sistema comercial da empresa, como o datacenter que será utilizado, isto é, os canais que serão utilizados, são estáveis é preciso garantir a comunicação com o sistema comercial, ou seja, é preciso garantir que o chatbot vai conseguir se comunicar rapidamente com o sistema comercial para realizar os serviços solicitados pelo consumidor. Para isso precisamos manter estável o servidor do sistema comercial e sempre disponível para receber requisições de serviços.
- A machine learning também pode trazer riscos técnicos, o chatbot precisa estar preparado para interagir corretamente com vários tipos de consumidores, isto é, ele precisa ser capaz de manter a comunicação com o consumidor para solucionar seu problema. Para isso ele precisa ter uma base de conversação construída de forma correta (ele precisa entender e saber responder à uma boa quantidade de “requisições”, isto é, à uma boa quantidade de mensagens que o consumidor pode enviar) e precisa ser capaz de aprender com as suas interações com o consumidor, por exemplo, caso um consumidor fale alguma coisa que ele não entenda, ele precisa aprender com essa conversa e se um outro consumidor falar a mesma coisa, ele precisa já entender o que significa e manter o diálogo. Garantimos isso com o uso de bons algoritmos de machine learning e uma boa base para aprendizado.