Você está na página 1de 88

Edson Gomes Pereira

Thiago Oliveira Reis

DESENVOLVIMENTO DE UMA APLICAÇÃO PARA DISPOSITIVOS


ANDROID VOLTADA PARA ESTABELECIMENTOS DO SETOR DE
BELEZA

FACULDADES UNIFICADAS DE TEÓFILO OTONI

TEÓFILO OTONI - MG

2017
Edson Gomes Pereira

Thiago Oliveira Reis

DESENVOLVIMENTO DE UMA APLICAÇÃO PARA DISPOSITIVOS


ANDROID VOLTADA PARA ESTABELECIMENTOS DO SETOR DE
BELEZA

Monografia apresentada ao curso de Sistemas de Informação das


Faculdades Unificadas de Teófilo Otoni como requisito parcial à obtenção do
título de Bacharel em Sistemas de Informação.

Área de Concentração: Desenvolvimento Móvel

Prof. Orientador: Amaury Gonçalves Costa

FACULDADES UNIFICADAS DE TEÓFILO OTONI

TEÓFILO OTONI-MG

2017
INSTITUTO ENSINAR BRASIL
FACULDADES UNIFICADAS DE TEÓFILO OTONI

FOLHA DE APROVAÇÃO

A Monografia intitulada: Desenvolvimento de uma aplicação para dispositivos


Android voltada para estabelecimentos do setor de beleza.

elaborada pelos alunos Edson Gomes Pereira e Thiago Oliveira Reis,

foi aprovada por todos os membros da Banca Examinadora e aceita pelo curso
de Sistemas de Informação das Faculdades Unificadas Teófilo Otoni, como
requisito parcial da obtenção do título de

BACHAREL EM SISTEMAS DE INFORMAÇÃO.

Teófilo Otoni, 21 de novembro de 2017

___________________________

Prof. Orientador

___________________________

Prof. Examinador 1

___________________________

Prof. Examinador 2
Dedicamos esta monografia a todos aqueles que descobriram da maneira mais difícil
que todos os sacrifícios valeram a pena.
LISTA DE SIGLAS E ABREVIATURAS

ABC-Spas - Associação Brasileira de Clínicas e Spas

ABIHPEC - Associação Brasileira da Indústria de Higiene Pessoal Perfumaria e


Cosmética
HTTP - Hypertext Transfer Protocol (Protocolo de Transferência de Hipertexto)
IDE - Integrated Development Environment (Ambiente de Desenvolvimento
Integrado)
iOS - iPhone Operating System (Sistema Operacional do iPhone)
JSON - JavaScript Object Notation (Notação de Objetos JavaScript)
MITI - Monitoramento de Informações e Inteligência de Mercado
OHA - Open Handset Alliance ( sem tradução exata)
PHP - Personal Home Page (Página Inicial Pessoal, tradução livre)

PIB - Produto Interno Bruto

SDK - Software Development Kit (Kit de Desenvolvimento de Software)

SGBD - Sistema Gerenciador de Banco de Dados

SPC - Serviço de Proteção ao Crédito

SQL - Structured Query Language (Linguagem de Consulta Estruturada)

XML - Extensible Markup Language (Linguagem de marcação Extensível, tradução


livre)
LISTA DE FIGURAS

Figura 1: Arquitetura da plataforma........................................................................21

Figura 2: Ciclo de vida de uma Activity...................................................................24

Figura 3: Camadas da Engenharia de Software.....................................................37

Figura 4: Tela de login protótipo.............................................................................43

Figura 5: Tela de cadastro protótipo.......................................................................44

Figura 6: Tela de localização protótipo...................................................................45

Figura 7: Tela do perfil resumido do estabelecimento protótipo.............................46

Figura 8: Tela de agendamento protótipo...............................................................47

Figura 9: Caso de uso da aplicação mobile............................................................51

Figura 10: Caso de uso da aplicação web..............................................................51

Figura 11: Diagrama de classes..............................................................................52

Figura 12: Tabelas do bando de dados...................................................................53

Figura 13: Tabela estabelecimento.........................................................................54

Figura 14: Tabela cliente.........................................................................................55

Figura 15: Tabela colaborador................................................................................55

Figura 16: Tabela agenda.......................................................................................56

Figura 17: Tabela serviços......................................................................................56

Figura 18: Tela de login..........................................................................................57

Figura 19: Tela de cadastro....................................................................................58

Figura 20: tela de acompanhamento de agendamentos.........................................59

Figura 21: Tela de localização................................................................................60


Figura 22: Perfil resumido do estabelecimento.......................................................61

Figura 23: Tela de perfil do estabelecimento..........................................................62

Figura 24: Tela de agendamento............................................................................63

Figura 25: Tela de login da aplicação web..............................................................65

Figura 26: Tela de cadastramento de estabelecimento..........................................66

Figura 27: Tela de atribuição de especialidades.....................................................66

Figura 28: Efetuando um agendamento..................................................................69

Figura 29: tela de acompanhamento de agendamentos.........................................70

Figura 30: Pergunta de número 1 feita aos clientes................................................72

Figura 31: Pergunta de número 2 feita aos clientes................................................72

Figura 32: Pergunta de número 3 feita aos clientes................................................73

Figura 33: Pergunta de número 4 feita aos clientes................................................73

Figura 34: Pergunta de número 1 feita aos donos..................................................74

Figura 35: Pergunta de número 2 feita aos donos..................................................74

Figura 36: Pergunta de número 3 feita aos donos..................................................75

Figura 37: Pergunta de número 4 feita aos donos..................................................75


RESUMO

O presente trabalho tem por objetivo desenvolver um sistema composto por


duas partes principais, uma aplicação para a plataforma Android e outra para
plataforma web, sendo a aplicação móvel para uso de clientes de estabelecimentos
do setor de beleza tais como salões de beleza e barbearias e a aplicação web para
uso exclusivo e administrativo por parte dos responsáveis (donos, gerentes) dos
mesmos. A aplicação móvel tem por finalidade fornecer aos usuários uma melhor
alternativa para busca e agendamento de serviços neste tipo de estabelecimento, uma
vez que através dele os clientes poderão agendar seus próprios horários. Já a
aplicação web servirá para que aqueles que gerenciam estes estabelecimentos
possam acompanhar e administrar os agendamentos. Monografia de Conclusão de
Curso de bacharel em Sistemas de Informação, redirecionada na área de
desenvolvimento mobile, tendo como tema: “Desenvolvimento de uma aplicação para
dispositivos Android voltado para estabelecimentos do setor de beleza”. Trata-se do
desenvolvimento de um aplicativo que trará maior comodidade aos clientes que
procuram por este tipo de serviço, ao passo que permitirá um melhor controle de
agendamentos para os estabelecimentos, o que se espera é o aumento da satisfação
dos clientes. Para o desenvolvimento deste trabalho foi necessária uma extensa
pesquisa bibliográfica no que tange o universo de desenvolvimento de software,
abordando: Linguagens de programação, Banco de Dados, SGBD MySQL
Workbench, plataforma Android, IDEs, Frameworks e Engenharia de Software.
Portanto, a conclusão do trabalho visa evidenciar os benefícios trazidos pela utilização
da aplicação Android desenvolvida para atender a demanda de um meio mais eficiente
de se efetuar agendamento de serviços em um estabelecimento de beleza.

Palavras-Chave: Aplicativo; Android; Setor de Beleza; Agendamento de serviços;


SUMÁRIO

INTRODUÇÃO ............................................................................................................ 9
1. PRINCIPAIS CONCEITOS ............................................................................. 13
1.1. SQL................................................................................................................. 13
1.1.1 Bancos de dados .......................................................................................... 14
1.1.2 Sistema gerenciador de banco de dados ................................................... 14
1.1.3 MariaDB ......................................................................................................... 15
1.2 LINGUAGENS DE PROGRAMAÇÃO ............................................................. 15
1.2.1 Tipos de linguagens ..................................................................................... 15
1.2.2 Programação orientada a objetos ............................................................... 16
1.2.3 História da linguagem Java ........................................................................... 17
1.2.3.1 Conceitos de Java ......................................................................................... 18
1.2.3.2 JDK................................................................................................................ 18
1.3 INTRODUÇÃO AO ANDROID ............................................................................. 19
1.3.1 Plataforma Android ........................................................................................ 19
1.3.2 Arquitetura do Android .................................................................................. 20
1.3.3 SDK .................................................................................................................. 22
1.3.4 Activity ............................................................................................................ 22
1.3.4.1 Ciclo de Vida da Activity ................................................................................ 22
1.3.5 AVD .................................................................................................................. 25
1.3.6 Genymotion .................................................................................................... 25
1.3.7 APIs ................................................................................................................. 26
1.3.7.1 API Google Maps .......................................................................................... 26
1.4 IDEs .................................................................................................................... 27
1.4.1 Principais conceitos....................................................................................... 27
1.4.2 Android Studio ............................................................................................... 27
1.4.3 PHPStorm........................................................................................................ 28
1.5 AMBIENTE WEB ................................................................................................. 28
1.5.1 Introdução ao PHP ......................................................................................... 28
1.5.2 Conceitos de PHP .......................................................................................... 29
1.5.3 JavaScript ....................................................................................................... 29
1.5.4 CSS .................................................................................................................. 30
1.5.5 TypeScript ....................................................................................................... 30
1.5.6 Web Service .................................................................................................... 30
1.5.6.1 JSON ............................................................................................................. 31
1.5.7 Servidores Web .............................................................................................. 31
1.5.7.1 Apache .......................................................................................................... 31
1.6 FRAMEWORKS .................................................................................................. 32
1.6.1 Principais conceitos....................................................................................... 32
1.6.2 Angular 2 ......................................................................................................... 32
1.6.3 Node.js ............................................................................................................ 33
1.6.3.1 NPM .............................................................................................................. 33
1.6.4 Materialize ....................................................................................................... 34
1.7 FERRAMENTAS AUXILIARES PARA O DESENVOLVIMENTO ........................ 34
1.7.1 Postman .......................................................................................................... 34
1.7.2 Balsamiq Mockups ......................................................................................... 35
1.7.3 Git .................................................................................................................... 35
1.7.3.1 Git Hub .......................................................................................................... 35
1.7.4 Inkscape .......................................................................................................... 36
1.8 ENGENHARIA DE SOFTWARE ......................................................................... 36
1.8.1 Conceitos de Engenharia de Software ......................................................... 36
1.8.2 Camadas da Engenharia de Software........................................................... 37
1.8.3 Modelos de Processo..................................................................................... 38
1.8.3.1 Modelos de processo incremental ................................................................. 38
1.8.4 Requisitos ....................................................................................................... 39
1.8.5 UML.................................................................................................................. 41
2. DESENVOLVIMENTO ....................................................................................... 42
2.1 DESENVOLVIMENTO DO APLICATIVO ............................................................ 42
2.1.1 Requisitos ....................................................................................................... 42
2.1.2 Protótipos de tela ........................................................................................... 43
2.1.3 Definição dos Requisitos............................................................................... 48
2.1.4 Modelagem do banco de dados .................................................................... 52
2.1.5 Desenvolvimento da Aplicação Android ...................................................... 56
2.1.6 Desenvolvimento da Aplicação Web ............................................................ 64
2.1.7 Testes da aplicação........................................................................................ 68
3. RESULTADOS OBTIDOS ................................................................................. 71
CONSIDERAÇÕES FINAIS ...................................................................................... 77
REFERÊNCIAS ......................................................................................................... 80
9

INTRODUÇÃO

A seguinte monografia que se concentra na área de desenvolvimento mobile


tem por objetivo o desenvolvimento de uma aplicação para dispositivos Android
voltado para estabelecimentos do setor de beleza que permita aos usuários o
agendamento de serviços através de seus dispositivos móveis.

A tecnologia tem se mostrado cada vez mais necessária para a sociedade


