Bilişim sistemlerinde, birsoyutlama katmanı veyasoyutlama seviyesi, bir alt sistemin çalışma ayrıntılarını gizlemenin bir yoludur. Soyutlama katmanlarını kullanan yazılım modellerine örnek olarak,ağ protokolü içinOSI modeli,OpenGL ve diğergrafik kütüphaneleri verilebilir. Bu katmanlar,kaygıların ayrılması ilkesine dayanarakbirlikte çalışabilirlik veplatform bağımsızlığı sağlar.
Bilgisayar biliminde soyutlama katmanı, herhangi bir belirli uygulamadan bağımsız olarak birkavramsal modelin veyaalgoritmanın genelleştirilmesidir. Bu genelleştirmeler, çeşitli uygulamalarda ortak olarak gözlemlenen benzerliklerin en iyi şekilde ifade edildiği modellerle ortaya çıkar. İyi tasarlanmış bir soyutlama katmanı, işe yarar bir kavramı veyatasarım desenini sadeleştirerek yeniden kullanılmasını kolaylaştırır. Alt seviyedeki öğeleri bir araya getirmek, ancak kullanıcıyı bu öğelerin karmaşıklığından izole ediyorsa bir soyutlama katmanı sayılır.[1]
Bir katman, diğerine bağımlıysa onun üzerinde kabul edilir. Her katman, üstündeki katmanlar olmadan var olabilir; ancak çalışması için altındaki katmanlara ihtiyaç duyar. Soyutlama katmanları genellikle hiyerarşik bir yapı oluşturacak şekilde düzenlenebilir. OSI modeli yedi soyutlama katmanından oluşur. Modelin her katmanı, sayısal iletişimin farklı bir yönünü kapsar ve böylece ilgili mühendislik çözümlerininkarmaşıklığını azaltır.
David Wheeler'a atfedilen ünlü bir söz, "Bilgisayar bilimindeki tüm sorunlar, bir başkadolaylılık seviyesi ile çözülebilir" şeklindedir.[2] Bu söz genellikle yanlış biçimde "soyutlama" ile değiştirilerek aktarılır.
Bilgisayar mimarisi kapsamında bir bilgisayar sistemi genellikle aşağıdaki soyutlama seviyeleriyle temsil edilir:
Programlanabilir mantık genellikle donanımın bir parçası olarak kabul edilirken, tanımları bazen bir cihazın yazılımı veyadonanım yazılımı (firmware) olarak da görülebilir. Donanım yazılımı yalnızca düşük seviyeli yazılımı içerebilir ancak bazen işletim sistemi ve uygulamalar dahil tüm yazılımları da kapsayabilir. Yazılım katmanları; donanım soyutlama katmanları, fiziksel ve mantıksal aygıt sürücüleri, dosya sistemleri gibi depolama birimleri, işletim sistemi çekirdeği, ara katman yazılımı, uygulamalar ve diğer bileşenlere ayrılabilir. Ayrıca,VHDL,makine dili,assembly dili gibi düşük seviyeli dillerden;derlenen dil,yorumlanan dil vebetik dili gibi dillere geçiş de bir soyutlama olarak değerlendirilebilir.[3]
Unix işletim sisteminde çoğu giriş ve çıkış işlemi, bir aygıttan okunan veya bir aygıta yazılan bayt akışları olarak değerlendirilir. Bu bayt akışı modeli;dosya,soket ve terminalG/Ç işlemlerinde cihazdan bağımsızlık sağlamak için kullanılır. Bir uygulama düzeyinde cihaza okuma/yazma yapmak için, program cihazı açmak üzere bir işlev çağırır. Bu cihaz, gerçek bir aygıt (örneğin bir terminal) ya da sanal bir cihaz (örneğin bir dosya veya ağ bağlantı noktası) olabilir. Aygıtın fiziksel özellikleri, işletim sistemi tarafından soyutlanarak programcının yalnızca bayt okuma ve yazma işlemleriyle ilgilenmesi sağlanır. İşletim sistemi ise bu soyutlamayı gerçek donanıma uygun işlemlere dönüştürür.
Çoğu grafik kütüphanesi (örneğin OpenGL), bir grafik cihazı modelini soyutlama arayüzü olarak sağlar. Programcı tarafından verilen komutlar, kütüphane tarafından aygıtın ihtiyaç duyduğu özel komutlara çevrilir. Örneğin, birçizici (plotter) için gerekli komutlar ile birCRT monitör için gerekenler farklıdır. Ancak grafik kütüphaneleri bu farklılıkları soyutlayarak, genel olarak geçerli çizim komutları (örneğin çizgi, çokgen gibi ilkel şekiller sunar.