1. O documento descreve um sistema desenvolvido usando o framework Yii para automatizar processos do DETRAN, como registro de veículos.
2. O sistema visa simplificar os processos atuais que exigem que os usuários passem por até 5 filas no DETRAN.
3. O framework Yii foi escolhido devido ao seu suporte a desenvolvimento ágil, segurança, desempenho e por utilizar a linguagem PHP da equipe.
DETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YII
1. Universidade Federal do Rio Grande do Norte
Instituto Metrópole Digital
Programa de Residência em Engenharia de Software
DETRAN MAIS FÁCIL: CONSTRUÇÃO DE
APP WEB USANDO O FRAMEWORK ÁGIL YII
Trabalho de Conclusão de Curso
Eder Carlos de Oliveira Nogueira
CGS Consultoria (Improve)
ed.eder@gmail.com
Sob orientação de:
Prof. Dr. Aquiles Medeiros Filgueira Burlamaqui
Universidade Federal do Rio Grande do Norte
aquilesburlamaqui@ect.ufrn.br
Prof. Dr. Rummenigge Rudson Dantas
Universidade Federal do Rio Grande do Norte
rudson@ect.ufrn.br
Resumo. O presente trabalho apresenta a problemática envolvida
nos diversos processos realizados nos departamentos estaduais
de trânsito do Brasil. Em seguida, é apresentada uma solução de
software para um destes processos, o registro de veículos. Tal
solução foi desenvolvida usando o Framework Yii. A arquitetura,
os componentes e as características dessa solução são descritas
neste artigo.
Abstract. This paper presents the issues involved in the various
processes performed in the state departments of transit Brazil.
Then a software solution to one of these processes is presented,
the vehicle registration. This solution was developed using Yii
Framework. The architecture, the components and characteristics
of this solution are described in this article.
2. 1. Introdução
A frota nacional de veículos automotores mais que duplicou nos últimos dez
anos, ultrapassando a marca de 79 milhões de veículos (ver figura 1), de
acordo com os últimos dados disponibilizados pelo Departamento Nacional de
Trânsito (DENATRAN, 2014).
Figura 1: Evolução da frota de automóveis e motocicletas entre 1998 e 2012.
Fonte: Página do Professor PhD. Alexandre Costa no Blogspot
1
.
Entretanto, a capacidade de atendimento dos Departamentos Estaduais
de Trânsito (DETRANs) não evoluiu na mesma proporção, resultando em
equipes sobrecarregadas e aumento de filas, isto é, na redução da qualidade
dos serviços prestados aos cidadãos.
Umas das principais causas do cenário apresentado é o excesso de
atividades realizadas pelo usuário (como é chamado o cliente do DETRAN)
presencialmente no órgão. Atualmente um usuário que, por exemplo, adquire
um veículo usado e precisa realizar a “Transferência de Propriedade” participa
da execução do processo de negócio Registro de Veículo ilustrado de forma
resumida na figura 2.
1
Disponível em: <http://oquevocefariasesoubesse.blogspot.com.br/2013/01/transporte-
individual-contra-mao-beco.html>. Acessado em dez. 2014.
3. Figura 2: Processo de negócio “Registro de Veículos”, atualmente implantado
nos DETRANs.
Fonte: Elaborado pelo autor
Mesmo havendo variação no processo apresentado na Figura 2, tanto
entre os DETRANs, quanto entre outros serviços de Registro de Veículo, o
cliente chega a enfrentar até 05 (cinco) filas até receber o Certificado de
Registro de Veículo – CRV.
O problema se agrava com a ausência de informações para o cidadão
que precisa do atendimento, causando, muitas vezes, idas ao DETRAN sem a
documentação necessária, gerando perda de tempo tanto por parte do
atendente do órgão quanto por parte do cidadão que precisa voltar para
retomar o atendimento do início do processo.
Além disso, é importante frisar a deficiência de pessoal qualificado dos
DETRANs e de órgãos públicos em geral para pesquisa e desenvolvimento de
novas tecnologias e automações, deixando em aberto uma forte demanda por
terceirização de serviços com tecnologia aplicada.
A seguir, serão apresentadas as principais soluções de software
relacionadas ao tema, assim como as tecnologias utilizadas no projeto
proposto.
4. 2. Referencial Teórico ou Tecnológico
Desde que o Manifesto Ágil foi divulgado, seus princípios vêm influenciando
cada vez mais adeptos na forma de desenvolver software. Desenvolvedores,
gestores de projeto e clientes vem repensando e refinando seus papéis,
visando melhorar a interação entre si. São 12 princípios que se resumem em
04 frases (MANIFESTO ÁGIL, 2001):
Indivíduos e interação entre eles mais que processos e
ferramentas;
Software em funcionamento mais que documentação abrangente;
Colaboração com o cliente mais que negociação de contratos;
Responder a mudanças mais que seguir um plano;
A partir daí, surgiram frameworks de desenvolvimento que fomentaram
os princípios acima. Muitas tecnologias começaram a trazer embutidos
componentes “prontos” e adaptáveis de software que atendem os requisitos
não funcionais da maioria dos sistemas, como internacionalização, validação
de formulários, suporte a autenticação, segurança, web services, entre muitos
outros componentes. Oferecer estes requisitos ajudou as equipes de
desenvolvimento a focarem em suas regras de negócio e alcançar metas junto
a seus clientes.
Desde então, estas tecnologias foram largamente adotadas no mundo
web, com diferentes linguagens de programação. Segundo pesquisa da IEEE
(Institute of Electrical and Electronics Engineers), baseado em diversas fontes
(artigos de revistas especializadas, resultados de pesquisa no Google, dados
do Google Trends, tweets do Twitter, repositórios GitHub, perguntas do
StackOverfow, mensagens do Reddit, entre outros), como ilustrado na figura
abaixo, as 10 linguagens mais utilizadas na web em 2014 são (IEEE, 2014):
5. Figura 3: Ranking das linguagens mais utilizadas na Web em 2014
Fonte: Website do IEEE Spectrum
2
As principais linguagens exibidas na figura 3 abraçaram as tendências
do desenvolvimento ágil, disponibilizando ferramentas como por exemplo:
Vraptor e Hibernate (Java), Django (Python), AngularJS, BackBoneJS e
EmberJS (JavaScript), Rails (Ruby), Play (Scala), Grails (Groovy) e Revel (Go).
Dentre várias possibilidades existentes para o projeto proposto, foi
escolhida como linguagem de programação base o PHP. Criada em 1995, se
consolidou como umas das mais utilizadas linguagens da web, em aplicações
que vão desde redes sociais, como o Facebook, gestores de conteúdo como
Drupal e Wordpress, até plataformas de comércio eletrônico como Magento e
Oscommerce.
A linguagem PHP também possui um ecossistema rico de ferramentas
ágeis. De acordo com o portal Mashable (MASHABLE, 2014), os mais
utilizados são: Laravel (lavarel.com), CakePHP (cakephp.org), CodeIgniter
(codeigniter.com), Symfony (symfony.com), Zend (zend.com), Phalcon
(phalconphp.com) e Yii (yiiframework.com).
2
Disponível em: <http://spectrum.ieee.org/static/interactive-the-top-programming-languages>.
Acessado em dez. 2014.
6. Figura 4: Principais frameworks ágeis PHP
Fonte: Elaborado pelo autor
Para o projeto proposto, o framework Yii foi o selecionado por cobrir
muitos requisitos do sistema. Além disso, a equipe de desenvolvimento usa a
linguagem PHP como linguagem principal no desenvolvimento, o que reforçou
a escolha por este framework, além do Yii contar com uma comunidade ativa
com centenas de desenvolvedores espalhados por diversos países, como
Rússia, Índia, China, Brasil e Estados Unidos (YII GUIA DE REFERÊNCIA,
2014).
Atualmente na versão 2, foi criado em janeiro de 2008, por Qiang Xue,
sendo bastante influenciado por outros frameworks web como Prado
(pradosoft.com), Ruby on Rails (rubyonrails.com), jQuery (jquery.com/),
Symfony (symfony.com) e Joomla (joomla.org). A proposta principal de seus
idealizadores, sempre foi disponibilizar “…um framework PHP baseado em
componentes, de alta performance, para desenvolvimento ágil de modernas
aplicações web.”, “…livre, de código aberto… que promove design limpo (dry
design) e encoraja o desenvolvimento ágil…”, ou ainda, “…para
desenvolvimento de todo tipo de aplicação web…”, como “…portais, fóruns,
gestores de conteúdo, comércio eletrônico, serviços RESTful, entre muitos
outros” (ULLMAN, 2013).
7. De acordo com KECK (2014) suas características fundamentais:
Padrões de projeto: Uso do padrão de projeto MVC (Modelo-
Visão-Controle), visando a separação de conceitos (separation of
concerns, SoC), ou melhor separação do software em camadas;
Uso do padrão Active Record para associação de classes a
tabelas da base de dados;
Banco de Dados: Baseado nos PHP Data Objects (PDO), o Yii
implementa Data Access Objects (DAO) para possibilitar o acesso
a diferentes tipos de bancos de dados;
Formulários e Validação: o Yii coleta entrada dos formulários de
maneira fáci e segura, fornecendo widgets e métodos apropriados
para validação de dados;
Suporte a AJAX: fornece um conjunto de widgets com suporte a
esta tecnologia, como auto-complete input field, treeview, data
grid, entre outros, com interface versátil e simples;
Autenticação e Autorização: Yii fornece uma estrutura com
suporte a autentição de usuários via controle de acesso baseado
em níveis hierárquicos (RBAC, role-based access control);
Layout e Temas: Yii fornece um mecanismo que permite criar e
trocar temas com facilidade;
Web Services: suporte ao uso e geração de arquivos WSDL,
assim como gerência de requisições de serviços web;
Internacionalização e Localização: suporte a internacionalização
(I18N) do software para diferentes línguas, assim como
configuração de local (L18N), adaptando o software a uma
determinada país;
Caching: suporte a cache de dados (data caching), cache das
páginas (page caching), cache de fragmento de páginas
(fragment caching) e caching do HTTP (http caching);
Tratamento de Erros e Log: tratamento de erros de forma
elegante, assim como mensagens de logs que podem ser
categorizadas, filtradas e roteadas de acordo com as
necessidades do desenvolvedor;
Segurança: é equipado com medidas de segurança para previnir
a aplicação de ataques como sql injection, cross-site scripting
(XSS), cross-site request forgery (CSRF) e interceptação de
cookies;
Suporte a testes: fornece suporte a escrita e execução de testes
unitários, baseados nas tecnologias PHPUnit(phpunit.de) e
Selenium (seleniumhq.org);
Geração automática de código: fornece ferramentas que geram
formulários, CRUDs, etc;
Amigável com código de terceiros: adaptável para utilizar códigos
de outras tecnologias, como Zend, Pear, etc;
8. Documentação detalhada: cada método, classe e propriedade
está documentado. O portal é mantido por uma comunidade ativa
de desenvolvedores;
Extensão de bibliotecas: Yii provê a extensão e integração de seu
código-fonte com bibliotecas criadas pelos próprios usuários
desenvolvedores, contando atualmente com uma gama de
bibliotecas disponíveis e criadas pela comunidade;
Outro requisito de destaque é a performance do framework. As
aplicações desenvolvidas em Yii utilizam a técnica de lazy loading. Segundo
KHALILI (2010), esta técnica permite um “carregamento tardio” do objeto, ou
seja, disponibilizando-o somente quando necessário. É muito eficaz para
ganhos de desempenho, já que reduz substancialmente os acessos ao banco
de dados. A técnica é recomendada, especialmente, para o padrão de Projeto
Active Record, utilizado no core do Yii. Outra técnica utilizada é o Caching
(PHP MANUAL), utilizado em conformidade com o APC (Alternative PHP
Cache), o que reforça o dado framework como um dos que apresentam melhor
desempenho no mercado, como mostra a figura 5.
Em seguida, será apresentado o projeto “Detran Mais Fácil”, no qual foi
aplicado o Yii e muitos de suas funcionalidades.
Figura 5: Comparação de Performance entre frameworks PHP
Fonte: Website do Yii Framework
3
3
Disponível em: <http://www.yiiframework.com/performance/>. Acessado em jan.2014
9. 2.1. Outras tecnologias utilizadas
Diversas outras tecnologias foram utilizadas: o servidor web Apache, o
gerenciador de banco de dados MySQL, além da PHP, linguagem do Yii (já
abordados na seção anterior), todos componentes da pilha AMP. O Git foi o
escolhido para versionador do código.
O fato de se tratarem de ferramentas livres e consolidadas no mercado
pesou na escolha das respectivas tecnologias. A seguir, são apresentadas em
mais detalhes.
2.1.1 Apache
O servidor web líder mundial do mercado, desenvolvido pela Apache Software
Foundation foi utilizado no protótipo, tanto em estágio de desenvolvimento
quanto em produção. Foram realizados testes, na sua versão 2.x, em ambiente
local, remoto e como serviço em plataformas de nuvem, com sucesso.
2.1.2 MySQL
O sistema gerenciador de banco de dados MySQL é líder mundial dos SGBDs
transacionais de plataforma livre encontrado no mercado. É mantido pela
Oracle, uma gigante de TI, além de possuir grande comunidade de usuários e
de ser utilizado em conjunto com o MySQL Workbench, um cliente gráfico com
muitas ferramentas. Outro fato que pesou é o custo menor de uma instância
deste SGBD em plataformas de nuvem, como a Amazon, por exemplo. Testes
ainda foram feitos sucesso, utilizando o Postgres como repositório de dados.
2.1.3 Componentes Yii Framework
O framework MVC Yii foi o escolhido para construir o backend do protótipo,
utilizado na sua versão 2.x, na versão PHP 5.4.x Suas principais características
já foram elencadas no documento, mas vale ressaltar as diversas tecnologias
contidas neste framework:
Layout: HTML5 e template AdminLTE versão 2.1;
Assets: CSS3, JQuery 2.1.4, Bootstrap 2.3.2, Biblioteca de fontes
FontAwesome;
Gerenciamento de dependências: Composer 1.0-dev;
2.1.4 Git
A ferramenta Git é a mais utilizada no mercado para repositório e
controle de versão de projetos no mercado e foi largamente utilizada no
projeto. Usada na versão 2.x, foi utilizado um repositório remoto da
Atlassian Bitbucket, assim como interface de deploy na plataforma de
nuvem Heroku.
10. 3. Detran Mais Fácil
Atualmente, os departamentos estaduais de trânsito no Brasil, têm suas
atribuições previstas pela Lei nº 9.503/97, que instituiu o Código de Trânsito
Brasileiro, e as respectivas legislações estaduais. Dentre as principais
competências, destacam-se:
Art. 22. Compete aos órgãos ou entidades executivos de trânsito dos
Estados e do Distrito Federal, no âmbito de sua circunscrição:
[...] III - vistoriar, inspecionar quanto às condições de segurança
veicular, registrar, emplacar, selar a placa, e licenciar veículos,
expedindo o Certificado de Registro e o Licenciamento Anual,
mediante delegação do órgão federal competente;
[...] XIII - integrar-se a outros órgãos e entidades do Sistema Nacional
de Trânsito para fins de arrecadação e compensação de multas
impostas na área de sua competência, com vistas à unificação do
licenciamento, à simplificação e à celeridade das transferências de
veículos e de prontuários de condutores de uma para outra unidade
da Federação;
XIV - fornecer, aos órgãos e entidades executivos de trânsito e
executivos rodoviários municipais, os dados cadastrais dos veículos
registrados e dos condutores habilitados, para fins de imposição e
notificação de penalidades e de arrecadação de multas nas áreas de
suas competências;
(BRASIL, Lei nº 9.503, de 23 de setembro de 1997. Diário Oficial da
União – Seção I – 24/09/1997)
Baseado nas informações acima, o DETRAN Mais Fácil, em pleno
estado de funcionamento, será uma plataforma de software que se integrará
aos sistemas dos DETRANs e permitirão que seus usuários realizem
previamente, através da Internet, algumas das etapas do processo de Registro
de Veículo, quais sejam: a abertura de processo de registro de veículo,
geração de guia de pagamento e emissão de laudo de vistoria. Aqui está a
primeira inovação do sistema: nenhum órgão de trânsito brasileiro oferece a
possibilidade do registro de veículos on-line.
O segundo aspecto inovador do software desenvolvido ainda se refere
ao fato do DETRAN Mais Fácil ser um serviço on-line: comodidade e
praticidade. Apesar de todos os órgãos estaduais de trânsito, das 27 unidades
da federação, além do DENATRAN (Departamento Nacional de Trânsito),
contarem com sítios web, nem todas as suas atribuições estão disponibilizados
como serviços on-line. Alguns destes serviços, algumas vezes, são apenas
listas de instruções, informando apenas quais documentos são necessários
para abertura presencial de determinado processo no órgão, exemplificado na
figura abaixo:
11. Figura 6: Informações do Serviço “Certidão negativa de multas de trânsito, débitos e
dados cadastrais – Nada Consta”, disponível no website do DETRAN-RN.
Fonte: Website do DETRAN-RN
4
Com o DETRAN Mais Fácil, o usuário fará a abertura do processo
diretamente de sua residência, evitando filas e burocracia. O procedimento
será mais transparente, já que o usuário compreenderá melhor o processo. O
próprio órgão ganhará em agilidade de atendimento, além de melhoria de sua
imagem frente a população.
Outro aspecto inovador do DETRAN Mais Fácil é a sua facilidade de
uso. Alguns órgãos de trânsito oferecem serviços on-line, como consulta de
dados relacionados à habilitação, infração, multas, veículos, além de acessos a
alguns dados estatísticos. A maioria carece de uma interface acessível e
amigável ao usuário, conforme visto na figura a seguir:
4
Disponível em: <http://www.detran.rn.gov.br/ser_certidao.asp>. Acessado em jan. 2015.
12. Figura 7: Página inicial do website do DETRAN-SC.
Fonte: Website do DETRAN-SC
5
A seguir, serão apresentados os detalhes técnicos do protótipo
desenvolvido, como requisitos, arquitetura e tecnologias utilizadas.
3.1. Requisitos
A seguir serão listados os principais requisitos funcionais e não funcionais
utilizados para o desenvolvimento do protótipo do Detran Mais Fácil.
Tabela 1: Requisitos Funcionais para o protótipo
RF01 O sistema deve permitir o registro de usuário.
RF02 O sistema deve permitir login/logout do usuário.
RF03 O sistema deve permitir reset de senha por parte do usuário.
RF04 O sistema deve permitir o cadastro de um perfil do usuário
RF05 O sistema deve permitir o cadastro de veículos.
5
Disponível em: <http://detran.sc.gov.br/>. Acessado em jan. 2015.
13. RF06 O sistema deve permitir o cadastro de despachantes.
RF07 O sistema deve permitir a abertura de processos de
registro/transferência de veículo por meio de um wizard.
RF08 O sistema deve permitir gerência de usuários do sistema.
RF09 O sistema deve permitir a gerência de processos de
registro/transferência de veículos.
Os requisitos funcionais acima se referem ao protótipo da solução. Cabe
destacar que a aplicação completa possuirá um escopo maior, com requisitos
de um sistema corporativo. Entre eles, podemos destacar: o sistema terá
suporte multiusuário; será modularizado; implementado em múltiplas
plataformas; interação com outras aplicações; possuirá uma missão crítica, de
forma a ser robusto o suficiente para sustentar seu funcionamento contínuo,
seguro e escalável. No fim do documento, há mais informações a respeito do
futuro do projeto no que diz respeito ao atendimento destes requisitos.
Tabela 2: Requisitos Não Funcionais para o protótipo
RNF01 O sistema deve permitir a validação do email do usuário registrado.
RNF02 O sistema deve ter controle de acesso para diferentes perfis de
usuário. Utiliza-se padrão RBAC (Role Based Access Control).
RNF03 O sistema utiliza o algoritmo MD5 para criptografar os dados
transmitidos, assim como o uso dos protocolos HTTPS/SSL.
RNF04 O wizard do sistema deverá ser responsivo, acessível nos principais
navegadores do mercado, assim como ser acessível através de
dispositivos móveis como smartphones e tablets.
Já os requisitos não funcionais acima abordam um tema importante: a
segurança. O requisito “RNF01” evidencia o requisito de segurança
“autenticação”, de forma que só usuários logados terão a determinadas
funcionalidades do sistema. O “RNF02” evidencia o requisito de “autorização”,
definindo um controle de acesso ao sistema baseado em determinadas regras.
Já no “RNF03”, o uso do algoritmo MD5 expõe o requisito
“confidencialidade”, extremamente necessário no tráfego de dados realizado
nas operações do sistema. Por último, o “RNF04”, além de abordar a
“usabilidade” (não está relacionada a segurança), aborda a questão da
disponibilidade do sistema, seja em diversos navegadores, diferentes
plataformas, a múltiplos usuários simultâneos.
14. 3.2. Arquitetura do software
A seguir, serão apresentados os principais diagramas do sistema, cobrindo
todo escopo do software.
Figura 8: Diagrama de Casos de Uso, representando o escopo do sistema.
Fonte: Elaborado pelo autor
Os casos de uso “Abrir Processo”, “Manter Usuário”, “Validar Email”,
“Manter Veículo” e “Promover Despachante” foram contemplados na versão
atual do protótipo. Respectivamente, o primeiro se refere à abertura de
processo de registro/transferência de veículos online, realizado através do
wizard da aplicação. Já o segundo e o terceiro caso de uso contemplam todos
os requisitos funcionais e não funcionais relacionados ao registro e
autenticação de usuários no sistema.
Já os dois últimos abordados referem-se as funcionalidades
relacionadas ao perfil de usuário “despachante”. O despachante é um perfil
específico de usuário, já que se trata de um intermediário entre o usuário
cidadão e o Detran. Ele é um profissional que pode cuidar da documentação do
usuário, do veículo, emplacamento, CRV, registro e transferência de veículos.
Os demais casos de uso estão definidos para as próximas evoluções da
solução. Para o melhor entendimento da visão atual e futura do sistema, o
sistema é apresentado a nível de módulos no diagrama de decomposição,
exposto logo a seguir:
15. Figura 9: Diagrama de Decomposição do Sistema.
Fonte: Elaborado pelo autor
Relacionando o diagrama acima com o arquétipo apresentado, os
módulos “Proprietário” e “Despachante” são aqueles com estágio mais
avançado de desenvolvimento, já que vários de seus submódulos encontram-
se no escopo do protótipo desenvolvido. Os outros submódulos, assim como os
módulos “Comunicação” e “Administrador” serão alcançados nas próximas
evoluções do sistema.
Figura 10: Diagrama de implantação do sistema
Fonte: Elaborado pelo autor
16. Por último, acima é exposto o diagrama de implantação do sistema,
mostrando uma visão geral da solução em pleno funcionamento. Por se tratar
de um sistema web, o sistema estará disponível para as diversas requisições
de usuários com o perfil “Cidadão”, assim como acessível para os diversos
departamentos estaduais de trânsito conveniados com a aplicação. O protótipo
atual roda sob um servidor web convencional, com expectativa de deploy no
futuro para uma plataforma em nuvem. No final deste artigo, na seção “Anexo”,
são apresentados o restante dos diagramas da solução.
3.3. Processo de Desenvolvimento
O processo de desenvolvimento foi baseado em métodos ágeis, principalmente
no SCRUM. Foi baseado em poucos artefatos e é facilitado pelo uso da
ferramenta Trello, da Trello Inc.
O processo basicamente consistiu nos seguintes passos: definição de
um product backlog pelo gestor do projeto, ou seja, um conjunto de requisitos
gerais definidos para o sistema. Em seguida, um sprint backlog era definido
com ajuda da ferramenta Trello, para cada iteração de desenvolvimento, que
podia consumir de 15 a 30 dias. Cada sprint possui um número de cards,
tarefas a serem executadas e registradas através de commits no repositório git
do projeto, hospedado na aplicação Atlassian Bitbucket. Para esclarecer
melhor o processo, a figura 11 mostra um momento recente de um sprint do
projeto:
Figura 11: Exemplo de sprint do projeto no Trello.
Fonte: Print da aplicação Trello
17. 3.4. Protótipo desenvolvido
A seguir, serão descritas as funcionalidades desenvolvidas para o protótipo do
Detran Mais Fácil.
3.4.1 Abertura de Processo pelo Wizard
O fluxo principal para os usuários, perfil “Cidadão”, que acessarem o sistema
começa pelo wizard. Foi desenvolvido um sistema de abas, responsivo e
intuitivo, onde os usuários respondem algumas perguntas no passo-a-passo,
de modo a tirar dúvidas a respeito da documentação exigida e facilitar o
entendimento de qualquer cidadão que deseje abrir um processo de
registro/transferência de veículos.
Figura 12: Wizard do Detran Mais Fácil
Fonte: Print do protótipo do Detran Mais Fácil
Durante o passo-a-passo, o usuário fornece os dados do veículo
(número da placa, código Renavam, código CRV e a data de aquisição do
veículo). Em seguida, fornece seus dados pessoais, finalizando o processo de
abertura de registro/transferência do veículo em questão. No fim, é
disponibilizado um menu, com as funções de impressão do laudo de vistoria, a
ficha de alteração cadastral e impressão do boleto bancário.
Figura 13: Inserção dos dados do veículo
18. Fonte: Print do protótipo do Detran Mais Fácil
Figura 14: Inserção dos dados do cidadão
Fonte: Print do protótipo do Detran Mais Fácil
Figura 15: Finalização do wizard
19. Fonte: Print do protótipo do Detran Mais Fácil
3.4.2 Registro de Usuário
As figuras 16 e 17 são, respectivamente, o print da página inicial e da página
de signup, ou seja, registro de usuários no sistema. O aplicativo exige nome, e-
mail e senha do novo usuário, alertando para dados inválidos e verificando a
disponibilidade e o formato do e-mail.
Figura 16: Página inicial do Detran Mais Fácil
Fonte: Print Screen do protótipo do Aplicativo Detran Mais Fácil
20. Figura 17: Página de Registro
Fonte: Print Screen do protótipo do Aplicativo Detran Mais Fácil
3.4.3 Login/Logout do usuário
Em seguida, tela de autenticação do sistema:
Figura 18: Página de login do usuário
Fonte: Print Screen do protótipo do Aplicativo Detran Mais Fácil
21. 3.4.4 Resetar senha do usuário
Em situações que o usuário se esqueça da senha para acessar o aplicativo, há
a possibilidade de reset de senha, apenas informando o email cadastrado. O
sistema envia para o email fornecido um link para reset e cadastro de nova
senha.
Figura 19: Página de Reset de senha de usuário
Fonte: Print Screen do protótipo do Aplicativo Detran Mais Fácil
3.4.5 Cadastrar Perfil de Usuário
Com o usuário autenticado, ele pode cadastrar seu perfil no sistema,
independente do seu perfil de usuário. Um menu com funções específicas é
exibido conforme o perfil do usuário, seja ele cidadão, despachante ou
administrador.
Figura 20: Usuário autenticado como administrador
Fonte: Print Screen do protótipo do Aplicativo Detran Mais Fácil
22. Figura 21: Profile de usuário
Fonte: Print Screen do protótipo do Aplicativo Detran Mais Fácil
3.4.6 Cadastros: CRUD Veículo, Despachante, Processo e Usuário
O usuário “despachante” tem acesso ao cadastro de veículos e processos. Já o
usuário “administrador” tem acesso a todas as funcionalidades do sistema,
inclusive, a gerência de usuários.
Figura 22: Cadastro de veículos
Fonte: Print Screen do protótipo do Aplicativo Detran Mais Fácil
23. Figura 23: Cadastro de despachantes
Fonte: Print Screen do protótipo do Aplicativo Detran Mais Fácil
Figura 24: Abertura de processos
Fonte: Print Screen do protótipo do Aplicativo Detran Mais Fácil
24. Figura 25: Gerência de usuários
Fonte: Print Screen do protótipo do Aplicativo Detran Mais Fácil
25. 4. Avaliação da Solução
O primeiro ponto a ser avaliado é o escopo. O protótipo desenvolvido ainda
está incompleto em relação ao escopo original do projeto. Dos 9 casos de uso
levantados, 50% foram implementados. De qualquer forma, seu escopo foi bem
documentado através dos diagramas apresentados, o que facilitará no
desenvolvimento do restante da aplicação.
O segundo ponto a ser levantado foi a produtividade das tecnologias
empregadas. Além da vantagem de serem utilizadas apenas ferramentas open-
source, o que reduziu consideravelmente os custos do projeto, os métodos
ágeis empregados facilitaram na condução dos sprints, além de fornecer a
equipe do projeto sempre uma visão macro da evolução da solução. Cabe
destacar o uso do framework Yii, que teve suas funcionalidades testadas e
positivamente aprovadas na construção do protótipo. O uso de tais tecnologias
é fortemente recomendado para a evolução da aplicação.
4.1 Trabalhos Futuros
O último ponto a ser avaliado é o futuro do projeto. Por ser uma solução web,
se faz necessária sua implantação em algum DETRAN específico, testes de
usabilidade com usuários reais, além do deploy do sistema em uma arquitetura
de nuvem agregariam valor ao sistema.
A utilização cada vez maior da plataforma mobile nos próximos anos
torna essencial a criação de uma versão mobile da aplicação Detran Mais Fácil.
Uma primeira versão na plataforma Android, que é líder no mercado brasileiro,
deverá ser a primeira meta na área de dispositivos móveis.
A comercialização do sistema como serviço é outro enfoque que deve
ser realizado para garantir monetização com a solução. A integração com
sistemas de pagamentos bancários dos principais bancos brasileiros deverá
está no plano de ações futuros da solução.
26. 5. Conclusões
O objetivo do projeto foi alcançado em grande parte, já que os envolvidos no
ganharam bastante know-how com as tecnologias empregadas, além da
divulgação do projeto em congresso da agência fomentadora
(FAPERN/CAPES) e na web.
A Residência em Engenharia de Software teve papel-chave na formação
e desenvolvimento do trabalho. Muito do conteúdo das disciplinas ministradas
ao longo do curso foi aplicado no desenvolvimento da solução. Disciplinas
como “Gerência de Configuração” forneceram base para a escolha das
tecnologias de versionamento de código; “Arquitetura de Software” ajudou a
definir o escopo do projeto; “Desenvolvimento Ágil para Web” reforçou a
escolha do Yii como tecnologia referência, assim como muitas outras
disciplinas contribuíram no desenvolvimento da aplicação.
Além disso, forneceu motivação no estudo de várias tecnologias, como o
Yii, Heroku, Composer, Git, entre outras, além da prática dos conhecimentos
adquiridos em sala de aula.
27. Agradecimentos
Agradeço a Deus, minha esposa Cássia pela compreensão ao longo dos
últimos 18 meses envolvido no projeto, aos professores Rummenigge e
Aranha, ao gestor do projeto George Freire, a FAPERN/CAPES que abriu as
portas para a residência, além de todos os colegas e amigos do Instituto
Metrópole Digital.
28. Referências Bibliográficas
DENATRAN. Departamento Nacional de Trânsito. Frota de veículos. Disponível
em: <http://www.denatran.gov.br/frota.htm>. Acesso em: 10 dez. 2014.
MANIFESTO ÁGIL. Manifesto Ágil para Desenvolvimento de Software.
Disponível em: <http://www.manifestoagil.com.br>. Acesso em: 10 dez.
2014.
IEEE. Institute of Electrical and Electronics Engineers. Interactive: The Top
Programming Languages. Disponível em:
<http://spectrum.ieee.org/static/interactive-the-top-programming-languages>.
Acesso em: 10 dez. 2014.
MASHABLE. 13 PHP Frameworks to Help Build Agile Applications. Disponível
em: <http://mashable.com/2014/04/04/php-frameworks-build-applications>.
Acesso em: 10 dez. 2014.
YII GUIA DE REFERÊNCIA. Yii PHP Framework Version 2. Disponível em:
<http://www.yiiframework.com/doc-2.0/>. Acesso em: 10 dez. 2014.
ULLMAN, Larry. (2013) . The Yii Book: Developing Web Applications Using the
Yii PHP Framework. Disponível em: <https://larry.pub/>. Acesso em: 20 dez.
2014.
KECK, Bill. (2014). Yii 2 For Beginners. Disponível em:
<http://leanpub.com/yii2forbeginners>. Acesso em: 20 dez. 2014.
KHALILI, Mehdi. ORM anti-patterns - Part 3: Lazy loading. Disponível em:
<http://www.mehdi-khalili.com/orm-anti-patterns-part-3-lazy-loading>. Acesso
em: 20 dez. 2014.
PHP MANUAL, Manual do PHP. Referência das Funções. Afetando o
comportamento do PHP. APC. Disponível em:
<http://php.net/manual/pt_BR/intro.apc.php>. Acesso em: 20 dez. 2014.
29. Anexo
A seguir, são apresentados todos os diagramas elaborados para definição da
arquitetura da solução. Tais diagramas foram construídos segundo a UML
(Unified Modeling Language): diagramas de classe, comunicação, sequência
casos de uso, decomposição , implementação, usa, componente-e-conector e
implantação.
I. Diagramas de Classe
Figura 26: Diagrama de Classe Abrir Processo
Fonte: Elaborado pelo Autor
30. Figura 27: Diagrama de Classe Emitir Guia
Fonte: Elaborado pelo Autor
Figura 28: Diagrama de Classe Emitir Alerta
Fonte: Elaborado pelo Autor
31. Figura 29: Diagrama de Classe Emitir Relatório
Fonte: Elaborado pelo Autor
Figura 30: Diagrama de Classe Promover Usuário a Despachante
Fonte: Elaborado pelo Autor
32. Figura 31: Diagrama de Classe Realizar Pagamento
Fonte: Elaborado pelo Autor
II. Diagramas de Comunicação
Figura 32: Diagrama de Comunicação Abrir Processo
Fonte: Elaborado pelo Autor
33. Figura 33: Diagrama de Comunicação Emitir Alerta
Fonte: Elaborado pelo Autor
Figura 34: Diagrama de Comunicação Emitir Guia
Fonte: Elaborado pelo Autor
34. Figura 35: Diagrama de Comunicação Emitir Relatório
Fonte: Elaborado pelo Autor
Figura 36: Diagrama de Comunicação Emitir Relatório
Fonte: Elaborado pelo Autor
35. III. Diagrama de Sequência
Figura 37: Diagrama de Sequência Abrir Processo
Fonte: Elaborado pelo Autor
IV. Diagrama de Casos de Uso
Figura 38: Diagrama de Casos de Uso
Fonte: Elaborado pelo Autor
36. V. Diagrama de Decomposição
Figura 39: Diagrama de Decomposição
Fonte: Elaborado pelo Autor
VI. Diagrama de Implementação
Figura 40: Diagrama de Implementação
Fonte: Elaborado pelo Autor
37. VII. Diagrama de Usa
Figura 41: Diagrama de Usa
Fonte: Elaborado pelo Autor
VIII. Diagrama Componente-e-conector
Figura 42: Diagrama Componente-e-conector
Fonte: Elaborado pelo Autor
38. IX. Diagrama de Implantação
Figura 43: Diagrama de Implantação
Fonte: Elaborado pelo Autor