耇雑なアゞャむル環境での䟝存関係の管理

蚘事「倧芏暡アゞャむル環境での䟝存関係管理」の翻蚳。



短いレビュヌ



Salesforce.comの開発郚門には、同じバヌゞョン管理ブランチの共通コヌドで共同䜜業する30以䞊のスクラムチヌムが含たれおいたす。 この蚘事では、セヌルスフォヌス・ドットコムがスクラムアプロヌチを拡匵し、チヌムの盞互䜜甚を管理するために䜿甚する方法に぀いお説明したす。



1はじめに



2006幎10月、salesforce.comの開発および開発RD郚門は、りォヌタヌフォヌルモデルからスクラムベヌスのアゞャむル手法ぞの倧芏暡な移行を開始したした。 その時点で、以前のメゞャヌリリヌスから10か月が経過し、新しいリリヌスのリリヌス日はすでに5回延期されたした。 補品がめったに生産されず、深刻な遅延を䌎うこずに倚くの人が怒っおいたした。 リリヌスが完了するのを埅たずに、既存のチヌムをスクラムチヌムに再線成し、スクラムプロセスを䜿甚しお、2007幎2月にリリヌスをリリヌスしたした。 それ以来、新しい柔軟なアプロヌチを䜿甚しお、SaaSアプリケヌションのセットずForce.comプラットフォヌムの5぀のメゞャヌリリヌス3〜4か月間継続をすでにリリヌスしおいたす。 それらのそれぞれは、スケゞュヌルされた日に正確に行われたした。



再線成䞭、私たちは個々のチヌムのスクラムの掚奚事項に埓いたしたが、チヌム間の盞互䜜甚にはあたり泚意を払いたせんでした。 チヌムを線成しお、チヌム間の䟝存関係を最小限に抑えようずしたしたが、コヌドは䞀晩で倉曎されなかったため、倚くの関係が残っおいたした。 すぐに、スクラムオブスクラムミヌティングを導入したした。 これらの䌚議は、問題や状況を議論するのに圹立ちたしたが、䌚議だけでは十分ではありたせんでした。 最埌の5぀のリリヌスに取り組んで、チヌムの盞互䜜甚を改善する远加のアプロヌチを詊し、掗緎したした。 この蚘事の埌半では、䟝存関係管理のいく぀かの問題ず、これらの問題をどのように克服するかに぀いお説明したす。



2チヌム構造



salesforce.comの補品開発は、アプリケヌション、プラットフォヌム、コアむンフラストラクチャの3぀の郚門で構成されおいたす。 これらの3぀のナニットには、合蚈30を超えるスクラムコマンドが含たれおいたす。 各スクラムチヌムには、開発者、テスタヌ、プロダクトオヌナヌ、およびスクラムマスタヌ通垞は開発者、テスタヌ、たたはプログラムマネヌゞャヌの頭がいたす。 耇雑な機胜の堎合、スクラムチヌムは他の機胜チヌムの代衚者も匕き付けたす。たずえば、システムテスト、ドキュメント、UIデザむン、ナヌザビリティ、テクノロゞヌオペレヌション、リリヌス゚ンゞニアリングなどです。

通垞、すべおのスクラムチヌムは、同じコヌドブランチの同じリリヌスで䜜業したす。 圓瀟の補品は盞互に接続されおいるため、異なるチヌムの機胜は、機胜的にも技術的にも非垞に密接に絡み合っおいたす。 技術的な実装の芳点から、倚くのチヌムは共通のコヌドを䜿甚したす。 機胜面では、同じ゚ンドナヌザヌの機胜に取り組んでいるチヌムは、調和のずれた䞀貫したナヌザヌ゚クスペリ゚ンスを䜜成するために密接に連携する必芁がありたす。



3䟝存関係管理が難しいのはなぜですか



非垞に倚くのチヌムが1぀のリリヌスに取り組み、共通の機胜を導入し、䞀般的なコヌドを倉曎するず、開発プロセス䞭に遭遇するすべおの問題、驚き、倉曎、倱敗、成功を予枬するこずは䞍可胜です。 この予枬䞍可胜性は、䟝存関係管理が非垞に難しい理由の1぀です。 このセクションの埌半では、さらにいく぀かの理由に泚意したす。 すべおの決定は、これらの基本的な察立ず課題に向けられるべきです。



3.1システムの耇雑さ


䟝存関係を識別するこずは、それらを管理する最初のステップです。 倚くの成熟した補品ず同様に、salesforce.comシステムは耇雑すぎお、1人の個人たたはチヌムがすべおの関係を把握しお蚘憶するこずができたせん。 䞭毒を特定し、認識するために、私たちはたすたす倚くの人々の集合的な知識に頌らなければなりたせん。 そのような知識を組み合わせお、人々ず情報をそれを必芁ずする人々ず結び぀けるこずが䞍可欠です。 提案された倉曎の䟝存関係ず結果を決定する重芁な圹割は、システムを広く理解しおいる専門家によっお果たされたす。 ただし、システムが成長し、より耇雑になるず、知識の専門化ず断片化を避けるこずは困難です。 さらに、珟圚の倉曎数では、各新機胜の詳现を専門家に確認するよう䟝頌するこずは実甚的ではありたせん。 このような倉曎に特別な泚意を払うために、他のチヌムの䜜業に圱響を䞎えるたたは䟝存する可胜性が高い倉曎を識別する方法が必芁です。 もちろん、これはそれほど簡単ではありたせん。比范的小さな倉曎がシステム党䜓に深刻な圱響を䞎える堎合があるためです。



3.2優先順䜍の競合


䟝存関係は、チヌム間の競合に぀ながる可胜性がありたす。 あるチヌムが他のチヌムに䜕かをしたい堎合は、これらのチヌムのプロダクトオヌナヌがこの䜜業に぀いお話し合い、優先順䜍を付けたす。 議論の結果に基づいお、期限に同意するこずが可胜であれば、将来、この䟝存関係を管理するこずは非垞に簡単です。 明確な合意に達しおいない堎合、たたは䜜業の優先床がただ䜎い堎合、この関係に関する䞍確実性ずリスクのレベルが高たりたす。



あるチヌムが別のチヌムに䜜業を远加する倉曎を加えた堎合にも、競合が発生したす。 たずえば、あるチヌムがアヌキテクチャを倉曎した堎合、残りのチヌムはこれらの倉曎に適応する必芁がありたす。 倉曎が他のチヌムに明らかなメリットをもたらすずは限らないため、特に突然珟れた堎合、人々は気分を害し、远加の䜜業の倖芳に腹を立おるこずがありたす。 私たちは初期段階でそのような䟝存関係を特定しようずしたすが、すでに行われた倉曎のため、たたは優先順䜍のレビュヌ埌に、それらのいく぀かは必然的に埌で珟れるようになりたす。



3.3蚈画の倉曎


スクラムの利点の1぀は、スプリントごずにチヌムの優先順䜍を倉曎できるこずです。 ただし、これにより䟝存関係の䜜業が耇雑になりたす。 リリヌスサむクルの最初の段階で、すべおの䟝存関係を特定しお怜蚎するこずはできたせん。 関係分析は、継続的で継続的なプロセスに䌌おいたす。 䜜業が進むに぀れお、䟝存関係が珟れたり消えたりしたすが、チヌムは䜕をする必芁があるかを詳现に調敎したす。 したがっお、このような䟝存関係を管理するプロセスは動的でアクティブでなければなりたせん。



3.4リリヌスサむクルが短く重耇しおいる


リリヌスサむクルが短いず、チヌム間の調敎時間が短くなるため、関係ずその圱響を早期に特定する必芁がありたす。 salesforce.comでは、新しいリリヌスの蚈画は前のリリヌスが完了する前に開始されるずいう意味で、リリヌスサむクルが重耇しおいたす。 これは意図的に行われたした。䞀郚のチヌムは既に解攟されおおり、新しいリリヌスの䜜業を開始する可胜性があるためです。 ただし、残りのチヌムは蚈画が遅れ、次のリリヌスの䟝存関係の説明をスキップする堎合がありたす。 これは、関係を明確にするための集団的知識の重芁性を考えるず、深刻な問題です。



4特別なアプロヌチ



このセクションでは、䟝存関係を管理し、䞊蚘の問題に察凊するために䜿甚する特定のアプロヌチに぀いお説明したす。 これらのアプロヌチで䜿甚される䞀般的な戊略







4.1リリヌスの開始


珟圚のメゞャヌリリヌスのリリヌスの玄1か月前に、次のリリヌスのキックオフミヌティングを手配したす。 䌚議には䌚瀟の党埓業員が参加したす。 ビゞネスナニットの副瀟長は、各チヌムが新しいリリヌスで取り組む予定の機胜を䞀般的な甚語で抂説したす。 この䌚議は、関係を管理するのに圹立ちたす。 たず第䞀に、それはチヌムが意図された日付の最初のリリヌス蚈画を準備するこずを奚励したす。 チヌムが珟圚のリリヌスからの䜜業が䞍完党な堎合、このチヌムは次のリリヌスの蚈画を遅らせ始めたす。 この堎合、䌚議は予定より早く蚈画するのに圹立ちたす。 䟝存関係を特定し、それが䜕をするのかわからないチヌムず矩務に぀いお議論するこずは困難です。 キックオフミヌティングは、チヌムの同期ポむントずしお機胜し、チヌムむンタラクションの生産的な議論を確実にしたす。



たた、䌚議の埌、チヌムのリリヌス蚈画が呚知されたす。 私たちはすべおのチヌムが䜕をしおいるのかに぀いお高い意識を獲埗するよう努めおいたす。 すべおのRDリヌダヌがキックオフミヌティングに参加し、人々を惹き぀け、リリヌス蚈画に集䞭するのを助けたす。 高レベルの参加は、期埅を調敎し、リリヌス蚈画に぀いお取締圹䌚に通知するのに圹立ちたす。



もちろん、蚈画はプロセス内で倉曎および倉曎できたす。 少し前に、毎月のスプリントレビュヌの間に、打ち䞊げミヌティングの曎新されたプレれンテヌションのレビュヌを開始したした。 曎新されたプレれンテヌションには、どの機胜が陀倖たたは远加されたかが瀺され、リリヌス䞭の蚈画の明確さず宣䌝を維持するのに圹立ちたす。



4.2関係セッション


初期リリヌス蚈画を準備しおおくず、チヌムは関係をより密接に議論でき、そのような議論の倚くは自然発生的に起こりたす。 これに加えお、すべおのチヌムの代衚者が協力しお䜜業する堎合、関係を特定するためにより正匏なセッションを実斜するこずは非垞に䟡倀があるず考えたした。 この䌚議で発衚された蚈画の質を向䞊させるために、リリヌスの打ち䞊げ䌚議の盎前にそのようなセッションを実斜するこずが最も有甚です。



関係識別セッションは非垞に簡単です。 すべおのスクラムチヌムの代衚者ほずんどの堎合、スクラムマスタヌたたはプロダクトオヌナヌは、倧きなボヌドのある郚屋に集たりたす。 セッションの最初の郚分では、すべおの参加者がボヌド䞊のチヌム間の䟝存関係の2぀の図を同時に描きたす。 1぀の図は、別のチヌムが䜕かをする必芁があるチヌムを瀺しおいたす。 2番目の図は、他のチヌムの䜜業に圱響を䞎える䜕かをしおいるチヌムを瀺しおいたす。 これらの図には、いく぀かの簡単なルヌルを䜿甚したす。





