---
title: "Desenvolvimento de aplicações móveis: Uma história de utilizador"
date: "2021-05-21"
categories: 
  - "app-development"
  - "mobile-development"
  - "mobiletogether"
tags: 
  - "app-design"
  - "app-development"
  - "mobile-development-tools"
  - "user-stories"
description: Explore o desenvolvimento de uma aplicação móvel para monitorizar a produção de energia solar, com foco nos requisitos dos utilizadores, na gestão de dados e em técnicas de visualização eficazes.
---
Status: #blog

Tags:  #app-design #app-development #mobile-development-tools #user-stories

Categories: [mobile-development](/blog/pt/category/mobile-development.md) | [mobile-development](/blog/pt/category/mobile-development.md) | [mobile-development](/blog/pt/category/mobile-development.md)
# Desenvolvimento de aplicações móveis: Uma história de utilizador

Ah, a primavera! Os pássaros cantam, as flores desabrocham e o sol nasce mais cedo e põe-se mais tarde. Essa luz solar extra permite que os sistemas de produção de energia solar funcionem por mais horas, gerando eletricidade. À medida que o solstício de verão se aproxima, os sistemas de produção de energia solar entram no seu período mais produtivo do ano.

Os proprietários de sistemas solares no telhado podem ser muito dedicados a monitorizar a sua produtividade. O ator e comediante John Hodgman chegou mesmo a [moderar uma discussão](https://maximumfun.org/transcripts/judge-john-hodgman/transcript-judge-john-hodgman-ep-443-daylight-savings-crime/) sobre o acompanhamento obsessivo da produção de energia solar. A minha amiga Kasey também é uma entusiasta da energia solar. Sempre que a vejo, ela partilha comigo as suas últimas estatísticas de quilowatts-hora. A casa de Kasey está localizada num clima quente e ensolarado, onde o ar condicionado é a sua maior necessidade de eletricidade. Ela instalou painéis solares no telhado da sua casa no final de junho e o sistema rapidamente começou a gerar energia suficiente durante os longos dias de verão para compensar o consumo do ar condicionado.

Após receber a fatura de eletricidade de agosto, Kasey contactou a empresa que instalou os painéis solares para dar uma boa notícia: o consumo de eletricidade da sua casa durante o mês foi nulo. "Tenho de confessar que verifico os medidores todos os dias para ver como está a funcionar o sistema", disse Kasey ao técnico.

"Todos fazem isso", respondeu o técnico. "Alguns utilizadores até me dizem que verificam os medidores três vezes ao dia!"

A Kasey perguntou-me se uma aplicação para telemóvel, desenvolvida com o MobileTogether, poderia ser uma ferramenta útil para monitorizar o seu sistema de energia solar. "Eu poderia inserir as leituras do contador no meu telemóvel", disse ela. "Posso fazê-lo todos os dias, quando passeio o cão antes do pequeno-almoço."

Foi assim que começou a nossa colaboração no desenvolvimento de aplicações móveis. O resultado é a aplicação MobileTogether, que chamamos "Ferramenta de Energia Solar".

![](/blog/images/mt_darktheme_blog_1-1.jpg)

<!--more-->

O sistema solar da Kasey inclui um software que reporta a quantidade de eletricidade produzida, mas isso é apenas metade da equação. Tal como muitos sistemas de geração solar residenciais, a casa da Kasey está conectada à rede elétrica pública através de um sistema de [contabilização com medição líquida](https://en.wikipedia.org/wiki/Net_metering). Os painéis solares fornecem energia à casa apenas enquanto o sol está a brilhar. A eletricidade é fornecida pela rede durante a noite ou sempre que a procura excede a produção. Quando os painéis solares produzem mais eletricidade do que a casa consome, o excesso é devolvido à rede para complementar a capacidade de geração da empresa de eletricidade.

A fatura mensal da companhia de eletricidade indica a quantidade de energia que a casa produz e consome a cada mês. O titular da conta paga pelo consumo excedente, mais uma pequena taxa de ligação. O excesso de produção é creditado na fatura do mês seguinte. Estas casas têm dois medidores: um regista a eletricidade produzida e o outro regista a eletricidade consumida.

A Kasey queria uma aplicação que monitorizasse o consumo de energia ao longo do mês, em vez de esperar pela fatura da companhia elétrica. Criámos uma lista de requisitos para o desenvolvimento da aplicação móvel:

- fornecer um formulário de introdução de dados muito simples para registar as leituras dos medidores
- calcular automaticamente o saldo da conta a partir das leituras
- Mostrar o desempenho diário e o saldo mensal de forma numérica e gráfica
- Acompanhe o excedente ao longo do tempo para mostrar as variações de mês a mês.

A MobileTogether possui todas as funcionalidades de que necessitamos para implementar de forma eficiente os requisitos da aplicação. Começámos por definir estruturas de dados XML para os registos diários e mensais. A imagem mostra os dados mensais numa visualização de grade no XMLSpy:

[![Dados de relatórios mensais para monitorizar a produção de energia solar.](/blog/images/monthly-grid-view.png)](monthly-grid-view.png)

A leitura dos valores anteriores à data e os valores do medidor, nas colunas 4 a 7, referentes à energia gerada e consumida em quilowatts, o excedente mensal e o saldo total, são todos cálculos numéricos simples. Por exemplo, na linha 5, a energia gerada (kWhGen) é simplesmente a leitura do medidor solar de setembro menos a leitura de agosto. O medidor solar só avança, mas o medidor de consumo pode avançar ou retroceder, dependendo da luz solar e do consumo de energia de hora a hora.

Para a próxima etapa no desenvolvimento da aplicação móvel, definimos o fluxo geral da aplicação. Decidimos criar duas páginas principais: uma para o desempenho diário e outra para o histórico mensal. Os formulários de entrada de dados seriam subpáginas acessíveis a partir de cada página principal. A seguir, apresentamos a janela de ajuda do MobileTogether Pages, que mostra a estrutura das páginas:

[![Estrutura das páginas definida durante o desenvolvimento da aplicação móvel  ](/blog/images/pages-helper.png)](pages-helper.png)

Os botões em cada página permitem executar ações do MobileTogether para navegar entre as diferentes visualizações.

Depois, pensámos em como representar graficamente os dados em gráficos. O MobileTogether permite aos programadores criar gráficos em várias camadas, podendo até combinar diferentes tipos de gráficos. Decidimos combinar gráficos de área e gráficos de barras. Escolhemos um gráfico de área como base para representar o consumo de eletricidade, por dia e por mês, e um gráfico de barras sobreposto para mostrar a produção de energia solar. A nossa lógica é que a casa utiliza eletricidade continuamente, mesmo durante a noite, para aparelhos como o frigorífico, relógios elétricos, carregadores de telemóveis, etc. A produção de energia solar, por outro lado, é intermitente, começando ao nascer do sol e terminando ao pôr do sol.

O Simulador é uma funcionalidade do MobileTogether Designer que permite executar a solução instantaneamente durante o desenvolvimento de aplicações móveis, para testar a lógica, visualizar a interface de utilizador tal como aparecerá em diversos dispositivos iOS, Android ou Windows, e analisar as alterações nos dados do fluxo de trabalho. Aqui está uma visão da página principal do relatório diário, como aparece no Simulador:

[![Gráficos para apresentar a produção diária, conforme visualizado no simulador MobileTogether durante o desenvolvimento de aplicações móveis.](/blog/images/daily-sim-view.png)](daily-sim-view.png)

Esta página apresenta os dados de produção durante 14 dias, a partir de 18 de abril. A produção solar varia significativamente de dia para dia, dependendo da cobertura de nuvens, como podemos observar no gráfico superior. O gráfico inferior mostra o saldo positivo ou negativo de cada dia. Em 18 de abril, consumiu-se um quilowatt a mais do que o que foi produzido, e em 29 de abril, o saldo foi nulo.

O botão "Mostrar" abaixo do primeiro gráfico abre uma tabela numérica com os dados:

![Um botão "Mostrar/Ocultar" controla a exibição das estatísticas diárias de desempenho.](/blog/images/daily-data-table.png)

O botão "Mostrar" controla a propriedade de visibilidade da tabela de dados no ambiente MobileTogether. A tabela, por si só, é rolável dentro da página e contém dados referentes ao mês anterior completo. O botão "Adicionar nova leitura" abre a subpágina de entrada de dados para um novo conjunto de leituras:

[![A subpágina de introdução de dados permite ao utilizador inserir as novas leituras diárias.](/blog/images/enter-daily.png)](enter-daily.png)

A definição da ação de controlo para o botão permite-nos abrir a página como uma janela modal, o que significa que a página original continua visível em segundo plano.

[![Configurações para definir o layout das subpáginas durante o desenvolvimento de aplicações móveis](/blog/images/modal-subpage.png)](modal-subpage.png)

O MobileTogether permitiu-nos adicionar texto de ajuda aos campos de entrada para os valores do medidor. Também utilizamos a propriedade "Teclado" do MobileTogether. Quando a utilizadora toca no campo de edição para inserir um novo valor, apenas caracteres numéricos são exibidos.

[![Começando uma nova leitura diária.](/blog/images/enter-daily-2.png)](enter-daily-2.png)

Depois de inserir as leituras de ambos os medidores, o próximo passo de Kasey é clicar em "Calcular produção":

[![Calculando os dados de produção diários com base na nova leitura.](/blog/images/enter-daily-3.png)](enter-daily-3.png)

Esta função realiza cálculos XQuery para gerar os dados de produção diários, que serão apresentados para visualização. A seguir, a Kasey poderá adicionar os novos dados ou cancelar a operação. A adição de um novo registo diário atualiza automaticamente os gráficos na página do relatório diário

[![A adição de uma nova leitura atualiza automaticamente os gráficos diários de produção.](/blog/images/enter-daily-4.png)](enter-daily-4.png)

A página do relatório mensal é estruturada de forma semelhante à página do relatório diário. Abaixo, são apresentadas duas versões da página mensal num telemóvel Android, em [modo escuro e modo claro](https://www.altova.com/blog/mobile-apps-that-automatically-support-dark-theme/):

[![Uma visão da página do relatório mensal num telemóvel Android, exibida tanto no tema escuro como no tema claro](/blog/images/monthly-report.png)](monthly-report.png)

A tabela de dados nesta página apresenta estatísticas mensais. As primeiras 12 linhas são baseadas nas leituras do medidor extraídas das faturas de serviços públicos de Kasey, e os valores das colunas 4 a 7 são calculados pela aplicação. A linha 13 é baseada na última leitura diária registada. Sempre que Kasey adiciona uma nova leitura diária, a aplicação atualiza a tabela de dados diários e os gráficos diários, e também calcula automaticamente os totais mensais, substitui a linha 13 na tabela mensal e atualiza os gráficos mensais.

Isto resolve o requisito principal para o desenvolvimento desta aplicação móvel: monitorizar o saldo acumulado desde a última fatura de serviços. O saldo acumulado é apresentado na linha 13 da tabela de dados mensais, na legenda abaixo do primeiro gráfico mensal e nas células mais à direita de ambos os gráficos mensais.

O ícone de engrenagem, localizado no canto superior direito de cada página, é um botão criado utilizando a imagem de botão "Configurações" integrada no MobileTogether. Este botão abre uma página de configurações, como se pode ver aqui num iPhone:

[![A página de configurações visualizada num iPhone.](/blog/images/settings-1.png)](settings-1.png)

Os quatro primeiros botões na página de Configurações permitiram-nos manipular e trocar conjuntos de dados durante o desenvolvimento ou para análise. A última opção é uma caixa de combinação que permitiu à Kasey reiniciar os gráficos na página dos relatórios diários para exibir dados referentes a 7, 14, 21 ou 30 dias.

[![A visualização de 21 dias do gráfico do saldo diário.](/blog/images/daily-balance-21.png)](daily-balance-21.png)

Após o desenvolvimento inicial da aplicação móvel, a Kasey ficou muito satisfeita com os resultados. Todos os dias, levava o seu cão para um passeio matinal e registava as leituras do contador. Quando as contas de serviços públicos chegavam pelo correio, ela atualizava a tabela mensal com os valores registados pelo técnico de leitura de contadores.

Um dia, ela telefonou-me. "Sabe, estive presa em casa durante quase um ano, e agora estou pronta para viajar novamente", disse ela. "O que acontecerá com a aplicação se eu não fizer algumas leituras durante alguns dias?"

Tive de refletir sobre isso e criei um conjunto de dados de teste para descobrir. O resultado foi que o relatório mensal seria adequado. Quer o utilizador tenha esquecido de inserir as leituras do contador durante um dia ou uma semana, a aplicação calcula sempre o saldo acumulado a partir da última fatura e da última leitura diária.

O relatório diário apresentava algumas pequenas questões. O campo de data para as medições diárias era um seletor de datas, que carregava automaticamente a data atual, mas o utilizador podia selecionar outra data, caso existissem valores de medição disponíveis.

No entanto, se algumas leituras diárias fossem omitidas, os dados de produção diários e os valores gráficos do último dia seriam imprecisos – toda a produção e todo o consumo seriam atribuídos ao último dia.

A solução foi simples. Decidimos adicionar um pouco de lógica ao cálculo das estatísticas diárias, utilizando um teste "se-então" e um ciclo:

- Se a data da nova medição fosse posterior à data da última medição por mais de um dia, então conte o número de dias que faltaram
- Divida a produção total e o consumo total pelo número total de dias entre as medições.
- Utilize um ciclo para atribuir a produção média e o consumo médio a cada dia em que não foi registada nenhuma medição.

Implementei esta lógica num Grupo de Ações do MobileTogether e adicionei o novo grupo de ações aos passos executados quando a Kasey clicava no botão "Adicionar leitura diária".

No dia 2 de maio, Kasey partiu alegremente para uma viagem de 3 dias de campismo e caminhadas. No dia 2 de maio, na manhã seguinte ao seu regresso, ela registou as leituras diárias do medidor, como fazia habitualmente. Seguem-se excertos do seu relatório diário e mensal, com valores médios para as leituras diárias ausentes, conforme visualizados num iPhone:

[![Resultados da estratégia para os dias em que não se conseguiu ler, visualizados num iPhone.](/blog/images/monthly-report-2.png)](monthly-report-2.png)

Os valores nulos registados nos medidores nos dias 3, 4 e 5 de maio indicam valores médios.

Se está a desenvolver aplicações móveis para diferentes plataformas, precisa de uma ferramenta com programação visual completa e depuração integrada! Descubra o nosso MobileTogether [demonstrações em vídeo](https://www.altova.com/pt/mobiletogether/demos#video_Demos), mais [aplicativos de exemplo](https://www.altova.com/pt/mobiletogether/demos), ou até mesmo o/a [manual online](https://www.altova.com/manual/MobileTogether/mobiletogetherdesigner/) Para uma análise aprofundada de todas as informações. Quando estiver pronto para começar e desenvolver as suas próprias aplicações móveis multiplataforma no menor tempo possível, [Descarregue o programa MobileTogether Designer](https://www.altova.com/pt/mobiletogether/download) para começar.
