« 『第13回クリティカルソフトウェアワークショップ(13thWOCS2)』での講演のご案内 | トップページ | モデラーとしてステップアップするために②~モデルドリブン開発におけるアーキテクチャ設計と例外処理設計 »

2015年12月 8日 (火)

モデラーとしてステップアップするために①~オブジェクト指向開発と『契約による設計(Db)』

今日と明日は明後日のための資料作り。


 
ソフトウエア開発においてきわめて重要なものに『契約による設計(Db)』がある。
 
「契約による設計(Db)」を学ぶには色々な書籍があるけれど、酒匂さん翻訳された書籍『オブジェクト指向入門』が良い。

「契約による設計(Db)」はオブジェクト指向極めて重要で、信頼の高いシステム拡張性・保守性及び再利用を実現する上で不可欠である。


「契約による設計(Db)」を理解して活用するとモデルドリブン開発で大きな武器となるので、是非マスターしよう!
 

クラス定義にはクラスのインスタンスが絶対保障しなければならい「(クラス)不変条件」を明示的に示す必要がある。
 

これはクラス定義の中に「クラス不変条件」として明治的に設計者が記述しなければ第3者には基本的には分からない。
 

●「クラス不変条件」==>クラスの属性や関連が満たさなければならない値、状態、制約を定義したもの。クラスが持つ全ての操作には下記の定義が不可欠で、この3つを定義しないクラスは著しく信頼性が無い。
 
「事前条件」==>操作処理を問題無く行う為に操作の呼び出し側が満足しなければならない条件
  

●「事後条件」==>操作の呼び出し側が「事前条件」を満足して操作を呼びだした場合に、操作が保証する処理結果
  
●「例外定義」==>操作が例外を発生する際の例外の種類・型情報。定義してない例外をクラスの操作は絶対に発生させてはいけない

Dbc

「クラス不変条件」と操作の「事前条件」「事後条件」「例外定義」はソースコードの中に実装されるから、単に分析や設計のための技法ではない。
 

「クラス不変条件」と操作の「事前条件」「事後条件」「例外定義」を明示的にクラスに定義することで、レビュー(インスペクション)やテストも加速する。

 
さらに、開発したシステムの拡張性・保守性及び再利用では、クラスの「クラス不変条件」と操作の「事前条件」「事後条件」「例外定義」を常に意識しなければ安全な拡張や再利用はできない。
 

システムに修正を入れる場合は、クラスの「クラス不変条件」と操作の「事前条件」「事後条件」「例外定義」を守る様に修正を入れなければいけない。
 

そのために、必要に応じて『開放閉鎖原則』を併用することが多い(『開放閉鎖原則』も書籍『オブジェクト指向入門』に詳しく説明してある)。
 
なお「例外定義」の定義は特に注意が必要である。

 
クラスの中の各操作が例外を定義を明示的にしてない場合は、その操作は絶対に発生させてはいけない。
 

JavaやEiffelでは操作が例外定義をしていないと例外を発生させられないが、C++では可能(モラル的には良くない)なので、クラスの中の各操作が例外を定義を明示的にしてない場合はしばしば大きなトラブルの原因になる。

 

『契約による設計(Db)』を用いると、クラスに関する情報が一か所に定義できるので、情報が分散しないメリットも大きい。
 

『契約による設計(Db)』を理解することは、オブジェクト指向開発の常識と主張する専門家も多いので、是非理解して活用しよう。

|

« 『第13回クリティカルソフトウェアワークショップ(13thWOCS2)』での講演のご案内 | トップページ | モデラーとしてステップアップするために②~モデルドリブン開発におけるアーキテクチャ設計と例外処理設計 »

パソコン・インターネット」カテゴリの記事