問題フレームアプローチ

問題分析、あるいは問題フレームアプローチは、ソフトウェア要件分析のアプローチの一つです。 1990年代に イギリスのソフトウェアコンサルタント、マイケル・A・ジャクソンによって開発されました。

歴史

問題フレームアプローチは、ジャクソンが著書『ソフトウェア要件と仕様』(1995年)およびソフトウェア工学に関する様々な学術誌に掲載された多数の論文で初めて概説しました。最も詳細な解説は、彼の著書『問題フレーム:ソフトウェア開発問題の分析と構造化』(2001年)でなされています。

問題フレームに関するセッションは、2003年にオーストリアのクラーゲンフルト/フェルデンで開催された第9回国際要件工学ワークショップ(REFSQ)の一環として開催されました。 [1]問題フレームの応用と進歩に関する第1回国際ワークショップ[2]は、スコットランドのエディンバラで開催されたICSE'04の一環として開催されました。このワークショップの成果の一つとして、2005年にInternational Journal of Information and Software Technology誌に問題フレームに関する特集号が掲載されました

問題フレームの応用と進歩に関する第2回国際ワークショップ[3]は、中国の上海で開催されたICSE 2006の一環として開催されました。問題フレームの応用と進歩に関する第3回国際ワークショップ(IWAAPF)[4]は、ドイツのライプツィヒで開催されたICSE 2008の一環として開催されました。2010年には、IWAAPFワークショップは問題指向の応用と進歩に関する国際ワークショップ(IWAAPO)に置き換えられました。IWAAPOはワークショップの焦点を広げ、問題分析を重視するソフトウェア開発への代替的かつ補完的なアプローチも取り入れています。[5] IWAAPO-2010は、南アフリカのケープタウンで開催されたICSE 2010の一環として開催されました。[6]

現在、問題フレームアプローチに関する研究は多くの大学で行われており、特にイギリスのオープン大学では「問題と解決の構造の関連付け」という研究テーマの一環として行われている[7] [8]。

問題フレームアプローチの考え方は、問題指向開発(POD)と問題指向エンジニアリング(POE)という概念へと一般化され、問題指向ソフトウェアエンジニアリング(POSE)はそのサブカテゴリーの一つです。問題指向開発に関する第1回国際ワークショップは2009年6月に開催されました。

概要

基本理念

問題分析、あるいは問題フレームアプローチは、コンピュータソフトウェアの要件収集と仕様作成に用いられるアプローチ(概念の集合)です。その基本的な考え方は、他のソフトウェア要件定義手法とは大きく異なり、以下の点を主張しています。

  • 要件分析に取り組む最良の方法は、ユーザー要件を階層的ではなく並列的に分解するプロセスです。[9]
  • ユーザー要件は、ソフトウェア システムやソフトウェア システムとのインターフェースではなく、現実世界 (アプリケーション ドメイン)における関係に関するものです。

解決策はコンピュータとそのソフトウェアの中にあり、問題は外の世界にあると認識する方がより役に立ちます。コンピュータは外の世界とつながっているため、これらの問題に対する解決策を提供することができます。 [10]

教訓は明白です。問題を研究し分析するには、問題の世界をある程度深く研究し分析することに集中しなければなりません。そして、その調査のために、コンピュータからある程度の距離を離れる覚悟が必要です。... [通話転送の問題では...]そこに何があるのか​​(人、オフィス、休暇、オフィスの移転、責任の委譲)を記述し、 システムが [問題の世界で]どのような効果を達成したいのか(A の番号への通話は A に届く必要があり、 [B が休暇中で、C が一時的に D のデスクで働いている場合]、 B または C の番号への通話は C に届く必要がある) を記述する必要があります。 [11]

これらはどれもコンピュータとのインターフェースには現れません。…それらはすべて、それよりもさらに深い世界にあります。 [12]

このアプローチでは、3 セットの概念ツールを使用します。

特定の問題を記述するためのツール

特定の問題を説明するために使用される概念には、 現象(イベントを含むさまざまな種類)、 問題のコンテキスト問題の領域ソリューションの領域マシンとも呼ばれます)、 共有現象(ドメイン インターフェイスに存在)、 ドメイン要件(問題の領域に存在)、および 仕様(問題の領域とマシンのインターフェイスに存在)が含まれます。

問題を記述するためのグラフィカル ツールは、コンテキスト ダイアグラム問題ダイアグラムです。

問題のクラスを記述するためのツール(問題フレーム)

問題フレームアプローチには、問題のクラスを記述するための概念が含まれています。認識された問題のクラスは、問題フレーム(デザインパターンにほぼ相当)と呼ばれます。

問題フレームでは、ドメインに一般的な名前が与えられ、重要な特性に基づいて説明されます。例えば、ドメインは、因果的(イベントに対して決定論的かつ予測可能な方法で反応する)または従順(イベントへの対応を指示または要求できるが、必ずしも予測可能かつ決定論的な方法でイベントに反応するとは限らない)に分類されます。(従順なドメインは通常、人間で構成されます。)

問題フレームを表すグラフィカルツールはフレームダイアグラムです。フレームダイアグラムは、いくつかの小さな違いを除けば、問題ダイアグラムとほぼ同じように見えます。ドメインには、特定の名前ではなく一般的な名前が付けられ、ドメインを表す四角形には、ドメインの種類(因果的または入札可能)を示す注釈が付けられます。

認識されている問題のクラスのリスト(問題フレーム)

ジャクソンが特定した問題フレームの最初のグループは次のとおりです。

  1. 必要な行動
  2. 命令された行動
  3. 情報表示
  4. シンプルなワークピース
  5. 変換

その後、他の研究者が追加の問題フレームを説明または提案しました。

問題の説明

問題の背景

問題分析では、ソフトウェアアプリケーションを一種のソフトウェアマシンとみなします。ソフトウェア開発プロジェクトは、ソフトウェアマシンを作成し、それを問題のコンテキストに追加することで、問題のコンテキストを変化させ、特定の望ましい効果をもたらすことを目指します。

特定の問題に関連して興味深い問題のコンテキストの特定の部分、つまり問題のコンテキストを形成する問題のコンテキストの特定の部分は、アプリケーション ドメインと呼ばれます。

ソフトウェア開発プロジェクトが完了し、ソフトウェアマシンが問題のコンテキストに挿入されると、問題のコンテキストにはアプリケーションドメインとマシンの両方が含まれるようになります。この時点で、状況は次のようになります。

問題のコンテキストには、マシンとアプリケーションドメインが含まれます。マシンインターフェースは、マシンとアプリケーションドメインが出会って相互作用する場所です。

同じ状況は、別の種類の図、つまりコンテキスト図で次のように表すことができます。

コンテキストダイアグラム

問題分析者の第一の仕事は、問題を真に理解することです。つまり、問題が置かれている文脈を理解することです。つまり、コンテキストダイアグラムを描くということです。

ジャクソンは、問題のコンテキスト(この場合は橋を建設するというコンテキスト)を調べる方法を次のように説明しています。

あなたはエンジニアで、川に橋を架ける計画を立てています。そこで、現場を訪れます。川岸に立って、周囲の地形と川の流れを眺めます。この場所がいかに風にさらされているか、風がいかに強く吹いているか、川の流れがいかに速いかを実感します。川岸を見ながら、岩だらけの地形に地質調査を行えばどんな断層が見つかるだろうかと考えます。そして、これから建設する橋を思い描きます。(ソフトウェア要件と仕様:「問題のコンテキスト」)

ソフトウェア開発の問題を理解しようとするアナリストは、ブリッジエンジニアと同じプロセスを経る必要があります。まず、アプリケーションドメイン内の様々な問題領域を調査します。これらの領域は、計画されているマシンが適合すべきコンテキストを形成します。次に、マシンがこのコンテキストにどのように適合するかを想像します。そして、マシンが組み込まれた問題のコンテキストのビジョンを示すコンテキストダイアグラムを作成します。

コンテキスト図は、アプリケーションドメイン内の様々な問題領域、それらの接続、そしてマシンと(一部の)問題領域との関連を示します。コンテキスト図は次のようになります。

この図は次のことを示しています。

  • 構築するマシン。濃い枠線はマシンを表すボックスを識別するのに役立ちます。
  • 問題に関連する問題領域。
  • 実線はドメインインターフェース、つまりドメインが重複して共通の現象を共有する領域を表します。

ドメインとは、私たちが関心を持つ世界の一部分です。ドメインは、個人、出来事、状況、関係、行動といった 現象から構成されます。

