JP2006526209A - コンポーネント基盤環境下で拡張されたメタデータを利用したソフトウェア開発方法及びその開発システム - Google Patents

コンポーネント基盤環境下で拡張されたメタデータを利用したソフトウェア開発方法及びその開発システム Download PDF

Info

Publication number
JP2006526209A
JP2006526209A JP2006507841A JP2006507841A JP2006526209A JP 2006526209 A JP2006526209 A JP 2006526209A JP 2006507841 A JP2006507841 A JP 2006507841A JP 2006507841 A JP2006507841 A JP 2006507841A JP 2006526209 A JP2006526209 A JP 2006526209A
Authority
JP
Japan
Prior art keywords
component
components
client
glue
metadata
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006507841A
Other languages
English (en)
Inventor
アン モ ジェオン,
Original Assignee
アン モ ジェオン,
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from KR1020030029704A external-priority patent/KR20030044959A/ko
Application filed by アン モ ジェオン, filed Critical アン モ ジェオン,
Publication of JP2006526209A publication Critical patent/JP2006526209A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Abstract

本発明は、コンポーネント基盤のソフトウェアの開発技術に関し、特定コンポーネント開発プラットフォームが提供するコンポーネントを階層的に組み立てて、ソフトウェアを開発できるアクティブバインディング技術に関する。本発明は、コンポーネントの依存契約定義を含むようにメタデータを拡張して、互いに異なる開発者等により独立的に開発されたコンポーネントを多階層構造及び/又は分散構造形態で組み立てるできる技術を提供する。また、本発明は、互いに独立的な形式のメタデータを備えているコンポーネントをサーバとクライアントとして組み立て結合するグールーコンポーネントを自動生成して具現することで、大規模分散システムを順次図形態で編集可能にし、コンポーネント組み立てを時系列のメソッド呼び出し単位で細かく視角化することにより、コンポーネント組立作業、ソフトウェアのメンテナンス及び変更を容易にする。

Description

