1MEIC03T01: FeatureCraft - FEUP-MEIC-DS-2024-25/ai4sd GitHub Wiki

FeatureCraft aims to improve the software development process by using AI to suggest original features based on existing project requirements.

More details about the product can be found below, including the product vision, market research and domain analysis.

Vision

FeatureCraft is an AI assistant designed to improve the software development life cycle (SDLC) by suggesting overlooked and innovative features that add significant business value.

It analyzes existing requirements, using a large language model (LLM) to identify and generate features that were not previously considered. FeatureCraft doesn’t just fill in missing pieces but also elevates the product by proposing original and strategic improvements that can boost competitiveness and customer satisfaction.

The primary users of FeatureCraft will be requirements engineers and product owners who need help expanding and refining their feature set during the requirements-gathering phase. It assists teams by providing feedback on incomplete or vague requirements and asking contextual questions to clarify their requirements. Users can upload a list of requirements to get started quickly and export a list of suggested features for sharing with their team. Additionally, the assistant allows pinning relevant suggestions and reviewing conversations through chat history for ongoing projects.

Research

To our knowlegdge, no existing product on the market does exactly what FeatureCraft aims to achieve. Tools like IBM Engineering Requirements Quality Assistant and Visure Solutions primarily focus on refining and validating requirements through NLP, ensuring quality and compliance but stopping short of proposing new or innovative feature ideas. Their main purpose is to ensure requirements are well-documented and meet standards, not to identify opportunities for overlooked or new features that could add business value​ to the product.

ChatGPT and Gemini APIs offer robust capabilities for generating feature suggestions based on input requirements. These models leverage natural language processing to analyze text and provide creative ideas, which can aid in brainstorming sessions and refine product features. Users can engage in dynamic conversations to extract insights, utilize the models to clarify vague requirements, and explore various angles for enhancing their projects.

However, while ChatGPT and Gemini APIs can generate feature suggestions, they require carefully crafted prompts to yield relevant results. This means that users need to have a clear understanding of how to formulate their inquiries to get the most out of these models. Without specific prompts, the responses may lack the precision or relevance needed for effective feature suggestion. In contrast, FeatureCraft is designed to facilitate this process by automatically interpreting requirements and generating tailored suggestions without requiring users to structure their queries meticulously. This improves the user experience, making it faster and more organic to gather insights.

Domain Analysis

Domain

Sequence_Diag

Architecture and design

Architecture

Technologies

Our project utilizes Python for backend processing and AI integration, and JavaScript for the frontend, chosen for its responsiveness in real-time interactions. We use the Gemini API to harness advanced NLP for analyzing requirements, central to FeatureCraft’s feature-suggestion functionality. Docker was chosen for containerization, ensuring consistent deployments and scalability across environments.

During sprint 0, our team built a basic prototype that receives user messages, sends them to the Gemini API, and displays the responses back to the user. This established the core functionality of our product.

Sprint 1 Retrospective

What Went Well

  • Full Completion of PBIs: The team successfully delivered all PBIs planned for the sprint, including:
    • Refining feature suggestions through conversation.
    • Incorporating project business objectives into feature suggestions.
    • Generating a list of features aligned with business value.
  • Goal Alignment: Team members worked cohesively, ensuring objectives were met efficiently.

What Could Be Improved

  • Communication with Other Groups: Proactive interaction with external teams was limited, which may have delayed collaborative opportunities.
  • Clearer Direction Across Assistants: Better collaboration with other teams is needed to define shared features and reusable components. A unified path forward would prevent duplication and improve resource utilization.

Action Items

  • Schedule early alignment meetings with other teams in the sprint.
  • Define and document shared components and features for consistency across assistants.

This is our board at the end of sprint 2: Sprint 2 Review

Sprint 2 Retrospective

What Went Well

The team demonstrated strong collaboration and adaptability, making progress on tasks despite encountering new challenges. Team members continued to support each other and maintained focus on completing assigned user stories.

What Went Poorly

The sprint faced delays due to bugs that had not been encountered in previous sprints, creating unforeseen obstacles. Additionally, limited availability across the team hindered the ability to allocate extra time to address these issues and complete all the pbis assigned to the sprint.

What Could Be Improved

For the next sprint, the team anticipates a larger workload per developer and aims to prioritize better task distribution and resource management.

This is our board at the start of sprint 3: Sprint 3 Planning

Development guide

Prerequisites

Environment Variables

To run the project, create a .env file with the following fields:

  • LLM_API_KEY: Set to your Gemini API key.
  • CORS_URL: The URL used by the frontend (e.g., http://localhost:3000).
  • GOOGLE_APPLICATION_CREDENTIALS:
    • If using Docker: Set this to /app/firebase.json (precise value).
    • If running locally: Provide the full local path to your Firebase credentials file.

Dependencies

Before running the app, ensure all Python dependencies listed in requirements.txt are installed. Use the following command:

pip install -r requirements.txt

Running the Project

Using Docker

  1. Ensure Docker and Docker Compose are installed on your machine. Also make sure that the credentials for firebase are on the root directory of the project with the correct name firebase.json
  2. Run the following command to start the project:
docker-compose up

Check API

If using docker to check API specifications use address http://localhost:8082.

Security concerns

Identify potential security vulnerabilities classes and explain what the team has done to mitigate them.

Quality assurance

Describe which tools are used for quality assurance and link to relevant resources. Namely, provide access to reports for coverage and mutation analysis, static analysis, and other tools that may be used for QA.

How to use

Explain how to use your tool from an user standpoint. This can include short videos, screenshots, or API documentation, depending on what makes sense for your particular software and target users. If needed, link to external resources or additional markdown files with further details (please add them to this wiki).

How to contribute

Explain what a new developer should know in order to develop the tool, including how to build, run and test it in a development environment.

Defer technical details to the technical documentation below, which should include information and decisions on architectural, design and technical aspects of the tool.

Contributions

Link to the factsheets of each team and of each team-member. For example: