SOLID

SOLID

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.[1][2] 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)[3], 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

LetteraPrincipioAcronimoIn breve
SSingle responsibility principle o principio di singola responsabilitàSRPAfferma che ogni classe dovrebbe avere una ed una sola responsabilità, interamente incapsulata al suo interno.
OOpen/closed principle o principio aperto/chiusoOCPUn'entità software dovrebbe essere aperta alle estensioni, ma chiusa alle modifiche.
LLiskov substitution principle o principio di sostituzione di LiskovLSPGli oggetti dovrebbero poter essere sostituiti con dei loro sottotipi, senza alterare il comportamento del programma che li utilizza.
IInterface segregation principle o principio di segregazione delle interfacceISPSarebbero preferibili più interfacce specifiche, che una singola generica.
DDependency inversion principle o principio di inversione delle dipendenzeDIPUna classe dovrebbe dipendere dalle astrazioni, non da classi concrete.

Note

  1. ↑ Agile Software Development: Principles, Patterns and Practices. Pearson Education. 2002. ISBN 0-13-597444-5
  2. ↑ The 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)
  3. ↑ riflessionidiunnerd.wordpress.com, https://riflessionidiunnerd.wordpress.com/2018/11/29/i-principi-solid/#more-14.

Voci correlate

Concetti base e argomenti correlati

Principi di sviluppo e di design