En ingeniería de software, SOLID (Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion) es un acrónimo mnemónico introducido por Robert C. Martin[1]​ a comienzos de la década del 2000[2]​ que representa cinco principios básicos de la programación orientada a objetos y el diseño. Cuando estos principios se aplican en conjunto es más probable que un desarrollador cree un sistema que sea fácil de mantener y ampliar con el tiempo.[3]​ Los principios SOLID son guías que pueden ser aplicadas en el desarrollo de software para eliminar malos diseños provocando que el programador tenga que refactorizar el código fuente hasta que sea legible y extensible. Puede ser utilizado con el desarrollo guiado por pruebas, y forma parte de la estrategia global del desarrollo ágil de software y desarrollo adaptativo de software.

Resumen

editar
Inicial Acrónimo Concepto
S SRP
Principio de responsabilidad única (Single responsibility principle)
la noción de que un objeto solo debería tener una única razón para cambiar.
O OCP
Principio de abierto/cerrado (Open/closed principle)
la noción de que las “entidades de software … deben estar abiertas para su extensión, pero cerradas para su modificación”.
L LSP
Principio de sustitución de Liskov (Liskov substitution principle)
la noción de que los “objetos de un programa deberían ser reemplazables por instancias de sus subtipos sin alterar el correcto funcionamiento del programa”. Véase también diseño por contrato.
I ISP
Principio de segregación de la interfaz (Interface segregation principle)
la noción de que “muchas interfaces cliente específicas son mejores que una interfaz de propósito general”.[4]
D DIP
Principio de inversión de la dependencia (Dependency inversion principle)
la noción de que se debe “depender de abstracciones, no depender de implementaciones”.[4]
La Inyección de Dependencias es uno de los métodos que siguen este principio.

Véase también

editar

Conceptos básicos y temas relacionados

editar

Principios de diseño y desarrollo

editar

Referencias

editar
  1. Uncle Bob (2 de diciembre de 2009). «Getting a SOLID start.» (en inglés). Consultado el 14 de julio de 2021. 
  2. «SOLID Object-Oriented Design» (en inglés). Archivado desde el original el 7 de febrero de 2010. Consultado el 14 de julio de 2021. 
  3. “SOLID Object-Oriented Design” Archivado el 7 de febrero de 2010 en Wayback Machine., Sandi Metz (Duke University), Talk given at the 2009 Gotham Ruby Conference in May, 2009. Last verified 2009-01-15.
  4. a b “Design Principles and Design Patterns” Archivado el 6 de septiembre de 2015 en Wayback Machine., Robert C. Martin (“Uncle Bob”), objectmentor.com. Last verified 2009-01-14.

📚 Artikel Terkait di Wikipedia

Meta-Object Facility

Kerry Raymond, MOF a EMF y Atrás Otra vez. Weaving Executability into Object-Oriented Meta-Languages[2] MOF Soporte para Estructuras Semánticas RFP Petición

Principio de segregación de la interfaz

«David Hayden, Interface-Segregation Principle (ISP) - Principles of Object-Oriented Class Design». Archivado desde el original el 20 de agosto de 2010

XDoclet

interfaces.Account" * * @ejb.value-object * match="*" * * @version 1.5 */ Sitio oficial del proyecto XDoclet Attribute-Oriented Programming with Java 1.5 Datos:

Abas Business Software

Usuario Individual (Individual User Interface)", la "Interfaz de Usuario Estándar Flexible (Standard Flexible User Interface)" y las "Herramientas de ABAS"

Ingeniería de software basada en componentes

Plain Old C++/Java Object (POCO/POJO) Tuberías y filtros Unix sistema operativo Brad J. Cox, Andrew J. Novobilski (1991). Object-Oriented Programming: An

Modelo–vista–controlador

information from user interaction." The DCI Architecture: A New Vision of Object-Oriented Programming Archivado el 29 de septiembre de 2017 en Wayback Machine

XBase++

XBase++ web page Alaska Software SQLExpress for Xbase++ Object-Oriented ODBC and SQL interface for Xbase++ | www.sqlexpress.net Xb2.NET Xbase++ web server

Mediator (patrón de diseño)

Patrones de diseño Gang Of Four Design Patterns. Elements of Reusable Object-Oriented Software - Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides