説明

ソフトウエアライフサイクル管理方法およびソフトウエアライフサイクル管理装置

【課題】 ソフトウエアライフサイクルの管理の効率化が望まれている。
【解決手段】 位相空間レベル処理ブロック130は、オブジェクト集合記憶部190に格納されたプログラムを位相空間として設計する。接着空間レベル処理ブロック140は、複数のプログラムの上に同値関係を設定し、同値関係で対応づけられたプログラムモジュールを接着した接着空間を設計する。セル空間レベル処理ブロック150は、モジュールの属性をセルで表現し、セルの次元を設計し、表現レベル処理ブロック160は、セルの表現を設計する。ビューレベル処理ブロック170は、ソフトウエア開発者もしくは保守者に対するビューを設計する。ホモトピーレベル処理ブロック110は、ソフトウエアの開発、試験、および保守に伴う操作によって生じるプログラムの変化をホモトピーとして設計する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明はソフトウエアライフサイクル管理技術、とくに、複数の異なるオブジェクト集合間でデータの一貫性維持、インタフェイスの確定その他の処理をなすことのできるソフトウエアライフサイクル管理装置およびソフトウエアライフサイクル管理方法に関する。
【背景技術】
【0002】
「ソフトウエア工学」(Software Engineering)という用語は、1968年のNATO会議で最初に使われたといわれる。この会議において討議されたソフトウエア設計法、プロジェクト管理、技術者教育、ソフトウエアの価格および流通の4つの項目は、今なお、ソフトウエア工学の中心課題である(非特許文献1参照)。
【0003】
ソフトウエアライフサイクル管理は、要求分析・仕様、設計、実装、テスト、運用、および保守の各段階からなる。最初の要求分析が甘く、顧客の要求を取りこぼしたり、取り違えたりすると、それ以降のシステム設計、実装に顧客の要求が正しく反映されない。そのため、テストや運用段階で発見された不具合を修正するために、プログラムを改良したり、大規模な変更の場合はシステム設計をやり直すなど、ソフトウエアの保守に大変な時間と労力がかかる。最悪の場合、保守に耐えられないソフトウエアは廃棄されることもあり、最初から開発をやり直すことになる。このように、ソフトウエアの開発プロセスの初期段階において、要求分析に時間と労力を惜しむと、保守段階においてコストがかかり、開発プロセスをトータルでみた場合に、全体のコストが肥大する。
【0004】
ソフトウエアの伝統的なライフサイクルモデルの一つに、1970年に提案されたウォーターフォールモデルがある。ウォーターフォールモデルでは、ソフトウエア製品は、要求分析から始まり、システム設計、プログラム設計、プログラム実装、単体・結合テスト、システムテスト、運用、保守に至るまでシーケンシャルに開発されるものと考え、ソフトウエアの開発のアクティビティをモデル化している。
【0005】
ウォーターフォールモデルは、直線的な開発モデルであり、ある段階は次の段階を開始する前に完了する必要があり、複数の段階にまたがった繰り返しは想定されない。ウォーターフォールモデルは、最初の段階ですべての要求仕様を明確に定めることを要求し、不確実性に対応することはできない。顧客の要求が仕様の決定後やプログラムの設計段階で変更されても、ウォーターフォールモデルでは新しい要求に柔軟に対応することができない。通常、ソフトウエアは試行錯誤しながら多くの繰り返しを経て開発されるため、繰り返しを前提としない直線的な開発モデルはおよそ現実的ではない。そのため、ウォーターフォールモデルは今日、非常に大規模なソフトウエアの開発モデルとして用いられることはあっても、一般的には利用されていない。これらのよく知られたウォーターフォールモデルの限界は、最近米国で行われたソフトウエアエンジニアリングに関するサーベイにおいても指摘されている(非特許文献2参照)。
【0006】
情報システム構築は、たとえば大手銀行の統合に伴う統合システムに典型的にみられるように、単一大規模サイト向けから、複数分散大規模サイト向けに加速度的に移行しつつある。ところが、その基盤技術となっている現在のソフトウエア工学、リエンジニアリング技術において、これに対応するための基本的枠組みとしてのエンジニアリングモデルが欠落している。その理由は、統合方法がモデルレベルで欠如しているために、各サイト構築担当のエンジニアが個々にモジュール群を工夫して設計・構築している点にある。このために、モジュール群仕様がサイト毎に自ずと異なる。モジュール群の仕様が相互に開示されれば、再構築も可能であるが、モジュールの数の組み合わせにより指数関数的に再構築システム数が増え、いわゆる「開発工数爆発」が生じる。しかも、実際には、企業機密保持上モジュール群の仕様が開示されない場合のほうが多い。この場合、モジュール間のインタフェイス作成情報が開示されるものの、インタフェイス数も組み合わせにより指数関数的に増加するので、一層「開発工数爆発」の様相が顕著となる。
【非特許文献1】シャリ・ローレンス・プリーガー著,堀内泰輔訳,「ソフトウエア工学 理論と実践」,初版,株式会社ピアソン・エデュケーション,2001年11月
【非特許文献2】Philip A. Laplante and Colin J. Neill, "The Demise of the Waterfall Model Is Imminent" and Other Urban Myths, ACM QUEUE (Feb. 2004), Vol.1, No.10, pp.10-15.
【発明の開示】
【発明が解決しようとする課題】
【0007】
ソフトウエアの効率的な開発と保守を支援するための理論的基礎となるエンジニアリングモデルが欠如しているために、要求分析からシステム設計、実装、テスト、保守に至るまでのソフトウエアライフサイクルのスムーズな流れが滞り、ソフトウエア開発が遅延し、また、運用段階で不測の事態が発生しやすいためリスク管理が難しく、ソフトウエアの保守にかかるコストが増大している。
【0008】
国内外には、リレーショナル・データベ−ス(RDB)モデル、ERモデル、タグによるXML、グラフによるUMLなどが研究され応用されているが、大規模分散情報システムを構築する理論的基礎としてはモデル的に完全とはいえず、例えばモジュール間のインタフェイス仕様が、異なるサイト間で統一的に取り扱える理論体系になっていない。したがって、前述の「開発工数爆発」は解決できない。
【0009】
また、各国において昨今の厳しい経済状況もあり、会社統合が増加の一途をたどっているが、異なる情報システム間で整合性をもって情報処理を自在に行えること、すなわち、情報システムのインターオペラビリティが確保されないため、情報システムの運用と保守の費用が増大している。
【0010】
大規模システムのコストの半分から2/3は保守費用であると言われており、保守はシステムを導入した企業にとって大きなコスト要因となっている。特に稼働中のシステムに不具合が生じた場合、保守は企業の存続に関わる問題となることもあり、大変なリスクを伴う。ソフトウエアに変更を加えるコストは、その変更が要求仕様の決定段階あるいはシステムやプログラムの設計段階で行われるのであれば、比較的低いが、ソフトウエアが出荷され、運用されてからの変更の場合、コストはとてつもなく大きくなる。したがって、できるだけ早い段階で要求仕様や設計の不具合を見つけ、運用後の変更を少なくする必要がある。また、運用・保守段階での変更は、たとえ一部の変更であっても、他のソフトウエアの部分に影響を与えることもあり、変更は複雑で慎重を要する作業となる。ソフトウエアの保守を効率的に行うことが、ソフトウエアの全体コストを削減する上できわめて重要である。
【0011】
本発明はこうした背景からなされたものであり、その目的は、ソフトウエア部品のインターオペラビリティを線形モデルとして保証して、ソフトウエアの開発、試験、および保守の自動化を支援することのできるソフトウエアライフサイクル管理技術を提供することにある。
【課題を解決するための手段】
【0012】
本発明のある態様はソフトウエアライフサイクル管理方法に関する。この方法は、ソフトウエア部品集合間の線形インターオペラビリティを保証するインクリメンタリモジュラな抽象階層モデルを利用して、ソフトウエアの開発工程から試験工程を経て、保守工程に至るまでのライフサイクルを一貫して管理する。
【0013】
「ソフトウエア部品」は、本装置により自動生成されるソフトウエアを構成する部品であり、ソフトウエアで利用されるデータ、ソフトウエアを構成するプログラムなどを含む。
【0014】
本発明の別の態様はソフトウエアライフサイクル管理装置に関する。この装置は、ソフトウエア部品集合間の線形インターオペラビリティを保証するインクリメンタリモジュラな抽象階層モデルを利用した、ソフトウエアの開発機能ブロック、試験機能ブロック、および保守機能ブロックを備え、ソフトウエアのライフサイクルを前記抽象階層モデルにもとづいて一貫して管理する。
【0015】
この装置によれば、複数のソフトウエア部品集合の間で同値関係を規定し、その同値関係を不変量として抽象階層間で継承しながら、各抽象階層において段階的にソフトウエア部品集合の満たすべき仕様を設計することができる。集合レベル、位相空間レベル、接着空間レベル、セル空間レベル、表現レベル、およびビューレベルを通して、同値関係が保証され、最終的にソフトウエアが数学的に整合性のある形で生成される。また、各抽象階層はモジュール化されており、ソフトウエア部品の追加、削除、および修正などを行っても、抽象階層を上下に行き来しながら、インクリメンタルに設計変更することができる。さらに、ソフトウエア部品集合に対してなされる操作をホモトピーとして扱うことにより、ソフトウエア部品集合を変化前の状態と変化後の状態の間で相互に移行させることができ、数学的な整合性を維持しながら、ソフトウエアの部品化、再利用、デバッグなどの開発工程を支援することができる。
【0016】
この装置によれば、ソフトウエアの試験に関して、開発工程により生成されたソフトウエアが各抽象階層において詳細化された仕様に合致するか否かをテストし、発見された問題に応じていずれかの抽象階層もどって開発工程を繰り返すことができ、抽象階層を利用して効率的な試験工程を支援することができる。さらに、ソフトウエアの保守に関して、運用中のソフトウエアに修正もしくは機能拡張の必要があった場合に、その修正もしくは機能拡張を行うべき抽象階層にもどって開発工程を繰り返すことにより、抽象階層を利用して効率的な保守工程を支援することができる。
【0017】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラム、データ構造などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0018】
本発明によれば、情報システムのインターオペラビリティを保証し、ソフトウエア開発、試験、および保守を含むソフトウエアライフサイクルの管理の効率化を図ることができる。
【発明を実施するための最良の形態】
【0019】
以下本発明を好適な実施の形態をもとに説明する。まず、本発明者が提唱するインクリメンタリモジュラな抽象階層(incrementally modular abstraction hierarchy)を説明し、その後、インクリメンタリモジュラな抽象階層を実装した情報処理装置を説明する。
【0020】
[1]集合論的設計
まず、サイバースペースに構築すべきオブジェクトの集まりを定義することからサイバーワールドの設計を始める。そのような集まりに対してインテリジェントマシンとしてコンピュータを使った自動操作の実行が可能であるためには、各集まりは「集合(set)」でなければならない。なぜなら、コンピュータは集合論的機械として構築されているからである。直観的に、集合Xは、同一のプロパティP(x)をもったすべてのオブジェクトxの集まりである。これを記号で表すなら、X={x|P(x)}である。集合に含まれる任意のオブジェクトを元または要素(element)という。要素をもたない集合を空集合φという。すべての要素が内部(interior)であるならば、その集合は開集合であるという。集合XとYが与えられたとき、コンピュータは、和(union)X∪Y、積または共通部分(intersection)X∩Y、差(difference)X−Y(x\yとも書く)、否定(negation)¬Xのような集合論的演算を施す。
【0021】
最初のサイバースペースとして集合Xからサイバースペースアーキテクチャの設計を始めるとしよう。未知のサイバースペースUのすべての要素uが与えられたとき、もしそれらの要素がすべてサイバースペースXの要素であることが確かめられたならば、その未知のサイバースペースをXの部分集合、すなわちXの部分サイバースペースと呼び、U⊆Xと表記する。部分集合であるかどうかは、(∀u)(u∈U→u∈X)を処理することで自動的に調べることができる。Uの閉包(closure)
【数1】

は、Uを含むXのすべての閉部分集合の積である。言い換えれば、Uの閉包は、Uの外部(exterior)要素でないXの要素である。Xの部分集合{U|U⊆X}のすべてからなる集合をXの巾(べき)集合といい、2と表記する。これはまたXの離散位相(discrete topology)とも呼ばれる。離散位相はサイバースペースを部分サイバースペースからなるものとして設計する上でたいへん有用である。なお、集合を要素とする集合(いわゆる「集合の集合」)を「集合族」(family of sets)ということがある。Xの巾集合は、集合Xのすべての部分集合を要素とする集合族である。
【0022】
[2]位相幾何学的設計
これから、サイバースペースをXの(複数の)部分サイバースペースとその重複(overlap)の和として設計する作業に入る。このように設計されるサイバースペースは一般に位相(トポロジー)空間(X,T)と呼ばれる。ここでT⊆2である。位相空間の設計は次の仕様により自動化される。
1)X∈Tかつφ∈T;
2)任意の添え字の集合Jに対して、
∀j∈J(U∈T)→∪j∈J∈T;
3)U,V∈T→U∩V∈T.
【0023】
上記の設計仕様の1)は、空集合と全体集合がTの要素であること、2)は、Tの要素をいくつもってきて和をとってもTの要素であること、3)は、Tの2つの要素の積(共通部分)もTの要素であることを示している。コンピュータは、Xの巾集合2からこの設計仕様を満たすようにTを設計する。
【0024】
Tを位相空間(X,T)の位相(トポロジー)という。T1⊂T2である2つの位相T1とT2が与えられたとき、T1はT2よりも弱いまたは小さいという。逆に、T2はT1よりも強いまたは大きいという。またT2はT1よりも細かい、あるいはT1はT2よりも粗いということもある。明らかなように最も強い位相は離散位相すなわち巾集合であり、最も弱い位相は空集合φである。簡単のため、あいまいさが生じないならば、位相空間を表すために(X,T)の代わりにXをしばしば用いる。
【0025】
2つの位相空間(X,T)と(Y,T')が与えられたとき、いかにして(X,T)と(Y,T')が同値であるということができるだろうか。コンピュータを使って、それらの空間が位相幾何学的に同値であることを自動的に検証(validate)するための基準をここに与える。2つの位相空間(X,T)と(Y,T')は、連続な関数f:(X,T)→(Y,T')が存在し、かつその逆関数も存在して連続であるならば、トポロジー同値(topologically equivalent)、すなわち同相、同位相または位相同形(homeomorphic)であるという。(X,T)が(Y,T')と同相であることを
【数2】

と書く。
【0026】
それでは、関数fの連続性はどのように立証することができるか。最初に、∀B∈T',f−1(B)∈Tであることを調べる。ここでf−1(B)はfによるBの逆像を意味する。次に、以下が成り立つことを調べる。
Bが開である⇔f−1(B)もまたXにおいて開である。
【0027】
[3]関数
関数f:X→Yが与えられたとき、全域関数(total function)と部分関数(partial function)が存在する。関数f:X→Yに対して、∀x∈X、∃f(x)であるとき、そしてそのときに限り、関数fは全域関数であるという。関数f:X'→Y|X'⊇Xを部分関数といい、このときf(x)は必ずしもあらゆるx∈Xに対して存在しているとは限らない。
【0028】
全域関数に対して、3つの基本的なタイプの関係あるいは写像が存在する。
1.単射(injectiveまたはinto)
∀x,y∈X,x≠y⇒f(x)≠f(y)
言い換えれば、
∀x,y∈X,f(x)=f(y)⇒x=y
2.全射(surjectiveまたはonto)
(∀y∈Y)(∃x∈X)[f(x)=y]
3.全単射(bijective)
単射かつ全射であること
【0029】
[4]同値関係
集合X上の任意の2項関係R⊆X×Xに対して、Rは、
1)(∀x∈X)[xRx]ならば、反射性があり、
2)(∀x,y∈X)[xRy⇒yRx]ならば、対称性があり、
3)(∀x,y,z∈X)[[xRy⇒yRx]⇒xRz]ならば、推移性があるという。1)〜3)の条件は、それぞれ反射律、対称律、推移律と呼ばれる。
【0030】
Rが反射性、対称性、推移性をもつとき、Rを同値関係(equivalence relation)と呼び、〜で表記する。
【0031】
x∈Xが与えられたとき、x/〜={y∈X:x〜y}で定義されるXの部分集合をxの同値類(equivalent class)と呼ぶ。ここで類(class)は実際には集合を意味するが、伝統的に類(クラス)と呼ばれており、今となっては変更するのは難しい。すべての同値類の集合X/〜をXの商空間(quotient space)もしくは等化空間(identification space)という。
X/〜={x/〜∈2|x∈X}⊆2
推移律より、各x∈X、x/〜≠φについて、以下が成り立つ。
【数3】

これは集合Xが空でない互いに素の(すなわち共通要素をもたない)同値類に分割される(分解されるともいう)ことを意味する。
【0032】
一般に、集合Xの上に同値関係〜が定義されたとき、あるXの要素aに対してaに同値である要素をすべて集めた集合を考えることができる。このXの部分集合は、aを代表要素とする同値類であり、[a]と表記される。ここで、同値類に含まれる要素のうちどれを取っても、それを代表要素とする同値類は同じ集合になる。すなわち、同値類は代表要素の取り方によらない。同値類が反射律、対称律、および推移律を満たすことより、各同値類は空ではなく、aの同値類にはaが属し、相異なる同値類には共通の要素がない。したがって、同値類をすべて集めると、それらは互いに交わらず、また全体の和集合はXに等しくなる。つまり、集合Xは同値類の直和(disjoint union)に分割される。この直和分割を集合Xの同値関係Rに関する類別(classification)といい、同値類全体の集合を集合Xの同値関係〜による商集合と呼ぶ。商集合に位相が定義されたものを上記のように商空間という。
【0033】
簡単な例で説明する。Xを有理整数の集合とし、Xの要素x、yの関係Rとして、「x−yが偶数である」を考えると、これは同値関係である。集合Xをこの同値関係Rで類別すれば、集合Xは、奇数の同値類と偶数の同値類の直和に分割される。
【0034】
ユークリッド幾何学において、図形の集合が与えられたとき、合同関係は同値関係であり、図形の集合全体を、商空間として、合同な図形からなる部分集合の直和に分割する。また、相似関係も同値関係であり、図形の集合全体を、商空間として、相似な図形からなる部分集合の直和に分割する。合同関係と相似関係はアフィン変換の例である。群論における対称関係は、図形の集合全体を、商空間として、対称な図形からなる部分集合の直和に分割する。
【0035】
電子商取引では、「電子商品であること」は同値関係であるが、「電子取引」は半順序(partially ordered)関係であることに留意する。集合X上の2項関係Sは、次の3つの条件を満たすとき、半順序関係である。
1)(∀x∈X)[xSx](反射律)
2)(∀x,y∈X)[xSy,ySx⇒x=y](反対称律)
3)(∀x,y,z∈X)[[xSy⇒ySz]⇒xSz](推移律)
【0036】
半順序関係をもつ集合を半順序集合(partially ordered set)と呼び、頭文字を取って、しばしばポセット(poset)ともいう。集合の2つの要素x、yがxSyか、ySxのいずれかであるとき、比較可能であるという。どの2つの要素も比較可能な半順序集合を全順序集合(totally ordered set)という。
【0037】
電子取引の関係は、売り手と買い手の関係が非対称であり、対称律を満たさず、反対称律を満たすため、半順序関係となる。一方、電子商品であるという関係は、売り手にとっての電子商品は買い手にとっての電子商品でもあるから、対称であり、同値関係となる。
【0038】
同値関係について強弱を定義することができる。1つの集合Xにおける2つの同値関係R、Sについて、xRy⇒xSyであるとき、RはSより強い、SはRより弱いという。また、Rによる類別はSによる類別より細かい、Sによる類別はRによる類別より粗いという。最も強い同値関係は、「同じものである」という同値関係であり、最も弱い同値関係は、Xの任意の2つの要素が同値であるとする同値関係である。
【0039】
[5]商空間(等化空間)
Xを位相空間とする。fを全射かつ連続な写像であって、各点x∈Xを、xを含む部分集合である同値類x/〜∈X/〜に写像する商写像(quotient map)(しばしば等化写像(identification map)とも呼ばれる)であるとする。
f:X→X/〜
ここで、既に説明したように、「写像f:X→Yが全射である」とは、
(∀y∈Y)(∃x∈X)[f(x)=y]
を意味する。
【0040】
Xの部分集合X⊆Xに対して、
が開である⇔f−1(X)|y∈AがXにおいて開である(これはfが連続であることを意味する)
が成り立つような全射写像fを考えた場合、X/〜を商写像(または等化写像)fによる商空間(または等化空間)と呼ぶ。商空間が等化空間とも呼ばれる理由がある。それは、既に述べたように、商空間は、各要素である同値類x/〜∈X/〜を、x/〜に含まれる点x∈Xと同一視することにより得られるからである。
【0041】
[6]接着空間
一般に、集合Aと集合Bに共通の要素がない、すなわちA∩B=φのとき、AとBは互いに素(mutually disjoint)であるという。互いに素である集合Aと集合Bの和集合Cを特に直和(disjoint union)(別名、「排他的論理和」)といい、
【数4】

と表す。逆に集合Cは互いに素である2つの集合Aと集合Bに直和分解されるということができる。
【0042】
さて、位相空間Xから始めて、これに別の位相空間Yを接着する。図1は、2つの互いに素である位相空間X、Yから接着空間が生成される様子を説明する図である。
【数5】

は、接着写像(attaching map)fによってYをXに接着(attach)することによって得られる接着空間(attaching space)である。この接着写像fは、各点y∈Y|Y⊂Yをその像f(y)∈Xと同一視することにより同値関係を規定するものである。
【0043】
接着写像fは、f:Y→Xである連続写像である。ただしY⊂Yである。このように、接着空間
【数6】

は商空間の一例であり、
【数7】

である。この場合における等化写像(identification map)gは、
【数8】

である。すなわち、等化写像gは、互いに素である2つの位相空間X、Yの直和
【数9】

を、接着写像fによって規定される同値関係による同値類の直和
【数10】

に写像する。
【0044】
[7]制限と包含
任意の関数g:Y→Zに対して、gのX(X⊆Y)への制限(restriction)とは、
【数11】

である。ここで
i:X→Yは、包含(inclusion)である。すなわち
∀x∈X,i(x)=x
である。
【0045】
[8]連続写像のエクステンションとレトラクション
位相空間X、Yと、部分空間A⊂Xに対して、f|A:A→Yを満たす連続写像f:X→YをAからXへの写像f|Aの連続エクステンション(または単にエクステンション)という。エクステンションは部分関数である。
【0046】
制限(restriction)rは、r:X→Aを満たす恒等写像1:A→Aの連続エクステンションである。したがって、r|A=1である。
【0047】
A⊂Xに対して、
【数12】

を満たすレトラクション(retraction)r:X→Aがあるならば、AをXの変形レトラクト(deformation retract)と呼び、
【数13】

で表す。
もし、Aがただ一つの点A={a}⊂Xであるならば、Aはレトラクト可能(retractable)といい、
【数14】

で表す。
【0048】
[9]ホモトピー
ホモトピーはエクステンションの一例である。X、Yを位相空間、f,g:X→Yを連続写像、I=[0,1]とする。ホモトピーは、次のように設計される。
H:X×I→Y
ただし、t∈Iに対して、
t=0のとき、H=f
t=1のとき、H=g
が成り立つ。このとき、fはgにホモトピックであるという。
【0049】
ホモトピーは連続写像のエクステンションであり、
H|X×{0}=fi
H|X×{1}=gi
ここで
=X×{0}→X
=X×{1}→X
【0050】
さて、ホモトピーレベルにおける位相空間の設計について述べる。2つの位相空間XとYがホモトピー同値(homotopically equivalent)
【数15】

である、すなわち同じホモトピー型をもつように設計する。それは、次の条件が満たされるように設計することでなされる。
【0051】
2つの連続写像f:X→Yおよびh:Y→Xに対して、
【数16】

である。ここで1および1は恒等写像、すなわち1:X→X、1:Y→Yである。
【0052】
ホモトピー同値も同値関係の一例であるが、ホモトピー同値はトポロジー同値よりも広い概念である。ホモトピー同値は、変化の後、位相幾何学的にはもはや同値ではなくなる情報の変化を同定することができる。情報はいろいろな操作や処理により変化するが、その操作および処理はホモトピーによって指定され、情報の変化はホモトピー同値によって検証される。事実、不変性(invariance)という抽象の観点からは、ホモトピー同値は集合論的同値よりも抽象性が高い。なぜなら、与えられた集合を要素の追加や削除によって変化させるとき、追加や削除の操作手順と追加もしくは削除された要素を保存することにより、集合をホモトピー同値にすることができるからである。また、後述のセル分解もホモトピー同値になるように行うことにより、セル分解を逆にたどって分解前の状態に戻すことが可能になる。
【0053】
[10]セル構造空間(セル空間)設計
セル(cell)は任意の次元(たとえばn次元、ただしnは自然数)の閉球(閉のnセルと呼ぶ)とトポロジー同値(すなわち同相)である位相空間Xである。
【0054】
閉のnセル(closed n-cell)を
【数17】

と表記する。
【0055】
開のnセル(open n-cell)を
【数18】

と表記する(しばしばeとも書かれる)。
【0056】
閉のnセル
【数19】

は、n次元閉球体(closed n-dimensional ball)である。ここで
【数20】

はn次元の実数である。
【0057】
開のnセル
【数21】

は、n次元開球体(open n-dimensional ball)であり、n次元閉球体
【数22】

の内部である。
【数23】

は、閉のnセルの境界であり、これは(n−1)次元球面(sphere)Sn−1である。
【0058】
位相空間Xに対して、特性写像(characteristic map)
【数24】

は、連続関数
【数25】

であり、次を満たす。
【数26】

【0059】
【数27】

は、開のnセルであり、
【数28】

は、閉のnセルである。
【0060】
位相空間Xから、整数集合Zによってインデックスが与えられた、Xの部分空間であるセルXの有限または無限の系列{X|X⊆X,p∈Z}を構成することができる。これは、フィルトレーション(filtration)と呼ばれ、次の条件を満たす。XはXの被覆(covering)、すなわちX=∪p∈Zであり、かつ、Xp−1はXの部分空間、すなわちX⊆X⊆X⊆…⊆Xp−1⊆X⊆…⊆X(これはスケルトン(skeleton)と呼ばれる)である。最大p次元のスケルトンはp−スケルトンと呼ばれる。
【0061】
C={X|X⊂X,p∈Z}を位相空間Xのセル分解(cell decomposition)、あるいは、位相空間Xの、閉セルである部分空間Xへの分割(partition)という。(X,C)はCW複体(CW-complex)と呼ばれる。
【0062】
セル接着写像を保存しながらセル分解を行うとき、セル空間を再利用可能な資源に変えることができる。そのような保存され、共有された情報をセルデータベース(cellular database)と名付け、セルデータベースを管理するシステムをセルデータベース管理システム(cellular database management system または cellular DBMS)と名付ける。
【0063】
より正確には、J. H. C. Whitehead, "Algebraic Homotopy Theory", Proceedings of International Congress of Mathematics, II, Harvard University Press, pp. 354-357, 1950によれば、位相空間Xが与えられたとき、スケルトンX⊆X⊆X⊆…⊆Xp−1⊆X⊆…⊆XをもったフィルトレーションXを以下の条件を満たす位相空間として帰納的に構成することができる。
(1)X⊂Xは、その要素がXの0次元セルである部分空間であり、かつ
(2)XはXp−1から次のようにして作られる。すなわち、Xは、接着写像と呼ばれる全射かつ連続な写像
【数29】

によって、Xp−1にp次元閉球体の直和(disjoint union)
【数30】

を接着することによって作られる。
【0064】
言い換えれば、Xは、直和
【数31】

を求め、
【数32】

における各点x、すなわち
【数33】

を、連続写像
【数34】

(ただし、各インデックスiに対してx〜f(x)である)
によって、その像
【数35】

と同一視(identify)することによって、Xp−1から構成される。
【0065】
このように、Xは商空間(quotient space)あるいは等化空間(identification space)であり、
【数36】

と書くことができ、これは、接着空間の一例である。写像Fはセル
【数37】

の接着写像の一例である。
【0066】
フィルトレーション空間(filtration space)は、フィルトレーションとホモトピー同値な(homotopically equivalent)空間である。位相空間XとスケルトンX⊆X⊆X⊆…⊆Xp−1⊆X⊆…⊆Xを合わせてCW空間(CW-space)と呼ぶ。セル複体としては、先に説明したように、これはCW複体(CW-complex)と呼ばれる。
【0067】
このようにして、写像
【数38】

を等化写像(identification map)の一例として得る。
【数39】

【0068】
各nセル
【数40】

に対する特性写像(characteristic map)
【数41】

は、
【数42】

と書ける。
【0069】
p−1をXの閉の部分空間として埋め込むことは
【数43】

と書ける。
【0070】
CW空間が微分同相(diffeomorphic)であるなら、これは多様体(manifold)空間と等価である。
【0071】
サイバースペースに構築されるオブジェクトの属性をこのようなセルで表現した空間をセル構造空間(cellular structured space)もしくは単にセル空間(cellular space)という。セルモデリングでは、セルの次元を維持しながら、セル構築(composition)とセル分解(decomposition)が可能である。
【0072】
セルの次元の例を述べる。たとえばサイバーワールドにおいて、ひとつの属性をもつオブジェクトは、ひとつの属性から他の属性へ移行することができないため、その自由度は0であり、したがってセルの次元は0である。このオブジェクトは、表現レベル(representation level)では点として表される。ここで、属性(attribute)とは、オブジェクトが本来有する特質や特徴を指定するための互いに独立な集合をいう。
【0073】
属性をふたつ有するオブジェクトでは、一方の属性から他方の属性への移行が可能なため、その自由度は1であり、セルの次元も1である。このオブジェクトは、表現レベルにおいて直線として表すことができる。同様に、属性を3個または4個もつオブジェクトは、それぞれ自由度すなわち次元が2または3であり、それぞれ曲面または球として表現できる。一般に、n個の属性を有するオブジェクトはn−1の自由度を有し、次元はn−1である。これは、(n−1)次元の球として表現できる。リレーショナルモデルは、n個の属性をもつオブジェクトをリレーショナルスキーマとして表現し、そのインスタンスとしてn列のテーブルを生成する。リレーショナルモデルは集合の直積にもとづくものであり、したがってそれは集合論レベルにおける表現といえる。
【0074】
セル空間は、接着空間に次元の概念を加えたものであり、セル空間設計では、接着空間におけるオブジェクトの属性の次元が規定される。同値類の直和である接着空間において、各同値類に含まれるオブジェクトの属性の次元に不整合がある場合、オブジェクトの属性の次元を調整する処理が行われる。
【0075】
[11]表現設計
セル空間レベルでセルの次元が設計された後、表現レベルにおいてセルの表現(presentation)が設計される。表現設計では、オブジェクトの属性のデータ型や桁数などの表現形式が詳細化される。オブジェクトの属性の表現形式に不整合がある場合、表現形式を受容表現(Admissible Representation)に合わせる処理が行われる。オブジェクトの属性の表現形式の不整合には、たとえば、データ型または桁数の違いがあり、データ型変換や桁数変換により、その違いを解消することができる。
【0076】
[12]ビュー設計
表現レベルでセルの属性の表現形式が詳細化された後、ビュー(view)、すなわちユーザが見ることのできる範囲が決められる。ユーザは、オブジェクトの集合のうち、関心のある部分だけを適当な形式で見たいという要求がある。また、セキュリティ上の理由などによりユーザが参照することのできる範囲を制限しなければならない。そのため、ビュー設計では、ユーザ向けに参照可能なオブジェクトの部分集合や、閲覧可能なオブジェクトの属性を制限したビューが決められる。
【0077】
[13]インクリメンタリモジュラな抽象階層
これまで述べてきたホモトピー、集合、位相空間、接着空間、セル空間、表現、ビューの各抽象レベルは、インクリメンタリモジュラな抽象階層(incrementally modular abstraction hierarchy)を形成する。
1.ホモトピーレベル
2.集合論レベル
3.位相空間レベル
4.接着空間レベル
5.セル空間レベル
6.表現レベル
7.ビューレベル
【0078】
これらの階層は、モジュール化されており、各階層においてインクリメンタルに情報を操作していくことが可能であり、サイバーワールドの不変量(invariant)を示す同値関係を階層的に継承する上できわめて有用である。
【0079】
まず、複数のオブジェクト集合の特定の要素について同値にする対象が選ばれる。次に、オブジェクト集合に位相が規定され、位相空間において同値関係が規定されることにより、複数のオブジェクト集合は、同値類の直和である接着空間として設計される。さらに、セル空間において同値セルとそれ以外のセルにセル分解されることにより、セル空間レベルまで同値関係が継承される。
【0080】
さらには、受容表現にもとづいてセルの表現形式を規定することにより表現レベルまで同値関係が継承され、最後にユーザのビューが規定されることによりビューレベルまで同値関係が継承される。表現レベルの1つのインスタンスとして、受容表現を規定するための受容表現レベルを設けておけば、オブジェクトを表現レベルで同値にすることができる。
【0081】
このようにインクリメンタリモジュラな抽象階層モデルでは、同値関係を抽象階層間で継承しながら、オブジェクトの満たすべき仕様を各階層において設計するため、情報の追加、削除、修正をインクリメンタルに行いながら、抽象階層間を行き来してオブジェクトの仕様を詳細化できる。また、こうして設計されたオブジェクトは再利用可能な形で部品化することができる。
【0082】
集合Xの部分集合からなる集合Sにおいて、Sに属するすべての集合の和集合がXに等しいとき、Sを集合Xの被覆(covering)という。n個の情報システムの統合を行うとき、「経営上の業務統合決定」は、インクリメンタリモジュラな抽象階層の上で、n個の集合の被覆を作ることの決定がなされたことに相当する。ここで、業務は別々の機関のものであってもかまわない。n個の集合は一般には重なりがある。たとえば、複数の業務に同じ社員が参加することなどがあるからである。このn個の集合の被覆が、インクリメンタリモジュラな抽象階層間で継承されることにより、業務統合が実装される。言い換えれば、ホモトピーレベル、位相空間レベル、接着空間レベル、セル空間レベル、表現レベル、およびビューレベルのそれぞれで業務の被覆が生成されることが、業務統合になる。いったん被覆が生成されると、n個の情報システムの間の統合および操作は、インクリメンタリモジュラな抽象階層の上ですべて被覆を通して行われる。その結果、n個の情報システムの間の統合および操作は、いずれも線形になる。このように、インクリメンタリモジュラな抽象階層によれば、n個の情報システムの間で被覆という線形インタフェイスを構成して線形インターオペラビリティを実現することができる。
【0083】
また、インクリメンタリモジュラな抽象階層モデルにおける位相空間は、ハウスドルフ空間(Hausdorff space)すなわちT位相空間に限られない。T位相空間では、分離公理により、異なる2点が開集合で分離できるが、異なる2点を開集合で分離することのできないT位相空間やT位相空間であっても、同様に接着空間が設計できることに留意する。したがって、抽象階層モデルは、非常に汎用性が高いものである。
【0084】
接着空間は、主要な企業や公的機関で用いられている有力な商用の情報システムに共通した特性を接着空間という形で異なる情報システム間で同値になるように抽象化し、モデル構築する。このように、接着空間は、異種情報システムを線形統合することのできる斬新な情報モデルであり、統合作業量の組み合わせ爆発を避けることに大いに貢献する。接着空間レベルにおける線形統合後の線形インタフェイス生成の自動化のために、上記のインクリメンタリモジュラな抽象階層が用いられる。この抽象階層によれば、同値関係が下位の階層まで継承されるため、既存の情報システムに対するインタフェイスを与えて、統合システム規模のタスクを実行するための線形インターオペラビリティを実現することができる。
【0085】
比較のために、リレーショナルデータベースシステムを例に挙げて説明する。リレーショナルデータベースシステムにおいて、リレーションはタップルの集合である。リレーションに新たなタップルが挿入されたり、既にあるタップルが削除されたり、タップルの属性値が修正されることにより、リレーションは時間とともに変化していく。たとえば、リレーションとして「社員(社員番号,氏名,所属,入社年度)」を考える。新しい社員が入社した場合、リレーション「社員」にその社員を表すタップルを挿入しなければならない。一方、ある社員が退職すると、リレーション「社員」にその社員を表しているタップルを削除しなければならない。また、配置換えにより、ある社員の配属先が変わった場合、その社員のタップルにおいて属性「所属」の値を修正しなければならない。
【0086】
このように、リレーショナルデータバースでは、タップルの挿入、削除、修正により、リレーションが時間とともに変化していく。しかしながら、リレーションには、社員の社員番号、氏名、所属、入社年度のデータを表しているという固有の性質があり、これは時間に対して不変である。リレーションにはこのように時間に対して不変な構造があり、これをリレーションスキーマと呼んでいる。
【0087】
リレーショナルデータベースモデルは、集合論にもとづくものであるから、位相空間のレベルで同値関係を定義することができない。したがって、複数の異なるデータベースを統合しようとすると、IDのつけなおしなど、データベースの再設計を行う必要があり、工数爆発の問題が起こる。それに対して、インクリメンタリモジュラな抽象階層モデルでは、上位概念で規定された同値関係を表現レベルまで落とし込むことができるため、複数の異なる情報システムの統合が線形操作で可能となる。すなわち情報システムの各要素のインタフェイスは、接着空間に一回変換するだけでとることができ、n要素でn回の変換でインターオペラビリティが保証され、インタフェイスの数は線形である。
【0088】
このように、本発明の抽象階層モデルに対して、従来のリレーショナルモデルは、同値関係をモデル化していないため、情報の統一的な扱いができない。せいぜい、テーブル間の関係を示す別テーブルを、パッチを当てる要領で設けてインタフェイスをとろうとしているが、これではインタフェイスの数が指数関数的に増える。一方、ER(Entity Relation)モデルを基本とするSAP、UML(Unified Modeling Language)なども、これらはすべて直観的なグラフ理論モデルであり、そのモデル自身が同値関係を扱うことができないため、同様の問題が起こる。これが社会基盤情報システムの現状であり、システムが明確なインターオペラビリティをもたないことが大きな問題となっている。
【0089】
[14]応用例
[14.1]Web情報モデリング
通常、Web情報マネージメントシステムのやるべき仕事は、Webグラフィックスを用いて情報を可視化することを通して、人間の認識との間で非常に近い相互作用をもちながら、Web上の情報を管理することである。Webグラフィックスの仕事は、人間の理解のためにグラフィックススクリーンにいろいろなイメージを投影することである。人間は、ディスプレイ空間に表示されたイメージを人間の認識空間における認識対象物にリンクすることによって、表示されたイメージを理解している。しばしば、幾何学的に正確な表示であっても、サイバーワールドでは通常は本質的な情報ではない、優先度の低い幾何学的形状によって、人間の認識を誤りに導くことがある。Web情報マネージメントに対してWebグラフィックスは、サイバーワールドの変化に合った速度で、人間が即座に認識できるようにスクリーン上に重要なメッセージを伝えることができなければならない。以下、簡単な例を挙げて説明する。
【0090】
[14.2]エレクトロニックファイナンスのWeb情報モデリング
エレクトロニックファイナンスにおいて、顧客Xが、Webサーフィンしているときに、金融取引会社YのホームページのWebページに投稿されている収益の期待できるファンドYを見つけたとする。この時点では、顧客XはWebで「ウインドウショッピング」をしている段階であるから、顧客Xと取引会社Yはファンドをまだ共有していない。したがって、XとYは互いに素であり、共通要素を持たない。すなわち、
【数44】

と表記することができる。一般化のために、XとYを位相空間とする。ファンドYは金融取引会社Yの属性の一部であるから、Y⊂Yが成り立つ。図2は、Web上のエレクトロニックファイナンスのプロセスをWebグラフィックスにおいて図示したものである。次に、ファンドが取引のために特定された後、顧客Xは取引会社Yとどのようにして関係づけられるかを述べる。ここで提案するWeb情報モデルは、顧客Xと取引会社Yの関係を接着写像fによって正確に表現し、また、「ファンドYが取引のために特定されている」という状況を2つの互いに素である位相空間X(顧客)と位相空間Y(金融取引会社)の接着空間として表現する。この接着空間は、顧客Xから始めて、金融取引会社Yを顧客Xに接着することにより得られる。ここで、YのXへの接着は、連続写像fを介して、各点y∈Y|Y⊆Yをその像f(y)∈Xと同一視することによって行われ、その結果、x〜f(y)|∀y∈Yである。このように、〜で表記される同値は、Web情報の接着空間モデルとして接着空間を作成するために、Web情報モデリングにおいて中心的な役割を果たす。
【0091】
上記の接着空間モデルは、エレクトロニックマニュファクチャリングにおいてもまったく本質的に等しく適用することができる。エレクトロニックマニュファクチャリングプロセスを管理し、表示するために正確に同一の技術が要求される。エレクトロニックマニュファクチャリングが市場の需要に効果的に即応するためには、いかにしていろいろなサイズのコンポーネントを統一したデザインで組み立てるかを指定しなければならない。先に提示したエレクトロニックファイナンスは、顧客と取引会社をエレクトロニックマニュファクチャリングのコンポーネントとして組み立てることであると考えることにより、エレクトロニックファイナンスのためのWeb情報マネージメントシステムとWebグラフィックスは、実際にエレクトロニックマニュファクチャリングに適用可能となる。もし、異なるアプリケーションに異なる技術を使うとなると、急成長しているサイバーワールドは、タイムリーにWeb情報マネージメントシステムで管理することも、Webグラフィックスで表示することもできなくなる。
【0092】
[14.3]エレクトロニックマニュファクチャリングのWeb情報モデリング
接着空間モデルによるエレクトロニックマニュファクチャリングのWeb情報モデリングはまったく簡単である。基本的には、エレクトロニックマニュファクチャリングと呼ばれるWeb上のマニュファクチャリングは、エレクトロニックマニュファクチャリングの工程に関する次の情報からなるWeb情報としてモデル化される。
1)製品仕様
2)組み立て仕様
3)Web上での部品購入
4)Web上の組み立てサイトでの購入
【0093】
各ステップは、必要に応じてより細かいサブステップに分解される。たとえば、ステップ1は次のサブステップに分解できる。
1.1)電子市場での製品のマーケット調査
1.2)マーケット調査から導き出される製品の要求
1.3)要求を満たすための製品の仕様
【0094】
エレクトロニックマニュファクチャリングのためのWeb技術全体の中で核となる部分は、Web情報モデリングとしてのWeb上での製品と組み立てのモデリングである。図3は、座席と支持部という2つのコンポーネントをもつ椅子の単純な組み立て例を用いて、最も初歩的な組み立てのモデリングを明確に図示したものである。発展したマニュファクチャリングとしてのエレクトロニックマニュファクチャリングにおいて、製品のコンポーネントは、モジュール化されており、より品質の高いコンポーネントを買うため、最も有効なアップグレードを行うため、あるいは修理するために置き換え可能に構成されている。
【0095】
エレクトロニックファイナンスとエレクトロニックマニュファクチャリングが接着空間と同値にもとづいて同一の情報モデリングを共有することは明らかである。
【0096】
[15]実施例
図4は、実施の形態に係るソフトウエア開発支援装置100の構成を示す。オブジェクト集合記憶部190は、ソフトウエア開発に利用されるオブジェクトの集まりを保持する。ソフトウエア開発に利用されるオブジェクトすなわちソフトウエア部品は、データ構造体やプログラムモジュールである。ソフトウエア開発支援装置100は、オブジェクト集合記憶部190に格納されたオブジェクトの集まりを参照する。ソフトウエア開発支援装置100は、オブジェクト集合記憶部190を介さずに、ウェブ上の情報システムからオブジェクト集合を取得して参照してもよい。以下、実施の形態では、説明の便宜上、2つのオブジェクト集合の間に所定の対応関係またはインタフェイスを定義する場合を説明するが、これはより一般的に複数のオブジェクト集合を参照してそれらの間にインタフェイスを定義する場合の一例に過ぎない。
【0097】
ソフトウエア開発支援装置100は、ホモトピーレベル処理ブロック110、集合レベル処理ブロック120、位相空間レベル処理ブロック130、接着空間レベル処理ブロック140、セル空間レベル処理ブロック150、表現レベル処理ブロック160、およびビューレベル処理ブロック170を含み、それぞれ既に述べたインクリメンタリモジュラな抽象階層モデルにおける各階層レベルの処理を行う。
【0098】
集合レベル処理ブロック120は、オブジェクト集合記憶部190に格納されたオブジェクトの集まりに集合演算を適宜施して、設計対象となる2つのオブジェクト集合を特定する。位相空間レベル処理ブロック130は、集合レベル処理ブロック120が特定した2つのオブジェクト集合に対して位相を規定することで、2つのオブジェクト集合はそれぞれ位相空間X、Yとして設計する。この時点で2つの位相空間X、Yは互いに素であり、これらの位相空間X、Yの直和あるいは排他的論理和である
【数45】

が確定する。
【0099】
接着空間レベル処理ブロック140は、図5にその詳細な構成を示すように、同値関係設定部44、同値関係保持部52、対応要素抽出部20、接着写像取得部22、等化写像取得部24、手順取得部26、および手順記録部28を含む。
【0100】
同値関係設定部44は、2つのオブジェクト集合に適用したい同値関係の入力をユーザから受け付ける他、ユーザの入力をもとにして自動的に同値関係を生成する。ユーザが同値関係を設定しやすいように、同値関係保持部52は同値関係の候補があらかじめ格納されている。また、ユーザがオブジェクト集合の要素を指定して同値関係を記述することのできるインタフェイスを設けてもよい。
【0101】
同値関係設定部44により設定された同値関係(以下、目的同値関係ともいう)は、対応要素抽出部20へ伝えられる。対応要素抽出部20は、2つのオブジェクト集合において対応関係を定義すべき構成要素(以下、「対象要素」ともいう)を、目的同値関係をもとに抽出する。その際、ユーザが1つのオブジェクト集合において対象要素の一方を指定し、対応要素抽出部20が目的同値関係をもとに他方のオブジェクト集合から対応する対象要素を抽出するようにしてもよい。
【0102】
対応要素抽出部20により対応しあうことが判明した対象要素は、ひとつの部分位相空間、すなわち同値類を形成し、接着空間モデルの理論的保証により、同値類の排他的論理和として接着空間が形成される。同値類は同値関係で規定される不変量をもとに分類されるため、オブジェクト集合を客観的に分類することができ、分類の結果にはシステム設計者による個人差が含まれない。また、一方の対象要素を決めると、他方の対象要素が決まるため、前述のごとく、対応関係またはインタフェイスの数が線形になり、インターオペラビリティが保証されることになる。
【0103】
目的同値関係が決まると、対象要素間がどのような意味において対応するか、その関係も一意に決まる。そのため、接着写像取得部22は対象要素間の対応を示す接着写像fを特定することができる。接着写像fが決まると、接着空間も、
【数46】

と定まる。接着空間は、もとは共通部分をもたない位相空間XとYの間に、接着写像fを媒介として対応関係を持たせた位相空間である。
【0104】
等化写像取得部24は、位相空間XとYの単なる排他的論理和の空間から、接着写像fによって定まる接着空間への写像である等化写像gを取得する。等化写像gは、現実には、その定義から位相空間X、Yおよび接着写像fによって記述することができる。
【0105】
手順取得部26は、同値関係設定部44から目的同値関係、対応要素抽出部20から対象要素、接着写像取得部22から接着写像f、等化写像取得部24から等化写像gの入力を受け、ユーザにより指定された対象要素および目的同値関係(以下、これらを「注目手順」ともいう)をホモトピーとして、一連の処理の結果で特定される、
・位相空間X、Y
・目的同値関係
・接着写像f
・等化写像g
と関連づけて手順記録部28へ記録する。
【0106】
セル空間レベル処理ブロック150は、図6にその詳細な構成を示すように、セル接合部62、セル次元調整部64、および対応テーブル保持部66を含む。セル空間レベル処理ブロック150は、接着空間レベル処理ブロック140において目的同値関係をもとに接着空間として設計された複数のオブジェクト集合の仕様を継承して、セル空間レベルでオブジェクト集合の仕様を詳細化する。セル構造空間モデルは、接着空間モデルに次元を導入したものであり、オブジェクトの属性のIDや属性の個数に関する仕様がセル空間レベルで詳細化されることになる。
【0107】
セル接合部62は、2つのオブジェクト集合間で目的同値関係により対応関係にある2つの対象要素を接合し、各オブジェクト集合に属するオブジェクトの属性をセルで表現する。セル次元調整部64は、対応する2つの対象要素間に属性の次元に関する不整合がある場合、その不整合を解消するための処理を行う。セルの次元に関する不整合として、対象要素の属性のIDや個数の違いなどがある。セル次元調整部64は、必要に応じて、2つの対象要素間で属性のIDや属性の個数の不揃いを調整し、2つの対象要素間の属性の対応関係を示すテーブルを対応テーブル保持部66に格納する。
【0108】
表現レベル処理ブロック160は、図7にその詳細な構成を示すように、表現生成部72、表現形式調整部74、および変換テーブル保持部76を含む。表現レベル処理ブロック160は、セル空間レベル処理ブロック150においてセル空間レベルで詳細化されたオブジェクト集合の仕様を継承して、表現レベルでオブジェクト集合の仕様をさらに詳細化する。表現レベルでは、セルの具体的な表現形式を決めるため、オブジェクトの属性のデータ型や桁数などに関する仕様が詳細化されることになる。
【0109】
表現生成部72は、2つのオブジェクト集合のそれぞれに属するオブジェクトの属性の表現を生成する。表現形式調整部74は、目的同値関係により対応関係にある2つの対象要素間に表現レベルの不整合がある場合に、その不整合を調整するための処理を行う。表現レベルの不整合として、対象要素の属性のデータ型や桁数の違いなどがある。データ型には、ブール値、符号付き整数、正の整数、実数、倍精度実数、文字型などがあり、表現形式調整部74はこれらのデータ型を変換して対象要素のデータ型を揃えてもよい。また、データ型が同じでも文字列の桁数や数値の有効桁数などの桁数が異なる場合には、表現形式調整部74は2つの対象要素間で属性の桁数を調整して揃えてもよい。その他の不整合の例として、計量や貨幣などの単位の違いがあり、変換式を用いて、一方の単位系が他方の単位系に変換される。
【0110】
表現形式調整部74は、位相空間Yを位相空間Xに接着する場合、表現レベルにおいて、位相空間Xのオブジェクト集合の対象要素と位相空間Yのオブジェクト集合の対象要素の属性のデータ型や桁数を比較して、相対的に精度が高い方の属性に揃えて、データ型や桁数を変換する。3つ以上のオブジェクト集合の対象要素間で属性の表現レベルの不整合を調整する場合も同じであり、表現形式調整部74は、複数のオブジェクト集合の対応する対象要素の属性表現の内、最も精度の高い属性表現を選んで、他の精度の低い対象要素の属性表現をその精度の高い対象要素の属性表現に合わせるように調整する。これにより、精度の異なる対象要素の接着後に、データ型変換や桁落ちなどにより元のデータが失われるのを防ぐことができる。
【0111】
表現形式調整部74は、最大の文字数や桁数をもった受容表現をもった表現フィルタとして作用し、当該表現フィルタを通過した表現は、表現レベルで同値になる。表現形式調整部74は、表現の不整合の調整をした場合の変換規則を記述したテーブルを変換テーブル保持部76に格納する。
【0112】
ビューレベル処理ブロック170は、ユーザに合わせたビューを設定し、ビューにしたがってオブジェクト集合をディスプレイなどに表示する。
【0113】
ホモトピーレベル処理ブロック110は、ソフトウエア開発支援装置100の各処理ブロックがオブジェクト集合に対して操作を行った際、その操作によって生じるオブジェクト集合の変化がホモトピー同値になるように保証する。ホモトピーレベル処理ブロック110は、手順記録部28に記録された接着空間生成に係る注目手順、対応テーブル保持部66に格納されたセルの次元の不整合の対応関係を示すテーブル、変換テーブル保持部76に格納されたセルの表現の変換規則を示すテーブルを利用し、各操作によってオブジェクト集合にもたらされた変化を逆にたどることにより、オブジェクト集合を変化前の状態に戻すことができる。
【0114】
このようにして、集合レベル処理ブロック120から始めて、位相空間レベル処理ブロック130、接着空間レベル処理ブロック140、セル空間レベル処理ブロック150、表現レベル処理ブロック160、およびビューレベル処理ブロック170へと、同値関係を継承しつつ、2つのオブジェクト集合の仕様を段階的に詳細化していくことで、2つのオブジェクト集合が表現レベルまで同値となって出力される。このようにインクリメンタリモジュラな抽象階層モデルにもとづくソフトウエア開発支援装置100は、同値関係を、集合レベルから位相空間レベル、接着空間レベル、セル空間レベル、表現レベル、およびビューレベルまで保証する一貫性のあるフィルタとして機能し、フィルタを通過したオブジェクト集合は同値関係が数学的に保証されたインスタンスとなって出力される。
【0115】
対応づけたい構成要素が複数あれば、それぞれの構成要素について目的同値関係を設定することによって、同様に接着写像が規定され、最終的に複数のオブジェクト集合間で対応する要素が接着された結果が出力される。一方のオブジェクト集合が注目する構成要素をn個もてば、そのn個のそれぞれについて、他方のオブジェクト集合のいずれかの構成要素との対応関係が特定されるため、インタフェイス数は線形であり、工数爆発の問題が解決する。
【0116】
本実施の形態によれば、同値関係を設定すれば、複数のオブジェクト集合の構成要素間で対応づけができ、対応していない構成要素はそのまま残しつつ、同値関係にある構成要素については常に同じ情報をもつことができ、不変量を切り口に分類や対応づけができるので、データ利用性が向上し、ソフトウエア開発の効率を各段に高めることができる。
【0117】
[16]具体例
以上の構成のソフトウエア開発支援装置100によるソフトウエア開発支援手順の具体例を説明する。ソフトウエア開発支援装置100が各種プログラムモジュールをもとにソフトウエアを開発する際、プログラムモジュール間のインタフェイスを確定し、各プログラムモジュールで利用されるデータの仕様を詳細化する。[16.1]でデータの設計手順を述べ、[16.2]でプログラムモジュールの設計手順を述べる。
【0118】
[16.1]データ設計
ソフトウエアにおいて利用される複数のオブジェクト集合の一例として、シューズショップXのオブジェクト集合300と、シューズメーカーYのオブジェクト集合200を考える。これらのオブジェクト集合は、集合レベル処理ブロック120によって設計され、オブジェクト集合記憶部190に格納されている。これらのオブジェクト集合はデータベースとして管理されているものであってもよい。位相空間レベル処理ブロック130は、シューズショップXのオブジェクト集合300を位相空間Xとして、シューズメーカーYのオブジェクト集合200を位相空間Yとして設計する。この時点で、2つの位相空間X、Yは互いに素である。
【0119】
接着空間レベル処理ブロック140は、オブジェクト集合記憶部190に格納されたシューズショップXのオブジェクト集合300を位相空間Xとして、シューズメーカーYのオブジェクト集合200を位相空間Yとして参照し、同値関係をもとに2つの位相空間X、Yから接着空間を生成する。図8に、接着空間レベル処理ブロック140により2つの位相空間が接着される様子を示す。
【0120】
いま、シューズメーカーYの製造する特定の運動靴YをシューズショップXが仕入れて、販売しているとする。このとき、ソフトウエアの開発者は、シューズショップXのオブジェクト集合、シューズメーカーYのオブジェクト集合との間でこの運動靴Yをプログラム上では同一のオブジェクトとして扱いたい。同値関係設定部44は、シューズメーカーYとシューズショップXの位相空間の間で、注目すべき対象要素である運動靴Yを同値関係にあるものとして設定する。
【0121】
対応要素抽出部20は、シューズメーカーYの運動靴Y(符号202)に対応するシューズショップXの運動靴f(Y)(符号302)を抽出する。接着写像取得部22は、この対応関係をもとに、接着写像f:Y→X|Y⊆Yを取得する。
【0122】
等化写像取得部24は、接着写像取得部22が取得した接着写像fによって、シューズショップXとシューズメーカーYの2つの位相空間の排他的論理和を接着空間
【数47】

