Escolar Documentos
Profissional Documentos
Cultura Documentos
DOI:10.5748/9788599693131-14CONTECSI/PS-4458
USE OF THE XP AGILE METHODOLOGY FOR SOFTWARE DEVELOPMENT -
CASE STUDY: SOFTWARE FIQUIZ
Francisco Clarck Pinheiro Maciel (Centro Universitário Estácio do Ceará, Ceará, Brasil) -
clarck@yahoo.com.br
Francisco Alves Carneiro (Centro Universitário Estácio do Ceará, Ceará, Brasil) -
alvesfic@gmail.com
Wellington Sousa Aguiar (Centro Universitário Estácio do Ceará, Ceará, Brasil) -
wellington@tecsist.com
Josyane Lannes Florenzano de Souza (Centro Universitário Estácio do Ceará, Ceará,
Brasil) - josyane.souza@estacio.br
0344
14th INTERNATIONAL CONFERENCE ON INFORMATION SYSTEMS & TECHNOLOGY MANAGEMENT - CONTECSI - 2017
1 INTRODUÇÃO
O mundo moderno não poderia existir sem o uso de softwares. Infraestruturas e
serviços nacionais são controlados por sistemas computacionais e a maioria dos produtos
elétricos inclui um computador e um software que o controla. A manufatura e a
distribuição industrial são totalmente informatizadas, assim como o sistema financeiro. A
área de entretenimento, incluindo a indústria da música, jogos de computador, cinema e
televisão, faz uso intensivo de softwares. Portanto, a engenharia de software é essencial
para o funcionamento das sociedades nacionais e internacionais (SOMMERVILLE, 2011).
A engenharia de software estuda e providencia várias metodologias de
desenvolvimento de software. Na atualidade as metodologias ágeis de desenvolvimento de
softwarevêm se fortalecendo como uma metodologia que entrega valor rapidamente ao
cliente.
Esse estudo visa especificar que as perspectivas do produto FIQUIZ são de um
sistema fácil de ser utilizado que possui uma base de dados extensa de questões de provas
de concursos na área de informática, que possibilitará aos seus usuários a customização do
questionário, inclusive permitindo que eles definam a quantidade de questões que desejam
responder naquele momento.
Os usuários possuem a característica de serem interessados na área de informática,
área esta que exige que seus seguidores se atualizem constantemente. A alta concorrência
nos concursos públicos também exige que os candidatos estejam cada vez mais bem
preparados.
Não é requisito deste sistema a interação com outros sistemas, pois possuímos a
filosofia de autossuficiência do nosso software.
O sucesso deste sistema também depende de uma estrutura física que possibilite um
bom desempenho em aceitar requisições, processar e responder de forma rápida aos seus
utilizadores.
A metodologia ágil XP (eXtremeProgramming) será utilizada para nortear o
desenvolvimento do projeto.
Turban (2013), ressalta a importância de ser uma empresa ágil, aquela que tem
capacidade de se adaptar rapidamente, nunca foi tão grande quanto agora em função da
luta pela recuperação econômica e por causa dos avanços da tecnologia móvel. Adverte
ainda que as organizações dependem da Tecnologia da Informação para poderem se
adaptar às condições do mercado e ganhar uma vantagem competitiva. Essa vantagem
competitiva tem vida curta se os concorrentes puderem reproduzi-la rapidamente.
Nenhuma vantagem dura muito tempo.
Assim, as empresas precisam atualizar-se, desenvolver-se e/ou implantar novos
Sistemas de Informação para se manterem na competição.
2 OBJETIVOS
2.1. Objetivo Geral
0345
14th INTERNATIONAL CONFERENCE ON INFORMATION SYSTEMS & TECHNOLOGY MANAGEMENT - CONTECSI - 2017
3 METODOLOGIA
Esta pesquisa utilizou uma abordagem de natureza qualitativa e experimental, por
ser a mais adequada para investigar uma atividade profissional, e para o tratamento das
evidências obtidas através da pesquisa de campo. Desta forma, pretende-se fazer emergir
as respostas para a questão problema desta pesquisa: “A Metodologia Ágil XP para
desenvolvimento de softwares realmente entrega valor ao cliente de forma diferenciada ?”.
Segundo Creswell (2010), “a pesquisa qualitativa é um meio para explorar e para
entender o significado que os indivíduos ou grupos atribuem a um problema social ou
humano”.
A abordagem qualitativa pesquisa detalhadamente os fenômenos do
ambiente estudado, o pesquisador vive e conhece a realidade deste grupo ou ambiente. Na
pesquisa qualitativa, o pesquisador participa, compreende e interpreta (MICHEL, 2009).
O estudo de caso qualitativo necessita do uso de várias técnicas de coleta de dados
e evidências. Nesta pesquisa os dados foram coletados pela triangulação de:
- Entrevistas informais - coleta das impressões dos desenvolvedores sobre a
utilização da metodologia aplicada.
- Pesquisa documental – foram levantados registros e documentos utilizados na
definição e desenvolvimento do software, e em publicações científicas que abordavam o
assunto.
- Observação direta – durante as visitas de campo foram detectados
comportamentos, atitudes e informações visuais dos locais de trabalho.
O cenário do estudo deu-se a partir da construção de um software utilizando um
notebook HP com processador Intel core i3 e a linguagem de programação Java para
plataforma de internet.O período de construção do software ocorreu de agosto a novembro
de 2016.
A coleta de dados ocorreu por meio de levantamento bibliográfico em livros e
estudos científicos encontrados na Internet que tratava da teoria e das impressões colhidas
dos desenvolvedores que trabalharam no desenvolvimento do aplicativo de questionário
colaborativo denominado FIQUIZ, onde a metodologia Ágil XP foi utilizada para nortear o
desenvolvimento.
A partir da análise de dados construiu-se um software. A construção do software
0346
14th INTERNATIONAL CONFERENCE ON INFORMATION SYSTEMS & TECHNOLOGY MANAGEMENT - CONTECSI - 2017
4 REFERENCIAL TEÓRICO
Segundo Pressman (2011), software de computador é o produto que profissionais
de software desenvolvem e ao qual dão suporte no longo prazo. Abrange programas
executáveis em um computador de qualquer porte ou arquitetura, conteúdos apresentados à
medida que os softwares são executados, informações descritivas tanto na forma impressa
como na virtual, abrangendo praticamente qualquer mídia eletrônica. A engenharia de
software abrange um processo, um conjunto de métodos (práticas) e um leque de
ferramentas que possibilitam aos profissionais desenvolverem software de altíssima
qualidade.
Sommerville (2011),relata que é relativamente fácil escrever programas
computacionais sem usar técnicas e métodos de engenharia de software. Muitas empresas
foram forçadas a desenvolver software à medida que seus produtos e serviços evoluíram.
Elas não usam métodos de engenharia de software no dia a dia. consequentemente, seu
software é frequentemente mais caro e menos confiável do que deveria ser. Precisamos de
educação e treinamento em engenharia de software para solucionar esses problemas.
Pressman ressalta a importância da engenharia de software afirmando que é ela que nos
capacita para o desenvolvimento de sistemas complexos dentro do prazo e com alta
qualidade.
Segundo o autor supracitado, nos dias de hoje, as empresas operam em um
ambiente global, com mudanças rápidas. Assim, precisam responder a novas oportunidades
e novos mercados, a mudanças econômicas e ao surgimento de produtos e serviços
concorrentes. Softwares fazem parte de quase todas as operações de negócios, assim,
novos softwares são desenvolvidos rapidamente para obterem proveito de novas
oportunidades e responder às pressões competitivas. O desenvolvimento e entrega rápidos
são, portanto, o requisito mais crítico para o desenvolvimento de sistemas de software.
Muitas empresas estão dispostas a trocar a qualidade e o compromisso com requisitos do
software por uma implantação mais rápida do software de que necessitam.
ParaSommerville (2011), os processos de desenvolvimento de software que
planejam especificar completamente os requisitos e, em seguida, projetar, construir e testar
o sistema não estão adaptados ao desenvolvimento rápido de software. Com as mudanças
nos requisitos ou a descoberta de problemas de requisitos, o projeto do sistema ou sua
implementação precisa ser refeito ou retestado. Como consequência, um processo
convencional em cascata ou baseado em especificações costuma ser demorado, e o
software final é entregue ao cliente bem depois do prazo acordado.
A insatisfação com as abordagens pesadas da engenharia de software levou um
grande número de desenvolvedores de software a proporem, na década de 1990, novos
‘métodos ágeis’. Estes permitiram que a equipe de desenvolvimento focasse no software
em si, e não em sua concepção e documentação. Métodos ágeis, universalmente, baseiam-
se em uma abordagem incremental para a especificação, o desenvolvimento e a entrega do
software. Eles são mais adequados ao desenvolvimento de aplicativos nos quais os
requisitos de sistema mudam rapidamente durante o processo de desenvolvimento.
Destina-se a entregar o software rapidamente aos clientes, em funcionamento, e estes
0347
14th INTERNATIONAL CONFERENCE ON INFORMATION SYSTEMS & TECHNOLOGY MANAGEMENT - CONTECSI - 2017
podem, em seguida, propor alterações e novos requisitos a serem incluídos nas iterações
posteriores do sistema. Têm com objetivo reduzir a burocracia do processo, evitando
qualquer trabalho de valor duvidoso de longo prazo e qualquer documentação que
provavelmente nunca será usada.
Os processos de desenvolvimento rápido de software são concebidos para produzir,
rapidamente, softwares úteis. O software não é desenvolvido como uma única unidade,
mas como uma série de incrementos, cada incremento inclui uma nova funcionalidade do
sistema. Embora existam muitas abordagens para o desenvolvimento rápido de software,
elas compartilham algumas características fundamentais como: Os processos de
especificação, projeto e implementação são intercalados. Não há especificação detalhada
do sistema, e a documentação do projeto é minimizada ou gerada automaticamente pelo
ambiente de programação usado para implementar o sistema. O sistema é desenvolvido em
uma série de versões.
Os métodos ágeis são métodos de desenvolvimento incremental em que os
incrementos são pequenos e, normalmente, as novas versões do sistema são criadas e
disponibilizadas aos clientes a cada duas ou três semanas. Elas envolvem os clientes no
processo de desenvolvimento para obter feedback rápido sobre a evolução dos requisitos.
Assim, minimiza-se a documentação, pois se utiliza mais a comunicação informal do que
reuniões formais com documentos escritos.
Está disponível na internet o Manifesto para Desenvolvimento Ágil de software que
relata:
"Estamos descobrindo maneiras melhores de desenvolversoftwares,
fazendo-o nós mesmos e ajudando outros afazerem o mesmo. Através
deste trabalho, passamos a valorizar:
Indivíduos e interações mais que processos e ferramentas.
Software em funcionamento mais que documentação abrangente.
Colaboração com o cliente mais que negociação de contratos
Responder a mudanças mais que seguir um plano, ou seja, mesmo
havendo valor nos itens à direita,valorizamos mais os itens à
esquerda."Beck, Kent et al. (2001)
0348
14th INTERNATIONAL CONFERENCE ON INFORMATION SYSTEMS & TECHNOLOGY MANAGEMENT - CONTECSI - 2017
0349
14th INTERNATIONAL CONFERENCE ON INFORMATION SYSTEMS & TECHNOLOGY MANAGEMENT - CONTECSI - 2017
Figura 1 - Práticas XP
Fonte: Teles (2014: 31)
5 O APLICATIVO FIQUIZ
5.1. Introdução
5.1.1. Escopo
0350
14th INTERNATIONAL CONFERENCE ON INFORMATION SYSTEMS & TECHNOLOGY MANAGEMENT - CONTECSI - 2017
5.2. Posicionamento
0351
14th INTERNATIONAL CONFERENCE ON INFORMATION SYSTEMS & TECHNOLOGY MANAGEMENT - CONTECSI - 2017
Deitel (2016) diz que de acordo com um estudo realizado pela Gartner, os
dispositivos móveis continuação a ultrapassar os PCs como dispositivos de computação
principais dos usuários; estima-se que 1,96 bilhão de smartphones e 388 milhões de tablets
serão distribuídos em 2015 — 8,7 vezes o número de PCs. Em 2018, o mercado de
aplicativos móveis deverá alcançar US$ 92 bilhões. Isso está criando oportunidades
profissionais significativas para pessoas que programam aplicativos móveis, muitos dos
quais são programados em Java.
Deitel(2016) diz que como a demanda por software novo e mais poderoso está
aumentando, construir softwares de maneira rápida, correta e econômica continua a ser um
objetivo indefinido. Objetos ou, mais precisamente, as classes de onde os objetos vêm são
essencialmente componentes reutilizáveis de software. Há objetos data, objetos data/hora,
objetos áudio, objetos vídeo, objetos automóvel, objetos pessoas etc. Quase qualquer
substantivo pode ser razoavelmente representado como um objeto de software em termos
dos atributos (por exemplo, nome, cor e tamanho) e comportamento (por exemplo,
calcular, mover e comunicar). Grupos de desenvolvimento de software podem usar uma
abordagem modular de projeto e implementação orientados a objetos para que sejam muito
mais produtivos do que com as técnicas anteriormente populares como "programação
estruturada"—programas orientados a objetos são muitas vezes mais fáceis de entender,
corrigir e modificar.
Deitel(2016), no item 1.5.10, diz que para criar as melhores soluções, você deve
seguir um processo de análise detalhado a fim de determinar os requisitos do projeto, isto
é, o que o sistema deve fazer, e desenvolver um design que os atenda, isto é, especificar
como o sistema deve fazê-lo). Se esse processo envolve analisar e projetar o sistema de um
ponto de vista orientado a objetos, ele é chamado de processo de análise e projeto
orientado a objetos. Linguagens como Java são orientadas a objetos. A programação nessa
linguagem, chamada programação orientada a objetos, permite-lhe implementar um projeto
orientado a objetos como sistema funcional.
0352
14th INTERNATIONAL CONFERENCE ON INFORMATION SYSTEMS & TECHNOLOGY MANAGEMENT - CONTECSI - 2017
Quanto ao padrão de projeto DAO para persistência especifica que as classes DAO
representam uma camada própria, e formam um pacote de acesso de dados, algumas vezes
sob o pacote do modelo, algumas vezes um pacote independente e outras vezes parte do
pacote de controladores. O mais comum é mesmo que o pacote de DAO fique subordinado
ao Modelo, mas sem estendê-lo. Assim temos uma separação e relativa independência da
camada de acesso a dados e do Domínio.
0353
14th INTERNATIONAL CONFERENCE ON INFORMATION SYSTEMS & TECHNOLOGY MANAGEMENT - CONTECSI - 2017
0354
14th INTERNATIONAL CONFERENCE ON INFORMATION SYSTEMS & TECHNOLOGY MANAGEMENT - CONTECSI - 2017
0355
14th INTERNATIONAL CONFERENCE ON INFORMATION SYSTEMS & TECHNOLOGY MANAGEMENT - CONTECSI - 2017
0356
14th INTERNATIONAL CONFERENCE ON INFORMATION SYSTEMS & TECHNOLOGY MANAGEMENT - CONTECSI - 2017
6 RESULTADOS OBTIDOS
Aplicou-se a prática XP do "cliente presente", onde para o autor, o orientador foi
tido por cliente, ele informava quais eram as funcionalidades esperadas e que agregariam
mais valor ao aplicativo, tais funcionalidades foram desenvolvidas na ordem de prioridade
estabelecida pelo cliente. A primeira funcionalidade desenvolvida foi cadastro de questões.
Outra prática aplicada foi a de releases curtos, semanalmente apresentava a versão
mais atualizada ao coordenados e de acordo com o feedback do cliente dava andamento ao
desenvolvimento. Desta forma colocava-se em prática também o conceito do Teste de
Aceitação.
Buscou-se pôr em prática o Código Padronizado utilizando interfaces para
estabelecer um contrato de métodos para as classes. Nas primeiras semanas precisou-sede
maior dedicação para a leitura e desenvolvimento, utilizando-se a linguagem Java para
web. Já possuía conhecimento acadêmico e prático em desenvolvimento Java para web,
porém alguns entraves apareceram e buscou-se pôr em prática a integração contínua e
manter o aplicativo sempre funcionando. Realizou-se testes unitários e a refatoração do
código sempre que se julgou necessário. Buscou-se manter os formulários com design
simples o que facilita a vida do cliente e do desenvolvedor. Procurou-se desenvolver as
funcionalidades estritamente necessárias conforme preconizado pela metodologia XP.
Não foi possível exercitar práticas como Programação em Par e Código coletivo
visto que se desenvolveu o software sozinho.
A aplicação dessa metodologia trouxe grandes benefícios para o desenvolvimento,
pois estava sempre entregando valor ao cliente e percebendo sua satisfação através do
feedback. Software funcionando sempre e agregando valor ao cliente foi o principal
resultado obtido na aplicação da metodologia XP nesse projeto de desenvolvimento de
software.
Acredita-se que com uma equipe de cinco a sete pessoas seria possível um maior
aprofundamento na metodologia e na utilização de ferramentas que auxiliam na execução
de suas práticas como a integração contínua e o código coletivo, por exemplo.
7 CONCLUSÕES
Conforme análise e desenvolvimento do aplicativo FIQUIZ conclui-se que o
desenvolvimento de software é uma atividade complexa que envolve dedicação,
conhecimento técnico, conhecimento de metodologias de desenvolvimento, linguagem de
programação, atividades diversas como implementação, teste, integração dentre tantas
outras.
A utilização do XP possibilitou colocar em prática o conhecimento disseminado no
curso de Bacharelado em Sistemas de Informação na busca de realizar o desenvolvimento
de acordo com as metodologias modernas de desenvolvimento iterativo e incremental,
priorizando a entrega de valor ao cliente.
Práticas XP como o cliente presente, ritmo sustentável, código padronizado, entres
outras, tornaram o desenvolvimento melhor e atribuíram qualidade ao software, visto que o
cliente orientava o desenvolvimento constantemente através de feedbacks e recebia em
seguida um release com as funcionalidades que havia julgado que traria maior valor para a
0357
14th INTERNATIONAL CONFERENCE ON INFORMATION SYSTEMS & TECHNOLOGY MANAGEMENT - CONTECSI - 2017
aplicação.
Conclui-se que a aplicação dessa metodologia trouxe grandes benefícios para o
desenvolvimento, pois estava sempre entregando valor ao cliente e percebendo sua
satisfação através do feedback. Software funcionando e agregando valor ao cliente foi o
principal resultado obtido na aplicação da metodologia XP nesse projeto de
desenvolvimento de software.
REFERÊNCIAS BIBLIOGRÁFICAS
BECK, Kent et al. Manifesto para Desenvolvimento Ágil de Software. 2001.
Disponívelem: <http://agilemanifesto.org/iso/ptbr/manifesto.html> Acessado em
28/09/2016.
CRESWELL, J. W. Projeto de pesquisa: Métodos qualitativo, quantitativo e misto. 3ª ed.
Porto Alegre: Ed. Artmed, 2010.
DEITEL, Paul. Java: como programar, 10 ed. Harvey Deitel; São Paulo: Pearson Education
do Brasil, 2016.
MICHEL, Maria Helena. Metodologia e Pesquisa Científica em Ciências Sociais: Um guia
prático para acompanhamento da disciplina e elaboração de trabalhos monográficos. 2ª ed.
São Paulo: Ed. Atlas, 2009.
Netbeans.org disponível em <https://netbeans.org/features/index_pt_BR.html> acessado
em 26/10/2016.
PRESSMAN, Roger S. Engenharia de Software: uma abordagem profissional, 7ª ed. Porto
Alegre: AMGH, 2011. 780 p.
SOMMERVILLE, Ian. Engenharia de Software, 9 ed. São Paulo: Pearson Prentice Hal,
2011.
TELES, Vinícius Manhães. Extreme Programming: aprenda como encantar seus
usuáriosdesenvolvendo software com agilidade e alta qualidade. 1. ed. São Paulo:
Novatec,2014. 328 p.
TURBAN, Efraim. Tecnologia da Informação para Gestão. 8ª. Editora Bookman, 2013.
0358