Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE CENTRO DE ENSINO SUPERIOR DO SERIDÓ DEPARTAMENTO DE COMPUTAÇÃO E TECNOLOGIA BACHARELADO EM SISTEMAS DE INFORMAÇÃO REFATORAÇÃO DE MODELOS DE SOFTWARE DE UM SISTEMA PARA APOIO AO PROCESSO DE MONTAGEM DE EQUIPES DE AVALIAÇÃO DAS UNIDADES DE ENSINO DO PRONATEC VIRGÍNIA MAIA DE BRITO FERNANDES Caicó-RN 2018 VIRGÍNIA MAIA DE BRITO FERNANDES REFATORAÇÃO DE MODELOS DE SOFTWARE DE UM SISTEMA PARA APOIO AO PROCESSO DE MONTAGEM DE EQUIPES DE AVALIAÇÃO DAS UNIDADES DE ENSINO DO PRONATEC Trabalho de conclusão de curso apresentado ao curso de graduação em Sistemas de Informação, como parte dos requisitos para obtenção do título de Ba- charel em Sistemas de Informação da Universidade Federal do Rio Grande do Norte. Orientador(a): Taciano de Morais Silva, MSc. Co-orientador(a): Flavius da Luz e Gorgônio, DSc. Caicó-RN 2018 Agradecimentos A Deus, em primeiro lugar, por minha vida. A minha mãe, Benúbia Maia de Brito Fernandes por ser mãe e pai, na ausência do meu pai. A meu pai, Antonildo dos Santos Fernandes, por me auxiliar quando precisei. Obrigada por tudo! Aos meus amigos e amigas que estiveram presentes no decorrer da minha graduação, pelo apoio e companheirismo. Vocês para sempre serão lembrados. Aos meus orientadores, Taciano de Morais Silva e Flavius da Luz e Gorgônio pelos incentivos e conselhos. A François Dantas de Oliveira, pelo o auxílio no projeto vinculado a este trabalho, como aos vários ensinamentos durante o projeto. Aos alunos que participaram do projeto, componentes da Empresa Júnior Beta Seridó, meu muito obrigada pelo apoio. Aos meus colegas de curso, aos que estiveram mais próximos a mim, me ajudando quando precisei, nos momentos de alegria e de tristeza, agradeço a todos. Resumo Durante o processo de desenvolvimento de um software é comum ocorrerem alguns deslizes. Em qualquer fase deste processo, quase sempre haverá algo a ser modificado, seja, por exem- plo, por código duplicado, modelagem que precisa ser remodelada ou motivada por problemas identificados no sistema. Por meio da utilização da refatoração, torna-se possível a modificação de qualquer uma das fases no processo de desenvolvimento de um sistema a fim de se obter melhorias. Nessa circunstância, este trabalho apresenta uma proposta de refatoração na fase de documentação/modelagem do Sistema de Agrupamento Baseado em Inteligência Artificial (SABIA), realizado pelo Laboratório de Inteligência Computacional Aplicada a Negócios (LA- BICAN), do curso de Sistemas de Informação (SI) da Universidade Federal do Rio Grande do Norte (UFRN), com o intuito de modificar ou corrigir problemas na modelagem de software. Além disso, da documentação do Sistema SABIA, foi feita uma análise de características que influenciaram positiva e negativamente no desenvolvimento do projeto, que justificam às neces- sidades de refatoração e demonstram o ganho de qualidade na modelagem do sistema. Ainda, por meio da análise de melhoria, feita através de um formulário com questões direcionadas aos interessados, verificou-se que, de fato, há uma melhoria significante ao utilizar técnicas de refatoração nos modelos de software, tornando os diagramas mais fáceis de serem interpretados. Palavras-chave: Modelagem. Refatoração. UML. SABIA. PRONATEC. Abstract During the software development process some slips are common. At any stage of this process, there will almost always be something to be modified, for example, by duplicate code, modeling that needs to be reshaped or motivated by problems identified in the system. Through the use of refactoring, it becomes possible to modify any of the phases in the development process of a system in order to obtain improvements. In this circumstance, this work presents a refactoring proposal in the documentation / modeling phase of the System Grouping Based Intelligence Artificial (SABIA), carried out by the Laboratory of Intelligence Computational Applied to Business (LABICAN) of University Federal the Rio Grande do Norte (UFRN), in order to modify or correct problems in software modeling. In addition, from the documentation of the SABIA System, an analysis was made of characteristics that influenced positively and negatively in the development of the project, which justify the needs of refactoring and demonstrate the quality gain in the system modeling. Also, through the improvement analysis, done through a form with questions directed to the interested parties, it was verified that, in fact, there is a significant improvement when using refactoring techniques in software models, making the diagrams easier to interpret. Keywords: Modeling. Refactoring. UML. SABIA. PRONATEC. LISTA DE FIGURAS Figura 1 – Exemplo de Classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Figura 2 – Nomes simples e Nomes qualificados . . . . . . . . . . . . . . . . . . . . . 17 Figura 3 – Atributos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Figura 4 – Operações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Figura 5 – Exemplo de Relacionamentos . . . . . . . . . . . . . . . . . . . . . . . . . 18 Figura 6 – Ator e Caso de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Figura 7 – Tipos de Nomes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Figura 8 – Arquitetura em Camadas do DDD . . . . . . . . . . . . . . . . . . . . . . 21 Figura 9 – Ilustração da Proposta do Trabalho . . . . . . . . . . . . . . . . . . . . . . 28 Figura 10 – Processo de Montagem das Equipes de Avaliadores . . . . . . . . . . . . . 29 Figura 11 – Diagrama de Casos de Uso (Inicial) . . . . . . . . . . . . . . . . . . . . . . 31 Figura 12 – Diagrama de Casos de Uso (Refatorado) . . . . . . . . . . . . . . . . . . . 32 Figura 13 – Uma parte do Diagrama de Classes - Sabia (Inicial) . . . . . . . . . . . . . 33 Figura 14 – Diagrama de Classes - Avaliação (Refatorado) . . . . . . . . . . . . . . . . 34 Figura 15 – Diagrama de Classes - Cadastros IBGE (Inicial) . . . . . . . . . . . . . . . 35 Figura 16 – Diagrama de Classes - Localidade (Refatorado) . . . . . . . . . . . . . . . 36 Figura 17 – Diagrama de Classes - Dados Pessoais (Inicial) . . . . . . . . . . . . . . . . 37 Figura 18 – Diagrama de Classes - Parceiro (Refatorado) . . . . . . . . . . . . . . . . . 38 Figura 19 – Resultado da pergunta 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Figura 20 – Resultado da pergunta 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Figura 21 – Resultado da pergunta 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Figura 22 – Resultado da pergunta 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Figura 23 – Resultado da pergunta 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Figura 24 – Resultado da pergunta 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Figura 25 – Resultado da pergunta 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Figura 26 – Resultado da pergunta 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Figura 27 – Resultado da pergunta 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Figura 28 – Resultado da pergunta 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Figura 29 – Resultado da pergunta 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Figura 30 – Resultado da pergunta 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Figura 31 – Resultado da pergunta 13 . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Figura 32 – Diagrama de Classes - Sabia (Inicial) . . . . . . . . . . . . . . . . . . . . . 50 Figura 33 – Questão 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Figura 34 – Questão 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Figura 35 – Questão 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Figura 36 – Questão 4 . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . 53 Figura 37 – Questão 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Figura 38 – Questão 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Figura 39 – Questão 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Figura 40 – Questão 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Figura 41 – Questão 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Figura 42 – Questão 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Figura 43 – Questão 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Figura 44 – Questão 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Figura 45 – Questão 13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 LISTA DE TABELAS Tabela 1 – Diagramas, verificação e refatoração . . . . . . . . . . . . . . . . . . . . . 14 Tabela 2 – Utilização das Técnicas de Refatoração . . . . . . . . . . . . . . . . . . . . 30 Tabela 3 – Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 LISTA DE ABREVIATURAS E SIGLAS SABIA Sistema de Agrupamento Baseado em Inteligência Artificial LABICAN Tecnologia da Informação UFRN Laboratório de Inteligência Computacional Aplicada a Negócios SI Sistemas de Informação UFRN Universidade Federal do Rio Grande do Norte UML Unified Modeling Language PRONATEC Programa Nacional de Acesso ao Ensino Técnico e Emprego SETEC Secretaria de Educação Profissional e Tecnológica EPT Educação Profissional e Tecnológica UE Unidades de Ensino MEC Ministério da Educação BA Banco de Avaliadores SCDP Sistema de Concessão de Diárias e Passagens PCD Proposta de Concessão de Diárias IDE Integrated Development Environment HTML 5 Hypertext Markup Language, versão 5 CSS 3 Cascading Style Sheets ER Diagrama Entidade-Relacionamento DDD Domain-Driven Design OOSE Object Oriented Software Engineering OMT Object Modeling Technique MDD Model Driven Design OMG Object Management Group IU Interface de Usuário SUMÁRIO 1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.1 Contextualização e Problema . . . . . . . . . . . . . . . . . . . . . . 11 1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2.1 Objetivo Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2.2 Objetivos Específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.3 Motivação e Justificativa de Estudo . . . . . . . . . . . . . . . . . . 13 2 FUNDAMENTAÇÃO TEÓRICA . . . . . . . . . . . . . . . . . . . . . 15 2.1 Modelagem de Software com Unified Modeling Language (UML) . 15 2.1.1 Diagramas da UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1.1.1 Diagrama de Classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1.1.2 Diagrama de Casos de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.2 Domain-Driven Design (DDD) . . . . . . . . . . . . . . . . . . . . . . 20 2.3 Refatoração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.4 Trabalhos Relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3 METODOLOGIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.1 Regras de Negócio do SABIA . . . . . . . . . . . . . . . . . . . . . . 26 3.2 Arquitetura do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4 RESULTADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4.1 Modelagem Inicial Versus Refatorada . . . . . . . . . . . . . . . . . 30 4.2 Questionário Avaliativo . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 APÊNDICE A – MODELO DO SABIA . . . . . . . . . . . . . . . . . 50 APÊNDICE B – FORMULÁRIO DE QUESTÕES . . . . . . . . . . . 51 11 1 Introdução 1.1 Contextualização e Problema O Programa Nacional de Acesso ao Ensino Técnico e Emprego (PRONATEC) foi criado pelo Governo Federal, em 2011, com o objetivo de ampliar a oferta de cursos de educação profissional e tecnológica no país. O PRONATEC é composto por cinco iniciativas, que são: Expansão da Rede Federal de Educação Profissional, Científica e Tecnológica; Programa Brasil Profissionalizado; Rede e-Tec Brasil; Acordo de Gratuidade com o Sistema S; e Bolsa-Formação (LIMA; PACHECO, 2017). Estas iniciativas são ofertadas, especialmente, aos estudantes do ensino médio da rede pública, incluindo os da educação de jovens e adultos, trabalhadores, beneficiários dos programas federais de transferência de renda, e estudantes que tenham cursado o ensino médio completo em escola da rede pública ou em instituições privadas na condição de bolsista integral (LIMA; PACHECO, 2017). Contudo, para que se tenha um controle sob tais iniciativas, o PRONATEC é avaliado pela Secretaria de Educação Profissional e Tecnológica (SETEC) que é a coordenadora nacional da política de Educação Profissional e Tecnológica (EPT) no Brasil. A SETEC realiza uma série de procedimentos de monitoramento e avaliação do desempenho das Unidades de Ensino (UE) que ofertam cursos do PRONATEC, com a finalidade de analisar as condições de oferta dos cursos financiados pelo programa. Participam deste programa as instituições da Rede Federal de Educação Profissional, Científica e Tecnológica, unidades de ensino dos Serviços Nacionais de Aprendizagem (SENAI, SENAC, SENAR e SENAT) e instituições de educação profissional vinculadas aos sistemas estaduais de ensino (CASSIOLATO; GARCIA, 2014). Entretanto, essa avaliação nas UE ocorre pela SETEC, que desenvolve manualmente um processo de montagem das equipes (composta por professores e/ou técnicos educacionais). Este processo é desempenhado pelos Coordenadores de Equipes (CE), que são os responsáveis por realizar todas as operações referentes as equipes e avaliações, bem como a situação das instituições a serem visitadas. No entanto, a montagem das equipes tende a ser lento para se realizar todas as etapas necessárias para a sua efetivação, tendo em vista a dificuldade que há na tomada de decisão devido aos vários aspectos que existem. Estes aspectos são descritos como: o processo de avaliação é realizado em ciclos, onde cada ciclo tem sua duração determinada por um período. O processo se inicia no momento em que a SETEC libera uma planilha contendo uma lista de instituições e seus respectivos locais que serão avaliados em um determinado período. De posse desse documento, os avaliadores que fazem parte deste programa são questionados sobre sua disponibilidade para a realização dessas Capítulo 1. Introdução 12 avaliações no período estipulado pelo MEC. Assim, cada avaliador deverá informar as semanas em que têm disponibilidade para participar do programa. Com o objetivo de automatizar os aspectos falados anteriormente, foi desenvolvido um Sistema de Agrupamento Baseado em Inteligência Artificial (SABIA), fazendo com que fossem “sistematizadas” todas as funções abrangidas no processo de avaliação citado. O sistema proposto foi idealizado para facilitar e automatizar o processo que é manual. Sendo o alvo principal o uso dos algoritmos genéticos por serem uma técnica de busca adequada para o processo de monitoramento e avaliação das instituições (SABIA, 2018). Os algoritmos genéticos são técnicas de busca heurísticas baseado na teoria da evolução de Charles Darwin que consistem na aplicação de métodos bio-inspirados como o cruzamento entre indivíduos para gerar um novo, assim como a mutação, que consiste na mudança de uma característica genética do indivíduo, fazendo com que este seja mais adaptado ou menos adaptado ao ambiente (LINDEN, 2012). O SABIA deu-se início em meados de 2014, como projeto de iniciação científica iniciado no Laboratório de InteligênciaComputacional Aplicada a Negócios (LABICAN), no qual foram criados a modelagem de software com Unified Modeling Language (UML), em que foram elaborados o diagrama de classes, diagrama de casos de uso, diagrama entidade- relacionamento, projeto arquitetural e manual de desenvolvimento. Além disso, foi desenvolvido algumas partes da interface do sistema (SABIA, 2018). Para que o projeto fosse desenvolvido de forma simples e rápida, a metodologia ágil Scrum foi utilizada durante todo o processo de desenvolvimento, tendo uma abordagem iterativa e incremental, propondo, de acordo com (TANIGUCHI K., 2009), uma possível entrega do software com maior qualidade e rapidez, assim como, por se tratar de uma metodologia bastante utilizada no mercado de trabalho por seu ótimo desempenho em auxiliar os processos de desenvolvimento de softwares. O sistema mesmo com todo seu planejamento e sua modelagem e parte de sua im- plementação, acabou sendo descontinuado pelo surgimento de algumas dificuldades, como: falta de conhecimento técnico por parte de alguns componentes do projeto, disponibilidade dos alunos e suspensão das ações de avaliação e monitoramento por parte do governo. Estes fatores resultaram em atrasos na execução de determinadas tarefas, o que influenciou negativamente no cumprimento do cronograma de atividades, impossibilitando a conclusão do sistema proposto (SABIA, 2018). Após a descontinuidade, em meados do ano de 2017 as ações de avaliação e monito- ramento por parte do governo foram retomadas. Assim, viu-se a oportunidade de retomar o projeto, sendo conversado entre os alunos e professores envolvidos que o SABIA deveria ser refatorado para melhor entendimento e aproveitamento das informações antes obtidas, auxiliando todos os incluídos no projeto a fim de se obter a conclusão do mesmo. Em análise à modelagem Capítulo 1. Introdução 13 do SABIA, foi possível identificar a necessidade de melhorias, com o intuito de proporcionar qualidade no processo de desenvolvimento do sistema, tendo-se como consequências: maior agilidade e melhor organização da documentação/modelagem. Diante de todo este contexto, o presente trabalho consiste na proposta de refatorar os modelos que contemplam a documentação/modelagem que antecedem o processo de imple- mentação do sistema, de modo a, não apenas reparar os modelos existentes, mas também a identificação de problemas e em propor novos modelos. 1.2 Objetivos Os objetivos deste trabalho são divididos em objetivo geral e específicos. 1.2.1 Objetivo Geral Desenvolver uma refatoração de modelos do sistema, usando modelagem de software com UML, que corrija problemas no sistema SABIA, melhorando o entendimento lógico e a organização arquitetural do software. 1.2.2 Objetivos Específicos • Analisar a modelagem de software proposta para o sistema SABIA identificando os problemas nos modelos e falta de modelos; • Propor mudanças na modelagem para corrigir as falhas utilizando técnicas de refatoração; • Efetuar uma análise comparativa entre a proposta anterior dos modelos e a proposta refatorada. 1.3 Motivação e Justificativa de Estudo É sabido que com o passar dos tempos as informações vão ficando desatualizadas e posteriormente vão sendo modificadas ou esquecidas. No caso do SABIA, como o sistema foi descontinuado pelos motivos já listados (Seção 1.1), as informações contidas no sistema ficaram desatualizadas. Considerando a desatualização das informações do sistema, foi realizada uma nova abor- dagem dos requisitos do sistema, sendo incluídas/excluídas algumas informações atuais/antigas. Marinescu e Avram (2007) fala que a reestruturação do sistema é de suma importância para que se tenha uma melhor qualidade do software. De acordo com Koscianski e Soares (2007), o critério de refatoração é realizado quando uma nova funcionalidade é adicionada para encontrar e corrigir defeitos (imperfeições de um Capítulo 1. Introdução 14 produto) e falhas (resultado ocasionado pelos defeitos). A reestruturação será feita ao artefato de modelos, sendo atribuído os diagramas UML desenvolvidos no SABIA. Após a análise feita na modelagem do SABIA, foi identificado que o diagrama de casos de uso, no qual são listados pontos irrelevantes para o referido modelo, bem como, os diagramas de classes que abordam atributos onde podem ser simplificados, e o diagrama de Entidade- Relacionamento (ER) não precisará ser utilizado, pois, a critério da equipe de desenvolvimento do software será utilizada uma ferramenta que faz o mapeamento de forma automatizada. Baseando-se nas informações reconhecidas no SABIA, juntamente com a análise feita em todos os artefatos e pela falta de atualização ocorrida com a descontinuidade do sistema, algumas funcionalidades utilizadas nos diagramas com o tempo foram ficando ultrapassados. Para que se tenha maior visibilidade das correções que serão feitas nos modelos, a Tabela 1 lista os diagramas e o que foi refatorado na modelagem do SABIA. Tabela 1 – Diagramas, verificação e refatoração Diagrama Verificação Refatoração Diagrama de Casos de Uso Atores Casos de uso “Manter...” Diagrama de Classes Diagrama “Sabia” Todo o diagrama Diagrama de Classes Diagrama “Cadastros IBGE” Classes “País” e “Macrorregião” Diagrama de Classes Diagrama “Dados Pessoais” Classes “RG” e “Usuario” Fonte: A Autora (2018) No diagrama de casos de uso, a refatoração feita é a de excluir os casos de uso “Man- ter...”, a fim de simplificar o diagrama, o tornando menos “poluído” visualmente e mais fácil de ser entendido, atribuindo o caso de uso a uma simples anotação no diagrama. O diagrama de classes descrito como “Cadastros IBGE”, houve a mudança nas classes de “País” e “Macrorregiao”, no qual são excluídas do diagrama por motivos de não haver necessidade em tê-las. O “País” fica subentendido ser o Brasil, por o processo de avaliação ser totalmente realizado no Brasil e “Macrorregiao” se refere a região. Já no diagrama “DadosPessoais”, as classes “RG” e “Usuário” são também excluídas. A classe “RG” não tem funcionalidade e só aumenta ainda mais o diagrama, por isso é refatorada para um atributo pertencente a outra classe. Assim, de acordo com os problemas listados anteriormente, para que o processo seja melhor entendido, sem diagramas confusos ou com muitas informações desnecessárias, a re- fatoração é necessária, podendo evitar vários problemas, tais como: atraso na produção, alto acoplamento e baixa coesão. 15 2 Fundamentação Teórica Nesta seção será descrita o conceito da modelagem de software com ênfase na Unified Modeling Language (UML) contemplando a descrição de todos os modelos utilizados neste trabalho. Também será abordado o método de modelagem “Domain-Driven Design (DDD)”, onde é explicado a criação de um determinado processo de como será feito até sua finalização e a linguagem ubíqua. Além disso, como principal fator deste trabalho, será retratado o que se diz respeito a refatoração, descrevendo algumas técnicas. Por fim, serão apresentados os trabalhos relacionados a este. 2.1 Modelagem de Software com Unified Modeling Lan- guage (UML) Modelo é uma abstração com o intuito de entender algo antes mesmo de ser construído. Mas, para que isso ocorra, é preciso montar vários tipos de modelos com a finalidade de testar antes de construir, ter uma melhor comunicação com o cliente o ajudando a visualizar melhor como será construído o projeto e tentar diminuir a complexidade que há em alguns projetos, chegando a reduzir uma quantidade maior de informações que seria absorvida (RUMBAUGH, 2006). Para haver uma melhor adequação da modelagem, foi criada uma linguagem padrão chamada Unified Modeling Language (UML), desenvolvida pela união de vários outros métodos orientados a objetos, a partir de 1967. Visto a necessidade de possuir um método completo, que fornecesse um excelente suporte a análise de projetos, foi por volta de 1990 que Grady Booch, Ivar Jacobson e James Rumbaugh começaram a usar ideias retiradas de cada um dos métodos já criados e pensaram na possibilidadede unificar todos os métodos, assim tendo uma maior estabilidade ao mercado orientado a objetos (BOOCH; RUMBAUGH; JACOBSON, 2012). Tendo em vista este acontecimento, Booch, Rumbaugh e Jacobson (2012), criadores dos métodos: “método de Booch”, “Object Oriented Software Engineering” (OOSE) e “Object Modeling Technique (OMT)”, estabeleceram três objetivos para que houvesse essa unificação, que foram: fazer a modelagem de sistemas, do conceito ao executável, utilizando as técnicas de OO; Incluir questões de escala, característico de sistemas complexos; Criar uma linguagem de modelagem a ser utilizada por humanos e por máquinas. Desta forma, Booch, Rumbaugh e Jacobson (2012) retratam que ao decorrer dos esforços feitos para que houvesse oficialmente a criação da UML, o método foi iniciado em 1994, onde Rumbaugh e Booch se uniram para que isso acontecesse. Com o passar do tempo, a Capítulo 2. Fundamentação Teórica 16 UML foi sendo reconhecida e tomando seu espaço na comunidade de engenharia de software em geral. Logo após o lançamento da primeira versão, Guedes (2014) diz que, foram aparecendo sugestões de empresas com o intuito de melhorar a linguagem, assim, a UML foi adotada pela OMG (Object Management Group), ou melhor, Grupo de Gerenciamento de Objetos, levando o título de “linguagem padrão de modelagem”. Por ter sido titulada como linguagem padrão para a elaboração da estrutura de projetos de software, a UML pode ser utilizada para a visualização, para especificar melhor todos os detalhes do projeto e para construí-lo. Assim, a utilização desta vai muito além de ser “a padrão”, foi escolhida por ser de fácil compreensão, centrada na arquitetura, iterativa e incremental. 2.1.1 Diagramas da UML Na estruturação de diagramas, Booch, Rumbaugh e Jacobson (2012) argumentam que, um diagrama é a apresentação gráfica de vários elementos constituídos por itens e relacionamen- tos. São feitos para permitir uma melhor visualização de todos os aspectos de um sistema. Onde, na UML são incluídos os diagramas de classes, diagrama de objetos, diagrama de componentes, diagrama de estruturas compostas, diagrama de casos de uso, diagrama de sequências, dia- grama de comunicações, diagrama de estados, diagrama de atividades, diagrama de implantação, diagrama de pacote, diagrama de temporização e o diagrama de visão geral da interação. No qual, na pesquisa, inicialmente são abordados os diagramas de classes e o de casos de uso. Para justificar o uso desses diagramas, Guedes (2014) diz que, o diagrama de classes é um dos diagramas mais utilizados e um dos mais importantes da UML, pois possui uma estrutura em que compreende todas as classes utilizadas pelo sistema, juntamente com seus atributos, métodos e relacionamentos entre si, além do mais, todos os outros diagramas se apoiam a sua estrutura. Ele ainda afirma, que o diagrama de casos de uso é tão importante e utilizado quanto o diagrama de classes, pois auxilia no levantamento e análise dos requisitos, no qual compreende todas as precisões dos usuários. 2.1.1.1 Diagrama de Classe Dentre os diagramas citados na seção anterior, é utilizado o diagrama de classes, onde, costumam abranger classes, interfaces e relacionamentos de dependência, de generalização e de associação. São úteis para a visão estática da estrutura de um sistema, como também, são fáceis de serem entendidos (BOOCH; RUMBAUGH; JACOBSON, 2012). Segundo Booch, Rumbaugh e Jacobson (2012), as classes são descrições de conjuntos de objetos que contém atributos, operações, relacionamentos e semântica. Assim, para exemplificar um exemplo de classe, a Figura 1 mostra uma classe contendo atributos e operações: Capítulo 2. Fundamentação Teórica 17 Figura 1 – Exemplo de Classe Fonte: A Autora (2018) Cada classe terá que ter um nome para que seja possível ser diferenciada das outras classes, no qual o nome pode ser “simples” ou “nome qualificado”, como representados na Figura 2: Figura 2 – Nomes simples e Nomes qualificados Fonte: Elaborado pela autora, com base em Booch, Rumbaugh e Jacobson, 2012. Como citado anteriormente, no diagrama existem os atributos que descrevem as quali- dades da classe. A classe pode ter qualquer número de atributos ou nenhum atributo. Na Figura 3 é possível representar os atributos: Figura 3 – Atributos Fonte: Elaborado pela autora, com base em Booch, Rumbaugh e Jacobson, 2012. Capítulo 2. Fundamentação Teórica 18 No gráfico de atributos, o principal objetivo é listar todos os substantivos que represen- tam alguma propriedade da classe a que se refere. Os atributos listados na Figura 3, expressam com nomes, o que uma classe com o nome “Pessoa” deve contemplar, que no caso são: “nome, cpf, endereço e telefone” (BOOCH; RUMBAUGH; JACOBSON, 2012). Além de nome da classe e atributos, Booch, Rumbaugh e Jacobson (2012) afirmam que existem as operações, que são a execução de uma atividade que pode ser solicitada por algum objeto da classe para modificar o comportamento. As operações podem ser representadas da seguinte forma: Figura 4 – Operações Fonte: Elaborado pela autora, com base em Booch, Rumbaugh e Jacobson, 2012. Contudo, apesar de que existem poucas classes que trabalham sozinhas, dependendo do caso, para que se tenha um diagrama de classes propriamente dito, precisa-se haver um relacionamento entre as classes. Estes relacionamentos são nomeados como: generalização, dependência e associação Booch, Rumbaugh e Jacobson (2012). Na Figura 5, podem ser representados tais relacionamentos: Figura 5 – Exemplo de Relacionamentos Fonte: Booch, Rumbaugh e Jacobson, 2012, p. 70. O relacionamento de dependência é utilizado quando, de acordo com a Figura 5, a classe “Janela” usa as informações da classe “Evento”. A dependência pode ser percebida Capítulo 2. Fundamentação Teórica 19 também através da sua linha tracejada indicando que “Janela” depende de “Evento”, porém, deve-se salientar que em caso contrário, a dependência não é recíproca (BOOCH; RUMBAUGH; JACOBSON, 2012). O relacionamento de generalização é utilizado quando, como exemplificado na Figura 5, existe uma classe “pai”, titulada como “Janela” e seus “filhos” titulados como “JanelaConsole” e “CaixaDeDiálogo”. A relação ocorre pelo motivo das classes “filhos” herdarem os atributos da classe “pai” (BOOCH; RUMBAUGH; JACOBSON, 2012). Já o relacionamento de associação, ocorre quando, como mostrado na Figura 5, acontece uma agregação das classes “CaixaDeDiálogo” com “Controle”, ou seja, objetos de uma classe se conectam a outra classe. A associação é representada graficamente com uma linha sólida sendo conectada à mesma classe ou classes diferentes (BOOCH; RUMBAUGH; JACOBSON, 2012). Diante do que foi descrito sobre o diagrama de classes, o uso deste é de extrema importância para o projeto, pois, na antiga modelagem do sistema SABIA, foi identificado, neste diagrama, algumas falhas de comunicação entre as classes, onde será aplicada uma refatoração fazendo com que se torne possível uma melhor visualização do que poderá vir a ser o sistema. 2.1.1.2 Diagrama de Casos de Uso Como foi descrito na seção de diagramas da UML, outro diagrama que será utilizado neste trabalho é o de casos de uso, que segundo Guedes (2014), aborda as necessidades do usuário. Nele, são inseridas as informações de como o sistema irá se comportar. Mesmo sendo considerado o diagrama mais informal da UML, ele sempre será consultado durante todo o processo de modelagem. Este diagrama identifica o cenário, os casos de uso, os atores e os relacionamentos de dependência, generalização e associação. A Figura 6, exemplifica o ator e caso de uso: Figura 6 – Ator e Caso de Uso Fonte: Elaborado pela autora, com base em Booch, Rumbaugh e Jacobson, 2012. Como mostrado na Figura 6, o ator representa o papel desempenhado por quem irá utilizar/interagir dentro do sistema. O caso de uso se refere a funcionalidades, serviços ou tarefas contidas no sistema. Além disso, todo caso de uso tem um nome (textual ou numérico) para Capítulo 2. FundamentaçãoTeórica 20 que seja diferenciado dos demais. O nome pode ser “nome simples” ou “nome de caminho” (GUEDES, 2014). Na Figura 7, os tipos de nomes são ilustrados: Figura 7 – Tipos de Nomes Fonte: Elaborado pela autora, com base em Booch, Rumbaugh e Jacobson, 2012. Em relação a seus relacionamentos, o diagrama de casos de uso também se comporta da mesma maneira que o diagrama de classes. Em suma, a proposta aqui apresentada sugere a modelagem de um novo diagrama de caso de uso com a finalidade de reparar falhas encontradas nos casos de uso, que seriam irrelevantes para o projeto, na versão anterior realizada no SABIA. 2.2 Domain-Driven Design (DDD) Vernon (2016) diz que, Domain-Driven Design (DDD) significa “Projeto Orientado a Domínio” e que um dos pilares do DDD é a linguagem ubíqua, que se refere a uma linguagem comum entre todos que estão fazendo parte do desenvolvimento de um sistema de software. Evans (2009) declara que, cada sistema de software está relacionado sob algum interesse de quem for utilizá-lo. É justamente essa área de interesse que o usuário aplica o sistema, que é chamado de domínio do software. A modelagem de domínios não está relacionada a criar um modelo mais real, mas sim, a criação de um determinado processo de como será feito até como foi feito o processo. Assim, existem utilidades básicas que determinam a escolha de um modelo: A ligação entre o modelo e a implementação ajuda na compreensão do modelo, o uso de modelos tem a capacidade de se transformar numa linguagem em que tanto o desenvolvedor, quanto o cliente, podem se comunicar sem a necessidade de explicar o que é que está sendo feito, o modelo trata de estruturar o conhecimento do domínio e aplicar suas diferenças. A ligação do modelo com a implementação faz com que se utilize às versões anteriores do projeto e as aplique como feedback na modelagem (EVANS, 2009). A linguagem ubíqua deve ser compreendida por todos, sem haver ambiguidade. A respeito disto, se um cliente de um determinado projeto de sistema, solicitar a emissão de uma fatura para o cliente antes da data limite, na implementação do código deverá constar uma classe Capítulo 2. Fundamentação Teórica 21 para a entidade “Cliente”, uma classe para a entidade “Fatura”, algum serviço que tenha um método “emitir” e algum atributo com o nome de “data limite” (CUKIER, 2010). Para que isso aconteça, utilizando a linguagem ubíqua, foi criado o projeto dirigido pelo modelo (Model Driven Design - MDD). O MDD é um modelo abstrato que deve ser uma representação do seu domínio, onde tudo que existe no seu objetivo de sistema deve aparecer no modelo (CUKIER, 2010). Entretanto, Evans (2009) afirma que para se dar início a criação deste modelo, inici- almente, tem-se de isolar o modelo de domínio das demais partes que constituem o sistema. Cukier (2010), diz que essa separação pode ser feita utilizando-se uma arquitetura em camadas, dividida em quatro partes: Interface de Usuário (IU), onde acontece a exibição de informações do sistema ao usuário e interpretação dos comandos do usuário; Aplicação que condiz a camada fina, responsável por conectar a IU às camadas inferiores; O domínio que representa os conceitos, regras e lógicas de negócio; e A infraestrutura que fornece recursos técnicos que darão suporte às camadas superiores. Na Figura 8, a arquitetura do DDD é representada: Figura 8 – Arquitetura em Camadas do DDD Fonte: http://www.agileandart.com/2010/07/16/ddd-introducao-a-domain-driven-design/, 2010. Capítulo 2. Fundamentação Teórica 22 Evans (2009) diz que após a divisão do sistema em camadas, o que mais importa é a camada de domínio. Para modelar essa parte, utiliza-se alguns padrões propostos em DDD. Estes padrões são chamados de blocos de construção e são utilizados para representar o modelo abstrato. Onde os blocos podem ser entidades, onde são classes de objetos que necessitam de uma identidade; e Objetos de Valores, por exemplo: strings, números ou cores. Contudo, Vernon (2016) afirma que o uso da linguagem ubíqua e do MDD, não são suficientes para a aplicação do DDD. Evans (2009) fala que, ao se tratar de sistemas complexos é preciso dividir o software em várias partes, no qual é chamada de “contexto delimitado”. Cada contexto deve ser bem claro para que todos possam entender o código existente. E assim, a parte mais importante, de acordo com Cukier (2010) é o processo chamado de “Destilação do Domínio”, onde o objetivo final é atingido quando não há mais nada para tirar do Núcleo do Domínio. Devido a criação de um sistema ser definido em “blocos”, que mistura código de várias camadas, classes com especialidades bem diversas, o processo principal se refere a separação em módulos, extraindo métodos, classes, conceitos, etc., visando a organização de tudo, onde possa ser bem claro quais são os conceitos centrais (núcleo) do sistema proposto. Portanto, o uso do DDD neste trabalho, se aplica ao uso da linguagem ubíqua, podendo tornar toda a documentação/modelagem do sistema mais fácil de ser entendido, sem haver duplicidade de código e estranheza em determinados significados. 2.3 Refatoração Segundo Fowler (2009), refatorar é “reestruturar” um software, ou seja, fazer variadas alterações para tornar o sistema mais fácil de ser entendido, sem alterar seu comportamento observável. Sendo assim, deve-se salientar que, refatoração é um procedimento que pode e deve ser usada para qualquer circunstância. Ainda de acordo com Fowler (2009), há vezes em que não se deve refatorar, pois algumas vezes é melhor reescrever a partir da “estaca zero”. Na primeira vez em que faz algo, você apenas faz. Na segunda vez em que faz algo parecido, você estremece diante da duplicação, mas a faz de qualquer forma. Na terceira vez em que faz algo parecido, você refatora. (FOWLER, 2004, p. 56). Entretanto, a refatoração é mais utilizada na programação de sistemas, para melhorar a estrutura interna do código e não em modelagens. Assim como, também pode ser utilizada para analisar o que já foi feito em algum projeto. No SABIA, ver o que tem de ser mudado, o que não precisa ser mudado e o que pode ser feito tudo novamente, podendo começar da estaca zero. Fazer a refatoração poderá tornar o Capítulo 2. Fundamentação Teórica 23 código de um sistema de software mais fácil de ser entendido pelo cliente e por todas as outras pessoas envolvidas. Para que aconteça a refatoração, existem algumas técnicas que Fowler (2009) abrange, são elas: Extrair Método, Mover Método, Mover Atributo, Extrair Classe e Renomear Método. Estas técnicas utilizam o princípio da Orientação a Objetos (OO), que de acordo com Furgeri (2013), é o paradigma de desenvolvimento de software mais utilizado no mercado. A OO abrange toda a complexidade que há diante do objeto de software, tendo duas características principais: possuem suas propriedades (estado) e suas ações (comportamento). Na técnica de extrair método, Fowler (2009) também diz que sua refatoração ocorre quando sua principal motivação for eliminar métodos grandes que realizam duas ou mais tarefas, possuindo também muitos comentários. Sua refatoração ocorre movendo as partes dos códigos duplicados para um novo método. A técnica de refatoração “mover método” se dá também de forma simples. Ao possuir um método que será utilizado muitas vezes por outra classe, é passível de copiar o método usado pela classe “a” e colar para a classe “b” (FOWLER, 2009). Muito parecida com a técnica anterior, também pode ser aplicada a técnica “mover atributo”. Fowler (2009) fala que pode-se aplicá-la quando uma classe “b” utiliza muito um atributo que foi definido em uma classe “a”, assim, deve-se apenas copiar o atributo da classe definida para a classe que o utiliza muitas vezes. Mais uma técnica utilizada: extrair classe. Esta deve ser usada quando existe uma classe “a” que execute o trabalho que deveria ser feito em duas classes. Então, vista a necessidade, os atributos da classe “a” podem ser extraídos para uma classe “b”. Quando um método possuium nome estranho, que não dá pra entender o que realmente ele faz, a técnica a se utilizar é a de “renomear método”. O nome do método deve ser o mais claro possível, fazendo com que haja melhor entendimento da real função do método (FOWLER, 2009). Com isso, por meio das técnicas de refatoração descritas anteriormente, juntamente com novas maneiras de se refatorar, poderá ser possível corrigir os problemas encontradas no SABIA, tornando a modelagem do sistema mais fácil de ser entendida e auxiliando mais rapidamente no processo de implementação do código a ser feito pelos desenvolvedores de software. Das técnicas descritas por Fowler (2009), a refatoração dos modelos UML do SABIA usará todas as listadas anteriormente. 2.4 Trabalhos Relacionados Algumas propostas foram elaboradas e desenvolvidas a fim de se utilizar a refatoração e modelagem de software, assim como, a refatoração de modelagens. Em Sunyé (2001), são abordadas refatorações que projetam e preservam o comporta- Capítulo 2. Fundamentação Teórica 24 mento de um modelo UML. Foram apresentados um conjunto de refatorações de projeto para melhorar a modelagem de programas orientados a objetos sem adicionar novas funcionalidades. A refatoração a nível de modelagem se mostrou ser muito complexa, pois a busca e elaboração de algumas refatorações foram bem difíceis, se tratando do impacto em diferentes visões da UML. Ainda assim, os autores viram como perspectiva para este trabalho o uso extensivo da ação semântica, podendo tornar os modelos mais precisos e comprovados. Correa e Werner (2004) falam em seu trabalho sobre a aplicação de técnicas de refa- toração para modelos UML/OCL. Eles descrevem que a Linguagem de Restrição de Objetos (OCL) contém expressões complexas, podendo ser de difícil entendimento. Assim, as técnicas de refatoração permitem o melhoramento e compreendimento de um modelo UML/OCL. Por fim, foi visto que as técnicas de refatoração utilizadas pelos autores, obtiveram grandes contribuições, permitindo que muitos problemas ocasionados pelas especificações em OCL fossem resolvidos. Baseando-se na proposta de refatoração, pode ser citado o trabalho de Silva e Nunes (2007), em que aborda um estudo sobre a refatoração de modelos orientados a aspectos. É possível identificar que a utilização da refatoração possibilitou uma visão mais abrangente para saber quais refatorações seriam implementadas através da transformação de modelos orientados a aspectos. Piveta (2009) escreveu um estudo sobre a melhora na busca por oportunidades de refatoração em software orientado a objetos e orientado a aspectos. O principal objetivo do trabalho é o de prover um processo detalhado para refatoração. Foi avaliado os efeitos na qualidade de software e analisado as vantagens e desvantagens na aplicação de padrões de refatoração. Os resultados do trabalho mostraram que o uso da refatoração pode ajudar o desenvolvedor a se concentrar nos padrões que trazem mais benefícios e a implementar o código mais adequadamente. Já o trabalho de Junior (2015) apresenta uma pesquisa realizada para efeito do estudo de métodos e processos de refatoração de banco de dados. Neste trabalho, o autor conclui que o objetivo do tema em questão era o de apresentar os conceitos de refatoração de banco de dados, aplicando as respectivas técnicas de refatoração de banco de dados, no qual atingiu o objetivo de corrigir erros nos esquemas de banco de dados, melhorando a estrutura e o modelo dos mesmos. Barros (2015) fala em seu trabalho sobre um método para a refatoração de software baseado em frameworks de domínio. Muller (2014) fala que framework são ferramentas que facilitam o trabalho dos desenvolvedores. O autor criou um método de refatoração usando como referência os métodos da literatura, sendo capaz de ajudar os desenvolvedores na refatoração de aplicações construídas com os conceitos de frameworks de domínio. Os resultados da aplicação do método foram: melhoria na complexidade do código, diminuição da quantidade de duplicação de código, tornando-o assim um código mais reutilizável e flexível. Mognon (2017) utilizou uma abordagem diferente de modelagem de software, chamada Capítulo 2. Fundamentação Teórica 25 Object-Process Methodology (OPM). Em seu trabalho descreveu que a modelagem é uma das atividades metodológicas presentes em processos de desenvolvimento de software, sendo bastante relevante na fase de análise do produto. Preferiu trocar a linguagem usual UML pelo uso da OPM, que representa a estrutura e comportamento de um sistema em um mesmo diagrama. O trabalho objetivou que a modelagem utilizada foi eficaz, pois se mostrou ser de fácil execução e interpretação, tendo como principal objetivo a característica iterativa. Sendo assim, diante dos trabalhos apresentados, verifica-se que existem algumas téc- nicas de refatoração, sendo a proposta de Sunyé et al. (2001) e a de Correa e Werner (2004) aplicadas diretamente a modelagem de software com UML, especificamente dita. As técnicas utilizadas neste trabalho foram baseadas em Fowler (2009). Os estudos apontam que a refatora- ção é realmente eficaz no que se diz respeito ao melhor entendimento do produto em questão, sendo extremamente eficiente para que haja um melhor entendimento e melhoramento no futuro processo de desenvolvimento do software que poderá ser feito. 26 3 Metodologia Este capítulo apresenta de forma detalhada o funcionamento do sistema SABIA, envol- vendo todas suas regras de negócio. A seção subsequente esclarece cada etapa metodológica para seu processo de execução de acordo com toda sua particularidade em questão. 3.1 Regras de Negócio do SABIA Avaliadores cadastrados no Banco de Avaliadores da SETEC devem pertencer obriga- toriamente a um dos seguintes grupos: ativos ou inativos. Avaliadores ativos estão disponíveis para realizar avaliações normalmente, enquanto que avaliadores inativos estão temporariamente indisponíveis (por estar de férias, afastado para capacitação, ou outro motivo que o impeça de receber diárias e/ou passagens) e não serão questionados sobre sua disponibilidade. Após os avaliadores informarem sua disponibilidade, será feita a lista de equipes que farão as avaliações. Cada equipe é composta por dois ou mais avaliadores. Para cada UE a ser avaliada, o CE deve criar uma equipe de acordo com as seguintes regras: pelo menos um avaliador que mora na mesma região da UE a ser avaliada e o restante dos avaliadores de diferentes regiões. Não devem fazer parte da equipe avaliadores que residam no mesmo estado da UE a ser avaliada. A equipe deve conter pelo menos um avaliador experiente, ou seja, que já tenha feito pelo menos uma avaliação. Não podem fazer parte da equipe avaliadores que já tenham avaliado a mesma UE anteriormente. Depois das equipes definidas, os avaliadores são notificados e deverão num prazo de até quarenta e oito horas para informar as preferências de vôo no Sistema de Concessão de Diárias e Passagens (SCDP). Cada avaliador terá de enviar a sua Proposta de Concessão de Diárias (PCD) que constará: origem e destino das viagens, horários e número dos vôos. Caso um dos avaliadores não informe os dados necessários no PCD, o mesmo será substituído por um novo avaliador, que logo será alocado na equipe em que está sendo formada. Quando todos os avaliadores da mesma equipe informarem os dados no PCD, a SETEC irá aprovar ou cancelar a avaliação, confirmando ou não se os custos estão condizentes se baseando num teto de gastos propostos por eles mesmos. Após a confirmação, serão emitidos os ofícios (contendo designações para efeito de comprovação junto a UE) das visitas e dos avaliadores. Conseguinte a emissão dos ofícios, o avaliador entrará em contato com as UE para ser feito o detalhamento de agenda para consequentemente ser realizada a visita à unidade. Depois de ser realizada a visita, o avaliador é obrigado a entregar o formulário de avaliação e prestar contas das passagens informadas no PCD. Qualquer problema referente ao avaliador será descritoCapítulo 3. Metodologia 27 nos relatórios. Assim, o SETEC encerra as avaliações. Contudo, a utilização da metodologia ágil Scrum não foi totalmente empregada durante o processo de desenvolvimento, pelo motivo de não disponibilidade total da equipe de desen- volvimento, em que faziam parte alunos que tinham dedicação parcial ao projeto, ocasionando assim, falta de tempo para se ter reuniões diárias, resultando em reuniões somente em três dias na semana (SABIA, 2018). No que se diz respeito a implementação do código, foi utilizada a linguagem de programação Java, juntamente com a IDE (Integrated Development Environment) Eclipse, atrelando a linguagem de marcação de textos HTML 5 (Hypertext Markup Language, versão 5), sendo também integrada a linguagem de folhas de estilos CSS 3 (Cascading Style Sheets). Ambas tecnologias só foram utilizadas devido a familiaridade da equipe com tais (SABIA, 2018). Ainda se tratando de tecnologias, foi utilizado pela equipe de desenvolvimento o sistema web Github para a ferramenta de controle de versão. Pozzebom (2015) fala que o GitHub serve tanto para auxiliar no controle de versões e no compartilhamento das partes implementadas pelos membros da equipe deste projeto, quanto a ferramenta permite que todas as versões do projeto sejam salvas em um repositório web, o que possibilita retroceder algumas versões do projeto em caso de possíveis problemas na versão atual não serem passíveis de resolução pela equipe (SABIA, 2018). Assim, as regras descritas foram estabelecidas tanto pela SETEC, quanto pelos alu- nos e professores envolvidos no projeto, promovendo uma melhor organização dos requisitos necessários a se desenvolver o sistema. 3.2 Arquitetura do Trabalho O processo de refatoração do SABIA se dá principalmente a modificação de toda modelagem, tornando-a como a principal proposta do trabalho (Figura 9). O principal fator utilizado para a coleta, análise e execução do processo caracteriza-se pela documentação feita desde o ano de 2014, se estendendo aos anos de 2015, 2017 e 2018, abordando todos os aspectos utilizados em todo o desenvolvimento do projeto. Capítulo 3. Metodologia 28 Figura 9 – Ilustração da Proposta do Trabalho Fonte: A Autora (2018) Inicialmente, é feita a coleta e análise das informações apurados através de toda a documentação do SABIA. Para que ocorra a refatoração, se fez necessário o seguimento das etapas apresentadas na Figura 9, no qual se dá, inicialmente, a coleta e análise dos processos de formação das equipes e avaliação das UE, citado neste capítulo (Seção 3.1). O processo de formação das equipes que irão avaliar as UE se dá como as equipes serão articuladas, tendo como principal requisito um avaliador ser do mesmo estado e o(s) outro(s) de diferentes estados (Seção 3.1). A formação de equipes se dá, simplificadamente, da seguinte forma ilustrada na Figura 10. Capítulo 3. Metodologia 29 Figura 10 – Processo de Montagem das Equipes de Avaliadores Fonte: A Autora (2018) Seguidamente, após a coleta e análise dos processos que envolvem o SABIA, são analisados mais uma vez o processo de formação das equipes que avaliarão as instituições. A Figura 10 é dada como: • A SETEC disponibiliza uma planilha que contém todas as informações sobre as Unidades de Ensino; • Os Coordenadores de Equipes questionam aos Avaliadores ativos qual a disponibilidade deles; • Os Avaliadores escolhidos pelos CE’s informam a preferência de horário de vôos já pesquisada para o local também escolhido pelos CE’S; • Propor mudanças na modelagem para corrigir as falhas utilizando técnicas de refatoração; • Se a SETEC aprovar os custos, o avaliador emitirá um ofício, entrará em contato com a UE e fará a avaliação; • Após a avaliação realizada, o avaliador envia o formulário de avaliação feito na UE. Após a coleta e análise dos dados descritos na seção 3.1, também foi feita a verificação dos modelos de software do SABIA. A Tabela 1 (Seção 1.3) ilustra o que é verificado e quais são as modificações. 30 4 Resultados 4.1 Modelagem Inicial Versus Refatorada Utilizando a UML como linguagem para a modelagem do SABIA, juntamente com as técnicas de refatoração abrangidas por Fowler (2009), a Tabela 2 lista as técnicas utilizadas nos diagramas deste trabalho. Tabela 2 – Utilização das Técnicas de Refatoração Diagrama Técnica utilizada Diagrama de casos de uso Extrair classe (Extrair caso de uso) Diagrama de classes “Dados Pessoais” Extrair classe, mover método, mover atributo e renomear método. Diagrama de classes “Cadastros IBGE” Extrair classe e mover atributo Diagrama de classes “Sabia” Extrair método, mover método, mover atributo, extrair classe e renomear método Fonte: A Autora (2018) No diagrama de casos de uso houve a utilização da técnica de extrair classe, sendo propriamente utilizado a extração de alguns casos de uso que tornavam o diagrama mais difícil de ser entendido, tais como no ator “Operador” foram extraídos os casos de uso: manter projeto, manter estado, manter cidade, manter microrregião, manter mesorregião, manter instituição, importar instituições, manter equipes, manter demanda (atividades), alterar perfil e alterar status do usuário. Já no ator “Administrador” foram extraídos os casos de uso: manter usuário, convidar usuário e alterar senha. E no ator “Avaliador”, o único caso de uso excluído foi o de manter disponibilidade. Nos diagramas de classes titulados como “Dados Pessoais”, “Cadastros IBGE” e “Sabia”, foram utilizadas as técnicas de extrair classe, mover método, mover atributo, extrair método, mover método, mover atributo, extrair classe e renomear método. Ambos com suas particularidades podendo ser vistas mais adiante. Os diagramas que foram feitos inicialmente (Inicial) e os refatorados (Refatorado) serão listados nas figuras a seguir: Capítulo 4. Resultados 31 Figura 11 – Diagrama de Casos de Uso (Inicial) Fonte: SABIA (2018) No diagrama de casos de uso feito e refeito nos anos de 2014/2015, nota-se muitas informações atribuídas a três atores (Administrador, Operador e Avaliador). O diagrama, além de conter muita informação, está desorganizado, o que torna o diagrama complicado de ser entendido ao visualizá-lo. Uma das falhas mais frequentes, é o da insistência em repetir os casos de uso “Manter...”, fazendo com que o diagrama seja repetitivo nas ideias. Assim, ao estudar o diagrama e suas ideias, um novo modelo foi proposto, retirando todos os casos de uso “Manter...” e refatorando alguns demais. Capítulo 4. Resultados 32 Figura 12 – Diagrama de Casos de Uso (Refatorado) Fonte: A Autora (2018) Visualmente, o diagrama de casos de uso está bem melhor, podendo ser mais fácil de ser entendido. As informações foram simplificadas e os casos de uso “Manter. . . ” foram retirados, pelo motivo de ser subentendido no sistema que cada usuário (ator) deverá cadastrar, alterar, excluir e fazer suas devidas consultas em determinadas funcionalidades. Em relação aos nomes dos atores, foi modificado o de “Operador”, passando a ser chamado de “Coordenador de Equipes”, pois se torna mais fácil de entender o papel deste ator, no qual é o responsável por todas operações referentes as avaliações e avaliadores. Além disso, foram alterados os casos de uso “alterar perfil”, para “alterar dados”, sendo um caso de uso com sua funcionalidade estendida aos outros atores. “Alterar status do usuário” foi alterado para “Atualizar usuários” para simplificar e minimizar a quantidade de casos de uso sobre atualização de dados. Capítulo 4. Resultados 33 Figura 13 – Uma parte do Diagrama de Classes - Sabia (Inicial) Fonte: SABIA (2018) Na Figura 13 pode ser visualizada uma parte relevante do diagrama de classes “Sabia”, onde são ilustrados o processo de avaliação do SABIA. O diagrama inteiro pode ser visto no Apêndice A. O diagrama tem uma grande e principal falha que é o de ser muito extenso. Nele, estão ilustrados todas as classes inclusas no processo de avaliação do PRONATEC. Capítulo 4. Resultados 34 Figura 14 – Diagramade Classes - Avaliação (Refatorado) Fonte: A Autora (2018) Antes chamado de “Sabia”, o diagrama com o nome refatorado para “Avaliação” torna melhor visível o processo de avaliação feito pelos avaliadores. A classe “Avaliacao” teve composição formada em “AvaliacaoUE” reaproveitada da classe “UnidadeEnsino” do diagrama “Parceiro”. Além disso, foram reutilizados atributos e métodos de outras classes, tais como os dados do “Avaliador” reaproveitados da classe “Parceiro” vinda de outro diagrama. A classe “Ciclo” também foi reaproveitada, sendo copiado os atributos da classe “Período”. Capítulo 4. Resultados 35 Figura 15 – Diagrama de Classes - Cadastros IBGE (Inicial) Fonte: SABIA (2018) O diagrama “Cadastros IBGE” contém sete classes, onde a classe “País” está separada das demais, por se tratar de uma classe única e específica, porém, sem necessidade. As outras classes podem ser renomeadas, buscando um melhor entendimento. Ambas as classes possuem um relacionamento de Capítulo 4. Resultados 36 Figura 16 – Diagrama de Classes - Localidade (Refatorado) Fonte: A Autora (2018) O diagrama “Localidade” (inicialmente com o nome de “CadastroIBGE”), teve a classe de “Macrorregiao” refatorada para “Regiao”, por motivos de melhor entendimento de significado da palavra. A classe “Pais” foi excluída pelo fato de ficar subentendido que o nome do país seja “Brasil” e que todo o processo do SABIA ocorre unicamente neste mesmo país. A classe “Cidade” foi substituída por “Municipio”, sendo adicionado o atributo de “cep”. Além dessas mudanças, ocorreu a renomeação da classe “Estado” para “UF”. Capítulo 4. Resultados 37 Figura 17 – Diagrama de Classes - Dados Pessoais (Inicial) Fonte: SABIA (2018) O diagrama “Dados Pessoais” não é de difícil entendimento, porém, possui classes que poderiam ser renomeadas ou realocadas com determinados atributos mais específicos. A classe “RG” não se torna necessária, pois contém ligação com a classe “Pessoa”, podendo incluir os atributos de “RG” para tal. A classe “Usuario” também pode ser realocada, incluindo seus atributos em outra classe mais específica. Para isso, o diagrama foi refatorado e pode ser ilustrado na Figura 18. Capítulo 4. Resultados 38 Figura 18 – Diagrama de Classes - Parceiro (Refatorado) Fonte: A Autora (2018) Além do nome do diagrama ter sido modificado, as classes tiveram algumas alterações: classe “Pessoa” foi refatorada para “Avaliador” possuindo os mesmos atributos, somente havendo mudança em relação ao relacionamento de generalização vindo da classe “Parceiro”. A classe “Parceiro” foi criada com o intuito de unificar os atributos e métodos principais das classes “Avaliador” e “UnidadeEnsino”, possuindo também interligação com qualquer outro tipo de contato. Assim, pode-se notar que em todos os diagramas apresentados foram utilizadas as técnicas de refatoração (Seção 2.3) abrangidas por Fowler (2009) e exibidas na Tabela 2 (Seção 4.1). Ainda, é perceptivelmente capaz de se observar, que houve uma grande diminuição na quantidade de classes criadas, assim como diagramas bem melhores de serem associados visivelmente. Na Tabela 3, ilustrada a seguir, os resultados foram listados. Capítulo 4. Resultados 39 Tabela 3 – Resultados Diagrama Resultados Diagrama de casos de uso Um ator renomeado para “Coordenador de Equi- pes”; Menos casos de uso; Diagrama de classes “Cadastros IBGE” Renomeio do nome do diagrama para “Locali- dade”; Exclusão de uma classe; Renomeio de duas classes; Adição de um atributo em duas classes diferentes; Diagrama de classes “Dados Pessoais” Renomeio do nome do diagrama para “Par- ceiro”;Exclusão de uma classe; Adição de duas classes;Adição de atributos;Renomeação de atri- butos; Diagrama de classes “Sabia” Renomeio do nome do diagrama para “Avalia- ção”; Exclusão de mais de dez classes; Fonte: A Autora (2018) Como melhor forma de validar os resultados, foi feito um formulário de questões (Apêndice B e seus resultados 4.2) direcionado especialmente aos desenvolvedores do SABIA, que participaram do projeto nos anos de 2017/2018, para que todos respondessem a algumas perguntas referentes aos diagramas (iniciais e refatorados) e contribuíssem com a opinião de comparação entre tais. 4.2 Questionário Avaliativo Para que as refatorações fossem avaliadas e realmente comparadas, foi feito um ques- tionário, no qual contém 13 perguntas. O questionário foi enviado a três desenvolvedores e uma analista, no qual todos responderam as questões. As Figuras a seguir ilustram as perguntas e o gráfico obtido referente as respostas dos 4 componentes do projeto que responderam ao formulário. Capítulo 4. Resultados 40 Figura 19 – Resultado da pergunta 1 Fonte: A Autora (2018) Na primeira pergunta, seu resultado foi empate. O diagrama em questão era o diagrama de casos de uso antes de ser refatorado. Figura 20 – Resultado da pergunta 2 Fonte: A Autora (2018) Na segunda pergunta, seu resultado foi bem satisfatório. O diagrama de casos de uso refatorado teve um nível maior de entendimento. Capítulo 4. Resultados 41 Figura 21 – Resultado da pergunta 3 Fonte: A Autora (2018) Como já ilustrado, o diagrama de casos de uso que obteve melhor compreensão perante visualização, foi o refatorado. Figura 22 – Resultado da pergunta 4 Fonte: A Autora (2018) A pergunta 4 se dá ao entendimento quando visualiza o diagrama de classes “Sabia”. As respostas foram na média. Três de quatro respostas foram na média 3. Podendo-se notar uma certa confusão no entendimento. Capítulo 4. Resultados 42 Figura 23 – Resultado da pergunta 5 Fonte: A Autora (2018) Já o resultado da refatoração do diagrama de classes “Avaliação” mostrou que a maioria das respostas foram para um ótimo entendimento. Figura 24 – Resultado da pergunta 6 Fonte: A Autora (2018) De acordo com o gráfico, o resultado obtido foi de meio termo para os dois diagramas, no qual o entendimento foi igualitário para ambos. Capítulo 4. Resultados 43 Figura 25 – Resultado da pergunta 7 Fonte: A Autora (2018) A pergunta 7 consiste em saber qual o nível de entendimento na visualização do diagrama de classes “Dados Pessoais”. O resultado foi bem dividido, tendo como interpretação um entendimento não tão bom. Figura 26 – Resultado da pergunta 8 Fonte: A Autora (2018) Já o entendimento do diagrama de classes “Parceiro” foi melhor do que o anterior “Dados Pessoais”, tendo um resultado mais satisfatório. Capítulo 4. Resultados 44 Figura 27 – Resultado da pergunta 9 Fonte: A Autora (2018) O resultado entre os diagramas “Dados Pessoais” e “Parceiro” foi de melhor entendi- mento para o diagrama que foi refatorado. Figura 28 – Resultado da pergunta 10 Fonte: A Autora (2018) A pergunta 10 consiste em saber qual o nível de entendimento ao visualizar o diagrama de classes “Cadastros IBGE”. O resultado foi idêntico entre os diagramas. Capítulo 4. Resultados 45 Figura 29 – Resultado da pergunta 11 Fonte: A Autora (2018) Já as respostas para o nível de entendimento do diagrama de classes “Localidade”, que é o refatorado, também foi idêntico, tendo o mesmo nível de entendimento para ambos. Figura 30 – Resultado da pergunta 12 Fonte: A Autora (2018) O resultado final entre os diagramas “Cadastros IBGE” e “Localidade” foi que o diagrama refatorado, apesar de terem sido idênticos em resultados nas perguntas 10 e 11, foi melhor entendido visualmente. Capítulo 4. Resultados 46 Figura 31 – Resultado da pergunta 13 Fonte: A Autora (2018) Como resultado final do formulário de questões, é possível visualizar que as refatorações realizadas foram totalmente compreendidas, sendo capaz de fazer com que os envolvidos no projeto tenham um maior/melhor entendimento na análise da documentação/modelagem do sistema SABIA. 47 5 Conclusão Como explicitado ao longo do trabalho, os desenvolvedores de software passam a maior parte do tempo modificando e fazendo a manutenção de softwares existentes. Isso ocorre porque os sistemas e, consequentemente, seu design, estão em perpétuaevolução antes de serem “abandonados”. Antes de evoluir um sistema, modificações estruturais são frequentemente necessárias. O objetivo da refatoração é tornar certos elementos mais extensíveis, permitindo adição de novos recursos e simplificação dos mesmos. Tal qual destacado pela literatura, os resultados deste estudo demonstraram que as técnicas comumente empregadas para a realização da refatoração nos modelos do SABIA foram realmente visíveis. As comparações dos diagramas constataram que com o uso de algumas técnicas de refatoração, o SABIA é capaz de ser melhor entendido, causando menos confusão ao tentar entender a lógica que há entre os processos de alocação de equipes e de avaliação. Além disso, as técnicas utilizadas (Tabela 2, Seção 4.1) possibilitaram boas soluções, capazes de minimizar os problemas encontrados na Seção 1.1 e Seção 3.1. A contribuição feita através deste trabalho foi a de promover uma documentação aprimorada e uma modelagem atualizada sobre o projeto SABIA, excluindo qualquer confusão que possa acontecer. Além de que, a refatoração promove uma visualização melhor dos modelos. Entretanto, durante a refatoração dos modelos de software, houve a descontinuação do projeto novamente. Apesar disso, este trabalho foi finalizado com o intuito de auxiliar aos futuros desenvolvedores e analistas vinculados ao projeto. Assim sendo, outros fatores não contemplados neste trabalho são sugeridos como possíveis soluções ainda melhores. A consideração da refatoração da implementação do código do SABIA, poderão garantir uma refatoração completa e satisfatória, concluindo um estudo complexo que abrange desde seus requisitos até suas funcionalidades automatizadas. 48 Referências BARROS, V. P. A. Um método para a refatoração de software baseado em frameworks de domínio. Dissertação (B.S. thesis) — Universidade Tecnológica Federal do Paraná, 2015. Citado na página 24. BOOCH, G.; RUMBAUGH, J.; JACOBSON, I. UML: guia do usuário. [S.l.]: Elsevier Brasil, 2012. Citado 12 vezes nas páginas 15, 16, 18 e 19. CASSIOLATO, M. M.; GARCIA, R. C. Pronatec: múltiplos arranjos e ações para ampliar o acesso à educação profissional. [S.l.], 2014. Citado na página 11. CORREA, A.; WERNER, C. Applying refactoring techniques to uml/ocl models. In: SPRINGER. International Conference on the Unified Modeling Language. [S.l.], 2004. p. 173–187. Citado na página 24. CUKIER, D. Ddd–introdução a domain driven design. AgileAndArt. jul/ago, 2010. Citado 4 vezes nas páginas 21 e 22. EVANS, E. Domain-driven design: atacando as complexidades no coração do software. [S.l.]: Alta Books, 2009. Citado 5 vezes nas páginas 20, 21 e 22. FOWLER, M. Refatoração: Aperfeiçoamento e Projeto. [S.l.]: Bookman Editora, 2009. Citado 10 vezes nas páginas 22, 23, 30 e 38. FURGERI, S. Modelagem de Sistemas Orientados a Objetos – Ensino Didático. [S.l.]: Editora Érica, 2013. Citado na página 23. GUEDES, G. T. UML 2–Guia Prático - 2 Edição. [S.l.]: Novatec Editora, 2014. Citado 4 vezes nas páginas 16, 19 e 20. JUNIOR, J. M. Estudo de métodos e processos de refatoração de banco de dados. 2015. Citado na página 24. KOSCIANSKI, A.; SOARES, M. d. S. Qualidade de software. São Paulo, SP. Editora: Novatec, 2007. Citado na página 13. LIMA, M.; PACHECO, Z. S. Teixeira de A. As políticas públicas e o direito à educação: programa nacional de acesso ao ensino técnico e emprego versus plano nacional de educação. Educação & Sociedade, SciELO Brasil, v. 38, n. 139, 2017. Citado na página 11. LINDEN, R. Algoritmos Genéticos. [S.l.]: Editora Ciência Moderna, 2012. Citado na página 12. MARINESCU, F.; AVRAM, A. Domain-driven design Quickly. [S.l.]: Lulu.com, 2007. Citado na página 13. MOGNON, F. e. a. Uma abordagem para modelagem de software utilizando a OPM para desenvolvimento iterativo, incremental e ágil. [S.l.]: Dissertação de Mestrado, 2017. Citado na página 24. Referências 49 MULLER, N. Framework, o que é e para que serve. Acessado em 3 de ago. 2018, 2014. Disponível em: <https://www.oficinadanet.com.br/artigo/1294/framework_o_que_e_e_para_ que_serve>. Citado na página 24. PIVETA, E. K. Improving the search for refactoring opportunities on object-oriented and aspect- oriented software. 2009. Citado na página 24. POZZEBOM, R. O que é GitHub. 2015. Disponível em: <https://www.oficinadanet.com.br/post/ 14791-o-que-github>. Acesso em: 24 de agosto de 2018. Citado na página 27. RUMBAUGH, J. Braha, Michael, Modelagem e Projetos Baseados em Objetos com UML. [S.l.]: Segunda, 2006. Citado na página 15. SABIA. Sistema de Agrupamento Baseado em Inteligência Arti- ficial. 2018. Disponível em: <https://docs.google.com/document/d/ 1S6BZwCDegCoN5H-jKbG39PCQKsmQN1Bhk0xislP4_kw/edit?usp=sharing>. Acesso em: 24 de agosto de 2018. Citado 6 vezes nas páginas 12 e 27. SILVA, B. C. da; NUNES, D. J. Refatoração de modelos orientados a aspectos. XII Workshop de Teses e Dissertações em Engenharia de Software - WTES 2007, 2007. Citado na página 24. SUNYÉ, G. e. a. Refactoring uml models. International Conference on the Unified Modeling Language Springer, Berlin, Heidelberg, 2001. Citado na página 23. TANIGUCHI K., C. F. Metodologia ágeis e a motivação de pessoas em projetos de desenvolvi- mento de software: Aplicando práticas de scrum e xp para promover a motivação de equipes de projetos de desenvolvimento de software. Revista de ciências exatas e tecnologia, São Paulo, 2009. Citado na página 12. VERNON, V. Implementing domain-driven design. [S.l.]: Addison-Wesley, 2016. Citado 2 vezes nas páginas 20 e 22. https://www.oficinadanet.com.br/artigo/1294/framework_o_que_e_e_para_que_serve https://www.oficinadanet.com.br/artigo/1294/framework_o_que_e_e_para_que_serve https://www.oficinadanet.com.br/post/14791-o-que-github https://www.oficinadanet.com.br/post/14791-o-que-github https://docs.google.com/document/d/1S6BZwCDegCoN5H-jKbG39PCQKsmQN1Bhk0xislP4_kw/edit?usp=sharing https://docs.google.com/document/d/1S6BZwCDegCoN5H-jKbG39PCQKsmQN1Bhk0xislP4_kw/edit?usp=sharing 50 APÊNDICE A – Modelo do Sabia O diagrama de classes “Sabia” foi refatorado para “Avaliação”, ilustrado na Figura 14. Figura 32 – Diagrama de Classes - Sabia (Inicial) Fonte: SABIA (2018) 51 APÊNDICE B – Formulário de Questões Figura 33 – Questão 1 Fonte: A Autora (2018) APÊNDICE B. Formulário de Questões 52 Figura 34 – Questão 2 Fonte: A Autora (2018) Figura 35 – Questão 3 Fonte: A Autora (2018) APÊNDICE B. Formulário de Questões 53 Figura 36 – Questão 4 Fonte: A Autora (2018) APÊNDICE B. Formulário de Questões 54 Figura 37 – Questão 5 Fonte: A Autora (2018) Figura 38 – Questão 6 Fonte: A Autora (2018) APÊNDICE B. Formulário de Questões 55 Figura 39 – Questão 7 Fonte: A Autora (2018) APÊNDICE B. Formulário de Questões 56 Figura 40 – Questão 8 Fonte: A Autora (2018) Figura 41 – Questão 9 Fonte: A Autora (2018) APÊNDICE B. Formulário de Questões 57 Figura 42 – Questão 10 Fonte: A Autora (2018) APÊNDICE B. Formulário de Questões 58 Figura 43 – Questão 11 Fonte: A Autora (2018) Figura 44 – Questão 12 Fonte: A Autora (2018) Figura 45 – Questão 13 Fonte: A Autora (2018) Agradecimentos Resumo Abstract Introdução Contextualização e Problema Objetivos Objetivo Geral Objetivos Específicos Motivação e Justificativa de Estudo Fundamentação Teórica Modelagem de Software com Unified Modeling Language (UML) Diagramas da UML Diagrama de Classe Diagrama de Casos de Uso Domain-Driven Design (DDD) Refatoração Trabalhos Relacionados Metodologia Regras de Negócio do SABIA Arquitetura do Trabalho Resultados Modelagem Inicial Versus Refatorada Questionário Avaliativo Conclusão Referências Modelo do Sabia Formulário de Questões
Compartilhar