SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

QA to AQ:アジャイル品質パターンによる、伝統的な品質保証からアジャイル品質への変革

品質の特定のためのパターン(2):「測定可能なシステム品質」「品質の折り込み」「着陸ゾーン」

QA to AQ 第6回

着陸ゾーン

  • パターン:着陸ゾーン(原題Agile Landing Zone 原著 Joseph W. Yoder and Rebecca Wirfs-Brock)[2]

 「パックがある場所ではなく、パックが向かっている場所で滑る」 ――Wayne Gretzsky(カナダ出身のアイスホッケー選手)

 複雑なプロジェクトまたはプロダクトでは、プロジェクトの成功に寄与するシステムの品質特性を認識する必要があります。これらの重要な成功基準が、他の無数の要件に負けるようなことがあってはなりません。

 また、システムを実装するときに設計のトレードオフを行う必要があります。ほとんどの場合、これらのトレードオフはアーキテクチャに影響を与えるため、成功の定義はある程度柔軟にする必要があります。別の設計目標を達成するために、ある設計目標で妥協することが必要かもしれません。

 考え抜いた設計のトレードオフへの対応を可能にするためのシステムが持つべき品質特性を、どのように理解して監視できるでしょうか?

***

 優先順位を付け、完成の定義に寄与できるように、重要な品質特性を早期に特定することが重要です。また、何が「これで十分」であるかを定義する際には、ある程度の柔軟性も必要です。つまり、システムが持つべきすべての品質特性について、厳格で迅速な(柔軟ではない)受け入れ基準を求めてはいけません。

 システムの品質特性の中には、目標とする特定の数値はありませんが、最低限許容できる数値については分かっているものがあります。またある品質特性については、特定の目標を設定しているかもしれませんが、他のシステム品質目標を達成するために、その目標に妥協してもかまわない場合もあります。いくつかの品質要件と全体的な説明責任を果たすためには柔軟性が必要です。

***

 したがって、着陸ゾーンを定義して使用します。

 着陸ゾーン[Gilb]は、プロダクトの「リリース可能性」を監視および特徴付けるために使用される一連の基準です。着陸ゾーン[W2011a]は、すべての基準と許容値が固定されていない、もしくは当初は不明であるゾーンです。着陸ゾーンの基準と値は、プロジェクトの存続期間中に形になっていきます。着陸ゾーンの基準は、許容値に許容範囲を提供することを除き、リリースの基準に似ています。目指している数字は1つではありません。対象のシステム品質属性ごとに値の範囲があります。これにより、「十分」であるものを定義する柔軟性が得られ、着陸ゾーンの合意の範囲内でトレードオフを行うことができます。

 着陸ゾーンの基準には、最低、目標、および優良の3つの値があります。最低値は、より高い値を求めているかもしれないが我慢して受け入れられると思っているものです。目標値は、合理的なコストと労力で達成できると思うものです。優良値とは、大きな努力なしでは達成できないと思われるものです。最低値と目標値が同一である場合があります。これは、許容できる品質を達成する上で柔軟性が制限されていることを示します。

 あるいは、要件の柔軟性が最も低い場合、満たす必要のある特定の値を使用して受け入れ基準を定義することもできます。成果にある程度の柔軟性がある品質属性に対してのみ、着陸ゾーンを使用します。

 表2は、ローン処理システムの着陸ゾーンの例です(簡単にするために、すべての値は架空の値で、実際のプロジェクトの着陸ゾーンとは関係ありません)。それぞれの行は、ローン処理システムを使用して実行する必要があるタスクを表します。

 値は、システムを使用してビジネスタスクを完了するのにかかる実際の時間を表します。タスクは、ユーザーによって開始される場合とされない場合があります。一部は、データ受信またはローンの状態の変化(ローンの金利の調整またはローン処理者の割り当て)によって起動されます。その他には、構成データの追加、追加コードの作成、および本番環境への変更の導入が含まれます。

 たとえば、品質属性「新しいローン契約の追加」の最低許容時間は2週間です。目標は、ユーザーが新しいローン契約のすべての情報を入力し、24時間以内にシステムに設定できるようにすることです。「新しいローン商品の追加」は、新しい種類のローンの処理をサポートするために必要ないくつかのアクティビティとアクションを完了するため、2週間を目標としています。

表2:ローン処理システムの着陸ゾーン
品質属性 最低 目標 優良
新しいローン契約の追加 2週間 24時間 12時間
新しいローン商品の追加 3週間 2週間 1週間
ローンの調整 4日間 2日間 1日
ローンリスクのアクセス 1日 6時間 10分間
ローン処理者の割り当て 1ヶ月 1週間 1日

 着陸ゾーンの各行は、測定可能な要件(測定可能なシステム品質を参照)を表します。この要件には、最低、目標、および優良のラベルが付いた許容値の範囲があります。目的は、開発の最後に各要件をこの範囲内に収めることです。範囲内には、目標というラベルの付いた希望された値があります。最低、目標、および優良という値は、予算と与えられた期間に関連しています。

 いくつかの属性がある場合は、パフォーマンス、データ品質、信頼性、使いやすさといったシステム品質カテゴリとその優先度に従って着陸ゾーンを整理すると便利です。表3は、測定対象のシステム品質カテゴリに従って編成された着陸ゾーンの一部を示します。

表3:品質カテゴリ別に編成された着陸ゾーン
カテゴリ 品質属性 最低 目標 優良
パフォーマンス 処理能力
(1日あたりのトランザクション数)
50,000 70,000 90,000
平均トランザクション処理時間 2秒 1秒 1秒未満
       
データ品質 システム間のデータ一貫性
(重要なデータ属性の一貫性の割合)
95% 97% 98%
データ精度 97% 99% >99%
     

 着陸ゾーンは、監視対象をいくつかの重要なものに集中(数百とかではなく)するのに役立ちます。目的は、プロジェクトの成功に不可欠な基準のみを含めることです。そうすることにより、より大きな視野で理解しやすくなります。1つの属性がその最低値を下回っている場合、他の属性はどうなるか? それらも最低値を下回っているか? もしそうであれば、全体的なプロダクトの目的を達成する上で大きな問題を抱えていることになります。そうでなく、すべての要件が正確に目標に合っていなくても、プロダクト/システムの出荷を成功させることができる着陸ゾーンがあります。

 着陸ゾーンの基準が変化し、時間とともに調整されることを予期してください。最初に、今後数か月間に達成する予定の着陸ゾーン部分を定義し、着陸ゾーンの残りの部分を意図的に粗削りのままにしておくこともできます。当初達成可能または合理的な目標と思われたものは、新しい事実または市場の変化を考慮して変更される可能性があります。昨日の製品を今日の市場に届けたいと思う者はいません。リリース基準のような着陸ゾーンは、変更することができ、実際変更されます。

 たとえば、早期に達成された着陸ゾーンの目標を達成するために懸命に働いたが、早期の決定が将来の作業にマイナスの結果をもたらしたことがわかる場合もあります。次の目的を達成するために、どちらかを返済する必要がある技術的負債を作り出した可能性もあります。時間または予算の制約がある場合、着陸ゾーンの再調整を実施する(さらに、期待値を低く設定する)ことを決定できます。

 ロードマップを検証し(品質ロードマップ)、これらのシステム品質属性を着陸ゾーンに含めると、いつ考慮すべきかが把握できるようになります。着陸ゾーンの目標は、品質チャートやシステム品質アンドンに配置するといったさまざまな手段を使って、チームに対してより可視化を行うことができます。

おわりに

 連載の第6回では、アジャイル開発において効率的かつ効果的に品質保証を進めるために有用な実証済みのパターン集QA2AQから、アジャイルで重要な品質を特定するためのパターンをまとめた、分類「品質特性の特定」から3つのパターン「測定可能なシステム品質(Specify Measurable Values or System Qualities)」「品質の折り込み(Fold-out Qualities)」「着陸ゾーン(Agile Landing Zone)」の和訳を提供しました。次回の連載では引き続き、分類「品質の特定」と「品質の可視化」から3つのパターンの和訳を提供する予定です。

参考文献

  • [1] Joseph Yoder, Rebecca Wirfs-Brock, Ademar Aguilar, “QA to AQ: Patterns about transitioning from Quality Assurance to Agile Quality,” 3rd Asian onference on Patterns of Programming Languages (AsianPLoP 2014), Tokyo, Japan, 2014.
  • [2] Joseph W. Yoder and Rebecca Wirfs-Brock, “QA to AQ Part Two: Shifting from Quality Assurance to Agile Quality,” 21st Conference on Pattern Languages of Programs (PLoP 2014), Monticello, Illinois, USA, 2014.
  • [3] Joseph W. Yoder, Rebecca Wirfs-Brock, Hironori Washizaki, “QA to AQ Part Three – Shifting from Quality Assurance to Agile Quality – Tearing Down the Walls,” 10th Latin American Conference on Pattern Languages of Programs (SugarLoafPLoP 2014), Pousada Armação dos Ventos, Brazil, 2014.
  • [4] Joseph W. Yoder, Rebecca Wirfs-Brock, Hironori Washizaki, “QA to AQ Part Four - Shifting from Quality Assurance to Agile Quality - Prioritizing Qualities and Making them Visible,”22nd Conference on Pattern Languages of Programs (PLoP 2015), Pittsbirgh, USA, 2015.
  • [5] Joseph W. Yoder, Rebecca Wirfs-Brock, Hironori Washizaki, “QA to AQ Part Five,” 5th Asian Conference on Pattern Languages of Programs (AsianPLoP 2016), February 24-26, 2016, Taipei, Taiwan.
  • [6] Joseph W. Yoder, Rebecca WirfsBrock, Hironori Washizaki, “QA to AQ – Part Six – Being Agile at Quality,” 23rd Conference on Pattern Languages of Programs (PLoP 2016), Monticello, Illinois, USA, OCTOBER 24-26, 2016.
  • [BCK] Bass, Len, Clements, Paul and Kazman, Rick, Software Architecture in Practice (2nd Edition), Addison-Wesley, 2003.
  • [BBC] Bransford T., Brown A., and Cocking, R., How People Learn: Brain, Mind, Experience and School. National Academy Press, 2000.
  • [Brown] Brown T., The hunt is on for the Renaissance Man of computing, in The Independent, September 17, 1991.
  • [CH] Coplien J. and Harrison, N., Organizational patterns of agile software development. Wiley, 2004.
  • [Duv] Duval, Paul. Continuous Integration: Patterns and Anti-Patterns. DZone, 2010. 
  • [GILB] Gilb, Tom. 2005. Competitive Engineering: A Handbook For Systems Engineering, Requirements Engineering, and Software Engineering Using Planguage. Butterworth-Heinemann.
  • [Knuth] Knuth, D., “Structured Programming With Go To Statements,” Computing Surveys, Vol 6, No 4, December 1974, pp. 261-301.
  • [MR] Manns, M. L., and Rising, L. Fearless Change: Patterns for Introducing New Ideas. Addison-Wesley Professional, 2004.
  • [MYGA] Merson P., Yoder J., Guerra E., and Aguilar A., “Continuous Inspection: A Pattern for Keeping your Code Healthy and Aligned to the Architecture,” 3rd Asian Conference on Patterns of Programming Languages (AsianPLoP), Tokyo, Japan, 2014.
  • [W2011a] Wirfs-Brock R., (July 28, 2011). Agile Landing Zones,

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
QA to AQ:アジャイル品質パターンによる、伝統的な品質保証からアジャイル品質への変革連載記事一覧

