ストラタジーナム メニュー

2008年10月22日水曜日

OCRESブログ 第17回 ソフトウェア設計のトレーニング法 3

以前このブログにも登場したことのある友人のS君が、座間から筆者を訪ねてやって来ました。
S君はかなり博識で話題豊富な人ですが、今回は「裁判員制度」で盛り上がりました。

そもそも裁判の判決を下す際に専門の裁判官以外に外部の人間を入れて判断させる制度は、先進国ではかなり幅広く受け入れられている制度で、国によって大きく2つの系統に分けることが可能です。


一つは陪審員制度で、一般人が一個の裁判に関し有罪無罪だけを判断するもので、アメリカやイギリスで取り入れられており(英米法)、もう一つは参審員制度と呼ばれ、一定の任期間に複数の裁判に関し裁判官とともに、有罪無罪だけでなく量刑も判断するもので、こちらは、任期内の複数の裁判を量刑も含めて担当し、いわばセミプロ的な人が、合議制の裁判に参加する形で、フランスやドイツなどで採用されています(大陸法系)。

日本の裁判員制度は、この2つの折衷案的なもので、一般人が参加するという点では陪審員制度と似ており、有罪無罪だけではなく量刑も判断するという点では参審員制に似ています。

従って従来、司法に民主的コントロールを取り入れることに遅れていた日本が、ここでは、一般人に有罪無罪だけでなく量刑も判断させるという極めて先進的な制度を取り入れることになります。


民主主義国家として古代より最も名高いギリシャでは、政治だけでなく、裁判も極めて民主的にやっており、なんと数百人の自由民が多数決で判決を下していたそうです。

そして、その制度の悪例(?)として名高いソクラテスのケースでは、「若者のをそそのかした」と言う罪で訴えられた際、その数百人の裁判官に対して悪態をつき喧嘩を売ってしまって、怒り狂った裁判官たちから死刑の判決を得てしまったそうです。
(その当時の例から見ても、ひたすら恭順の姿勢を見せていたら無罪放免になったかもしれず、とても死刑になるような罪ではありませんでした。)
また、その後も、ソクラテス自身、いくらでも逃げようとしたら簡単に逃げきれるにも関わらず、友人の忠告も聞かず、毒杯を仰いで死んでしまいます。有名な「悪法もまた法なり」という言葉はこの時のセリフと伝えられています。(ソクラテスはかなり意地っ張りな性格の奴だったと、筆者は睨んでおります。)



このギリシャ時代の制度から比べると、さすがに現代の制度はかなり洗練されてきています。

陪審員制度の根底にはカント流の哲学があると言われ、人間の知性のうち、悟性(物事そのものを把握する能力)は(他の知的能力、理性とか判断力とか言ったものに比べ)どんな人にもかなり平等に割り当てられていると信じられています。

また統計的に見ても、陪審員が裁判官よりも感情的あるいは非論理的判断をするとは証明されておらず、むしろ逆にアメリカなどでは裁判官よりも陪審員制度の方が信頼されています。
(陪審員の方がより慎重な判断をする傾向があり、裁判官の方が、検事や時の権力側に近い判断を下す傾向がある、と言われています。)

さて、日本の裁判員制度ですが、歴史的試行錯誤や哲学的バックグラウンドが全く無い代わりに、運用によっては司法制度に極めて強力な民主的コントロールが提供される可能性を秘めています。

しかしながら、S君も筆者も、その「運用によっては」という部分で、その効果に悲観的です。
現在の検察審査会も「運用によっては」かなり民主的なコントロールが可能な制度でありますが、残念ながらそのように「運用」されていません。
裁判員制度も、単なる形骸的なものにならないよう、制度の改善を模索しながら、前に進んで行くしかないでしょう。


