Difference between Software Design and Software Architecture

30 Aug

Software Design and Software Architecture are the two most important phases of the Software Development Life Cycle. Both sounds confusing sometimes, let’s understand the differences clearly.

Differences:

TopicSoftware ArchitectureSoftware Design
It is“What” we are building“How” we are building
DefinitionSoftware architecture refers to the fundamental structures of a software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements and relations.Software design is the process of defining software methods, functions, objects, and the overall structure and interaction of your code so that the resulting functionality will satisfy your users requirements.
LevelStructure – focuses on abstraction which can be used by multiple designsImplementation – plan to implement the architecture
ExampleThe architecture of a building contains structure of rooms, staircases, basic services like water, heating, ventilation, etc.The design of a building contains interior design, flooring, interior materials, decorations, furnitures, and additional services, etc.
IdentifiesComponents and elements that needs to be included in the software.It focuses on how the software will be built.
Is AboutSoftware architecture is about overall structure of the software and where various software components fits into. It’s about what we want to do.Software design is about individual software components and modules. It’s about how we want to achieve that.
CharacteristicsOverall system setup – includes structure of the software you want to build
Fundamental elements – core functionalities and core elements
High-level structures – which describes availability, scale, performance, reliability, fault-tolerance, monitoring, maintenance, etc.
What is being built – address the needs and requirements of stackholders
Correctness – as per the software requirements
Efficiency – efficient and useful as per consumer expectation
Understability – easy to understand and easy to communicate
Maintainability – easy to maintain
ArtifactsDocumentation, diagrams, charts or anything else which helps stackholders communication.Design specification documents, flow charts, diagrams, known limitations, design model, wireframes, UML diagrams, etc.
PatternsServerless architecture, Event-driven architecture, Microservices Architecture, SOA, MVC, 3-tier, etc.GOF (Gand of Four) patterns, SOLID principles, Read more design patterns.

 

Similarities:

There are few aspects where Software Design and Software Architecture share. That’s the point where both the terminologies confuses a lot. It’s a two separate stages in the software development process, which usually tend to overlap.

  • They both concerned with the interactions and relationships of various components and elements in the Software
  • Software design should be aligned with the Software architecture
  • Software design uses the Software architecture

 

Software architecture and design is two sides of a coin, that depends on each other for completeness and success.



Leave a Reply

Your email address will not be published. Required fields are marked *