もっと読む

この記事の著者

鷲崎 弘宜(ワシザキ ヒロノリ)

 早稲田大学 研究推進部 副部長・グローバルソフトウェアエンジニアリング研究所所長・教授。国立情報学研究所 客員教授。株式会社システム情報 取締役(監査等委員)。株式会社エクスモーション 社外取締役。ガイオ・テクノロジー株式会社 技術アドバイザ。ビジネスと社会のためのソフトウェアエンジニアリングの研究、実践、社会実装に従事。2014年からQA2AQの編纂に参画。2019年からは、DX時代のオープンイノベーションに役立つデザイン思考やビジネス・価値デザインからアジャイ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

長谷川 裕一(ハセガワ ユウイチ)

 合同会社Starlight&Storm 代表社員。日本Springユーザ会会長。株式会社フルネス社外取締役。 1986年、イリノイ州警察指紋システムのアセンブリ言語プログラマからスタートして、PL,PMと経験し、アーキテクト、コンサルタントへ。現在はオブジェクト指向やアジャイルを中心に、コンサルテ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

濱井 和夫(ハマイ カズオ)

 NTTコムウェア株式会社 技術企画部プロジェクトマネジメント部門、エンタープライズビジネス事業本部事業企画部PJ支援部門 兼務 担当部長、アセッサー。PMOとしてプロジェクトの適正運営支援、及びPM育成に従事。 IIBA日本支部 教育担当理事。BABOKガイド アジャイル拡張版v2翻訳メンバー。ビジネスアナリシス/BABOKの日本での普及活動に従事。Scrum Alliance認定Product Owner。SE4BS構築やQA2AQ翻訳チームのメンバー。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

小林 浩(コバヤシ ヒロシ)

 株式会社システム情報 フェロー CMMコンサルティング室 室長。CMMI高成熟度リードアプレイザー(開発,サービス,供給者管理)。AgileCxO認定APH(Agile Performance Holarchy)コーチ・アセッサー・インストラクター。Scrum Alliance認定ScrumMaster。PMI認定PMP。SE4BS構築やQA2AQ翻訳チームのメンバー。CMMIやAPHを活用して組織能力向上を支援するコンサルテ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

長田 武徳(オサダ タケノリ)

 株式会社エヌ・ティ・ティ・データ シニアITアーキテクト。ITサービス・ペイメント事業本部所属。2006年入社以来、決済領域における各種プロジェクトを担当後、2018年よりプロダクトオーナ・製品マネージャとしてアジャイル開発を用いたプロジェクトを推進。現在は、アジャイル開発におけるQAプロセスの確...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

田村 英雅(タムラ ヒデノリ)

 合同会社 GuildHub 代表社員。日本 Spring ユーザー会スタッフ。大学で機械工学科を専攻。2001 年から多くのシステム開発プロジェクトに従事。現在では主に Java(特に Spring Framework を得意とする)を使用したシステムのアーキテクトとして活動している。英語を用いた...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

陳 凌峰(チン リョウホウ)

 フリーランサー。2003年に上海交通大学(ソフトウエア専門)を卒業後、2006年から日本でシステム開発作業に従事。技術好奇心旺盛、目標は世界で戦えるフルスタックエンジニア。現在はマイクロサービスを中心にアジャイル 、DevOpsを展開中。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/13440 2021/01/27 11:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー