Como organizar um projeto maior com vários subprojetos e suas dependências?

5

Como desenvolvedor de software até agora, trabalhei principalmente em projetos que eram bastante "monolíticos", praticamente sem dependências em outros projetos, sem construir automação (sem Make, Ant, Maven, etc.) e mantido em um simples sistema de controle de versão (principalmente Subversion) com apenas algumas ramificações de versão facilmente gerenciadas.

Agora, juntamente com alguns amigos, estou planejando um projeto que deve ser executado em várias plataformas (principalmente móveis: Android, iOS, Kindle, Windows etc.), assim escrito em vários idiomas e em diferentes plataformas de desenvolvimento.

Isso levará a muitas dependências: todos os projetos compartilhando os mesmos recursos (por exemplo, imagens) ou projetos dependentes um do outro (por exemplo, um projeto de biblioteca Java principal usado pelo Android e outras implementações baseadas em Java).

Então, o que eu preciso é de algumas informações básicas sobre como responder a perguntas como: Como o VCS seria estruturado? Será que uma base de clientes ou um VCS descentralizado seria melhor? Como decidir o (s) sistema (s) de automação predial a usar?

Como essa pergunta é bastante aberta, acho que, por enquanto, seria ótimo se você pudesse me indicar alguns livros ou recursos da Web que você pode recomendar para esse tópico.

    
por RoToRa 09.01.2011 / 16:07
fonte

1 resposta

6

Isso não responde à sua pergunta real, mas pode ser útil.

Considere ferramentas de várias plataformas

Existem camadas como PhoneGap , que permitem desenvolver aplicativos em várias plataformas em um único idioma.
Além disso, uma linguagem multiplataforma, como haXe , pode ser interessante (você pode usar o backend do C ++ para aplicativos nativos e o JS backend para web e aplicativos móveis (através do PhoneGap acima mencionado)).

Você pode reduzir drasticamente a quantidade de código que precisa escrever, se puder reutilizá-lo em várias plataformas. Tendo menos código em primeiro lugar, resolve muitos problemas antes que eles ocorram.

Concentre-se em uma única plataforma para começar com

Se você tentar escrever o aplicativo para várias plataformas diferentes de uma só vez, os resultados poderão se tornar medíocres. Em vez disso, você deve tentar escolher uma única plataforma para se concentrar. Teste os conceitos de seu aplicativo nessa plataforma e, em seguida, transforme-o em outras plataformas e adapte-o de acordo.

Por exemplo, você pode perceber que você não deseja que as diferentes portas compartilhem gráficos, para melhor se adequar às necessidades gráficas. Por exemplo, no iPhone 4, você tem uma resolução muito alta, então você pode precisar de ícones extras para isso. Além disso, os usuários podem ter expectativas diferentes.

Portar um conceito de trabalho para uma nova plataforma é relativamente simples (embora às vezes intenso), em comparação com o fato de realmente desenvolvê-lo em primeiro lugar. Se você tentar fazer isso em várias plataformas ao mesmo tempo, você pode se sobrecarregar.

Portanto, escolha uma plataforma que seja suficientemente difundida e que você se sinta à vontade para começar a trabalhar rapidamente. Uma base de usuários é uma valiosa fonte de feedback, que você dificilmente conseguirá em outro lugar.

Não pense grande demais. Comece pequeno e cresça.

Isso se aplica não apenas à sua escolha inicial de plataformas, mas também à configuração de seus projetos. Adapte o seu conjunto de ferramentas de acordo com as suas necessidades, em vez de investir tempo na criação de um ambiente gigante para todos os propósitos, o que está sobrecarregando o processo de desenvolvimento.

Você quer resolver um problema não monolítico. Como consequência, acho que um fluxo de trabalho monolítico e behemothish talvez não seja a melhor coisa a fazer.

    
por 09.01.2011 / 17:43
fonte