Propostas Submetidos

DEI - FCTUC
Gerado a 2024-05-17 04:23:58 (Europe/Lisbon).
Voltar

Titulo Estágio

AI Copilot for software development life cycle

Áreas de especialidade

Engenharia de Software

Sistemas Inteligentes

Local do Estágio

Mindera

Enquadramento

As ferramentas de co-piloto tornaram-se uma forma cada vez mais popular de os programadores melhorarem a produtividade e a eficiência do seu trabalho. Estas ferramentas podem ajudar em tarefas comuns e até actuar como um parceiro de programação silencioso. No entanto, e se pudéssemos levar este conceito ainda mais longe? E se pudéssemos desenvolver uma ferramenta alimentada por IA que pudesse ajudar toda a equipa do ciclo de vida do desenvolvimento de software (SDLC), desde os proprietários de produtos até aos engenheiros de garantia de qualidade, sem deixar para trás o desenvolvimento e o devops?

Objetivo

The main goal is to develop a chat-like tool that can assist users in the SDLC, powered by artificial intelligence and designed to integrate with the user's local development environment. The tool will provide real-time recommendations, feedback, and actual editing to improve the quality and efficiency of software development. It will also be designed to ensure that any automated modifications made to files are validated by the user before being enforced by the system. The end result will be a tool that acts as part of the team, helping to boost productivity and ensure that software development projects are completed on time and to the highest quality standards.
Depending on the SDLC stage and current needs, the tools should be able to (in no specific order):
Understand application requirements’ listings
Given the requirements, generate formal User Requirements
Given the User Requirements, break them down into user stories
Given the user Stories, generate Acceptance criteria
Given the Acceptance criteria, generate Cucumber Gherkin syntax tests
Given Gherkin, generate test code
Give the test code, generate actual front end and back end code that fits tests
This proposal has the following specific goals
Get acquainted with state of the art Artificial Intelligence work on code development
Understand LLM (large language models), embeddings, dataset training and usage
Understanding the SDLC
Get familiarized with software requirements’ definition
Understand what behavior driven development is and the differences to test driven design

Plano de Trabalhos - Semestre 1

This project holds the following big tasks
T1 – Understand the state of the art in code co-pilot solutions, and the major concepts
T2 – Design an architecture for the SDLC ai chat tool
T3 – Implement the proposed architecture for the SDLC ai chat tool
T4 – Implement supporting for the automated, AI based generation of formal User Requirements (.2 above)
T5 – Implement supporting for the automated, AI based generation of formal Acceptance Criteria (.3 above)
T6 – Implement supporting for the automated, AI based generation of Cucumber Gherkin tests
T7 – Implement supporting for the automated, AI based generation of test code
T8 – Implement supporting for the automated, AI based generation of front end and back end code in specific languages
T9 - Elaborate the intermediate internship report for the University

This task list can be further expanded to the following:
T1:
Conduct a thorough analysis of the SDLC process and identify how an AI-powered tool could improve productivity and efficiency.
T2:
Design an architecture that supports the AI-powered chatbot's functionality, including a distributed, event-driven architecture with orchestrators and administrative dashboards.
T3:
Develop an AI-powered chatbot that can understand natural language input from the user and provide relevant recommendations and feedback.
Integrate the chatbot with the user's local development environment, allowing it to access and read files as needed.
Implement machine learning algorithms that can analyze code and provide suggestions for improving code quality and efficiency.
Develop a user interface that is intuitive and easy to use, allowing users to interact with the chatbot and view recommendations and feedback.
Implement a system for validating any modifications made by the chatbot, ensuring that the user is able to review and approve all changes before they are enforced.
Give the chatbot access to user's repositories, for pattern matching and code organization policies.
Test and refine the chatbot to ensure that it provides accurate and relevant recommendations and feedback, and integrates smoothly with the user's development environment.
Develop a system for tracking the performance of the chatbot and measuring its impact on software development productivity and quality.
​​Create a data pipeline to collect and analyze chat logs, with the goal of identifying patterns in user behavior and improving the chatbot's performance over time.
Develop and integrate a recommendation system for third-party tools and libraries that can be used to enhance the development process.
Integrate the chatbot with project management tools such as Jira or Trello to streamline the task management process.
Implement a feature for the chatbot to suggest code snippets or templates for common programming tasks, allowing developers to work more efficiently.
Develop a system for tracking and analyzing user feedback, with the goal of continuously improving the chatbot's performance and user satisfaction.
Create documentation and training materials for users, to ensure that they are able to use the chatbot effectively and efficiently.
Provide ongoing maintenance and support for the chatbot, addressing any issues or bugs that arise, and updating the chatbot to reflect changing needs and requirements of the organization.
Implement a mechanism for the chatbot to identify and flag any potential security vulnerabilities in the codebase and provide recommendations for mitigation.
T4:
Incorporate the ability for the chatbot to understand application requirements' listings and generate formal User Requirements.
T5:
Implement the ability for the chatbot to generate Acceptance Criteria based on the User Requirements.
T6:
Incorporate the ability for the chatbot to generate Cucumber Gherkin syntax tests based on the Acceptance Criteria.
T7:
Implement the ability for the chatbot to generate test code based on the Gherkin syntax tests.
T8:
Develop the ability for the chatbot to generate actual front end and back end code that fits the tests.
T9 - Elaborate the intermediate internship report for the University

Plano de Trabalhos - Semestre 2

This project holds the following big tasks
T1 – Understand the state of the art in code co-pilot solutions, and the major concepts
T2 – Design an architecture for the SDLC ai chat tool
T3 – Implement the proposed architecture for the SDLC ai chat tool
T4 – Implement supporting for the automated, AI based generation of formal User Requirements (.2 above)
T5 – Implement supporting for the automated, AI based generation of formal Acceptance Criteria (.3 above)
T6 – Implement supporting for the automated, AI based generation of Cucumber Gherkin tests
T7 – Implement supporting for the automated, AI based generation of test code
T8 – Implement supporting for the automated, AI based generation of front end and back end code in specific languages
T9 - Elaborate the internship report for the University


This task list can be further expanded to the following:
T1:
Conduct a thorough analysis of the SDLC process and identify how an AI-powered tool could improve productivity and efficiency.
T2:
Design an architecture that supports the AI-powered chatbot's functionality, including a distributed, event-driven architecture with orchestrators and administrative dashboards.
T3:
Develop an AI-powered chatbot that can understand natural language input from the user and provide relevant recommendations and feedback.
Integrate the chatbot with the user's local development environment, allowing it to access and read files as needed.
Implement machine learning algorithms that can analyze code and provide suggestions for improving code quality and efficiency.
Develop a user interface that is intuitive and easy to use, allowing users to interact with the chatbot and view recommendations and feedback.
Implement a system for validating any modifications made by the chatbot, ensuring that the user is able to review and approve all changes before they are enforced.
Give the chatbot access to user's repositories, for pattern matching and code organization policies.
Test and refine the chatbot to ensure that it provides accurate and relevant recommendations and feedback, and integrates smoothly with the user's development environment.
Develop a system for tracking the performance of the chatbot and measuring its impact on software development productivity and quality.
​​Create a data pipeline to collect and analyze chat logs, with the goal of identifying patterns in user behavior and improving the chatbot's performance over time.
Develop and integrate a recommendation system for third-party tools and libraries that can be used to enhance the development process.
Integrate the chatbot with project management tools such as Jira or Trello to streamline the task management process.
Implement a feature for the chatbot to suggest code snippets or templates for common programming tasks, allowing developers to work more efficiently.
Develop a system for tracking and analyzing user feedback, with the goal of continuously improving the chatbot's performance and user satisfaction.
Create documentation and training materials for users, to ensure that they are able to use the chatbot effectively and efficiently.
Provide ongoing maintenance and support for the chatbot, addressing any issues or bugs that arise, and updating the chatbot to reflect changing needs and requirements of the organization.
Implement a mechanism for the chatbot to identify and flag any potential security vulnerabilities in the codebase and provide recommendations for mitigation.
T4:
Incorporate the ability for the chatbot to understand application requirements' listings and generate formal User Requirements.
T5:
Implement the ability for the chatbot to generate Acceptance Criteria based on the User Requirements.
T6:
Incorporate the ability for the chatbot to generate Cucumber Gherkin syntax tests based on the Acceptance Criteria.
T7:
Implement the ability for the chatbot to generate test code based on the Gherkin syntax tests.
T8:
Develop the ability for the chatbot to generate actual front end and back end code that fits the tests.
T9 - Elaborate the internship report for the University

Condições

Work may be fully remote, partially remote or fully presentcial.Food and transportation allowance (if the internship is on-site or hybrid)

Observações

Technologies will vary according to different phases and defined products and tech stack to be used. This definition will occur during Tasks 1 and 2.
The student will be integrated in existing development teams and will be able to understand first hand Agile principles and Scrum methodology.

Orientador

Cláudio Teixeira
claudio.teixeira@mindera.com 📩