Acredito que pessoas que não trabalham diretamente com a área de TI possuem as melhores ideias de software do que os que trabalham desenvolvendo-as. Você já deve ter ouvido o termo “pense fora da caixa”, pois bem, aqueles que não vivem na bolha do desenvolvimento de software possuem uma melhor percepção do de como interagir com diferentes sistemas, essa tal percepção é algo muito valioso para as empresas de desenvolvimento e pode chegar a definir o sucesso da organização como um todo, as boas ideias de negócios estão diretamente atreladas às experiências dos usuários e é a partir delas que as empresas definem os próximos investimentos e tendências.
O estudo do engajamento dos usuários é parte das atribuições de um arquiteto de software, antes mesmo de definir quais elementos irão compor todo(s) o(s) sistema(s), o arquiteto deverá conhecer ao máximo o perfil dos usuários, assim como as plataformas envolvidas e suas possíveis integrações (smartphone, laptop ou outros dispositivos de IoT). Em geral os usuários que interagem mais com dispositivos móveis irão preferir ideias na qual os envolvem, com isso é preciso ter em mente que na maioria dos casos os aplicativos móveis interagem com diferentes aplicações distribuídas na nuvem, no qual irá envolver recursos de rede, armazenamento, processamento e memória limitados.
Os textos anteriores deixam claro que é quase impossível projetar software sem considerar a comunicação com sistemas na nuvem, o mesmo se aplica a software para dispositivos móveis. É comum que os aplicativos móveis comuniquem-se com diversos sistemas distribuídos, seja para a coleta, troca ou armazenamento de dados remoto. Para que possamos entender de forma clara e objetiva, imagine-se interessado em desenvolver um aplicativo de controle de estoque para smartphone, é evidente que o interesse principal é a mobilidade, no qual se faz necessário a interação com sistemas de armazenamento e processamento de dados, provedor de internet e entre outros recursos remotos. Por sua vez, o simples sistema de controle de estoque se tornará no mínimo dois sistemas (um em execução no smartphone e outro em execução na nuvem). O software em execução no smartphone enviará requisições para o servidor na nuvem que por sua vez poderá necessitar de outros sistemas (em servidores distintos) para executar uma determinada ação, ao mesmo tempo em que outras centenas ou milhares de requisições foram disparadas de outros dispositivos móveis e precisam ser processadas no mesmo momento.
A definição da arquitetura de um simples software como o exemplo acima possui duas vertentes, uma funcional e outra não funcional. Os requisitos não funcionais são determinados pelas estruturas arquiteturais inerentes às formas como os elementos irão interagir, já os funcionais estão diretamente relacionadas com a forma de uso e a finalidade do software. Com base na minha experiência profissional, é necessário entender os requisitos funcionais antes de projetar os requisitos não funcionais, porém é possível encontrar desenvolvedores que preferem iniciar o design do software antes mesmo de conhecer o que será desenvolvido, preferindo assim pecar pelo exagero, utilizando mais recursos de banda de dados, processamento de armazenamento de forma desnecessária, fazendo mais do que o necessário e causando mais custos.
Tenha em mente que ao iniciar uma idéia de desenvolvimento de software seja ele móvel ou web, é necessário o engajamento de profissionais que entendam a dinâmica de todos os elementos envolvidos, desconfie de desenvolvedores que prometem soluções fáceis, simples e rápidas. O desenvolvimento de qualquer ideia deverá passar por todos os processos de elaboração e definição de requisitos, prototipação, produtização e continuamente evolução, uma boa idéia não pode ser desenvolvida de qualquer forma.
Por Yrineu Rodrigues, juazeirense, desenvolvedor de software. Atualmente morando em San Jose, CA
*Este texto é de inteira responsabilidade do autor e não reflete, necessariamente, a opinião do Revista Cariri