Browse Definitions :
Definition

SOLID (software design principles)

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)

SearchCompliance
  • pure risk

    Pure risk refers to risks that are beyond human control and result in a loss or no loss with no possibility of financial gain.

  • risk reporting

    Risk reporting is a method of identifying risks tied to or potentially impacting an organization's business processes.

  • risk profile

    A risk profile is a quantitative analysis of the types of threats an organization, asset, project or individual faces.

SearchSecurity
  • script kiddie

    Script kiddie is a derogative term that computer hackers coined to refer to immature, but often just as dangerous, exploiters of ...

  • cipher

    In cryptography, a cipher is an algorithm for encrypting and decrypting data.

  • What is risk analysis?

    Risk analysis is the process of identifying and analyzing potential issues that could negatively impact key business initiatives ...

SearchHealthIT
SearchDisasterRecovery
  • What is risk mitigation?

    Risk mitigation is a strategy to prepare for and lessen the effects of threats faced by a business.

  • fault-tolerant

    Fault-tolerant technology is a capability of a computer system, electronic system or network to deliver uninterrupted service, ...

  • synchronous replication

    Synchronous replication is the process of copying data over a storage area network, local area network or wide area network so ...

SearchStorage
  • gigabyte (GB)

    A gigabyte (GB) -- pronounced with two hard Gs -- is a unit of data storage capacity that is roughly equivalent to 1 billion ...

  • MRAM (magnetoresistive random access memory)

    MRAM (magnetoresistive random access memory) is a method of storing data bits using magnetic states instead of the electrical ...

  • storage volume

    A storage volume is an identifiable unit of data storage. It can be a removable hard disk, but it does not have to be a unit that...

Close