« 『科学的モデリング』による高階述語を利用した複雑なクラス図の考え方 | トップページ | オブジェクト指向のクラスと「代数構造」 »

2015年2月24日 (火)

誰でもできるソフトウエア開発の要件定義&ドメイン分析およびクラス図の科学的アプローチ

確定申告の作業が終了し、契約している税理士さんに後は全てお任せした。

 
 
有価証券の確認作業も終了。
  
資料や書籍も整理した。

書籍を整理していたら論理学のタブローの書籍があったので、本を整理しながらまだ憶えているか、直ぐに解けるか、整理しながらちょっとやってみた。

 
 
述語論理やタブローによる形式化や証明は大学の教養課程で学ぶ「論理学」の授業で使う教科書で間にある。
  

なので、理学部や工学部系の学生や卒業生なら基本的には誰でもできる。
大抵、学部1学年の時に習うはず。

 

述語論理の形式化に関連する知識は、ソフトウエア開発の要件定義やドメイン分析およびクラス図の作成に、直接に関わってくる重要事項だ。
 
まず命題を述語論理形式で表現する演習問題があったので、さっそく試した。

  
『勉強しない学生は落第する』
  

論理学の形式化でもそうであるが、要件定義やドメイン分析では前提として「議論領域」を明確にする必要がある。

 そうしないと、クラス図が変わってくる。
 
議論領域:対象の集合を人間全体の集合とすると:
Student(x):x は学生
Study(x):xは勉強する
Fail(x):xは落第する
  

(∀x)[( Student(x) ∧ ¬Study(x))⇒Fail(x)]
  

これは楽勝だな。
  

もう1丁。

  
『仮に論理学を履修するが物理学を履修しない学生がいて、そして、論理学を履修する学生は誰でも数学も履修するなら、論理学を履修するが、数学を履修しない学生がいる』
  

これはちょっと長くて複雑だ。

  
議論領域を人間全体の集合ではなく、「ある大学の学生全体の集合」とすると、確実に論理式が変化する。 「Student(x) ∧」を考慮する必要がない。

 
 
対象の集合を人間全体の集合とすると、ある大学の学生でないならば定義域外となるので、関 連(関数:写像は)が部分関数になる。
 

しかし、定義域を絞ったので全関数となる。
 

議論領域:ある大学の学生全体の集合とすると:
Logic(x):xは論理学を履修する
Physic(x):xは物理学を履修する
Math(x):xは数学を履修する
 
結局、

 
 
[(∃x)( Logic(x) ∧ ¬Physic (x)) ∧ (∀x)( Math(x) ⇒Physic(x))] ⇒ (∃x) Logic(x) ∧ ¬Math(x)
 

になる。

|

« 『科学的モデリング』による高階述語を利用した複雑なクラス図の考え方 | トップページ | オブジェクト指向のクラスと「代数構造」 »

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