私たちのチームは空間と時間に分散しているため、コードのアーキテクチャについてリアルタイムで議論することはできません。ドキュメントを介してどのように議論できますか:コードインターフェイスの記述/コメント/変更、コードアーキテクチャの履歴の追跡?このための特定のツールはありますか?最良の方法は何ですか:クラス図、コードインターフェイス、何か違うものですか?私たちはc#とVS2010を使用しています
コードアーキテクチャについてリモートで話し合い/計画/交渉するための最良の方法は何ですか?
チームによっては、たくさんのテクニックがあります。チームの好みに応じて、バージョン管理を使用してから、ワードプロセッサとダイアグラムエディタ(バージョンまで)で標準化することを強くお勧めします。これにより、作成された図やドキュメントを誰もが表示および編集できるようになります。
多くのバージョン管理システムの主な問題は、バイナリファイルを差分またはマージできないことです。ワードプロセッサやダイアグラムエディタによって生成されるものの多くはバイナリファイルであるため、これに注意する必要があります。他の人の仕事を踏みつけないように注意してください。
ドキュメントを介してどのように議論できますか:コードインターフェイスの記述/コメント/変更、コードアーキテクチャの履歴の追跡?
アーキテクチャについて説明するときは、システムのさまざまなタイプのビューを実現することが重要です。さまざまな利害関係者が、分析、詳細設計、および実装を実行するために システムのさまざまなビュー を必要とします。ビューのセットの例は、 4 + 1 Architectural View Model で、一連のさまざまなUML図を使用してシステムのさまざまな側面を示します。私は4+ 1モデルに焦点を当て、受講したソフトウェアアーキテクチャコースの各ビューに適切なUML図を選択しました。
さまざまなUMLダイアグラムを使用している場合は、必要なダイアグラムを特定する必要があります。 4 + 1モデルは、ビューごとにさまざまな図を提案しますが、UML 2.2には14種類の図があり、役立つ図はプロジェクトによって異なります。
コードインターフェイスに関しては、アーキテクチャフェーズで詳細になりすぎないでください。あなたが知っているクライアントによって期待される特定のインターフェースがあるかもしれません(特にあなたが消費のためのAPIを作成している場合)、そしてそれらで作業することは問題ありません。ただし、クラスレベルでの特定の詳細に関しては、要件で明確に指定されていないものに巻き込まれないでください。これは、後で設計で発生する可能性があります。
使用しているバージョン管理は、変更を追跡できます。前に述べたように、おそらく多くのバイナリファイルを操作することになります。そのため、ファイルの差分が難しくなるため、特に注意して詳細な変更メモを使用する必要があります。
私たちはc#とVS2010を使用しています
アーキテクチャ、さらには高レベルの設計上の決定は、使用している実装言語やツールから独立している必要があります。使用しているツールが、詳細な設計上の決定に入るまでガイドさせないでください。詳細な設計上の決定を行うときは、アーキテクチャと以前に行った高レベルの設計上の決定を実現するのに最も役立つ言語機能を選択してください。
メールと一緒にソース管理にチェックインされたGoogleドキュメントまたはドキュメントファイルは、ほとんどの場合問題なく機能します。ドキュメントをバージョン管理できるのは素晴らしいことですが、Googleドキュメントはリアルタイムであるため、チェックインを待つ必要はありません。この方法はすべての人にとって十分ではないかもしれませんが、最も単純な方法が常に最初に検討されます。
Campfire を見てください、それはあなたが求めているものにかなり適しているようです。テキスト、ファイル、コード、画像のチャットを行います。履歴が保存されるので、前に説明した内容を確認できます。無料トライアルがありますので、試してみてください...
より多くの機能が必要な場合は、役立つプラグインがあると思います。
(37signalsとは関係ありません)
空間や時間にそれほど散らばっていませんが、デザイン/アーキテクチャ/ドキュメント関連の知識を伝えるために、デザインドキュメントの代わりに「デザインビデオ」を使用することがあります。これはあなたの場合に便利かもしれないと思います。
すでにVS2010を使用しているので、TFSを使用して2010 Ultimateにアップグレードできますか?
機能を比較できます ここ これは、世界中に分散し、さまざまなタイムゾーンで作業しているチームでかなりの程度使用されています。ただし、コストがかかります。ここで説明した他のソリューションと比較してどうなるかわかりません。
これは、このサイトの多くのユーザーにとって当たり前のように思えるかもしれませんが、私のツールセットにとってはかなり新しいので、私はまだ興奮しています。バージョン管理ツール(さまざまなプロジェクトでCVS、Subversion、Mercurialを使用しました)で私のお気に入りの1つは、ソースファイルだけがそれらに入れることができるわけではないという事実です。リポジトリには任意の形式のファイルを含めることができます。つまり、選択した形式の設計ファイルとドキュメントファイルを含めることができます。名前の付いたアイテムのような従来のバージョン管理に加えて、Dropboxは複数のデバイス間でファイルの共有コレクションを持つための優れたツールです。
このようなツールと、利用可能な多くのリモートデスクトップ/リモートプレゼンテーションツールの1つ(Teamviewer(Windows)とNoMachine(Linux)が好き)を組み合わせると、目的の効果を簡単に引き出すことができます。
VS2010 Ultimateを入手した場合、コードから依存関係グラフを生成して、関係、名前空間、クラス、メンバーなどを視覚化するのに役立てることができます。コードやその他のUMLダイアグラムから、レイヤーダイアグラム、シーケンスダイアグラム、クラスダイアグラムを作成することもできます。
詳細については、次のMSDNライブラリトピックを参照してください。 アプリケーションのモデリング
低いメーリングリストとIRCを忘れないようにしましょう。
.dotファイルはプレーンテキストであり、コードで生成できるため、graphvizを使用することもできます...プレーンテキストはバージョン制御システムに適しています。
ツールに加えて、トレーニングと一般的な語彙があります。
アーキテクチャパターンのトレーニングに投資します。
次に、誰かが「シングルトンパターンを使用する」、「リポジトリパターンを使用する」、または「ファサードパターンを使用する」と言うと、誰もが彼らが話していることを知っています。
すべてのドキュメントにGoogleドキュメントを使用しています。これにより、同僚は最新の変更をリアルタイムで確認でき、改訂履歴を保持し、アクセス権管理をサポートし(したがって、愚かな上司がファイルをいじることができません;)、コメントを残すことができます。フォルダを作成して同僚と共有するだけです。ドキュメントに画像を挿入することもできるので、完全です。先に進んでコーディングする準備ができたら、どこからでもドキュメントにアクセスできるので、どこからでも作業できますが、分散プロジェクトではバグトラッカーの使用が不可欠だと思います---私は個人的にRedmineが好きです。