April 2007 - Posts
Software Factoriesのメタモデルに関連する技術には大きく3つの分類が存在します。 1つはPractical Software Factories in .NETに示される、開発プロセス上のメタモデルです。 これはIEEE 1471をベースとし、プロダクトライン開発におけるプロダクト開発のプロセスを記述します。 一般に開発方法論は、ロール、タスク、アセットで抽象的に記述可能であって、それをプロダクトライン開発に適用し、Software Factoriesスキーマとして定義しています。ここでは、マイクロソフト社はツールに基づき開発方法論を提供するので、それをかなり意識した構造となっています。
Read More...
レイヤーアーキテクチャを語るための事前準備。 レイヤーという言葉は開発ライフサイクル管理の中では複数の箇所に登場します。 概念レベルの分析段階で使われるレイヤーは、概念モデルの分類、責務の配置に関して使われます。したがって、分類法の一種です。一方、レイヤーアーキテクチャは、非機能要求を論理的なノード上の配置で動作させるための実現法です。ここで、論理ノードとは必ずしも物理ノードを意味しないで、ノード上のシステムのバージョンや構成定義の条件を決めます。 概念モデルは分析を経て責務がそのモデル上に配置されます。次に概念モデルを適切な分割単位である、パッケージやコンポーネント上で動作させます。このパッケージやコンポーネントの構造がアーキテクチャです。レイヤーアーキテクチャのレイヤーはここでのパッケージの一種です。概念モデルの責務は、適切な基準の下で、パッケージやコンポーネント上に配置されます。この場合、責務を純粋に動作させるのはコンポーネントの方です。
Read More...
SOAにおけるサービスの実装法ではカプセル化の考え方から、どんな実装法でも選択が可能です。 多くの場合は、OOPを使い、インターフェイス定義を使ってクラスを実装するとともに、インターフェイス定義をWSDLで外部に公開します。 あるいは、Contract-Firstで開発する場合には、先に契約を定義して、実装法を後で選択します。 しかし、この場合でも主流の開発言語がOOPであることや、SOAで必要となる他の非機能要求の実現のために必要な機能を提供する実行環境がOOPのフレームワークで提供されているので、OOPが現実的な選択となります。こうしたフレームワークはたいていの場合、スケーラブルなアーキテクチャを想定するあまり、レイヤー構造となっています。たとえば、.NETの場合は、asmxやWCFを選択し、HTTP実行エンジンとしてはWebサーバ(UI層)、データ処理にはデータアクセス層を利用します。
Read More...
現在のソフトウェア技術は不必要に複雑な部分があります。 世の中の要求から、複雑にならざるを得ない部分もあるのですが、 技術的な発展の経緯や、かならずしも技術だけでは決まらない互換性、標準化、政治的決定などがあるからです。 たとえば、ファイナライザは非決定論的なVMのGCに依存する以上、リソースの消費に対して 安全な見積もりができないという点では、あるべき機能ではありません。 また、オブジェクトを生成するDI(依存性注入)と解放するGCは、対となる機能ですが、 実現する場所もメカニズムも異なっています。これは不要な複雑さです。
Read More...