【前へ】

3章 米国政府支援SDP(Software Design and Productivity)研究開発の動向

3.4.3 科学、工学的な設計

現在のソフトウェアが抱える低い信頼性、生産性、相互運用性、柔軟性は、技術的な脆弱性に起因している。それを解決するには、ソフトウェアは、科学的原理、方法、経験に基づいて設計すべきであり、このような科学、工学的な設計によって、実行コードを自動生成したり、事前にエラー、矛盾性をチェックしたり、テストを自動化したりしようとする試みである。このような試みに、軽い形式的枠組み、Semantic Webがある。

(1)軽い形式的枠組み
 軽い形式的枠組みとは何かを説明する前に、先ず、形式的枠組み、擬似形式的枠組み、及び、非形式的枠組みについて説明しよう。
形式的枠組みは、Hoareのロジックやリレーショナルデータベースの計算のように、数学的理論で裏づけされた概念で記述しようとする枠組みである。これは、類似、プリ/ポストコンデション、信頼/保証、連続性といった強力な概念の宝庫ではあるが、多くのアプリケーションにおいて、実用的ではない。

 一方、非形式的枠組みは、デザイン・パターン、エクトリーム・プログラミングがその例で、優秀なプログラマ、マネジャーの経験を発掘して、その経験を実践しようとするもので、非常に効果的な方法である。しかし、人の経験的能力に依存しており、経験的能力を身に付けるまでの時間、教育コストが課題である。

 また、擬似形式的枠組みは、UMLがその代表例であり、意外に有効ではあるが、その有効性は、ソフトウェア設計を形式化、標準化することによって得られるものであり、次善の策と言えよう。

 軽い形式的枠組み[9]は、型付けシステム、モデルチェッキング、ランタイムモニタリングといった実用的で強力な概念を採り入れる試みである。 これらの概念を拡張してより強力にしたり、新たなこのような概念を見つけていけば、現在のソフトウェアが抱える問題を飛躍的に解決する可能性がある方法である。

 例えば、型付けシステムは、コンポーネントとその動作環境との間の約束事を決めて置き、コンパイル時に、その約束事に従っているかを自動的にチェックするものであるが、実行時に動作環境が動的に変わるような場合においても、この型づけの概念、機構を適用されるようにすれば、証明付きコードを実現できる。また、モデルチェッキングは、ハードウェア設計において、流れを示すのに非常に有効であるが、これをソフトウェアに対しても適用できるようにする。ランタイムモデリングは、不正なふるまいを事前に推測するといった労力のいる仕事をしなくても、実行時に実際に不正な振る舞いするコンポーネントを容易に検出できるようにする。

(2)メタデータ、Semantic Web
 
メタデータ、Semantic Web[10]は、W3Cなどの団体が中心となって、その標準化、推進活動を行っている。メタデータは、データについてのデータであり、データを或る目的のために扱いやすくするデータのことである。例えば、以下のようなデータがある。

・データを構造化したデータ

・データリソースについてのデータ

・カタログデータ

・データを共通認識させる意味データ

 Semantic Webは、データについての意味情報であり、W3Cのディレクターであるティム・バーナーズ・リーらによって提唱された。その考え方は、サイエンティフィック・アメリカン誌で、以下のように紹介され、計算機が情報の意味を理解できるようにし、各意味情報を用いて、自動的な処理、知的な推論処理を行うことによって、人々が知識共有をグローバルに効率よく効果的に行うことを目指している。

「The Semantic Web is an extension of the current web in which information is given well-defined meaning, better enabling computers and people to work in cooperation.」

 Semantic Webは、メタデータの拡張として記述される。

図3.6に示すように、Semantic Webは、XML Schema、RDF、RDF Schema、DAML+OILなどのメタデータの記述を階層的に定義することよって記述される。

XML, RDF, Ontology vocabulary,

図3.6 Semantic Webのアーキテクチャ

 Semantic Webプロジェクトの特徴は、セマンテックスの標準化に向けて、非集中型のアプローチを採用していることである。データに対し意味を付与し、計算機が理解可能とするには、XMLのタグ、プロパティの用語を標準化し、その意味付けを明確化するメタデータの定義が必要となるが、そのメタデータの標準化にあたっては、一つに統一するのではなく、複数の標準が存在することを許容している。それぞれの目的のために、数多くのメタデータが定義され、標準化されてくると、それらの複数のメタデータには、同義語、同音異義語などが生じ、用語の相違が生まれる。このような場合には、同義語辞書(オントロジー)を作ることによって、その用語の相違を解消していこうとしている。この同義語辞書もメタデータで、図6のOntology vocabularyレイヤで定義される。同義語辞書を作成してもセマンティクスギャップ(用語の相違)は完全には解消されないが、現実的なアプローチであると言える。データベースがデータの整合性、一貫性を死守するあまり、分散化、共有化が進まなかったのに対し、Webが、データの整合性、一貫性を放棄して分散化を進め、ボトムアップの草の根型の発展を遂げ、Webをグローバルな巨大なデータベース化するのに成功したように、セマンティクスギャップを許容することによって、ボトムアップの草の根型に意味、知識が蓄積されて、巨大な知識ベースが構築されることを目論んでいる。次に、図3.6に示したSemantic Webアーキテクチャの各レイヤの内容を以下に示す。なお、Logic,Proof,Trustレイヤは、構想段階では何も決まっていないので、省略する。

1) XML Schema
 
XML Schema[11]は、XMLドキュメントの以下に示すクラス情報を記述する。

・構造情報:どのようなエレメント、属性から構成されているか

・データタイプ:そのエレメント、属性がどのようなデータタイプであるか
 <xsd:element name=“Price” type=xsd:decimal>

・データの基本情報:エレメントの頻出回数の制約などの情報
 <element name=“item” minOccurs=“1” maxOccurs=”unbounded”>

 これには、意味情報はなく、DTDと同様の機能を提供するが、DTDはXMLでないのに対し、XML SchemaはXMLであるので、XMLで使われているツールがXML Schemaに対しても使えるメリットがある。

2) RDF(Resource Description Framework)
 
RDF[12]は、メタデータを表すための枠組みであり、計算機が理解可能とするための情報記述を与える。RDFでは、リソースとプロパティと値の三つ組で構造を表す極めてシンプルな構造化モデルを採用している。

 例えば、リソース:http:// www.w3.org/Home/Lassila のプロパティ:著者の値:Ora Lassilaは、次のように表される。

<rdf:Description about=”http://www.w3.org/Home/Lassila”>
 <Name>Ora Lassila</Name>
</rdf:Description>

値は、リソースを指してよいので、ネットワークとして定義していくことができる。
http:// www.w3.org/Home/Lassila(リソース)の著者(プロパティ)は、個人http://www.w3.org/staffId/85740(リソース)であり、その個人の名前(プロパティ)は Lassila(値)、Emailアドレス(値)はlassila@w3.orgである。」は、次のように記述される。

<rdf:RDF>
 <rdf:Description about="http://www.w3.org/Home/Lassila">
  <Creator>
   <rdf:Description about="http://www.w3.org/staffId/85740">
    <Name>Ora Lassila</Name>
    <Email>lassila@w3.org</Email>
   </rdf:Description>
  </Creator>
 </rdf:Description>
</rdf:RDF>

また、構造を表すモデルとしてコンテナモデルを採用し、<Bag>, <Sequence>, <Alternative>が用いられる。

3) RDF Schema
 RDF Schema[13]は、RDFの以下のようなデータタイプを記述する。

・クラス、及び他のクラスとの関係を定義
 オブジェクト指向風に<Class>, <subClassOf>が用いられる。

・プロパティ、及び他のプロパティとの関係を定義
 <subPropertyOf>で他のプロパティの定義を継承することを示す。

・プロパティの値の範囲、属するクラスなどプロパティの制約を定義
 <range>でプロパティの値の範囲を、<domain>でプロパティが属するクラスを指定する。

・意味(ラベルとコメント)を定義
 <label>でラベルを、<comment>でコメントを指定する。

4) メタデータの例―Dublin Core
 以上のRDF、RDF Schemaを用いてメタデータが定義され、各業界、団体で標準化作業が行われている。その主なものには、以下のものがある。

・Dublin Core;書誌情報の基本語彙集
・P3P:プライバシに関するメタデータ
・RSS:サイト情報の要約と公開
・WSDL:リモートプロシジャコール(SOAP)のメタ情報

 Dublin Core[14]は、Webや文書の作者、タイトルなどの書誌情報の基本語彙集である。

次の15の基本エレメントタイプが決められている。
Title Creator Subject Description Publisher Contributor Date Type Format Identifier Source Language Relation Coverage Right

さらに基本エレメントタイプよりもっと厳密なメタデータ記述を行うために、以下のような修飾子が規定されている。

Title.alternative
Description.tableOfContents Description.abstract
Date.created Date.Valid Date.available Date.issued Date.modified
Format.extent Format.medium
Relation.isVersionOf Relation.hasVersion Relation.isReplaceBy Relation.replace
Relation.isRequiredBy Relation.requires Relation.isPartOf Relation.references
Relation.isFormatOf Relation.hasFormat
Coverage.special Coverage.temporal

5) DAML+OIL Ontology
 DAML+OIL Ontology[16][17]は、RDF Schemaに加えて、より詳細なクラス、プロパティの定義、制約、表記を記述する.

これらの記述のために以下のタグが規定されている。

cardinality cardinalityQ Class complementOf Datatype DatatypeProperty DatatypeRestriction Datatype value differentIndividualFrom disjointUnionOf disjointWith domain equivalentTo hasClass hasClassQ hasValue imports intersectionOf inverseOf maxCardinality maxCardinalityQ minCardinality minCardinalityQ ObjectClass ObjectProperty ObjectRestriction oneOf onProperty Ontology Property range Restriction sameClassAs sameIndividualAs samePropertyAs subClassOf subPropertyOf toClass TransitiveProperty UnambigousProperty unionOf UniqueProperty versionInfo

【次へ】