• 検索結果がありません。

設計ルール逸脱箇所検出による設計改善手法

N/A
N/A
Protected

Academic year: 2021

シェア "設計ルール逸脱箇所検出による設計改善手法"

Copied!
2
0
0

読み込み中.... (全文を見る)

全文

(1)情報処理学会第 76 回全国大会. 6A-1. 設計ルール逸脱箇所検出による設計改善手法 山﨑. 愛†. 大場. 株式会社東芝. 勝†. 河原. 敏宏†. 岡本. 渉†. ソフトウェア技術センター†. 1.はじめに 現在のソフトウェア開発は、新規開発よりも 既存資産に追加・変更を行う派生開発が多くを 占める。開発当初は、設計方針や設計ルールを 設定し、それに従って設計をすることにより、 保守性の優れた設計を実現する。しかし、派生 開発を重ねると、場当たり的な修正により設計 ルールから逸脱した実装が発生し、その結果保 守性が低下するといった問題がある。低下した 保守性を回復もしくは開発当初の保守性を維持 するためには、既存資産の設計ルールに従って 修正を行う必要がある。 設計ルールから逸脱する原因として、設計ル ールを設定した設計者と派生開発による追加・ 修正を行う開発者が異なるため、既存資産にど のような設計ルールが適用されているかを、開 発者が把握できないことが挙げられる。既存資 産の設計書には設計結果だけを記載される場合 があり、設計時に設けたルールが必ずしも記載 されているとは限らない。また、人手によりソ ースコードを読み解き、適用されている設計ル ールを把握するには多大なコストがかかる。そ こでソースコードから、当初の設計において適 用されていたと考えられる設計ルールを推測し、 その上で、設計ルールからの逸脱箇所を検出す る手法を提案する。 2.設計ルール 本手法で、対象とする設計ルールについて述 べる。設計ルールは、設計パターンと制約から 構成される。設計パターンとは、構造の特徴を 体系化したものであり、例として、GoF のデザイ ンパターン[1]が挙げられる。その設計パターン に対し、遵守すべき制約を述べたものが設計ル ールである。従って、設計ルールは「“設計パ ターン”において“制約を遵守しているこ と”」といった形式で表現可能である。 2.1 設計ルールの例 図 1 を用いて設計ルールの例を示す。次の 3 つの条件を満たす構造を、ここでは同格モジュ Detecting Design Rule Violations †Ai Yamasaki, Masaru Ohba, Toshihiro Kawahara, Wataru Okamoto †Corporate Software Engineering Center, Toshiba Corporation. ールパターンと呼ぶ。 (1)依存元モジュール(以下、親モジュール)は 3 つ以上の依存先モジュール(以下、子モジュー ル)を持つ。 (2)子モジュール同士は独立している。 (3)親モジュールから呼び出されている子モジュ ールの関数は、親モジュールの関数にのみ呼び 出される。. 図1. 同格モジュールの設計パターン例. 同格モジュールパターンにおいて想定される制 約には、”親子関係のないモジュール(以下、第 三者モジュール)は、子モジュールに依存しない こと”等が考えられる。従って、設計ルールとし ては、「同格モジュールパターンにおいて、第 三者モジュールは、子モジュールに依存しない こと」が一例として挙げられる。 3.設計ルール逸脱箇所検出の手順 本手法では、以下の手順により設計ルールか らの逸脱箇所を検出する。 手順 1. 手順 2. 手順 3.. 設計ルール適用箇所の候補を抽出 設計ルール適用の有無を判定 設計ルールの逸脱箇所を提示. 具体的には、まず、設計ルールとして、一般的 に何があり得るかを予め列挙しておく。それぞ れの設計ルールの設計パターンを対象のソース コードに、順に当てはめて比較し、設計パター ンに合致している箇所を抽出する(手順 1)。これ により、適用されている設計ルールが事前に明 らかでない場合であっても、適用されている可 能性の高い設計ルールとその適用箇所の候補を 抽出することが可能である。しかし、手順 1 で 抽出した設計ルール適用箇所の候補には、偶然 設計パターンと一致した構造として検出された. 1-233. Copyright 2014 Information Processing Society of Japan. All Rights Reserved..

(2) 情報処理学会第 76 回全国大会. が、制約を満たしておらず、設計ルールは適用 されていないものが含まれている可能性が考え られる。そこで、閾値を設定し、設計ルール適 用箇所の候補から、制約を満たしているモジュ ール数や関係数が閾値以上である場合、設計ル ールを適用されていると判定する(手順 2)。ルー ルが適用されている場合、適用箇所の中で制約 を逸脱している箇所を提示する。(手順 3) 3.1 設計ルール逸脱箇所検出の例 前章で述べた「同格モジュールパターンにお いて、第三者モジュールは、子モジュールに依 存しないこと」の設計ルール抽出例を示す。 手順 1 として、ソースコードから、同格モジュ ールパターンの条件をすべて満たす箇所を抽出 する。図 2 は、ソースコードから抽出したソフ トウェア構造と同格モジュールパターンの構造 が一致した範囲を示す。. 4.設計改善手法の適用事例 3 章で述べた、設計ルール逸脱箇所の検出手法 を、ある組み込みソフトウェアに適用した。本 事例では、設計ルール「同格モジュールパター ンにおいて、第三者モジュールは、子モジュー ルに依存しないこと」に対して検出を行い、適 用されている範囲及び逸脱箇所を検出できるこ とを確認した。図 4(上)では、最下段に並列して いるモジュール群が子モジュールであり、依存 元の太枠のモジュールが親モジュールである。 第三者モジュールが依存している子モジュール が存在するため、その依存関係を設計ルール逸 脱箇所とする。このように設計ルールとその逸 脱箇所を明示することにより、保守性低下の原 因を特定できる。. 図 2 同格モジュールパターンと合致したソフト ウェア構造 次に、適用箇所の候補から適用されている可能 性が高い箇所を絞り込む。本例では設計ルール の適否を判断する閾値を 50%とする。図 3 では 4 つの子モジュール(B,C,D,E)の中で E モジュー ルのみ第三者モジュールが依存している。制約 を遵守しているモジュールが過半数のため本ル ールは適用されていると考えられる。. 図 3 設計ルール適用箇所の候補 この場合、F モジュールから E モジュールへの依 存が逸脱箇所となり、E モジュールには A モジュ ールからのみ依存可能であることを提示する。. 図 4 検出した設計ルールの適用範囲(上)および 逸脱箇所の強調(下) 5.おわりに ソフトウェア開発では、保守性の優れた設計 が求められるが、派生開発により適切でない修 正が繰り返され、保守性が低下する場合がある。 本稿では、設計ルールが設計書に充分に記載さ れていない場合であっても、設計意図を推測し、 設計意図から逸脱している箇所を指摘する手法 を提案した。これにより、人手によるコストを かけず、設計ルールに沿った状態に保守性を回 復・維持することが可能となる。今後は、検出 可能な設計ルールの拡充を行う。. 参考文献 [1] Erich Gamma, Ralph Johnson, Richard Helm, John Vlissides, ”Design Patterns Elements of Reusable Object-Oriented Software”, 1995.. 1-234. Copyright 2014 Information Processing Society of Japan. All Rights Reserved..

(3)

参照

関連したドキュメント

7IEC で定義されていない出力で 575V 、 50Hz

Approximation algorithms for nonuniform buy-at-bulk network design. A deterministic algorithm for the

⑥ニューマチックケーソン 職種 設計計画 設計計算 設計図 数量計算 照査 報告書作成 合計.. 設計計画 設計計算 設計図 数量計算

・患者毎のリネン交換の検討 検討済み(基準を設けて、リネンを交換している) 改善 [微生物検査]. 未実施

ASTM E2500-07 ISPE は、2005 年初頭、FDA から奨励され、設備や施設が意図された使用に適しているこ

需要動向に対応して,長期にわたる効率的な安定供給を確保するため, 500kV 基 幹系統を拠点とし,地域的な需要動向,既設系統の状況などを勘案のうえ,需要

担 当 箇 所 原案提出・調整 承認手続 計 画 表 配 布. 総

現状では、3次元CAD等を利用して機器配置設計・配 管設計を行い、床面のコンクリート打設時期までにファ