← Back to Home
Sprint Challenge: Building Robust Applications
Challenge Overview
Welcome to the Sprint 5 Challenge! This challenge will test your understanding of functional requirements, debugging, testing, and memory management. You'll apply what you've learned throughout this sprint to build and enhance a robust Java application.
Challenge Description
In this challenge, you'll be working on a Library Management System application. You'll need to:
- Write functional requirements for several new features
- Debug existing functionality to fix critical issues
- Implement comprehensive tests to verify behavior
- Optimize memory usage for efficient performance
The application allows librarians to manage books, patrons, and loans, and provides search functionality for the library catalog.
Challenge Requirements
Part 1: Functional Requirements
- Write clear functional requirements for a new "Book Reservation" feature, including preconditions, postconditions, and invariants.
- Create user stories and acceptance criteria for a "Late Fee Calculation" feature.
- Design a test plan for validating the new features.
Part 2: Debugging
- Fix the book search functionality that currently returns incorrect results.
- Resolve the patron registration issue that causes null pointer exceptions.
- Debug the loan processing system that incorrectly calculates due dates.
Part 3: Testing
- Implement unit tests for the core library service classes.
- Create integration tests for the database interaction components.
- Apply test-driven development to implement a new "Book Recommendation" feature.
Part 4: Memory Management
- Optimize the book catalog loading process that currently causes excessive memory usage.
- Fix memory leaks in the patron history tracking functionality.
- Implement efficient caching for frequently accessed library data.
Note: Focus on writing clean, maintainable code that demonstrates your understanding of the concepts covered in this sprint. Quality is more important than quantity.
Submission Guidelines
- Fork the starter repository linked in the Resources section
- Implement the required features and fixes
- Push your changes to your fork
- Submit a pull request by the deadline
- Include a README.md that explains your approach and any design decisions