実際、これらのプロセスには、多くの企業と同じくらい多くのバリエーションがあります。意味:すべての企業には他の企業とは少し異なる規則がありますが、ほとんどの場所で一般的に使用されている一般的なベストプラクティスがいくつかあります。
常に役立つベストプラクティス
- プロジェクトのすべてのソースコードとそれをビルドするために必要なものはすべてバージョン管理下にあります(ソース管理とも呼ばれます)。誰でもワンクリックでプロジェクト全体を構築できるはずです。
さらに、不要なファイル(オブジェクトファイルまたはコンパイルされたバイナリ)は、非常に簡単に再生成でき、リポジトリ内のスペースを浪費するだけなので、リポジトリに追加しないでください。
- すべての開発者は更新してコミットする必要があります、1日に数回バージョン管理をするます。ほとんどの場合、彼らは作業を終えて十分にテストしたので、些細なバグが含まれていないことがわかります。
- 繰り返しますが、誰でもシングルクリックでプロジェクトをビルドできるはずです。これは重要であり、誰にとっても簡単にテストできます。非プログラマー(例えば上司)もそうすることができれば大きな利点です。(チームが何に取り組んでいるのかを正確に確認できるようになります。)
- すべての開発者は、リポジトリにコミットする前に、追加する新機能またはバグ修正をテストする必要があります。
- リポジトリから定期的に(所定の間隔で)更新し、プロジェクト全体ですべてを構築しようとするサーバーをセットアップします。失敗した場合は、バージョン管理への最新のコミット(どのコミットがビルドに失敗したため)とともに電子メールをチームに送信して、問題のデバッグに役立てます。
この方法は継続的インテグレーションと呼ばれ、ビルドはナイトリービルドとも呼ばれます。(これは、開発者が自分のマシンでコードをビルドしてテストするべきではないことを意味するものではありません。前述のように、そうする必要があります。)
- 明らかに、誰もがプロジェクトの基本的な設計/アーキテクチャに精通している必要があるため、何かが必要な場合でも、チームのさまざまなメンバーが車輪の再発明を行う必要はありません。再利用可能なコードを書くことは良いことです。
- チームメンバー間で何らかのコミュニケーションが必要です。少なくとも少しは、他の人が何をしているのかを誰もが知っている必要があります。多いほど良いです。これが、毎日のスタンドアップがスクラムチームで役立つ理由です。
- 単体テストは、コードの基本機能を自動的にテストするための非常に優れた方法です。
- バグ追跡ソフトウェア(とも呼ばれる時間追跡ソフトウェアは)別のチームメンバーが持っているが、どのような作業であるかのバグを追跡するのは非常に良い手段です。また、テストにも適しています。プロジェクトのアルファ/ベータテスターは、この方法で開発チームと通信できます。
これらの単純なことにより、プロジェクトが制御不能になることはなく、全員が同じバージョンのコードで作業することが保証されます。継続的インテグレーションプロセスは、何かがひどく悪くなったときに役立ちます。
また、メインリポジトリにビルドされないものをコミットすることを防ぎます。
実装に数日かかり、他の人がプロジェクトをビルド(およびテスト)するのをブロックする新機能を含めたい場合は、バージョン管理のブランチ機能を使用してください。
それでも不十分な場合は、問題のプロジェクトで可能であれば、自動テストを実行するように設定することもできます。
もう少し考え
上記のリストは、一見すると非常に重いものになる可能性があります。必要に応じてそれに従うことをお勧めします。バージョン管理とバグトラッカーから始めて、必要に応じて、後で継続的インテグレーションサーバーをセットアップします。(大規模なプロジェクトの場合は、すぐに必要になります。)最も重要な部分の単体テストの作成を開始します。それが十分でない場合は、それらをもっと書いてください。
いくつかの便利なリンク:
継続的インテグレーション、デイリービルドはあなたの友達です、バージョン管理、ユニットテスト
例:
最近では、バージョン管理のために、個人的なプロジェクトにGitを使用する傾向があります。Subversionも人気があり、たとえば、 Windowsサーバーを使用している場合 VisualSVNは非常に簡単にセットアップできます。クライアントにとって、TortoiseSVNは多くの人に最適です。これがGitとSVNの比較です。
バグ追跡ソフトウェアの場合、JiraとBugzillaが非常に人気があります。以前の職場でもマンティスを使用しました。
継続的インテグレーションソフトウェアには、Teamcityがあります 1つに(また、CruiseControlとそれに対応する.NETが注目に値します)。
「プロジェクトのメインデザインは誰が決めるの?」という質問に答えてください。
もちろん、それが主な開発者です。
企業では、主任開発者は、プロジェクトの財務/マーケティング担当者と話し合い、企業の財務能力、計画された機能、ユーザーからの要件、および利用可能な時間に応じてアーキテクチャを決定する人です。
これは複雑な作業であり、通常は複数の人が関わっています。チームのメンバーは、プロジェクト全体または特定の部分の設計について参加またはブレインストーミングするように求められることもあります。