森崎修司の「どうやってはかるの?」:ITmediaオルタナティブ・ブログ (RSS) 森崎修司の「どうやってはかるの?」

計測できそうでできない多くのこと。エンピリカル(実証的)アプローチで。

Design by contractはソフトウェアの機能や関数/メソッドの事前条件、事後条件、いかなる場合でも不変である状態(条件)、を明らかにし、文書化する手法だ。機能や関数/メソッドが想定している範囲を明らかにし、想定外の使われ方を防ぐことにより不具合防止を支援する。

条件をソースコードに含めておき、条件を満たさない場合に、実行をやめたりするものを契約プログラミング(Programming by contract)と呼ぶ。assertのような言語仕様を使ったり、例外処理を使ったりして、機能や関数/メソッドが想定外の使われ方をしていることを明らかにする。

外部仕様に相当するドキュメントにはこれらの条件が比較的記述されていることが多いように思う。詳細設計、内部仕様やソースコードに記す場合には、対象の数が多くなることもあり、網羅的に記述するのはしんどいところだろう。形式的でないドキュメントに記す場合には、記述とチェックの両方が目視や手作業になる。

Design by contractの本質的な難しさは以下だと思っている。

  • 正常系は書けるが異常系の網羅的列挙は難しい。
    正常系を客観的に書くのは異常系と比較するとラクにできる。異常系を網羅的に書くことは容易ではない。異常系をどこまで想定していいのかが判断がつかず、考えられる範囲で列挙したとしても十分に網羅できているかどうかがわからない。
  • 条件の記述が既存の他サブシステム、他機能との関係にもとづいた相対的なものになる
    事前条件、事後条件、不変条件はなるべく未知のサブシステムや機能を考慮した記述になっている必要があるが、実際には相対的な記述になりがちで担当者が知らない範囲や母体の理解不足により考慮漏れが起こる。スクラッチから開発したり、同時期に開発されるサブシステムや機能は見通しがよい分、このような考慮漏れは少ない傾向にある。
  • 正しく認識していても記述を間違えてしまう。
    「与えられる入力の配列のサイズは1000未満」と正しく認識していても、「配列サイズは1000以下」と記述してしまう等。事前条件、事後条件、不変条件の記述を間違えてしまう。修正に気がつくまでに実施したチェックがムダになってしまう。

Design by contractを導入する場合、どの粒度まで事前条件、事後条件、不変条件を記入するかを決めるのに時間をかけてよいように思う。自動化できなければ粒度とコストの間にはトレードオフの関係が成りたつからだ。品質の面では粒度は細かければ細かいほどよいが、コストの面では細かさが増すほどコストも増す。特に、条件の保守(拡張や修正による見直し)コストを見逃す場合があるので、配慮が必要だ。機能追加や改変に伴う条件の見直しは想定外のコストになる可能性がある。

森崎

Special

- PR -
コメント

コメントを投稿する
メールアドレス(必須):
URL:
コメント:
トラックバック

http://app.blogs.itmedia.co.jp/t/trackback/77444/12293004

トラックバック・ポリシー


» このブログのTOP

» オルタナティブ・ブログTOP



プロフィール

森崎修司

森崎修司

ソフトウェア開発に携わる方に気づきを提供することを目指し、ソフトウェア開発の定量化/効率化/高品質化の動向を国内・海外、実務・研究から多面的に紹介し、研究者の視点、自身の業務経験をふまえた視点から考察します。現在、静岡大学 助教

詳しいプロフィール

カレンダー
2012年5月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
カテゴリー
エンタープライズ・ピックアップ

news094.gif ストレス社会との付き合い方
政府がメンタルヘルス検査の義務化を検討しています。しかしうつになった後だけではなく、なる前の予防も大切なのではないでしょうか。(5/24)

news094.gif 「思いやり経営」のススメ
産学・NPO連携の民間団体が先頃、「思いやり経営」という観点で評価した指標や企業ランキングを発表した。企業のマネジメント力を知る手立てとして注目されそうだ。(5/24)

news094.gif テレワークが労働者のマインドを変える
テレワークが普及すると、労働者の評価は従来の「時間×生産性」から「成果」へと変化する。時間や場所を自分の裁量でコントロールできる変わりに、成果を最大化するために労働をマネジメントする能力とマインドが労働者には必要になる。(5/23)

news094.gif 求む、クックパッド男子
高身長も高学歴も高収入もいらない。私が男性に求めるのは「料理の腕」だけです。(5/18)

news094.gif 37歳の常識――我々は一生学び続ける
学び続けなければ衰退するのみだ。(5/18)

オルタナティブ・ブログは、専門スタッフにより、企画・構成されています。入力頂いた内容は、アイティメディアの他、オルタナティブ・ブログ、及び本記事執筆会社に提供されます。

Special

- PR -

サイトマップ | 利用規約 | プライバシーポリシー | 広告案内 | お問い合わせ