Orçando Projetos de Aplicativos Android

27/9/2014 9:30:05 - Fábio Ferreira de Souza

Há algumas frases que sempre são minhas reflexões ao dar um orçamento:

“Quanto mais se sabe, mas sabe que não sabe nada.”

”A ignorância é uma dádiva!”

Porque penso nisto, ao especificar um projeto, ao definir prazos, requisitos, funcionalidades?

Simples: Porque sempre há surpresas em qualquer projeto de software!

Por mais que possamos questionar e fazer o máximo de analise e levantamento de requisitos, há sempre aquele detalhe, fundamental, e que as vezes muda todo o escopo do projeto, e que nem o cliente sabia.

Por outro lado, quanto mais conheço uma linguagem e plataforma de desenvolvimento, tenho mais noção das dificuldades que enfrentarei em um projeto, e quantas horas realmente serão gastas, mas lógico sem contar as surpresas, e por isso cada vez mais posso dar um valor mais justo, e que em geral, é mais caro que o projeto anterior, por causa da certeza que tenho em conseguir fazer, afinal, como precificar algo que não tenho nem noção de como fazer? simples: cobro apenas um valor simbólico, e faço mais por ser um desafio pessoal, e não pelo valor… e é assim que basicamente que encaro sempre meus primeiros projetos em uma nova tecnologia, um investimento pessoal meu em aprender, para que depois sim eu possa ganhar alguma coisa.

E agora depois de alguns projetos Android que fiz, tenho conhecimento que não é lá tão simples, fácil e divertido fazer Após para Android.

E vou além, um programa para computador, é até mais simples de fazer, pois em geral os únicos dispositivos de entrada são o mouse e o teclado, e um projeto só começa a ter integração com o hardware só quando são projetos bem específicos, e já no android ler os sensores de posição, câmera, gps, faz parte ainda do básico, isso porque há muitas funcionalidades e inúmeras possibilidades, portanto orquestrar uma software com tantos recursos não é um trabalho simples, e quanto mais coisas usa-se em um mesmo projeto a complexidade vai aumentando.

Abaixo listei apenas alguns itens que hoje estou levando muito em conta durante um novo Orçamento de Aplicação:

  1. Activity – São cada tela diferente do aplicativo
  2. Dialog – São telas menores dentro de Activity
  3. App Global – É uma área comum a toda aplicação, muito útil quando o aplicativo tem muitas telas.
  4. Transição – São efeitos entre telas, ou na tela, que dão uma impressão mais profissional ao aplicativo
  5. Notificação – O Aplicativo pode enviar mensagens de notificação, e até com comandos ao usuário
  6. Integração Intent – É a comunicação entre aplicativos, seja enviando ou recebendo objetos (texto, imagem)
  7. Tamanho – São os tamanhos básico de compatibilidade que um aplicativo pode ter
  8. DPI – É a qualidade de resolução compatível que o aplicativo pode ter
  9. Orientação – Tipo de orientação (Retrato ou Paisagem) que o aplicativo irá ser compatível
  10. Threads – Nada no Android pode ser “blocante”, ou seja tarefas lentas, como baixar informações da internet, devem sempre estar em uma tarefa separada e bem gerenciada
  11. Imagem download – Baixa imagens da Web requer pelo menos uma tarefa assíncrona, além de um bom gerenciamento entre tarefas pois o link pode ser lento
  12. WebServices – É integrar o aplicativo com algum servidor na internet por meio de SOAP, REST, Sockets, e qualquer acesso web ainda requer conhecimento de threads
  13. Web Geturl – Para baixar qualquer coisa da internet.
  14. REST – Requer um conhecimento um pouco mais fundo de HTTP, pois é tudo feito diretamente sem o uso de componentes prontos
  15. Service – É possível criar serviços no android, aplicativos que ficam sempre ativos.
  16. Custom Controls – Criar controles próprios, desenha-los na tela, e integra-los com o a IDE é simples, mas trabalhoso.
  17. File System – Gravar e ler arquivos no dispositivo
  18. Banco de dados  - Criar, Atualizar, e Manter um banco de dados apenas da aplicação (CREATE/DROP TABLE) no sqLite, um banco MySQL
  19. Tabelas – Gerir dados em Tabelas do sqLite com INSERT, DELETE, UPDATE, SELECT
  20. CursorAdapter – Consumir dados do sqLite
  21. Filtros – Filtrar dados em tela e no banco de dados
  22. Animação – Efeitos de animação entre telas ou controles
  23. Sensores – É mais uma forma de entrada de controle, usar o giroscópio, acelerômetro, magnetrômetro, sensores de luz e temperatura.
  24. GPS – Ler o GPS, calcular posições, identificar locais, desenhar e posicionar no mapa
  25. Câmera – Tirar fotos, Gravar vídeos, controlar e usar a câmera.
  26. Imagens – Criar, ler imagens, redimensionar, desenhar linhas, gradientes, gráficos.
  27. Relatório – Exibir dados de forma organizada em tela, ou mandar imprimir
  28. menu/por tela – Gerir e usar os menus de cada tela (activity)
  29. Styles – Dá para customizar tudo que é padrão e criar aplicativos em um estilo próprio de cor, tamanho, botas, espaçamentos
  30. ListAdapter – Gerir as listas de navegação
  31. Spinner – ou Dropdownlist, exibir e controlar opções de seleção
  32. Listview – Trabalhar com eventos das listas de exibição
  33. Gridview – Trabalhar com eventos de grids de exibição
  34. Uso de outros .JAR/API – Para fazer certas operações, começar do zero é muito demorado, então o melhor é usar componentes prontos, mas apender a usar componentes também demanda tempo

Veja mais: