Projeto de Software Aplicado à Engenharia
Programação Prática
Programação Prática
Nota: Nome antigo "LEP - 01446: Programação Prática". Nome a partir da grade de 2024 "Projeto de Software Aplicado à Engenharia".
LEP - 01446: Projeto de Software Aplicado à Engenharia
Pré-requisito: LEP 01447
Créditos: 2
Carga Horária: 68h (4*17) carga horária extra classe
Horários das aulas
Sexta das 8:00h às 10: 00h
Disciplina prática, teremos aula de dúvidas do grupo via google meet.
Monitoria
Nome do monitor:
Atualmente sem monitor.
Horário de monitoria - SEM MONITORIA EM 2024:
Quinta feira: 10:00 - 12:00 hs
Segunda a sexta: 13:00 - 14:00 hs
Quarta feira: 18:00 - 20:00 hs
Sala
Sala de aula do LDSC.
Limitada a 16 alunos.
Equipamentos
Computadores com sistema operacional Gnu/Linux - Fedora.
Comunicação
Classroom da disciplina 2024/1
Telegram da disciplina 2024/1
Material disponibilizado
Distribuição de material através do site do professor, github do ldsc, google classroom, google drive, dropbox.
Disponibilização de livro da disciplina;
Disponibilização de apostila de provas resolvidas;
Disponibilização de aulas no formato pdf;
Disponibilização de exemplos de projetos desenvolvidos em anos anteriores;
Material de ajuda disponibilizado via github
Repositório com material de ajuda sobre softwares e sistemas utilizados aqui.
Modelos de documentos e projetos
Para uso dos modelos é necessário conhecimentos básicos de git/github/lyx, apresentados em sala de aula.
Os modelos são disponibilizados no repositório do ldsc: https://github.com/ldsc.
A metodologia para desenvolvimento do projeto é descrita aqui (inclui lista de projetos desenvolvidos).
O modelo de desafio tecnológico pode ser obtido aqui.
O modelo de projeto pode ser obtido aqui.
Tema central
Desenvolvimento de software aplicado à engenharia de petróleo usando métodos e técnicas de engenharia de software, UML, C++, STL.
Pensar em um problema de engenharia que seja interessante, inovador e que possa ser resolvido através da implementação de programas de computador;
Quem faz IC deve pensar em algo associado ao seu IC, assim, poderá aproveitar os resultados para seu TCC.
Validade do tema:
A especificação do projeto/programa vai ser analisada pelo professor para verificar a validade do tema.
A ideia é que o aluno tenha de desenvolver todas as etapas de um projeto de engenharia de forma reflexiva e colocando a mão na massa. Elaborando todas as etapas de forma consciente e chegando a um resultado final, um software que seja útil para o engenheiro de petróleo.
Não pode repetir projetos de anos anteriores, mas pode ampliar um existente; nestes casos é obrigatório adicionar no mínimo 5 classes novas ao problema.
Se escolher ampliar um projeto antigo entre em contato informando o ano, nome do projeto e link para o projeto.
Assim posso validar e adicionar os alunos no repositório do projeto.
Equipes:
Os projetos são individuais ou em equipes com até 2 participantes;
Equipes de 3 são excepcionais.
Objetivos:
Após aprovação na disciplina o aluno deve saber:
Desenvolver todas as etapas de um projeto de engenharia, incluindo: Ciclo Planejamento e Detalhamento (concepção - especificação e requisitos, elaboração, análise, projeto) e Ciclos de Construção (implementação, testes, depuração, manutenção e documentação);
Utilizar ferramenta de gestão de projetos.
Utilizar ferramenta de modelagem UML, ferramenta de controle de versões e ferramentas para gerar gráficos.
Utilizar sistema de documentação do projeto.
Fazer reuniões online.
Apresentar e defender o projeto desenvolvido, um projeto completo, com licença GPL, disponibilizado no github do LDSC (https://github.com/ldsc).
Desenvolvimento de um software aplicado à modelagem matemática computacional e/ou engenharia utilizando a sequência padrão:
Ciclo Planejamento e Detalhamento (concepção - especificação e requisitos, elaboração, análise, projeto) e Ciclos de Construção (do software usando C++, testes do funcionamento do software; manutenção e documentação do software desenvolvido).
Uso de softwares: modeladores (dia, umbrello), editores (kate, gedit), compiladores (gcc/g++), montadores (make, cmake). IDEs (DEVC++, kdevelop, QtCreator). Sistemas de Controle de Versões (git, github). Entre outras ferramentas usadas no desenvolvimento de softwares de engenharia.
Nota: As ferramentas a serem utilizadas podem mudar, os nomes são apenas indicativos/ilustrativos.
Desenvolvimento de um software aplicado à engenharia utilizando a sequência padrão:
Concepção do sistema(especificação e requisitos), elaboração, desenvolvimento da análise orientada a objeto (diagramas UML), desenvolvimento do projeto do sistema (definição da arquitetura), desenvolvimento do projeto orientado a objeto, implementação do software usando C++, testes do funcionamento do software; manutenção e documentação do software desenvolvido.
Uso de softwares: modeladores (dia, umbrello), editores (kate, gedit), compiladores (gcc/g++), montadores (make, cmake). IDEs (DEVC++, kdevelop, QtCreator). Sistemas de Controle de Versões (git, github). Entre outras ferramentas usadas no desenvolvimento de softwares de engenharia.
Para atender os requisitos mínimos da disciplina o software deve ter:
Interface CLI - Comand Line Interface - Interface de Linha de Comando, com entrada e saída de dados via terminal usando teclado e monitor.
Também é permitido o uso de interface gráfica usando a biblioteca Qt.
Cálculos de nível médio de engenharia, ou seja, associados a disciplinas realizadas no curso (áreas do curso).
Solução de algum problema numérico ou uso de ferramentas numéricas como integração numérica, solver de funções, solver que matrizes (conceitos da disciplina de Cálculo Numérico que é pré-requisito).
Uso de ferramentas de estatística (que é pré-requisito). Dê uma olhada na biblioteca <random> de C++.
Pode ser software educacional, mas, neste caso, os cálculos/gráficos/resultados devem estar diretamente associados a uma ou mais disciplinas do curso.
Softwares educacionais requerem uma interface mais amigável e didática.
Obrigatoriamente deve variar informações/propriedades e gerar resultados a partir desta variação, como exemplo tabelas de dados de entrada e saída, gráficos em 2D e 3D.
Deve ser um problema com escopo bem definido e totalmente desenvolvido usando o modelo disponibilizado. Ou seja, o aluno terá de desenvolver um software de engenharia seguindo o modelo padrão da disciplina.
O aluno deve fazer a apresentação para a turma e defesa do software em prova oral com o professor.
O aluno deve entregar a documentação parcial (capítulos do projeto) via google classroom da disciplina dentro dos prazos especificados.
O projeto do software segue a licença gpl e será público, disponibilizado e compartilhado via github do LDSC.
Material da disciplina (apresentação das aulas), material extra e fontes relacionadas a disciplina são disponibilizados aos alunos via compartilhamento do dropbox.
Veja lista de referências bibliográficas em: Bibliografia Programação
A engenharia de software lida com as diversas etapas e atividades relacionadas ao processo de desenvolvimento de um produto de engenharia, como exemplo um software que realiza cálculos de engenharia. A Figura ilustra um modelo de desenvolvimento. Note que são diversas as etapas e que normalmente são desenvolvidas por uma equipe.
Depois da especificação e definição dos requisitos, temos a elaboração o que inclui a análise de domínio da aplicação.
A modelagem de Software inclui a montagem de diagramas diversos que descrevem o funcionamento do software. Entre eles os algoritmos.
A Figura mostra o relacionamento entre os diagramas da UML