« 2016年7月 | トップページ | 2016年9月 »

2016年8月

2016年8月31日 (水)

科学的オブジェクト指向モデリング~クラス図編

UMLでクラス図を作成するときに,工学的な基盤となる基礎理論や定理などを用いないと,出来上がったクラス図に妥当性や正当性があることを保証できません。

Alloyなどの検証ツールを使うことで,作成後あるいは作成中にクラス図に妥当性や正当性を検討できます。

しかし,Alloyなどを使う場合でもクラス図を作成するときに,工学的な基盤となる基礎理論や定理を理解していないと,うまくAlloyを使うことができません。

クラス図は集合、写像および命題論理学&述語論理学を使いますので,集合、写像および命題論理学&述語論理学の理解が不可欠です。

逆に言えば、集合、写像および命題論理学&述語論理学を理解してクラス図を作成すると,とても正確なモデルが作成できます。

クラスや関連の制約などが正確かつ明確に記述できるからです。

クラスや関連の制約を正確に記述すると,抽出するクラス、クラス間の関連を正確に描画することになり,一見して科学的な見地からモデルを作成したかが分かります。

AIなどが全盛となる21世紀は、集合、写像および命題論理学&述語論理学の理解が不可欠ですから、UMLでのモデル作成も集合、写像および命題論理学&述語論理学を基盤にさ作成することが効果的です。

というわけで、もう10年近く前からセミナーで話している『科学的オブジェクト指向モデリング~クラス図編』の入門部分を少しアップデイトして説明資料をさらに分かりやすくしました。

Class2

Class1_2

Class4

|

2016年8月29日 (月)

サイクロマチック複雑度とソースコードの自動生成

ある大手製造業の研修所で,工学的なアプローチでソフトウエアを設計する方法とソースコードの自動生成およびサイクロマチック複雑度を用いたコード評価について説明を行ってきました。

誰でも理解できるように,入門的なところから解説をしましたが、鍵となるのは設計の時に関数やクラスのメソッドに「表明」を定義することです。

「表明」を定義することで、ソースコードの自動生成だけでなく、クラス定義やクラスのメソッドの定義の妥当性や正当性が自動で判定できます。

研修で用いたモデリングツールを使うと、「表明」を定義でき、モデルの妥当性をツールが自動で判定してくれます。

また「表明」も含めてクラスの情報をコードに変換してコードを自動生成してくれます。

Hope_2


コード生成後はソフト上エアの構造的なメトリクスであるマケイブ(McCabe)の「サイクロマチック複雑度(Cyclomatic Complexity)」を用いて,コードの保守性や欠陥が入りやすい構造であるかを自動判定します。

サイクロマチック複雑度の値(CC値)から見たコードの評価は:

 CC値が10以下が望ましい(良いコードの構造である)
 CC値が30以上では欠陥がある確率が高いコードの構造である
 CC値が50以上では単体テストが困難となるコードの構造である
 CC値が75以上ではコード修正が新たな欠陥を生む確率が高いコードの構造である

CC値はコード内の全パスを実行するために必要な最小限のテスト数を表すことを意味ます。
そのため、CC値が増加するほど(悪くなる程),コード修正とテストが困難になることは容易に理解できます。

NASAでは”20”を閥値としています。

ミッションクリティカルなシステムでは,CCの値をより保守的に利用することで,信頼性の高いシステムの開発を支援します。

1

2

|

« 2016年7月 | トップページ | 2016年9月 »