Prévia do material em texto
ARQUITETURA DE SISTEMAS II Ramon dos Santos Lummertz Projeto de software para dispositivos móveis Objetivos de aprendizagem Ao final deste capítulo, você deve apresentar os seguintes aprendizados: Identificar as necessidades de desenvolvimento de um software para dispositivo móvel. Discutir o desenvolvimento de um software para dispositivo móvel. Identificar ferramentas de desenvolvimento de projeto. Introdução Os dispositivos móveis são comuns atualmente; já faz alguns anos que os smartphones passaram a ser mais utilizados do que os telefones comuns, por exemplo. Os dispositivos mobile não se restringem a smartphones, podendo ser relógios, roupas, veículos, etc. Por isso, ao pensarmos em software, devemos sempre considerar os softwares mobile. Neste capítulo, você vai identificar as necessidades de desenvolvi- mento de software móvel, analisando também as etapas e as ferramentas aplicadas no desenvolvimento de um projeto de software móvel. Necessidades de desenvolvimento de softwares para dispositivos móveis Diversas características do desenvolvimento de software são comuns a qual- quer plataforma, seja desktop, Web ou mobile. Entretanto, os dispositivos móveis têm características peculiares, que tornam o desenvolvimento de software para smartphones ou outros dispositivos mais complexo. Ao se pensar em soluções de softwares móveis, temos que considerar aspectos como a experiência de usuário, que deve ser tão boa quanto ou melhor do que a de um software para desktop ou Web. Soluções móveis se caracterizam como grandes desafios para os engenheiros de software. Isso se deve a fatores como a gama de plataformas móveis disponíveis, os recursos de hardware de dispositivo, os tamanhos de telas ou, até mesmo, a ausência de tela. Junto a esses fatores, deve-se considerar aspectos como as solu- ções de segurança, as possibilidades de mudar de rede durante o uso do software e o uso adequado de bateria e de dados, conforme apontam Pressman e Maxin (2016). A Figura 1 mostra alguns itens que podem contar com software mobile. Figura 1. Exemplos de dispositivos móveis. Fonte: Adaptadas de Kreasi Garis/Shutterstock.com; Djent/Shutterstock.com; Notbad/Shutterstock. com; Matsabe/Shutterstock.com; Derter/Shutterstock.com. Considerações técnicas Há muitas considerações técnicas relacionadas ao desenvolvimento de software móvel. Veja algumas dessas considerações a seguir. Diversidade de plataformas: existem diversas plataformas de hardware e software. Habitualmente, uma mesma aplicação deve ou precisa ser executada em diferentes plataformas — por exemplo, iOS e Android. Dessa forma, o custo de desenvolvimento aumenta, o que pode causar dificuldade no gerenciamento de configuração; os motivos para isso se devem, em parte, às diferenças entre hardware e software dispo- níveis. É necessário também considerar as diferentes estruturas de desenvolvimento e linguagens de programação. Atualmente, as prin- cipais plataformas de aplicativos móveis (iOS e Android) podem ser desenvolvidas de forma nativa em quatro linguagens: Java, Kotlin para Android, Object C e Swift para iOS. Além disso, há vários frameworks para desenvolvimento híbrido que usam C#, JavaScript e Dart como linguagens. Outro ponto a se considerar em relação às múltiplas pla- Projeto de software para dispositivos móveis2 taformas são os emuladores e simuladores de devices, que podem não representar com exatidão o comportamento no aparelho. Simuladores e emuladores têm um objetivo em comum: a imitação de um sistema por outro sistema. Entretanto, os dois fazem isso de formas diferentes. O emulador reproduz de forma fidedigna o hardware e o software de um device. O simulador também reproduz de forma fidedigna o software, mas não necessariamente o hardware. Por exemplo, o AVD do Android Studio emula diferentes ambientes com os recursos, enquanto o Xcode simula o ambiente usando recursos de processamento e memória do computador. Na prática, uma aplicação no simulador pode estar com fluidez por consumir mais memória do que um device originalmente possui. Lojas de aplicativos: as stores de aplicativos também representam uma dificuldade técnica, visto que cada plataforma possui requisitos e padrões para que os aplicativos sejam aceitos. Ciclos: os ciclos de desenvolvimento de aplicações móveis tendem a ser muito curtos; por isso, faz-se uso de metodologias ágeis para a construção de aplicativos. Interface, interações e contexto: os dispositivos móveis possuem uma grande variedade de telas e de possibilidades de interação (p. ex., voz, gestos e movimentos), além de utilizarem o contexto para reconheci- mento de padrões (p. ex., aumentar o brilho em ambientes muito claros ou balançar o device para abrir a câmera). O contexto pode enriquecer a experiência do usuário; como exemplos, podemos citar as funções de integração do GPS para indicar uma melhor rota para o trabalho e de desligar a tela do celular quando o colocamos no ouvido. Contexto é o conjunto de elementos físicos ou situacionais que ajudam o receptor da mensagem a compreendê-la. Por exemplo, detectar que a luminosidade está baixa e aumentar o brilho da tela, ou usar o GPS e a câmera para criar um jogo, como o Pokémon GO. 3Projeto de software para dispositivos móveis Limitações computacionais e bateria: os aplicativos móveis podem interagir com outros recursos computacionais, e essa interação pode sobrecarregar os dispositivos móveis, tanto no armazenamento quanto na velocidade de processamento e na energia consumida. Você, como desenvolvedor de software, deve se lembrar de que os recursos do device são limitados e que suas aplicações devem ser aprimoradas para reduzir as demandas impostas ao processador e aos recursos de memória. O uso de computação em nuvem para processar parte das funcionalidades do aplicativo deve sempre ser considerado. Aplicativos que consomem muita energia geralmente não ficam muito tempo em um device; por isso, a vida da bateria é uma das limitações mais importantes nos aplicativos móveis. Serviços externos, privacidade e segurança: o uso de computação em nuvem e Web services é importante para reduzir a carga de pro- cessamento. Entretanto, isso aumenta os riscos de a aplicação quebrar devido à negação de serviços, à indisponibilidade de acesso, ao uso de dados em excesso e à falta de segurança no tráfego de dados. Além disso, os dados devem ser protegidos localmente contra softwares mal- -intencionados. Achar um meio termo entre facilidade, privacidade e segurança na aplicação é uma tarefa árdua. Testes: testar aplicativos é complexo, devido à gama de dispositivos e à lista de considerações técnicas. Os aplicativos móveis são diferentes de aplicativos para desktop. Seis tipos de testes devem ser executados em aplicações móveis, independentemente da plataforma utilizada. Veja-os a seguir. ■ Usabilidade: foco na experiência do usuário, na facilidade e na pos- sibilidade de realizar as ações pretendidas. ■ Funcionalidade: com o intuito de se certificar de que todos os requi- sitos foram implementados e funcionam da maneira como deveriam. ■ Compatibilidade: visa a garantir que o aplicativo interaja e se co- munique com o sistema operacional, o hardware e todos os tipos de rede de maneira satisfatória. ■ Desempenho: visa a eliminar lentidão ou travamento do aplicativo. ■ Mobilidade: verificação da capacidade de comunicação do aplicativo com outros aplicativos e redes. ■ Sincronismo: é necessário quando utilizamos a tecnologia de arma- zenamento de dados na nuvem; você deve se certificar de que não há perdas excessivas de pacotes e reenvios. Projeto de software para dispositivos móveis4 Desenvolvimento de software para dispositivos móveis Pressman e Maxin (2016) descrevem o processo de desenvolvimento de software móvel como uma espiral de seis etapas, conforme mostra a Figura 2. Figura 2. Processo de desenvolvimento de software móvel.As seis etapas propostas por Pressman e Maxin (2016) são as seguintes. Formulação: conforme Pressman e Maxin (2016), essa etapa abrange o projeto arquitetural e o projeto de navegação. As metas, os recursos e as funções do aplicativo móvel são identificadas para determinar a abrangência e o tamanho do primeiro incremento. Nessa etapa, você busca responder questões como “qual é a necessidade desse software?”, “o que esse software vai resolver?” e “quem vai usar?”. 5Projeto de software para dispositivos móveis Planejamento: nessa etapa, pretende-se elucidar os custos envolvidos e os riscos que o projeto possui. São estabelecidos o cronograma e a documentação dos próximos incrementos. Análise: etapa que visa à especificação dos requisitos do software móvel e dos conteúdos necessários. Inclui as análises de conteúdo, de interação, funcional e de configuração. Engenharia: envolve a análise dos projetos de interface, de arquitetura, de navegação e de conteúdo. Nessa etapa, você deve avaliar as restrições impostas pelos dispositivos e as tecnologias envolvidas. Implementação e testes: nessa etapa, são realizadas a codificação e os testes já mencionados. Avaliação do usuário: teste realizado pelos usuários para avaliar a usabilidade e a acessibilidade. Após completar o primeiro ciclo, inicia-se a formulação da próxima interação do software móvel, também chamada de incremento. Uma das características dos softwares móveis é que os usuários devem ser capazes de executar ações com facilidade. Agilidade e acesso rápido também são requisitos desses softwares. A satisfação do usuário móvel se dá a partir de seis importantes fatores de qualidade: funcionalidade; confiabilidade; usabilidade; eficiência; facilidade de manutenção; portabilidade. Segundo Pressman e Maxin (2016, p. 398), “Os usuários de dispositivos móveis esperam que o mínimo de tempo de aprendizado seja necessário para dominar o aplicativo móvel”. Assim, um bom projeto de interface se faz necessário. Em 1990, os cientistas da computação Jakob Nielsen e Rolf Molich propuseram os 10 princípios gerais do design de interface do usuário, que garantem uma boa usabilidade. Assim, as chamadas heurísticas de Nielsen são as seguintes. Projeto de software para dispositivos móveis6 1. Visibilidade do status do sistema. 2. Correspondência entre o sistema e o mundo real. 3. Liberdade de controle fácil para o usuário. 4. Consistência e padrões. 5. Prevenção de erros. 6. Reconhecimento, em vez de memorização. 7. Flexibilidade e eficiência de uso. 8. Estética e design minimalistas. 9. Ajudar o usuário a reconhecer, diagnosticar e recuperar erros. 10. Ajuda e documentação. Saiba mais sobre as 10 heurísticas de Nielsen acessando o link a seguir. https://qrgo.page.link/5LzgT Os softwares móveis exigem que os desenvolvedores entendam com maior exatidão as reais necessidades do usuário, para entregar funcionalidades úteis e de fácil aprendizagem. Conforme Pressman e Maxin (2016), o desen- volvedor, para atender às expectativas do usuário, deve tentar responder às seguintes perguntas. A interface do usuário é consistente entre aplicativos? O dispositivo pode operar em conjunto com diferentes serviços de rede? O dispositivo é aceitável, em termo dos valores envolvidos no mercado-alvo? Além de uma boa usabilidade, os softwares móveis devem também ser sensíveis ao contexto. Os softwares móveis conseguem, por meio dos senso- res disponíveis nos devices, mesclar o mundo real com o virtual. Para isso, precisam produzir informações confiáveis, por meio dos dados presentes nos diversos sensores, e, dessa forma, compreender o contexto. 7Projeto de software para dispositivos móveis Para ajudar a compreender o contexto e a usabilidade dos softwares móveis, Pressman e Maxin (2016) sugerem o uso de protótipos de tela, quando se trata de softwares que vão possuir telas de exibição. Esses protótipos podem ser feitos à mão ou com softwares específicos. Com os protótipos criados, torna-se possível planejar as interações com as telas e as funcionalidades do software. Usuários finais podem avaliar essas interações, com o intuito de ajudar a descobrir erros, inconsistências, omissões e melhores formas de realizar determinada tarefa. Existem várias regras para o desenvolvimento de aplicativos móveis para determinadas plataformas, como iOS e Android. Isso, às vezes, dificulta a publicação do software em uma store. Por exemplo, na loja da Apple, existe inclusive uma avaliação do número de funcionalidades de um aplicativo. Se- gundo Schumacher (2009), algumas boas práticas facilitam o desenvolvimento e a aprovação do seu software. Veja-as a seguir. Identificar o seu público: os aplicativos devem ser feitos tendo em mente as expectativas de seus usuários. Projetar tendo em vista o contexto de uso: considera como o usuário vai interagir com o mundo real enquanto utiliza o software. Simplicidade: a interface do usuário deve fornecer toda a informação que permita a ele tomar sua próxima decisão. Barras de rolagem e realces de seleção: dar atenção às barras de rolagem, tentando evitá-las ou, quando não for possível, realçá-las. Atenção também aos contrastes em itens selecionados — eles auxiliam o usuário na visibilidade do sistema. Dicas avançadas: usuários avançados gostam de usar atalhos para concluir tarefas; você pode incentivar isso criando recursos de dicas visuais na interface. Rótulos limpos e coerentes: os rótulos de widget devem ser de fácil re- conhecimento e de tamanho adequado; evite rótulos com textos grandes e use abreviações com cautela. Personalização: os usuários desejam e esperam que seja possível per- sonalizar sua aplicação. Cabe a você indicar quais recursos podem ser personalizados e como isso pode ser feito. Formulários longos: como já mencionado, evite barras de rolagem e informações demasiadas em uma única tela; uma dica é usar tabs de navegação. Projeto de software para dispositivos móveis8 Para saber mais sobre projetos de interfaces, acesse os links a seguir (em inglês), que são importantes fontes de conhecimento. https://material.io/ https://qrgo.page.link/44YTi Ferramentas de desenvolvimento de projeto Para o desenvolvimento de um projeto de software, é necessário um conjunto de ferramentas e ambientes de desenvolvimento. Além disso, dependendo da plataforma móvel a ser utilizada, existem ambientes de desenvolvimento, que podem ser licenciados ou não. Ambientes de prototipação Os protótipos de tela são fundamentais para o desenvolvedor compreender as interações que o software móvel vai possuir. Eles podem ser feitos à mão ou usando softwares. Confi ra alguns exemplos a seguir. A ferramenta Marvel possibilita a criação de protótipos de forma colaborativa e pos- sibilita incluir desenhos feitos à mão no protótipo. Acesse o link a seguir e confira. https://marvelapp.com/ Outra ferramenta de criação de protótipos é o Balsamiq, que possibilita criar um storyboard de navegação entre telas. https://balsamiq.com/ O Figma possibilita a criação colaborativa de telas. https://www.figma.com/ 9Projeto de software para dispositivos móveis Ambientes de desenvolvimento A gama de possibilidades no desenvolvimento móvel é imensa. As plataformas Android e iOS são as mais populares, mas é importante salientar que elas têm requisitos, que devem ser considerados. No site da Apple, você encontrará as ferramentas necessárias para o desenvolvimento iOS e todo o seu ecossistema, como relógios, iPad, Mac, etc. https://developer.apple.com/ O site do Android disponibiliza os recursos que você precisa para iniciar o desen- volvimento de uma aplicação móvel para o ecossistema Android, que vai além de smartphones e inclui relógios, carros e “coisas”, com o Android Things. https://qrgo.page.link/zcipj Para o desenvolvimento de aplicações para Xbox, o site a seguir disponibiliza, além de cursos e tutoriais,as ferramentas para iniciar um projeto para o Xbox. https://qrgo.page.link/RYRKK Uma tendência é o uso de ambientes de desenvolvimento que criam aplicativos multiplataformas, como o Flutter. Acesse o link a seguir e obtenha mais informações. https://flutter.dev/ Para o desenvolvimento de softwares para smart TVs, o site webOS TV contém várias informações e recursos. http://webostv.developer.lge.com Projeto de software para dispositivos móveis10 PRESSMAN, R. S.; MAXIM, B. R. Engenharia de software: uma abordagem profissional. 8. ed. Porto Alegre: AMGH, 2016. SCHUMACHER, R. The handbook of global user research. Illinois: Elsevier, 2009. Leitura recomendada ROSA, J. M.; VERAS, M. Avaliação heurística de usabilidade em jornais online: estudo de caso em dois sites. Perspectivas em Ciência da Informação, v. 18, n. 1, p.138-157, 2013. Disponível em: http://www.scielo.br/pdf/pci/v18n1/10.pdf. Acesso em: 22 jul. 2019. 11Projeto de software para dispositivos móveis