[TOC]
The SOLID principles are five essential guidelines that enhance software design, making code more maintainable and scalable.
DRY(Don't Repeat Yourself) is a software development principle that says the same logic or knowledge should not be written multiple times in a system.
The KISS principle, which stands for "Keep It Simple, Stupid", is a design principle that suggests simplicity should be a key goal in design, development, and other fields, such as engineering, software development, and user interface design.
"YAGNI" stands for "You Aren't Gonna Need It". YAGNI is a software development principle that advises developers to implement only what is required for current needs.
Functional requirements are the requirements that the end user specifically demands as basic functionalities that the system should offer. All these functionalities need to be necessarily included into the system as part of the contract.
Non-functional Requirements are the quality constraints that the system must satisfy according to the project contract. The priority or extent to which these factors are implemented varies from one project to another. They are also called non-behavioral requirements. For example: portability, maintainability, reliability, scalability, security, etc.
These are basically "nice to have" requirements that might be out of the scope of the system.
Software Cost Estimation is a systematic process used to forecast the amount of effort (person-hours or person-months), duration(calendar time), and financial cost required to develop, deploy, and maintain a software product.
High Level Design(HLD) is an initial step in the development of applications where the overall structure of a system is planned.
A diagram representing each design aspect is include in the HLD (which is based on business requirements and anticipated results):
- It contains description of hardware, software interfaces, and also user interfaces;
- It is also known as macro level/system, design;
- It is created by solution architect;
- The workflow of the user's typical process is detailed in the HLD, along with performance specifications.
TODO
TODO
TODO
TODO
[1] Ian Sommerville. SOFTWARE ENGINEERING . 9th Edition
[2] Cracking the System Design Interview Round
[3] Difference between High Level Design(HLD) and Low Level Design(LLD)
[4] Data Modeling in System Design
[5] What is Low Level Design or LLD?
[6] System Design Introduction - LLD & HLD
[7] 100+ Best System Design Resources for Interview and Learning
[8] EP56: System Design Blueprint: The Ultimate Guide
[9] Top Strategies to Reduce Latency
[10] EP160: Top 20 System Design Concepts You Should Know
[11] EP186: Latency vs. Throughput
[12] EP175: What is the SOLID Principle?
[13] What are some of the most popular versioning strategies?






