最初は混乱が支配したすが、誰もが自分の関係を匕き出し、オブザヌバヌは質問をしお远加の䟝存関係を指摘したす。 箄20分埌、チャヌトが安定し、コメントがなくなりたす。 その埌、各チヌムの代衚者に䟝存関係に぀いお簡単に話しおもらいたす。



非垞に短い時間で、リリヌスの関係の党䜓像を䜜成したす。 図 図1は、読みやすくした埌の兞型的なセッション結果を瀺しおいたす。 ホットスポットはすぐに識別されたす぀たり、倚数の䟝存関係を持぀チヌム。 䞀貫性のない䟝存関係を持぀チヌムも衚瀺されたす。 そのようなチヌムは、関係が合意されるたで蚈画を達成しないリスクが最も高くなりたす。





図1 盞互䟝存関係チャヌトの䟋



4.3公開蚎議


最近、キックオフミヌティングから1週間以内に、オヌプンミヌティングを開催したした。その䞻な目的は、チヌムのリリヌス蚈画に関連する問題を議論するためのプラットフォヌムを䜜成するこずです。 これらの䌚議には、各スクラムチヌムから少なくずも1人の代衚者が参加する必芁がありたす。そうでない堎合、参加する必芁はありたせん。 通垞、公開䌚議の開始時に、参加者はディスカッションのトピックを提案したす。 その埌、45分以内にグルヌプのトピックに぀いおディスカッションが行われ、グルヌプはディスカッションの結果に぀いお残りの郚分を話したす。 ほずんどの堎合、参加者は、他のチヌムに圱響を䞎える倉曎に぀いおだけでなく、新しい䟿利な機胜の詳现を孊びたいず考えおいたす。 開かれた䌚議の参加者は、このような議論の有益性に留意し、さらに、通垞の仕事ではやり取りしない他のチヌムの同僚ずコミュニケヌションを取るこずは興味深いず感じたした。 オヌプンミヌティングはただ新しい圢匏であるため、次のようなさたざたなオプションを詊しお、䜕がより効果的に機胜するかを理解したす。







4.4蚭蚈の抂芁


機胜蚭蚈レビュヌ䌚議の䞻な目暙は、補品の品質ず䜿いやすさの党䜓的なレベルを向䞊させるこずです。





これらのクロスチヌム䌚議は、重芁、最も耇雑、たたは特にリスクがあるず考えられる機胜の機胜蚭蚈ずナヌザヌむンタラクションに焊点を圓おおいたす。 このような䌚議では、以前に怜出されなかった䞍敎合および䟝存関係を分析および特定するよう努めおいたす。



このような䌚議には、䞻に2぀のタむプがありたす。 リリヌスサむクルの初期段階では、参加者は蚭蚈抂念に焊点を圓お、既存の機胜ず新しい機胜の間の䞀貫性ず効果的な盞互䜜甚を達成するよう努めたす。 この段階では、通垞、補品所有者ずナヌザヌむンタヌフェむスデザむナヌUIが䌚議に参加し、堎合によっおは開発やQAなどの他の機胜チヌムの代衚者も参加したす。



リリヌスサむクルの途䞭で、参加者の構成は倉化しおいたす。珟圚は䞻にQAず郚分的な開発の代衚者であり、実装の詳现に焊点が圓おられおいたす。 これらの䌚議は、以䞋に関する理解ず明確さを提䟛したす。







4.5仮想アヌキテクチャチヌム


Virtual Architecture TeamVATは、すべおのスクラムチヌムの開発者が含たれおいるため、「仮想」です。 チヌムメンバヌは、アプリケヌション、プラットフォヌム、たたはコアむンフラストラクチャビゞネスナニットのスクラムチヌムの䞀郚ずしお、コアの責任から䞭断するこずなくVATで䜜業したす。



VATは、゜フトりェアのアヌキテクチャのサポヌトず開発を担圓しおいたす。 チヌムは、アヌキテクチャ開発のロヌドマップを定矩し、アヌキテクチャの芳点から䞻芁な倉曎をレビュヌし、コヌドの互換性ずサポヌトを確保するためのコヌディング暙準を決定したす。



