Project Tasks
Based on the Requirements Specifications document.
The project was divided into 5 separate sprints, each with its focus described below:
- Sprint 1: project setup
- Sprint 2: design patterns and indexing
- Sprint 3: search and chat interface
- Sprint 4: performance, visualization and documentation
- Sprint 5: final report and presentation
ID | Task | Priority | Related Requirements | Status | Sprint (click) |
---|---|---|---|---|---|
Github | |||||
I1 | Build Configuration - Initialize SBT project with Scala 3.6.4 - Configure assembly plugin for JAR creation - Set up test environment with ScalaTest - Configure code coverage & documentation |
HIGHEST | IR1, IR4, NFR1 | ✓ | S1 |
I2 | Code Quality Tools - Set up Scalafmt with formatting rules - Implement Wartremover for code analysis - Configure Scalafix and semantic DB - Set up Trunk and Gemini bot |
HIGH | IR1, NFR2 | ✓ | S1 |
I3 | Git Workflow - Implement git hooks system - Set up semantic release system |
MEDIUM | NFR1, NFR2 | ✓ | S1 |
I4 | Project Infrastructure - Set up logging infrastructure - Configure CI/CD pipeline - Define high-level architecture |
HIGHEST | IR4, NFR1, NFR2 | ✓ | S1 |
I5 | Core Domain Model - Design repository data model - Design initial API contracts - Generate API documentation |
HIGH | IR1, IR4, FR2.1 | ✓ | S1, S5 |
I6 | Basic Git Operations - Implement repository loading - Extract repository metadata - Create error handling |
HIGH | FR1.1, FR2.1, NFR3 | ✓ | S1 |
Foundation | |||||
F1 | Layered Architecture Implementation - Implement modules from architecture diagram - Apply design patterns from lectures (dependency injection, layered architecture, strategy, factory, etc) |
HIGHEST | IR4, IR1 | ✓ | S2 |
F2 | Repository Input and Processing - Accept/validate Git repository URLs - Fetch repository contents - Support file type filtering |
HIGHEST | FR1.1, FR2.1, NFR3, BR1, NFR1 | ✓ | S2 |
F3 | Code Indexing System - Process code into searchable representations - Generate/store code embeddings - Integrate with Langchain4J for vector storage |
HIGHEST | FR2.2, FR2.3, IR2, IR3, BR2, NFR1 | ✓ | S2 |
Core Value | |||||
C1 | Natural Language Code Search - Enable semantic search across codebase - Support language/extension filtering - Display relevant results with context |
HIGH | FR1.2, FR1.4, FR1.3, FR1.5, BR1, NFR2 | ✓ | S3 |
C2 | Code Understanding Chat Interface - Provide chat interface for code questions - Retrieve relevant code context for queries - Generate context-aware responses |
HIGH | FR1.6, FR1.5, FR2.4, BR2, NFR2 | ✓ | S3 |
Additional | |||||
E1 | User Interface Implementation - Create intuitive frontend for all functionality - Support Scala.js and Python (Gradio) interfaces - Ensure responsive and accessible design |
MEDIUM | NFR2, IR1, NFR3 | ✓ | S3 |
E2 | Performance Optimization - Optimize repository lookup speed - Implement caching/reuse of embeddings - Ensure responsive search/chat experience |
MEDIUM | NFR1, FR2.2, FR2.3, NFR2 | ✓ | S4 |
E3 | Security Implementation - Sanitize user inputs - Secure Restful API - Secure data storage |
MEDIUM | NFR3, FR2.3 | ✓ | S4 |
E4 | Testing and Quality Assurance - Implement comprehensive testing strategy - Define quality metrics (see requirements document) |
MEDIUM | IR1, NFR1, NFR2 | ✓ | S4, S5 |
E5 | Visualization and Analysis - Visualize code embeddings for quality analysis - Provide metrics on search effectiveness - Generate insights for documentation |
MEDIUM | IR5, FR1.2, BR2 | ✓ | S5 |
E6 | Documentation and Reporting - Create user documentation - Generate project report - Document architecture and design decisions |
MEDIUM | NFR2, IR4 | ✓ | S5 |
Traceability Matrix
The following table shows evidence for the requirements in the Requirements Specifications document.
Requirement | Design element | Implementation Evidence | Done |
---|---|---|---|
BR1: Search Productivity | Project-wide | BusinessRequirementsSuite.scala SUS Questionnaire Embedding Diagrams |
✓ |
BR2: Improve Code Understanding | Project-wide | createTextEmbeddingModel createCodeEmbeddingModel Python/Scala Frontend SUS Questionnaire Embedding Diagrams |
✓ |
FR1.1: Repository URL Input Interface | GithubWrapperService.scala | UserFunctionalRequirementsSuite | ✓ |
FR1.2: Code Search Using Markdown | QdrantEmbeddingStore.scala GithubWrapperService.scala |
UserFunctionalRequirementsSuite | ✓ |
FR1.3: Search Results Display System | Scala frontend Python frontend |
SUS Questionnaire | ✓ |
FR1.4: Code Search using Code | QdrantEmbeddingStore.scala GithubWrapperService.scala |
UserFunctionalRequirementsSuite | ✓ (see related FR1.2) |
FR1.5: Code Context Visualization | Scala frontend Python frontend RepositoryWithLanguages GithubWrapperService |
UserFunctionalRequirementsSuite SUS Questionnaire |
✓ |
FR1.6: Model with Past Chat History | Pipeline.scala RAGComponentFactory.scala |
UserFunctionalRequirementsSuite | ✓ |
FR2.1: Repository Cloning | GithubWrapperService.scala FetchingService.scala |
SystemFunctionalRequirementsSuite | ✓ |
FR2.2: Vector Database Generation | IngestorService.scala CacheService.scala QdrantEmbeddingStore.scala |
SystemFunctionalRequirementsSuite | ✓ |
FR2.3: Vector Database Implementation | QdrantEmbeddingStore.scala GithubWrapperService.scala |
UserFunctionalRequirementsSuite | ✓ |
FR2.4: LLM Integration for Code | QueryRoutingStrategy.scala QueryFilterService.scala ChatService.scala |
SystemFunctionalRequirementsSuite | ✓ |
NFR1: Performance Optimization | ChatService.scala CacheService.scala IngestorService.scala GithubWrapperService.scala |
NonFunctionalRequirementsSuite | ✓ |
NFR2: System Usability Optimization | GithubWrapperService.scala Scala frontend Python frontend |
NonFunctionalRequirementsSuite SUS Questionnaire |
✓ |
NFR3: User Interface Security | Scala frontend Python frontend |
NonFunctionalRequirementsSuite | ✓ |
NFR4: Embedding Visualization | IngestorService.scala | Final Report | ✓ |
IR1: Scala Implementation (declarative programming) | Project-wide | Adherence to the Gemini style guide | ✓ |
IR2: Qdrant Vector Database | IngestorService.scala ComponentFactory.scala |
application.conf | ✓ |
IR3: Ollama Integration | QueryRoutingStrategy.scala QueryFilterService.scala ChatService.scala |
application.conf | ✓ |
IR4: Layered Architecture | Project-wide | ArchUnit tests | ✓ |
Test Results
The acceptance tests are not executable using the traditional CI/CD pipeline, so below are the results ran locally.
