A manutenção perfectiva como atividade da Engenharia de Software - Os casos WhatsApp Messenger e...

13
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

description

A manutenção perfectiva como atividade da Engenharia de SoftwareOs casos WhatsApp Messenger e Waze

Transcript of A manutenção perfectiva como atividade da Engenharia de Software - Os casos WhatsApp Messenger e...

Page 1: A manutenção perfectiva como atividade da Engenharia de Software - Os casos WhatsApp Messenger e Waze

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

Page 2: A manutenção perfectiva como atividade da Engenharia de Software - Os casos WhatsApp Messenger e Waze

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

Page 3: A manutenção perfectiva como atividade da Engenharia de Software - Os casos WhatsApp Messenger e Waze

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.

Page 4: A manutenção perfectiva como atividade da Engenharia de Software - Os casos WhatsApp Messenger e Waze

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

Page 5: A manutenção perfectiva como atividade da Engenharia de Software - Os casos WhatsApp Messenger e Waze

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.

Page 6: A manutenção perfectiva como atividade da Engenharia de Software - Os casos WhatsApp Messenger e Waze

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

Page 7: A manutenção perfectiva como atividade da Engenharia de Software - Os casos WhatsApp Messenger e Waze

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.

Page 8: A manutenção perfectiva como atividade da Engenharia de Software - Os casos WhatsApp Messenger e Waze

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.

Page 9: A manutenção perfectiva como atividade da Engenharia de Software - Os casos WhatsApp Messenger e Waze

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.

Page 10: A manutenção perfectiva como atividade da Engenharia de Software - Os casos WhatsApp Messenger e Waze

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.

Page 11: A manutenção perfectiva como atividade da Engenharia de Software - Os casos WhatsApp Messenger e Waze

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.

Page 12: A manutenção perfectiva como atividade da Engenharia de Software - Os casos WhatsApp Messenger e Waze

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.

Page 13: A manutenção perfectiva como atividade da Engenharia de Software - Os casos WhatsApp Messenger e Waze

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.