Desenvolvimento em Xamarin: experiência da Opus Software

Há algum tempo a Opus Software vem realizando desenvolvimento em Xamarin para alguns dos projetos de construção de aplicativos móveis nativos. Nesse artigo, abordaremos algumas das vantagens e benefícios que temos obtido ao usar essa plataforma.

Para quem não está familiarizado com o assunto, aplicativos móveis nativos são aqueles desenvolvidos utilizando-se os componentes gráficos de interface de usuário nativos do ambiente operacional do smartphone, tipicamente Android e iOS (iPhone). A alternativa aos aplicativos nativos são os chamados aplicativos híbridos, que são construídos utilizando-se interface Web. Naturalmente, os aplicativos nativos oferecem uma experiência de usuário superior, por serem naturalmente integrados ao ambiente operacional e oferecerem uma interface mais fluída e desempenho superior.

A maior questão associada ao desenvolvimento de aplicativos nativos é o fato de que os ambientes operacionais mais populares não são compatíveis entre si. Dessa maneira, para se construir um aplicativo móvel com funcionalidade idêntica para o Android e para o iOS é necessário desenvolver duas aplicações completamente distintas, inclusive em termos de linguagem de programação. A linguagem nativa do Android é Java, enquanto para o iOS utiliza-se Objective-C ou Swift. Portanto, o trabalho de construção de um aplicativo para os dois ambientes é dobrado, e isso impacta diretamente prazos e custos.

A Plataforma Xamarin

A Xamarin oferece justamente uma ferramenta que visa amenizar essa necessidade de desenvolvimento em duplicidade, tornando possível desenvolver aplicativos móveis para Android e para iOS usando uma mesma linguagem de programação, C# (C-Sharp). Entretanto, a ferramenta não promete eliminar completamente a necessidade de esforço duplicado: para o desenvolvimento da porção do aplicativo referente ao tratamento da interface de usuário, continua sendo necessário desenvolver código específico para cada plataforma. Ao menos, é possível reaproveitar nos dois ambientes todo o código referente a regras de negócio, comunicação com o servidor e outros elementos que não dependam de interação com o usuário.

Como uma forma de tentar reduzir essa necessidade de desenvolvimento específico de interface de usuário para cada um dos ambientes operacionais, a plataforma oferece um framework, chamado Forms, que tenta isolar as diferenças e proporcionar uma biblioteca comum. Em tese, se o aplicativo se restringir aos recursos de interface (mais limitados) oferecidos pelo Xamarin.Forms, é possível sim reaproveitar a totalidade do código, permitindo uma única versão do aplicativo para os dois ambientes operacionais.

Na prática, entretanto, boa parte dos aplicativos móveis precisam recorrer a recursos específicos da interface de usuário de cada ambiente, sendo impossível implementá-lo na sua totalidade apenas usando recursos do Xamarin.Forms. Em muitos casos, o ideal é mesmo construir duas aplicações distintas, cada uma utilizando os recursos específicos de cada sistema operacional.

Em linhas gerais, é possível reaproveitar algo em torno de 40% a 60% do código do aplicativo quando ele é desenvolvido utilizando-se diretamente a interface nativa dos sistemas operacionais. Quando é possível utilizar o Xamarin.Forms, algo entre 70% e 90% do código pode ser comum entre as duas versões, sendo que apenas alguns recursos específicos precisam ser desenvolvidos em duplicidade.

Nossa Experiência com Desenvolvimento em Xamarin

Ao longo de quase dois anos desenvolvendo aplicativos utilizando essa plataforma, a equipe da Opus Software tem obtido diversos benefícios nos projetos em que tem realizado desenvolvimento em Xamarin.

Redução de prazos e orçamentos

Pela nossa experiência, no caso de aplicativos desenvolvidos utilizando-se a interface nativa dos ambientes operacionais alvo (Xamarin.Android e Xamarin.IOS) temos obtido, em média, algo como 40% de reaproveitamento de código, o que se reflete em redução de aproximadamente 20% nos prazos e diminuição equivalente nos custos da etapa de construção. Embora ainda não tenhamos muitos casos de utilização do framework Xamarin.Forms, nos projetos em que o utilizamos o reaproveitamento de código nunca foi inferior a 70%.

Qualidade dos aplicativos

Os aplicativos móveis desenvolvidos em Xamarin oferecem desempenho e usabilidade praticamente idênticos àqueles desenvolvidos utilizando-se as ferramentas nativas dos ambientes operacionais Android e iOS. No caso do Xamarin.Forms, o desempenho pode ser um pouco prejudicado, e é importante portanto avaliar com prudência o impacto de seu uso, considerando que o desempenho é um dos principais fatores de avaliação de aplicativos móveis pelos usuários.

Unificação da linguagem de programação

Essa talvez seja a maior vantagem do desenvolvimento em Xamarin. Dominar realmente bem uma linguagem de programação em um ambiente operacional específico exige tempo e horas de voo. Imagine então ter que dominar profundamente pelo menos duas linguagens diferentes. Mesmo considerando que nossa equipe de desenvolvimento é formada por profissionais com sólida formação universitária nas áreas de Ciência e Engenharia de Computação ou Sistemas de Informação, o que proporciona uma ótima base conceitual para o rápido aprendizado de novas ferramentas e linguagens de programação, obviamente é mais custoso ganhar (e manter) proficiência em mais de um ambiente de desenvolvimento, acompanhando sua evolução ao longo das diferentes versões lançadas periodicamente.

Muitos membros do nosso time técnico têm muita experiência com a plataforma Java – em função de nosso produto de automação bancária, o Opus iBank – e sentem muito familiarizados com o ambiente nativo do Android. Além disso, vários outros desenvolvedores do time hoje dominam muito bem a linguagem Objective-C e o ambiente nativo do iOS, em função dos vários projetos de aplicativos móveis de que participaram nos últimos anos usando essa tecnologia. Entretanto, também temos um longo histórico de desenvolvimento no ambiente Microsoft/.NET e, portanto, nossa cultura favorece a utilização da linguagem C# como língua franca para os projetos de aplicativos móveis.

Utilização da linguagem C#

C# é uma linguagem expressiva e poderosa. Sendo uma linguagem orientada a objetos, também oferece recursos de suporte ao paradigma de programação funcional. Oferece tipagem forte, programação assíncrona e expressões lambda, apresentando uma sintaxe simples e elegante. Possui os principais recursos que se espera de uma linguagem de programação moderna.

Uso do Visual Studio

Além de oferecer um ambiente integrado de desenvolvimento próprio (IDE), o Xamarin Studio, a plataforma também é plenamente integrada ao Visual Studio da Microsoft, que é uma das melhores ferramentas de desenvolvimento disponíveis no mercado. O Visual Studio oferece inúmeros recursos que proporcionam um sensível aumento de produtividade nas tarefas de codificação e depuração de aplicações. Claro que a experiência anterior do time usando o Visual Studio só colaborou para aumentar ainda mais o desempenho na construção de aplicativos móveis.

Plataforma .NET

Boa parte dos recursos, bibliotecas e frameworks do ambiente .NET original estão disponíveis na plataforma Xamarin, plenamente integrados à linguagem C#. Por exemplo, LINQ, Generics e Lists, que são grandes aceleradores para a construção de aplicações.

Documentação vasta

Um dos pontos positivos da plataforma é a quantidade e qualidade da documentação disponível. Remetendo às suas origens de projeto open source, uma vez que é um porte do projeto Mono para os ambientes Android e iOS, a plataforma oferece uma vasta gama de manuais, tutoriais, exemplos e bibliotecas de código aberto.

Ecossistema em crescimento

A plataforma Xamarin possui uma comunidade de desenvolvedores muito atuante, o que proporciona uma interação rica e a possibilidade de tirar dúvidas e trocar experiências nos vários fóruns de discussão disponíveis. Há também muitos exemplos e componentes de software abertos disponíveis na Internet, o que ajuda a acelerar e a tornar mais ágil o desenvolvimento.

Outras considerações sobre o desenvolvimento em Xamarin

É importante observar que desenvolver utilizando a plataforma Xamarin não elimina a necessidade de conhecer muito bem o ambiente operacional e o modelo de interação e tratamento de eventos dos ambientes operacionais alvo. O ambiente não isola a aplicação, e é muito importante entender o que acontece no nível do sistema operacional, principalmente para evitar problemas com alocação de recursos (especialmente memória) e para identificar problemas de execução.

Em geral, quando se utilizam as bibliotecas para uso dos componentes nativos da interface gráfica, o modelo do aplicativo em Xamarin segue fielmente o modelo padrão dos ambientes operacionais, seja no Android ou no iOS. Portanto, o conhecimento genérico da estrutura de um aplicativo nesses dois ambientes é fundamental para se estruturar adequadamente o software escrito em C#.

Obviamente, nem tudo é perfeito no desenvolvimento em Xamarin. Assim como acontece com os frameworks nativos do Android e do iOS, é fato que a plataforma também tem seus próprios defeitos (embora a empresa tenha sido muito ágil em proporcionar correções para os erros identificados pela comunidade de desenvolvedores). Além disso, considerando que uma nova camada de software é introduzida entre o aplicativo e o ambiente nativo, às vezes fica mais difícil encontrar os problemas em um aplicativo. Há que se considerar também que os ambientes nativos possuem muito mais recursos publicados por suas grandes comunidades de desenvolvedores, incluindo artigos, bibliotecas e componentes. Nem sempre é fácil utilizar diretamente no aplicativo em Xamarin os componentes de software desenvolvidos nas linguagens nativas, uma vez que é necessário que exista uma interface específica para que se possa utilizá-los.

Somando prós e contras, a experiência da Opus Software no uso do Xamarin tem sido amplamente positiva, e definitivamente recomendamos sua utilização.

Dica: Construir um bom aplicativo móvel é só parte do processo necessário para torná-lo um sucesso. Por exemplo, um aplicativo móvel precisa de um plano de engajamento.

Claro, continuamos desenvolvendo muitos projetos utilizando os ambientes nativos do Android e do iOS, especialmente em situações nas quais o cliente já possui essa cultura e prefere mantê-la, ou quando é necessário utilizar bibliotecas muito específicas (aplicativos para meios de pagamento eletrônico, por exemplo).

De maneira geral, durante a fase de seleção das tecnologias a serem utilizadas para um determinado projeto, nossa equipe procura avaliar as vantagens e desvantagens de utilizar o Xamarin (incluindo os eventuais riscos). Por exemplo, se uma determinada biblioteca específica está disponível para o ambiente nativo e não existe uma interface Xamarin disponível para ela, é feita uma avaliação do tempo necessário para construir essa interface, comparando-o com o prazo estimado para se construir a funcionalidade daquela biblioteca a partir do zero. Em algumas situações, pode ser mais econômico construir duas versões do aplicativo utilizando as ferramentas nativas, Java e Objective-C.

Finalmente, considerando que começamos a avaliar a plataforma Xamarin ainda quando ela era um projeto open source (Mono for Android e MonoTouch), um dos nossos pontos de avaliação sempre foi o risco de o produto “não dar certo”. Apenas quando concluímos que a base instalada já era grande o suficiente para sustentar a empresa Xamarin é que adotamos definitivamente a plataforma. Segundo dados da própria Xamarin (maio de 2016), atualmente a empresa conta com mais de 15.000 clientes e mais de 1,4 milhão de desenvolvedores em 120 diferentes países. Recentemente, a aquisição da Xamarin pela Microsoft só reforçou que fizemos a escolha certa, e a tendência agora é de que o produto melhore ainda mais e que sua evolução seja cada vez mais veloz. Mas isso é assunto para outro post.

squads ágeis

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Newsletter

Insights de tecnologia para você!

Não compartilharemos seu e-mail com terceiros e também prometemos não enviar spams. Ao informar seu e-mail, você concorda com nossa Política de Privacidade.

Conteúdos relacionados

Veja nesse artigo como incluir a Inteligência Artificial no seu planejamento estratégico de TI para que ele seja adap...
Veja nesse artigo como reskilling e upskilling são fundamentais na área de TI para nos adaptarmos a era da Inteligênc...
Veja nesse artigo quando usar microsserviços, como se preparar para obter os benefícios dessa arquitetura no seu sist...