おそらく何らかのツール(おそらくEclipseプラグイン)を使用して、2人の開発者が最初に話すことなく、同じコードを同時にリファクタリングする状況を防止したいと思います。手伝ってくれますか?
4大陸に450万行のコードと20を超える開発者チームがあります。
理想的には、前述の2番目の開発者が、他の誰かが同じコードの部分で作業していることに気付き、何かを変更する前に最初の開発者と話をしたいと思います。
あなたは解決策を知っていますか?
おそらく何らかのツール(おそらくEclipseプラグイン)を使用して、2人の開発者が最初に話すことなく、同じコードを同時にリファクタリングする状況を防止したいと思います。手伝ってくれますか?
4大陸に450万行のコードと20を超える開発者チームがあります。
理想的には、前述の2番目の開発者が、他の誰かが同じコードの部分で作業していることに気付き、何かを変更する前に最初の開発者と話をしたいと思います。
あなたは解決策を知っていますか?
回答:
多くの第2世代のソース管理システムは、接続された「チェックアウト」を使用して機能し、ファイルを変更する予定であることをサーバーに通知します。例には、TFS、SourceGear Vaultなどが含まれます。このようにして、要件を技術的に達成できます。しかし、アダム・バトラーが指摘したように、これらのタイプのツールには独自の問題があります(長い議論をすることなく-オフライン作業のサポートを制限し、一般に非生産的な開発ワークフロー)。
リファクタリング作業を割り当てるために、何らかの階層的なアプローチをお勧めします。開発者は論理的にサブチームにグループ化され、それぞれがコードの特定の領域を担当します。チームの構造に応じて、それぞれがチームの領域の高度な設計を担当する「リード」ロールを持つことができます。この構造は開発者によく知られている必要があり、リファクタリングのためのコミュニケーションを簡素化する必要があります。このアプローチは形式的すぎて一部の人には逆に思えるかもしれませんが、20人以上の開発者が大規模システムのリファクタリングに「すべて無料」アプローチを使用することは非常に望ましいと思います。いくつかのリファクタリングは高レベルで行われます(たとえば、モジュールXがモジュールYと通信する方法)。その場合、適切なレベルで電話をかけることができる人が必要になります。チーム内のすべての開発者がアーキテクチャ上の決定を下す必要があるわけではないため、どのような場合でも、無知であることを選択したとしても、ほとんど階層が課されます。
したがって、基本的には、あなたが提唱する基本的な要件を満たすツールがありますが、適切なコミュニケーションに取って代わるツールはなく、少数の人々がプロジェクトの一般的なアーキテクチャを推進します。
開発者が編集する前にコードをチェックアウトするバージョン管理システムがありましたが、これらには独自の問題があります。開発者が頻繁にコミットおよび更新できるようにすることをお勧めします。次に、ある開発者がクラスを減価償却としてマークし、コミットすると、他の開発者がリファクタリングを開始する前に更新すると、意図が表示されます。
技術は社会問題を解決できません。開発者が互いに話し合い、作業を調整できるようにする必要があります。20チームでは、いくつかの構造とルールが不可欠です。あなたは彼らを技術的解決策でサポートしたいと思うでしょうが、人々が最初に来ます。
notice that someone else is working on the same piece of code and talk to the first one before modifying anything
あなたが言ったようにを離れる場合、バージョン管理システム(CVS / SVN / GIT)が必要です。確かではありませんが、それも含めたい場合は、高度なものが必要になります(何らかのトリガーメカニズム/カスタムなもの)。
ソース管理でファイルをロックしている開発者は問題を簡単に解決できるはずですが、それからもっと大きな問題を抱えているかもしれません。
450万LOCは巨大なサンドボックスであるため、適切に設計および設計されたソリューションでは、複数の開発者チームが互いの足指を踏む状況に陥ることはほとんどありません。これが偶然以上に発生するという事実は、調査すべきいくつかの深刻な潜在的な設計上の欠陥を示しています。
いくつかのこと: