In ingegneria del software, SOLID è un acrostico riferito a cinque principi dello sviluppo del software orientato agli oggetti descritti da Robert C. Martin in diverse pubblicazioni dei primi anni 2000.Agile Software Development: Principles, Patterns and Practices. Pearson Education. 2002. ISBN 0-13-597444-5The Principles of OOD, Robert C. Martin, Ultima verifica 11:29, 29 mar 2013 (CET) (NOTA: l'acronimo SOLID non è usato, in quanto attribuitogli in seguito) Tali principi vengono detti SOLID principles (letteralmente "principi solidi"). La parola è un acronimo che serve a ricordare tali principi (Single responsibility, Open-closed, Liskov substitution, Interface segregation, Dependency inversion), e fu coniata da Michael Feathers.
I principi SOLID sono intesi come linee guida per lo sviluppo di software leggibile, estendibile e manutenibile, in particolare nel contesto di pratiche di sviluppo agili e fondate sull'identificazione di code smell e sul refactoring.
I cinque principi SOLID Lettera Principio Acronimo In breve S Single responsibility principle o principio di singola responsabilità SRP Afferma che ogni classe dovrebbe avere una ed una sola responsabilità, interamente incapsulata al suo interno. O Open/closed principle o principio aperto/chiuso OCP Un'entità software dovrebbe essere aperta alle estensioni, ma chiusa alle modifiche. L Liskov substitution principle o principio di sostituzione di Liskov LSP Gli oggetti dovrebbero poter essere sostituiti con dei loro sottotipi, senza alterare il comportamento del programma che li utilizza. I Interface segregation principle o principio di segregazione delle interfacce ISP Sarebbero preferibili più interfacce specifiche, che una singola generica. D Dependency inversion principle o principio di inversione delle dipendenze DIP Una classe dovrebbe dipendere dalle astrazioni, non da classi concrete.
Note
Voci correlate Concetti base e argomenti correlati Metodologia agile Metodologia adattabile o Development Adaptive Software Development Riuso di codice Programmazione ad oggetti Classe astratta
Principi di sviluppo e di design Design pattern Design by contract Dependency injection
Categoria:Programmazione orientata agli oggetti Categoria:Progettazione del software