本発明は、コンポーネント基盤ソフトウェア開発(CBD、Component-Based Software Development)技術に関し、さらに詳細には、複数の開発者により独立的に開発され、市場でバイナリコード形態で流通されるコンポーネントを組み立ててソフトウェアを開発する方法、ソフトウェアコンポーネントの新しいメタデータフォーマット、これを具現化するための開発環境システムに関する。
さらに詳細には、本発明は、従来のコンポーネントが提供するサービス被呼び出し規格に関するサーバ側(Server-Side)のメタデータ(Metadata)のみでなく、下位コンポーネントに対するサービス呼び出し規格に関するクライアント側(Client-Side)メタデータを含むようにコンポーネントを具現化する方法を提供する。
また、本発明は、コンポーネント組み立てにおいて、独立的に開発されたサーバとクライアントコンポーネントとが持たざるをえない相互異質的な呼び出し/被呼び出しシグネチャー(Signature)を整合するために、グルーコンポーネントテンプレートコード(Glue Component TemplateCode)を自動生成する方法及びその具現手段を提供し、このようにして自動生成されたグルーコンポーネントを介してサーバコンポーネントとクライアントコンポーネントとの間にメッセージを伝達するようにすることにより、柔軟なメッセージ流れ制御(MessageFlow Control)を可能にするコンポーネント組み立て方法、手段及び具現システムに関する。
最近になって、組み込みシステム(Embedded System)及びユビキタスコンピューティング(Ubiquitous Computing)時代の渡来により、多様なソフトウェアの需要が急増し、また既に開発されたソフトウェアに対する変更要求が頻繁になるにつれて、ユーザの要求事項を容易に反映し迅速にソフトウェア開発が可能なソフトウェア生産技術が要求されている。
ところが、ソフトウェア開発に多く用いられていた構造的技法、情報工学基盤の開発方法、またはオブジェクト指向(Object-Oriented)ソフトウェア生産技術などのような、従来のソフトウェア生産技術がソフトウェア開発の生産性向上において限界を見せることによって、従来の方式とは異なり、各機能別に部品の役割を果たすコンポーネントをまず開発し、これらを組み立ててソフトウェアを開発する方法であるコンポーネント基盤のソフトウェア開発(CBD)技術が最近登場して、速く拡散されている。
すなわち、現代経営が要求する情報システムは、その複雑度と規模がますます大きくなっており、競争の深化によりシステムの迅速な構築(Time-To-Market)と、変更及び拡張の容易性(Flexibility)、構築費用の低減などの必要性がさらに高くなった。これに対する最適な代案として登場したコンポーネント基盤ソフトウェア開発方法論は、分割征服の原理とオブジェクト指向開発の利点とを継承して、システムを構成する単位業務の機能と関連データとを括って小さな片に分割するものの、これをコンポーネントの標準規格を満足するように部品化して再使用を可能にし、ソフトウェア開発を組み立ての概念に発展させた。
大規模企業用ソフトウェアは、分散システムとして運営され、階層的デザイン(Layered Design)の概念で開発されるが、通常的に、大規模企業用ソフトウェアは、大部分3階層(3-Tier)あるいは多階層(N-Tier)構造で開発される。一般に、階層的設計では、上位層にプレゼンテーション階層、中間層にビジネスロジック階層、終端にデータサービス階層を配置する。
ところが、終端のコンポーネントを除外した大部分のコンポーネントは、下位階層のコンポーネントと結合されており、基本的に下位階層コンポーネントのサービスに基づいて、自分のサービスを上位階層のコンポーネントに提供する。この時、下位コンポーネントに対するサービス呼び出しは、静的にコーディング(Static Coding)されたままコンパイルされて、ブラックボックス(Black Box-Binary Code)形態で配布される。
ここで、静的コーディング(Static Coding)とは、アーリーバインディング(Early Binding)とも称するが、サーバコンポーネントが規定しているインタフェース識別子とメソッド規格定義(普通、「シグネチャー」と呼ぶ)に応じてクライアントコンポーネントを開発することを言う。ところが、上述した静的コーディング方式のコンポーネント基盤ソフトウェア開発技術は、以下のような理由でその技術的限界がある。
既に、開発されて発売されているバイナリ形態(ソースコードが隠されてコンパイルされたブラックボックス形態)のコンポーネントは、互いに組み立てて、すなわちこれらを再使用して、設計者が目指す機能を行うソフトウェアを組み立て開発するためには、上位層のコンポーネント(サービスを呼び出すコンポーネント、すなわち「クライアント」となる)と下位層コンポーネント(サービスを提供するコンポーネント、「サーバ」となる)との間にコンポーネント及びインタフェース(あるいはクラス)識別子(ID:Identifier)とメソッドシグネチャーとが互いに整合されなければならない。ここで、シグネチャーとは、メソッド(Method)の名称、返還値、媒介変数タイプ及び順序などを含む。
ハードウェアとは異なり、ソフトウェアは必要とする部品(すなわち、コンポーネントの数)が多くて多様なので(ほぼ無限)、予めその規格を定めることが不可能であり、互いに異なる開発者により独立的に開発されたコンポーネント間の識別子とメソッドシグネチャーとの整合問題を解決するためには、コンポーネントソースコードを修正するか、手動でグルーコードを開発しなければならないという負担が生じる。
さらに、現在のコンポーネント技術は、配布時に提供されるメタデータに下位コンポーネントが提供するサービス呼び出しに関するクライアント側の情報を含んでいないため、再使用しようとするコンポーネントが他のコンポーネントに依存する場合、そのコンポーネントを開発する当時に作成されたシステムの詳細な設計情報を求めて参照しなければならない。
さらに、従来の技術に係るコンポーネント基盤開発技術は、コンポーネント間のメッセージ流れが高く結合され、静的にコード化されているため、ビジネスプロセスのうち、1つのコンポーネントを削除するか、追加する場合、プロセス内の他のコンポーネントに多くの影響を及ぼす。また、組み立てによる他のソフトウェア開発におけるメッセージ流れは、極めて新しいものであるから、このような静的な結合は、コンポーネントの再使用性を顕著に低下させる。
さらに、現在ソフトウェア開発者等に提供されるコンポーネントプラットフォーム(Component Platform)技術は、CORBA、COM+、EJB及びドットネット(.NET)などがあり、これらのプラットフォーム基盤のコンポーネントは、使用契約(UsageContract)のインタフェースメタデータであって、自分が提供するサービス(すなわち、複数のメソッド)に関する定義(Signature)だけを提供し、下位コンポーネントのメソッド呼び出しに対する情報を全く提供しないので、特定のバイナリ形態のコンポーネントが上位コンポーネントの呼び出しに対する演算処理の途中で、他のプロジェクトで独立的に開発された下位コンポーネントにサービスを要請するように組み立てることは基本的に不可能である。
すなわち、独立的に開発された複数のバイナリコンポーネントは、多階層依存関係(Multi-Layered Dependency)構造形態で組み立てることがコンポーネント基盤開発方法論が目指す目標であるにも拘わらず、従来の技術は、これを基本的に不可能にしている。
このような理由により、今までのソフトウェア開発者等は、簡単かつ独立的なサービスを提供するGUI(Graphic User Interface)用のコンポーネントだけを主に再使用しており、中間階層であるビジネス論理領域のコンポーネントの再使用率は、極めて低いのが実情である。
すなわち、他のコンポーネントサービスに依存しないActiveX Control、JavaBeansなどの簡単なGUI用コンポーネントが主に再使用されており、コンポーネント基盤ソフトウェア開発方法により設計され具現されたビジネス階層のコンポーネントは、ほとんど再使用されていない。
上述した従来の技術に係るコンポーネント基盤のソフトウェア開発方法の技術的限界点を解決するために、いくつかの改善案が提案されたことがある。すなわち、従来の技術が有する問題を解決するために、全てのコンポーネント間のメッセージ流れを中央で管理する方案が提示された。その代表例には、ワークフロー(Workflow)を使用するコンポーネント組み立て方法がある。ワークフロー方式は、全てのコンポーネントを他のコンポーネントに依存しない独立的なコンポーネントでデザインし、ワークフローを利用してコンポーネント間のメッセージ流れを中央で管理する。
しかし、ワークフロー方式でも相変らず任意のコンポーネントが他のコンポーネントを直接呼び出すことができないため、コンポーネントのサービス(メソッド)は、単位業務処理に必要な全ての情報を媒介変数として受け取って、自主的に結果を出すようにデザインされなければならない。
これは、ソフトウェア工学が追求してきた分割征服及び構造的方法ではないので、設計方法から非常に不自然であり、一般性と再使用性とが低下する巨大なコンポーネントの開発という結果を招く。
また、ワークフロー方式では、コンポーネント間の全てのメッセージ流れがワークフローを経て伝達されるため、コンポーネント間直接呼び出しに比べてネットワークとシステムとに過重な負担(Overhead)を与え、ワークフローエンジンに異常が生じる場合、全体システムの動作に影響を及ぼす。
さらに、米国アーバイン所在のカリフォルニア大学(University of California at Irvine)では、メッセージ基盤コンポーネント組み立て方法であるC2スタイルを提案したことがあるが、C2スタイルでは、組み立てのためのラッパー(Wrapper)コードに媒介変数仲裁論理(MediationLogic)と共に接続コンポーネントの稼動順序調節論理(Flow Control Logic)がハードコーディングされなければならないので、組み立て過程が複雑であり、柔軟な変更が困難であるという短所がある。
すなわち、C2スタイルは、コンポーネントがコネクタ(Connectors)により接続されて、通信規則に応じて互いにメッセージを交換することによって、コンポーネントを接続(組み立て)する構造を有するようになるが、C2スタイルコンポーネント間の通信は、非同期的なサービス要請(Request)と通知(Notification)メッセージ伝達により行なわれる。この時、各メッセージは、コネクタに接続された全てのコンポーネントにブロードキャスト(Broadcasting)され、各コンポーネントのラッパーコードに定義されているメッセージ規則に応じて、受け取ったメッセージを処理するか無視するかを決定する。
さらに、従来の技術に係るC2スタイルの場合、ソフトウェアシステムを構成するコンポーネントとこれらの相互作用関係及びコンポーネントとコネクタとの合成規則を上位抽象化水準で明示するために、ADL(Architecture Description Language)をコンポーネント定義言語(IDN: Component InterfaceDefinition Notation)とアーキテクチャー定義言語(ADN: Architecture Definition Notation)の2つの表記形式に区分して定義しなければならないとういう面倒さがある。
なによりも、従来の技術に係るC2スタイルの場合、再使用しようとするコンポーネント間の階層的依存関係を具現化するためには、ホワイトボックス(White Box、ソースコード修正)接近方法が不回避なので、コンポーネント再使用性を顕著に低下させる。
また、従来の技術に係るC2スタイルを採用して、コンパイルされたバイナリ形態の中間階層コンポーネントを再使用して組み立てようとする場合、コンポーネントが下位コンポーネントのどんなメソッド呼び出しをどの時点に必要とするかに対する情報(Metadata)がないため、階層的依存構造を具現化することが根本的に不可能である。
したがって、C2スタイルでバイナリコンポーネントを組み立てるためには、コンポーネントがサービス処理途中に、下位コンポーネントサービスを要請する代わりに、サービス処理に必要な全ての情報を初めから媒介変数として受け取るようにコンポーネントを再設計し、ラッパーコードでは、先に下位コンポーネントを呼び出して必要な情報を受け取って、該当コンポーネント(Inner Component)メソッド呼び出しの際、媒介変数として伝達した後、リターン値を上位コンポーネントに伝達する流れ調節論理(FlowControl Logic)を具現しなければならない。
このような接近法は、現在ソフトウェア工学者等が追求している構造的設計技法の採用を基本的に不可能にする要素として作用し、さらにC2スタイルを採用する場合、その組み立てプロセスが複雑であって、エラーの可能性が高いと共に、これに対するデバッグ(Debugging)が困難であり、多くの時間と費用とを消費するようにするという短所がある。
さらに、従来の技術に係るC2スタイルは、コンポーネント間の全ての相互作用が常にコネクタを介したブロードキャスティング及び通信規則による検査過程を経て生じるため、無数に多い不必要な割込みとメッセージ識別処理とを誘発させて、システム負担を加重させるという短所がある。
したがって、本発明は、上記した従来の技術の問題点を解決するためになされたものであって、クライアント側メタデータ生成技術、グルーコードでコンポーネント結合を仲裁する技術、グルーコードを自動生成する技術を活用して、コンポーネント間結合(組み立て)に厳格に要求されるシグネチャーの構文的及び意味論的整合問題を克服することによって、コンポーネントの再使用率を高め、自然なコンポーネント基盤開発方法により開発されたコンポーネント間メッセージ流れをコンポーネントコード修正なしでも柔軟に調節できる方法を提供するのに第1の目的がある。
本発明の第2の目的は、前記第1の目的に付加して、ソフトウェア設計において馴染んでいるUML(Unified Modeling Language)の順次図(Sequence Diagram)形態でコンポーネント組み立てを可能にするグルーテンプレートコード生成技術及び多階層構造の組み立て方法を提供することにある。
本発明の第3の目的は、前記第1及び第2の目的に付加して、再使用性が画期的に改善されたコンポーネント生成及び組み立て技術、ビジネスロジック変化にともなうメンテナンスを容易にするソフトウェア開発環境及び方法を提供することにある。
本発明の第4の目的は、上記の目的に付加して、コンポーネントの分散配置及び遠隔ホストを可能にし、組み立てられたコンポーネントを統合テストしモニターリングすることを可能にするソフトウェア開発環境、ソフトウェア管理システム及び方法を提供することにある。
本発明の第5の目的は、上記の目的に付加して、コンポーネントのサイズを適当なサイズに粒子化して(Fine-Grained)、コンポーネントの再使用性を向上させ得るコンポーネント基盤のソフトウェア開発システム及びその方法を提供することにある。
本発明の第6目的は、上記の目的に付加して、バイナリコンポーネントを多階層構造で具現可能にし、ブロードキャスト及び非同期メッセージへの変換などの追加負担(Overhead)のない組み立て方法を提供し、開発過程で別の文書化作業を必要とせず、低廉かつ迅速なメンテナンスを可能にするコンポーネント基盤のソフトウェア開発システム及びその方法を提供することにある。
上記の目的を達成するため、本発明は、コンポーネント基盤開発方法のコンポーネント具現と組み立てにおいて、コンポーネント開発者から呼び出そうとする仮想の(Virtual)下位コンポーネント(実際には、グルーコンポーネント)が提供しなければならないサービスのシグネチャーと注解とを任意に受け取る処理手段と、
受け取ったシグネチャーに基づいて、仮想の下位コンポーネント(実際には、グルーコンポーネント)のサービスを動的にバインディングし(Late Binding)呼び出すヘルパー関数(Helper Function)コードを生成する処理手段と、
下位サービスの呼び出し部分に新しく作られたヘルパー関数の呼び出しコードを生成する処理手段と、
後のメッセージ流れ制御及び組み立ての際、呼び出しサービスを選択し、グルーコンポーネントのテンプレートコードを自動生成するのに利用されるクライアント側メタデータを生成する処理手段と、
テスト用仮グルーコンポーネントを作って、独立的にコンポーネント機能をテストする処理手段からなることを特徴とするコンポーネント具現方法を提供し、GUIツールを利用して組み立てるコンポーネントを選択して図面に配置する処理手段と、
GUIツールを利用して図面に配置されたコンポーネントの中からクライアントコンポーネントとサーバコンポーネントとを選択して、コンポーネント間メッセージ流れを自由に設定する処理手段と、
グルーコンポーネントのテンプレートコードを自動生成し、仲裁コードを受け取る処理手段と、
グルーコードをコンパイルして、グルーコンポーネントを生成する処理手段などからなることを特徴とするコンポーネント組み立て方法である。
本発明は、互いに異なるプロジェクトと開発者等により独立的に開発されて、互いに異なるシグネチャーを有している多くのコンポーネントを互いに接続して再使用するにおいて、サーバ側インタフェース定義情報のみでなく、クライアント側の定義情報をメタデータに含めることによって、多階層構造のソフトウェア開発、非順次的組み立て、並列開発などを可能にする。
また、本発明に係るコンポーネント基盤のソフトウェア開発方法は、クライアント側インタフェースメタデータを各々のコンポーネントが含んでいるので、スタブコンポーネントテンプレートを自動生成させることができ、ここに適切な値を代入してコンポーネント機能をテストすることが可能になるので、下位コンポーネントのメソッド呼び出しに対して、開発者が自分に便利な方式で定義し開発しても、下位コンポーネントを呼び出すのに問題が発じないため、ソフトウェア開発の生産性を向上させるという効果がある。
本発明によって具現されたコンポーネント開発道具は、コンポーネント組み立てのためのグルーコードテンプレートを自動生成させることができ、組み立てられなければならないサーバ及びクライアント側の異質的コンポーネントの間に媒介変数の文法的及び意味的不一致を仲裁する論理を挿入することによって、コンポーネントの再使用性を大きく高め、コンポーネント組み立て過程を半自動化できる。さらに、本発明は、従来の技術とは異なり、コンポーネント間の多層構造組み立てを可能にするので、設計上のコンポーネント結合関係そのままを自然に採用して、コンポーネント組み立て過程を行うことができるようにする。
また、本発明によって開発されたコンポーネント基盤のソフトウェアは、コンポーネント間にメソッド呼び出しを直接接続して同期的に処理するので、不必要なシステム負荷またはネットワーク負荷を軽減するという効果がある。さらに、本発明によって具現されたコンポーネント開発道具は、システム要求事項分析及びシステムの概念的デザイン時に用いられるシーケンス図形態の直観的コンポーネント組み立て道具を提供するので、複雑かつ面倒なADL定義またはソースコード作成なしでもコンポーネントをより容易かつ低コストで組み立て、メンテナンスすることを可能にする。
さらに、本発明に係るコンポーネント基盤のソフトウェア開発技術をマイクロソフト社のドットネット(.NET)開発プラットフォームに採用する場合、マイクロソフト社の技術が提供するカスタムアトリビュート(Custom Attribute)、リフレクション(Reflection)、コードドーム(CodeDom)などの先端技術を応用してコンポーネントのメタデータを拡張し、グルーコードテンプレートを非常に效率的に自動生成することが容易となる。また、組み立て道具をVSIPパッケージ形態で開発することによって、ビジュアルスタジオ(VisualStudio)ユーザ経験が採用され、順次図形態のコンポーネント構造編集機能、インテリセンス(IntelliSense)が採用されるグルーコード編集、ソースレベルデバッグなどの先端機能を提供することが可能である。
現在のコンポーネント流通市場では、主にGUI用コンポーネントが流通されており、ビジネス論理を具現したコンポーネントは、その種類も多様でないだけでなく、階層構造形態の組み立て技術の不在によって、極めて粗粒(Coarse-Grained)形態の一般性が落ちるコンポーネントだけ存在することに対し、本発明に係るアクティブバインディング技術は、効率的かつ独立的なコンポーネント開発とテスト機能とを提供し、設計と一致する多階層組み立てを可能にするクライアント側インタフェース定義を提供するので、適切な一般性(Generality)を有する小規模の(Finer-Grained)再使用可能なビジネス論理領域コンポーネントの開発を奨励し、これにともなう流通市場を創出できるようにする効果がある。
また、本発明に係るアクティブバインディング技術は、バイナリコンポーネントを多階層構造で組み立てることができるようにすることによって、設計と具現とを一致させ、ローカルで動作するように作られたコンポーネントをネットワーク上に分散配置し、遠隔で動作できるようにする遠隔ホスト機能を提供する。したがって、第3者が作ったバイナリコンポーネントを市場で低コストで購入して、大規模多階層分散システムを構築することが可能となる。
さらに、本発明に係るアクティブバインディング技術が提供する順次図(Sequence Diagram)形態の編集機は、コンポーネント組み立てを時系列のメソッド呼び出し単位で細かく視角化し、グルーコード当たり単一のメソッド呼び出し仲裁だけを担当するようにして、組み立て作業を精密かつ簡単にする。また、グルーコードテンプレートを自動生成し、インテリセンス(IntelliSense)とソース水準のデバッグ機能とを提供して、ソフトウェア開発生産性を極大化する。
本発明に係るアクティブバインディング技術をマイクロソフト社の最新統合開発道具であるビジュアルスタジオドットネット(Visual Studio .NET)に完全に統合し開発すれば、ユーザのビジュアルスタジオ経験をそのまま採用することによって、容易かつ速く本発明に係るコンポーネント開発及び組み立て技術を採用することも可能である。
本発明に係るアクティブバインディング技術は、メソッド水準の細かな組み立て構造の視角化と組み立てに必要な充分の水準のメタデータを提供することによって、別の文書化作業なしでも開発者ではない第3者によるシステム変更を可能にする。
したがって、システムユーザは、従来とは異なり、文書化費用と独占的メンテナンス契約による費用を低減できる。
本発明は、従来概念のインタフェースをサーバ側インタフェース(Server-Side Interface)と命名し、下位コンポーネントに対する依存契約(Dependency Contract)をクライアント側インタフェース(Client-SideInterface)と命名することを特徴とする。また、本発明は、独立した開発者等が開発して市場に発売されている多様なコンポーネントを互いに組み立てるのに必要な規格に関する内容(これをメタデータと称する)を定義して、クライアント側インタフェースに含めることを特徴とする。
このように、本発明によってサーバ側だけでなくクライアント側インタフェース情報を含むようにメタデータを拡張すれば、組み立て道具が接続する両側コンポーネントのメタデータを動的に読ん込んで(Reflection)、グルーコードテンプレートを自動に生成することが可能となる。
本発明に係るコンポーネント組み立て技術は、バイナリコンポーネントの多階層構造の組み立てを可能にするだけでなく、異質的コンポーネント間の媒介変数に存在する構文的(Syntactic)または意味論的(Semantic)不整合を仲裁する論理(Mediation Logic)を本発明に係るグルーコードに挿入することによって、コンポーネントの再使用率を極大化できる。
下位コンポーネントに依存して、自分のサービスを完結する中間階層のコンポーネントを開発する時、従来には、下位コンポーネントの識別子とインタフェース定義を知っていなければならなかったため、開発の順序が必要であったが、本発明は、下位コンポーネントの情報を使用する代わりに、任意に新しい識別子と定義とを生成してクライアント側のインタフェースとし、組み立て道具がこのメタデータを読み込んで、該当識別子と定義とを有するグルーコードを生成するようにしている。
その結果、下位コンポーネントなしで非順次(Non-Procedural)方式で中間階層のコンポーネント開発及びテストが可能になって、コンポーネント開発生産性を増大し得る。本発明の詳細な説明では、本発明のメタデータ拡張と組み立て技法とに対して、下位コンポーネントのインタフェースに受動的に依存する従来の結合方式と対比させて、アクティブバインディング(ActiveBinding)と命名する。
本発明に係るコンポーネント組み立て技術は、コンポーネントを他のコンポーネントに独立的に開発可能にし、柔軟なコンポーネント組み立てのために必要な全ての情報をメタデータとして含むように従来のメタデータを拡張し、このメタデータを利用して、自動にグルーテンプレートを生成し、グルーメカニズムを採用してコンポーネント間メッセージ流れを柔軟に調節するコンポーネント具現及び組み立て装置を提供する。
本発明は、コンポーネントの組み立てのための仲裁コンポーネントであるグルーコンポーネントのテンプレートを自動に生成することによって、コンポーネントの組み立てにかかる時間と費用とを顕著に低減させ、他のコンポーネントに従属的なコンポーネントの再使用率を極に向上させ、コンポーネントメッセージ流れ制御を柔軟にし、コンポーネント間の整合度の厳密性を緩和させることによって、新しいシステムの開発及びメンテナンスを非常に容易にする。
上述した目的、特徴及び長所は、添付した図面と関連した次の詳細な説明により、さらに明確になるであろう。以下、添付した図面を参照して本発明に係る好ましい一実施の形態を詳細に説明する。
各々の図は、次のような内容を示している。図1は、本発明に係るコンポーネント基盤のソフトウェア開発方法を採用するためになされたコンポーネント間のメッセージ伝達構造を示した図である。
図1に示されているように、クライアントコンポーネントがサーバコンポーネントを直接インスタンス化し、メソッドを呼び出す代わりに、クライアント側メタデータとサーバ側メタデータとを利用して、2つのコンポーネントの連動を仲裁するグルーコンポーネントを生成した後、これにより独立的に開発されコンパイルされたバイナリコンポーネント310、320を組み立て(柔軟なメッセージ流れ制御、連動、メソッド呼び出し等)する。
グルーコンポーネント330が2つのコンポーネント310、320間メッセージ流れを仲裁するようにして、クライアントコンポーネント310とサーバコンポーネント320とは、呼び出し/被呼び出し規格が異なっても互いに呼び出しし呼び出されることができる。このような動的なメッセージ流れ制御により、コンポーネント開発及び組み立ての効率性を増加させる。
図2及び図3は、それぞれ従来の技術によってコンポーネントを組み立てる結合方法と、本発明によってコンポーネントを組み立てる結合方法を示した図である。図2(従来の技術)に示されているように、従来のコンポーネント基盤ソフトウェア開発では、クライアントコンポーネントA410がサーバコンポーネントB420のサービス(メソッド)をb1(図面符号421)というインタフェースを介して呼び出しているならば、その呼び出し内容がクライアントコンポーネントA410内に静的にコード化されコンパイルされて、バイナリ形態で配布される。
すなわち、コンポーネント間の統合によるメッセージ流れが高く結合されており、静的にコード化されているので、変更するためには、必ずコンポーネントソースコードの修正が必要となり、再使用性も悪くなる。また、全体システムのうち、1つのコンポーネントサービスを削除したり追加したりする場合、プロセス内の他のコンポーネントに多くの影響を及ぼすようになる。このような変更の負荷は、コンポーネントを利用して新しい製品を開発するためのタイムトゥマーケット(Time-To-Market)をなすことができない原因になる。
これに対し、図3に示した本発明に係るコンポーネント組み立て概念は、次の通りである。
クライアントコンポーネントA310がサーバコンポーネントB320のメソッドb1()322を呼び出さなければならない場合、クライアントコンポーネントA310の内部にサーバコンポーネントB320のメソッドb1()322を直接呼び出すようにコーディングする代わりに、後に作られるグルーコンポーネントX330のメソッドx1()を呼び出すようにコーディングし、それに対する情報(コンポーネント識別子<コンポーネントX>、インタフェース<あるいはクラス>識別子、メソッド<x1()>シグネチャー)をクライアントコンポーネントが含むようにクライアント側メタデータを拡張する。
2つのコンポーネントを連動させるために、クライアントコンポーネントA310のクライアント側メタデータを読み込んで、その情報(コンポーネント識別子<コンポーネントX>、インタフェース<あるいはクラス>識別子、メソッド<x1()>シグネチャー)と一致するグルーコンポーネント330を作る。また、サーバコンポーネントB320のサーバ側メタデータを読み込むことによって生成されたグルーコンポーネントのメソッドx1()がサーバコンポーネントB320のメソッドb1()322を呼び出し、その結果値を自分の結果値に返還するコードを挿入する。これで、クライアントコンポーネントA310のソースコード修正なしで独立的に定義され開発されたサーバコンポーネントB320のメソッドを呼び出すことができる。
本発明によるコンポーネント組み立て方法は、互いに異なるプロジェクトにおいて独立的に開発されて、呼び出し/被呼び出し規格の異なるコンポーネント間のメソッド呼び出し及び被呼び出しが可能になって、コンポーネント間のメッセージ流れが非常に柔軟になる。グルーコンポーネント330に仲裁コードを挿入することによって、メソッドシグネチャーが完壁に一致しないコンポーネントもカスタマイジングして接続でき、コンポーネント間メッセージ流れの生成、変更及び削除作業を非常に容易に行なうことができるようになって、全体システムの構築及びメンテナンスにともなう負荷を顕著に低減する。
図4は、本発明に係るコンポーネント基盤のソフトウェア開発のために、コンポーネントを具現及び組み立てる一処理のフローチャートであって、その一実施の形態を示した図である。
図4に示されているように、本発明に係るソフトウェアの開発は、仮想の下位コンポーネント(実際にはグルーコンポーネント)の識別子とメソッドシグネチャーとを生成して、この情報を含むようにコンポーネントメタデータを拡張し、これにともなう呼び出しコードを挿入して、コンポーネントを具現化するステップ(ステップS1)と、コンポーネント組み立てステップ(ステップS2)との2ステップからなり、このうち、コンポーネント具現ステップ(ステップS1)は、コンポーネントを相互作用する他のコンポーネントに独立的に具現するために、下位コンポーネントから提供されなければならないサービスのシグネチャーと注解とを受け取るステップ(ステップS11)と、受け取った情報に基づいて、グルーコンポーネントのサービスを動的にバインディングし呼び出すヘルパー関数コードを生成するステップ(ステップS12)と、下位サービス呼び出し部分にヘルパー関数呼び出しコードを挿入するステップ(ステップS13)、下位コンポーネント呼び出しに関する情報をメタデータとして生成するステップ(ステップS14)、テスト用仮グルーコンポーネントを作って、独立的なコンポーネント機能テストを行なうステップ(ステップS15)などの5ステップからなっている。
また、コンポーネント組み立てステップ(ステップS2)は、GUIツールを利用して組み立てるコンポーネントを選択して図面に配置するステップ(ステップS21)と、図面に配置されたコンポーネント間メッセージ流れを設定するステップ(ステップS22)と、2つのコンポーネントを接続するグルーコンポーネントのテンプレートを自動に生成して仲裁コードを挿入するステップ(ステップS23)と、グルーコードをコンパイルしてグルーコンポーネントを生成するステップ(ステップS24)などの4ステップからなる。
すなわち、本発明は、全てのコンポーネントを根本的に異なるコンポーネントと独立的に具現(ステップS11〜ステップS13)し、機能をテスト(ステップS15)し得るようにし、独立的なコンポーネント間の柔軟なメッセージ流れのために、従来のメタデータを拡張して自分が必要とするサービスに対する情報もメタデータに含む(ステップS14)ことによって、コンポーネントを具現化することを特徴とする。
また、コンポーネントメッセージ流れをGUI環境で柔軟にカスタマイジング(ステップS21、ステップS22)し、コンポーネント組み立ての際、呼び出し者コンポーネントと被呼び出し者コンポーネントのメタデータを利用して、両者のメッセージ流れを接続するグルーコンポーネントのテンプレートを自動生成し、コンポーネントメッセージ流れの無欠性を合わせる仲裁コードを編集(ステップS23)し、グルーコードをコンパイルして、グルーコンポーネントを生成(ステップS24)することにより、コンポーネント組み立てエラーを最小化しながらも迅速なコンポーネントの組み立てを可能にする。
図5は、本発明によって仮想の下位コンポーネント(実際にはグルーコンポーネント)が提供しなければならないサービス(メソッド)に関するクライアント側メタデータを含むコンポーネント具現方法の一実施の形態を示す一処理のフローチャートである。この過程は、従来のコンポーネント基盤開発方法論の問題点の根本原因であるコンポーネント間メッセージ流れの強い結合度を緩和させるために、コンポーネント具現時に実際の下位コンポーネントをオブジェクト化(Instantiate)し、メソッドを呼び出すコードを挿入する代わりに、仮想の下位コンポーネント(実際にはグルーコンポーネント)が提供しなければならないメソッドシグネチャーを開発者が任意に(主導的に)定義して呼び出すコードを挿入し、この情報をメタデータ形態でコンポーネントに含めることによって、コンポーネントを独立的に開発するようにし、コンポーネントの再使用性を向上させるステップである。
図5に示されているように、コンポーネントを開発する途中で(ステップS111)、下位コンポーネントのサービス呼び出しが要求される時点で(ステップS112)、実際の下位コンポーネントの代わりに、仮想の下位コンポーネント(実際にはグルーコンポーネント)が提供しなければならないサービス、すなわちメソッドに対して任意の名称と媒介変数、返還値及び注解情報を開発者から受け取る(ステップS113)。
次に、上記の情報に基づいて、開発中であるコンポーネントの該当クラス内に受け取ったシグネチャーを満足するメンバー関数であるヘルパー関数を定義し、ヘルパー関数内に仮想の下位コンポーネントのサービスを動的バインディング方法で呼び出すコード(仮想の下位コンポーネント及びインタフェースの識別子定義及びオブジェクト生成、受け取ったシグネチャーを満足するメソッド呼び出し)を自動生成する(ステップS12)。
一方、仮想の下位コンポーネントメソッドを呼び出す部分を新しく生成したヘルパー関数呼び出しに替えるコードを自動生成する過程(ステップS13)により、他のコンポーネントとの従属性を根本的に除去し具現する。上記のように呼び出そうとする下位コンポーネントのサービス呼び出しが必要な時、シグネチャーと注解とを開発者が任意に定義して、実際の下位コンポーネントに対する依存性を排除したまま処理する一連の過程をウィザード(Wizard)を利用して自動に処理するように具現すれば、下位コンポーネント呼び出し部分のエラーが最小化され、より容易に複数ステップの過程が処理され得る。
また、図5に示されているように、本発明によって開発されたコンポーネントを後に組み立ててソフトウェアを作る時、コンポーネント間連動を仲裁するグルーコンポーネントを生成するのに必要な情報をコンポーネントメタデータとして生成して、コンポーネント内部に含めることによって、従来のメタデータを拡張させる(ステップS14)。このように拡張されたメタデータ情報は、自分が提供するサービスに対するメタデータだけでなく自分が提供されなければならない下位コンポーネントのサービスに対するメタデータも自ら含むようにする部分であって、コンポーネント組み立て時に自分がいかなるサービスを提供されなければならないかに対する定義を提供する。
ここで、クライアント側メタデータは、ソースコードコンパイル時にソースコードバイナリ以外のリソース部分や、ドットネットの場合、ユーザアトリビュート(Custom Attribute)部分などを利用して、コンポーネントの内部に生成する。コンポーネントが自体的に持っているクライアント側メタデータを拡張させることによって、グルーメカニズムを使用して2つのコンポーネントを接続する仲裁者(Mediator)を自動に生成(ステップS23)する。
また、コンポーネント具現時に生成されたクライアント側メタデータをそのままグルーコンポーネントテンプレートを作るのに使用するので、システム組み立て時に生成される数多くのグルーコンポーネントと該当クラスあるいはインタフェースの識別子を自動に生成することによって、開発者が一々固有な識別子を作る面倒さを除去する。
本発明の良好な実施の形態として、開発しているコンポーネントを単独でエラーテスト及び機能テストを行なう(ステップS15)ために、サーバコンポーネントとの接続を担当するグルーコンポーネントを一時的に代替するスタブ(Stub)コンポーネントを生成する。
コンポーネント単位のテストのために、コンポーネントが含んでいるクライアント側メタデータを使用して、自分が呼び出すサーバコンポーネント識別子、インタフェース識別子、メソッドシグネチャーなどを満足する試験用簡易(スタブ)コンポーネントのテンプレートを自動に生成し(ステップS151)、開発者がサーバコンポーネントから提供されたいサービスの返還値などを編集し(ステップS152)、コンパイルしてスタブコンポーネントを開発し、スタブコンポーネントを呼び出すことによって、開発したコンポーネントの独立的なエラー及び機能テストを行う(ステップS153)。
スタブコンポーネントとリフレクション(Reflection)などを利用した動的バインディング(Dynamic Blinding)技法を利用して、コンポーネントのエラー及び機能検査を行なうことにより、根本的に全てのコンポーネントを他のコンポーネントに独立的に開発し、機能テストを行うことができるようになる。
図6は、本発明によってコンポーネントを組み立てる方法の良好な実施の形態を示した図である。図6に示されたコンポーネント組み立て過程は、コンポーネントメッセージ流れをグラフィック環境下でカスタマイジングするステップ(ステップS21及びステップS22)と、グルーコンポーネントテンプレートを自動生成してコンポーネント仲裁コードを編集するステップ(ステップS23)と、グルーコードをコンパイルしてグルーコンポーネントを生成するステップ(ステップS24)とからなり、このステップを必要なだけ繰り返すことによって、ソフトウェアシステムを具現化する。
本発明に係る良好な実施の形態として、各々のコンポーネントを単一機能を行う1つの命令文のように取り扱い、コンポーネントの実行順序を柔軟に調節するために、グルーコンポーネントの生成前にコンポーネント間のメッセージ流れをカスタマイジングする段階を経る。システム設計時に使用する順次図(Sequence Diagram)と類似したGUIツールを使用して、組み立てるコンポーネントのインスタンスを図面に配置し(ステップS21)、これらのうち、接続するクライアントコンポーネントとサーバコンポーネントとを選択して、コンポーネント間メッセージ流れを設定する(ステップS22)。コンポーネントメッセージ流れの柔軟なカスタマイジングのために、順次図GUIツールを使用することは、コンポーネント配置と時系列とに応じるメッセージ流れを自由に設定できるという大きな長所がある。
また、本発明では、2つのコンポーネントを接続するために、クライアント側のメタデータとサーバコンポーネント側のインタフェースとに該当するメタデータを使用して、グルーコンポーネントテンプレートを自動生成し、コンポーネント間のシグネチャー及び意味論的不一致解消のための仲裁コードを挿入し(ステップS23)、生成及び挿入されたグルーコードをコンパイルすることで、グルーコンポーネントを生成する(ステップS24)。
本発明が開示するこういう組み立て過程を経ることによって、大規模システムを一度に組み立てずに、分割征服方法を採用して複数の順次図を利用して組み立て、各々を独立的にテストした後、全体的にシステムを統合できる。
窮極的には、コンポーネントを単一機能を行う命令文のように取り扱い、フローチャートを使用してコンポーネントの実行順序を柔軟に調節し、グルーコンポーネントを容易に具現するようにすることにより、大規模システムを精巧ながらもより迅速に開発できるようになる。
図7は、本発明に係るコンポーネント間メッセージ伝達を仲裁するグルーコンポーネントを本発明に係る自動生成方法の一実施の形態で示す一処理のフローチャートである。
図7に示されているように、2つのコンポーネント間の特定サービス(メソッド呼び出し/被呼び出し)を互いに接続するために、クライアントコンポーネントの下位コンポーネントのサービス呼び出しに関連したクライアント側メタデータを調査して(ステップS2311)、開発者にクライアントコンポーネントが呼び出すサービスリストを見せ、接続を希望するサービス呼び出しを選択する過程(ステップS2312)とサーバコンポーネントのインタフェースに該当するサーバ側メタデータを調査(ステップS2321)して、開発者にサーバコンポーネントが提供するサービスリストを見せ、これにより呼び出されるサービスを選択(ステップS2322)するようにする過程を経る。
また、選択されたサービス、すなわちクライアントコンポーネントのメソッド呼び出しに関するクライアント側メタデータとサーバコンポーネントとが提供するサービスのメタデータを利用して、グルーコンポーネントテンプレートコードを自動生成する(ステップS233)。この時、クライアント側メタデータに含まれたコンポーネント識別子とインタフェース(あるいはクラス)識別子とメソッドシグネチャーなどの情報を読み込んで、この情報と一致するグルーコンポーネントとインタフェース(あるいはクラス)、そして該当メソッドを具現化するソースコードを自動に生成することによって、グルーコンポーネントのテンプレートを自動に生成する。
その後、自動に生成されたグルーコンポーネントテンプレートコードに開発者が簡単な仲裁コードを挿入することによって、コンポーネント間シグネチャーの文法的整合問題と媒介変数の意味論的不一致とを解決して、2つのコンポーネントが正確に連動できるように、無欠性(Integrity)を保障する仲裁コードを挿入する(ステップS234)。この時、クライアント側及びサーバ側メタデータに含まれた注解とシグネチャーとをグルーコンポーネントテンプレート内に挿入することによって、開発者が仲裁コードを作成する過程を非常に容易にする。また、グルーコンポーネントテンプレートを作る時、コンポーネント間にやりとりするメッセージ内容(媒介変数と返還値)とサービス呼び出しに必要な時間をロギング(Logging)するコードとを自動に挿入し、ロギングされたデータを調査することによって、システム統合テストを行なうことができる。
また、本発明の良好な実施の形態として、コンポーネント組み立てと組み立てテストに関する全ての作業とをGUI環境で行い、グルーコンポーネントのテンプレートソースコードを自動生成することによって、コンポーネント間のメッセージ流れを容易に生成して変更でき、複雑かつ時間が多くかかるコンポーネント組み立て及びテスト過程を非常に直観化、単純化して、速く新しいシステムを構築し、容易にメンテナンスできるようにする。
以下では、図8及び図13を参照して本発明によってソフトウェア開発機能を提供する開発環境(Development Environment)の一実施の形態を詳述する。以下の図8及び図13では、好ましい実施の形態として、マイクロソフト社のドットネット(.Net)開発道具であるビジュアルスタジオドットネット(VisualStudio .NET)に本発明に係る開発機能を統合した開発環境を例に挙げて説明しているが、必ずこれに限定してはならず、他の開発プラットフォムに拡張適用がもちろん可能である。
図8ないし図12は、本発明によって提供されたGUIでコンポーネントを具現化する一実施の形態を順序的に示した図である。図8に示されているように、ソフトウェア開発者がコンポーネントを具現化するコードを生成する途中、下位コンポーネントサービスが必要であると判断されれば(すなわち、下位コンポーネントが提供するメソッドを呼び出そうとすれば)、サービスが必要な部分に「カーソル」711を位置させる。ここで、メソッドとは、上位コンポーネントが呼び出すことができるように、下位コンポーネントが接近を許容する関数を意味する。次に、プログラム開発者は、開発道具上段のメニュ「アクティブ呼び出し712(Active Call;クライアント側コード及びメタデータ生成)」をクリックする。
その後、本発明に係る開発環境は、仮想の下位コンポーネント(実際にはグルーコンポーネント)をオブジェクト化し、メソッドを呼び出すのに用いるメソッドシグネチャーを受け取るダイアログウィンドウ713を表示する。
図9は、本発明に係るソフトウェア開発環境が提供するクライアント側メソッド呼び出しコードとメタデータとを生成するためのダイアログウィンドウの一実施の形態を示した図である。図9に示されているように、開発者は、ダイアログウィンドウ713に後ほど組み立てられる下位コンポーネントが提供するサービスのシグネチャーと無関係に、開発者が望むサービスのシグネチャーを入力するようになる。図9を詳細に見れば、返還形式(Return Type)、メソッド名称、メソッド注解、限定者、媒介変数形式及び名称などが入力される。
図9に示されたダイアログウィンドウ713を「OK」ボタンをクリックして閉じれば、本発明に係る開発環境は、開発者から受け取ったメソッドシグネチャー情報と共に、仮想の下位コンポーネント(グルーコンポーネント)識別子を作ってクライアントメタデータとして生成する。また、開発環境は、これに基づいて、グルーコンポーネントを動的にオブジェクト化してメソッドを呼び出すコードを生成し、このコードを関数化する。
図10に示されているように、本発明に係る開発環境は、図8の図面符号711において、カーソルを位置させた位置に図9の図面符号713で生成した関数を呼び出すコードを生成する。
一方、図11に示されているように、本発明に係る開発道具は、開発中であるコンポーネントが下位コンポーネントとエラーなしで組み立てられて動作できるかをテストするために、下位コンポーネントをシミュレートする(Simulate)試験用簡易(スタブ:Stub)コンポーネント生成メニュボタン716を提供できる。
次に、開発者が図11のメニュボタン716をクリックすれば、本発明に係る開発環境は、図10の図面符号715で生成されたクライアント側メタデータを読み込んで、同じ識別子(ID)とシグネチャーとを有する仮想の下位コンポーネント(Stub Component)を生成するテンプレートコードとプロジェクトファイルとを作る。
一方、図11の図面符号718は、本発明によってソリューション探索ウィンドウを示した図であって、スタブコンポーネントウィザード717(テストのために開発環境が作った仮想の下位コンポーネント)を作るためのプロジェクトファイルが示されている。
図12は、図11のスタブコンポーネントウィザード717が生成したスタブコンポーネントコードテンプレートを示した図であって、開発者は、図12に示したコードを修正して、開発中であるコンポーネント、すなわち下位コンポーネントが提供するサービスに依存するコンポーネントを下位コンポーネントなしでも開発しテストできるようになる。
以上、図8ないし図12の説明過程を経て開発しテストされたコンポーネントは、上位コンポーネントに提供するサービス(メソッド)に対したサーバ側メタデータ(コンポーネントアーキテクチャー標準<Component Architecture Standard>技術が提供)のみでなく、開発者が任意に定めた仮想の下位コンポーネント(実際にはグルーコンポーネント)が提供しなければならないサービスを規定したクライアント側メタデータを組み込む(Embed)ようになる。
図13ないし図17は、本発明によってコンポーネントを組み立てる過程を説明する開発道具ウィンドウを示した図である。図13に示されているように、開発者は、コンポーネント組み立てのために、新しいコンポーネント組み立てプロジェクト811を生成する。すなわち、開発者は、ダイアログウィンドウでコンポーネント組み立てプロジェクト811を選択する。次に、図13のダイアログボックスで「OK」ボタンをクリックすれば、本発明に係る開発道具は、組み立てプロジェクトのためのファイルを生成し、順次図形態のコンポーネント組み立て編集ウィンドウ812を表示するようになる。
図14において、図面符号813は、生成されたプロジェクトのファイルを表示するソリューション探索ウィンドウを示している。開発者は、ソリューション探索ウィンドウ813で「コンポーネント」ノードを選択し(マウス右側のボタンを押して)、コンテクストメニュにより組み立てプロジェクトに組み立てるコンポーネントを含める。
図15は、上述した図13及び図14の過程で組み立てプロジェクトに含まれたコンポーネントを示している図である。図16に示されているように、開発道具で順次図を示すために提供される組み立て道具ウィンドウ814を示しており、UMLオブジェクトライフライン815(Object Life Line)が示されている。
すなわち、開発者が組み立て道具ウィンドウ814でコンポーネント道具をクリックしたまま、マウスカーソルを編集機ウィンドウに移してボタンを置けば(ドラッグアンドドロップ動作)、開発道具は、順次図のオブジェクトライフラインを表示する。次に、図17に示されているように、開発者は、コンテクストメニュを利用して、プロジェクトに含まれたコンポーネントのうち、いずれかを選択して、オブジェクトライフラインとマッピングさせることができる。
図18は、コンポーネントがマッピングされたオブジェクトライフラインの属性を示すダイアログウィンドウを示す図であって、開発道具は、オブジェクトライフラインにマッピングされたコンポーネントのメタデータを読み込んで属性ウィンドウ816に表示する。すなわち、図18に示された属性ウィンドウ816には、サーバコンポーネント側メタデータとクライアント側メタデータとを読み込んで、各メソッドのシグネチャー情報を表示する。
図19は、本発明の良好な実施の形態によって、開発者がグラフィック編集ウィンドウに順次図を完成したことを示している。すなわち、各々のオブジェクトライフライン815にコンポーネントをマッピングさせ、上位コンポーネントが下位コンポーネントのメソッドを呼び出すことを表示するために、UMLメッセージ817にコンポーネントを接続する。本発明の良好な実施の形態によって、図19のUMLメッセージ817は、2つのコンポーネント間の識別子とシグネチャーとの不一致を解消し、メソッドの呼び出し/被呼び出しを仲裁するグルーコンポーネントとマッピングされる。
図20は、開発者編集機でメッセージを選択し、その属性を表示するダイアログウィンドウを載せた形状を示した図である。図20のメッセージ属性ダイアログウィンドウ822は、このメッセージに接続された上位コンポーネントのクライアント側メタデータ818を読み出して、上位コンポーネントが呼び出すメソッドを表示し、下位コンポーネントのサーバ側メタデータ819を読み込んで、下位コンポーネントが提供するサービスメソッドを表示する。
開発者が接続しようとする上位コンポーネントの呼び出しメソッドと、下位コンポーネント被呼び出しメソッドとを選択して「OK」ボタンをクリックしてダイアログウィンドウを閉じれば、開発環境は、2つのコンポーネント間のメソッド呼び出し/被呼び出しを接続するグルーコンポーネントを作るためのコードとプロジェクトとを生成する。図20には、上位コンポーネントが呼び出すメソッドのうち、接続しなければならないメソッドを選択するためのコンボボックス820と、下位コンポーネントの被呼び出しメソッドのうち、接続されるメソッドを選択するためのコンボボックス821が示されている。
図21は、開発環境がグルーコンポーネントを作るためのプロジェクトとグルーコードテンプレートとを生成した形状を示している図であって、図20において、開発者が上位コンポーネント呼び出しメソッドと下位コンポーネント被呼び出しメソッドとを選択して「OK」ボタンをクリックすれば、開発環境は、上位コンポーネントのクライアント側メタデータを読み込んで、同じ識別子を有するグルーコンポーネントを生成し、開発者が選択した呼び出しメソッドシグネチャーと同じシグネチャーを有するサーバメソッドを具現したグルーコードを生成する。次に、開発環境はもまた下位コンポーネントのサーバ側メタデータを読み込んで、上記の過程で生成されたグルーコードのメソッド内部に開発者が選択した被呼び出しメソッドシグネチャーを注解で表示する。
また、図21に示されているように、開発環境が2つのコンポーネントのメタデータを読み込んで自動生成したグルーコード823と上位コンポーネントのクライアント側メタデータとのうち、識別子部分を読み込んで、それと同じ識別子を有するグルーコンポーネントとクラスを具現化するために生成したコード824とが示されている。また、上位コンポーネントのクライアント側メタデータのうち、開発者が選択した呼び出しメソッドのシグネチャーと同じシグネチャーを有するグルーコンポーネントのサービスメソッド825を具現化するために生成されたコードが示されている。また、図21には、開発環境が生成したグルーコンポーネントプロジェクト826が示されている。
図22には、開発者が順次図に示した全てのコンポーネントオブジェクトのうち、2つのUMLメッセージ827、828を生成した形状と、開発環境がこれに対応する2つのグルーコンポーネントプロジェクト829、830を生成した形状を示している。
図23に示されているように、開発者は、クライアントコンポーネントとサーバコンポーネントとの間のメソッドシグネチャーの構文的/意味論的(Syntactic/Semantic)不一致を解消するために、開発環境が生成したグルーコードを編集できるが、開発環境は、開発者が仲裁コードを容易に作ることができるように、下位コンポーネントのサーバ側メタデータを読み込んで、被呼び出しメソッドのシグネチャーを注解で表示した形状831を示している。
また、図23は、開発者が2つのメソッド間のシグネチャー不一致を解消するために挿入した仲裁コード832の一例を示している。
図24は、開発者が「ビルド(Build)」メニュをクリックすれば、開発環境が編集されたグルーコードをコンパイルしてグルーコンポーネントを作る過程を示した図であって、上述した過程を経てグルーコンポーネントを作ってから、上位コンポーネントがグルーコンポーネントを呼び出すようになり、グルーコンポーネントが下位コンポーネントを呼び出すようになる。
このような方法により、開発者は、コンポーネントのソースコードや下位コンポーネント呼び出しに対して詳細に記録した文書なしでも独立的に開発され、呼び出しと被呼び出しメソッドシグネチャーとが正確に一致しないバイナリ形態の(コンパイルされた)コンポーネントを非常に速くて容易に組み立てて連動させることができる。
上述した内容は、後述する発明の特許請求の範囲の理解のために、本発明の特徴と技術的長所を多少幅広く説明した。本発明の特許請求の範囲を構成する付加的な特徴と長所は、以下で詳細に説明される。開示された本発明の概念と特定実施の形態は、本発明と類似の目的を行なうための異なる構造の設計や修正の見本として直ちに使用され得ることが当該技術分野における熟練された人々により認識されなければならない。
また、本発明で開示した発明概念と実施の形態は、本発明の同一目的を行うために、他の構造に修正するかまたは設計の基礎として、当該技術分野における熟練された人々により使用され得るものである。
なお、本発明は、上記の実施の形態に限定されるものではなく、本発明に係る技術的思想から逸脱しない範囲内で様々な変更が可能であり、それらも本発明の技術的範囲に属する。
本発明に係るコンポーネント基盤のソフトウェア開発方法を採用するためになされたコンポーネント間のメッセージ伝達構造を示した図である。 従来の技術によってコンポーネントを組み立てる結合方法を示した図である。 本発明によってコンポーネントを組み立てる結合方法とを示した図である。 本発明に係るコンポーネント基盤のソフトウェア開発のために、コンポーネントを具現及び組み立てる一処理のフローチャートである。 本発明によって下位コンポーネントが提供するサービス呼び出しに関するクライアント側メタデータを含むコンポーネントの具現方法の一実施の形態を示す一処理のフローチャートである。 本発明によってコンポーネントを組み立てる方法の良好な実施の形態を示した図である。 コンポーネント間メッセージ伝達を仲裁するグルーコンポーネントを、本発明によって自動生成する方法の一実施の形態を示す一処理のフローチャートである。 本発明によって提供された開発道具において、コンポーネントを具現化する一実施の形態を図12まで順次に示した図である。 本発明によって提供された開発道具において、コンポーネントを具現化する一実施の形態を順次に示した図である。 本発明によって提供された開発道具において、コンポーネントを具現化する一実施の形態を順次に示した図である。 本発明によって提供された開発道具において、コンポーネントを具現化する一実施の形態を順次に示した図である。 本発明によって提供された開発道具において、コンポーネントを具現化する一実施の形態を順次に示した図である。 本発明によって提供された開発道具において、コンポーネントを組み立てる一実施の形態を図24まで順次に示した図である。 本発明によって提供された開発道具において、コンポーネントを組み立てる一実施の形態を順次に示した図である。 本発明によって提供された開発道具において、コンポーネントを組み立てる一実施の形態を順次に示した図である。 本発明によって提供された開発道具において、コンポーネントを組み立てる一実施の形態を順次に示した図である。 本発明によって提供された開発道具において、コンポーネントを組み立てる一実施の形態を順次に示した図である。 本発明によって提供された開発道具において、コンポーネントを組み立てる一実施の形態を順次に示した図である。 本発明によって提供された開発道具において、コンポーネントを組み立てる一実施の形態を順次に示した図である。 本発明によって提供された開発道具において、コンポーネントを組み立てる一実施の形態を順次に示した図である。 本発明によって提供された開発道具において、コンポーネントを組み立てる一実施の形態を順次に示した図である。 本発明によって提供された開発道具において、コンポーネントを組み立てる一実施の形態を順次に示した図である。 本発明によって提供された開発道具において、コンポーネントを組み立てる一実施の形態を順次に示した図である。 本発明によって提供された開発道具において、コンポーネントを組み立てる一実施の形態を順次に示した図である。

Claims (22)

  1. コンポーネント開発プラットフォーム上で製作された複数のコンポーネントをクライアントとサーバとの関係で選択組み立ててソフトウェアを開発する方法において、
    前記各コンポーネントは、独立的に制約なしで自分だけの固有識別子及び自分だけのメソッドシグネチャーなどを含むメタデータを、自分だけの任意形式で備えることを特徴とし、
    前記メタデータは、サーバとしてのインタフェース被呼び出し情報のみでなく、クライアントとしてのインタフェース呼び出し情報を含み、このメタデータを利用して、サーバコンポーネントの被呼び出し規格と前記サーバコンポーネントを呼び出すクライアントコンポーネントの呼び出し規格とが互いに整合されるようにするグルーコンポーネントテンプレートを生成するステップを備えることによって、任意の識別子とメソッドシグネチャーとを独立的に有する複数のコンポーネントを互いに組み立てることができるようにするソフトウェア開発方法。
  2. 前記グルーコンポーネントテンプレート生成ステップは、
    (a)クライアントコンポーネントからクライアント側メタデータを取り出すステップと、
    (b)前記ステップ(a)のメタデータの中からD部分を読み込んで、同じIDを有するグルーコンポーネントとインタフェース(あるいはクラス)とを生成するステップと、
    (c)前記ステップ(a)のメタデータの中からメソッドシグネチャーを読み込んで、前記ステップ(b)で生成したインタフェース(あるいはクラス)内に同じシグネチャーを有するメソッドを生成するステップと、
    (d)サーバ側コンポーネントからサーバ側メタデータを取り出すステップと、
    (e)前記ステップ(c)で生成したメソッド内部にサーバコンポーネントのオブジェクトを生成するコードを生成して挿入するステップと
    を含むことを特徴とする請求項1に記載のソフトウェア開発方法。
  3. 前記ステップ(d)から得たメタデータの中からメソッドシグネチャー部分を読み込んで、注解として、前記ステップ(e)で作ったコードに挿入するステップをさらに含むことを特徴とする請求項2に記載のソフトウェア開発方法。
  4. 前記グルーコンポーネントテンプレート生成ステップは、サーバのメタデータとクライアントのメタデータとを比較して、呼び出しメソッドと被呼び出しメソッドとの間のシグネチャーの文法的/意味論的不一致を解消する仲裁コードを生成するステップをさらに含むことを特徴とする請求項2に記載のソフトウェア開発方法。
  5. 前記クライアント側メタデータを含むコンポーネントは、
    (a)仮想のサーバ(下位)コンポーネント(実際にはグルーコンポーネント)に要請するサービス(メソッド)のシグネチャーと注解とを受け取るステップと、
    (b)前記ステップ(a)で受け取ったシグネチャー情報に基づいて、仮想のサーバコンポーネント(グルーコンポーネント)を動的にオブジェクト化し、メソッド呼び出しを具現化するヘルパー関数(helper function)コードを生成するステップと、
    (c)前記仮想のサーバコンポーネント(グルーコンポーネント)サービスを呼び出そうとする部分に、前記ステップ(b)のヘルパー関数呼び出しコードを入力するステップと、
    (d)以後コンポーネントの組み立て時、グルーコンポーネントテンプレートを生成するのに必要な前記クライアント側メタデータを生成して、コンポーネントまたはコンポーネントリソースに含めるステップと
    を有することを特徴とする請求項1に記載のソフトウェア開発方法。
  6. 前記ステップ(a)からステップ(d)までをウィザード(Wizard)を利用して処理することを特徴とする請求項5に記載のソフトウェア開発方法。
  7. 前記ステップ(d)は、
    ユーザ属性(Custom Attribute)を利用して、クライアント側メタデータをバイナリコンポーネントに含めることを特徴とする請求項5に記載のソフトウェア開発方法。
  8. 前記ステップ(d)は、
    コンポーネントに含められるか、コンポーネントと共に配布されるリソースに、クライアント側メタデータを含めることを特徴とする請求項5に記載のソフトウェア開発方法。
  9. 前記ステップ(d)は、
    グルーコンポーネント識別子とクラスあるいはインタフェース識別子とを任意に生成して、受け取ったメソッドシグネチャーと共にクライアント側メタデータとして作ることを特徴とする請求項5に記載のソフトウェア開発方法。
  10. 前記コンポーネントに含まれたクライアント側メタデータを利用して、仮想のサーバ(下位)コンポーネントに対応する試験用簡易(スタブ)コンポーネントテンプレートコードを生成した後、編集とコンパイルとを経て作られたスタブコンポーネントを活用して、開発中であるソフトウェアの独立的な機能テストを行なうことを特徴とする請求項1に記載のソフトウェア開発方法。
  11. コンポーネント基盤ソフトウェア開発のライフサイクル(Life Cycle)のうち、コンポーネント組み立て(Component Assembly)において、
    (a)グラフィック道具を利用して、選択されたコンポーネントを前記グラフィック道具画面に配置するプロセスと、
    (b)前記グラフィック道具を利用して、クライアントコンポーネントとサーバコンポーネントとを選択して互いに接続することによって、コンポーネント間の呼び出し関係を設定するプロセスと、
    (c)前記ステップ(b)の呼び出し関係に対応するグルーコンポーネントテンプレートを生成し、前記クライアントコンポーネントが呼び出すサービスシグネチャーと前記サーバコンポーネントが提供する被呼び出しサービスシグネチャーとが異なるか、意味論的に不一致する場合、これを整合させる仲裁コードを挿入してグルーコンポーネントを生成するプロセスと、
    (d)前記ステップ(a)からステップ(c)までを繰り返して、必要なだけのグルーコンポーネントを生成するプロセスと
    を備え、
    前記プロセス(d)で生成された複数のグルーコンポーネントと前記クライアント及びサーバコンポーネントを配置して、ソフトウェアを具現化するようにする環境を提供することを特徴とするソフトウェア開発環境(Software Development Environment)。
  12. 前記プロセス(a)及びプロセス(b)は、順次図(Sequence Diagram)によってコンポーネントオブジェクトの配置と時系列に応じるメッセージ流れを設定するように提供することを特徴とする請求項11に記載のソフトウェア開発環境。
  13. 前記プロセス(a)及びプロセス(b)は、複数の順次図を利用して組み立てることによって、それぞれを独立的にテストできるように提供することを特徴とする請求項11または12に記載のソフトウェア開発環境。
  14. 前記プロセス(c)は、
    (c1)開発者にクライアントコンポーネントが呼び出すサービスリストを見せ、そのうち、いずれかを選択させるプロセスと、
    (c2)開発者にサーバコンポーネントが提供するサービスリストを見せ、呼び出されるサービスを選択させるプロセスと、
    (c3)選択されたクライアントとサーバ側サービスとに対するメタデータを利用して、グルーコンポーネントを作るためのテンプレートコードを生成するプロセスと、
    (c4)生成されたグルーコンポーネントテンプレートコードに開発者が簡単な仲裁コードを挿入することによって、コンポーネント間のシグネチャー整合問題と媒介変数の意味論的不一致とを解決するプロセスと
    を含むことを特徴とする請求項11に記載のソフトウェア開発環境。
  15. コンポーネントに含まれたクライアント側メタデータを調査して、そのコンポーネントが呼び出すサービスのシグネチャーと注解リストとを開発者に見せるプロセスをさらに含むことを特徴とする請求項14に記載のソフトウェア開発環境。
  16. 前記プロセス(c3)は、
    クライアントとサーバ側注解とシグネチャーとをグルーコンポーネントテンプレート中に挿入して、開発者にとって仲裁コードを容易に作成するようにすることを特徴とする請求項14に記載のソフトウェア開発環境。
  17. 前記プロセス(c3)は、媒介変数値と返還値及びサービス呼び出しに必要な時間などを記録する(Logging)コードを挿入して、記録されたデータをテストに利用することを特徴とする請求項14に記載のソフトウェア開発環境。
  18. 任意のプログラム開発者が事実上の産業界標準(De-Facto Standard)コンポーネントプラットフォーム上で、新しいコンポーネントの開発が可能な環境を提供するソフトウェア開発環境において、前記開発環境は、
    (a)前記プログラム開発者が下位コンポーネントサービスが必要であり、そのメソッドを呼び出すコードを作る代わりに、前記開発環境が仮想の下位コンポーネント(実際にはグルーコンポーネント)を呼び出すのに使用するメソッドシグネチャーを受け取るプロセスと、
    (b)前記プロセス(a)で受け取ったメソッドシグネチャー情報と開発環境が任意に生成した仮想の下位コンポーネント(グルーコンポーネント)識別子とをクライアント側メタデータとして生成し、これに基づいて、グルーコンポーネントを動的にオブジェクト化してメソッドを呼び出すコードを生成して、前記コードを関数化するプロセスと、
    (c)クライアント側メタデータを読み出して、同じ識別子とシグネチャーとを有するグルーコンポーネントを生成するテンプレートコードとプロジェクトファイルとを生成するプロセスと
    を含むことを特徴とするソフトウェア開発環境。
  19. 前記プロセス(c)は、開発中であるコンポーネントが下位コンポーネントとエラーなしで組み立てられて動作できるかをテストするために、テスト用スタブコンポーネントテンプレートを自動生成するプロセスを含むことを特徴とする請求項18に記載のソフトウェア開発環境。
  20. 前記プロセス(a)からプロセス(c)の過程で開発されるコンポーネントは、自らが上位コンポーネントに提供するサービスに対するサーバ側メタデータと開発者が任意に定めた仮想の下位コンポーネントが提供しなければならないサービスを規定したクライアント側メタデータとを組み込むことを特徴とする請求項18に記載のソフトウェアコンポーネント開発環境。
  21. 任意のプログラム開発者が事実上の産業界標準(De-Facto Standard)コンポーネントプラットフォームで運営される新しいコンポーネントを開発するようにするソフトウェア開発環境において、前記開発環境は、
    (a)前記プログラム開発者がコンポーネントを組み立てることができるようにコンポーネント組み立てプロジェクトを生成すれば、組み立てプロジェクト進行のためのファイルを生成させ、順次図形態の組み立て編集ウィンドウを提供するプロセスと、
    (b)前記組み立て編集ウィンドウにUMLオブジェクトライフライン(Object Life Line)を挿入し、組み立てプロジェクトに含まれたコンポーネントとマッピングすれば、マッピングされたコンポーネントのメタデータが読み出されて、各メソッドのシグネチャーが認識されるプロセスと、
    (c)前記コンポーネントオブジェクトがUMLメッセージに接続されて、メソッドが呼び出され、グルーコンポーネントが生成されるプロセスと
    を含むことを特徴とするソフトウェア開発環境。
  22. 開発者が2つのコンポーネント間メソッドシグネチャーの構文的/意味論的(Syntactic/Semantic)不一致を解消するために、開発環境が生成したグルーコードに仲裁コードを挿入して、独立的に開発されたコンポーネント間連動で無欠性(Integrity)を保障するプロセスをさらに含むことを特徴とする請求項18に記載のソフトウェア開発環境。
JP2006507841A 2003-05-12 2004-05-12 コンポーネント基盤環境下で拡張されたメタデータを利用したソフトウェア開発方法及びその開発システム Pending JP2006526209A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR1020030029704A KR20030044959A (ko) 2003-05-12 2003-05-12 클라이언트 측 메타데이터와 글루 코드를 이용한 컴포넌트 구현 및 조립방법
PCT/KR2004/001099 WO2004099896A2 (en) 2003-05-12 2004-05-12 Method and system of developing a software with utilizing extented metadata of component under component-based development environment
KR1020040033449A KR100697246B1 (ko) 2003-05-12 2004-05-12 컴포넌트 기반 환경 하에서 확장된 메타데이터를 이용한 소프트웨어 개발 방법 및 시스템

Related Child Applications (4)

Application Number Title Priority Date Filing Date
JP2009102299A Division JP2009238230A (ja) 2003-05-12 2009-04-20 コンポーネント基盤環境下で拡張されたメタデータを利用したソフトウェア開発方法及びその開発システム
JP2009102295A Division JP2009238229A (ja) 2003-05-12 2009-04-20 コンポーネント基盤環境下で拡張されたメタデータを利用したソフトウェア開発方法及びその開発システム
JP2009102297A Division JP2009245441A (ja) 2003-05-12 2009-04-20 コンポーネント基盤環境下で拡張されたメタデータを利用したソフトウェア開発方法及びその開発システム
JP2009102300A Division JP2009238231A (ja) 2003-05-12 2009-04-20 コンポーネント基盤環境下で拡張されたメタデータを利用したソフトウェア開発方法及びその開発システム

