Solid Software Design
Upcoming SlideShare
Loading in...5

Solid Software Design



SOLID Software Design Principles as outlined by Uncle Bob. Presented to software artists.

SOLID Software Design Principles as outlined by Uncle Bob. Presented to software artists.



Total Views
Views on SlideShare
Embed Views



2 Embeds 11 10 1



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Solid Software Design Solid Software Design Presentation Transcript

  • SOLID Software Design Abbas Raza
  • Software Design
    • “ […] the design of a software project is documented primarily by its source code .” Robert C. Martin
  • Software Design
    • Code is Design - Seminal Paper by Jack Reeves
  • What is Software Design
    • The source code is the design
  • The root cause
    • Abandoned code rots
  • The effect
    • The rotten code smells
  • What is a Design Smell
    • A design smell is a symptom of the violation of design principles.
    • How does it smell?
  • Rigidity
    • The tendency for software to be difficult to change, even in simple ways. The design is hard to change.
  • Fragility
    • The tendency of a program to break in many places when a single change is made. The design is easy to break.
  • Immobility
    • It is hard to disentangle the system into components that can be reused in other systems. The design is hard to reuse.
  • Viscosity - Software
    • Design -preserving methods vs. Hacks
  • Viscosity - Environment
    • Slow and inefficient development environment like very long compile times, hours to check-in, several minutes to deploy
  • Needless Complexity
    • Elements not currently needed in the design. Overdesign.
  • Needless Repetition
    • The design contains repeating structures that could be unified under a single abstraction.
  • Opacity
    • The tendency of a module to be difficult to understand.
    • SOLID Design Principles help fix the smells.
    • A class should have one, and only one, reason to change.
    • You should be able to extend a classes behavior, without modifying it.
    • Derived classes must be substitutable for their base classes.
    • Make fine grained interfaces that are client specific.
    • Depend on abstractions, not on concretions.
  • References
    • Agile Principles, Practices, and Patterns by Robert Martin
    • SOLID Posters from
    • Thank You!!