Browse Definitions :
Definition

SOLID (software design principles)

Contributor(s): Matthew Haughn

SOLID is a mnemonic acronym for a set of design principles created for software development in object-oriented languages.

The principles in SOLID are intended to foster simpler, more robust and updatable code from software developers. Each letter in SOLID corresponds to a principle for development:

  • Single responsibility
  • Open/closed
  • Liskov substitution
  • Interface segregation
  • Dependency inversion

The Single responsibility principle, created by Robert C. Martin, states that a class should have one, and only one, reason to change. This principle ensures that any class should have only one function, to help ease updating and limit the possible complications by future changes. The principle can be applied to software components or microservices tools.

The Open/closed principle ensures that software entities be open to extension but closed for modification. Bertrand Meyer is mainly credited with the creation of this principle, which focuses on making the abilities of a class easy to enhance by extension but prevents possible complications that could be brought about by modifying the entity and affecting dependencies of other functions that rely on it.

The Liskov principle stipulates that objects of the same type be replaceable with others from this same category without altering function of the program. Created by Barabara Liskov, this principle ensures that more effective means of performing a task can be switched to without unduly affecting the program or requiring substantial code updates.

The Interface segregation principle stipulates that the application’s interfaces should always be kept smaller and separate from one another. This principle ensures that clients need only familiarize themselves with functionality of methods or interfaces that are used, so they can respectively be updated without one complicating the other. This separation made by layers of abstraction provides space to document functionality while avoiding the coupling of dependencies in code.

The Dependency inversion principle specifies a form of decoupling dependencies in code. In dependency inversion, the dependencies in high-level code that set policies are inverted to the low-level dependency modules. This separates the high-level code from the details of low-level modules.

SOLID software design principles

While ideas for the SOLID principles were developed in 1995 by Robert C. Martin, co-author of the Agile Manifesto, the acronym was coined by Michael Feathers in the early 2000s as a way to remember the concepts. Other popular software development methodologies include Agile, KISS principle, GRASP (General Responsibility Assignment Software Principles) and the DRY principle.

This was last updated in October 2018

Continue Reading About SOLID (software design principles)

Start the conversation

Send me notifications when other members comment.

Please create a username to comment.

-ADS BY GOOGLE

File Extensions and File Formats

Powered by:

SearchCompliance

  • risk management

    Risk management is the process of identifying, assessing and controlling threats to an organization's capital and earnings.

  • compliance as a service (CaaS)

    Compliance as a Service (CaaS) is a cloud service service level agreement (SLA) that specified how a managed service provider (...

  • data protection impact assessment (DPIA)

    A data protection impact assessment (DPIA) is a process designed to help organizations determine how data processing systems, ...

SearchSecurity

  • spyware

    Spyware is a type of malicious software -- or malware -- that is installed on a computing device without the end user's knowledge.

  • application whitelisting

    Application whitelisting is the practice of specifying an index of approved software applications or executable files that are ...

  • botnet

    A botnet is a collection of internet-connected devices, which may include PCs, servers, mobile devices and internet of things ...

SearchHealthIT

SearchDisasterRecovery

  • business continuity plan (BCP)

    A business continuity plan (BCP) is a document that consists of the critical information an organization needs to continue ...

  • disaster recovery team

    A disaster recovery team is a group of individuals focused on planning, implementing, maintaining, auditing and testing an ...

  • cloud insurance

    Cloud insurance is any type of financial or data protection obtained by a cloud service provider. 

SearchStorage

  • DRAM (dynamic random access memory)

    Dynamic random access memory (DRAM) is a type of semiconductor memory that is typically used for the data or program code needed ...

  • RAID 10 (RAID 1+0)

    RAID 10, also known as RAID 1+0, is a RAID configuration that combines disk mirroring and disk striping to protect data.

  • PCIe SSD (PCIe solid-state drive)

    A PCIe SSD (PCIe solid-state drive) is a high-speed expansion card that attaches a computer to its peripherals.

Close