B) To transform requirements into a
blueprint for implementation
C) To eliminate all testing
requirements
D) To minimize the number of modules
✓ Correct Answer: B
Software design transforms the analysis model (requirements) into a design model that serves as
a blueprint for constructing the software. It bridges the gap between what needs to be done and
how it will be done.
Question 2 EASY
Which of the following is NOT one of the fundamental design concepts?
A) Abstraction
B) Refinement
C) Compilation
D) Architecture
✓ Correct Answer: C
The fundamental design concepts include: Abstraction, Architecture, Patterns, Refinement,
Modularity, and Information Hiding. Compilation is a programming/build process, not a design
concept.
Question 3 MEDIUM
Abstraction in software design refers to:
A) Removing all details from a design
B) Different levels of detail in
describing design, from high-level overview to low-level details
C) The process of writing abstract
classes only
D) Making code as complex as possible
✓ Correct Answer: B
Abstraction means describing design at different levels of detail. You start with high-level
abstractions (conceptual) and progressively add more detail through refinement until you reach
implementation-level specifications.
Question 4 MEDIUM
Stepwise refinement is best described as:
A) A bottom-up design strategy
B) A top-down design strategy that
decomposes from high-level abstractions to detailed levels
C) A testing methodology
D) A type of architectural pattern
✓ Correct Answer: B
Stepwise refinement is a top-down design strategy. You begin with a high-level statement of
function and progressively add detail with each refinement until you reach programming language
statements. Example: "open door" → "walk to door; reach for knob; turn knob; pull door"
Question 5 EASY
The design model consists of which four components?
A) Data, Architectural, Interface,
Component-level
B) Requirements, Testing, Deployment,
Maintenance
C) Frontend, Backend, Database, API
D) Analysis, Design, Implementation,
Testing
✓ Correct Answer: A
The four design models are:
1. Data/Class Design - transforms analysis classes into design classes and data structures
2. Architectural Design - defines relationships between major structural elements
3. Interface Design - defines communication between software elements, hardware, and users
4. Component-level Design - transforms structural elements into procedural descriptions
Question 6 MEDIUM
Which design principle states that modules should perform a single task with minimal interaction?
A) Separation of concerns
B) Functional independence
C) Abstraction
D) Polymorphism
✓ Correct Answer: B
Functional independence means developing modules with "single-minded" function and minimized
interaction with other modules. It's achieved through high cohesion (single task focus) and low
coupling (minimal dependencies).
Question 7 EASY
True or False: Information hiding discourages the use of global data and leads to encapsulation.
A) True
B) False
✓ Correct Answer: A (True)
Information hiding involves controlled interfaces that hide internal details (algorithms, data
structures, resource allocation policies). It discourages global data, reduces side effects,
limits global impact of local changes, and leads to encapsulation - all attributes of
high-quality design.
Question 8 MEDIUM
Which best practice involves grouping highly coupled data and functions together?
A) Refactoring
B) Modularity
C) Hiding
D) Separation of concerns
✓ Correct Answer: B
Modularity involves grouping highly coupled data and functions into modules (packages,
libraries). This is different from separation of concerns (subdividing problems) and hiding
(controlled interfaces).
Question 9 HARD
A quality design should exhibit all of the following EXCEPT:
A) An architecture created using
recognizable patterns
B) Modular partitioning into elements
or subsystems
C) Maximum coupling between all
components
D) Distinct representations of data,
architecture, interfaces, and components
✓ Correct Answer: C
Quality designs aim for LOW coupling (not maximum). The quality guidelines state designs should:
use recognizable patterns, be modular, have distinct representations, lead to appropriate data
structures, and be implementable in an evolutionary fashion.
Question 10 MEDIUM
According to the step-by-step design guide, what is the FIRST step?
A) Select an architectural style
B) Examine the information domain
model and design appropriate data structures
C) Partition the analysis model into
subsystems
D) Design the user interface
✓ Correct Answer: B
The design process starts with examining the information domain model and designing appropriate
data structures for data objects and their attributes. Then you select architectural styles,
partition into subsystems, and proceed with other design activities.
Section 2: Coupling and Cohesion (8 Questions)
Question 11 EASY
Cohesion is:
A) An inter-module concept measuring
interdependence
B) An intra-module concept measuring
functional strength
C) The number of lines of code in a
module
D) A testing metric
✓ Correct Answer: B
Cohesion is an INTRA-module concept - it measures the relative functional strength within a
single module. A cohesive module performs a single task (ideally does just one thing). Coupling,
in contrast, is an INTER-module concept measuring interdependence between modules.
Question 12 EASY
Coupling is:
A) An indication of the relative
interdependence among modules
B) The same as cohesion
C) Always desirable in high amounts
D) Only measured at runtime
✓ Correct Answer: A
Coupling indicates relative interdependence among modules. It depends on interface complexity,
entry/reference points, and data passing across interfaces. Low coupling is desirable.
Question 13 MEDIUM
In good software design, you should strive for:
A) High cohesion and high coupling
B) Low cohesion and low coupling
C) High cohesion and low coupling
D) Low cohesion and high coupling
✓ Correct Answer: C
High cohesion = single-minded modules that focus on one task Low coupling = minimal interaction between modules
This combination makes software easier to understand and less prone to ripple effects when
errors occur.
Question 14 MEDIUM
What is the "ripple effect" in software design?
A) When code runs faster over time
B) When errors at one location
propagate throughout the system
C) When modules execute in sequence
D) A type of design pattern
✓ Correct Answer: B
The ripple effect occurs when errors or changes at one location propagate throughout the system
due to high coupling. Low coupling reduces this effect, making systems more maintainable.
Question 15 HARD
A module that performs multiple unrelated tasks has:
A) High cohesion
B) Low cohesion
C) Perfect functional independence
D) Optimal modularity
✓ Correct Answer: B
A module performing multiple unrelated tasks has LOW cohesion because it lacks
single-mindedness. High cohesion means a module should ideally do just one thing. Low cohesion
makes modules harder to understand, maintain, and reuse.
Question 16 HARD
Scenario: Module A calls Module B, Module C, and Module D. Module B calls
Module E and Module F. All modules share a global configuration object that any module can
modify at any time. What design issues are present?
A) Only high cohesion
B) Only high coupling due to the
global object
C) High coupling and violation of
information hiding
D) This is an ideal design
✓ Correct Answer: C
This design has:
• High coupling: Modules depend on shared global state
• Violation of information hiding: The global object is accessible
everywhere
Problems: Changes to the global object can cause ripple effects; difficult to track which module
modified what; prone to side effects. Better design: Use controlled interfaces and pass only
necessary data.
Question 17 MEDIUM
True or False: Functional independence is achieved by developing modules with single-minded function
and maximized interaction with other modules.
A) True
B) False
✓ Correct Answer: B (False)
Functional independence requires single-minded function with MINIMIZED (not maximized)
interaction with other modules. It's the key to good design and achieved through high cohesion
and low coupling.
Question 18 MEDIUM
Cohesion is a natural extension of which design principle?
A) Abstraction
B) Information hiding
C) Refactoring
D) Separation of concerns
✓ Correct Answer: B
Cohesion is a natural extension of information hiding. A cohesive module performs a single task
requiring little interaction with other components - this aligns with hiding internal details
and providing controlled interfaces.
Section 3: Architectural Patterns (10 Questions)
Question 19 EASY
An architectural pattern is:
A) A specific piece of code to copy
B) A stylized description of good
design practice tested in different environments
C) Only used for web applications
D) A testing framework
✓ Correct Answer: B
Architectural patterns are stylized descriptions of good design practice that have been tried
and tested in different environments. They're a means of representing, sharing, and reusing
design knowledge. They should include information about when they are and are not useful.
Question 20 MEDIUM
The MVC (Model-View-Controller) pattern separates:
A) Frontend and backend only
B) Presentation and interaction from
system data
C) Testing from development
D) Users from developers
✓ Correct Answer: B
MVC separates presentation and interaction from system data:
• Model: Manages system data and operations
• View: Defines how data is presented to the user
• Controller: Manages user interaction (key presses, mouse clicks) and passes
them to View and Model
Question 21 MEDIUM
When should the MVC pattern be used?
A) Only for mobile applications
B) When there are multiple ways to
view and interact with data, or when future requirements are unknown
C) Only when data never changes
D) Never, it's outdated
✓ Correct Answer: B
MVC is used when:
• There are multiple ways to view and interact with data
• Future requirements for interaction and presentation are unknown
Advantages: Data can change independently of representation; supports presentation of same data
in different ways; changes in one representation shown in all of them.
Question 22 EASY
A layered architecture typically has how many layers?
A) Always exactly 2
B) Multiple layers like User
Interface, Authentication, Business Logic, System Support
C) Always exactly 10
D) No specific structure
✓ Correct Answer: B
A generic layered architecture has multiple layers such as:
1. User interface (top)
2. User interface management / Authentication and authorization
3. Core business logic / Application functionality / System utilities
4. System support (OS, database, etc.) (bottom)
Modern example: Presentation Layer (HTML/CSS/JS), Application Layer (Java/Python/C#), Data Layer
(MySQL/Oracle)
Question 23 MEDIUM
The Data-Centered/Repository Architecture is best used when:
A) There is no need for data storage
B) A central issue is storage,
representation, management, and retrieval of large amounts of related persistent data
C) Clients must be tightly coupled
D) Only for real-time systems
✓ Correct Answer: B
Repository architecture characteristics:
• Goal: Integrating the data
• Clients are relatively independent of each other
• Data store is independent of clients
• Best when storage, representation, management, and retrieval of large amounts of persistent
data is central
Note: Becomes client/server if clients are modeled as independent processes
Question 24 HARD
What is a disadvantage of the MVC pattern?
A) Cannot handle multiple views
B) Can involve additional code and
code complexity when data model and interactions are simple
C) Data and presentation are too
tightly coupled
D) It has no disadvantages
✓ Correct Answer: B
While MVC has many advantages (data independence, multiple views, etc.), its disadvantage is
that it can involve additional code and code complexity when the data model and interactions are
simple. For simple applications, MVC might be overkill.
Question 25 HARD
Scenario: You're designing a university course management system where:
- Students need to view course catalogs in list view or calendar view
- Professors need to update course materials
- Admin staff need reports in different formats (PDF, Excel)
- Future requirements may include a mobile app
Which pattern is MOST appropriate?
A) Repository pattern only
B) MVC pattern because there are
multiple views, different interactions, and unknown future requirements
C) No pattern needed
D) Layered architecture only
✓ Correct Answer: B
MVC is ideal here because:
• Multiple ways to view data (list, calendar, reports in different formats)
• Different user interactions (students view, professors update, admins report)
• Unknown future requirements (mobile app)
• Allows same data to be presented differently
• Changes in one view automatically reflected in others
Note: Could also use layered architecture in combination with MVC
Question 26 MEDIUM
True or False: Architectural patterns should only include information about when they are useful,
not when they are not useful.
A) True
B) False
✓ Correct Answer: B (False)
Patterns should include information about BOTH when they are useful AND when they are not
useful. This helps developers make informed decisions about pattern selection and avoid misusing
patterns in inappropriate contexts.
Question 27 MEDIUM
In a Repository architecture, what happens when clients are modeled as independent processes?
A) The architecture becomes invalid
B) It becomes a client/server
architecture
C) It becomes MVC
D) Nothing changes
✓ Correct Answer: B
When clients in a Repository architecture are modeled as independent processes, the style
becomes client/server. The repository (data store) acts as the server, and the clients access it
as independent processes.
Question 28 EASY
Which layer in a generic layered architecture contains the operating system and database?
A) User interface layer
B) Business logic layer
C) System support layer
D) Presentation layer
✓ Correct Answer: C
The system support layer (bottom layer) contains the OS, database, and other system-level
support. The layers from top to bottom are: User Interface → Authentication/Authorization →
Business Logic → System Support.
Section 4: Application and Synthesis (7 Questions)
Question 29 HARD
Application Problem:
You're designing an e-commerce platform. Consider these requirements:
1. Product catalog needs to be viewed as grid, list, or comparison tables
2. Same product data shown in search results, cart, and order history
3. Admin and customers have different interfaces
4. Future: voice interface and VR shopping planned
5. Large inventory database with frequent updates
What combination of patterns/principles should you use?
A) Only MVC
B) Only Repository
C) MVC for presentation flexibility +
Repository for data management + Layered architecture for organization
D) No patterns needed, just write code
✓ Correct Answer: C
Step-by-step reasoning:
1. MVC needed because: Multiple views (grid/list/comparison/cart), different
interactions (customer vs admin), unknown future interfaces (voice, VR)
2. Repository needed because: Large inventory database, frequent updates, need
for data integration and management
3. Layered architecture for: Separation of presentation (HTML/JS), business
logic (pricing/inventory), and data access
Benefits:
• MVC: Same product data shown in multiple views automatically
• Repository: Centralized data management, clients (views) independent
• Layers: Clear separation of concerns, easier maintenance
• High cohesion: Each layer/component has focused responsibility
• Low coupling: Changes in one layer don't ripple everywhere
Question 30 HARD
Code Analysis:
Examine this module structure:
Module UserManager {
function getUserById(id) { /* DB query */ }
function validateUser(user) { /* validation */ }
function sendEmail(user, subject, body) { /* email */ }
function generateReport() { /* reporting */ }
function calculateShipping(order) { /* shipping */ }
function updateInventory(product) { /* inventory */ }
}
What design principle violations exist?
A) High cohesion achieved, good design
B) Low cohesion - module does too many
unrelated things
C) Only violates information hiding
D) Perfect functional independence
✓ Correct Answer: B
Violations identified:
1. LOW COHESION: Module mixes user management, email, reporting, shipping, and
inventory - these are unrelated concerns
2. Lacks functional independence: Not single-minded
3. Violates separation of concerns
Now each module has high cohesion (single purpose) and low coupling (independent).
Question 31 HARD
Design Decision:
Your team debates two designs for a hospital patient records system:
Design A: All patient data operations (read, write, update, search) are in a
single 5000-line PatientManager class. It handles database, validation, notifications, and UI
updates.
Design B: Separate classes for PatientRepository (DB), PatientValidator
(validation), NotificationService (alerts), PatientViewController (UI). They communicate through
defined interfaces.
Analyze which design is better and why.
A) Design A - simpler with everything
in one place
B) Design B - exhibits high cohesion,
low coupling, modularity, and separation of concerns
C) Both are equally good
D) Design A - has better performance
✓ Correct Answer: B
Design A problems:
✗ LOW cohesion - does too many things
✗ HIGH coupling - everything depends on everything
✗ Hard to test - can't test components independently
✗ Prone to ripple effects - changes cascade
✗ Difficult maintenance - 5000 lines to understand
✗ No reusability - can't use parts independently
Design B advantages:
✓ HIGH cohesion - each class has single responsibility
✓ LOW coupling - defined interfaces only
✓ Modularity - clear separation
✓ Information hiding - internal details hidden
✓ Functional independence achieved
✓ Easy testing - test each component separately
✓ Reusability - NotificationService could be used elsewhere
✓ Maintainability - change PatientValidator without affecting DB code
✓ Follows separation of concerns
Example change scenario:
If validation rules change: Design A requires changes in 5000-line class; Design B only changes
PatientValidator.
Question 32 MEDIUM
Which of the following demonstrates proper information hiding?
A) All class variables are public
B) Internal algorithms and data
structures are hidden behind controlled interfaces
C) All methods are exposed to all
clients
D) Using global variables throughout
the system
✓ Correct Answer: B
Information hiding means internal details (algorithms, data structures, external interface
details, resource allocation policies) are hidden behind controlled interfaces. This reduces
side effects, limits global impact of local decisions, and leads to encapsulation.
Question 33 MEDIUM
Refactoring is best described as:
A) Adding new features to code
B) A reorganization technique that
simplifies the design
C) Deleting all old code
D) Writing documentation
✓ Correct Answer: B
Refactoring is a reorganization technique that simplifies the design without changing external
behavior. It improves code structure, readability, and maintainability. Often used to improve
cohesion and reduce coupling.
Question 34 HARD
Pattern Selection Challenge:
For each system, identify the MOST appropriate primary pattern:
System 1: Financial trading platform with real-time stock prices shown in: line charts,
candlestick charts, tables, mobile app, and future AR glasses view
System 2: University library with 2 million books, journals, and digital media that needs
centralized cataloging, multiple search capabilities, and independent access by students,
faculty, and public
System 3: Operating system with clear separation between: user applications, system services,
kernel services, and hardware interface
A) All should use MVC
B) System 1: MVC, System 2:
Repository, System 3: Layered
C) All should use Repository
D) System 1: Layered, System 2: MVC,
System 3: Repository
✓ Correct Answer: B
System 1 → MVC:
• Multiple views of same data (charts, tables, mobile, AR)
• Real-time updates need to reflect in all views
• Different interaction methods
• Unknown future interfaces (AR)
System 2 → Repository:
• Central issue: storage/management of 2M+ items
• Clients (students/faculty/public) are independent
• Need for data integration
• Centralized cataloging system
System 3 → Layered:
• Clear hierarchical separation
• Each layer builds on layer below
• Applications → Services → Kernel → Hardware
• Natural abstraction levels
Note: Real systems often combine patterns (e.g., System 1 could also use Repository for price
data storage).
Question 35 HARD
Comprehensive Design Analysis:
Review this design for a social media platform:
• PostManager handles: creating posts, storing posts, validating content, sending notifications,
generating feeds, updating UI, handling images, managing comments
• All modules share a global "currentUser" object that any module can read/modify
• UI code directly accesses database
• Feed generation algorithm exposed in public methods
Identify ALL design principle violations and suggest improvements.
A) This is a good design
B) Only low cohesion is a problem
C) Violates multiple principles: low
cohesion, high coupling, poor information hiding, lack of separation of concerns
D) Only violates information hiding
✓ Correct Answer: C
Violations Identified:
1. LOW COHESION:
PostManager does 8 unrelated things (posts, validation, notifications, feeds, UI, images,
comments). Violates single responsibility.
2. HIGH COUPLING:
• Global "currentUser" creates dependencies everywhere
• UI directly accessing database creates tight coupling
• Changes ripple through entire system
3. POOR INFORMATION HIDING:
• Feed algorithm exposed publicly (should be internal)
• Database structure exposed to UI
• No controlled interfaces
4. LACKS SEPARATION OF CONCERNS
5. NO MODULARITY
Improved Design:
// HIGH COHESION - Each module has one job
PostRepository {
createPost()
getPost()
updatePost()
}
ContentValidator {
validatePost()
filterContent()
}
NotificationService {
sendNotification()
}
FeedGenerator {
generateFeed() // Algorithm hidden
}
ImageProcessor {
uploadImage()
resizeImage()
}
CommentManager {
addComment()
getComments()
}
// LOW COUPLING - Use MVC pattern
Model: PostRepository, User data
View: UI components
Controller: Handles user input, passes to Model
// INFORMATION HIDING
- Feed algorithm private
- UI uses Repository interface, not direct DB
- Pass User object as parameter, not global
// LAYERED ARCHITECTURE
Presentation → Business Logic → Data Access
Benefits:
✓ Each module focused on single task
✓ Changes isolated - modify FeedGenerator without affecting PostRepository
✓ Testable independently
✓ Reusable components
✓ No ripple effects
✓ Clear interfaces
✓ Maintainable long-term