VATは、重芁な建築プロゞェクトのバックログず必芁なリファクタリングを管理したす。 補品の開発に䌎い、機胜を再蚭蚈し、叀い最適でないコヌドを削陀する必芁がありたす。 開発者は、プログラムのコヌドが倚くを残しおいるこずを理解しおいる堎合でも、既に実行䞭のプログラムを倉曎したくない堎合がありたす。 プロダクトオヌナヌは、すでに機胜しおいるものをどのように䜜り盎すかよりも、新しい機胜がどのように開発されるかを芋るのを奜みたす。 このようなムヌドに察凊するには、各ビゞネスナニットは、VATが掚奚する倉曎に぀いお、各リリヌスで少なくずも20の時間を蚈画する必芁がありたす。



VATは、スクラムチヌムによっお䜜成された補品ず機胜の技術的な実装を確認するために、週に2回、2時間収集されたす。 最も耇雑なリリヌス機胜に取り組んでいるチヌムは、VATを提出する必芁がありたす。 VATは、技術的な決定が他のチヌムにどのように圱響するか、他のチヌムの開発が機胜にどのような圱響を䞎えるかに぀いお、スクラムチヌムにフィヌドバックを提䟛したす。 VATは、䞻に技術的な実装、特にスケヌラビリティずパフォヌマンスの偎面に焊点を圓おおいたす。 機胜の蚭蚈に倧きな倉曎が必芁な堎合、スクラムチヌムは同じリリヌスサむクルで機胜を再送信し、VATに蚭蚈の倉曎方法を瀺す矩務がありたす。



4.6継続的むンテグレヌション


自動化されたアセンブリ、テスト、および゜ヌトトリアヌゞのためのWebベヌスのむンフラストラクチャにより、ビルドシステムが継続的に統合され、コヌドの各行のステヌタスを監芖できたす。 このむンフラストラクチャは、すべおの開発者ずQA゚ンゞニアが共通のコヌドベヌスで䜜業できるようにする重芁な偎面です。



JUnit拡匵機胜䞊に構築されたメむンテストスむヌトを䜿甚するず、Force.com APIを䜿甚しお機胜テストを䜜成できたす。 さらに、Seleniumを䜿甚しおUIを介しお実行する必芁があるテストケヌスを自動化するナヌザヌむンタヌフェむステストフレヌムワヌクがありたす。



自動化ぞのアプロヌチを定矩するいく぀かの基本原則を以䞋に瀺したす。



  1. 開発者が迅速にフィヌドバックしお、倉曎の結果を確認できるようにしたす。 各コミットは、ビルドの構築ず䞀連のテストの実行を開始したす。 ゚ラヌが発生した堎合、責任ある゚ンゞニアはすぐに゚ラヌメッセヌゞを受け取りたす。 基本的な䞀連のテストは30分で完了し、開発者は自分が行った倉曎の怜蚌結果を受け取りたす。 1日を通しお定期的に、䞀連の拡匵テストが実行されたす。
  2. ビルドをすばやく修埩し、障害をテストしたす。 これを行うには、所有者を毎週倉曎する「アセンブリりィザヌド」の圹割がありたす。 通垞、この圹割は、密接に盞互䜜甚する2人の人々、぀たり開発マネヌゞャヌずシニア開発者によっお果たされたす。 ビルドりィザヌドは、ビルド結果の確認、さたざたなコヌド行のテスト履歎ず゚ラヌの远跡、および修正のために特定の開発者にバグを割り圓おる圹割を担いたす。 デヌタベヌスに収集されたテスト結果テストの成功率、ビルド時間、倱敗数などに基づいおさたざたなメトリックを衚瀺する特別なパネルがありたす。 アセンブリりィザヌドはこのデヌタを䜿甚しお、アセンブリステヌタスレポヌトを準備したす。
  3. 自動テストで高レベルのカバレッゞを維持したす 。 通垞、スクラムチヌムは、自動テストでコヌドの70〜80をカバヌする傟向がありたす。 圓瀟の最も重芁な資産の1぀は、3〜4か月ごずに高品質のリリヌスを提䟛する䞊で重芁な圹割を果たす䞀連の自動テストです。




4.7スクラムオブスクラム


すべおのビゞネスナニットは、Scrum-of-Scrumsの毎週の䌚議を開催し、Scrum-of-Scrum-of-Scrumsがありたす。 時々、共通の目暙で密接に連携するチヌムのグルヌプのために远加のスクラムオブスクラムを線成したす。 いく぀かの異なるScrum-of-Scrums圢匏を詊したした。 チヌムは、暙準の「4質問」圢匏から始めたした。チヌムが䜕をしたか、䜕をしようずしおいるのか、䜕をブロックしおいるのか、他のチヌムの䜜業に圱響を及がす䜕かをしおいるのかを報告するずきです。 最初はうたくいきたしたが、チヌムの数が倚いためすぐに退屈で退屈になりたした。 その埌、参加者が議論のためにトピックを提案し、䌚議の最初にボヌドにそれらを曞き出すずき、私たちはよりオヌプンな圢匏の自己組織化に進みたした。 これにより、参加者は集䌚の内容に責任を負わされ、より生産的な議論に぀ながりたした。 クロスコマンド䟝存関係の問題は、特に開発の初期段階で、スクラムオブスクラム䞭に頻繁に発生したす。 スクラムオブスクラム䞭に関係認識セッションが開催され、今埌2週間から3週間にわたっお、この䌚議ではコマンド間の䟝存関係の倉曎に぀いお頻繁に議論されたす。



4.8ステヌタスレポヌト


チヌムがスクラムに切り替えるず、曞面によるレポヌトが䞍芁になるこずがよくありたす。これは、他の事項スプリントレビュヌ、バヌンダりンチャヌト、毎日のスタンドアップミヌティングによっお状態が明確になったためです。 スクラムに切り替えたずき、すべおのスクラムマスタヌが準備する軜量の週次ステヌタスレポヌトを保持するこずにしたした。 Scrum-of-Scrumsに「4問」圢匏を䜿甚しおいる間は冗長に芋えたした。 ただし、珟圚開かれおいるスクラムオブスクラム圢匏では、週次レポヌトがこの䌚議に重芁な远加ずなっおいたす。 Scrum-of-Scrumsの各チヌムのステヌタスに぀いおは、個別の問題ずしお提出されない限り、説明したせんが、このステヌタスは週次レポヌトで垞に確認できたす。 レポヌトは、すべおの䟝存関係、ブロッカヌ、リスクを特定したす。 もちろん、このようなレポヌトにはスクラムマスタヌの倚少の䜙分な劎力が必芁ですが、レポヌトを提䟛するこずでレポヌトを䜜成するコストが正圓化されたす。



5結論



Salesforce.comは、Scrumの拡匵性が実珟可胜であるこずを蚌明しおおり、䌚瀟の成長に合わせお拡匵を続けるこずができるず確信しおいたす。 チヌムの数が増えるに぀れお、関係管理ずチヌムの調敎は困難なタスクになりたす。 堅牢なビルドず自動化されたテストむンフラストラクチャが重芁です。 キックオフミヌティング、リレヌションシップディスカバリセッション、スクラムオブスクラム、および軜量ステヌタスレポヌトにより、認識ず同期が非垞に圹立ちたす。 最終的に、これはチヌム間の効果的なコミュニケヌション、盞互䜜甚、知識の亀換に぀ながりたす。 仮想アヌキテクチャチヌム、オヌプンディスカッション、スクラムオブスクラムなどのアプロヌチは、コミュニケヌションを支揎し、コラボレヌションをサポヌトするように蚭蚈されおいたす。



All Articles