UNIVERSIDADE FEDERAL DE ALAGOAS
INSTITUTO DE COMPUTAÇÃO
BACHARELADO EM SISTEMAS DE INFORMAÇÃO
ENGENHARIA DE SOFTWARE
FERNANDO ANTÔNIO VASCO DE SOUZA
A manutenção perfectiva como atividade da Engenharia de Software
Os casos WhatsApp Messenger e Waze
Maceió
2016
SUMÁRIO
1. INTRODUÇÃO
2. A ENGENHARIA DE SOFTWARE
3. A MANUTENÇÃO COMO ATIVIDADE DA ENGENHARIA DE
SOFTWARE
4. OS TIPOS DE MANUTENÇÃO NA ENGENHARIA DE SOFTWARE
5. A MANUTENÇÃO PERFECTIVA E O WHATSAPP MESSENGER
5.1. O WhatsApp Messenger
5.2. As mudanças como manutenção perfectiva no WhatsApp
6. A MANUTENÇÃO PERFECTIVA E O WAZE
6.1. O Waze
6.2. As mudanças como manutenção perfectiva no Waze
7. CONCLUSÃO
8. REFERÊNCIAS BIBLIOGRÁFICAS
03
04
04
05
07
07
07
08
08
09
10
11
3
1 INTRODUÇÃO
O presente trabalho se propõe a demonstrar como a engenharia de software pôde ser
útil em dois casos de softwares de sucesso: WhatsApp e Waze.
Inicialmente, são apresentados conceitos básicos do que vem a ser a engenharia de
software, no sentido de área do conhecimento e seus princípios, assim como na definição dela
nos estágios de desenvolvimento dos softwares. Na sequência, é feita uma demonstração de
como a atividade de manutenção de sistemas pode ser considerada parte da engenharia de
software, estando inclusa no ciclo de vida deste.
Em seguida, é demonstrado que tais manutenções não se resumem a correções de
problemas, mas também as de adequação ao ambiente externo, as preventivas e, como ideia
central do trabalho, as perfectivas, ou seja, as de acréscimos de novos recursos de
funcionalidades ao software, estas representando a maioria do custo total do software para o
desenvolvedor.
Por fim, nos quarto e quinto tópicos, após uma breve descrição de cada um dos
aplicativos, é retratado como este tipo de manutenção foi utilizado no WhatsApp Messenger e
Waze, dois dos mais importantes e utilizados do mercado. Para isso, foram relacionadas
diversas mudanças ao longo da evolução de ambos os softwares, mencionando ainda
características presentes no desenvolvimento deles.
4
2 A ENGENHARIA DE SOFTWARE
A engenharia de software é uma área do conhecimento que busca utilizar princípios
relacionados à engenharia na criação de softwares, aumentando a qualidade, reduzindo riscos
e custos, bem como criando processos úteis ao desenvolvimento e manutenção daqueles
sistemas.
Seu conceito engloba os significados de criação, construção, análise, desenvolvimento
e manutenção. Na definição de Friedrich Bauer, na conferência Software Engineering (1969),
“engenharia de software é a criação e a utilização de sólidos princípios de engenharia a fim de
obter software de maneira econômica, que seja confiável e que trabalhe eficientemente em
máquinas reais”.
Sommerville (2007), também a definiu, desta feita como uma disciplina de engenharia
“relacionada com todos os aspectos de produção de software, desde os estágios iniciais de
especificação do sistema até a sua manutenção, ou seja, mesmo depois que este entrar em
operação”.
Se nos dizeres de Bauer temos que um software desenvolvido a partir dos princípios de
engenharia deva ser econômico, confiável e eficiente, a definição de Sommerville é mais útil
ao que esse trabalho propõe. A partir dela, associamos a engenharia de software não somente
à criação de um sistema, mas também alcançamos todas as fases do seu ciclo de vida, inclusive
a manutenção.
3 A MANUTENÇÃO COMO ATIVIDADE DA ENGENHARIA DE SOFTWARE
Um sistema, pode-se assim dizer, possui um ciclo de vida. Este, inicia-se na definição
dos requisitos, encerrando-se no término do seu uso. A NBR ISO/IEC 12207:1998 estabelece
uma estrutura comum para os processos de ciclo de vida de softwares, contendo processos,
atividades e tarefas que “servem para ser aplicadas durante a aquisição de um sistema que
contém software, de um produto de software independente ou de um serviço de software, e
durante o fornecimento, desenvolvimento, operação e manutenção de produtos de software”.
Conforme a norma citada, o ciclo de vida do software possui atividades agrupadas em
cinco processos fundamentais, oito processos de apoio e quatro processos organizacionais.
Dentre tais atividades, importa ao nosso trabalho, neste momento, um dos processos
fundamentais, o de manutenção. Este processo é realizado quando o software é submetido a
modificações no código e na documentação associada em razão de um problema ou por
5
necessidade de melhora ou adaptação. Preserva-se a integridade do produto, mas modificando-
o.
O processo de manutenção define que o mantenedor, organização que realiza o serviço
de manutenção do produto de software, é aquele responsável por gerenciar as modificações do
produto de forma a mantê-lo tanto atualizado como operante. Para Barros (2015), a manutenção
de software pode ser percebida como “um processo evolutivo do software em que a Engenharia
de Software se desdobra na atividade que procura aperfeiçoar ou somar qualidades ao produto
de software, além de corrigir falhas ou brechas de segurança. ”
Assim, é preciso ter em mente que a manutenção não deve ser vista apenas como um
processo responsável por solucionar algo defeituoso, mas sim como um processo que também
ocorre na necessidade de melhora ou adaptação. Bhatt, et al. (2004), considera a manutenção
de software dotada de imprevisibilidade, o que está relacionado à influência de fatores externos
sofrida pelo software. Estes fatores externos são naturalmente imprevisíveis, sendo que sua
ocorrência eleva o esforço despedindo com a atividade de manutenção (figura 1).
Figura 1 – curva de esforço para manutenção de software (adaptação de Bhatt, et al. 2004)
Com mudanças no ambiente, tem-se a necessidade de considera-las e prevê-las para a
manutenção, demandando um esforço diretamente proporcional às alterações na estabilidade
do contexto. São essas alterações que influenciam a realização de atividades de suporte de
usuários, ajustes e melhorias na aplicação.
4 OS TIPOS DE MANUTENÇÃO NA ENGENHARIA DE SOFTWARE
Lientz e Swanson (1980) classificaram as ações de manutenção de software em três
tipos: corretivas, adaptativas e perfectivas.
Manutenções do tipo corretivas buscam corrigir defeitos relacionados à funcionalidade,
incluindo aqui ações emergenciais.
6
Manutenções do tipo adaptativas pretendem adequar a aplicação ao ambiente externo.
Manutenções do tipo perfectivas visam acrescentar novos recursos de funcionalidades
ao software.
Pressman (2006), além de considerar as anteriores, ainda acrescenta mais uma entre os
tipos de atividades de manutenção:
Manutenções do tipo preventivas procuram evitar defeitos futuros, identificando
previamente possíveis fontes de problemas.
Para o Information Technology Research Institute, ELTIS-project, o custo do software
relacionado com a manutenção e evolução vem crescendo exponencialmente, representando
atualmente cerca de 90% do custo total (tabela 1).
Tabela 1 – Custo proporcional de manutenção de software (adaptação de Engholm Jr., 2010)
Ano Proporção de custos de
manutenção de software Definição
2000 >90% Custo de software relacionado à manutenção e
evolução de sistemas/custo total de software
1993 0,75 Manutenção de software/orçamento de sistemas de
informação (em 1000 empresas)
1990 >90% Custo de software relacionado à manutenção e
evolução de sistemas/custo total de software
1990 60-70%
Manutenção de software/orçamento total de
operação de sistemas da informação (Management
Information Systems – MIS)
1988 60-70%
Manutenção de software/orçamento operacional
do total de sistemas de informação gerencial
(Management Information Systems – MIS)
1984 65-75% Esforço gasto na manutenção de sistemas/total
disponível relacionado a engenharia de software
1981 >50% Tempo gasto pela equipe de manutenção/tempo
total (em 487 organizações)
1979 0,67 Custo de manutenção/custo total de software
E ainda, na conhecida pesquisa de Lientz e Swanson (1980) que buscou aferir a maneira
como as organizações tratavam a manutenção de software, concluiu-se que mais de 50% delas,
no ambiente de 487 empresas, eram consideradas manutenções perfectivas. Além disso, outros
estudos, citados por Engholm Jr. (2010) estimam que cerca de 75% dos custos de manutenção
são relativos a fornecer evolução ao software, de maneira adaptativa e evolutiva.
Podemos compreender, portanto, estatisticamente, que o tipo de manutenção de
software mais comum, no sentido de utilização, é aquele que busca melhorar a qualidade do
7
software. Não prevista no documento de requisitos original, ela procura dar um desempenho
mais eficiente, acrescentando novas funcionalidades.
5 A MANUTENÇÃO PERFECTIVA E O WHATSAPP MESSENGER
5.1 O WhatsApp Messenger
Concebido em 2010 nos Estados Unidos como um aplicativo multiplataforma destinado
a smartphones, o WhatsApp Messenger usa a internet para enviar atualmente mensagens de
texto e voz, documentos, imagens, vídeo e localização para outros usuários, já com utilização
de criptografia.
Desde a sua aquisição pelo Facebook em 2014, por 19 bilhões de dólares, o software
passou de 450 milhões de usuários para a marca de um bilhão de usuários ativos em fevereiro
de 2016, podendo ser considerado o mais popular aplicativo do tipo.
No entanto, o comunicador não foi criado assim, com todas essas funcionalidades.
Desde o seu lançamento ele foi agregando mudanças para melhorar do layout à segurança,
graças a fatores externos que influenciavam essas necessidades.
5.2 As mudanças como manutenção perfectiva no WhatsApp
Considerando as manutenções do tipo perfectivas como aquelas que visam acrescentar
novos recursos de funcionalidades ao software, o WhatsApp, quando ainda se tratava de um
exclusivo da plataforma iOS, começava a ganhar as alterações que hoje utilizamos de forma
comum:
Dezembro de 2009, versão 2.3 – Transferência de áudio e imagens passou a ser
permitida. Dependendo da versão do sistema operacional, também era possível
transferir vídeos. Além disso, passou a existir a confirmação de entrega das mensagens,
que era feita por meio de uma letra vermelha, indicando o status desconhecido, enviado
ou entregue.
Novembro de 2010, versão 2.5.12 – Busca no histórico de conversas, encaminhamento
de mensagens, pré-visualização de vídeos.
Fevereiro de 2011, versão 2.6 – Criação de chats em grupo, limitado a cinco pessoas.
Março de 2012 – Já era possível compartilhar a localização.
Agosto de 2013 – Foi lançada a mensagem de voz para o aplicativo.
8
Janeiro de 2015 – Lançada a versão WhatsApp Web como extensão do aplicativo para
smartphone.
Abril de 2016 – Utilização de criptografia de ponta-a-ponta.
Mesmo com uma base de um bilhão de usuários ativos, a impressionante escala de
sucesso do aplicativo foi alcançada por uma pequena equipe. Quando adquirida pelo Facebook,
tinha apenas trinta e cinco engenheiros. Atualmente, emprega cerca de cinquenta engenheiros
de software.
Curiosamente, a companhia construiu seu serviço usando Erlang como linguagem de
programação e FreeBSD como sistema operacional. Apesar de não ser a mais popular, Erlang
pode ser considerada adequada para estabelecer a comunicação de um grande número de
usuários. Diante da escassez de mão de obra para esse tipo de linguagem, Jamshid Mahdavi,
engenheiro de software da companhia, alega que o recrutamento se dá não em busca de
especialistas na área, mas de engenheiros capazes de se adaptar rapidamente a arquitetura
utilizada.
6 A MANUTENÇÃO PERFECTIVA E O WAZE
6.1 O Waze
Com origem em 2006 como um projeto de criação comunitária de um mapa de Israel,
tornou-se Waze em 2008 e hoje é o maior aplicativo de trânsito e navegação do mundo, com
cerca de 50 milhões de usuários ativos mensais, segundo a companhia.
Misturando geolocalização com redes sociais, nele é possível trocar informações sobre
rotas alternativas, pontos de interesse no mapa e acidentes de trânsito. No entanto, sua principal
qualidade está na participação da comunidade de usuários na edição dos mapas. Ele assim
diferencia-se dos demais aplicativos de navegação por coletar informações e aprender com seus
próprios usuários. Estes podem reportar acidentes, congestionamentos, operações policiais,
postos de combustíveis, entre outros dados necessários aos condutores.
Seu crescimento chamou a atenção de empresas como o Facebook, que chegou perto
de comprar a companhia por cerca de um bilhão de dólares em 2013. No entanto, foi a Google
que em junho do mesmo ano adquiriu o aplicativo por um pouco mais de um bilhão de dólares.
9
6.2 As mudanças como manutenção perfectiva no Waze
No mesmo sentido de mudanças perfectivas apresentado anteriormente como aquelas
que buscam o acréscimo de novos recursos e funcionalidades ao aplicativo, o Waze vem sendo
incrementado a cada versão lançada para suas versões disponíveis para Android, BlackBerry,
iOS, Windows Phone, Symbian e Maemo:
Setembro de 2014 – Foi possível aos usuários acrescentar informações sobre empresas
e residências, como fotos, detalhes do lugar, entre outros dados. Também passou a ser
possível adicionar lembretes automáticos de estacionamento, a fim de memorizar o
local onde o veículo foi deixado.
Novembro de 2014 – Foi lançada atualização para informar sobre enchentes ou excesso
de gelo na pista, além de informações sobre o trânsito já na escolha do destino.
Dezembro de 2014 – Adicionada opção de aviso sobre alagamento e enchentes na
estrada, depois de mais de 15 milhões de avisos de riscos climáticos só nos Estados
Unidos, em um ano.
Março de 2015 – Aplicativo passou a ser até 85% mais rápido. Foi adicionada barra de
informação que prevê o tempo de duração de um congestionamento.
Abril de 2015 – Passou a dar informações sobre trânsito pelo Twitter, em São Paulo e
no Rio de Janeiro.
Agosto de 2015 – O aplicativo passou a informar sobre a melhor rota a se seguir diante
do rodízio de veículos na cidade de São Paulo.
Outubro de 2015 – Renovação do design, tornando-o mais limpo e de acesso mais fácil.
Adição de lembretes de saída de acordo com os eventos do calendário do celular.
Redução no consumo de bateria do smartphone.
Março de 2016 – Adicionada a função de exibição do limite de velocidade, onde o
aplicativo informa o limite daquela via junto com a velocidade do veículo.
Na época de sua aquisição pela Google, a empresa possuía pouco menos de cem
funcionários, a maioria em Ra'anana, Israel, e o restante em Palo Alto, California. Atualmente,
o perfil da empresa no site LinkedIn informa que a mesma possui entre 51 e 200 funcionários.
O incremento de funcionalidades do Waze se dá de acordo com sua utilização. Ao se
manter o aplicativo aberto, ele coleta dados de cada trecho percorrido. Ou seja, tem-se uma
importante participação dos usuários na manutenção perfectiva.
10
7 CONCLUSÃO
A verificação das principais mudanças nos softwares WhatsApp Messenger e Waze,
dois dos mais importantes do mercado de comunicadores e navegadores por GPS,
respectivamente, permitem um entendimento prático de como a engenharia de software pode
ser aplicada no desenvolvimento de um aplicativo.
O destaque para a aplicação da manutenção perfectiva nesses dois softwares mostra que
o acréscimo de novos recursos e funcionalidades acabam por aumentar o tempo de vida dos
aplicativos, dando não somente fôlego a eles, mas também mantendo e até aumentando o
número de usuários, como é o caso do WhatsApp Messenger, que superou a casa de um bilhão
de usuários ativos.
O processo evolutivo do desenvolvimento desses aplicativos é guiado pela engenharia
de software, que por meio dela puderam atender demandas de seus usuários que buscavam o
aperfeiçoamento de funcionalidades e a implantação de novos requisitos, tornando assim a
manutenção do software uma das atividades mais importantes.
Por fim, entendeu-se que, para esse tipo de atividade, a participação dos próprios
usuários é essencial, uma vez que a evolução do produto passa pelo feedback fornecido, mesmo
que de forma passiva, como é o caso do Waze. Tais modificações perfectivas tornam a
experiência do usuário mais agradável, a quem o produto final é destinado, dependendo
bastante de tais mudanças para que venha a permanecer em utilização, ou seja, que ele continue
sendo usuário daquele software.
11
8 REFERÊNCIAS BIBLIOGRÁFICAS
ARAÚJO, R. Estudo sobre engenharia de software. Disponível em:
<http://imasters.com.br/artigo/7909/linguagens/estudo-sobre-engenharia-de-software/>.
Acesso em: 9 abr. 2016.
ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. ABNT NBR ISO/IEC 12207:
tecnologia de informação: processos de ciclo de vida de software. Rio de Janeiro, 1998.
BARDIN, N. Blog do Waze [Blog Internet]. Consultado em 9 abr. 2016. Disponível em:
<http://blog-pt.waze.com/>.
BARROS, D. A. M. A engenharia de software no desenvolvimento de um sistema de software
bem sucedido: caso Google Chrome. Maceió, 2015. 11 p. Trabalho não publicado.
BHATT, P., SHROFF, G., MISRA, A.K. Dynamics of Software Maintenance. ACM
SIGSOFT Software Engineering Notes, v. 29, n. 5. 2004.
BOURQUE, P. FAIRLEY, R. E. SWEBOK: guide of the software engeneering body of
knowledge. 3. ed. IEEE Computer Society, 2014. Disponível em:
<https://www.computer.org/web/swebok>. Acesso em: 9 abr. 2016.
ENGHOLM JR., H. Engenharia de software na prática. Novatec, 2010.
HARDAWAR, D. Facebook's Waze acquisition talks hit the brakes. Venture Beat. 29 mai.
2013. Disponível em: <http://venturebeat.com/2013/05/29/facebooks-waze-acquisition-talks-
hit-the-brakes-report/>. Acesso em 10 abr. 2016.
KOUM, J. ACTON, B. Blog do WhatsApp [Blog Internet]. Consultado em 9 abr. 2016.
Disponível em: <http://blog.whatsapp.com/>.
LIENTZ, B. P. SWANSON, E. B. Software maintenance management. Reading, MA:
Addison-Wesley, 1980.
MACÊDO, A. B. L. SPINOLA, R. Ciclos de vida do software. Disponível em:
<http://www.devmedia.com.br/ciclos-de-vida-do-software-artigo-revista-engenharia-de-
software-magazine-36/21099>. Acesso em 9. abr. 2016.
MEDEIROS, H. Princípios da engenharia de software. Disponível em:
<http://www.devmedia.com.br/principios-da-engenharia-de-software/29630>. Acesso em 9.
Abr. 2016.
12
METZ, C. Why WhatsApp only needs 50 engineers for its 900m users. Wired. 15 set. 2015.
Disponível em: <http://www.wired.com/2015/09/whatsapp-serves-900-million-users-50-
engineers/>. Acesso em 10 abr. 2016.
PADUELLI, M. M. Manutenção de software: problemas típicos e diretrizes para uma
disciplina específica. 2007. Dissertação (Mestrado em Ciências de Computação e Matemática
Computacional) – Universidade de São Paulo, São Paulo, SP, 2007.
PARDO, D. Por que o Waze faz tanto sucesso? BBC Brasil. 7 jun. 2015. Disponível em:
<http://www.bbc.com/portuguese/noticias/2015/06/150606_waze_economia_tempo_rb>.
Acesso em 10 abr. 2016.
PEREZ, S. Navigation app Waze gets a huge redesign – now less cluttered, but still needs
improvement. Tech Crunch. 19 out. 2015. Disponível em:
<http://techcrunch.com/2015/10/19/navigation-app-waze-gets-a-huge-redesign-now-less-
cluttered-but-still-needs-improvement/>. Acesso em 10 abr. 2016.
PRESSMAN, R. S. Engenharia de software. 6. ed. McGraw-Hill, 2006.
________. Engenharia de software: uma abordagem profissional. 7. ed. Porto Alegre:
AMGH, 2011.
REIS, L. M. T. Tipos de manutenção de software. Disponível em:
<http://www.leandromtr.com/tecnologia-informacao/tipos-de-manutencao-de-software/>.
Acesso em 10 abr. 2016.
SILVA, L. S. P. A essencialidade da engenharia de software. Disponível em:
<http://www.devmedia.com.br/a-essencialidade-da-engenharia-de-software/24833>. Acesso
em 9 abr. 2016.
SPINOLA, R. Manutenção de software: definições e dificuldades. Disponível em:
<http://www.devmedia.com.br/manutencao-de-software-definicoes-e-dificuldades-artigo-
revista-sql-magazine-86/20402>. Acesso em 9 abr. 2016.
SOFTWARE ENGINEERING. 1968. Garmisch, Alemanha. Report on a conference
sponsored by the Nato Science Committee. Bruxelas, Bélgica: Nato, 1969. 231 p.
SOMMERVILLE, I. Engenharia de software. 8. ed. São Paulo: Pearson Addison-Wesley,
2007.
13
STATT, N. WhatsApp has grown to 1 billion users. The Verge. 1 fev. 2016. Disponível em:
<http://www.theverge.com/2016/2/1/10889534/whats-app-1-billion-users-facebook-mark-
zuckerberg>. Acesso em 10 abr. 2016.
WAGNER, J. Padrões de projeto de software baseado em componentes aplicados a um sistema
java para academia de musculação. Disponível em: <http://www.devmedia.com.br/padroes-de-
projeto-de-software-baseado-em-componentes-aplicados-a-um-sistema-java-para-academia-
de-musculacao/19138>. Acesso em 10 abr. 2016.
WAZE. In: LINKEDIN. 2016. Disponível em:
<https://www.linkedin.com/company/waze?trk=tyah>. Acesso em: 10 abr. 2016.
WAZE. In: WIKIPEDIA, the free encyclopedia. Flórida: Wikimedia Foundation, 2016.
Disponível em: <https://en.wikipedia.org/wiki/Waze>. Acesso em: 10 abr. 2016.
WHATSAPP. In: WIKIPEDIA, the free encyclopedia. Flórida: Wikimedia Foundation, 2016.
Disponível em: <https://en.wikipedia.org/wiki/WhatsApp>. Acesso em: 10 abr. 2016.