1MEIC04T04: OptiReQ - FEUP-MEIC-DS-2024-25/ai4sd GitHub Wiki

Our assistant aims to analyze a set of requirements and be able to provide some that are missing and may be relevant and/or point out others that may be redundant or not that admissable given the context.

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

Vision

With the help of our product, teams will be able to simplify their analytical and decision-making processes and adopt a more intelligent and effective approach to needs management. With the use of sophisticated analysis, our application may quickly identify gaps, redundancies, and unacceptable criteria in addition to identifying necessary needs. The desire to speed up and improve the accuracy of the requirement analysis process while freeing teams from the laborious task of manual filtering and validation is the driving force behind this idea.

Throughout the development lifecycle, our assistant is a dependable collaborator who can adjust to changing project requirements and provide insights that promote compliance, clarity, and consistency. We envisage a tool that can handle complicated requirements and is easy to use for any team, regardless of technical expertise.

Our ultimate goal is to provide a single source of truth for requirements analysis in order to improve cooperation and guarantee alignment across project stakeholders. Our goal is to turn requirement management from a necessary activity to a strategic benefit by making it not only simpler but also insightful and revolutionary.

Research

Similar Project: IBM Engineering Requirements Management DOORS Next

Description:
DOORS Next is a widely-used tool for managing requirements, enabling teams to capture, trace, analyze, and manage changes throughout the software development lifecycle. It is especially popular in industries that require strict compliance, such as automotive and aerospace.

Pros

  • Traceability: Provides strong traceability features, which allow users to track requirements from inception through to testing and deployment.
  • Collaboration: Supports team collaboration, with options to comment, discuss, and make decisions within the requirements management environment.
  • Version Control: Offers advanced version control and baselining, enabling teams to manage changes effectively over time.

Cons

  • Complexity: Has a steep learning curve, which can make it challenging for new users or smaller teams without dedicated training.
  • Cost: Can be expensive, particularly for small to medium-sized businesses that don’t need the full suite of enterprise-level features.
  • Heavyweight for Simple Projects: The extensive features and complexity may be unnecessary for simpler projects, potentially leading to inefficiencies in smaller teams.

Sequence Diagram

Domain Analysis

Architecture and design

Theme, Epics, etc...

AI Assistant Documentation - Opti Req

Technologies

This project was developed using the Python programming language, chosen by our team due to its familiarity among all members and ease of use. Python is well-suited for projects involving machine learning, data processing, and API integration, making it a natural fit for this application.

The Gemini API was integrated as a client-sugestion requirement. The motivation behind this restriction likely stemmed from the need to use a proven tool that provides specific functionalities, such as generating outputs based on static prompts, ensuring consistency and compatibility with preexisting systems or internal standards.

Prototype and base Implementation

Sprint 0

During Sprint 0, we developed a prototype with a basic graphical user interface (GUI) where the user could select a text file as input. This prototype processed the file through the Gemini API and returned a Markdown (MD) file containing changes and improvements based on a predefined prompt. This initial prototype was essential for validating the API integration and understanding the challenges related to data flow and user interface response.

This base implementation will guide the subsequent sprints by highlighting areas for improvement, such as optimizing the interface for better usability and refining data processing for enhanced performance.

Sprint 1 Retrospective

What went well

  • Communication and Collaboration: Communication within the team was effective during the meetings in class, where everyone was able to express ideas and align expectations.

What went wrong

  • Task Planning: There were some difficulties in the initial planning, with tasks turning out to be more complex than anticipated. However, all issues were resolved in a timely manner, without significantly impacting the progress of the sprint.

Improvements to be made

  • Meetings: Implement an agenda for each meeting and set time limits for the topics discussed, ensuring that meetings are more focused and productive.
  • Pair Programming: Implement pair programming sessions, ensuring that the pairs rotate. Additionally, setting clear objectives for each session can help maintain focus and maximize results.

We were able to achieve the planned tasks for this sprint.

Sprint 2 Retrospective

What went well

  • Meeting Realization: The team successfully organized and held a meeting, providing an opportunity to align objectives and clarify tasks.
  • Task Planning: Task distribution and prioritization were well-executed, which streamlined the development process.

What went wrong

  • Communication Issues: Instances of miscommunication led to minor flaws in task execution and coordination, which could have been avoided with clearer exchanges.

Improvements to be made

  • Pair Programming: Despite recognizing its value, the team has yet to implement pair programming. Efforts should focus on integrating this practice to enhance collaboration and knowledge sharing.

We were able to achieve the planned tasks for this sprint.

Development guide

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

Document any APIs, formats and protocols needed for development (but don't forget that public APIs should also be accessible from the "How to use" above).

Describe coding conventions and other guidelines adopted by the team(s).

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: