Software Development Exam  >  Software Development Notes  >  System Design  >  Assignment: System Design

Assignment: System Design | System Design - Software Development PDF Download

Q.1. Which of the following is not a key component of the system design process?
(a) Requirements gathering
(b) Architecture design
(c) Algorithm development
(d) Performance analysis

Ans. (c)

Q.2. Which of the following is an advantage of using a microservices architecture?
(a) Increased scalability
(b) Tighter coupling between components
(c) Centralized control over the entire system
(d) Reduced complexity

Ans. (a)

Q.3. Which of the following is an example of a non-functional requirement in system design?
(a) The system should support a maximum of 1000 concurrent users.
(b) The system should be able to process 100 transactions per second.
(c) The system should have a responsive user interface.
(d) The system should be implemented using Java programming language.

Ans. (c)

Q.4. What is the purpose of a load balancer in system design?
(a) To distribute network traffic evenly across multiple servers
(b) To handle data persistence in a distributed system
(c) To enforce security policies in the system
(d) To manage data storage and retrieval in a database system

Ans. (a)

Q.5. What is the role of a database management system (DBMS) in system design?
(a) To handle user authentication and authorization
(b) To provide a user-friendly interface for system administrators
(c) To manage the storage and retrieval of data in a database
(d) To monitor system performance and generate reports

Ans. (c)

Higher Order Thinking Questions (HOTS)

Q.1. Explain the concept of fault tolerance in system design and provide an example of how it can be achieved.

Fault tolerance in system design refers to the ability of a system to continue functioning in the presence of faults or failures. For example, redundant components and backup systems can be used to achieve fault tolerance. If a critical server fails, another server can take over its workload, ensuring uninterrupted service.

Q.2. Describe the difference between vertical scaling and horizontal scaling in the context of system design. Give an example of when each approach would be suitable.

Vertical scaling involves increasing the resources (e.g., CPU, memory) of a single server to handle higher loads. It is suitable when the system's workload can be handled by a single server, but requires more resources. Horizontal scaling, on the other hand, involves adding more servers to distribute the workload across multiple machines. It is suitable when the system's workload exceeds the capacity of a single server. For example, a website experiencing increased traffic may require horizontal scaling by adding more servers.

Q.3. Discuss the trade-offs between consistency, availability, and partition tolerance in distributed systems. Why is it difficult to achieve all three properties simultaneously?

Consistency, availability, and partition tolerance are the three properties known as the CAP theorem. Achieving all three properties simultaneously in a distributed system is challenging because consistency and availability can be in conflict during network partitions or failures. To ensure availability, systems may sacrifice strong consistency. Similarly, to ensure strong consistency, systems may sacrifice availability during network partitions.

Q.4. What is the role of caching in system design? Discuss the advantages and challenges associated with using caching in a distributed system.

Caching in system design involves storing frequently accessed data in a cache to improve performance. It reduces the need to fetch data from remote resources, such as databases or external APIs. Caching improves response times and reduces the load on the backend systems. However, caching introduces challenges such as cache invalidation, ensuring data consistency, and dealing with cache coherence across multiple cache instances.

Q.5. In the context of system design, what is meant by the term "scalability"? Describe two approaches to achieving scalability in a system.

Scalability in system design refers to the ability of a system to handle increasing workloads by adding resources. Two approaches to achieving scalability are vertical scaling and horizontal scaling. Vertical scaling involves increasing the resources of a single server, such as adding more CPU or memory. Horizontal scaling involves adding more servers to distribute the workload. Vertical scaling is suitable when the workload can be handled by a single server but requires more resources, while horizontal scaling is suitable when the workload exceeds the capacity of a single server.

Fill in the Blanks

Q.1. In the system design process, __________ involves identifying the necessary functionality and constraints of the system.

Ans. Requirements gathering

Q.2. The __________ is a fundamental component of a microservices architecture, responsible for handling a specific business capability.

Ans. Microservice

Q.3. In system design, __________ refers to the ability of a system to recover from failures and continue operating without interruption.

Ans. Fault tolerance

Q.4. __________ scaling involves increasing the resources (e.g., CPU, memory) of a single server to handle higher loads.

Ans. Vertical

Q.5. __________ refers to the process of breaking down a system into smaller, more manageable components.

Ans. Decomposition

True or False

Q.1. True or False: In system design, a monolithic architecture is preferred over a microservices architecture due to its simplicity.

Ans. False

Q.2. True or False: Network latency refers to the amount of time it takes for a packet of data to travel from one point to another in a network.

Ans. True

Q.3. True or False: In a distributed system, eventual consistency guarantees that all replicas will have the same data at all times.

Ans. False

Q.4. True or False: The CAP theorem states that in a distributed system, it is possible to achieve consistency, availability, and partition tolerance simultaneously.

Ans. False

Q.5. True or False: Caching can improve system performance by reducing the need to fetch data from remote resources.

Ans. True

The document Assignment: System Design | System Design - Software Development is a part of the Software Development Course System Design.
All you need of Software Development at this link: Software Development
25 videos|13 docs|2 tests

Top Courses for Software Development

25 videos|13 docs|2 tests
Download as PDF
Explore Courses for Software Development exam

Top Courses for Software Development

Signup for Free!
Signup to see your scores go up within 7 days! Learn & Practice with 1000+ FREE Notes, Videos & Tests.
10M+ students study on EduRev
Related Searches

Summary

,

mock tests for examination

,

MCQs

,

Assignment: System Design | System Design - Software Development

,

ppt

,

pdf

,

Extra Questions

,

Viva Questions

,

past year papers

,

study material

,

Assignment: System Design | System Design - Software Development

,

Objective type Questions

,

Assignment: System Design | System Design - Software Development

,

Sample Paper

,

Important questions

,

shortcuts and tricks

,

Semester Notes

,

Previous Year Questions with Solutions

,

Free

,

video lectures

,

practice quizzes

,

Exam

;