ドメイン・エンジニアリング
これは、ソフトウェア開発サイクルのフェーズすべてに適用されるため、ドメイン・エンジニアリングは、アプリケーション・エンジニアリングと同様に、分析、設計、実装の3つの主要フェーズにも重点を置いている。これにより、ドメインに関連するソフトウェア実装コンポーネントのセットだけでなく、再利用可能で設定可能な要件と設計も生成される。
ウェブ上のデータの増大とモノのインターネットの成長を考えると、ドメイン・エンジニアリングのアプローチは他の分野にも関連してきている。ウェブサービスのディープチェーンの出現は、サービスの概念が相対的なものであることを浮き彫りにしている。ある組織が開発・運営するウェブサービスを、別の組織がプラットフォームの一部として利用することができる。サービスは異なるコンテキストで使用されることがあり、したがって異なるコンフィギュレーションを必要とするため、サービスファミリーの設計はドメインエンジニアリングアプローチの恩恵を受ける可能性がある。
ドメイン分析は、ドメインを定義し、ドメインに関する情報を収集し、ドメインモデルを作成するために使用される。特徴モデル(当初は特徴指向ドメイン分析手法の一部として考案された)を使用することで、ドメイン分析はドメイン内の共通点とドメイン内の変化点を特定することを目的としている。ドメイン分析を使用することで、従来のアプリケーション・エンジニアリングアプローチで作成される静的な構成ではなく、構成可能な要件とアーキテクチャの開発が可能になる。
ドメイン分析は、要求工学とは大きく異なるため、従来の要件導出のアプローチは、ドメインモデルに存在するような構成可能な要件の開発には効果がない。ドメイン・エンジニアリングを効果的に適用するには、ソフトウェア開発ライフサイクルの初期段階で再利用を考慮する必要がある。開発された機能モデルから機能を選択することにより、技術の再利用の考慮が非常に早い段階で行われ、開発プロセス全体を通して適切に適用することができる。
ドメイン分析は、主にそのドメインにおける過去の経験から生み出された成果物から導かれる。
ドメイン設計は、ドメイン分析フェーズで作成されたドメインモデルを使用し、ドメイン内のすべてのシステムが適合できる汎用アーキテクチャを作成することを目的とする。アプリケーションエンジニアリングが機能要件と非機能要件を使用して設計を作成するのと同じように、ドメインエンジニアリングのドメイン設計フェーズでは、ドメイン分析フェーズで作成された設定可能な要件を使用して、システムファミリーのための設定可能で標準化されたソリューションを作成する。ドメイン設計の目的は、要件構成が異なるにもかかわらず、ドメイン内のシステムに共通する問題を解決するアーキテクチャパターンを作成することである。ドメイン設計におけるパターンの開発に加えて、エンジニアはパターンの範囲と、コンテキストがパターンに関連するレベルを特定することにも注意しなければならない。コンテキストの制限は非常に重要である。コンテキストの量が多すぎると、そのパターンは多くのシステムに適用できず、コンテキストの量が少なすぎると、パターンが十分に強力でないために有用でなくなる。有用なパターンは、頻繁に繰り返され、かつ高品質でなければならない。
ドメイン設計の目的は、開発された機能モデルによって提供される柔軟性を保持しながら、可能な限り多くのドメイン要件を満たすことである。アーキテクチャは、ドメイン内のすべてのシステムを満足させるのに十分な柔軟性を持ちながら、ソリューションのベースとなる強固なフレームワークを提供するのに十分な剛性を持つべきである。