ボトルネックは一つのアプリケーションの様な何かのまとまりを改善する時に使用できる考え方です。ボトルネックのおおまかな意味は次の通りです。
物事がスムーズに進行しない場合、遅延の原因は全体から見れば小さな部分が要因となり、他所をいくら向上させても状況改善が認められない場合が多い。このような部分を、ボトルネックという。
(5/14wikipediaより引用)
例えば一連の処理、A-Zがあり、合計で52秒の実行時間がかかるとします。この一連の処理の実行にかかる内訳を、処理Kにかかる実行時間が30秒、他の処理は合計22秒で実行可能とします。この一連の処理の実行時間を50%短縮する、という課題が出た場合、処理Jの実行時間を短縮しなければ他所をいくら向上させても状況改善が認められません。この場合、処理Jをボトルネックな処理と言います。自分はあまり広い分野を知りませんがプログラミングなどの情報科学、料理などの日常生活の様な場面でボトルネックは往々にして現れます。またボトルネックがある問題の場合、ボトルネックの解決こそが問題の解決そのものとなる時がままあります。問題を分割し単純な小さな複数の問題に分けて考えるという手法(分割統治法)が複雑な問題を解決をしようとする場合に有効とされるのには、物事を考えやすくする他にもボトルネックである部分を見つけるという理由もあります。