Software Architecture Design / Good Software Design - Scalable, secure, well-tested,
fast and Easy to use software solutions
Software must be designed in a modular manner for scalability. Doing software application architecture design is an ART. It is equivalent to making the blue print of a house prior to its construction.
Making a scalable web architecture is an essential activity that must be done in the SDLC before coding. This should be broken into two steps:
- Making the HLD (High Level Software Architecture Design)
- Making the LLD (Low level software Architecture Design)
For a software architecture design to be good, it must adhere to the following principles:
In order to ensure that sofware meets all good design principles,
we perform the following activities during our software design phase:
- Make HLD and LLD documents
- Select the right technology frameworks, open source toolkits and libraries (for frontend and backend)
- Identify pros and cons and build for failure
- Shortlist the right algorithms, data structures for implementation
- Make the DB schema and build for minimal joins
- Make data flow diagrams, class diagrams, sequence diagrams
- Adopt OOP principles to make modular, re-usable code
- Advocate usage of design patterns, and code-review for the same
- Allow for seam-less integration and API communication between external systems
- Complex technical workflows and features are discussed and components identified
How Software Architecture Design Can Helps
The software architecture design activity helps us reduce coding timelines and costs.
By making detailed design documents, we are able to get the following benefits:
- What would have taken 10 lines to code can now be done in 3
- Instead of re-writing some functionality, we now have libraries or open source frameworks for the
same which have been identified in this LLD activity to solve our need
- Complex workflows have been discussed thereby leading to 0 Over-estimation in man hours of development
- We are able to write modular code in the form of re-usable classes rather than copy-pasting code.
This helps the product in the long-run.