📖 Scenario: You are part of a software development team designing a simple library management system. To keep the system easy to maintain and understand, you need to organize the code into parts that are well connected internally but loosely connected to each other.
🎯 Goal: Build a simple example that shows how to organize code with high cohesion and low coupling by defining modules and their interactions.
📋 What You'll Learn
Create a dictionary representing modules and their responsibilities
Add a variable to represent the coupling level between modules
Write a loop to identify modules with high cohesion
Add a final summary statement about the system's design quality
💡 Why This Matters
🌍 Real World
Software developers organize code into modules that work well internally (high cohesion) but depend little on others (low coupling) to make programs easier to maintain and update.
💼 Career
Understanding coupling and cohesion helps software engineers design clean, modular systems that reduce bugs and simplify teamwork.
Progress0 / 4 steps
1
Create the modules dictionary
Create a dictionary called modules with these exact entries: 'UserManagement': 'Handles user registration and login', 'BookCatalog': 'Manages book listings and details', 'LoanProcessing': 'Processes book loans and returns', 'Notification': 'Sends alerts and reminders'.
Software Engineering
Hint
Use a dictionary with module names as keys and their responsibilities as values.
2
Add coupling level variable
Add a variable called coupling_level and set it to the string 'Low' to represent the desired low coupling between modules.
Software Engineering
Hint
Set a simple string variable to show coupling is low.
3
Identify highly cohesive modules
Write a for loop using variables module and responsibility to iterate over modules.items(). Inside the loop, create a condition that checks if the word 'Handles' is in responsibility. If true, add the module name to a list called high_cohesion_modules. Initialize high_cohesion_modules as an empty list before the loop.
Software Engineering
Hint
Use a list to collect module names and check the string 'Handles' in each responsibility.
4
Add final design summary
Add a variable called design_summary and set it to the string 'System has high cohesion and low coupling for easier maintenance.' to summarize the design quality.
Software Engineering
Hint
Summarize the design in a simple string variable.
Practice
(1/5)
1. What does low coupling in software design mean?
easy
A. Modules have few dependencies on each other
B. Modules perform many unrelated tasks
C. Modules are tightly connected and dependent
D. Modules share all their data freely
Solution
Step 1: Understand coupling concept
Coupling measures how much modules depend on each other.
Step 2: Interpret low coupling
Low coupling means modules have few dependencies, making them independent.
Final Answer:
Modules have few dependencies on each other -> Option A
Quick Check:
Low coupling = few dependencies [OK]
Hint: Low coupling means less dependency between modules [OK]
Common Mistakes:
Confusing low coupling with high dependency
Thinking low coupling means modules do many tasks
Mixing coupling with cohesion concepts
2. Which of the following best describes high cohesion in a module?
easy
A. The module depends heavily on other modules
B. The module performs many unrelated tasks
C. The module focuses on a single, well-defined task
D. The module shares data with all other modules
Solution
Step 1: Understand cohesion concept
Cohesion measures how focused a module is on a single task.
Step 2: Interpret high cohesion
High cohesion means the module focuses on one clear, well-defined task.
Final Answer:
The module focuses on a single, well-defined task -> Option C
Quick Check:
High cohesion = single focused task [OK]
Hint: High cohesion means one clear task per module [OK]
Common Mistakes:
Thinking high cohesion means many unrelated tasks
Confusing cohesion with coupling
Assuming high cohesion means high dependency
3. Consider two modules: Module A calls Module B frequently and shares many variables. Module C performs one clear task independently. Which statement is true?
medium
A. Module A has low coupling and high cohesion
B. Module A has high coupling and Module C has high cohesion
C. Module B has high cohesion and low coupling
D. Module C has high coupling and Module A has low cohesion
Solution
Step 1: Analyze Module A and B relationship
Module A calls Module B frequently and shares many variables, indicating high coupling.
Step 2: Analyze Module C's task focus
Module C performs one clear task independently, indicating high cohesion.
Final Answer:
Module A has high coupling and Module C has high cohesion -> Option B
Quick Check:
High coupling = many dependencies; High cohesion = focused task [OK]
Hint: Frequent calls = high coupling; single task = high cohesion [OK]
Common Mistakes:
Mixing which module has high coupling
Confusing cohesion with coupling
Assuming independence means low cohesion
4. A software module is designed to handle user input, process data, and generate reports all in one. What is the main problem here?
medium
A. The module has low cohesion
B. The module has low coupling
C. The module is highly focused
D. The module is loosely connected
Solution
Step 1: Identify tasks in the module
The module handles user input, processes data, and generates reports, which are different tasks.
Step 2: Assess cohesion level
Because it does many unrelated tasks, the module has low cohesion.
Final Answer:
The module has low cohesion -> Option A
Quick Check:
Multiple unrelated tasks = low cohesion [OK]
Hint: Many tasks in one module means low cohesion [OK]
Common Mistakes:
Confusing low cohesion with low coupling
Thinking multiple tasks mean high cohesion
Ignoring the definition of cohesion
5. You have a large software system with modules that share many variables and perform multiple unrelated tasks. To improve design, which approach should you take?
hard
A. Increase coupling and decrease cohesion
B. Increase both coupling and cohesion
C. Keep coupling and cohesion as they are
D. Decrease coupling and increase cohesion
Solution
Step 1: Identify current design issues
Modules share many variables (high coupling) and perform unrelated tasks (low cohesion).
Step 2: Apply good design principles
Good design aims for low coupling (less dependency) and high cohesion (focused tasks).
Final Answer:
Decrease coupling and increase cohesion -> Option D
Quick Check:
Good design = low coupling + high cohesion [OK]
Hint: Aim for less dependency and focused tasks [OK]
Common Mistakes:
Thinking increasing coupling improves design
Confusing cohesion with coupling
Ignoring the benefits of modular design
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.