UML2を使用したリアルタイム・ソフトウェア設計講座
この講座も、前回ご紹介した「SysMLを使ったシステム工学講座」と同様、設計演習を中心としたコースです。
ジム・クーリング博士によると、設計講座においていわゆる設計ツールを使用して演習すると、受講者は皆ツールの使い方の方に注意が行ってしまい、肝心の設計の方が疎かになる傾向があるため、彼の開発したトレーニング・コースはすべてツールを使わずに設計図(モデル図)は手で描く事になっています。

注意すべき点として、初学者は往々にして、設計ツールが使えると言うことと、設計が出来ると言うことを混同してしまう傾向があります。

受講者は、様々なソフトウェアの開発ツールの使用経験があると思いますが、ことUMLツールに関して言えば、どのツールも(もちろん機能の過不足はありますが)深いレベルで似通っており、学ぶよりも慣れの方が有効であり、短い演習時間をツールに慣れるために使うのは、時間の無駄と言えます。

さて、このコースの中身の解説は、「組み込みプレス」の次の号に投稿しましたので、そちらを参照頂くとして、ここでは、コースのアジェンダを紹介いたします。

UML2を使用したリアルタイム・ソフトウェア設計講座 アジェンダ

リアルタイム・システム設計入門

ー リアルタイム・システムの概要
ー インクリメンタル設計プロセス

ソフトウェア・マシン ー 基礎

ー モジュラー構造化の基礎と実践
ー プログラム設計における図法のテクニック ー UMLアクティビティ図

オブジェクト指向設計の概念

ー オブジェクトのコラボレーションの集まりとしての設計システム
ー クラス、オブジェクトとそれらの特徴
ー 設計・構築の鍵となる課題: ソフトウェア・テンプレート、カプセル化、インタフェース、情報隠蔽、継承と集約

クラスとオブジェクトのモデリングの基本

ー 設計テンプレート、 カプセル化、インタフェース、情報隠蔽
ー クラス・オブジェクトの汎化特化間系: 継承

動的振る舞いのモデリング

ー システムとオブジェクトの動きを定義するための状態図
ー UMLステート・マシン図の概念、文法、セマンティクス

理念的なオブジェクト・モデルの開発

ー 理想環境下における、オブジェクトの関係、コミュニケーションおよび制御
ー シナリオ、シーケンス図とコミュニケーション図
ー 責務に基づく設計テクニック
ー 実世界とのインタフェース

実践的な逐次(プロシージャ型)オブジェクト・モデル

ー 逐次的コードで、オブジェクト群の振る舞いを制御: コーディネータ・オブジェクト
ー アクティビティ図を用いて、アルゴリズム(もしくはプロセス的な)操作を指定

小型システムのための仕様モデルの開発

ー 仕様モデルの役割
ー 並列処理、非並列処理の構造 ー アクティブ・オブジェクトとパッシブ・オブジェクト
ー オブジェクト構造の仕様化 ー フラットなオブジェクト構造

並列処理システムとタスクに基づく設計

ー 抽象的なソフトウェア設計に伴う問題
ー マルチタスキング設計の基本

小型システムのための実装(タスキング)モデルの開発

ー 仕様モデルからタスキング・モデルへのマッピング

中規模システムの開発

ー コンポジット構造、ポート、インタフェース入門
ー コンポジット構造のための仕様モデルの生成
ー 実装(タスキング)モデルの仕様化

大規模システムの開発

ー 鍵となる構成ブロック ー パッケージとコンポーネント
ー サブシステム構造の設計
ー 実装モデリング

多重コンピュータ・システム

ー リアルタイム・システムのための多重コンピュータ構造
ー ソフトウェアをハードウェアにマッピングするための基準
ー 実践的な設計テクニック

ユースケース分析

ー 用件を構成し表現するためのユースケース
ー シナリオとユースケース
ー システム・スコープと直接的、間接的なアクター
ー アクターとシステム間のインタフェースを図的にモデリング

事例研究

ー コンピュータ制御の測定器の組み込みソフトウェアを題材