実際のシステム設計におけるテンプレートやフレームワークの役割を果たすものは？
設計方法論
ソフトウェア設計 
 設計方法論は実際のシステム設計におけるテンプレートやフレームワークの役割を果たす。実際の設計工程を単純化し、品質向上のための設計原則の適用を可能とする。
C++ 
 テンプレートとプリプロセッサマクロはいずれもコンパイル時に処理される言語機能であり、静的な条件に基づいたコンパイルが行われるが、テンプレートは字句の置き換えに限定されない。テンプレートはC++の構文と型を解析し、厳密な型チェックに基づいた高度なプログラムの流れの制御ができる。マクロは条件コンパイルに利用できるが、新しい型の生成、再帰的定義、型の評価などは行えないため、コンパイル前のテキストの置き換えや追加・削除といった用途に限定される。つまりマクロは事前に定義されたシンボルに基づいてコンパイルの流れを制御できるものの、テンプレートとは異なり独立して新しいシンボルを生成することはできない。テンプレートは静的な多態（下記参照）とジェネリックプログラミングのためのツールである。 C++ 
 概略すれば、テンプレートはコードの記述に本来必要な型や定数を明確にすることなく抽象的な記述ができる、パラメータ化された関数またはクラスである。テンプレート仮引数に実引数を与えてインスタンス化した結果は、テンプレート仮引数に指定した型に特化した形で記述されたコードと全く等価になる。これによりテンプレートは、汎用的かつおおまかに記述された関数およびクラス（テンプレート）と、特定の型に特化した実装（インスタンス化されたテンプレート）の依存関係を解消し、パフォーマンスを犠牲にすることなく抽象化できる手段を提供する。 デスクトップ環境 
 デスクトップ環境を提供するシステムにおいて、ウィンドウマネージャおよびそれと連携するウィジェット・ツールキットを使って書かれたアプリケーション群が、一般にユーザーから見える大部分を構成する。ウィンドウマネージャは環境の対話的部分をサポートし、ツールキットは統一感のあるルック・アンド・フィールを提供する。 C++ 
 C++のテンプレートでは、より洗練された汎用的な多態を実現できる。特ににより仮想関数のオーバーライドをシミュレートした静的な多態を実装できる。C++のテンプレートは型安全かつチューリング完全であるため、テンプレートメタプログラミングによりコンパイラに条件文を再帰的に解決させて実行コードを生成させることにも利用できる。 C++ 
 パースはC++を処理するツールを作成する際の最も難しい問題ではない。このようなツールはコンパイラと同じように識別子の意味を理解しなければならない。従ってC++を処理する実用的なシステムはソースコードをパースするだけでなく、各識別子の定義を正確に適用し（つまりC++の複雑なスコープのルールを正確に取り扱い）、型を正しく特定できなければならない。 デスクトップ環境 
 CDEやGNOMEやKDEといったXのデスクトップ環境は、ユーティリティライブラリ（XtやGLib等）、GUIライブラリ（ウィジェット・ツールキット、XawやMotifやGTKやQt等）といったインフラとなるライブラリ、ウィンドウマネージャ（twmやmwmやMetacityやKWin等）などのシステムユーティリティ、ファイルマネージャ（ファイルやKonqueror、Dolphin等）や管理ツールなどの基本的なアプリケーション、スキン、などから構成される。これら個々のモジュールは個別に変更したり設定したりすることができ、ユニークな組合せを作ることができるが、多くのデスクトップ環境ではデフォルトの設定があるので、それを使うことができる。 デスクトップ環境 
 WindowsやmacOSのようなプロプライエタリなオペレーティングシステム (OS) のデスクトップ環境は、一般的に使用方法という観点から見て、変更をあまり受け付けないようになっている。また、それによってユーザーエクスペリエンス（ユーザーエクスペリエンスのデザインを参照）の一貫性を保証しているのである。特にBTRONでは表示の仕様や画面構成などを作法という名で規定し、原則としてこれに則り、変更することを公式には認めていない。 オブジェクト指向プログラミング 
 1962年、クリステン・ニゴールはでシミュレーション言語のプロジェクトを開始した。これは彼が以前に用いたモンテカルロ法と実世界のシステムを概念化する仕事に基づくものであった。オーレ＝ヨハン・ダールが正式にプロジェクトに参加し、UNIVAC I(UNIVAC 1107)上で動作するSimulaプログラミング言語が設計された。Simulaは、クラスやオブジェクト、継承、ダイナミックバインディングなど、今日のオブジェクト指向プログラミングには不可欠である重要な概念を導入した。 デスクトップ環境 
 単独で機能することを意図して設計されたXウィンドウマネージャは、典型的なデスクトップ環境の要素を多く備えており、顕著な例として Enlightenment がある。他にも、Openbox、Fluxbox、、FVWM、Window Maker、 などがあり、特に最後の2つはNeXTSTEP GUIのルック・アンド・フィールを採用している。 カーネル 
 カーネルは、階層型に設計されたオペレーティングシステム (OS) の中核となる部分で、アプリケーションとハードウェアの架け橋である。具体的には、システムのリソースや、ハードウェアとソフトウェアの連携を管理する。その他、通信制御も行う事が多い。