に写像する等化写像gを取得する。すなわち、等化写像取得部24は、等化写像
【数48】

を取得する。ここで、
【数49】

であり、同図に示すように、運動靴f(Y)(符号402)において2つの位相空間X、Yが接着する。
【0123】
図9は、シューズメーカーYの位相空間における運動靴202のセル構造を説明する図である。運動靴202は、セルの属性として、靴のブランド名210、会社名212、種類214、サイズ216、色218、素材220、希望小売価格222、製造原価224、および原産国226を含む。
【0124】
図10は、シューズショップXの位相空間における運動靴302のセル構造を説明する図である。運動靴302は、セルの属性として、靴のブランド名310、メーカー名312、種類314、サイズ316、色318、素材320、売価322、および販売店324を含む。
【0125】
セル空間レベル処理ブロック150のセル接合部62は、図9に示すシューズメーカーYの位相空間における運動靴202と、図10に示すシューズショップXの位相空間における運動靴302をセルレベルで接合するため、共通する属性を互いに対応づける。靴のブランド名210、310、種類214、314、サイズ216、316、色218、318、素材220、320は属性名が一致するため、共通する属性として対応づけられる。
【0126】
シューズメーカーYの運動靴202の会社名212と、シューズショップXの運動靴302のメーカー名312は、属性名は異なるが同一の要素である。そこで、セル空間レベル処理ブロック150のセル次元調整部64は、シューズメーカーY側の属性名をシューズショップX側の属性名に対応づけ、接合セルにおける属性名を「メーカー名」に統一することで不整合を調整し、シューズメーカーY側の「会社名」をシューズショップX側の「メーカー名」に対応づける関係を記述したテーブルを対応テーブル保持部66に保持する。
【0127】
シューズメーカーYの運動靴202とシューズショップXの運動靴302をセルレベルで接合する際、一方の位相空間に属性が存在し、他方の位相空間にはそれに対応する属性が存在しないことがある。たとえば、シューズメーカーYの運動靴202には、原産国226という属性があるが、シューズショップXの運動靴302には、それに対応するものがない。逆に、シューズショップXの運動靴302には、販売店324という属性があるが、シューズメーカーYの運動靴202には、それに対応するものがない。このように、2つの対象要素間で属性の対応付けをする際、第1の位相空間に属性aが存在し、第2の位相空間にはそれに対応する属性が存在しない場合、第1の位相空間の属性aには対応づけられる属性がないとものして処理するか、もしくは第2の位相空間において空の属性bを追加して第1の位相空間の属性aと対応づける処理を行う。たとえば、セル次元調整部64は、シューズメーカーYの運動靴202の原産国226については対応づけられる属性がないとして処理し、一方、シューズショップXの運動靴302の販売店324については、空の属性をシューズメーカーYの運動靴202に追加し、シューズショップXの運動靴302の販売店324と対応づける処理を行い、属性の個数に関する不整合を調整する。
【0128】
属性の個数の調整の他の例として、一方の位相空間に「名前」という1つの属性があり、他方の位相空間には、「姓」と「名」という2つの属性がある場合、実質的には両者は同一の属性であるから、セル次元調整部64は、「名前」という1つの属性と、「姓」と「名」という2つの属性を対応づけることで、属性の個数の不整合を調整することができる。
【0129】
図11(a)〜(c)は表現レベルでの不整合の調整を説明する図である。シューズメーカーY側の会社名212は、図11(a)に示すように、M桁の文字列で表現されている。一方、シューズショップX側のメーカー名312は、図11(b)に示すように、L桁の文字列で表現されている。ここで、L<Mである。表現レベル処理ブロック70の表現形式調整部74は、桁数の大きいM桁に合わせて、図11(c)に示すように、接合セルの属性であるメーカー名412の表現形式を決めてもよい。
【0130】
対象要素の属性の表現形式において桁数の違いがあるときに、桁数の大きい方に合わせて表現することは、「受容表現レベル」の一例である。表現形式調整部74は、所定の受容表現レベルをフィルタとして用いることにより、対象要素の属性の表現形式の不整合を調整する。
【0131】
図12(a)〜(d)も表現レベルでの不整合の調整を説明する図である。シューズメーカーY側のサイズ216は、図12(a)に示すように、inchを単位とした実数値で表現されている。一方、シューズショップX側のサイズ316は、図12(b)に示すように、cmを単位とした実数値で表現されている。
【0132】
ソフトウエアの設計仕様として、cmの単位を採用する場合、表現レベル処理ブロック160の表現形式調整部74は、図12(c)に示すように、接合セルの属性であるサイズ416の表現形式はcmを単位とすることにし、シューズショップX側のサイズ316の属性値を用いる。このとき、表現形式調整部74は、図12(d)に示す変換式516を変換テーブル保持部76に格納しておき、属性値の互換性を保つ。このようにいずれかの単位系に合わせることも受容表現レベルの一例である。
【0133】
図13(a)〜(d)も表現レベルでの不整合の調整を説明する図である。シューズメーカーY側の色218は、図13(a)に示すように整数値で表現されている。一方、シューズショップX側の色318は、図13(b)に示すように文字列で表現されている。これは、シューズメーカーYでは靴の色を細かく識別するための番号体系を利用するのに対して、シューズショップXでは靴の色を顧客が理解しやすい「紺」「紫」などの名称で記述するからである。この違いは、シューズメーカーY、シューズショップXのそれぞれのシステムにおける設計者の設計意図や顧客のニーズにより生じたものである。
【0134】
ソフトウエアの設計仕様として、色の表現形式を文字列とする場合、表現レベル処理ブロック160の表現形式調整部74は、図13(c)に示すように、接合セルの属性である色418の表現形式を文字列として、シューズショップX側の色318の属性値を用いる。このとき、表現形式調整部74は、図13(d)に示すように、シューズメーカーY側の色を識別する整数値とシューズショップX側の色を識別する文字列との間の変換規則を示した変換テーブルを作成して、変換テーブル保持部76に格納し、属性値の互換性を保つ。このように文字列の表現形式に変換することも受容表現レベルの一例である。
【0135】
上記の例では、ソフトウエアの開発者がシューズショップXとシューズメーカーYの間で同値関係にある運動靴を指定したが、シューズショップXと複数のシューズメーカーYとの間で同値関係を指定してもよい。たとえば、「素材が革である靴」という同値関係をもとに、シューズショップXの位相空間と、複数のシューズメーカーY1,Y2,…,Ynのそれぞれの位相空間との間で対応する構成要素を抽出し、接着空間を生成し、オブジェクトのデータ設計を行ってもよい。
【0136】
[16.2]プログラムモジュールの設計
オブジェクト集合の一例として、プログラムを考え、本実施の形態に係るソフトウエア開発支援装置100により、複数のプログラムをもとにソフトウエアを開発する手順を説明する。
【0137】
図14(a)、(b)は2つのプログラムXとプログラムYが統合される様子を説明する図である。これらのプログラムは、いずれも画像処理を行うものであるが、プログラムの開発者が異なるなどの理由で、プログラム構成が異なっているとする。これらのプログラムは、いずれも画像の符号化および復号の機能をもっており、たとえば、電子商取引で売買される商品の画像の符号化および復号を行うことができる。
【0138】
集合レベル処理ブロック120は、複数のモジュールからなるプログラムX、Yを集合として設計し、位相空間レベル処理ブロック130は、プログラムX、Yを位相空間として設計する。
【0139】
接着空間レベル処理ブロック140の同値関係設定部44は、プログラムX、Yを構成するモジュールに対して、「符号化処理機能をもつ」および「復号処理機能をもつ」という2つの同値関係を設定する。対応要素抽出部20は、同値関係設定部44により設定された2つの同値関係をもとにプログラムX、Y間の対応するモジュールを特定し、接着写像取得部22は、各同値関係による対応関係を与える接着写像f、fを取得する。
【0140】
これにより、プログラムYの位相空間は、符号化処理機能をもつモジュールYと、圧縮処理機能をもつモジュールYと、それ以外の機能をもつモジュールの直和
【数50】

に分割され、一方、プログラムXの位相空間は、符号化処理機能をもつモジュールでYに対応するf(Y)と、圧縮処理機能をもつモジュールでYに対応するf(Y)と、それ以外の機能をもつモジュールの直和
【数51】

に分割される。
【0141】
等化写像取得部24は、図14(a)に示すプログラムX、Yの2つの位相空間の直和を図14(b)に示す接着空間
【数52】

