← 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:

  1. Write functional requirements for several new features
  2. Debug existing functionality to fix critical issues
  3. Implement comprehensive tests to verify behavior
  4. 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

  1. Write clear functional requirements for a new "Book Reservation" feature, including preconditions, postconditions, and invariants.
  2. Create user stories and acceptance criteria for a "Late Fee Calculation" feature.
  3. Design a test plan for validating the new features.

Part 2: Debugging

  1. Fix the book search functionality that currently returns incorrect results.
  2. Resolve the patron registration issue that causes null pointer exceptions.
  3. Debug the loan processing system that incorrectly calculates due dates.

Part 3: Testing

  1. Implement unit tests for the core library service classes.
  2. Create integration tests for the database interaction components.
  3. Apply test-driven development to implement a new "Book Recommendation" feature.

Part 4: Memory Management

  1. Optimize the book catalog loading process that currently causes excessive memory usage.
  2. Fix memory leaks in the patron history tracking functionality.
  3. 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.

Resources

Submission Guidelines

  1. Fork the starter repository linked in the Resources section
  2. Implement the required features and fixes
  3. Push your changes to your fork
  4. Submit a pull request by the deadline
  5. Include a README.md that explains your approach and any design decisions