Yazılımlar büyük ölçekli hale gelmeye başladığından beri karşılaşılan sorunları çözmek için farklı yaklaşımlar ortaya konulmuştur. Solid Prensipleri, amerikalı yazılım mühendisi Rober C. Martin tarafından 2000 yılında ‘Tasarım İlkeleri ve Tasarım Modelleri’ makalesinde tanıtılmıştır. Bu prensipler, süredürülebilir, gelişime açık, anlaşılır ve kod tekrarını önlemeye olanak sağlayan evrenselleşmiş kurallardan oluşan pratikler olmasının yanı sıra OOP kod yazmak için de takip edilmesi önerilen pratiklerdir.

Solid prensipleri ile;
- Geliştirilen yazılım değişikliklere veya yeni eklenecek özelliklere kolayca adapte olacak
- Kod’da yapılan değişikliklerin oluşturduğu zaman kaybını minimize eder.
1- Single Responsibility Principle (Tek Sorumluluk İlkesi)
Özetle nesnenin sadece tek bir sorumluluğu olmalıdır.
2- Open/Close Principle (Açık/Kapalı İlkesi)
Nesne genişlemeye açık ancak değişikliklere kapalı olmalıdır.
3- Liskov Substitution Principle (Liskov İkame İlkesi)
Programdaki nesnelerin, programın çalışmasında sorun yaratmadan kendine ait örnekleri ile değiştirilebilir olmasıdır. Bu aynı zamanda sözleşmeyle tasarım (Design by Contracy) olarak bilinir.
4- Interface Segregation Principle (Arayüz Ayrıştırma İlkesi)
Nesnelerin ihtiyaç duymadıkları Interface’lerinden mümkün olduğunca ayrıştırılmasıdır.
5- Dependency Inversion Principle (Bağımlılık Tersine Çevirme İlkesi)
Yüksek seviyeli sınıflar, düşük seviyeli sınıflara bağlı olmamalı, her ikisi de soyut kavramlara bağlı olmalıdır.