Publications (1)

Publication Number Publication Date
JP2006526209A true JP2006526209A (ja) 2006-11-16

Family

ID=33436498

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006507841A Pending JP2006526209A (ja) 2003-05-12 2004-05-12 コンポーネント基盤環境下で拡張されたメタデータを利用したソフトウェア開発方法及びその開発システム

Country Status (3)

Country Link
US (1) US20070150855A1 (ja)
JP (1) JP2006526209A (ja)
WO (1) WO2004099896A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006171898A (ja) * 2004-12-13 2006-06-29 Denso Corp オブジェクト静的結合方法およびオブジェクト結合ツール
WO2011121873A1 (ja) * 2010-03-30 2011-10-06 日本電気株式会社 プログラム処理方法、プログラム処理装置、およびコンピュータプログラム

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007537511A (ja) * 2004-04-30 2007-12-20 マイクロソフト コーポレーション 規則を用いたエンドユーザアプリケーションカスタマイズ
EP1782366A2 (en) * 2004-06-04 2007-05-09 Sap Ag Consistent set of interfaces derived from a business object
US7631004B2 (en) * 2004-10-08 2009-12-08 Microsoft Corporation Systems and methods for creating a template from an existing file
US7581206B2 (en) * 2005-01-14 2009-08-25 Microsoft Corporation Systems and methods for creating and providing templates in a single file
US7552418B2 (en) * 2005-01-14 2009-06-23 Microsoft Corporation Systems and methods for creating and providing templates in a single file
US20060195411A1 (en) * 2005-02-28 2006-08-31 Microsoft Corporation End user data activation
US8326703B2 (en) 2005-12-30 2012-12-04 Sap Ag Architectural design for product catalog management application software
US8316344B2 (en) 2005-12-30 2012-11-20 Sap Ag Software model deployment units
US8676617B2 (en) 2005-12-30 2014-03-18 Sap Ag Architectural design for self-service procurement application software
US8448137B2 (en) 2005-12-30 2013-05-21 Sap Ag Software model integration scenarios
US8321831B2 (en) 2005-12-30 2012-11-27 Sap Ag Architectural design for internal projects application software
US8522194B2 (en) * 2005-12-30 2013-08-27 Sap Ag Software modeling
US8396731B2 (en) 2005-12-30 2013-03-12 Sap Ag Architectural design for service procurement application software
US8380553B2 (en) 2005-12-30 2013-02-19 Sap Ag Architectural design for plan-driven procurement application software
US8402426B2 (en) 2005-12-30 2013-03-19 Sap Ag Architectural design for make to stock application software
US8327319B2 (en) 2005-12-30 2012-12-04 Sap Ag Software model process interaction
US8370794B2 (en) 2005-12-30 2013-02-05 Sap Ag Software model process component
US8407664B2 (en) * 2005-12-30 2013-03-26 Sap Ag Software model business objects
US8538864B2 (en) 2006-03-30 2013-09-17 Sap Ag Providing payment software application as enterprise services
US8396761B2 (en) 2006-03-30 2013-03-12 Sap Ag Providing product catalog software application as enterprise services
US8326702B2 (en) 2006-03-30 2012-12-04 Sap Ag Providing supplier relationship management software application as enterprise services
US8396749B2 (en) 2006-03-30 2013-03-12 Sap Ag Providing customer relationship management application as enterprise services
US8442850B2 (en) 2006-03-30 2013-05-14 Sap Ag Providing accounting software application as enterprise services
US8438119B2 (en) 2006-03-30 2013-05-07 Sap Ag Foundation layer for services based enterprise software architecture
US8321832B2 (en) 2006-03-31 2012-11-27 Sap Ag Composite application modeling
US8312416B2 (en) 2006-04-13 2012-11-13 Sap Ag Software model business process variant types
DE102006033863A1 (de) * 2006-07-21 2008-01-24 Siemens Ag Verschaltungsschnittstelle für flexibles Online/Offline-Deployment einer n-schichtigen Softwareapplikation
US8132093B2 (en) * 2006-08-14 2012-03-06 Microsoft Corporation Instance annotation in object-oriented programming
US8522208B2 (en) * 2006-09-29 2013-08-27 Siemens Aktiengesellschaft System for creating and running a software application for medical imaging
US8799448B2 (en) * 2006-12-20 2014-08-05 Microsoft Corporation Generating rule packs for monitoring computer systems
KR100828302B1 (ko) * 2007-11-07 2008-05-08 정안모 컴포넌트 재사용과 의존성 주입 기술을 이용한 소프트웨어개발 및 실행 방법
US8447657B2 (en) 2007-12-31 2013-05-21 Sap Ag Architectural design for service procurement application software
US8671033B2 (en) 2007-12-31 2014-03-11 Sap Ag Architectural design for personnel events application software
US8510143B2 (en) 2007-12-31 2013-08-13 Sap Ag Architectural design for ad-hoc goods movement software
US8315900B2 (en) 2007-12-31 2012-11-20 Sap Ag Architectural design for self-service procurement application software
US8671034B2 (en) * 2007-12-31 2014-03-11 Sap Ag Providing human capital management software application as enterprise services
US8401936B2 (en) 2007-12-31 2013-03-19 Sap Ag Architectural design for expense reimbursement application software
US8671032B2 (en) 2007-12-31 2014-03-11 Sap Ag Providing payment software application as enterprise services
KR101470319B1 (ko) * 2008-02-15 2014-12-08 삼성전자주식회사 컴포넌트 모델 기반의 가상 소프트웨어 플랫폼을 생성하는방법, 이를 이용하여 소프트웨어 플랫폼 아키텍처를검증하는 방법 및 그 장치
US20090234806A1 (en) * 2008-03-13 2009-09-17 International Business Machines Corporation Displaying search results using software development process information
US8230393B2 (en) * 2008-08-13 2012-07-24 International Business Machines Corporation Template model for metadata capture
US8818884B2 (en) 2008-09-18 2014-08-26 Sap Ag Architectural design for customer returns handling application software
US8321250B2 (en) 2008-09-18 2012-11-27 Sap Ag Architectural design for sell from stock application software
US8595077B2 (en) 2008-09-18 2013-11-26 Sap Ag Architectural design for service request and order management application software
US8326706B2 (en) 2008-09-18 2012-12-04 Sap Ag Providing logistics execution application as enterprise services
US8386325B2 (en) 2008-09-18 2013-02-26 Sap Ag Architectural design for plan-driven procurement application software
US8352338B2 (en) 2008-09-18 2013-01-08 Sap Ag Architectural design for time recording application software
US8315926B2 (en) 2008-09-18 2012-11-20 Sap Ag Architectural design for tax declaration application software
US8374896B2 (en) * 2008-09-18 2013-02-12 Sap Ag Architectural design for opportunity management application software
US8359218B2 (en) 2008-09-18 2013-01-22 Sap Ag Computer readable medium for implementing supply chain control using service-oriented methodology
US8401928B2 (en) 2008-09-18 2013-03-19 Sap Ag Providing supplier relationship management software application as enterprise services
US8380549B2 (en) 2008-09-18 2013-02-19 Sap Ag Architectural design for embedded support application software
US8321308B2 (en) 2008-12-03 2012-11-27 Sap Ag Architectural design for manual invoicing application software
US8401908B2 (en) 2008-12-03 2013-03-19 Sap Ag Architectural design for make-to-specification application software
US8738476B2 (en) 2008-12-03 2014-05-27 Sap Ag Architectural design for selling standardized services application software
US8321306B2 (en) 2008-12-03 2012-11-27 Sap Ag Architectural design for selling project-based services application software
US8311904B2 (en) 2008-12-03 2012-11-13 Sap Ag Architectural design for intra-company stock transfer application software
US8671035B2 (en) 2008-12-11 2014-03-11 Sap Ag Providing payroll software application as enterprise services
US8370807B2 (en) * 2009-03-12 2013-02-05 Microsoft Corporation Debugging for runtime type systems
US8839189B2 (en) * 2009-09-30 2014-09-16 Sap Ag Service variants for enterprise services
US8694947B1 (en) 2009-12-09 2014-04-08 The Mathworks, Inc. Resource sharing workflows within executable graphical models
US8910133B2 (en) 2010-06-07 2014-12-09 Microsoft Corporation Library conformity checker
US9069645B2 (en) * 2010-11-30 2015-06-30 Sap Se Decoupled development in a shared development system
US20120174068A1 (en) * 2010-12-30 2012-07-05 Sap Ag Testing Software Code
US9678728B1 (en) * 2012-03-29 2017-06-13 Emc International Company Version compatibility
US8910115B2 (en) * 2012-04-02 2014-12-09 Kony Solutions, Inc. Systems and methods for application development
US9684880B2 (en) 2013-03-15 2017-06-20 Connectwise.Com, Inc. Project scheduling and management system that uses product data with product classes
US9285948B2 (en) * 2013-03-15 2016-03-15 Assima Switzerland Sa System and method for interface display screen manipulation
US10318901B2 (en) 2013-03-15 2019-06-11 Connectwise, Llc Systems and methods for business management using product data with product classes
US9880820B2 (en) * 2013-06-02 2018-01-30 Microsoft Technology Licensing, Llc Programming language with extensions using dynamic keywords
US11429913B2 (en) 2013-08-02 2022-08-30 Connectwise, Llc Systems and methods for converting sales opportunities to service tickets, sales orders, and projects
CN104424265B (zh) * 2013-08-29 2018-10-16 北大方正集团有限公司 数字资源管理方法及系统
US9311062B2 (en) * 2013-10-31 2016-04-12 International Business Machines Corporation Consolidating and reusing portal information
US10423733B1 (en) * 2015-12-03 2019-09-24 The Mathworks, Inc. Systems and methods for sharing resources having different data types
US11144290B2 (en) * 2019-09-13 2021-10-12 Huawei Technologies Co., Ltd. Method and apparatus for enabling autonomous acceleration of dataflow AI applications
CN113626067A (zh) * 2020-05-08 2021-11-09 腾讯科技(深圳)有限公司 一种组件发布方法及装置
CN116088801B (zh) * 2022-12-21 2023-10-20 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) 一种基于Vite的通用型框架

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6769095B1 (en) * 1999-07-23 2004-07-27 Codagen Technologies Corp. Hierarchically structured control information editor
US6854107B2 (en) * 1999-12-29 2005-02-08 Baker Hughes Incorporated Method of and system for designing an N-tier software architecture for use in generating software components
US6959429B1 (en) * 2000-05-16 2005-10-25 Watterson-Prime Software, Inc. System for developing data collection software applications
KR100420473B1 (ko) * 2000-12-30 2004-03-02 학교법인 명지학원 관동대학교 개조 컴포넌트에 의한 바이너리 컴포넌트의 재정의 방법
US20040015822A1 (en) * 2001-03-23 2004-01-22 Linton Samuel W. Method and apparatus for dynamic assembly and verification of software components into flexible applications

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006171898A (ja) * 2004-12-13 2006-06-29 Denso Corp オブジェクト静的結合方法およびオブジェクト結合ツール
WO2011121873A1 (ja) * 2010-03-30 2011-10-06 日本電気株式会社 プログラム処理方法、プログラム処理装置、およびコンピュータプログラム
US9342382B2 (en) 2010-03-30 2016-05-17 Nec Corporation Program processing method, program processing apparatus, and computer program

Also Published As

Publication number Publication date
WO2004099896A2 (en) 2004-11-18
US20070150855A1 (en) 2007-06-28
WO2004099896A3 (en) 2005-02-17

Similar Documents

Publication Publication Date Title
JP2006526209A (ja) コンポーネント基盤環境下で拡張されたメタデータを利用したソフトウェア開発方法及びその開発システム
JP2009238231A (ja) コンポーネント基盤環境下で拡張されたメタデータを利用したソフトウェア開発方法及びその開発システム
US7093264B2 (en) Method and apparatus for assembling Enterprise JavaBeans components
Koch Classification of model transformation techniques used in UML-based Web engineering
Volgyesi et al. Component-based development of networked embedded applications
Luer et al. Composition environments for deployable software components
Groher et al. Aspect-orientation from design to code
Kumar et al. UML Profiles for Modeling Real-Time Communication Protocols.
Karsai et al. A modeling language and its supporting tools for avionics systems
JP2011515755A (ja) 予約されたコンポーネントコンテナ基盤ソフトウェアの開発方法及び装置
Hartmann et al. UML-based test generation and execution
JP2010049439A (ja) ソフトウェアモデルを用いたシステム構築方法およびモデリング装置
Rivero et al. Improving user involvement through a model-driven requirements approach
Štěpán Design pattern solutions as explicit entities in component-based software development
Kapova et al. Domain-specific templates for refinement transformations
Bao et al. Integrating through user interface: a flexible integration framework for third-party software
Geppert et al. Combining SDL Patterns with Continuous Quality Improvement: An Experience Factory Tailored to SDL Patterns
Moschoyiannis Specification and analysis of component-based software in a concurrent setting
Clauß A proposal for uniform abstract modeling of feature interactions in UML
Tang A software synthesis methodology for developing component-based applications
Jacob The OMEGA Component Model
Al-Agtash et al. Re-Engineering BLUE Financial System Using Round-Trip Engineering and Java Language Conversion Assistant.
Eixelsberger Software Architecture Recovery of Product Lines
Wang et al. Semi-automatic Composition of Web Service for Bioinformatics Domain
Levin Modeling in software architecture

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090120

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090420

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090420

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090512

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090602