「CTC製造フォーラム2011」の講演追加情報~講演タイトルと内容
先日ブログで「CTC製造フォーラム2011」で講演を行うことをアナウンスしたが、私の講演を含む他の講演者の講演タイトルと内容のプログラムが公開された。
参加申し込みや詳細な案内は下記へURLで公開されています。
| 固定リンク
先日ブログで「CTC製造フォーラム2011」で講演を行うことをアナウンスしたが、私の講演を含む他の講演者の講演タイトルと内容のプログラムが公開された。
参加申し込みや詳細な案内は下記へURLで公開されています。
| 固定リンク
学生時代や新人時代に学んだソフトウエアの内容は主として効果的なアルゴリズムや細かな設計技法が多かった。
しかし、企業のエンジニアとして働くには、学校で学んだ内容でははなはだ不十分であった。
1989年頃、防衛産業のエンジニアとして大規模なリアルタイムシステムをオブジェクト指向で開発する際に、参考にした書籍が「Adaによるソフトウエア開発」である(監訳は筧捷彦先生で、形式手法などを中心に有名な方である)。
学生時代に学ぶソフトウエア工学とは異なり、ビジネス世界では要件開発からテストまで大規模開発ならではの開発アプローチが存在する。
学校で学習する内容とは全く異なるスキルが要求される。
書籍「Adaによるソフトウエア開発」では、今の開発方法に近い設計アプローチが解説されている。
Ada言語は先進的な機能を保有しているが、Eiffel言語同様、ソフトウエア工学の知識が充分でないとAda言語を活かせない。
当時鳴りモノ入りで登場したAdaであったが、Ada言語の文法そのものよりもAda言語の思想を満たす分析・設計技法の理解が重要であった。
たとえば、仕様と実装の分離、クラスやオブジェクトの切り出しとAdaパッケージとの対応、マルチスレッド・プロセス設計とAdaのタスクとランデブー通信へのマッピングおよびデッドラインを満たすためのリアルタイム設計などなど。
「Adaによるソフトウエア開発」を読み返すと当時の状況が思い起こされ懐かしい。
| 固定リンク
少し古い書籍になるが名著の誉高い「プログラミングの科学」を読んでいる。
内容は一言で言うとプログラムの正当性についてである。
バートランド・マイヤーが提唱した「契約に基づく設計」とうのがあるがあるが、この中で登場する「表明」「不変条件」「事前条件」「事後条件」などはバートランド・マイヤーのオリジナルではない。
フロイド、ダイクストラ、ホアなどの研究者の成果をバートランド・マイヤーが自分の設計言語Eiffleと彼のソフトウエア設計思想に組み込んでいる。
この書籍は、プログラムを科学的に設計・実装するときには、重要な考え方があるのだがそれについて順を追って述べている。
命題と述語から始まり「表明」「不変条件」「事前条件」「事後条件」をどのように見つけ出し、設計・実装するかまでを解説しているが、途中に非常に重要な概念や技法を解説している。
本書は記号論理学の書籍ほど固い本ではないが、述語論理について慣れていない人には受け付けないタイプの書籍である。
ただし、この手の内容はひとたび重要なポイントをきちんと学ぶ機会を得て、理解すると数学的である故に、似たタイプの本はすっきり読み進めていける。
一方で、この手の内容は大学できっちり教え、そして学ぶ機会を得ないと、必要と思っていてもなかなか学習するチャンスが無いかもしれない。
そいういう意味ではJava言語のプログラミングとかUMLなどのような事はいくらでも独学できるから、そのようなカリキュラムに時間を掛けるべきでは無い気がする。
日本人がソフトウエアに弱いと言われるのは、論理的な部分が不十分になっているからだと思う。
| 固定リンク
先進的な製造業の企業では、MDAアプローチが積極的に進められている。
私自身もMDAの開発経験もあるし、コンサルテーションおよび最新の研究も進めている。
MDAは開発環境の支援がないと行えない技法である。
それだけに開発環境の選択が重要なのである。
一方MDAは開発環境の支援が必要な上に、開発環境の特徴(というか技術のコンセプト)に強く依存する。
つまり、一口にMDAツールと言っても各MDA開発環境の特徴を理解しないと、MDAアプローチの製品開発の効果が不発に終わるこも多い。
MDAの開発環境モデリングツールに、以前「RoseRealTime」があった(現在も販売しているかもしれない。。)。
最近、全くこのRoseRealTimeについての話を耳にしない。
私の印象では、販売元のIBM-RationalがRoseRealTimeの特徴やリットおよび技術基盤についてのアピールが上手でなかった気がしている。
MDA支援ツールは通常、オブジェクト指向技術を軸に先進的な開発手法や理論に基づく機能の支援を提供しているのだが、RoseRealTimeの場合は、開発環境の技術基盤の軸がオブジェクト指向技術を包含しつつも実際には「CSP」であることが最大の特徴だったことである。
他の多くのMDAツールが標準的なオブジェクト指向アプローチに対して、RoseRealTimeは並列・並行性の複雑な設計をどのように形式的に設計するべきかと言うCSPベースのアプローチである。
当然、複数のCPUやマルチコアタイプの実装環境のソフトウエア開発では、並列・並行性の設計は難題の1つであるから、CSP理論を支援する開発環境は非常に重要だ。
RoseRealTimeはツールこのようなソフトウエア開発を想定しており、原則としてCSP理論や効果を理解しているユーザーが活用することが望ましい。
残念ながらRoseRealTimeは少々強引に”オブジェクト指向”を強調しすぎた感がある。
一応、RoseRealTimeの開発アプローチではユースケース記述をしていくところやクラス(これがカプセルの基であり、独立して動作する単位へと成長させていく)抽出する流れは、標準的なオブジェクト指向開発と同じ流れであるが、少々強引な感じも否めない。
なぜなら、標準的なオブジェクト指向アプローチのクラスとRoseRealTimeのCSPベースのクラスは根底が異なるために継承などの考え方に違いが出てくるからだ。
RoseRealTimeでは、「is-a」による区分原理の継承よりも「実装継承」としての設計が多くなる(補足:Liskov置換原理を意識すれば実装継承も保守・拡張性にさほど影響を与えない==>この辺はバートランド・マイヤーの「Object-Oriented Costruction」に詳しく書かれている。マイヤーは実装継承を積極的に薦めている。ただし、「DbC」をきっちりしないとNG)。
多くのエンジニアが特に違和感を受ける部分は、開発ライフサイクル初期の段階から実装上のことを考慮する感じがする点である。
(誤解の無い様に補足しておくと、RoseRealTimeのアプローチの分析(少々乱暴だがMDAのPIMに対応)作業のモデルでは、特定のOSやミドルウエアへの最適化の事では無く、並行性や時間制約およびデーター交換やプロトコルのことを検討するので、一応特定のOSやミドルウエアからは非依存のモデルにはなる。。。)
このことから、オブジェクト指向に慣れた多くのエンジニアが、RoseRealTimeがMDAツールであると主張しながら、PIMやPDMに対応しないモデルを作成していくという印象をぬぐえないのである。
まぁCSPだから当然なんだけど:-)、標準的なオブジェクト指向アプローチしか知らないエンジニアには、非常に違和感を感じるのである。
それだけに、もっとCSPの考え方を説明した上で、オブジェクト指向技術やユースケースによる要件定義さらには反復型開発によるMDAアプローチを推進することを強調した方が正解だった気がする。
実はRoseRealTimeは、もともとObjectTime社のツールであり、IBM-Rationalが買収して名前がRoseRealTimeになった。
そのとき、RoseRealTimeをRUPを合わせたのだが、若干急ぎ過ぎたのではないか?あるいはCSP開発アプローチを理解しないままRUPにあてはめたのか?
ソニー時代、RoseRealTimeのUSAのスタッフの人間と話をする機会があったが、時がCSPアプローチの話は全くしていなかった。
MDAではPIM作成のとき、実装環境およびそれに関連する内容は検討しないのに、RoseRealTimeのアプローチでは、開発初期に必要以上に、並行性や時間制約およびデーター交換やプロトコルのことを検討するのか?
という質問にUSAのスタッフ(多分マーケティングか営業)は回答できなかった記憶がある。
RoseRealTimeはある程度開発対称のプロジェクトを選ぶが(並行性や時間制約が不要なSWなど)、非常に効果があるから、上手に特徴が説明されなかったのは惜しまれるツールである。
| 固定リンク
最近のコメント