Importance of Software Design

Ishan Liyanage
3 min readSep 3, 2021
Photo by Markus Spiske on Unsplash

There is a clear difference between Software Architecture and the Software Design. As the developers, we should know little bit about the software architecture and lot more on Software Design.

Software architecture will be defined by usually experienced developers who have good knowledge on existing implementation, and have understanding on the existing issues. It will convert software quality attributes such as scalability, manageability, modularity, extensibility, testability etc.. in to solutions which will meet technical and business requirements.

This is why different architecture patterns like Microservices, Even-Driven, Server-less etc.. exist to solve common architectural problems.

Just because we follow good software architecture patterns like Microservices, Event-Driven does not mean our software design and implementation come out good. We have to adapt good design principals and patterns in our implementations too.

Here I want to emphasis on the Software Design which we tend to forget as we go and we only focus on high level Software Architecture.

Software Design

This will focus on the code level design and evaluate against SOLID principals. I will not write about SOLID as there are tons of articles about it.

  1. S- Single Responsibility Principal
  2. O- Open Closed Principal
  3. L- Liskov Substitute Principal
  4. I- Interface Segregation Principal
  5. D- Dependency Inversion Principal

This is where design patterns comes in to picture. There are dozens of existing design concepts for most of the problems we have. We do not need to reinvent the wheel. We can model our problem and decide what pattern to use when. It is not straight forward as it says sometimes, there are pros and cons of different patterns, but choosing the correct pattern is the key. You may refer wikipedia’s “classification and list” section.

Ishan Liyanage

Passionate Technical Lead, Senior Software Developer and free and open source software advocate. Based in Singapore.