に写像する等化写像gを取得する。
【0142】
図15(a)、(b)は、接着写像により対応づけられた2つのモジュールA、Bの入出力インタフェイスを説明する図である。モジュールAの入力に使われている変数は整数型のa、bの2つであり、出力に使われている変数は実数型のcである。一方、モジュールBの入力に使われている変数は実数型のs、tの2つであり、出力に使われている変数は実数型のuである。接着空間レベル処理ブロック140において対応づけられた2つのモジュールA、B間で入力変数、出力変数の名前に違いがあるが、セル空間レベル処理ブロック150のセル次元調整部64は、2つのモジュールA、Bの入力変数、出力変数の名前を対応が取れるように調整する。また、2つのモジュールA、B間で入力変数、出力変数の個数に違いがあれば、セル次元調整部64は、2つのモジュールA、Bの入力変数、出力変数の個数を対応が取れるように調整する。
【0143】
表現レベル処理ブロック160の表現形式調整部74は、2つのモジュールA、Bの入力変数、出力変数のデータ型に違いがあれば、データ型を調整する。モジュールAの入力変数は整数型であり、モジュールBの入力変数は実数型であるから、たとえば、モジュールAの入力変数を実数型に変換する。また、変数が文字型の場合は、表現形式調整部74は、文字列の桁数の調整を行う。
【0144】
図16〜図19において、ソフトウエア開発支援装置100によって、同値関係をもとにモジュールもしくはデータが対応づけられてソフトウエアが開発される手順を説明する。
【0145】
図16(a)、(b)は、プログラムモジュールが新しいバージョンに更新される様子を説明する図である。図16(a)のように、新バージョンのモジュールAnewと旧バージョンのモジュールAoldがあるとする。それぞれ別の開発者が設計したものであってもよい。同値関係によって新バージョンのモジュールAnewが旧バージョンのモジュールAoldに対応づけられる。また、それに伴い、新バージョンのモジュールAnewの入力変数s、tが、旧バージョンのモジュールAoldの入力変数a、bにそれぞれ対応づけられ、新バージョンのモジュールAnewの出力変数uが旧バージョンのモジュールAoldの出力変数cに対応づけられる。
【0146】
このように同値関係で新旧バージョンのモジュールを対応づけることにより、ソフトウエア開発支援装置100は、図16(b)のように、旧バージョンのモジュールAoldを新バージョンのモジュールAnewに置き換えて、更新することができる。ソフトウエア開発支援装置100は、モジュールの置き換えをホモトピー同値になるように行うため、必要に応じて新バージョンのモジュールAnewを旧バージョンのモジュールAoldに戻すこともでき、ソフトウエアのデバッグを効率良く行うことができる。
【0147】
図17(a)、(b)は、2つのプログラムモジュールが合成される様子を説明する図である。図17(a)のように、モジュールAは2つのサブモジュールA、Aをもち、モジュールBは2つのサブモジュールB、Bをもつ。同値関係によってモジュールBのサブモジュールBがモジュールAのサブモジュールAに対応づけられる。また、それに伴い、サブモジュールBの入力変数sとサブモジュールAの入力変数aが対応づけられる。
【0148】
図17(b)のように、同値関係により定まる接着写像によって、モジュールBのサブモジュールBがモジュールAのサブモジュールAと同一視されることにより、2つのモジュールA、Bが合成され、1つのプログラムが生成される。このとき、接着写像で対応づけられたサブモジュールBとサブモジュールAの入出力変数のデータ型や桁数などが調整される。ソフトウエア開発支援装置100は、モジュールの合成をホモトピー同値になるように行うため、必要に応じて合成されたプログラムから元のモジュールA、Bを分離して取り出すこともできる。
【0149】
このように、ソフトウエア開発支援装置100は、同値関係をもとにして複数のモジュールを合成したり、合成されたプログラムからモジュールを取り出したりすることができ、ソフトウエアの部品化を進め、再利用性を高めることができる。
【0150】
図18(a)、(b)は、2つのプログラムモジュール間でデータが共有される様子を説明する図である。図18(a)のように、2つの変数a、bを入力して変数cを出力するモジュールAと、2つの変数s、tを入力して変数uを出力するモジュールBとがあり、モジュールBの入力変数sとモジュールAの入力変数aが同値関係によって対応づけられ、それ以外の変数の間には対応関係がないとする。
【0151】
図18(b)のように、同値関係により定まる接着写像によって、モジュールBの入力変数sがモジュールAの入力変数aと同一視されることにより、2つのモジュールA、B間で入力変数の1つが共有される。このように、ソフトウエア開発支援装置100は、プログラムモジュール間で同値類として対応づけられるデータを共有し、データの利用性を高めることができる。
【0152】
図19(a)、(b)は、2つのプログラムモジュールが結合される様子を説明する図である。図19(a)のように、2つの変数a、bを入力して変数cを出力するモジュールAと、2つの変数s、tを入力して変数uを出力するモジュールBとがあり、モジュールBの出力変数uとモジュールAの入力変数aが同値関係によって対応づけられ、それ以外の変数の間には対応関係がないとする。
【0153】
図19(b)のように、同値関係により定まる接着写像によって、モジュールBの出力変数sがモジュールAの入力変数aと同一視されることにより、モジュールBとモジュールAがこの順で結合され、1つのプログラムが生成される。このとき、モジュールBの出力変数とモジュールAの入力変数の間でデータ型や桁数などが調整される。このプログラムの結合は、ホモトピー同値になるように行われるため、必要に応じて結合を解除して、モジュールAとモジュールBを分離することもできる。このように、ソフトウエア開発支援装置100は、同値関係をもとにして複数のプログラムモジュールを結合したり、分離したりすることができ、プログラムモジュールの利用性を高めることができる。
【0154】
このように、ソフトウエア開発支援装置100によれば、同値関係にもとづいてソフトウエア部品の合成、置換、連結などの開発工程を線形操作で行うことができるため、ソフトウエア部品の個数が増えても、開発工数爆発が起きることなく、ソフトウエアを効率良く開発することができる。
【0155】
上記の具体例では、プログラムモジュールの仕様を特徴づける属性として、入出力インタフェイスを例に挙げ、対応するプログラムモジュール間で入出力インタフェイスの次元や表現形式の不整合を調整することを説明したが、これは属性の一例に過ぎない。プログラムモジュールの仕様を特徴づける他の属性の例として、そのプログラムモジュールが参照する変数を考えてもよい。その場合、対応するプログラムモジュール間で参照変数の次元や表現形式の不整合が調整される。また、プログラムモジュールが利用する関数を属性として考えてもよい。その場合、対応するプログラムモジュール間で関数の次元、すなわち関数名や関数の個数などの不整合が調整される。さらに、その関数の引数や戻り値の次元や表現形式の不整合が調整されてもよい。
【0156】
ソフトウエア開発支援装置100のビューレベル処理ブロック170は、ソフトウエア開発者毎に異なるビューを設計してもよい。たとえば、上級のソフトウエア開発者にはプログラムモジュールの内部変数の設計変更ができるように、プログラムモジュール内部のデータ操作が可能なビューを設定する。一方、初級のソフトウエア開発者にはプログラムモジュールの外部インタフェイスの設計変更だけを許すように、プログラムモジュールの内部のデータ操作が不可能なビューを設定する。このように、開発者のプログラミングの経験や技術などのレベルに応じてビューを異ならせてもよい。また、ソフトウエアを複数の開発者が共同開発する場合、各開発者が担当するプログラムエリアに限って設計変更ができるように、開発者毎にビューを異ならせてもよい。後述のようにソフトウエア開発支援装置100を保守工程で利用する場合は、ビューレベル処理ブロック170は、ソフトウエアの保守者毎に異なるビューを設計してもよい。
【0157】
[17]ソフトウエアのライフサイクル管理
ソフトウエア開発のアクティビティには、要求分析、システム設計、プログラム設計、プログラム実装、単体・結合テスト、システムテスト、受け入れテスト、および運用・保守があり、これらの一連のアクティビティがライフサイクルとして管理される。要求分析、システム設計、プログラム設計、およびプログラム実装は、ソフトウエアの開発工程である。開発工程において生成されたソフトウエアのプログラムモジュールについて単体・結合テストが行われ、次にシステム全体の機能面についてシステムテストが行われ、最終的にシステム出荷時の受け入れテストが行われる。これが試験工程である。受け入れテストに合格したシステムは運用され、稼働中にシステムが保守される。これが保守工程である。
【0158】
図20に示すソフトウエアライフサイクル管理装置600は、開発工程から試験工程を経て、保守工程に至るまでのソフトウエアのライフサイクルを管理する。開発機能ブロック610は、既に述べたソフトウエア開発支援装置100の各機能を有し、抽象階層間でソフトウエア部品集合の同値関係を不変量として継承しながら、ソフトウエア部品集合が満たすべき仕様を抽象階層毎にインクリメンタルに詳細化することにより、与えられた要求仕様に合致するソフトウエアをソフトウエア部品集合から自動生成する。開発機能ブロック610により、ソフトウエアの要求分析からシステム設計、プログラム設計、プログラム実装までが実行され、開発されたソフトウエアはソフトウエア記憶部640に記憶される。ソフトウエア記憶部640は、要求仕様、開発、試験、および保守工程におけるすべてのプログラムを保持する。
【0159】
試験機能ブロック620は、開発機能ブロック610により生成されたソフトウエアが各抽象階層において詳細化された仕様に合致するか否かをテストし、問題が発見された場合に、いずれかの抽象階層において要求条件を修正し、開発機能ブロック610は、要求条件が修正された抽象階層から始めて、ソフトウエア部品集合が満たすべき仕様を抽象階層毎にインクリメンタルに詳細化する。
【0160】
開発されたソフトウエアの試験は、要求分析、システム設計、プログラム設計、およびプログラム実装のいずれの段階でも行う必要がある。たとえば、試験機能ブロック620が、要求仕様に不具合を発見して修正をしたときは、開発機能ブロック610は、抽象階層モデルの位相空間レベルや接着空間レベルなどの上位階層にもどって、その階層から設計の詳細化をやり直して不具合を解消する。また、試験機能ブロック620が、プログラム実装において、関数の引数の数や変数のデータ型などに不具合を発見した場合は、開発機能ブロック610は、抽象階層モデルのセル空間レベルや表現レベルなどの下位階層から設計の詳細化をやり直して不具合を解消する。いずれの階層から作業をやり直すときでも、インクリメンタリモジュラな抽象階層にもとづくソフトウエア開発支援装置100によれば、新しい要求条件のもと、線形操作でソフトウエアを再構成することができる。
【0161】
保守機能ブロック630は、運用中のソフトウエアに修正もしくは機能拡張の必要があった場合に、その修正もしくは機能拡張を反映すべき抽象階層において要求条件を変更し、開発機能ブロック610は、要求条件が変更された抽象階層から始めて、ソフトウエア部品集合が満たすべき仕様を抽象階層毎に再度インクリメンタルに詳細化する。
【0162】
ソフトウエアの保守には、システムの障害への対処もしくは予防のために修正を行うものとして、修正保守(corrective maintenance)と予防保守(preventive maintenance)があり、システムの機能拡張を行うものとして、改善保守(perfective maintenance)と適応保守(adaptive maintenance)がある。
【0163】
修正保守は、現行のシステムに障害が起きた場合に、障害の原因を発見して、ソフトウエアの必要な修正を行うものである。修正保守は、ソフトウエアの残存不良を修正する作業であり、一般には仕様の変更はしない。抽象階層モデルを利用した修正保守は、たとえば、セル空間レベルや表現レベルなど比較的下位の階層で要求条件を調整して行われる。
【0164】
予防保守は、現実には障害が起きてないが、潜在的な障害の可能性を発見し、システムの故障を未然に防ぐために、システムのある側面を修正、変更することであり、修正保守と同様に抽象階層モデルを利用して行うことができる。
【0165】
改善保守は、障害を回避するためにソフトウエアを変更するのではなく、システムのある機能や性能を向上させるためにソフトウエアの変更を行うことである。改善保守は、ソフトウエアの仕様の変更を伴うものである。抽象階層モデルを利用した改善保守は、たとえば位相空間レベルや接着空間レベルなど比較的上位の階層で要求条件を調整した上で、下位の階層に向けて抽象階層を辿りながら、ソフトウエアを再設計することによって行われる。
【0166】
適応保守は、ハードウエアやソフトウエアの技術進歩などの変化に応じてソフトウエアの変更を行うものである。適応保守は、障害に対処するものではなく、進化していくシステムに適応させるために変更を行うものである。適応保守も他の保守と同様に抽象階層モデルを利用して行うことができる。
【0167】
ソフトウエアの保守工程は、新たな要求を分析し、システムとプログラムの設計を評価し、コードをレビューし、必要に応じて修正を加える点で、ソフトウエアの開発工程およびソフトウエアの試験工程と共通するアクティビティを含んでいる。開発工程および試験工程が抽象階層モデルを利用して行われるように、保守工程も抽象階層モデルを有効に利用して、効率良く行うことができ、保守の負担を軽減することができる。
【0168】
一般に、欠陥修正は別の欠陥修正を引き起こす波及効果がある。保守による手直しがシステムの別の部分に影響を与えて、新たな障害を生み出すことがあるからである。一般的にソフトウエア開発は開発者依存であるため、開発者の作成した仕様書を丹念にレビューしても保守による影響を正確に予測することは困難である。しかしながら、本実施の形態のソフトウエアライフサイクル管理装置600によれば、抽象階層モデルを利用してソフトウエアの開発が行われ、開発者依存の設計要素が排除されるため、保守においても同じ抽象階層モデルを参照することで、何と何が同値関係にあるかを把握した上で、ある箇所の修正が他の箇所にどのような影響を与えるかを的確に予測して正しい修正を効率良く行うことができる。
【0169】
修正保守において、ソフトウエアのある部分について同値関係を新たに定義する必要が生じた場合や、最初から定義しておくべきであった同値関係が保守段階で発見された場合でも、抽象階層モデルを参照し、接着空間レベルで同値関係を定義し直し、その同値関係を下位のセル空間レベルや表現レベルにまで落として実装することにより、整合性を保証することができる。また、拡張保守や適応保守において、ソフトウエアに新たな機能を追加する場合や、新たなパラメータを設定する場合でも、抽象階層モデルにおいて適宜新たな同値関係を設定してインクリメンタルにソフトウエアの再設計を行うことができる。また、予防保守において、対応する変数の間でデータ型やデータ長の相違があり、不都合が生じることが予見される場合でも、抽象階層モデルを利用して、これらの変数に同値関係を定義してその部分について不整合を調整することができる。
【0170】
このように、本実施の形態のソフトウエアライフサイクル管理装置600によれば、抽象階層モデルを利用することにより、保守段階で要求の変化が生じても、要求仕様にもとづいて同値関係を定め、設計および実装レベルまでその同値関係を不変量として継承して仕様の詳細化と具体化を図ることができ、変化に対して柔軟かつ効率良く対応することができる。抽象階層モデルを利用することにより、保守工程におけるソフトウエアに対する操作も、開発工程における操作と同じように、線形インターオペラビリティが保証されるため、線形操作で新たな機能の追加や不要な機能の削除を行うことができる。
【0171】
ソフトウエアのライフサイクルモデルとして、ウォーターフォールモデル、ラピッドプロトタイピングモデル、スパイラルモデルなどいろいろなモデルが提案されているが、本実施の形態のソフトウエアライフサイクル管理装置600は、いずれかのライフサイクルモデルに依存するものでもなく、また、いずれかのライフサイクルモデルを前提として適用されるものでもない。もっとも、本実施の形態のソフトウエアライフサイクル管理装置600をいずれかのライフサイクルモデルに適合させる形で用いることを妨げない。本実施の形態のソフトウエアライフサイクル管理装置600の主要な利点は、インクリメンタリモジュラな抽象階層モデルを用いることにより、抽象階層間でソフトウエア部品集合間の同値関係を不変量として継承して整合性を保証するとともに、ソフトウエア部品集合の線形統合と線形操作を保証し、ソフトウエアの開発から試験、保守に至るまでのライフサイクルの管理に一貫性をもたせたことにある。
【0172】
以上、実施の形態を説明した。実施の形態は例示であり、さまざまな変形例が可能であり、そうした変形例も本発明に含まれることは当業者に理解されるところである。
【図面の簡単な説明】
【0173】
【図1】2つの互いに素である位相空間から接着空間が生成される様子を説明する図である。
【図2】顧客と取引会社の位相空間が接着される様子を説明する図である。
【図3】座席と支持部の位相空間が接着される様子を説明する図である。
【図4】実施の形態に係るソフトウエア開発支援装置の構成図である。
【図5】図4の接着空間レベル処理ブロックの構成図である。
【図6】図4のセル空間レベル処理ブロックの構成図である。
【図7】図4の表現レベル処理ブロックの構成図である。
【図8】図5の接着空間レベル処理ブロックにより、2つの位相空間が接着されて接着空間が生成される様子を説明する図である。
【図9】オブジェクトのセル構造を説明する図である。
【図10】オブジェクトのセル構造を説明する図である。
【図11】図7の表現レベル処理ブロックにより、表現レベルでの不整合が調整される様子を説明する図である。
【図12】図7の表現レベル処理ブロックにより、表現レベルでの不整合が調整される様子を説明する図である。
【図13】図7の表現レベル処理ブロックにより、表現レベルでの不整合が調整される様子を説明する図である。
【図14】2つのプログラムが統合される様子を説明する図である。
【図15】接着写像により対応づけられた2つのモジュールの入出力インタフェイスを説明する図である。
【図16】プログラムモジュールが新しいバージョンに更新される様子を説明する図である。
【図17】2つのプログラムモジュールが合成される様子を説明する図である。
【図18】2つのプログラムモジュール間でデータが共有される様子を説明する図である。
【図19】2つのプログラムモジュールが結合される様子を説明する図である。
【図20】実施の形態に係るソフトウエアライフサイクル管理装置の構成図である。
【符号の説明】
【0174】
20 対応要素抽出部、 22 接着写像取得部、 24 等化写像取得部、 26 手順取得部、 28 手順記録部、 44 同値関係設定部、 52 同値関係保持部、 62 セル接合部、 64 セル次元調整部、 66 対応テーブル保持部、 72 表現生成部、 74 表現形式調整部、 76 変換テーブル保持部、 100 ソフトウエア開発支援装置、 110 ホモトピーレベル処理ブロック、 120 集合レベル処理ブロック、 130 位相空間レベル処理ブロック、 140 接着空間レベル処理ブロック、 150 セル空間レベル処理ブロック、 160 表現レベル処理ブロック、 170 ビューレベル処理ブロック、 190 オブジェクト集合記憶部、 600 ソフトウエアライフサイクル管理装置、 610 開発機能ブロック、 620 試験機能ブロック、 630 保守機能ブロック、 640 ソフトウエア記憶部。

