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.
Important Note
Focus on writing clean, maintainable code that demonstrates your understanding of the concepts covered in this sprint. Quality is more important than quantity.