Objectives
- The learners demonstrate an understanding of principles and concepts in developing ASP.NET MVC 5 Web applications.
- The learners independently develop ASP.NET MVC 5 Web applications
- Identify required tasks to complete the feature based on the feature list and established design approach TLE_ICTP.NET 11- 12DAMWAIc-h35
- Explain the importance and components of a Data Flow Diagram (DFD) in system development. Appreciate the significance of structured data flow representation in software design. Create a simple Data Flow Diagram for a given system scenario.
Why Learn System Design?
In any development process, be it Software or any other tech, the most important stage is Design. Without the designing phase, you cannot jump to the implementation or the testing part. The same is the case with the System as well. Systems Design not only is a vital step in the development of the system but also provides the backbone to handle exceptional scenarios because it represents the business logic of software. From the above SDLC steps, it is clear that system design acts as a backbone because no matter how good the coding part is executed, it, later on, becomes irrelevant if the corresponding design is not good. So here we get crucial vital information as to why it is been asked in every Product Based Company.
FAANG: Facebook, Apple, Amazon, Netflix, Google.
Library Management System Example
This example illustrates how data moves through a system (Borrowing process, Membership process, Returning process).
How Data Flows Between Systems?
DATA FLOW DIAGRAMS OR DFDS IS DEFINED AS A GRAPHICAL REPRESENTATION OF THE FLOW OF DATA THROUGH INFORMATION. DFD IS DESIGNED TO SHOW HOW A SYSTEM IS DIVIDED INTO SMALLER PORTIONS AND TO HIGHLIGHT THE FLOW OF DATA BETWEEN THESE PARTS. BELOW IS AN EXAMPLE TO DEMONSTRATE THE DATA FLOW DIAGRAM'S BASIC STRUCTURE:
| Symbol | Meaning |
|---|---|
| Square | Source/Destination |
| Arrow | Data Flow |
| Circle | Process |
| Rectangle | Data Store |
Advantages of System Design
- Lower design costs through reusable components.
- Streamlined development using SDLC frameworks.
- Consistency for programmers, reducing the likelihood of errors.
- Minimized need for redundant efforts.
Components of Systems Design
1. Load Balancers, 2. Key Value Stores, 3. Blob Storage, 4. Rate Limiters, 5. Monitoring, 6. Messaging Queues, 7. ID Generators, 8. Search, 9. Logging, 10. Task Schedulers.
System Development Life Cycle (SDLC)
| Stage | Description |
|---|---|
| Planning | Define project scope and resources. |
| Feasibility | Assess practicality. |
| Design | Develop blueprints and architecture. |
| Implementation | Transform design into system. |
System Architecture
Types include: Client-Server, Event-Driven, Microkernel, and Microservices architecture patterns.
Modularity and Interfaces
Modularity: Breaking down complex products into smaller independent components (like a car engine).
Interfaces: Points where users interact with the system (navigation, data forms).
Evolution/Upgrade/Scaling
Vertical Scaling: Upgrading specs (RAM/Disk) of one machine.
Horizontal Scaling: Connecting multiple systems together to scale up.