(HASHIMOTO SOFTWARE CONSULTING)トップ
技術コラム
第0回:『科学的モデリング』の世界〜神は細部に宿る
はじめに
日本OMGさんと共同企画の連載技術コラムです。本コラムはHSCI(HASHIMOTO SOFTWARE CONSULTING INTERNATIONAL)の『科学的ソフトウエア開発アプローチ(Scientific Software Development Approach)』を紹介します。『科学的ソフトウエア開発アプローチ』の中の、特に『科学的モデリング(Scientific Modeling)』に焦点をあて解説します。
コラムについて
『科学的モデリング』とは、HSCIが提唱するソフトウエア工学の理論・定理・原理を利用して、正確なモデルを短い時間で作成することを可能とするアプローチです。
本コラムの『科学的モデリング』で利用するソフトウエア工学の理論・定理・原理の紹介と、これらの理論・定理・原理を活用してどの様にモデルを作成するのかについて紹介します。
ただし、ソフトウエア工学の理論・定理・原理については必要以上に学術的な解説はしません。
可能な限り実践を意識した解説を心がけます。企業のエンジニアの方や学生の方が実務や勉強の中で
モデリングを行う時に、どの様にソフトウエア工学の理論・定理・原理を活用すればいいのかを具体的に示し、正確なモデルを作成することに焦点をあてます。
これが『科学的モデリングアプローチ』の目的です。
『科学的モデリングアプローチ』は、日本で発行されている書籍やトレーニングやセミナーで解説される内容と大きく異なります。
そこで『科学的モデリングアプローチ』を理解してもらうために、1つ1つの技術的話題について「科学的」な視点からゼロベースで解説していきます。
例えば下記のような疑問を、科学的な視点から改めて明確にしていきます。
- そもそも「関連とは何か?」
- そもそも「継承とはどのようなもので、でどこまでメリットが得られるのか?」
- そもそも「モデルやコードの再利用には何が大切なのか?」
コラムの狙い:
『科学的モデリング』で扱うソフトウエア工学の理論・定理・原理やメトリクスを利用してモデルを作成することを紹介します。
「科学的」という用語から「形式手法(formal method)」を想起される方がいるかもしれません。例えば、「Z言語」「VMD++」「Alloy」などに代表される公理的集合論と述語論理ベースにする「モデル規範型
(model oriented type)」や、「プロセス代数(process algebra)」を用いる「SPIN」「LTSA」「CSP」など様々な形式手法のアプローチや環境が提案されています。
HSCIの『科学的モデリング』では、これらの形式手法についても積極的に利用する姿勢です。ただし、今回のコラムはUMLやSysMLによってモデルを作成する範囲に焦点をあてて解説していきます。
コラムの内容と予定:
『科学的モデリング』は「顧客要件定義」から「実装」「試験」までの作業工程を扱います。
この作業工程に対応して、『科学的モデリング』では、モデルとして「概念モデル」「分析モデル」「設計モデル」を作成します。
本コラムでは、まずは「設計モデル」に焦点をあてて解説していきます。実際に『科学的モデリング』でど
のようにモデルを作成し、コードへと変換していくのかを紹介することで、多くの方に『科学的モデリング』のイメージが湧きやすくなると判断しました。
本コラムの連載は、下記の重要事項の内容を順次解説していく予定です(ただし、コラムで解説していく順番は未定)。
クラス図(パッケージ図、サブシステム図、コンポーネント図を含む)を中心とした技術事項からまずは扱います。科学的なソフトウエア・アーキテクチャの分析や設計の方法についても解説する予定です。
クラス図から解説を始める理由は、オブジェクト指向開発において最も中心的になるモデルが、クラス図であるからです。これらの技術テーマをそれぞれ何回かのコラムに分けて解説していく予定です。
前提知識:
本コラムは下記の前提知識や経験がある事を想定しています。
『科学的モデリング(Scientific Software Modeling)』
『科学的モデリング(Scientific Software Modeling)』とは何か?
『科学的モデリング』の「科学的なモデル」ではモデルが下記の点を満たします。
例えば、UML(SysML含む)モデリングするときに、「クラス」「パッケージ」「サブシステム」「コンポー
ネント」の抽出や分割と相互の関連や依存関係について「これで問題ないか?」と悩んだことは誰にでもよく
ある事ではないでしょうか?
また、他人が作成したモデルにおいて、同様に「なぜこの様なクラスとクラス間の関連にしたのか?」と疑
問に思う事も度々あります。多くの場合は、さほど明確で工学的な根拠が無いケースが多く、モデルを作成し
た方の主観や個人的な経験則に依存しているようです。
ソフトウエア工学にはモデルを作成するための理論・定理・原理が存在し、それを活用することで正当性や
整合性のある洗練された作業が可能になります。モデルやコードの保守性や再利用性を可能にする理論・定理・原理が存在するからです。
また、モデルの作成や評価を行う時に客観的なデータを用います。数値を用いることで「主観に依存する評価」「感覚的な作業」から脱局できます。
メトリクスは色々提案・利用されていますが、「再利用性」「保守性」「開発コスト」などのメトリクスを紹介していく予定です。
『科学的モデリング』の価値
『科学的モデリング』は『科学的なモデル』を作成するアプローチですが、開発現場の視点から捉えると下記を達成する事を目的としています。
『科学的モデリング』の哲学〜『神は細部に宿る』
『科学的モデリング』のアプローチは、正確なモデルを早く作成することを可能にします。
世界中の優れた建築、精密な機械などの設計図面を見ると、一流の建築家や設計者が細部まで細心の注意を払って正確に設計しています。
重要な点は、細部まで注意を払って正確に設計することが、全体の完成度を決定することです。
建築家や設計者は高い専門知識があるので、限られた時間の中で、専門的な知識を駆使して設計を精密に早く行う事ができます。
将棋や囲碁やチェスの高段者も、正確な最善手を短い時間で指す事ができます。そして、棋譜を見ると細部まで緻密に検討された事が分かります。
『科学的モデリングアプローチ』はモデルに対して同様の事をもたらします。
『科学的モデリング』哲学は次の通りです。
- 「細部まで正確に作成する」
- 「科学的(工学的)に作成する」
- 「早く作成する」
『科学的モデリングアプローチ』の哲学のモチーフは『神は細部に宿る』です。
『科学的モデリング』は全ての開発に利用できる
『科学的モデリング』の利用に制約はありません。
『科学的モデリング』を自分たちの「開発ライフサイクル」や「プロジェクト管理」のやり方の中に効果的に取り入れることが可能です。
『科学的モデリング』のアプローチは、「反復型ライフサイクル」や「V字型開発ライフサイクル」などの開
発ライフサイクル、アジャイルやPIMBOKやISOあるはCMMIなどをベースとする開発/管理プロセスとは直交
(独立)しているので、いかなるタイプの開発にも併用して利用できます。