web-dev-qa-db-ja.com

複数のサブプロジェクトとその依存関係を持つ大規模なプロジェクトを編成するにはどうすればよいですか?

これまでソフトウェア開発者として、私はほとんどが非常に「モノリシック」で、他のプロジェクトへの依存がほとんどなく、自動化を構築せずに(Make、Ant、Mavenなどなし)、単純なバージョン管理システムを維持するプロジェクトに取り組んできました(主にSubversion)簡単に管理できるバージョンブランチがいくつかあります。

いくつかの友達と一緒に、複数のプラットフォーム(主にモバイル:Android、iOS、Kindle、Windowsなど)での実行を目的としたプロジェクトを計画しています。

これは多くの依存関係につながります:同じリソースを共有するすべてのプロジェクト(例:画像)または互いに依存するプロジェクト(例:Javaと他のAndroidが使用するコアJavaライブラリプロジェクト実装)。

それで、私が必要なのは、次のような質問に答える方法に関するいくつかの基本的な情報です。クライアントベースまたは分散型VCSの方が優れていますか?使用するビルディングオートメーションシステムを決定する方法は?

これは非常にオープンな質問なので、今のところ、このトピックについて推奨できる本やWebリソースを教えていただければ幸いです。

5
RoToRa

これはあなたの実際の質問に答えるものではありませんが、助けになるかもしれません。

クロスプラットフォームツールを検討する

PhoneGap などのレイヤーがあり、1つの言語で複数のプラットフォームにまたがるアプリを開発できます。
また、 haXe などのクロスプラットフォーム言語も興味深いかもしれません(ネイティブアプリにはC++バックエンドを使用でき、ウェブアプリとモバイルアプリにはJSバックエンドを使用できます(前述の方法を使用)。 PhoneGap))。

複数のプラットフォームで再利用できる場合は、作成する必要のあるコードの量を大幅に減らすことができます。そもそもコードが少ないため、多くの問題が発生する前に解決されます。

最初に単一のプラットフォームに焦点を当てる

一度に多くの異なるプラットフォーム用のアプリを作成しようとすると、結果が平凡になる可能性があります。代わりに、焦点を合わせるために、単一のプラットフォームを選択するようにしてください。そのプラットフォームでアプリの概念をテストしてから、他のプラットフォームに移植し、それに応じて適応させます。

たとえば、グラフィックのニーズによりよく適合するために、実際には異なるポートがグラフィックを共有することを望まないことに気付くかもしれません。たとえば、iPhone 4では解像度が非常に高いため、そのために追加のアイコンが必要になる場合があります。また、ユーザーの期待は異なる場合があります。

作業コンセプトを新しいプラットフォームに移植することは、最初から実際に開発するのに比べて、比較的単純です(ただし、作業負荷が高い場合もあります)。複数のプラットフォームで同時にそれを行おうとすると、may自分に負担がかかります。

ですから、十分に広く普及していて、快適に感じるプラットフォームを選んで、すぐに立ち上げて実行してください。ユーザーベースは貴重なフィードバックのソースであり、他の場所ではほとんど得られません。

大きくなりすぎないでください。小さく始めて成長します。

これは、最初に選択したプラットフォームだけでなく、プロジェクトのセットアップにも当てはまります。巨大な多目的環境の構築に時間を費やすのではなく、ニーズに応じてツールチェーンを適応させます。実際には、開発プロセスに多くのオーバーヘッドがかかります。

モノリシックではない問題に取り組みたい。結果として、巨大でモノリシックなワークフローはおそらく最善の方法ではないと思います。

6
back2dos