【特許請求の範囲】
【請求項1】
ソフトウエア部品集合間の線形インターオペラビリティを保証するインクリメンタリモジュラな抽象階層モデルを利用して、ソフトウエアの開発工程から試験工程を経て、保守工程に至るまでのライフサイクルを一貫して管理することを特徴とするソフトウエアライフサイクル管理方法。
【請求項2】
前記開発工程は、抽象階層間で前記ソフトウエア部品集合の同値関係を不変量として継承しながら、前記ソフトウエア部品集合が満たすべき仕様を前記抽象階層毎にインクリメンタルに詳細化することにより、与えられた要求仕様に合致するソフトウエアを前記ソフトウエア部品集合から自動生成することを特徴とする請求項1に記載のソフトウエアライフサイクル管理方法。
【請求項3】
前記試験工程は、前記開発工程により生成された前記ソフトウエアが各抽象階層において詳細化された仕様に合致するか否かをテストし、発見された問題に応じていずれかの抽象階層において要求条件を修正した上で、その抽象階層から前記開発工程を繰り返すことにより、前記問題を除去することを特徴とする請求項2に記載のソフトウエアライフサイクル管理方法。
【請求項4】
前記保守工程は、運用中の前記ソフトウエアに修正もしくは機能拡張の必要があった場合に、その修正もしくは機能拡張を反映すべき抽象階層において要求条件を変更した上で、その抽象階層から前記開発工程を繰り返すことにより、前記ソフトウエアの保守を行うことを特徴とする請求項2または3に記載のソフトウエアライフサイクル管理方法。
【請求項5】
ソフトウエア部品集合間の線形インターオペラビリティを保証するインクリメンタリモジュラな抽象階層モデルを利用した、ソフトウエアの開発機能ブロック、試験機能ブロック、および保守機能ブロックを備え、ソフトウエアのライフサイクルを前記抽象階層モデルにもとづいて一貫して管理することを特徴とするソフトウエアライフサイクル管理装置。
【請求項6】
前記開発機能ブロックは、抽象階層間で前記ソフトウエア部品集合の同値関係を不変量として継承しながら、前記ソフトウエア部品集合が満たすべき仕様を前記抽象階層毎にインクリメンタルに詳細化することにより、与えられた要求仕様に合致するソフトウエアを前記ソフトウエア部品集合から自動生成することを特徴とする請求項5に記載のソフトウエアライフサイクル管理装置。
【請求項7】
前記試験機能ブロックは、前記開発機能ブロックにより生成された前記ソフトウエアが各抽象階層において詳細化された仕様に合致するか否かをテストし、問題が発見された場合に、いずれかの抽象階層において要求条件を修正し、前記開発機能ブロックは、前記要求条件が修正された抽象階層から前記詳細化を繰り返すことを特徴とする請求項6に記載のソフトウエアライフサイクル管理装置。
【請求項8】
前記保守機能ブロックは、運用中の前記ソフトウエアに修正もしくは機能拡張の必要があった場合に、その修正もしくは機能拡張を反映すべき抽象階層において要求条件を変更し、前記開発機能ブロックは、前記要求条件が変更された抽象階層から前記詳細化を再度行うことを特徴とする請求項6または7に記載のソフトウエアライフサイクル管理装置。
【請求項9】
前記抽象階層モデルは、各階層においてソフトウエア部品集合に対する操作が可能にモジュラ化されて構成されており、
前記ソフトウエア部品集合に集合演算を施して、所望の複数のソフトウエア部品集合を設計する集合設計部と、
前記ソフトウエア部品集合の部分集合を要素とする集合に位相を規定することにより、前記ソフトウエア部品集合を位相空間として設計する位相空間設計部と、
それぞれが位相空間として設計された前記複数のソフトウエア部品集合の上に同値関係を規定し、前記同値関係で対応づけられた部分空間を接着した接着空間を設計する接着空間設計部と、
前記接着空間において前記複数のソフトウエア部品集合に属するソフトウエア部品の仕様に係る属性をセルで表現し、前記セルの次元を設計するセル空間設計部と、
前記セルの表現形式を設計する表現設計部とを含むことを特徴とする請求項5から8のいずれかに記載のソフトウエアライフサイクル管理装置。
【請求項10】
前記モジュラ化された抽象階層モデルは、前記複数のソフトウエア部品集合に関して、前記ソフトウエアの開発者または保守者に対するビューを設計し、前記開発者または保守者毎に前記複数のソフトウエア部品集合の操作可能範囲を異ならせるビュー設計部をさらに含むことを特徴とする請求項9に記載のソフトウエアライフサイクル管理装置。
【請求項11】
前記モジュラ化された抽象階層モデルは、前記ソフトウエアの開発、試験、および保守のいずれかの工程において各設計部による前記ソフトウエア部品集合に対する操作によって生じた前記ソフトウエア部品集合の変化がホモトピー同値になるように設計し、前記ソフトウエア部品集合を変化前の状態に戻せるように、その操作手順を記録するホモトピー設計部をさらに含むことを特徴とする請求項9または10に記載のソフトウエアライフサイクル管理装置。
【請求項12】
前記接着空間設計部は、
互いに素である第1の位相空間Xと第2の位相空間Yに対して、前記第2の位相空間のYの部分空間Yから前記第1の位相空間Xへの連続写像を、前記同値関係を表す接着写像fとして取得する接着写像取得部と、
前記第2の位相空間Yの前記部分空間Yにおける各点yを、前記接着写像fによる前記第1の位相空間Xにおける像f(y)と同一視することによって、前記第2の位相空間Yを前記第1の位相空間に接着し、前記接着空間を同値類の排他的論理和として取得する等化写像取得部とを含むことを特徴とする請求項9に記載のソフトウエアライフサイクル管理装置。
【請求項13】
前記セル空間設計部は、
前記接着写像fによって同一視された前記第1の位相空間Xのソフトウエア部品と前記第2の位相空間Yのソフトウエア部品をセル空間において対応づけて接合するセル接合部と、
前記セル空間において対応づけられた前記ソフトウエア部品の仕様に係る属性の次元に関する不整合を調整するセル次元調整部を含むことを特徴とする請求項12に記載のソフトウエアライフサイクル管理装置。
【請求項14】
前記表現設計部は、前記セル空間において対応づけられた前記ソフトウエア部品の仕様に係る属性の表現形式に関する不整合を受容表現にしたがって調整する表現形式調整部を含むことを特徴とする請求項13に記載のソフトウエアライフサイクル管理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate