変更影響分析 (IA )または影響分析 とは、展開された製品またはアプリケーション内の変更とその潜在的な影響を分析することです。[ 1 ] [ 2 ] [ 3 ]
変更影響分析は、BohnnerとArnoldによって「変更の潜在的な結果を特定すること、または変更を達成するために何を変更する必要があるかを推定すること」と定義されており、設計の詳細における変更の範囲という観点からIAに焦点を当てています。対照的に、PfleegerとAtleeは変更に伴うリスクに焦点を当て、IAは「リソース、労力、スケジュールへの影響の推定を含む、変更に伴う多くのリスクの評価」であると述べています。設計の詳細と変更に伴うリスクの両方が、変更管理プロセス 内でIAを実行する上で重要です。ソフトウェアパッケージへの変更が依存関係グラフ全体に連鎖的な非互換性の競合を引き起こすと、結果として生じる状況は、俗に依存関係地獄 として知られています。[ 6 ]
影響分析手法の種類 IA技術は3つのタイプに分類できます。[ 7 ]
ボーナーとアーノルドは、IA をトレーサビリティ IA と依存性 IA の 2 つのクラスに分類しています。[ 8 ] トレーサビリティ IAでは、要件、仕様、設計要素、テスト間のリンクがキャプチャされ、これらの関係を分析することで、開始する変更の範囲を決定できます。依存性 IA では、部品、変数、ロジック、モジュールなどのリンクが評価され、開始する変更の結果が決定されます。依存性 IA は、トレーサビリティ IA よりも詳細なレベルで発生します。ソフトウェア設計では、コードに対して静的 アルゴリズムと動的 アルゴリズムを実行して依存性 IA を実行できます。静的メソッドはプログラム構造に焦点を当てますが、動的アルゴリズムは実行時にプログラムの動作に関する情報を収集します。
文献やエンジニアリングの実践では、経験に基づくIAという3つ目のタイプのIAも示唆されています。これは、変更の影響が専門家の設計知識を使用して決定されることが多いというものです。レビュー会議の議事録 、非公式なチームディスカッション、個々のエンジニアリング判断はすべて、変更の結果を決定するために使用できます。
パッケージ管理と依存関係IA ソフトウェアは多くの場合パッケージとして提供され、そのパッケージには、展開されたソフトウェアを実行するために必要な他のソフトウェアパッケージへの依存関係が含まれています。これらの依存関係を逆順にたどることは、ソフトウェアパッケージの内容を変更した場合の影響を特定する便利な方法です。これを行うのに役立つソフトウェアの例を以下に示します。
ソースコードと依存関係IA 依存関係はソースコードにも宣言されています。[[Metadata|Metadata ]] を使用すると、静的解析 を通じて依存関係を理解できます。このような依存関係を表示するツールには、以下のようなものがあります。
さまざまなリポジトリに保存されているソースコードに対して全文検索を適用するツールもあります。ソースコードがウェブ上で閲覧可能な場合は、従来の検索エンジンを使用できます。ソースが実行環境でのみ利用可能な場合は、より複雑になり、専用のツールが役立つ場合があります。[ 15 ]
要件、およびソースコードへのトレーサビリティ最近のツールは、依存関係を追跡するために安定したリンクをよく使用します。これは、仕様、設計図、バグ、コミットなど、すべてのレベルで実行できます。それにもかかわらず、検索エンジン最適化 で知られているバックリンクチェッカーの使用は一般的ではありません。ユースケースマップを例に挙げると、この分野の研究も行われています。[ 16 ]
この分野の商用ツールとしては、Rational DOORS などがあります。
参考文献 ↑ Oliva, Gustavo Ansaldi; Gerosa, Marco Aurélio (2015). "ソフトウェア成果物間の変更結合". The Art and Science of Analyzing Software Data . pp. 285–323 . doi : 10.1016/B978-0-12-411519-4.00011-2 . ISBN 978-0-12-411519-4 。 ↑ Alam, Khubaib Amjad; Ahmad, Rodina; Akhunzada, Adnan; Nasir, Mohd Hairul Nizam Md; Khan, Samee U. (2015 年 12 月). 「サービス指向企業における影響分析と変化の伝播: 体系的レビュー」. Information Systems . 54 : 43–73 . doi : 10.1016/j.is.2015.06.003 . ↑ Frainlar, Edson (2021年12月29日). 「SAP変更影響分析とは?」 . KTern.AI . ↑ Mens, Tom; Decan, Alexandre (2024-11-19). "オープンソースソフトウェアパッケージレジストリにおける依存関係の課題の概要とカタログ". arXiv : 2409.18884 [ cs.SE ]. ↑ キルピネン 2008 、p.。 ↑ ボーナーと アーノルド、1996 年 、p.。 ↑ "whatrequires" . www.pixelbeat.org . 2006年4月26日のオリジナルから アーカイブ済み。 2022年 1月27日 取得 。 ↑ "ohloh、オープンソースの発見、追跡、比較" 。 2011年1月12日に オリジナルからアーカイブ済み 。 2022年1月27日 に取得。 ↑ Hassine, J.; Rilling, J.; Hewitt, J. (2005). "ユースケースマップを用いた要求進化のための変更影響分析". 第8回ソフトウェア進化の原則に関する国際ワークショップ (IWPSE'05) . pp. 81–90 . doi : 10.1109/IWPSE.2005.8 . ISBN 0-7695-2349-8 。
情報源 アンブラー、スコット(2002)。アジャイルモデリング:エクストリームプログラミングと統一プロセスのための効果的な実践 。ジョン・ワイリー&サンズ。ISBN 978-0-471-27190-1 。 ボーナー、ショーン。ロバート、アーノルド (1996)。ソフトウェア変更の影響分析 。ワイリー。ISBN 978-0-8186-7384-9 。 アイズナー、ハワード(2002)。プロジェクトおよびシステムエンジニアリング管理の基礎 。ワイリー。ISBN 978-0-471-03195-6 。 エンドレス、アルバート、ロンバッハ、H.ディーター (2003)。ソフトウェアおよびシステムエンジニアリングハンドブック:経験的観察、法則、理論 。ピアソン・アディソン・ウェスリー。ISBN 978-0-321-15420-0 。 Kilpinen, MS (2008).システムエンジニアリングとソフトウェア設計のインターフェースにおける変化の出現:影響分析の調査 (PDF) (学位論文)。 2011年10月1日にオリジナル(PDF) からアーカイブされました。 Pfleeger, Shari Lawrence; Atlee, Joanne M. (2006).ソフトウェアエンジニアリング:理論と実践 . Prentice Hall. ISBN 978-0-13-146913-6 。 Rajlich, Václav (2000年1月). 「ソフトウェアにおける変更伝播のためのモデルとツール」. ACM SIGSOFT Software Engineering Notes . 25 (1): 72. doi : 10.1145/340855.340993 . Ren, Xiaoxia; Shah, Fenil; Tip, Frank; Ryder, Barbara G.; Chesley, Ophelia (2004). "Chianti: Javaプログラムの変更影響分析ツール".第19回ACM SIGPLANオブジェクト指向プログラミング、システム、言語、アプリケーションに関する年次会議議事録 . pp. 432–448 . doi : 10.1145/1028976.1029012 . ISBN 978-1-58113-831-3 . OCLC 201980091 .