ドメインインターフェースとは、ドメイン同士が接続し通信する領域です。ドメインインターフェースはデータフローやメッセージではありません。インターフェースとは、ドメインが部分的に重複する場所であり、インターフェース内の現象は共有現象、つまり重複する両方のドメインに存在する現象です。

ドメインは、原始的な単細胞生物(アメーバなど)のようなものだと想像できます。アメーバは自身の一部を仮足へと伸ばすことができます。そのような生物2体が、まるで握手のように仮足を伸ばし合い、握手している部分の細胞物質が混ざり合い、両方の細胞に属するようになる様子を想像してみてください。これがインターフェースです。

次の図では、X はドメイン A と B 間のインターフェイスです。X に存在する個体または発生するイベントは、A と B の両方に存在または発生します。

共有される個体、状態、イベントは、それらを共有するドメインによって異なるように見える場合があります。例えば、コンピュータとキーボード間のインターフェースを考えてみましょう。キーボードドメインが「キーボードオペレータがスペースバーを押した」というイベントを検出すると、コンピュータは入力バッファにバイト16進数("20")が表示されるのと同じイベントを検出します。

問題図

問題分析者が問題を記述するための基本的なツールは、問題図です。ここに一般的な問題図を示します。

コンテキスト図に表示される内容に加えて、問題図には次の内容が表示されます。

  • 点線の楕円は、問題領域で特定の効果をもたらすという要件を表します。
  • 点線は要件参照を表します。要件内での問題領域内の現象への参照です。

問題領域と機械を接続するインターフェースは仕様インターフェースと呼ばれ、仕様インターフェース内の現象は仕様現象と呼ばれます。要件分析者の目標は、要件を満たすために機械が機械インターフェースで示さなければならない動作の仕様を作成することです。

ここに、単純ではありますが、実際の問題図の例を示します。

この問題は、病院のコンピュータシステムの一部である可能性があります。病院では、患者は体温と血圧を検知・測定できるセンサーに接続されています。ナースステーションのパネルに患者の状態に関する情報を表示できるマシンを構築することが求められています。

要件名は「ディスプレイ ~ 患者の状態」です。チルダ (~) は、この要件がパネルディスプレイと患者の状態との関係性または対応関係に関するものであることを示しています。矢印は、「パネルディスプレイ」ドメインに関連付けられた要件参照が要件制約でもあることを示しています。つまり、この要件には、パネルディスプレイが満たさなければならない何らかの規定が含まれていることを意味します。つまり、この要件は、「パネルディスプレイは、患者の状態と一致し、正確に報告する情報を表示しなければならない」というものです。

問題のクラスの説明

問題フレーム

問題フレームとは、認識可能な問題のクラスを記述したもので、そのクラスの問題には既知の解決策があります。ある意味では、問題フレームは問題のパターンです。

各問題フレームには、独自のフレーム図があります。フレーム図は基本的に問題図に似ていますが、特定のドメインと要件を示すのではなく、ドメインの種類と要件の種類を示します。ドメインには特定の名前ではなく一般的な名前が付けられ、ドメインを表す四角形には、ドメインの種類(因果的または入札可能)を示す注釈が付けられます。

バリアントフレーム

ジャクソンは『問題フレーム』の中で、自身が特定した5つの基本的な問題フレームのバリエーションについて論じました。バリエーションは典型的には、問題の文脈にドメインを追加します。

  • 記述変種は記述語彙領域を導入する
  • 演算子バリアントは演算子を導入する
  • 接続バリアントは、マシンとそれがインターフェースする中央ドメインとの間に接続ドメインを導入する。
  • 制御バリアントは新しい領域を導入するものではなく、インターフェース現象の制御特性を変えるものである。

問題の懸念

ジャクソン氏は、問題フレームを扱う際に生じる特定の種類の懸念についても説明しています。

特別な懸念

  • オーバーラン
  • 初期化
  • 信頼性
  • アイデンティティ
  • 完全

構成に関する懸念

  • 共通説明
  • 一貫性
  • 優先順位
  • 干渉
  • 同期

認識された問題フレーム

ジャクソンが特定した最初の問題フレームには次のものがありました。

  1. 必要な行動
  2. 命令された行動
  3. 情報表示
  4. シンプルなワークピース
  5. 変換

その後、他の研究者が追加の問題フレームを説明または提案しました。

要求行動問題フレーム

この問題フレームの背後にある直感的な考え方は次のとおりです。

  • 物理世界には、ある条件を満たすようにその動作を制御する必要がある部分があります。問題は、その制御を実行する機械を構築することです。

命令行動問題フレーム

この問題フレームの背後にある直感的な考え方は次のとおりです。

  • 物理世界の一部は、オペレータからの命令に従って動作を制御されるべきです。問題は、オペレータの命令を受け入れ、それに応じて制御を行う機械を構築することです。

情報表示問題フレーム

この問題フレームの背後にある直感的な考え方は次のとおりです。

  • 物理世界には、その状態や挙動に関する特定の情報が常に必要とされる領域が存在します。問題は、この情報を世界から取得し、必要な場所に、必要な形式で提示する機械を構築することです。

単純なワークピースの問題フレーム

この問題フレームの背後にある直感的な考え方は次のとおりです。

  • コンピュータで処理可能な特定の種類のテキストやグラフィックオブジェクト、あるいは類似の構造をユーザーが作成・編集し、その後コピー、印刷、分析、あるいはその他の方法で使用できるようにするツールが必要です。問題は、このツールとして機能するマシンを構築することです。

変換問題フレーム

この問題フレームの背後にある直感的な考え方は次のとおりです。

  • コンピュータが読み取り可能な入力ファイルがいくつか与えられており、そのデータを変換することで、特定の出力ファイルが生成されます。出力データは特定の形式で、入力データから特定の規則に従って導出されなければなりません。問題は、入力データから必要な出力を生成するマシンを構築することです。

問題分析とソフトウェア開発プロセス

問題分析がソフトウェア開発プロセスに組み込まれると、ソフトウェア開発ライフサイクルは問題分析者から始まります。問題分析者は状況を調査し、次のことを行います。

  • コンテキストダイアグラムを作成する
  • 要件リストを収集し、コンテキスト図に要件楕円を追加して、壮大な「オールインワン」の問題図を作成します。(ただし、多くの場合、実際にオールインワンの問題図を作成することは非現実的または役に立たない場合があります。要件参照が多すぎて、図があまり役に立たなくなるからです。)
  • オールインワンの問題と問題図をより単純な問題とより単純な問題図に分解します。これらの問題は、オールインワン図のサブセットではなく、投影されたものです。
  • それぞれの問題が、認識された問題フレームのインスタンスとして見なせるほど単純になるまで、問題を分解し続けます。それぞれの部分問題記述には、構築するマシンの仕様インターフェースの記述が含まれます。

この時点で、問題分析(問題の分解)は完了です。次のステップは、このプロセスを逆に進め、ソリューション構成のプロセスを通じて、望ましいソフトウェアシステムを構築することです

ソリューション構成プロセスはまだ十分に理解されておらず、依然として研究の途上にあります。ソフトウェア要件と仕様書からヒントを推測すると、ソフトウェア開発プロセスは開発者によって継続され、開発者は以下のことを行うと考えられます。

  • 複数の部分問題マシンの仕様を、単一のオールインワンマシンの仕様、すなわち顧客のすべての要件を満たすソフトウェアマシンの仕様に合成する。これは容易な作業ではない。合成プロセスによって、解決すべき合成問題が数多く発生する可能性があるからだ。
  • 従来のコード/テスト/デプロイのプロセスを経て、オールインワン マシンを実装します。

同様のアプローチ

問題分析といくつかの点で似ているソフトウェア開発のアイデアは他にもいくつかあります。

  • デザインパターンの概念は、ジャクソンの問題フレームの概念に似ています。両者の違いは、デザインパターンは要件の問題を認識して対処するのではなく、設計上の問題(多くの場合、C++やJavaなどの特定のオブジェクト指向プログラミング言語における設計上の問題)を認識して対処するために使用されるという点です。さらに、デザインパターンはソリューションをカバーするのに対し、問題フレームは問題を表現するという点も異なります。しかし、デザインパターンは、実装対象となるプログラミング言語に固有の意味的結果も考慮する傾向があります。つまり、問題フレームは問題のドメイン固有のメタ表記法であるのに対し、デザインパターンは言語実装者が残した技術的負債のカタログであるという点も異なります。
  • アスペクト指向プログラミング(AOP)(アスペクト指向ソフトウェア開発(AOSD)とも呼ばれる)も同様に並列分解に関心を持ち、AOP支持者が横断的関心事またはアスペクトと呼ぶものに対処します。AOPは、要件分析フェーズよりも、設計およびコード生成フェーズに近い関心事に対処します。
  • AOPは、ITU-T Z.151 ユーザー要件記法 (URN) などの要件エンジニアリング記法にも適用されています。URNでは、AOPはすべての意図的要素を網羅します。AOPは、問題フレームをヒューリスティックとして用いる要件モデリングにも適用できます。問題フレーム思考に基づき、アスペクトを組み込んだURNモデルは、アーキテクチャ戦略を要件モデルに組み込むことを可能にします。
  • マーティン・ファウラーの著書『Analysis Patterns』は、パターン探索という点では問題分析と非常によく似ています。しかしながら、本書は新しい要件分析手法を提示しているわけではありません。また、問題分析において非常に重要な並列分解の概念は、ファウラーの分析パターンには含まれていません。
  • ジョン・G・ホール、ルシア・ラパノッティ、そしてジャクソンは、問題指向ソフトウェア工学(POSE)フレームワーク[13]を開発しました。このフレームワークは、問題フレームの基盤を共有しています。2005年以降、ホールとラパノッティはPOSEを問題指向工学(POE)へと拡張しました。POEは、開発プロセスモデルやアシュアランス駆動設計を含むエンジニアリング設計のフレームワークを提供し、[14]多くのステークホルダーが関与し、ソフトウェアや教育提供といった多様なエンジニアリング分野を組み合わせたプロジェクトにも拡張可能です。[15]

参考文献

  1. ^ 第 9 回国際要件エンジニアリング ワークショップ: ソフトウェア品質基盤 (REFSQ) は 2003 年にオーストリアのクラーゲンフルト/フェルデンで開催されました。
  2. ^ 問題フレームの応用と進歩に関する第1回国際ワークショップ
  3. ^ 問題フレームの応用と進歩に関する第二回国際ワークショップ 2007年8月19日アーカイブ at the Wayback Machine
  4. ^ 「問題フレームの応用と進歩に関する第3回国際ワークショップ」。2010年12月24日時点のオリジナルよりアーカイブ2010年6月19日閲覧。
  5. ^ 問題指向の応用と進歩に関する国際ワークショップ 2011年1月11日アーカイブ at the Wayback Machine
  6. ^ “IWAAPO-2010”. 2010年1月28日時点のオリジナルよりアーカイブ2010年6月19日閲覧。
  7. ^ 問題と解決の構造を関連付ける研究テーマ。
  8. ^ 例えば、「問題フレームを用いたソフトウェア要件とアーキテクチャの関連付け」、Hall, JG、Jackson, M.、Laney, RC、Nuseibeh, B.、Rapanotti, L.、IEEE Joint International Conference on Requirements Engineering (2002) の論文集、137~144 ページ。
  9. ^ ジャクソン、マイケル(1995年)「再利用のための問題分解」pp.1、2。
  10. ^ ジャクソン、マイケル (2001).問題フレーム. アディソン・ウェスレー. pp. 3, 4.
  11. ^ ジャクソン、マイケル(2001年)『問題フレーム』アディソン・ウェズレー社、9頁。
  12. ^ ジャクソン、マイケル (2001).問題フレーム. アディソン・ウェスレー. pp. 9, 10.
  13. ^ JG Hall、L. Rapanotti、M. Jackson. 問題指向ソフトウェアエンジニアリング:パッケージルータ制御問題の解決. IEEE Trans. Software Eng., 2008. doi :10.1109/TSE.2007.70769.
  14. ^ JG HallとL. Rapanotti. アシュアランス駆動設計. 第3回国際ソフトウェアエンジニアリング進歩会議議事録. 2008年.
  15. ^ L. Rapanotti、JG Hall. オンライン・パートタイム哲学修士課程の設計. 第4回インターネットおよびウェブアプリケーションとサービスに関する国際会議議事録. IEEE Press, 2009年5月24~28日.
  • http://mcs.open.ac.uk/mj665/ はマイケル・A・ジャクソンのホームページです。
  • http://www.jacksonworkbench.co.uk/stevefergspages/pfa/index.html には、問題フレームアプローチに関する論文や記事が掲載されています。
「https://en.wikipedia.org/w/index.php?title=Problem_frames_approach&oldid=1309321813」より取得