beirando o indispensável. A utilização de recursos tecnológicos se tornou mais que
mera conveniência, empresas tem dedicado cada vez mais atenção e recursos às
tecnologias que aproximam as pessoas de seus produtos e serviços. Levando em
conta os ganhos trazidos pela tecnologia móvel como a comodidade e a economia de
tempo e um breve olhar para o cotidiano, notou-se que alguns estabelecimentos do
setor de beleza ainda utilizam recursos manuais e pouco eficientes para gerenciar os
agendamentos de horário de seus clientes.

Vários dos problemas enfrentados por essa prática manual podem vir a ser
solucionados com a utilização de tecnologias móveis, em específico um aplicativo
para esse ramo de atividade. A fim de resolver esses problemas, foi proposto o
desenvolvimento de um aplicativo para dispositivos Android que satisfaçam as
necessidades que um usuário desse tipo de serviço poderia ter. A aplicação permitirá,
pois, que o usuário possa efetuar o seu próprio agendamento selecionando aquele
estabelecimento que melhor o atenderá de acordo com as suas necessidades. Ela
fornece a localização atual do usuário e a localização dos estabelecimentos mais
próximos. Além de efetuar o agendamento, o usuário terá acesso a informações
referentes ao estabelecimento como o seu endereço, a categoria a que ele pertence
e a sua avaliação por outros usuários. Se desejar efetuar um agendamento, o usuário
terá ainda acesso a uma lista de serviços com a qual aquele estabelecimento opera,
o valor e a duração de cada serviço, além da data e horário desejados poderá também
10

escolher qual profissional daquele estabelecimento prestará aquele serviço. Olhando


para o lado do estabelecimento, percebeu-se a necessidade de gerenciar esses
agendamentos, foi também proposto então uma plataforma web para
acompanhamento e gerenciamento desses agendamentos de forma que possam,
posteriormente, ser implementadas ferramentas de relatórios que auxiliem os donos
e gerentes a tomarem decisões para a organização.

Com o propósito de implementar o projeto, foi escolhida a plataforma Android


devido a uma série de fatores que inviabilizariam o desenvolvimento para outras
plataformas, como aquisição de equipamento específico para o desenvolvimento e
testes, bem como a falta de conhecimento necessário de linguagens específicas
para desenvolvimento. Outro fator determinante para escolha da plataforma Android
é a atual porcentagem de domínio do mercado, em torno de 86,2% segundo o
instituto de pesquisa Gartner (2016), podendo assim ser utilizado por um grande
número de usuários.
Assim sendo, a monografia aqui apresentada parte da seguinte pergunta
investigativa: seria viável a criação de um aplicativo para dispositivos móveis capaz
de oferecer serviços de buscas e agendamento de horários em estabelecimentos do
setor de beleza?

Durante a construção da pesquisa, foram elaboradas algumas hipóteses com


o propósito de alcançar respostas para esta pergunta, que se seguem:

Hipótese 0: Não seria viável o desenvolvimento de um aplicativo para


dispositivos móveis que disponibilize buscas e agendamento de atendimentos para
estabelecimentos do setor de beleza e cuidados pessoais, pois não existiria a
necessidade de mercado do mesmo.
Hipótese 1: O aplicativo para dispositivos móveis não traria benefício algum
para os estabelecimentos que o utilizarem.
Hipótese 2: O aplicativo para dispositivos móveis poderia não se mostrar mais
eficiente do que o controle manual para agendamento de atendimentos comumente
utilizado pelos estabelecimentos.

Hipótese 3: Não seria viável o desenvolvimento do aplicativo, pois o mesmo


poderia não ser mais eficiente na procura de estabelecimentos do que os métodos
comuns de marketing utilizados.
11

Hipótese 4: Seria viável o desenvolvimento do aplicativo e com a sua possível


utilização os estabelecimentos poderiam aumentar a sua clientela, melhorando o
atendimento e aumentando o grau de satisfação de seus clientes e também a
visibilidade de sua empresa.

Com o propósito de chegar ao objetivo geral, foram elaborados também alguns


objetivos específicos, tais como:

 Realizar pesquisas bibliográficas sobre dispositivos móveis, a plataforma


Android, linguagens de programação, bancos de dados, metodologias e
ferramentas de desenvolvimento a fim de encontrar os meios mais adequados
para o desenvolvimento;
 Levantar requisitos quanto às funcionalidades que deverão ser desenvolvidas
através de pesquisas de campo, visitando estabelecimentos do ramo e
entrevistando seus donos/gerentes;
 Analisar a real necessidade e eficácia de um aplicativo para gerenciar o
agendamento de clientes de estabelecimentos do setor de beleza e cuidados
pessoais;
 Efetuar testes extensos a fim de extinguir falhas do aplicativo;
 Apresentar o aplicativo a um profissional que atue no setor de beleza;

A pesquisa proposta pode ser considerada de caráter descritivo, uma vez que
se pretende coletar dados referentes à opinião pública de donos e gerentes que
administram estabelecimentos do setor de beleza através de entrevistas informais,
onde o objetivo é definir melhor os requisitos para o desenvolvimento além, é claro,
de compreender melhor as necessidades dos usuários e dos próprios
estabelecimentos.

Pode ser classificada como bibliográfica, quanto aos meios, pois foram
realizados vários estudos sobre linguagens de programação, ferramentas de
desenvolvimento e testes, metodologias de desenvolvimento, bancos de dados e
sistemas de gerenciamento em artigos, livros e monografias a fim de adquirir o
conhecimento necessário para a concepção do aplicativo. Ainda se tratando dos
meios, também se classifica como pesquisa de opinião pois como já citado, foram
consultados donos e gerentes de estabelecimentos a fim de auxiliar no processo de
desenvolvimento.
12

Foi utilizado um tratamento transdisciplinar dos dados para a pesquisa, uma


vez que foram utilizadas várias áreas de conhecimentos diferentes dentro de uma
mesma ciência. Em específico: áreas de armazenamento, linguagens de
programação, testes, metodologias de desenvolvimento, entre outras pertencentes à
área de ciências tecnológicas. A pesquisa será concluída através do método indutivo
devido às análises feitas a partir dos dados coletados de pequenas entrevistas
informais que serviram de base para a formulação dos requisitos, parte essencial
durante o desenvolvimento.

Tendo por base tudo o que foi exposto, o presente trabalho se mostra de grande
importância uma vez que se pretende através da tecnologia móvel, facilitar a vida dos
clientes que desejam utilizar os serviços de um estabelecimento de beleza,
extinguindo a necessidade de pegar filas de espera, ter que se dirigir a estes
estabelecimentos ou entrar em contato com os mesmos. Satisfazendo a necessidade
de um meio mais eficaz de se efetuar esse tipo de agendamento, aumentando o grau
de satisfação dos clientes ao procurarem por estes serviços. Além de auxiliar na
administração desses horários, possibilitando uma melhor organização dos mesmos
por parte dos estabelecimentos.

Esta monografia foi dividida em capítulos, onde o primeiro recebeu o nome de


principais conceitos, abrangendo todo o conteúdo teórico como as tecnologias
utilizadas no desenvolvimento da aplicação, tais como Linguagens de programação,
Banco de dados, SGBD MySQL Workbench, plataforma Android, IDEs, Ambiente web,
Frameworks e Engenharia de Software.

O segundo capítulo compreende o desenvolvimento da aplicação, expondo as


fases do processo de desenvolvimento desde a modelagem e concepção de
protótipos, até os testes realizados.
13

1. PRINCIPAIS CONCEITOS

1.1. SQL

A linguagem SQL é uma linguagem estruturada de consultas responsável pela


integração com dados armazenados em bancos de dados em sua maioria
relacionais. É utilizada por parte dos softwares para interagir com os bancos de
dados podendo efetuar comandos de inserção, alteração, consulta e exclusão de
dados. (MILANI, 2016).
A versão original da SQL foi desenvolvida no início da década de 1970 pela
IBM através de um projeto de nome R, se estabelecendo logo depois como a
linguagem padrão para manipulação de bancos de dados relacionais. A linguagem
SQL é dividida em várias partes, de acordo com as operações a serem realizadas:

DDL – ou Linguagem de Definição de Dados, permite a manipulação da estrutura


do banco de dados. Através desta, é possível criar, alterar e remover objetos dentro
do banco como tabelas, funções, etc.
DML – ou Linguagem de Manipulação de Dados, é um subconjunto de operações
básicas para manipulação dos dados tais como inserção, atualização, exclusão e
seleção.
DCL – ou Linguagem de Controle de Dados, é a responsável pelo gerenciamento
de acesso aos dados. Possui dois comandos o GRANT e o REVOKE que permitem
e restringem respectivamente o acesso dos usuários aos dados. (SILBERSCHATZ;
KORTH; SUDARSHAN, 2006).
14

1.1.1 Bancos de dados

Um exemplo básico de utilização de banco de dados são as práticas comuns


do dia a dia como anotar receitas culinárias, compromissos em suas agendas
pessoais, etc. No âmbito do desenvolvimento de softwares um banco de dados é
essencial para o armazenamento e recuperação de dados.

Um banco de dados é uma coleção armazenada de dados relacionados. Os


dados são fatos que podem ser gravados e que possuem significado como nomes,
endereços, números de telefone, entre outros (ELMASRI; NAVATHE, 2005).

Surgiram a partir da necessidade de um meio mais eficiente para o


armazenamento e gerenciamento de dados afim de garantir a segurança e a
integridade dos mesmos, contornando diversos problemas como redundância e
inconsistência, dificuldade de acesso, anomalias de acesso concorrente, entre
outros. (SILBERSCHATZ; KORTH; SUDARSHAN, 2006).

1.1.2 Sistema gerenciador de banco de dados

Um sistema gerenciador de banco de dados ou SGBD é um sistema de


software com o objetivo geral de gerenciar um banco de dados, que conta com um
conjunto de ferramentas que permitem aos usuários construir, manter e manipular
um banco de dados (ELMASRI; NAVATHE, 2005).

Em resumo são utilizados para organização dos dados afim de garantir a


integridade e segurança dos mesmos. Funciona como uma camada intermediária
entre os usuários e o banco, permitindo a execução desde operações simples até
as mais complexas. Existem diversos SGBD’s no mercado tanto gratuitos quanto
pagos. Entre os mais conhecidos temos o SQL Server da Microsoft, PostgreSQL da
Google e o MySQL (opensource). (SILBERSCHATZ; KORTH; SUDARSHAN, 2006).
15

1.1.3 MariaDB

MariaDB é um dos servidores de banco de dados mais populares do mundo,


transformando dados em informações estruturadas e contando um amplo conjunto
de aplicativos que vão desde bancos a sites, incluindo uma interface SQL para
acesso aos dados. Foi desenvolvido pelos criadores originais do MySQL mas com
a garantia de ser open source. É rápido, robusto e escalável e possui uma grande
variedade de opções de uso. (MARIADB FOUNDATION).

1.2 LINGUAGENS DE PROGRAMAÇÃO

1.2.1 Tipos de linguagens

As linguagens de programação são essenciais para o processo de


comunicação entre os programas - ou sistemas - com o computador, possibilitando
o tratamento adequado dos dados de acordo com as instruções estabelecidas
produzindo assim as informações desejadas. São estas linguagens usadas por
programadores para desenvolver desde programas simples até os mais complexos,
sob regras e sintaxes pré-definidas.

No início, os primeiros computadores utilizavam uma única linguagem


baseada no sistema Binário, onde as máquinas só compreendiam instruções
compostas pelos dígitos 1 e 0 tornando a comunicação entre o homem e a máquina
pouco amigável. Afim de diminuir estas dificuldades, foram concebidas as
linguagens Assembly também chamadas de Linguagens de Baixo Nível que
traduziam instruções básicas para linguagem de máquina. Ainda assim eram
necessárias extensas linhas de código.
16

Mais uma vez na intenção de diminuir a distância entre a máquina e o homem,


surgiram as chamadas Linguagens de Alto Nível que foram criadas para
proporcionar maior versatilidade no processo de desenvolvimento. Por se
aproximarem ainda mais da linguagem humana utilizando-se de palavras e
expressões mais práticas, permitindo que o programador só se preocupasse com a
problema a ser solucionado e não com detalhes referentes à máquina. (LEITE,
2006).

1.2.2 Programação orientada a objetos

Algumas linguagens de programação permitem a utilização de conceitos de


herança, encapsulamento e polimorfismo se enquadrando, pois, no paradigma de
orientação a objetos. O paradigma existe desde meados da década de 70, porém
só ficou verdadeiramente conhecimento após o surgimento do Java, sendo levado
mais a sério. (MENDES, 2009).

De acordo com Mendes (2009, p.18):

O paradigma de orientação a objetos traz um enfoque diferente da


programação estruturada, o mundo real é visto como sendo construído de
objetos autônomos, que interagem entre si, e cada objeto tem seu próprio
estado e comportamento, semelhante a seu correspondente no mundo
real.

O paradigma de orientação a objetos permite a criação de classes que, a partir


delas, podem ser criados objetos através da instanciação dessas classes. Em
resumo um objeto retrata uma entidade concreta ao passo que a sua classe se
refere a uma abstração de seus conceitos. Observa-se os conceitos expostos por
Guerra (2012):

Herança: Herança é a característica do paradigma em que abstrações podem ser


definidas em vários níveis. Tendo como exemplo uma classe qualquer, podendo ser
especializada por outra que irá definir um conceito mais concreto acerca de suas
características. Em contrapartida várias classes podem ser generalizadas por uma
17

única classe que represente um conceito mais abstrato. Enfim, quando uma classe
estende a outra ela herda o comportamento e a estrutura de dados da primeira,
constituindo assim o conceito de herança.

Encapsulamento: Outro conceito importante acerca da orientação a objetos é o


encapsulamento, no que se refere à necessidade de separação entre o
comportamento interno de uma classe, com a interface que ela cede para os seus
herdeiros. Com isso garantindo uma melhor divisão do software em módulos. O uso
deste conceito é feito através da utilização de métodos getters e setters que
permitem respectivamente recuperar e modificar informações contidas nos objetos,
livrando o desenvolvedor da necessidade de se preocupar com o seu
comportamento interno.

Polimorfismo: O polimorfismo acaba sendo por consequência o resultado da


utilização de herança e interfaces. Através do polimorfismo um objeto pode ser
tratado como qualquer uma de suas abstrações. A palavra vem de "múltiplas
formas”, sugerindo então que um objeto possa adquirir a forma de uma de suas
abstrações.

1.2.3 História da linguagem Java

A tecnologia Java foi criada como uma ferramenta de programação de um


projeto da Sun Microsystems, em 1991 e tinha como objetivo principal criar uma
nova plataforma para computação interativa (MENDES, 2009). Atualmente a
linguagem Java é mantida pela Oracle depois que a mesma adquiriu a Sun
Microsystems.

Extremamente rica e poderosa, a linguagem Java alcançou um alto nível de


utilização, que se deve principalmente à sua simplicidade e portabilidade entre
outras características. (COSTA, 2008).
18

1.2.3.1 Conceitos de Java

Segundo Mendes (2009, p.17):

A linguagem de programação Java representa uma linguagem simples,


orientada a objetos, multithread, interpretada, neutra de arquitetura,
portável, robusta, segura e que oferece alto desempenho. É importante
observar que a tecnologia Java é composta de uma linguagem de
programação e de uma plataforma (API e a máquina virtual).

Em sua obra, Mendes (2009) esclarece:


Simples: é considerada simples, pois permite o desenvolvimento de aplicações em
diferentes sistemas operacionais e arquiteturas de hardware.

Multithread: A plataforma permite a criação de aplicativos que façam o uso do


conceito de multithread, que incluem mecanismos de sincronização entre
processos. Segundo Mendes (2009, p. 19) “O multithreading é uma técnica de
programação concorrente, que permite projetar e implementar aplicações paralelas
de forma eficiente”.

Interpretada: é interpretada uma vez que após a compilação é gerado um arquivo


intermediário em formato específico, que pode ser executado em qualquer
arquitetura, como Windows, Linux entre outros que possuam uma máquina virtual
Java instalada.

Independente de arquitetura: A linguagem de programação Java foi projetada para


dar suporte a aplicações a serem implementadas em ambientes heterogêneos tanto
em relação a softwares quanto a hardwares.

Portabilidade: é considerada portátil, pois necessita de quase nenhuma, ou


nenhuma, alteração no seu código para que possa ser executada em diferentes
plataformas, conforme aponta Costa (2008).

1.2.3.2 JDK
19

O JDK, ou kit de desenvolvimento Java, é um conjunto de ferramentas feito


para desenvolvedores que desejam utilizar a linguagem Java. Ele provê ferramentas
essenciais como o JavaC (compilador), JavaDoc (para realizar documentações)
dentre diversas outras ferramentas que se fazem necessárias durante o processo
de desenvolvimento. (COSTA, 2008).

1.3 INTRODUÇÃO AO ANDROID

Atualmente o mercado de sistemas operacionais móveis é dominado por duas


grandes empresas, a Apple detentora de 12,9% da fatia do mercado com a
plataforma IOS e a Google líder com 86,2% com a plataforma Android segundo o
instituto de pesquisa Gartner (2016). Com o propósito de implementar o projeto, foi
escolhida a plataforma Android devido a uma série de fatores que inviabilizariam o
desenvolvimento com a plataforma IOS, como aquisição de equipamento específico
para o desenvolvimento e testes, bem como a falta de conhecimento necessário de
uma linguagem específica para desenvolvimento. Outro fator determinante para
escolha da plataforma Android é a atual porcentagem de domínio do mercado e por
ser uma plataforma bem mais acessível que os dispositivos com sistema
operacional IOS.

1.3.1 Plataforma Android

O Android é o sistema operacional desenvolvido pela Google e atualmente é


líder mundial nesse segmento como sistema operacional móvel mais utilizado no
mundo. O sistema foi construído baseado no kernel do Linux, que é responsável por
gerenciar a memória, os processos, threads, segurança dos arquivos e pastas, além
de redes e drivers.
O Kernel é responsável por grande parte das ações incumbidas ao sistema
operacional. É a camada onde todos os drivers de hardwares específicos do
20

dispositivo serão executados, proporcionando aos fornecedores de hardware o


desenvolvimento de ferramentas em um ambiente onde estejam mais
familiarizados. (SIX, 2012).
O Android é a primeira plataforma para aplicações móveis completamente livre
e open source, representando uma grande vantagem para sua evolução, dado que
diversas empresas e desenvolvedores do mundo podem contribuir para melhorias
da plataforma.
Contudo, o grande sucesso do Android não se deve somente aos esforços do
Google, por trás do desenvolvimento encontra-se um grupo autodenominado OHA
(Open Handset Alliance), composto por grandes empresas do mercado de
mobilidade, como fabricantes de celulares e operadoras entre eles a Intel, Samsung,
LG, Motorola, Sony Ericsson, ASUS, Acer e Dell que auxiliam no desenvolvimento
da plataforma. (LECHETA, 2016).
Uma das características mais interessantes do Android é que não existem
diferenças entre os aplicativos que são criados por desenvolvedores comuns
através do SDK e os que são encontrados nativamente integrados aos aparelhos.
O que significa que com o conhecimento certo, qualquer um pode desenvolver
aplicativos Android que acessem os recursos disponíveis nos dispositivos.
(ABLESON, SEN, KING, 2012).
Sabe-se que “Atualmente o Android está disponível para diversas plataformas,
como smartphones e tablets, TV (Google TV), relógios (Android Wear), óculos
(Google Glass), carros (Android Auto)”. (LECHETA, 2016, p.26).

1.3.2 Arquitetura do Android

O Android é um amontoado de softwares, todos com base em um Kernel


Linux. A seguir uma representação gráfica de como esse amontoado é organizado:
21

Figura 1: Arquitetura da plataforma.

Fonte: PEREIRA; SILVA, 2012, p. 7.

No topo tem-se a camada dos aplicativos, contendo tanto aqueles chamados


nativos de fábrica como serviços de e-mail, calendário, calculadora, etc. quanto
aplicativos desenvolvidos por terceiros como redes sociais, jogos, entre outros.
Logo abaixo tem-se a camada dos Frameworks, onde se pode encontrar as
APIs, gerenciadores de localização, pacotes, atividades, em resumo os recursos
disponibilizados pelo sistema para uso dos aplicativos.
Na camada de bibliotecas podem ser encontradas todas as bibliotecas
utilizadas pelo sistema como aquelas responsáveis pelo funcionamento do próprio
sistema, bibliotecas multimídia, funções de acesso ao SQLite, entre outras.
Ao lado tem-se a camada do Android Runtime, ou ambiente de execução,
onde se encontra uma instância de uma máquina virtual. Graças a esta camada os
22

aplicativos e demais funções do sistema podem funcionar.


Abaixo desta, tem-se a camada de controle do hardware dos dispositivos.
Através dela são gerenciados os recursos de hardware como câmera, sensores,
microfone, etc.
Por último, mas não menos importante tem-se a camada do Kernel que é o
núcleo, a parte principal do sistema responsável por estabelecer a comunicação
entre o software e o hardware. (PEREIRA; SILVA, 2009).

1.3.3 SDK

Segundo Lecheta (2016, p.42):

SDK é o software utilizado para desenvolver aplicações no Android,


constituído de um emulador para simular dispositivos android e um
conjunto de ferramentas, utilitários e uma rica API para linguagem JAVA
com várias classes para desenvolver aplicações.

1.3.4 Activity

A Activity é uma classe que herda da classe android.app.Activity e representa


cada tela da aplicação, sendo responsável de tratar todos os eventos que serão
criados nessas telas. Em resumo, Activitys são as telas com as quais as aplicações
são compostas, sempre que necessária uma nova tela, uma nova Activity deve ser
criada. (LECHETA, 2016).

1.3.4.1 Ciclo de Vida da Activity


23

É de grande importância para aqueles que desejam desenvolver projetos


Android, que entendam o funcionamento do ciclo de vida das Activitys, ou seja,
entender os comportamentos delas. Isso implica diretamente no desempenho
durante o desenvolvimento de aplicativos.
As Activitys possuem um ciclo de vida determinado, onde cada Activity iniciada
é automaticamente movida para o topo de uma pilha de atividades. Levando em
consideração o conceito de pilha, cada nova Activity vai para o topo da pilha, e a
que estava no topo é movida para baixo desta. A Activity que se encontra no topo é
a que está atualmente em execução, enquanto as aplicações abaixo podem estar
sendo executadas em segundo plano, pausadas ou paradas.
Quando por exemplo uma Activity é pausada, o sistema pode optar por
finalizar a execução para que possa redirecionar os recursos até então utilizados
para o uso de outras aplicações. Tanto as aplicações nativas quanto as de terceiros
são gerenciadas através desse sistema de pilha, uma vez que todas são executadas
sobre a mesma arquitetura. (LECHETA, 2016).
A seguir uma representação gráfica de como funciona o ciclo de vida de uma
Activity:
24

Figura 2: Ciclo de vida de uma Activity.

Fonte: developer.android.com.

onCreate() – É o primeiro método a ser chamado no início de cada aplicação, é


responsável pelo carregamento de layouts, variáveis e demais recursos necessários
para a inicialização da aplicação.

onStart() - É executado logo após o método onCreate() e também quando uma


Activity se encontrava em segundo plano e é acionada novamente.

onResume() – Possui algumas semelhanças com o método onStart(), também é


chamado durante a inicialização e quando a Activity é solicitada novamente, porém
é um método chamado apenas durante estas retomadas de foco.

onPause() – É imediatamente executado quando a Activity atual é tirada do foco.


Quando uma outra Activity é iniciada por exemplo a Activity anterior é pausada.
25

onStop() – É executado quando há a necessidade de interromper uma Activity


quando esta está coberta por outra.

onDestroy() – Através desse método a Activity é destruída e se torna impossível ser


retomada por outros métodos, apenas a partir da criação de um novo objeto
construído para a mesma. É o último método a ser executado, uma vez que ele
encerra a Activity.

onRestart() – É executado antes do onStart(), trazendo de volta ao foco uma Activity


que antes estava apenas em segundo plano. (ANDROID DEVELOPERS).

1.3.5 AVD

O AVD, ou Android Virtual Device é um 9emulador de dispositivos Android


como smartphones, tablets, smartwatches e TVs. Com ele é possível criar
emuladores com configurações de diversos dispositivos simulando exatamente a
mesma plataforma, resolução de tela entre outras configurações para que os
desenvolvedores possam elaborar protótipos e realizar testes durante o processo
de desenvolvimento. É uma ferramenta rica em recursos e se utiliza dos recursos
da própria máquina para ser executado, o que pode ser um problema para aqueles
que desenvolvem projetos Android em máquinas com pouco processamento.
(ANDROID STUDIO).

1.3.6 Genymotion

O Genymotion é mais que um emulador que pode ser usado no lugar do AVD
que já vem integrado ao Android Studio, é uma plataforma extremamente rápida,
eficiente e completa de virtualização de dispositivos Android bem mais realistas.
Pode ser uma ótima opção uma vez que o AVD requer muito recurso da máquina.
26

Possui uma versão gratuita e uma paga, sendo a gratuita com poucas
restrições de recursos. É executada como uma máquina virtual, acessando recursos
da própria máquina elevando o desempenho o mais próximo possível de um
dispositivo real, além de estar disponível para Windows, Mac e Linux. (CORDEIRO,
2017).

1.3.7 APIs

As APIs (Application Programming Interface), como o próprio nome já diz, são


interfaces compostas por um grupo de padrões de programação possibilitando a
criação de aplicações. Elas funcionam por meio da comunicação de diversos
códigos diferentes, interligando várias funções.
APIs são criadas quando surgem nas empresas de software o interesse de
que outros desenvolvedores construam aplicações utilizando seus serviços. Um
bom exemplo são os serviços do Google Maps, que estão sendo utilizados no
desenvolvimento deste projeto para o desenvolvimento de serviços de
geolocalização. Trazem muitas vantagens ao processo de desenvolvimento uma
vez que são serviços muitas vezes complexos que já existem e estão
disponibilizados para o uso, sem a necessidade de desenvolver do zero. (CIRIACO,
2009).

1.3.7.1 API Google Maps

A API do Google Maps permite a criação de mapas em locais definidos,


pesquisa por estabelecimentos, lugares e geração de rotas e é gratuito para que
possa ser incorporado à sites e aplicações diversas. É um serviço público e gratuito,
desde que nada seja cobrado do usuário final, para aplicações comercializáveis
existe uma versão paga. (DOUGLAS, 2015).
Será uma das principais APIs a serem utilizadas no projeto provendo um
27

serviço de geolocalização para que usuários do aplicativo possam encontrar os


estabelecimentos cadastrados.

1.4 IDEs

1.4.1 Principais conceitos

Os ambientes de desenvolvimento integrado ou IDEs são ferramentas que


permitem a escrita, acompanhamento e execução de códigos em uma só aplicação
com o objetivo de auxiliar no desenvolvimento de softwares de maneira ágil e bem
organizada. Através do uso de IDEs têm-se um aumento expressivo nos ganhos de
desempenho e produtividade, além da redução de gastos. (BURD, 2013).

1.4.2 Android Studio

Apresentado em um evento da Google em 2013, o Android Studio é


atualmente a IDE oficial para aqueles que desejam desenvolver aplicativos para a
plataforma Android. Além de funcionalidades inerentes a uma IDE, possui uma
interface atraente e se mostra mais instrutiva em relação as outras, necessita de
poucas configurações e conta com recursos específicos para a plataforma Android.
Outras de suas características são a facilidade de sua integração com plataformas
de controle de versionamento como o Git e um robusto e ágil sistema de preview de
layout, contribuindo para o ganho de desempenho durante o desenvolvimento.
(CRIS, 2015).
28

1.4.3 PHPStorm

O PhpStorm é um inteligente editor de códigos mantido pela JetBrains que


acompanha as mais recentes tendências tanto do formato PHP quanto das tantas
outras linguagens para desenvolvimento web, contando com uma considerável
variedade de ferramentas modernas trazendo ainda mais desempenho com suporte
aos principais frameworks PHP. O editor interpreta e entende profundamente o
código e a sua estrutura garantindo um melhor desenvolvimento com o mínimo de
erros. Com ele os desenvolvedores desfrutam ao máximo de diversas tecnologias
como CSS, HTML5, JavaScript, entre outras comumente utilizadas no
desenvolvimento web. (JETBRAINS, 2017).

1.5 AMBIENTE WEB

O termo Desenvolvimento web pode ser descrito como sendo o processo de


desenvolvimento de sites, aplicações, etc. na internet ou em uma intranet. Em
resumo é o processo de criação de um software específico para a plataforma web,
afim de que satisfaça alguma necessidade. Varia desde páginas simples, como
blogs, até aplicações mais robustas como os comércios eletrônicos por exemplo. A
plataforma web é centralizada, ou seja, as aplicações são hospedadas em um
servidor específico para esse fim para que possam ser acessadas pelos browsers
instalados em computadores, tablets e celulares. (DURAES, 2008).

1.5.1 Introdução ao PHP

Segundo Alves (2017, p. 157) “O PHP pode ser considerado uma linguagem
de script, muito empregada no desenvolvimento de aplicações web e sites de e-
commerce, com acesso a banco de dados relacional”.
É uma linguagem server side, ou seja, é executada no lado servidor e é
29

também orientada a objetos, com uma estrutura e sintaxes parecidas às utilizadas


em Java. (ALVES, 2017).

1.5.2 Conceitos de PHP

O PHP é uma linguagem interpretada sem que se faça necessário o uso de


arquivos compilados. É largamente utilizada no desenvolvimento web e possibilita a
integração de diversos módulos de terceiros, suportando a orientação a objetos.
(MILANI, 2016)

1.5.3 JavaScript

É largamente utilizada na construção dos mais modernos sites, e suportada


por todos os navegadores. É o 3º componente de conhecimento essencial para
aqueles que desejam desenvolver para a Web, sendo eles o HTML para
especificação de conteúdo das páginas, o CSS responsável pela maneira com que
essas páginas serão apresentadas, e fica a cargo do JavaScript controlar o
comportamento das mesmas. É uma linguagem ágil, interpretada, não tipada e de
alto nível.
O JavaScript é uma linguagem de programação Web. Embora tenha
semelhança no nome, o JavaScript é totalmente diferente da linguagem Java. Outro
detalhe é que ela já não faz mais parte das linguagens de script, atualmente é uma
linguagem já usada em projetos de desenvolvimento de softwares de grande escala
sendo assim de uso geral, eficiente e robusta. (FLANAGAN, 2013).
30

1.5.4 CSS

O CSS (Cascading Style Sheets) surgiu em 1994 a partir da necessidade da


formatação de documentos HTML. O CSS diferentemente de outras linguagens
semelhantes possibilita a herança de estilos em cascata, permitindo que cada estilo
seja herdado facilitando os processos de modificar e formatar as informações,
eliminando a necessidade de formatar elemento por elemento. Suscintamente
falando, o CSS é a linguagem responsável por formatar, aplicar estilos às
informações apresentadas nas páginas HTML. (EIS,2008).

1.5.5 TypeScript

É uma linguagem para desenvolvimento em larga escala com JavaScript. A


linguagem TypeScript nada mais é do que um superset (superconjunto) de
recursos e funcionalidades que não podem ser encontradas no JavaScript por
padrão. Criada pela Microsoft, ela permite o desenvolvimento de scripts de fácil
compreensão e a utilização de tipagem estática, suportando melhor o uso da
Programação Orientada a Objetos. Entre as principais vantagens da utilização
dessa linguagem, está a possibilidade de dispor de dados mais definidos, auxiliando
no processo de detecção de erros e de sintaxe durante o desenvolvimento fazendo
com que um código com TypeScript se torne mais seguro e ágil. (CAMPOMORI,
2017).

1.5.6 Web Service

Outras tecnologias a serem empregadas durante o desenvolvimento são os


Web Services, que são utilizados como forma de integração e comunicação de
sistemas, de modo que um sistema possa realizar uma chamada para um serviço
de outro sistema com o objetivo de obter informações em diversos formatos como
31

XML e JSON. Uma das grandes vantagens na construção de Web Services é que
eles permitem acessar os serviços de uma forma padronizada e independente de
linguagem de programação. (LECHETA,2015).

1.5.6.1 JSON

O JSON ou em inglês JavaScript Object Notation, é um formato criado para


possibilitar o intercâmbio de dados no formato-texto trocados entre plataformas. O
objetivo do JSON é permitir a troca de dados entre sistemas que utilizam diferentes
linguagens para se comunicar, funciona como um intermediador entre diferentes
entidades viabilizando a sua comunicação. (BASSETT, 2015).

1.5.7 Servidores Web

Segundo Silva (2012):

Os servidores web são responsáveis por armazenar e trocar informações


com outras máquinas. Por causa disso, pelo menos dois participantes são
envolvidos em cada troca de informações: um cliente, que solicita
informações, e um servidor, que atende a esses pedidos.

1.5.7.1 Apache

O Apache, um dos servidores web mais famosos do mundo, é responsável


32

pela disponibilização páginas e seus recursos a serem acessados pela internet.


Tarefas básicas como pesquisas na internet, envio de e-mails, compras em sites,
só são possíveis graças aos serviços disponibilizados por servidores como o
apache. Mantido pela Apache Software Foudation, é distribuído sob a licença GNU
sendo, portanto disponibilizado de maneira gratuita. O Apache trata-se do mais
bem-sucedido servidor web livre. (CANAL TECH).

1.6 FRAMEWORKS

1.6.1 Principais conceitos

Um Framework nada mais é do que um aglomerado de classes que trabalham


juntas afim de suprir determinadas exigências. Não são softwares, são frações de
códigos que ao serem adicionados em outras aplicações automatizam e reduzem o
trabalho de se desenvolver certas tarefas trazendo agilidade para o processo de
desenvolvimento.

Ao passo que os Frameworks agilizam as tarefas e proporcionam um enorme


ganho de tempo, o uso indiscriminado dos mesmos pode causar o efeito oposto.
Quanto mais Frameworks se utiliza, maior é a carga de configurações necessárias
para que se possa desenvolver, fazendo com que as aplicações se tornem muito
complexas. (CARVALHO, 2015).

1.6.2 Angular 2
33

O Angular 2 é uma das ferramentas mais completas para o desenvolvimento


de aplicações front-end baseada em JavaScript. Foi concebido a partir da
necessidade de melhorias da sua versão anterior, o AngularJS principalmente no
que se refere a performance o que fez com que os desenvolvedores produzissem o
Angular 2 do zero. Isso fez com que a base do Angular 2 se tornasse mais moderna,
robusta e simples e totalmente diferente de seu antecessor, logo não se deve pensar
no Angular 2 como uma continuação do AngularJS. Ele simplifica não só o
desenvolvimento de interfaces de usuário, bem como aplicações client-side
diversificadas para desktop, mobile e principalmente web. (GUEDES, 2016).

1.6.3 Node.js

Lançada em 2009, o Node.js é uma plataforma de baixo nível para o


desenvolvimento de aplicações de rede altamente escaláveis, através da linguagem
JavaScript o programador desenvolve diretamente com diversos protocolos de rede
e internet e também faz uso de várias bibliotecas que acessam múltiplos recursos
do sistema operacional.

Dentre suas características está o fato de que as aplicações desenvolvidas


através dele serão single-thread, o que significa que cada aplicação terá uma
instância de um thread principal por cada processo. Outra característica a ser
destacada, é que o Node.js é orientado a eventos, perfeita para resolução de
problemas de tráfego pesado em redes e aplicações em tempo real. (MORAIS,
2015).

1.6.3.1 NPM
34

O NPM (Node Package Manager), como o próprio nome sugere é um


gerenciador de pacotes padrão do Node.js. Suas utilidades ultrapassam as tarefas
de gerência de dependências, ele também possibilita a criação de comandos para
automação de tarefas para seus projetos. (PEREIRA, 2015).

1.6.4 Materialize

O Materialize é um Framework para desenvolvimento ágil de aplicações web


totalmente Open Source e tendo o Material Design do Google como base. Ele
fornece aos desenvolvedores funções e estilos prontos, além de possuir extensos
recursos do JQuery. Entre seus principais recursos está a criação de transições e
animações que propiciam uma melhor experiência de navegação entre as telas para
o usuário. (LUIS, 2015).

1.7 FERRAMENTAS AUXILIARES PARA O DESENVOLVIMENTO

1.7.1 Postman

O Postman é um pequeno grande aplicativo utilizado para simulação e testes


de requisições HTTP durante o desenvolvimento de aplicações web, desktop ou
mobile através de uma interface simples e intuitiva. (RODRIGUES).
35

1.7.2 Balsamiq Mockups

O Balsamiq Mockups é uma ferramenta simples e fácil utilizada para


prototipação de sistemas web, desktop ou mobile. Com ele é possível criar caixas
de seleção, botões, caixas de texto, etc. possibilitando uma modelagem básica de
todo o projeto com aparência de um desenho manual. (MALHERBI).

1.7.3 Git

O Git nada mais é do que um sistema para controle de versionamento de


arquivos. Com ele é possível desenvolver aplicações juntamente com outros
desenvolvedores, uma vez que ele suporta o acesso e alteração de um arquivo ao
mesmo tempo por várias pessoas diferentes, sem que suas alterações sejam
sobrescritas. (SCHMITZ, 2015).

1.7.3.1 Git Hub

Por sua vez, o Git Hub é um serviço web que provê diversas funcionalidades
complementares ao Git. Através dele é possível a hospedagem e compartilhamento
de projetos. Quase todos os projetos de frameworks, bibliotecas, etc. que se
encontram em desenvolvimento, estão disponibilizados no Git Hub permitindo com
que desenvolvedores possam acompanhar e até contribuir com esses projetos.
(SCHMITZ, 2015).
36

1.7.4 Inkscape

O Inkscape é uma ferramenta de desenho gratuita, simples e poderosa.


Possui ferramentas flexíveis de desenho, textos e suporte para vários formatos de
arquivo. Pode ser útil tanto para ilustradores, designers, modelagem de telas para
aplicações web, entre outros. (INKSCAPE).

1.8 ENGENHARIA DE SOFTWARE

1.8.1 Conceitos de Engenharia de Software

Todo desenvolvimento depende de algum tipo de processo, que inclui


métodos e ferramentas, para concepção de um produto final. Tal como a construção
civil, por exemplo, que exige todo um planejamento bem desenvolvido e
acompanhado por profissionais, ferramentas e materiais que juntos a um processo
adequado chegam a um produto final com qualidade. Com softwares não é
diferente, e com aplicativos Android muito menos.

O conceito de engenharia de software foi proposto a princípio no final da


década de 60 e segundo Sommerville (2007, p. 3) pode ser definida como “Um ramo
da engenharia cujo foco é o desenvolvimento de sistemas de software dentro de
custos adequados e de alta qualidade”.

As experiências iniciais na criação de softwares revelaram que o


desenvolvimento informal não era suficiente, uma vez que projetos importantes
apresentavam anos de atraso, superando previsões de custos, resultando na
37

inconfiabilidade do software e desempenho insatisfatório. Ao passo que o custo de


aquisição de hardware diminuía, os custos de software aumentavam rapidamente.
(SOMMERVILLE, 2007).

Graças ao desenvolvimento da engenharia de software, hoje se entende


melhor as atividades envolvidas no processo de produção e se utiliza métodos mais
eficazes de especificação, projeto e implementação de softwares. (SOMMERVILLE,
2007).

1.8.2 Camadas da Engenharia de Software

A Engenharia de Software é uma tecnologia em camadas que deve se apoiar


num compromisso organizacional com foco na qualidade (PRESSMAN, 2006, p.17).
De acordo com a Figura 1 as camadas podem ser representadas da seguinte forma:

Figura 3: Camadas da Engenharia de Software

Fonte: PRESSMAN, 2006, pg. 17.

Conforme os esclarecimentos de Pressman (2006):

Foco na qualidade: Qualquer abordagem de engenharia, em foco a engenharia d e

software, deve ter como base o foco na qualidade.


Processo: Define uma estrutura que deve ser estabelecida para a efetiva utilização
da tecnologia de engenharia de software durante o desenvolvimento.

Métodos: Os métodos fornecem o “como fazer” para construir softwares, e contam


com um conjunto de tarefas que incluem comunicação, análise de requisitos,
38

modelagem, construção de programas, testes e manutenção.

Ferramentas: Segundo Pressman (2006, p. 18) “As ferramentas de engenharia de


software fornecem apoio automatizado ou semi automatizado para o processo e
para os métodos”.

1.8.3 Modelos de Processo

Um processo de software é um conjunto de atividades que leva à produção de


um software. Essas atividades envolvem o desenvolvimento de software usando
uma linguagem de programação (SOMMERVILLE, 2007, p.42). Como complemento
de suas características segundo Pressman (2006, p.16) “É um processo iterativo de
aprendizado, e o resultado é uma incorporação de conhecimentos coletados,
destilados e organizados, à medida que o processo é conduzindo”.

Segundo Pressman e Maxim (2016, p.40) “Um modelo de processo fornece


um guia específico de software. Ele define o fluxo de todas as atividades, ações e
tarefas, o grau de iteração, os artefatos e a organização do trabalho a ser feito”.

Os modelos de processo de software asseguram maior estabilidade,


organização e controle sobre as atividades de desenvolvimento a fim de diminuir as
chances de erro. Podem ser adaptados de acordo com as necessidades dos
engenheiros e seus gerentes conforme a demanda. (PRESSMAN; MAXIM, 2016).

1.8.3.1 Modelos de processo incremental

Recomendado para situações em que os requisitos iniciais não tenham sido


suficientemente compreendidos. São modelos que possuem atividades iterativas
39

como principal característica e foram projetados para suportar mudanças ao longo


do processo de desenvolvimento, onde são produzidas versões preliminares e
operacionais de produtos de software chamadas incrementos que permitem
posteriormente o refinamento e expansão das funcionalidades. (PRESSMAN;
MAXIM, 2016).

1.8.4 Requisitos

Em resumo requisitos são características que um determinado sistema deve ter


para que possa suprir às necessidades para as quais está sendo desenvolvido.
Segundo os apontamentos de Fernandes, Machado (2017, p.66) “os requisitos
expressam as necessidades dos usuários e as restrições que são apresentadas a um
sistema que devem ser consideradas durante o desenvolvimento. ”
Para que os requisitos sejam úteis durante esse processo de desenvolvimento,
algumas propriedades devem ser asseguradas, tais como a clareza e a ausência de
ambiguidade com que devem ser escritos. A primeira, visto que a fácil compreensão
seja alcançada e a segunda, para que não permitam mais do que uma interpretação.
(FERNANDES; MACHADO, 2017).
Segundo Sommerville (2007) os requisitos podem ser divididos em três tipos
principais, os requisitos funcionais, os não funcionais e os de domínio:
Requisitos Funcionais: dizem respeito à funcionalidades e componentes que
o sistema de software deve ter. Em síntese representam o quê o software deve
fazer/conter, como determinadas funções a serem utilizadas pelos usuários por
exemplo.
Requisitos Não Funcionais: de uma maneira geral definem como o software
deve operar, através da imposição de restrições quanto por exemplo ao desempenho,
usabilidade, às tecnologias a serem empregadas, entre outras.
Requisitos de Domínio: refere-se aos domínios da aplicação, uma vez que
possuem restrições e características individuais. Tendo como exemplo, uma
determinada função só poderá ser executada se uma outra função tenha sido
40

executada antes.

Uma das características usualmente utilizadas para se diferenciar os dois tipos


é o fato de que normalmente os requisitos funcionais tratam o software de uma
maneira mais específica, já os não funcionais de um modo geral. (VAZQUEZ;
SIQUEIRA, 2016).

1.8.4.1 Casos de uso

Em sua obra, Melo (2010, p. 56) expõe que:

Um caso de uso descreve uma sequência de ações que representam um


cenário principal (perfeito) e cenários alternativos, com o objetivo de
demonstrar o comportamento de um sistema (ou parte dele), através de
interações com atores.

Em síntese são narrativas em texto que retratam cada item funcional que
comporá o sistema. São largamente empregados para representação dos requisitos
funcionais a serem implementados, e podem também ser representados de outras
maneiras ainda mais simples, através de diagramas contendo figuras por exemplo
proporcionando uma melhor visualização do processo de desenvolvimento para as
partes interessadas, em especial para os desenvolvedores.

Os casos de uso possuem um objetivo maior que apenas a representação das


funcionalidades, agindo também como uma ferramenta de auxílio para a
documentação dos requisitos funcionais. (MELO, 2010).

Para dar início ao processo de modelagem de um caso de uso, previamente


deve-se definir quem são os atores. Resumidamente, o ator é quem executará
funções dentro do sistema, sendo uma pessoa ou algum dispositivo. São dois os
tipos existentes de atores, de acordo com Pressman (2006):

Primário: que interage diretamente com o sistema afim de alcançar um


objetivo.
41

Secundário: é aquele responsável por prover suporte ao sistema a fim de


garantir a utilização do mesmo pelos atores primários, para que assim possam
executar suas funções.

Posterior à descrição dos atores, se faz necessário a definição do caso de uso


que ficará encarregado da interação entre o sistema e o autor.

1.8.5 UML

Segundo Lobo (2009, p. 18):

A UML é uma linguagem para modelagem de software orientado a objetos.


Ela permite criar modelos abstratos de qualquer software, permitindo uma
grande flexibilidade e customização por parte de quem a utiliza como
ferramenta de modelagem.

A UML (Unified Modeling Language) é um padrão desenvolvido a partir dos


esforços do OMG ou Object Management Group para a criação de diversas
especificações para sistemas de software. É uma linguagem composta por
diagramas, onde cada diagrama tem por objetivo representar uma perspectiva de
cada parte do software. Como já mencionado acima é uma linguagem para
modelagem de objetos, que podem vir a ser entidades, atributos, mas acima de
tudo provém um conjunto de funções que representam o software. Dentre suas
partes tem-se os diagramas de classe, os diagramas de casos de uso, diagramas
de atividade, entre outros. (SILBERSCHATZ; KORTH; SUDARSHAN, 2006).
42

2. DESENVOLVIMENTO

2.1 Desenvolvimento do aplicativo

O presente projeto surgiu a partir de duas ideias distintas, a primeira de


disponibilizar serviços diversos através de um aplicativo Android, já a segunda prover
serviços de manicure a domicílio através também de um aplicativo Android. Depois de
algumas reuniões e incontáveis brainstorms o escopo foi delimitado e se chegou à
ideia principal que tem norteado o projeto desde então.

2.1.1 Requisitos

O primeiro passo depois de definido o escopo, é buscar e definir os requisitos.


Estes, sendo de extrema importância e imprescindíveis para o desenvolvimento de
um software de qualidade que atenda devidamente às necessidades daqueles que o
utilizarão.

A coleta desses requisitos foi feita através de algumas entrevistas realizadas


com donos e/ou encarregados pelo gerenciamento de estabelecimentos do setor de
beleza. A partir daí, necessidades e regras de negócio foram melhor compreendidas
possibilitando o início do desenvolvimento. Dúvidas que foram surgindo acerca do
43

modus operandi desses estabelecimentos foram sanadas rapidamente com pequenas


visitas aos mesmos, foi notável a disposição que os responsáveis por estes
estabelecimentos tiveram em ajudar mesmo que de forma simples evidenciando o
interesse deles em um software como o que está sendo desenvolvido.

2.1.2 Protótipos de tela

Partindo dos requisitos previamente definidos, deu-se início ao


desenvolvimento e à produção de protótipos das telas que poderiam vir a compor o
aplicativo, que serviram de base para enxergar melhor aquilo que antes eram apenas
ideias. Como se pode ver nas figuras que se seguem, têm-se:

 Protótipo da tela de login, primeira tela a ser visualizada pelo usuário ao


