ソフトウェアフレームワーク
ソフトウェアフレームワークは、システム構築に必須な標準的かつ下位レベルの詳細を設計者やプログラマが検討する時間を省き、上位レベルの要求仕様(ビジネスロジック)の実現に多くの時間を割けるようにし、ソフトウェア開発を容易にすることを目指している。例えば、銀行のWebサイト構築にWebアプリケーションフレームワークを使っている開発チームは、要求処理や状態管理の機構を検討する時間を削減して、口座からの引き落としといった操作に注力できる。また、このような差分プログラミングの用途に適しているという理由で、フレームワークの実装にオブジェクト指向言語が選ばれることが多い。
批判としては、フレームワークは全体的なコードを肥大化させるという主張もある。これは複数のフレームワークで重複・競合する部分や補い合う部分があり、APIも複雑に絡み合っているためでもある。
フレームワークの使い方を学ぶ時間がかかるという主張もある。ただし一度フレームワークの使い方を学べば、同じフレームワークを利用する次のプロジェクトからはより素早く確実な応用が可能となる。また、多くのフレームワークは基本的な設計が似通っていることが多く、類推(アナロジー)により別のフレームワークにも考え方が応用できることが多い。
フレームワークは他のプラットフォーム製品(OS、DBMSなど)と同様に、特定のフレームワーク・ベンダーや、特定のバージョンに依存(ロックイン)されるリスクがあるとの主張もある。