Initial implementation of HTTP Sender Plugin following TDD methodology with hexagonal architecture. All 313 tests passing (0 failures). This commit adds: - Complete domain model and port interfaces - All adapter implementations (HTTP, gRPC, file logging, config) - Application services (data collection, transmission, backpressure) - Comprehensive test suite with 18 integration tests Test fixes applied during implementation: - Fix base64 encoding validation in DataCollectionServiceIntegrationTest - Fix exception type handling in IConfigurationPortTest - Fix CompletionException unwrapping in IHttpPollingPortTest - Fix sequential batching in DataTransmissionServiceIntegrationTest - Add test adapter failure simulation for reconnection tests - Use adapter counters for gRPC verification Files added: - pom.xml with all dependencies (JUnit 5, Mockito, WireMock, gRPC, Jackson) - src/main/java: Domain model, ports, adapters, application services - src/test/java: Unit tests, integration tests, test utilities
19 KiB
HSP Sprint Planning Board
Project: HTTP Sender Plugin (HSP) Version: 1.0 Last Updated: 2025-11-20 Sprint Duration: 2 weeks Total Sprints: 6 Team Velocity: TBD (will be calculated after Sprint 1)
Sprint Overview
| Sprint | Duration | Story Points | Status | Start Date | End Date | Completed | Velocity |
|---|---|---|---|---|---|---|---|
| Sprint 1 | Weeks 1-2 | 38 | 🎯 Ready | TBD | TBD | 0 | - |
| Sprint 2 | Weeks 3-4 | 42 | ⏳ Pending | TBD | TBD | 0 | - |
| Sprint 3 | Weeks 5-6 | 40 | ⏳ Pending | TBD | TBD | 0 | - |
| Sprint 4 | Week 7 | 35 | ⏳ Pending | TBD | TBD | 0 | - |
| Sprint 5 | Week 8 | 42 | ⏳ Pending | TBD | TBD | 0 | - |
| Sprint 6 | Weeks 9-10 | 35 | ⏳ Pending | TBD | TBD | 0 | - |
Total Story Points: 232 Target Velocity: 35-40 points per sprint
Sprint 1: Foundation & Quick Wins (Weeks 1-2)
Sprint Goal: Establish project foundation, implement architectural enhancements, and set up TDD workflow
Status: 🎯 Ready to Start Story Points: 38 Team Size: 3-4 developers Planned Velocity: 38 points Actual Velocity: -
User Stories
US-1.1: Implement Rate Limiting
Story Points: 3 Priority: High Status: ⏳ Not Started Assigned: -
Description: As a system architect, I want to implement rate limiting for HTTP polling so that we don't overwhelm endpoints with requests.
Acceptance Criteria:
- RateLimitedHttpPollingAdapter decorator created
- Configurable requests-per-second limit
- Tests written BEFORE implementation (TDD RED)
- Implementation passes tests (TDD GREEN)
- Code refactored for quality (TDD REFACTOR)
- 95% test coverage achieved
- Configuration schema updated
- Integration tests with HttpPollingAdapter
Technical Tasks:
- Write failing test for rate limiter (RED)
- Implement RateLimitedHttpPollingAdapter (GREEN)
- Write tests for configuration loading
- Refactor for clarity (REFACTOR)
- Add integration tests
Dependencies: None Estimated Effort: 1 day
US-1.2: Implement Backpressure Controller
Story Points: 5 Priority: High Status: ⏳ Not Started Assigned: -
Description: As a developer, I want backpressure handling so that the system can slow down when the buffer is full.
Acceptance Criteria:
- BackpressureController class created
- Buffer monitoring every 100ms
- Backpressure signal at 80% threshold
- HTTP polling skip logic implemented
- Tests written BEFORE implementation (TDD RED)
- All tests pass (TDD GREEN)
- 95% test coverage
- Integration tests with BufferManager
Technical Tasks:
- Write failing tests for backpressure detection (RED)
- Implement BackpressureController (GREEN)
- Write tests for buffer monitoring
- Implement polling skip logic
- Integration tests with DataCollectionService
- Refactor for performance
Dependencies: BufferManager interface defined Estimated Effort: 2 days
US-1.3: Achieve 95%/90% Test Coverage
Story Points: 8 Priority: High Status: ⏳ Not Started Assigned: QA Engineer + Developers
Description: As a QA engineer, I want to establish comprehensive test coverage so that we meet EN 50716 compliance requirements.
Acceptance Criteria:
- JaCoCo configured with 95% line, 90% branch thresholds
- PIT mutation testing configured
- Maven build fails on coverage threshold violation
- CI/CD pipeline includes coverage checks
- MC/DC tests for safety-critical components
- Coverage reports generated and published
- Gap analysis document created
Technical Tasks:
- Configure JaCoCo plugin in Maven POM
- Set up coverage thresholds
- Configure PIT mutation testing
- Create CI/CD coverage job
- Analyze existing coverage gaps
- Write missing unit tests
- Add MC/DC tests for critical paths
- Generate coverage reports
Dependencies: Maven project setup Estimated Effort: 3-5 days
US-1.4: Set Up Maven Project
Story Points: 3 Priority: High Status: ⏳ Not Started Assigned: Build Engineer
Description: As a build engineer, I want to set up the Maven project structure so that developers can start implementing components.
Acceptance Criteria:
- Multi-module Maven structure created
- All dependencies configured (gRPC, Jackson, etc.)
- JaCoCo configured with thresholds
- Fat JAR packaging configured
- Test framework configured (JUnit 5, Mockito, WireMock)
- Project builds successfully
- README with build instructions created
Technical Tasks:
- Create root pom.xml
- Define module structure
- Configure dependencies
- Configure JaCoCo plugin
- Configure maven-assembly-plugin for fat JAR
- Set up test dependencies
- Create .gitignore
- Write README.md
Dependencies: None Estimated Effort: 1 day
US-1.5: Define All Port Interfaces
Story Points: 8 Priority: High Status: ⏳ Not Started Assigned: Architect + Senior Developer
Description: As an architect, I want to define all port interfaces so that developers can implement adapters independently.
Acceptance Criteria:
- 8 port interfaces created (3 primary, 5 secondary)
- Javadoc with requirement traceability
- Interface contracts defined (method signatures, exceptions)
- Tests written for each interface contract (TDD)
- 100% requirement traceability annotations
- Architecture review approved
Port Interfaces:
-
Primary Ports:
- IConfigurationPort
- IHealthCheckPort
- ILifecyclePort
-
Secondary Ports:
- IHttpPollingPort
- IGrpcStreamPort
- ILoggingPort
- IBufferPort
- IStatisticsPort
Technical Tasks:
- Design interface contracts (workshops)
- Write contract tests (TDD RED)
- Create interface definitions
- Add comprehensive Javadoc
- Add @RequirementTrace annotations
- Architecture review
- Update traceability matrix
Dependencies: None Estimated Effort: 2 days
US-1.6: Implement Domain Models
Story Points: 5 Priority: High Status: ⏳ Not Started Assigned: Domain Expert + Developer
Description: As a developer, I want immutable domain models so that I can safely share data across threads.
Acceptance Criteria:
- 4 domain models created (immutable value objects)
- Tests written BEFORE implementation (TDD RED)
- JSON serialization supported (Jackson)
- Base64 encoding implemented (DiagnosticData)
- 100% test coverage
- Thread-safety verified
Domain Models:
-
DiagnosticData (value object)
- url: String
- file_data: byte[]
- timestamp: Instant
- JSON serialization with Base64
-
Configuration (value object)
- collectorSenderCoreAddress: String
- httpEndpoints: List
- bufferSize: int
- All validation rules
-
HealthCheckResponse (value object)
- status: String
- timestamp: Instant
- endpoints_total: int
- endpoints_successful: int
- buffer_usage: int
- dependencies: List
-
BufferStatistics (value object)
- totalPolls: AtomicLong
- totalErrors: AtomicLong
- last30sMetrics: Queue
Technical Tasks:
- Write tests for immutability (TDD RED)
- Write tests for JSON serialization (TDD RED)
- Implement DiagnosticData
- Implement Configuration
- Implement HealthCheckResponse
- Implement BufferStatistics
- Add Jackson annotations
- Write thread-safety tests
- Refactor for clarity
Dependencies: None Estimated Effort: 2 days
US-1.7: TDD Training Workshop
Story Points: 3 Priority: High Status: ⏳ Not Started Assigned: Tech Lead + Architect
Description: As a team lead, I want to train the team on TDD so that everyone follows the RED-GREEN-REFACTOR workflow.
Acceptance Criteria:
- 4-hour workshop completed
- TDD principles explained (RED-GREEN-REFACTOR)
- Live TDD demonstration performed
- Team practice session completed
- Git workflow for TDD documented
- Code review checklist for TDD created
- All team members certified
Workshop Agenda:
-
Introduction (30 min)
- Why TDD?
- RED-GREEN-REFACTOR cycle
- Benefits and challenges
-
Live Demo (60 min)
- Implement a simple component with TDD
- Show commit patterns
- Show test-first workflow
-
Practice Session (90 min)
- Pair programming exercise
- Implement BufferManager with TDD
- Code review of practice work
-
Q&A and Best Practices (30 min)
- Common pitfalls
- TDD in CI/CD
- Code review for TDD compliance
-
Setup and Tools (30 min)
- IDE test runners
- Coverage visualization
- Git workflow
Deliverables:
- TDD training slides
- Practice exercise
- Code review checklist
- TDD best practices document
Dependencies: None Estimated Effort: 0.5 days (4 hours)
US-1.8: Environment Setup
Story Points: 3 Priority: High Status: ⏳ Not Started Assigned: All team members
Description: As a developer, I want my development environment set up so that I can start coding.
Acceptance Criteria:
- JDK 25 installed and verified
- Maven 3.9+ installed
- IDE configured (IntelliJ/Eclipse)
- IDE plugins installed (TDD tools, coverage)
- Gitea repository cloned
- Git configured (user, email)
- CI/CD access verified
- Build verified locally
- TDD workflow tested
Setup Checklist:
-
Software Installation:
- Install JDK 25 (OpenJDK/Temurin)
- Install Maven 3.9+
- Install Git 2.40+
- Install IDE with Java 25 support
-
IDE Configuration:
- Install JUnit runner plugin
- Install coverage visualization plugin
- Configure code formatter
- Configure live test runner
-
Repository Setup:
- Clone from Gitea
- Configure Git user/email
- Set up SSH keys
- Verify build:
mvn clean compile
-
TDD Workflow Test:
- Write simple test (RED)
- Make test pass (GREEN)
- Refactor (REFACTOR)
- Commit with proper message
-
CI/CD Access:
- Verify Gitea access
- Test push to feature branch
- Verify CI pipeline runs
Dependencies: Gitea repository created Estimated Effort: 1 day (per team member)
Sprint 1 Burndown Chart
Story Points Remaining
38 |█
|█
36 |█
|█
32 |█
|█
28 |█
|█
24 |█
|█
20 |█
|█
16 |█
|█
12 |█
|█
8 |█
|█
4 |█
|█
0 |█
+------------------
Day 1 3 5 7 9 10
Status: Will be updated daily
Sprint 1 Daily Standup Tracking
| Day | Date | Stories In Progress | Blockers | Completed Today | Notes |
|---|---|---|---|---|---|
| Day 1 | TBD | - | - | - | Sprint kickoff |
| Day 2 | TBD | - | - | - | - |
| Day 3 | TBD | - | - | - | - |
| Day 4 | TBD | - | - | - | - |
| Day 5 | TBD | - | - | - | - |
| Day 6 | TBD | - | - | - | - |
| Day 7 | TBD | - | - | - | - |
| Day 8 | TBD | - | - | - | - |
| Day 9 | TBD | - | - | - | - |
| Day 10 | TBD | - | - | - | Sprint review |
Sprint 1 Success Criteria
- ✅ All enhancements implemented (rate limiting, backpressure)
- ✅ Maven project builds successfully
- ✅ All port interfaces defined
- ✅ All domain models implemented
- ✅ Test coverage at 95%/90%
- ✅ Zero compilation errors
- ✅ Team trained in TDD
- ✅ All environments set up
Sprint 2: Core Services (Weeks 3-4)
Sprint Goal: Implement business logic and orchestration services
Status: ⏳ Pending Story Points: 42 Planned Velocity: 38-42 points
User Stories
US-2.1: Implement ConfigurationManager
Story Points: 8 Priority: High Status: ⏳ Pending Dependencies: IConfigurationPort, Configuration domain model
Acceptance Criteria:
- Load configuration from JSON file
- Validate all parameters
- Terminate on validation failure (exit 1)
- Log validation errors
- Tests written first (TDD)
- 95% test coverage
US-2.2: Implement BufferManager
Story Points: 8 Priority: High Status: ⏳ Pending Dependencies: IBufferPort defined
Acceptance Criteria:
- Thread-safe circular buffer (ArrayBlockingQueue)
- FIFO overflow handling
- Atomic statistics tracking
- Tests written first (TDD)
- Concurrent stress tests pass
- 95% test coverage
US-2.3: Implement CollectionStatistics
Story Points: 3 Priority: Medium Status: ⏳ Pending Dependencies: BufferStatistics domain model
Acceptance Criteria:
- Atomic counters (totalPolls, totalErrors)
- Time-windowed queue (30s metrics)
- Thread-safe implementation
- Tests written first (TDD)
- 95% test coverage
US-2.4: Implement DataCollectionService
Story Points: 13 Priority: High Status: ⏳ Pending Dependencies: IHttpPollingPort, IBufferPort, ILoggingPort
Acceptance Criteria:
- HTTP endpoint polling orchestration
- Virtual thread pool for concurrent polling
- Data validation (size limits)
- JSON serialization with Base64
- Statistics tracking
- Tests written first (TDD)
- Unit tests with mocks pass
- Integration tests with WireMock pass
- 95% test coverage
US-2.5: Implement DataTransmissionService
Story Points: 13 Priority: High Status: ⏳ Pending Dependencies: IGrpcStreamPort, IBufferPort
Acceptance Criteria:
- Single consumer thread
- Batch accumulation (4MB or 1s limits)
- gRPC stream management
- Reconnection logic (5s retry)
- receiver_id = 99
- Tests written first (TDD)
- Unit tests with mock gRPC pass
- Integration tests with gRPC test server pass
- 95% test coverage
Sprint 3: Secondary Adapters (Weeks 5-6)
Sprint Goal: Implement infrastructure adapters for HTTP and logging
Status: ⏳ Pending Story Points: 40
User Stories Summary
- US-3.1: Implement HttpPollingAdapter (13 points)
- US-3.2: Implement ExponentialBackoffAdapter (5 points)
- US-3.3: Implement FileLoggingAdapter (3 points)
- US-3.4: Implement GrpcStreamAdapter (13 points)
- US-3.5: Integration testing (8 points)
Sprint 4: Primary Adapters & Application (Week 7)
Sprint Goal: Complete application entry point and primary adapters
Status: ⏳ Pending Story Points: 35
User Stories Summary
- US-4.1: Implement ConfigurationFileAdapter (5 points)
- US-4.2: Implement HealthCheckController (8 points)
- US-4.3: Implement HspApplication main (13 points)
- US-4.4: End-to-end startup tests (13 points)
Sprint 5: Testing & Validation (Week 8)
Sprint Goal: Comprehensive testing and validation
Status: ⏳ Pending Story Points: 42
User Stories Summary
- US-5.1: Complete integration test suite (8 points)
- US-5.2: Execute performance tests (13 points)
- US-5.3: Execute reliability tests (8 points)
- US-5.4: Execute compliance tests (5 points)
- US-5.5: Validate coverage targets (8 points)
Sprint 6: Integration & Deployment (Weeks 9-10)
Sprint Goal: End-to-end integration and deployment preparation
Status: ⏳ Pending Story Points: 35
User Stories Summary
- US-6.1: Execute E2E test scenarios (13 points)
- US-6.2: Finalize documentation (8 points)
- US-6.3: Create deployable artifacts (5 points)
- US-6.4: Validate in staging environment (13 points)
Story Point Estimation Guide
| Points | Complexity | Effort | Examples |
|---|---|---|---|
| 1 | Trivial | 1-2 hours | Simple configuration change |
| 2 | Simple | 2-4 hours | Simple utility class |
| 3 | Small | 4-8 hours | Domain model, simple adapter |
| 5 | Medium | 1-2 days | Complex adapter, service with dependencies |
| 8 | Large | 2-3 days | Core service, complex integration |
| 13 | Very Large | 3-5 days | Major component, multiple dependencies |
| 21 | Epic | 5+ days | Should be broken down into smaller stories |
Definition of Done (DoD)
Code Complete
- Tests written BEFORE implementation (TDD RED)
- All tests pass (TDD GREEN)
- Code refactored for quality (TDD REFACTOR)
- 95% line coverage, 90% branch coverage
- Zero critical bugs
- Code follows style guide
- Javadoc complete with @RequirementTrace
Review Complete
- Code review approved (2 approvers)
- TDD workflow verified in commits
- Architecture review passed (if applicable)
- Security review passed (if applicable)
Integration Complete
- Merged to develop branch
- CI/CD pipeline passes
- No merge conflicts
- Integration tests pass
Documentation Complete
- Javadoc updated
- README updated (if applicable)
- Traceability matrix updated
- User documentation updated (if applicable)
Retrospective Template
What Went Well
- TBD after Sprint 1
What Could Be Improved
- TBD after Sprint 1
Action Items
- TBD after Sprint 1
Velocity Tracking
| Sprint | Planned Points | Completed Points | Velocity | Trend |
|---|---|---|---|---|
| Sprint 1 | 38 | - | - | - |
| Sprint 2 | 42 | - | - | - |
| Sprint 3 | 40 | - | - | - |
| Sprint 4 | 35 | - | - | - |
| Sprint 5 | 42 | - | - | - |
| Sprint 6 | 35 | - | - | - |
Target Average Velocity: 35-40 points per sprint
Risk Register (Sprint Level)
| Risk | Sprint | Probability | Impact | Mitigation |
|---|---|---|---|---|
| TDD adoption resistance | Sprint 1 | Medium | High | Mandatory training, pair programming |
| Coverage targets not met | Sprint 1 | Medium | High | Start early, allocate time, QA support |
| gRPC complexity | Sprint 3 | Medium | High | Early prototype, expert on team |
| Performance issues | Sprint 5 | Low | High | Early benchmarking, profiling tools |
Notes
- Sprint planning happens on Day 1 of each sprint
- Daily standups at 9:00 AM (15 minutes)
- Sprint review on last day of sprint (2 hours)
- Sprint retrospective after review (1 hour)
- TDD compliance is mandatory (enforced in code review)
- Burndown charts updated daily
- Velocity calculated after each sprint
Last Update: 2025-11-20 Next Sprint Planning: Sprint 1 Kickoff