Apply SOLID to a Java Reporting Service for a Renewable Energy Startup
Overview
What this challenge is about.
Receive the legacy ReportService, 4 sample report templates (Daily Output, Monthly P&L, Annual Availability, Curtailment), and 22 fixtures (input dataset, expected report). Refactor applying SOLID: Single Responsibility (split data fetch, computation, rendering); Open/Closed (new report type via plugin registration, not switch case); Liskov (report subtypes substitutable); Interface Segregation (consumers depend only on what they need); Dependency Inversion (constructor injection via Spring). Maintain a 22-fixture parity test. Deliver: refactored code, JUnit 5 test suite (85 percent coverage), 5-page before/after design doc with explicit mapping of each change to a SOLID principle.
The Brief
What you'll do, and what you'll demonstrate.
Refactor a Java reporting service applying SOLID principles to enable plugin-style addition of new report types without modifying the core.
Earning criteria — what you'll demonstrate
- Apply each of the 5 SOLID principles on a real codebase
- Use dependency injection to invert control of report dependencies
- Extract interfaces that consumers actually need
- Validate a refactor with fixture-based parity testing
Program Fit
Where this fits in your program.
Sharpens the same skills your degree expects you to demonstrate.
Skills
Skills you'll demonstrate.
Each one shows up on your verified credential.
Careers
Roles this prepares you for.
Real titles. Real skill bridges. Pick the one closest to your trajectory.
Career mappings coming soon.