executar o aplicativo. Nela tem-se os campos “e-mail” e “senha”, onde o usuário
introduzirá os seus dados para que possa acessar as funcionalidades do
aplicativo.
44

Figura 4 – Tela de login protótipo.

Fonte: do próprio autor.

 Protótipo da tela de cadastro, para que o usuário que nunca tenha acessado o
aplicativo, possa efetuar o seu cadastro. Conta com alguns campos básicos de
cadastro.
45

Figura 5 – Tela de cadastro protótipo.

Fonte: do próprio autor.

 Protótipo da tela que fornece o serviço de localização, apontando onde o


usuário se encontra atualmente. Os pontos marcados, como se sugere, serão
os estabelecimentos já cadastrados que permitem o agendamento de serviços
através do aplicativo.
46

Figura 6 – Tela de localização protótipo.

Fonte: do próprio autor.

 Protótipo da tela que permite a visualização de um perfil resumido de cada


estabelecimento. Possui Informações pertinentes do mesmo, tais como o seu
tipo, um menu com os serviços disponíveis e sua classificação de acordo com
a avaliação dos usuários.
47

Figura 7 – Tela do perfil resumido do estabelecimento protótipo.

Fonte: do próprio autor.

 Protótipo da tela que permite ao usuário agendar um serviço no


estabelecimento escolhido. Possui as opções de escolha de serviço, data e
horário.
48

Figura 8 – Tela de agendamento protótipo.

Fonte: do próprio autor.

2.1.3 Definição dos Requisitos

A partir de protótipos primários, concebidos para direcionar o desenvolvimento,


foi possível enxergar melhor os requisitos e redigir novos. Em seguida serão
apresentados os requisitos funcionais (RF) e não-funcionais (RNF) do aplicativo
mobile, e da plataforma web.

Pode-se entender os requisitos funcionais como as funcionalidades que o


aplicativo deverá conter. No quadro a seguir serão apresentados alguns dos
Requisitos funcionais:
49

Quadro 1 – Requisitos Funcionais


Código Descrição
RF01 A aplicação mobile deverá permitir o
agendamento de horários em
estabelecimentos de beleza (salões e
barbearias)
RF02 A aplicação deverá fornecer a
localização desses estabelecimentos
tal como a localização atual do
usuário.
RF03 A aplicação deverá notificar o usuário
para que possa confirmar o
agendamento.
RF04 A aplicação deverá fornecer duas
opções distintas quanto aos
agendamentos realizados, confirmar
ou cancelar.
RF05 A aplicação web deverá fornecer um
painel de acompanhamento dos
agendamentos.
RF06 A aplicação web deverá fornecer
opções de cadastramento de
serviços, colaboradores e do
estabelecimento.
RF07 A aplicação web deverá fornecer uma
opção para que também sejam
realizados agendamentos.
Fonte: do próprio autor.

Quanto aos requisitos não funcionais, se referem à maneira como a qual o


software deverá operar, a nível de desenvolvimento. Tais como os que serão exibidos
a seguir no quadro 2:
50

Quadro 2 – Requisitos não Funcionais


Código Descrição
RNF01 O usuário da aplicação deverá possuir
um dispositivo móvel contendo a
plataforma Android com versão 5.1
com API 23 ou superior.

RNF02 Ambas as aplicações deverão


fornecer interfaces amigáveis e
intuitivas.
RNF03 A aplicação mobile deverá solicitar a
ativação do serviço de localização do
dispositivo Android.
RNF04 Ambas as aplicações exigirão uma
conexão com a internet para que a
maioria de suas operações sejam
realizadas.
RNF05 A aplicação mobile somente estará
disponível para agendamentos em
cidades em que existam no mínimo 1
estabelecimento cadastrado.
Fonte: do próprio autor.

Logo após a definição dos requisitos, foram produzidos os diagramas de casos


de uso tanto da aplicação mobile, tanto da aplicação web para o cadastro de
colaboradores e acompanhamento dos agendamentos que estão representados nas
figuras a seguir:
51

Figura 9: Caso de uso da aplicação mobile.

Fonte: do próprio autor.

Figura 10: caso de uso da aplicação web.

Fonte: do próprio autor.


52

2.1.4 Modelagem do banco de dados

A partir dos requisitos definidos, deu-se início ao processo de modelagem do


banco parte essencial no processo de desenvolvimento e imprescindível para o
funcionamento das aplicações, onde dados serão inseridos, editados e recuperados.
Utilizou-se a ferramenta MySQL Workbench para a dita modelagem e concepção final
do banco a ser implementado. A seguir está representado o diagrama de classes
elaborado afim de auxiliar na criação do banco de dados definitivo:

Figura 11 : diagrama de classes.

Fonte: do próprio autor.

Durante a modelagem um total de 7 tabelas foram criadas. Estas podem ser


vistas na figura 12 que se segue:
53

Figura 12 – Tabelas do banco de dados

Fonte: do próprio autor.

Dentre estas tabelas, destacam-se as tabelas “estabelecimento”, “cliente”,


“colaborador”, “agenda” e “serviços” que serão brevemente descritas a seguir.
Começando pela tabela “estabelecimento” que está sendo representada na figura 13
a seguir:
54

Figura 13 – Tabela estabelecimento

Fonte: do próprio autor.

Nesta tabela serão armazenados os dados mais importantes acerca dos


estabelecimentos cadastrados, essenciais para o funcionamento das aplicações.
Contêm, pois, dados referentes à localização desses estabelecimentos (parte
imprescindível, contendo a longitude e a latitude), nome, dados para contato (telefone
e e-mail), o tipo desse estabelecimento (centro de beleza, estética, etc.), nota de
avaliação (estas dadas pelos usuários acerca dos serviços prestados), dados
referentes aos horários de funcionamento desses estabelecimentos, dentre outras
informações.

Em seguida têm-se a tabela “cliente” onde serão armazenados, como o próprio


nome sugere, dados referentes aos clientes cadastrados como nome e sobrenome,
número de CPF, e-mail, data de nascimento, gênero e senha. A tabela pode ser vista
logo a frente, pela figura 14:
55

Figura 14 – Tabela Cliente.

Fonte: do próprio autor.

Logo depois têm-se a tabela “colaborador”, que armazenará dados necessários


para o cadastro dos colaboradores de cada estabelecimento, sendo eles nome e
sobrenome, CPF, e-mail, senha, nível de acesso desse colaborador, nota dada pelos
clientes aos serviços prestados por determinado colaborador dentre outros dados. A
tabela se encontra representada pela figura 15 a seguir:

Figura 15 – Tabela Colaborador.

Fonte: do próprio autor


56

Continuamente temos a tabela “agenda”, responsável por armazenar dados


pertinentes aos agendamentos a serem feitos pelos usuários do aplicativo. A tabela
“agenda” é mostrada através da figura 16 que se sucede:

Figura 16 – Tabela Agenda.

Fonte: do próprio autor

Por último, mas não menos importante, tem-se a tabela “serviços”, encarregada
de armazenar os dados referentes aos serviços que serão prestados em cada
estabelecimento. Por exemplo o nome, o tempo médio de execução e o preço desses
serviços. Pode-se observar a tabela pela figura 17 que se segue:

Figura 17 – Tabela Serviços.

Fonte: do próprio autor

2.1.5 Desenvolvimento da Aplicação Android


57

Com o banco de dados pronto, foram desenvolvidas as telas (activitys) do


aplicativo Android.

A primeira a ser descrita é a tela inicial ou de login, que tal como o protótipo
possui dois campos principais para que o usuário possa acessar o aplicativo e suas
funções. Conta também com um botão de login e uma opção logo abaixo para que o
usuário possa se cadastrar caso nunca o tenha feito. Esta tela é apresentada a seguir
através da figura 18:

Figura 18 – Tela de login.

Fonte: do próprio autor.

Em seguida tem-se a tela de cadastro na figura 19, onde o usuário poderá se


cadastrar para utilizar o aplicativo após fornecer algumas informações tais como
nome, data de nascimento e e-mail:
58

Figura 19 – Tela de cadastro

Fonte: do próprio autor.

Depois de efetuado o login, o usuário é direcionado para a tela de


acompanhamento de agendamentos, onde estão listados todos os agendamentos
feitos pelo mesmo através de cards. Esta tela está sendo representada pela figura 20
a seguir:
59

Figura 20 – Tela de acompanhamento de agendamentos.

Fonte: do próprio autor.

Logo após tem-se a tela de localização, que fornece o paradeiro atual do


usuário e os estabelecimentos cadastrados, como pode ser vista na figura 21:
60

Figura 21 – Tela de localização

Fonte: do próprio autor.

Ao tocar em um desses pontos que representam os estabelecimentos, São


exibidas duas breves e importantes informações como representado na figura 22, o
nome do estabelecimento e logo abaixo o seu tipo:
61

Figura 22 – Perfil resumido do estabelecimento.

Fonte: do próprio autor.

Através desses pequenos pontos marcados no mapa, o usuário tem acesso ao


perfil do estabelecimento, contendo informações relevantes como pode ser visto na
figura 23 a seguir:
62

Figura 23 – Tela de perfil do estabelecimento

Fonte: do próprio autor.

Após a seleção do estabelecimento, é aberta uma tela para que o usuário possa
realizar o agendamento. Como pode ser visto na figura n, o usuário dispõe de algumas
opções de serviço, colaborador, data e horário desejados além de ser informado do
valor daquele serviço:
63

Figura 24 – Tela de agendamento

Fonte: do próprio autor.

Uma das funcionalidades da aplicação Android é a capacidade de mostrar aos


usuários a localização dos estabelecimentos de beleza. Para a construção dessa
funcionalidade a Google fornece uma API que permite a obtenção das coordenadas
atuais do dispositivo e através de parâmetros informar os pontos a serem listados no
mapa. A seguir um trecho de código dessa funcionalidade na aplicação Android.

Código 1: trecho de código API Location Java (Aplicação Android).

public void onMapReady(GoogleMap googleMap) {

map = googleMap;
if (ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED &&
64

ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_COARSE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new
String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 0);
ActivityCompat.requestPermissions(this, new
String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 0);
return;

map.setMyLocationEnabled(true);

map.setMapType(GoogleMap.MAP_TYPE_NORMAL);

map.getUiSettings().setZoomControlsEnabled(true);

if (!list.isEmpty()) {

for (int i = 0; i < list.size(); i++) {

double latitude =
Double.parseDouble(list.get(i).getLatitude());

double longitude =
Double.parseDouble(list.get(i).getLongitude());

LatLng latLng = new LatLng(latitude, longitude);


Marker marker = map.addMarker(new
MarkerOptions().position(latLng).title(list.get(i).getNome()).snip
pet(list.get(i).getTipo()).icon(BitmapDescriptorFactory.fromResour
ce(R.drawable.map_marker1)));

}
} else {

Toast.makeText(this, list.toString(),
Toast.LENGTH_LONG).show();

2.1.6 Desenvolvimento da Aplicação Web


65

A aplicação web constitui de um mecanismo para gerenciamento dos


estabelecimentos, devido a necessidade de se gerenciar os agendamentos
provenientes da aplicação mobile. Foi desenvolvida uma plataforma onde os gestores
ou funcionários dos estabelecimentos pudessem acompanhar todos os
agendamentos, além disso a plataforma permite o cadastramento dos dados relativos
aos estabelecimentos bem como seus funcionários e serviços prestados. Foi
desenvolvida utilizando como principal ferramenta o Framework Angular que
atualmente encontra-se em sua versão 4 e suporta como linguagens de programação:
Javascript; Dart; Typescript; sendo a última a escolhida para desenvolvimento. Para o
desenvolvimento front-end foi utilizado o Framework Bootstrap que além de auxiliar
na construção dos componentes de layout, provê responsividade permitindo a
adaptação do conteúdo a qualquer tamanho de tela.

A seguir serão apresentadas figuras referentes às telas de login, cadastro de


estabelecimento e atribuição de especialidades aos colaboradores.

Figura 25: tela de login da aplicação web.

Fonte: do próprio autor.


66

Figura 26: tela de cadastramento de estabelecimento.

Fonte: do próprio autor.

Figura 27: tela de atribuição de especialidades.

Fonte: do próprio autor.


67

Alguns trechos de código utilizados durante o desenvolvimento merecem


destaque uma vez que foram não só essenciais como também funções específicas
para que o aplicativo pudesse atingir os objetivos propostos. Tais como os que se
seguem.

Components são tipos de classe do Angular, possuem um determinado ciclo


de vida, um template para definir a aparência da aplicação e um seletor. Os
components são elementos personalizáveis, independentes e reutilizáveis, são fáceis
de identificar devido a anotação @Component, a seguir o trecho de código de um
Component.

Código 2: trecho de código componente Angular.

@Component({
selector: 'app-cadastro-colaborador',
templateUrl: './cadastro-colaborador.component.html',
styleUrls: ['./cadastro-colaborador.component.scss']
})
export class CadastroColaboradorComponent implements OnInit {
estabelecimentos: EstabelecimentoModel[];
public retorno: string
constructor(private colaboradorService: ColaboradorService) { }
ngOnInit() {

this.colaboradorService.estabelecimentos().subscribe(estabelecimen
tos => this.estabelecimentos = estabelecimentos);
}
save(colab: ColaboradorModel) {
let result
result = this.colaboradorService.addColaborador(colab)
result.subscribe(retorno => this.retorno = retorno);
console.log(this.retorno)
}
}

Fonte: do próprio autor.

A comunicação entre as aplicações Web/ Mobile se dá por uma API Rest na


qual os dados são enviados em notação XML ou JSON. Independente da linguagem
de programação que se escolha é possível tratar os dados recebidos ou encaminhar.
A seguir um trecho de código onde os dados são recebidos pelo PHP e envia uma
resposta no formato JSON.
68

Código 3: trecho de código API Rest .

<?php
require_once '../../DBCON/conexao.php';
require_once '../DAO/colaboradorDAO.php';
$response = array();
$entityBody = file_get_contents('php://input');
if($_SERVER['REQUEST_METHOD']=='POST'){
$obj_request = json_decode($entityBody ,true);
if (!empty($obj_request)){
$pdo = conectar();
$response['retorno'] = colabNovo($pdo,$obj_request);
} else {
$response ['retorno'] = " Erro: Dados não encontrados!";
}
}else{
$response ['retorno'] = true;
$response['retorno']= "Erro: Requisição Invalida!";
}
echo json_encode($response);
Fonte: do próprio autor.

2.1.7 Testes da aplicação

O subcapítulo que se segue é dedicado a realização de testes para comprovar


o funcionamento do aplicativo. Como já exposto, o banco de dados conta com
cadastros de estabelecimentos, clientes e colaboradores. Possui também
informações referentes aos serviços disponíveis em cada estabelecimento
cadastrado.

As telas iniciais de login e cadastro já foram apresentadas, logo não se fazem


necessárias menções adicionais. O teste apresentado a seguir representa a principal
funcionalidade da aplicação, o agendamento de um serviço. Através da figura 28
exposta a seguir, pode-se ver um agendamento já configurado com as preferências
do cliente, como o tipo de serviço desejado, o tempo de duração desse serviço, o valor
a pagar, o profissional escolhido, a data e o horário desejados:
69

Figura 28 – Efetuando um agendamento

Fonte: do próprio autor.

Após a confirmação do agendamento através do botão “agendar”, os


agendamentos podem ser acompanhados através de cards na tela inicial. Estes cards
contêm um resumo desses agendamentos como a data e hora marcados, o
profissional selecionado e o nome do estabelecimento no qual o serviço foi agendado.
Conta também com opções de edição e confirmação de agendamento. Como pode
ser visto na figura 29 a seguir:
70

Figura 29 – Tela de acompanhamento de agendamentos.

Fonte: do próprio autor.


71

3. RESULTADOS OBTIDOS

O capítulo que se segue tem por objetivo expor os resultados obtidos durante
os testes do aplicativo por donos e clientes de estabelecimentos de beleza situados
na cidade de Malacacheta, Minas Gerais.

A fim de resolver os problemas causados por um controle manual ineficiente


de agendamento de serviços, foi desenvolvida uma aplicação para dispositivos
Android capaz de oferecer aos clientes a possibilidade de agendar os seus próprios
horários naqueles estabelecimentos que se encontram mais próximos dele. A
aplicação foi então testada pelo público alvo, sendo ao todo 27 clientes e 5 donos de
estabelecimentos de beleza. Foi estabelecido um certo período de tempo para que
utilizassem a aplicação e, em seguida, foram convidados a responder um breve
questionário acerca da experiência que tiveram durante o contato com a mesma.

Foram elaborados dois questionários distintos, um específico para os clientes


e o outro para os donos dos estabelecimentos com o objetivo de avaliar a aplicação
por dois ângulos diferentes. Primeiramente serão apresentados os resultados do
questionário destinado aos clientes, incluindo as perguntas feitas, através das
figuras que se seguem:
72

Figura 30: Pergunta de número 1 feita aos clientes.

Fonte: do próprio autor.

Figura 31: Pergunta de número 2 feita aos clientes.

Fonte: do próprio autor.


73

Figura 32: Pergunta de número 3 feita aos clientes.

Fonte: do próprio autor.

Figura 33: Pergunta de número 4 feita aos clientes.

Fonte: do próprio autor.


74

Nas figuras a seguir tem-se os dados obtidos através do questionário destinado


aos donos dos estabelecimentos que utilizaram a aplicação.

Figura 34: Pergunta de número 1 feita aos donos.

Fonte: do próprio autor.

Figura 35: Pergunta de número 2 feita aos donos.


75

Fonte: do próprio autor.

Figura 36: Pergunta de número 3 feita aos donos.

Fonte: do próprio autor.

Figura 37: Pergunta de número 4 feita aos donos.


76

Fonte: do próprio autor.

Após os testes com a aplicação pelo público alvo, pode-se constatar que:

 Grande maioria dos clientes (81,5%) e donos (80%) de estabelecimentos do


setor de beleza consideram ótima a ideia do aplicativo.
 A maioria dos clientes (88,9%) utilizariam o aplicativo desenvolvido para efetuar
agendamentos em estabelecimentos de sua preferência.
 A maior parte dos clientes (77,8%) acham que com a utilização do aplicativo
diminuiriam os atrasos dos horários dos serviços.
 Grande parte dos clientes (92,6%) gostariam que os estabelecimentos
frequentados por eles disponibilizassem o agendamento de horário pelo
aplicativo.
 A maioria dos donos (80%) acham que o aplicativo poderia trazer benefícios
aos seus estabelecimentos.
 A maior parte dos donos (60%) acredita que o aplicativo pode aumentar o grau
de satisfação de seus clientes.
 Todos os donos (100%) entrevistados teriam interesse em adquirir os serviços
prestados pelo aplicativo.

A aplicação desenvolvida proporcionará aos clientes de estabelecimentos do


setor de beleza uma maneira mais rápida e fácil de efetuar o agendamento de
serviços ao passo que oferecerá aos donos destes estabelecimentos um meio
mais eficiente para o controle destes agendamentos.
77

CONSIDERAÇÕES FINAIS

Através dos estudos contidos neste trabalho, foram expostas as possíveis


vantagens do desenvolvimento de uma aplicação Android para dispositivos móveis
voltada para estabelecimentos do setor de beleza que permita aos usuários efetuarem
seus próprios agendamentos de serviços.

A partir da métrica da pesquisa realizada, para se chegar ao objetivo geral


dessa monografia foram elaborados alguns objetivos específicos que se seguem:

Realizar pesquisas bibliográficas sobre dispositivos móveis, a plataforma


Android, linguagens de programação, bancos de dados, metodologias e
ferramentas de desenvolvimento a fim de encontrar os meios mais adequados
para o desenvolvimento:

Visto que são conhecimentos essenciais a serem adquiridos para que seja possível a
produção de um software com qualidade e que atenda aos fins para os quais foi
desenvolvido.

Levantar requisitos junto a donos/gerentes de estabelecimentos do setor


de beleza:

Através de breves entrevistas foram definidos os requisitos quanto às funcionalidades


que foram desenvolvidas para o aplicativo.

Efetuar testes extensos a fim de extinguir falhas do aplicativo:

Testes realizados na busca por falhas foram essenciais para o perfeito funcionamento
do aplicativo.
78

Visto que a pergunta investigativa do trabalho se baseava no desenvolvimento


de uma aplicação para dispositivos Android voltado para estabelecimentos do setor
de beleza, foram realizados alguns testes a fim de avaliar o desempenho da aplicação
para que se pudesse validar ou não as hipóteses propostas.

Hipótese 0: Não seria viável o desenvolvimento de um aplicativo para


dispositivos móveis que disponibilize buscas e agendamento de atendimentos
para estabelecimentos do setor de beleza e cuidados pessoais, pois não
existiria a necessidade de mercado do mesmo.

Esta primeira hipótese não foi validada, uma vez que através de breves e
informais questionários constatou-se a necessidade de uma aplicação para este fim
tanto por parte de clientes como por parte dos donos/gerentes destes
estabelecimentos.

Hipótese 1: O aplicativo para dispositivos móveis não traria benefício


algum para os estabelecimentos que o utilizarem.

Esta segunda hipótese também não foi validada, já que a aplicação fornece
um meio mais eficiente para administrar e acompanhar os agendamentos, tornando
esse processo mais simples para o cliente aumentando consequentemente o seu grau
de satisfação com os serviços prestados.

Hipótese 2: O aplicativo para dispositivos móveis poderia não se mostrar


mais eficiente do que o controle manual para agendamento de atendimentos
comumente utilizado pelos estabelecimentos.
Esta terceira hipótese também não foi validada, dado que o controle manual
citado foi depreciado pelos donos/gerentes dos estabelecimentos consultados por se
tratar de um modo pouco eficiente e altamente suscetível a erro humano, tornando-o
pouco confiável.

Hipótese 3: Não seria viável o desenvolvimento do aplicativo, pois o


mesmo poderia não ser mais eficiente na procura de estabelecimentos do que
os métodos comuns de marketing utilizados.

A hipótese acima, tal como as anteriores também não foi validada, devido ao
fato de a aplicação fornecer uma visibilidade superior aos meios de marketing
79

utilizados, já que o perfil do estabelecimento está disponível para visitas de todos os


usuários da aplicação.

Hipótese 4: Seria viável o desenvolvimento do aplicativo e com a sua


possível utilização os estabelecimentos poderiam aumentar a sua clientela,
melhorando o atendimento e aumentando o grau de satisfação de seus clientes
e também a visibilidade de sua empresa.

Esta última hipótese foi validada, visto que através da aplicação os


estabelecimentos fornecerão ao cliente uma maneira mais cômoda e eficiente para
efetuar os agendamentos de serviço e diminuindo o atraso de horários aumentando
por consequência a sua satisfação. Além é claro de que oferecer este tipo de serviço
de agendamento pode se tornar um diferencial para o negócio, trazendo mais clientes.

Tendo como resultado, ou seja, tendo por conclusão desse trabalho o


desenvolvimento de uma aplicação Android funcional e eficiente, trazendo benefícios
aos estabelecimentos que o utilizarem tais como o aumento de seus clientes e seu
grau de satisfação, um meio mais eficiente para administrar e acompanhar o
agendamento de horários, e o aumento de sua visibilidade.

Pode-se sugerir para futuros trabalhos a adaptação desta aplicação para outras
plataformas móveis, a implementação de pagamentos de serviços e o
desenvolvimento de módulos básicos para gerência de outros setores tais como
financeiro e estoque.
80

REFERÊNCIAS

ABLESON, W. Frank; SEM, Robi; KING, Chris. Android em ação. 3. Rio de Janeiro:
Elsevier Editora Ltda. 2012. 656p.

ALVES, Willian Pereira. Construindo uma Aplicação Web Completa com PHP e
MySQL. 1. São Paulo: Novatec Editora Ltda., 2017, 516p. Disponível em: <
https://www.novatec.com.br/livros/aplicacao-web-completa-com-PHP-MySQL/>
Acesso em 23 mai. 2017.

ANDROID STUDIO. Guia do usuário. Disponível em: <


https://developer.9android.com/studio/run/managing-avds.html?hl=pt-br> Acesso
em 27 ago. 2017.

BASSETT, Lindsay. Introdução ao JSON: Um guia para JSON que vai direto ao
ponto. 1. São Paulo: Novatec Editora Ltda. 2015. 152p. Disponível em:
<https://www.livrariacultura.com.br/p/livros/informatica-e
tecnologia/programacao/introducao-ao-json-46064199?id_link=8787> Acesso em
25 ago. 2017.

BEAUTY, Carreira. Blog do Profissional de Beleza. Como é o mercado de beleza no


Brasil. 2017. Disponível em: <http://blog.carreirabeauty.com/como-e-o-mercado-de-
beleza-no-brasil/#.WRDCDeXyvIU> Acesso em 15 mai. 2017.

BURD, Barry. Java para Leigos. 5. Rio de Janeiro: Alta Books. 2013. 424p.

CAMPOMORI, Cleber. Precisamos falar sobre TypeScript. São Paulo: Treina Web.
2017. Disponível em: < https://www.treinaweb.com.br/blog/precisamos-falar-sobre-
o-typescript/> Acesso em 25 ago. 2017.

CANAL TECH. O que é servidor Apache?. s/d. Disponível em: <


https://canaltech.com.br/internet/O-que-e-servidor-Apache/> Acesso em 26 ago.
2017.
81

CIRIACO, Douglas. O que é API?. 2009. Disponível em: <


https://www.tecmundo.com.br/programacao/1807-o-que-e-api-.htm> Acesso em 28
ago. 2017.

CORDEIRO, Fillipe. Genymotion: Um Ótima Alternativa ao AVD. 2017. Disponível


em: < http://www.androidpro.com.br/genymotion/> Acesso em 28 ago. 2017.

COSTA, Daniel Gouveia. Java em Rede: Recursos Avançados de Programação.


Rio de Janeiro: Brasport Livros e Multimídia Ltda. 2008. 312p.

COSTA, Rodrigo Gonçalves Porto. Universo Java: Domine os Principais Recursos


Oferecidos Por Esta linguagem De Programação. 1. São Paulo: Digerati Books.
2008. 272p.

CRIS, Robison. Desenvolvimento Android utilizando a IDE Android Studio. 2015.


Disponível em: < http://www.devmedia.com.br/desenvolvimento-android-utilizando-
a-ide-android-studio/33872> Acesso em 24 ago. 2017.

DINO; Exame.com – Negócios. Revista Exame. Indústria de Cosméticos dribla crise


e projeta crescimento. 2016. Disponível em:
<http://exame.abril.com.br/negocios/dino/industria-de-cosmeticos-dribla-crise-e-
projeta-crescimento-dino890103433131/> Acesso em 10 mai. 2017.

DOUGLAS, Allan. Introdução à Google Maps API. 2015. DevMedia. Disponível em:
< http://www.devmedia.com.br/introducao-a-google-maps-api/26967> Acesso em
29 ago. 2017.

DURAES, Ramon. Desenvolvendo para Web Usando o Visual Studio 2008. 1. Rio
de Janeiro: Brasport. 2008. 328p. Disponível em: <
https://www.saraiva.com.br/desenvolvendo-para-web-usando-o-visual-studio-2008-
2612200.html> Acesso em 24 ago. 2017.

ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de Banco de Dados. 4. São


Paulo: Person Education do Brasil Ltda., 2005. 724 p.

EMBELLEZE, Instituto. O mercado da beleza. s/d. Disponível em:


<http://www.smzto.com.br/institutoembelleze/mercado.html> Acesso em 11
mai.2017.
82

FERNANDES, MACHADO. Requisitos em Projetos de Software e de Sistemas de


Informação. 1. São Paulo: Novatec Editora Ltda. 2017. 280p. Disponível em:
<https://www.saraiva.com.br/requisitos-em-projetos-de-software-e-de-sistemas-de-
informao-9739529.html?pac_id=123134> Acesso em 15 set. 2017.

FLANAGAN, David. JavaScript: O Guia Definitivo. 6. Porto Alegre: Bookman Cia.


Editora Ltda. 6. 2013. 1080p. Disponível em: <
https://www.saraiva.com.br/javascript-o-guia-definitivo-6-ed-2013-4243791.html>
Acesso em 24 ago. 2017.

GARTNER, Incorporation. Says Five of Top 10 Worldwide Mobile Phone Vendors


Increased Sales in Second Quarter of 2016. Egham. 2016. Disponível em: <
http://www.gartner.com/newsroom/id/3415117> Acesso em 17 mai. 2017.

GUEDES, Thiago. Crie aplicações com Angular: O novo framework do Google.


2016. Disponível em: <https://www.saraiva.com.br/crie-aplicacoes-com-angular-
9721785.html> Acesso em 26 ago. 2017.

GUERRA, Eduardo. Design Patterns com Java: Projeto orientado a objetos guiado
por padrões. 1. São Paulo: Casa do Código. 2012. 333p

INKSCAPE. O que é o Inkscape e como posso obtê-lo?. Disponível em:


<https://inkscape.org/pt/> Acesso em 27 ago. 2017.

JETBRAINS, Company. PHPStorm: Lightning-smart PHP IDE. s/l. 2017. Disponível


em: < https://www.jetbrains.com/phpstorm/> Acesso em 23 ago. 2017.

LECHETA, Ricardo R.. Google Android: Aprenda a criar aplicações para dispositivos
móveis com o Android SDK. 5. São Paulo: Novatec Editora Ltda., 2016, 1066p.

__________________. Web Services RESTful: Aprenda a criar web services


RESTful em Java na nuvem do Google. 1. São Paulo: Novatec Editora Ltda., 2015,
432p.

LEITE, Mário. Técnicas de Programação – Uma abordagem Moderna. 1. Rio de


Janeiro: Brasport. 2006. 405p.

LOBO, Edson J. R. Guia prático de engenharia de software. 1. São Paulo: Universo


dos livros Editora Ltda. 2009. 128 p. Disponível em:
83

<https://www.saraiva.com.br/guia-pratico-engenharia-de-software-4080098.html>
Acesso em 10 set. 2017.

LUIS, Tiago. Material Design com Materialize. 2015. Disponível em: <
https://tableless.com.br/material-design-com-materialize/> Acesso em 26 ago.
2017.

MALHERBI, Eduardo. Prototipação de Sistemas utilizando a Ferramenta Balsamiq


Mockup. DevMedia. Disponível em: < http://www.devmedia.com.br/prototipacao-de-
sistemas-utilizando-a-ferramenta-balsamiq-mockup/27232> Acesso em 26 ago.
2017.

MARIADB FOUNDATION. About MariaDB. Disponível em:


<https://mariadb.org/about/> Acesso em 25 mai. 2017.

MAXIM, Bruce R.. Engenharia de Software: Uma abordagem profissional.


8. São Paulo: McGraw-Hill Interamericana do Brasil Ltda., 2016, 933p.

SIX, Jeff. Segurança de aplicativos Android. 1. São Paulo: Novatec Editora Ltda.
2012. 144p.

MELO, Ana Cristina. Desenvolvendo Aplicações com UML 2.2. 3. Rio de Janeiro:
Brasport Livros e Multimídia Ltda. 2010. 340p. Disponível em: <
https://www.saraiva.com.br/desenvolvendo-aplicacoes-com-uml-22-do-conceitual-
a-implementacao-3-ed-2010-3416267.html> Acesso em 16 set. 2017.

MENDES, Douglas Rocha. Programação Java: com Ênfase em Orientação a


Objetos. 1. São Paulo: Novatec Editora Ltda., 2009, 463p. Disponível
em:
<https://novatec.com.br/livros/programacao-java-com-enfase-em-oop/> Acesso em
22 mai. 2017.

MILANI, André. Construindo Aplicações Web com PHP e MySQL. 2. São Paulo:
Novatec Editora Ltda., 2016, 336p. Disponível em: <
https://novatec.com.br/livros/aplicacoes-web-com-php-mysql-2ed/ > Acesso em 23
mai. 2017.

MITI; MITI – Monitoramento de Informações e Inteligência de Mercado. A expansão


do mercado da beleza. 2015. Disponível em: <http://miti.com.br/blog/a-expansao-
do- mercado-da-beleza/> Acesso em 10 mai. 2017.
84

MORAES, Willian Bruno. Construindo aplicações com NodeJS. 1. São Paulo:


Novatec Editora Ltda. 2015. 2016p. Disponível em:
<https://www.saraiva.com.br/construindo-aplicacoes-com-nodejs-
9199804.html?pac_id=123134> Acesso em 26 ago. 2017.

NORONHA, Ana Paula Leite; OLIVEIRA, Saulo Brito de; LEITE, Maria Silene
Alexandre. Aplicação do custeio baseado em atividade (ABC) aos serviços
prestados por um salão de beleza. 2006. Disponível em:
<http://www.abepro.org.br/biblioteca/ENEGEP2006_TR510343_7212.pdf> Acesso
em 11 abr. 2017.

PEREIRA, Caio Ribeiro. Construindo aplicações com NodeJS. 2015. 187p.


Disponível em: < https://www.casadocodigo.com.br/products/livro-apis-nodejs>
Acesso em 27 ago. 2017.

PEREIRA, Lucio Camilo Oliva. SILVA, Michel Lourenço da. Android para
Desenvolvedores. 2. Rio de Janeiro: Brasport Livros e Multimidia Ltda. 2012.
Disponível em: < https://www.livrariacultura.com.br/p/livros/informatica-e-
tecnologia/programacao/android-para-desenvolvedores-15018007> Acesso em 27
ago. 2017.

PRESSMAN, Roger S.. Engenharia de Software. 6. São Paulo: McGraw-Hill


Interamericana do Brasil Ltda., 2006, 720p.

RODRIGUES, Joel. Testando serviços Web API com Postman. s/d. Disponível em:
< http://www.linhadecodigo.com.br/artigo/3712/testando-servicos-web-api-com-
postman.aspx> Acesso em 26 ago. 2017.

SCHMITZ, Daniel. Tudo que você queria saber sobre Git e GitHub, mas tinha
vergonha de perguntar. 2015. Disponível em: <https://tableless.com.br/tudo-que-
voce-queria-saber-sobre-git-e-github-mas-tinha-vergonha-de-perguntar/> Acesso
em 26 ago. 2017.

SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de Banco


de Dados. 5. Rio de Janeiro: Elsevier Editora Ltda., 2006, 781p.

SILVA, José Maria Ferreira da. Como funciona um servidor web. 2012. Disponível
em: < https://www.portaleducacao.com.br/conteudo/artigos/informatica/como-
funciona-um-servidor-web/17165> Acesso em 24 ago. 2017.
85

SOMMERVILLE, Ian. Engenharia de Software. 8. São Paulo: Person Education do


Brasil Ltda., 2007. 552 p.

VAZQUEZ, Carlos Eduardo. SIMÕES, Guilherme Siqueira. Engenharia de


Requisitos: software orientado ao negócio. 1. Rio de Janeiro: Brasport Livros e
Multimídia Ltda. 2016. 328p. Disponível em:
<https://www.livrariacultura.com.br/p/livros/informatica-e-
tecnologia/software/engenharia-de-requisitos-46335315?id_link=8787> Acesso em
15 set. 2017.

WEY, Nicole. Globo.com O portal de notícias da Globo. Revista Pequenas


Empresas Grandes Negócios. 3 Mudanças que vão afetar o mercado de beleza
brasileiro em 2017. 2016. Disponível em:
<http://revistapegn.globo.com/Administracao-de- empresas/noticia/2016/12/3-
mudancas-que-vao-afetar-o-mercado-de-beleza- brasileiro-em-2017.html > Acesso
em 11 abr. 2017.

Você também pode gostar