ひとめぐり(チュートリアル)

AtScopeの基本的な使い方のチュートリアルです。

まずは全体を俯瞰するためのアーキテクチャ解析の手順を紹介します。
(1)アーキテクチャ解析
EAの「アドイン・拡張」→「Atシリーズ」→「AtScope」をクリックすることで、
下のAtScope実行画面が表示されます。
実行画面

この画面で、ソースコードの入っているフォルダを選択し、
実行ボタンを押すだけで、フォルダ単位のコンポーネント構造図が出力されます。

出力された図面を、アーキテクチャの形状に再配置することで、設計意図が見えてきます。

コンポーネント図(再配置)

 

下にオプション設定の説明をします。
■解析設定
デフォルトでは、依存線は関数コールのみを対象としています。ファイルを横断するグローバル変数がある場合は、「変数アクセスを含める」をチェックしてください。
また、フォルダ構成が多段になっている場合は、まずは「全て」で解析してみて、それが複雑過ぎる場合は「直下」をチェックしてみてください。「直下」を指定することで、第一階層のフォルダをコンポーネント単位とみなします。

設定画面1(コンポーネント構造図)

 

■表示設定
ポート(小さい四角)の有無を設定することができます。最初は、「ポート無し」で解析することをお勧めします。
アーキテクチャ構造がしっかりしてきて、依存線のルールが見えてきた時点で「名前無ポート」あるいは「名前付ポート」で解析することで、コンポーネント間のインタフェースを個別に管理することができます。

表示設定1(コンポーネント構造図)

 

(2)アーキテクチャ違反の検知

一度、アーキテクチャの形に再配置すれば、次からは、その配置を保持して図面を出力します。
再配置した図面を開いて、実行画面の「配置を保持」にチェックをして実行してください。
実行画面(配置を保存)

同じ配置でコンポーネント構造図が出力されます。
下の例では、2つのルール違反が検出されました。
ソフトウェア疲労例

ソースコードでは、アプリ層からドライバ層へ関数コールしても、コンパイルして動く、ことが多いです。しかし、これは、当初のアーキテクチャを崩していることになります。これを繰り返していくと、いわゆるスパゲティプログラムになってしまいます。
アーキテクトは、アーキテクチャ違反を検知して、担当者とレビューすることで、構造の崩れを防止することができます。
また、委託/受託の際にも、アーキテクチャ構造を崩さないように納品し、検収することができます。納品後に、受入テストで品質を確保することに加えて、納品時の品質を事前に高めることにつながります。

 

(3)設計構造のスコア

全体の設計構造を点数化します。「リファクタリングスコア」を選択して実行してください。

実行画面(リファクタリングスコア)

総合点と、要素点および構造点、がそれぞれ出力されます。

リファクタリングスコア

この例では、総合点94点、要素点99点、構造点89点、となっています。かなり、良くできています。

総合点ですが、
0点以上であれば、一人でなんとかなる。
60点以上であれば、他の人でもなんとかなる。(引き継ぎも楽)
マイナス100点くらいになってくると、かなり難解。(テコ入れが必須)
という目安です。

プログラム変更の際に、構造化設計を意識すれば、徐々にスコアが上がるはずです。
逆に、局所的な追加を繰り返していくと、徐々にスコアが下がっていきます。
マネージャの方は、定期的にスコアを計測し、徐々に点数が下がっているようであれば、設計レビューを行う、などの施策を打つことを推奨します。担当者が、えいやっ、と力ずくで局所的な修正を積み重ねている可能性が高いです。

また、「要素」と「構造」の、それぞれのスコアですが、
「要素」が良い点数であるということは、関数やファイルが分割できている。
すなわち、サイクロマチック複雑度などのメトリクス標準があり、それを遵守している。
と予想されます。
それに対して、「構造」のスコアが低い場合は、分割は出来ているが、構造化ができていない。
徐々にスパゲッティになっていっているものと思われます。