Métodos de Desenvolvimento de Software - Plano de Ensino

Disciplina: Métodos de Desenvolvimento de Software

Carga Horária: 60 horas

Professor: Carla Rocha

Créditos: 04

Semestre/Ano: 01/2025

Objetivos da Disciplina

Os métodos de desenvolvimento de software podem ser entendidos como conjuntos estruturados de boas práticas, repetíveis durante o processo de produção do software. Os principais objetivos da disciplina são:

  • Capacitar o aluno a compreender os diferentes métodos, ferramentas, procedimentos e complexidades do desenvolvimento de software.
  • Capacitar o aluno a aplicar/adaptar processos de desenvolvimento de software à resolução de problemas de software.
  • Capacitar os estudantes a construírem sistemas complexos, apresentando as habilidades técnicas e não técnicas necessárias para a construção de software no contexto atual da Indústria.

Ementa do Programa

  • Modelos de ciclo de vida e de processos; Processo Unificado. Métodos Ágeis de desenvolvimento de software. Outras abordagens de desenvolvimento de software. Ferramentas.

Metodologia de Ensino

Uma estratégia eficaz de aprendizagem deve integrar conceitos teóricos com sua aplicação prática, seguindo o princípio de “aprender fazendo”. Sem prática, não há aprendizado significativo. Portanto, o processo de ensino-aprendizagem deve incluir duas etapas fundamentais: sessões de assimilação de conceitos teóricos e sessões de prática.

A disciplina utiliza aprendizagem por experiência, aprendizagem orientada a projetos, processo de Onboarding e práticas de comunidades Open source para que o aluno seja ativo no seu processo de aprendizagem.

Formação das Equipes

A turma deve se dividir em equipes ágeis, de até 6 membros por time. Serão apresentados temas de projeto e cada grupo escolhe 3 temas na ordem de preferência. A professora negocia e aloca os temas para o grupo, dentro das preferências.

  • Planilha para definição dos grupos e temas está aqui

Canais de Comunicação

A disciplina será realizada de forma presencial na sala Mocap. Serão disponibilizados tanto material assíncrono quanto aulas síncronas.

Dúvidas, conversas rápidas, avisos

Aulas Assíncronas

  • Vídeos disponibilizados no YouTube - Canal YouTube
  • Leituras sugeridas na sprint - disponibilizadas no planejamento das aulas

Planejamento das Aulas

  • O planejamento das aulas semanais, discriminando se são assíncronas ou síncronas, e qual canal será atualizado, estará disponível no início da semana no link

Descrição do Programa

Processos de Desenvolvimento de Software

  • Modelos de Processo de Desenvolvimento de Software (ciclo de vida)
  • Atividades de Processo

Fundamentos do Extreme Programming

  • O manifesto Ágil
  • Os Quatro valores e as Quatro variáveis
  • Práticas ágeis
  • O jogo do planejamento
  • Releases Pequenas
  • A metáfora
  • Histórias do Usuário
  • Desenho simples
  • Testes (unitário, aceitação)
  • Refatoração
  • Programação em Pares
  • Desenvolvimento Coletivo

Fundamentos do Processo Unificado de Desenvolvimento de Software

  • Conceitos
  • Fases: Iniciação, Elaboração, Construção e Transição
  • Disciplinas (Modelagem de Negócio, Requisitos, Análise e Desenho, Implementação, Teste, Gerenciamento de Projeto, Gerência de Configuração e Mudanças, Implantação e Ambiente)

Avaliações e Critérios de Avaliação

A avaliação será feita por meio da avaliação individual do desempenho do aluno no ciclo de projeto. O objetivo do Projeto simula uma situação real de desenvolvimento. Os alunos de MDS irão se concentrar na execução metodologia de desenvolvimento através da especificação de requisitos, codificação e testes. Haverá duas avaliações formais das releases a serem desenvolvidas.

A nota final do aluno é calculada da seguinte forma:

Nota Final = (Provas) * 0,20 + (Critério de Avaliação Individual) * 0,40 + (Nota individual Release 1) * 0,2 + (Nota individual Release 2) * 0,2

Os critérios estão detalhados nesse documento

Para o aluno satisfazer os seguintes requisitos para obter a aprovação na disciplina:

  • Aprovação se MF >= 5,0 e se Percentual de faltas (PF) for

PF <= 25%. Onde PF é dado pelo número de aulas com faltas registradas dividido pelo número de aulas ministradas.

  • Reprovação se MF < 5,0 ou se PF > 25%. Nessa situação, o aluno será considerado reprovado por nota ou por falta.

Os critérios avaliados individualmente no projeto estão destacados na tabela abaixo:

Evento da Avaliação Individual no Projeto
Código/Entrega
Documentação
Coerência - Documentos e Código
Critério Extra
Histórias e Planejamento da Release
Testes Automatizados e Cobertura de Código > 90%
Tracking
Wiki Atualizada
Software Implantado e Disponível para Uso
PA - pareamento
PA - reunião de planejamento da sprint
PA - planning poker
PA - sprint time box
PA - participação nas dailies
PA - review com o cliente
PA - retrospectiva na sprint
PA - user stories
PA - risco sustentável de trabalho
PA - código escrito com padrões
PA - plano de comunicação
PA - comunicação técnica nas issues
PA - pull requests educativos
PA - práticas de comunidades de software livre

Avisos

  • Também são considerados critérios de avaliação da participação: assiduidade; pontualidade; interesse; participação em sala.
  • Os documentos referentes à disciplina estarão disponíveis em: https://github.com/fga-eps-mds/Qualifying-Software-Engineers-Undergraduates-in-DevOps
  • Os projetos são avaliados continuamente.
  • A cobertura de código deverá ser 90%, excetuando a camada de apresentação.
  • O tamanho dos times deve respeitar o limite máximo de 6 membros.
  • As atividades do projeto deverão ser organizadas por meio de issues e milestones.
  • O código-fonte e demais artefatos elaborados deverão ser revisados utilizando pull/merge requests e issues.
  • As provas não são pré agendadas.

Datas das Releases 1 e 2

Entregáveis R1 e R2 Nos slides

  • Release 1 (major) - 07 a 09 de maio de 2025.
  • Release 2 (major) - 09-11 de julho de 2025.

Bibliografia Básica

  • (OPENACCESS) Rocha, Carla. Como Acelerar o Aprendizado e Disseminar a Cultura de Inovação Ágil - https://rochacarla.github.io/Onboarding/
  • Beck, K., Programação Extrema (XP) Explicada, 1st ed. Bookman, 2004
  • Ken Schwaber e Jeff Sutherland - O Guia Definitivo para o Scrum: As Regras do Jogo - Disponível em português em https://scrumguides.org
  • Sommerville, I., Engenharia de Software. 8th ed., Pearson Addison Wesley, 2007.
  • Engenharia de Software Moderna
  • Alves, Isaque, Rocha, Carla. Qualifying Software Engineers Undergraduates in DevOps - Challenges of introducing technical and non-technical concepts in a project-oriented course - http://arxiv.org/abs/2102.06662
  • Jacobson, I., Booch G., Rumbaugh J., The Unified Software Development Process, 1st ed., Addison-Wesley, 1999.
  • [EBRARY] Lano, K., UML 2 Semantics and Applications, 1st ed., Wiley, 2009.
  • OPENACCESS Scrum e XP direto da sTrincheiras

Bibliografia Complementar

  • Pfleeger, S. L., Engenharia de Software: Teoria e Prática. 2nd ed., Prentice Hall, 2004.
  • Pressman, R. S., Engenharia de Software. 6th ed., McGraw-Hill, 2006.
  • Ambler, S., Agile Modeling: Effective Practices for eXtreme Programming and the Unified Process, 1st ed., Wiley, 2002
  • Jacobson, I., Booch G., Rumbaugh J., UML: Guia do Usuário, 2nd ed., Elsevier, 2005.
  • [OPEN ACCESS] Scrum e XP direto das Trincheiras. (http://www.infoq.com/br/minibooks/scrum-xp-from-the-trenches)



Projetos 2025/1

Confira abaixo a lista de projetos que serão desenvolvidos ao longo do 1º semestre de 2025 na disciplina.

Tema do semestre:

📊 “Como posso usar dados para dar inteligência?”

Diferente de outros semestres, as equipes não poderão propor temas próprios. Em vez disso, cada equipe deverá selecionar três opções de projeto em ordem de preferência. A alocação será feita com base nessas escolhas.

Como fazer boas apresentações Dicas de slides - https://www.ime.usp.br/~kon/ResearchStudents/dicasSlides.html



1. Desenvolvimento do Aplicativo MEPA – Monitoramento da Qualidade Energética

📌 Descrição:
O projeto MEPA tem como objetivo desenvolver um aplicativo para monitoramento da qualidade energética, permitindo que gestores acompanhem em tempo real os dados de energia.

Este projeto faz parte de uma iniciativa maior da Universidade de Brasília (UnB) para consolidá-la como a 4ª universidade mais sustentável do Brasil. Além do monitoramento, será implementado um sistema de recomendação para sugerir os contratos mais adequados para os principais consumidores de energia da instituição.

Atualmente, a solução web já está em produção e conta com uma API disponível para acesso aos dados. A UnB instalou equipamentos de medição em diversos pontos estratégicos do campus para coletar indicadores sobre a qualidade e disponibilidade da eletricidade. Esses dados são transmitidos por meio da rede para um sistema centralizado, permitindo armazenamento, monitoramento contínuo e uso em pesquisas.

🔗 Acesse a documentação do projeto

Detalhes do Projeto

  • 🛠 Habilidades necessárias: Python, React, Front-end, Visualização de Dados
  • Carga horária estimada: 350 horas
  • ⚙️ Complexidade: Baixa
  • 🌎 Tópicos relacionados: IoT, Sistemas Distribuídos, Monitoramento de Energia, DevOps, DataViz

👨‍🏫 Mentor:


2. Análise de Sentimentos dos Comentários do Brasil Participativo

📌 Descrição:
A Plataforma Brasil Participativo é a maior plataforma de participação social do governo federal do Brasil, reunindo mais de 1,5 milhão de usuários em apenas três meses. Criada para permitir que a população contribua com a formulação e aprimoramento de políticas públicas, a plataforma foi desenvolvida com software livre, com apoio da Dataprev, da comunidade Decidim-Brasil, do Ministério da Gestão e Inovação em Serviços Públicos (MGI) e do LAPPIS.

O Brasil Participativo OSS adapta os processos participativos do framework Decidim para o contexto brasileiro. Atualmente, a comunidade Decidim Brasil conta com mais de 200 participantes, enquanto a iniciativa OSS Brasil Participativo já mobilizou mais de 100 colaboradores diretos e indiretos em seu primeiro ano. O Brasil se destaca como um dos principais usuários dessa ferramenta em nível nacional, devido às suas funcionalidades robustas, adaptabilidade, custo reduzido e forte compromisso com a transparência.

Objetivo do Projeto

O projeto visa criar uma ferramenta para análise de sentimentos dos comentários postados na plataforma Brasil Participativo. A ideia é usar um modelo de machine learning de código aberto, sem depender de soluções proprietárias como o ChatGPT.

🚀 Características da solução:
Sem back-end: Toda a interface será desenvolvida usando Jekyll
Captura de comentários via API: Os comentários serão extraídos da API GraphQL da plataforma
Automação por bots: Tanto a captura de dados quanto a análise de sentimentos serão realizadas por bots desenvolvidos para essa finalidade

🔗 Acesse a documentação do projeto

Detalhes do Projeto

  • 🛠 Habilidades necessárias: Python, Machine Learning, Visualização de Dados
  • Carga horária estimada: 350 horas
  • ⚙️ Complexidade: Alta
  • 🌎 Tópicos relacionados: Análise de Sentimentos, Opinião Pública, Participação Social

👨‍🏫 Mentor:

  • Nome: Bruna pinos

3.GovHubbr - Análise de Gastos Públicos IPEA - Geração Automática de Relatórios Inteligentes

📌 Descrição:
O projeto GovHubbr é uma iniciativa do Laboratório de Software Livre (Lab Livre) da UnB em parceria com o Instituto de Pesquisa Econômica Aplicada (IPEA), com o objetivo de melhorar a gestão e integração dos sistemas de dados estruturais do governo brasileiro.

Os sistemas financeiros do governo armazenam informações essenciais sobre orçamentos, pessoal e estrutura organizacional, mas enfrentam desafios como redundância de dados, inconsistências e falta de interoperabilidade, dificultando a tomada de decisões baseada em evidências.

Para resolver esses problemas, o projeto desenvolve uma solução tecnológica de código aberto que integra e qualifica dados, permitindo melhor acesso, confiabilidade e usabilidade para gestores públicos e sociedade. Com o uso de automação e tecnologias abertas, a iniciativa permite a extração, transformação e visualização eficiente dos dados governamentais, promovendo transparência e eficiência na administração pública.

🌎 Palavras-chave: IPEA, Universidade de Brasília (UnB), Gestão de Dados, Open Source

4. Relatórios do IPEA

Objetivo do Projeto

O foco deste projeto é a geração automática de relatórios inteligentes para análise dos dados financeiros do IPEA.

📊 Desafios a serem resolvidos:
✅ Construção de painéis interativos para visualizar os dados financeiros em tempo real.
✅ Aplicação de modelos de Processamento de Linguagem Natural (NLP) para geração automática de textos com base na análise de dados financeiros.
✅ Implementação de resumos automatizados de tendências financeiras e alertas para gestores públicos.
Restrições: Apenas modelos de NLP de código aberto podem ser utilizados, sem dependência de tecnologias proprietárias como ChatGPT.

🛠 Ferramentas e Tecnologias:

  • A plataforma será desenvolvida usando Streamlit, com HTML e CSS customizados para uma interface intuitiva e visualmente rica.
  • Modelos de Machine Learning e NLP (generativa/bert topic) serão aplicados para extrair insights e gerar relatórios automatizados.

🔗 Acesse a documentação do projeto

Detalhes do Projeto

  • 🛠 Habilidades necessárias: Python, Machine Learning, NLP, Visualização de Dados, Streamlit
  • Carga horária estimada: 350 horas
  • ⚙️ Complexidade: alta

👨‍🏫 Mentor:

  • Nome: Joao

🚀 Diferenciais:
Automação inteligente na análise de dados financeiros.
Transparência e eficiência na administração pública.
Código aberto, permitindo escalabilidade e reuso da solução por outras instituições.


🗳️ 5.Aplicativo de Votação Presencial com Rede Local

📌 Descrição do Projeto
Este aplicativo tem como objetivo viabilizar votações presenciais em ambientes com conexão à internet limitada ou inexistente. A proposta é utilizar uma rede interna local via protocolo UDP, onde um usuário master compartilha as questões a serem votadas, e os demais participantes da rede podem registrar seus votos (a favor, contra ou abster-se).

A aplicação é ideal para plenárias presenciais, assembleias ou reuniões, garantindo transparência, rapidez e visualização dos resultados em tempo real, mesmo em ambientes isolados da internet.

🔧 Funcionalidades esperadas:

  • Comunicação local via UDP
  • Interface simples para envio de questões e votação
  • Registro de votos com três opções
  • Visualização em tempo real dos resultados

🌎 Palavras-chave: Universidade de Brasília (UnB), Gestão de Dados, Plenária, Open Source

👨‍🏫 Mentoria:

  • Bruna Pinos

🗺️ 6. Mapeamento com Acessibilidade para Atividade Comunitária

📌 Descrição do Projeto
Este projeto tem como objetivo desenvolver uma plataforma colaborativa de mapeamento, voltada para apoiar atividades comunitárias com foco em acessibilidade. A ideia é permitir que os usuários cadastrem e consultem locais que sejam acessíveis para pessoas com deficiência ou mobilidade reduzida — como espaços culturais, centros comunitários, feiras e eventos públicos.

A ferramenta pode ser usada tanto por organizações sociais quanto por moradores locais, fortalecendo a inclusão, a cidadania e a participação comunitária.

🎯 Objetivos principais:

  • Criar um mapa interativo de locais acessíveis
  • Permitir que a comunidade colabore com informações e avaliações
  • Incluir filtros de acessibilidade (rampa, piso tátil, banheiro adaptado etc.)
  • Visualização geográfica e busca por tipo de atividade ou região

🌎 Palavras-chave: Acessibilidade, Cidadania, Mapeamento Colaborativo, Open Source, Comunidade

👨‍🏫 Mentoria:

  • (Definir mentor/a)

🧠 7. Cluster de Propostas

📌 Descrição do Projeto
A plataforma Brasil Participativo permite que cidadãos enviem propostas e participem ativamente de decisões do governo. Este projeto tem como objetivo extrair todas as propostas da plataforma e aplicar técnicas de clusterização, agrupando as ideias por similaridade temática.

A clusterização visa identificar padrões, temas recorrentes e ajudar na sistematização das demandas da população, oferecendo uma visão estruturada que pode apoiar análises qualitativas e tomadas de decisão mais embasadas.

🔧 Atividades-chave:

  • Exportar e organizar as propostas públicas da plataforma
  • Aplicar modelos de NLP para pré-processamento textual
  • Utilizar algoritmos de clusterização (como K-Means, HDBSCAN, etc.)
  • Apresentar os resultados de forma acessível e interativa

🗂️ TODO:

  • Automatizar a exportação de propostas do Brasil Participativo
  • Gerar e entregar um dataset limpo e utilizável

🌎 Palavras-chave: Brasil Participativo, Clusterização, NLP, Participação Cidadã, Open Source

👨‍🏫 Mentoria:

  • (Definir mentor/a)

🏗️ 8. Obras BSB

📌 Descrição do Projeto
O projeto Obras BSB tem como objetivo evoluir a aplicação desenvolvida no semestre anterior, focada na transparência e monitoramento de obras públicas no Distrito Federal. Nesta nova fase, o foco estará em melhorar a experiência do usuário, refinar a visualização das obras em atraso e realizar uma análise qualitativa dos tipos de obras com o auxílio do modelo de linguagem DeepSeek.

A ideia é tornar a plataforma ainda mais útil para cidadãos, jornalistas e gestores públicos que buscam acompanhar a execução de obras públicas com mais clareza e inteligência.

🔍 Melhorias previstas:

  • Interface mais intuitiva e responsiva
  • Filtros e destaques para obras em atraso
  • Análises textuais e categorização de obras com IA (DeepSeek)
  • Reforço na acessibilidade e usabilidade

🌐 Link do Projeto Anterior:
DFemObras – GitHub Pages

🌎 Palavras-chave: Transparência, Gestão Pública, Obras Públicas, Visualização de Dados, Open Source

👨‍🏫 Mentoria:

  • (Definir mentor/a)

📝 11. Concurso

📌 Descrição do Projeto
Este projeto tem como objetivo evoluir a aplicação Concursei_BR, desenvolvida para facilitar o acesso a informações sobre concursos públicos no Brasil. Nesta nova fase, o foco estará em melhorar o HTML/CSS da aplicação, além de enriquecer o conteúdo com informações detalhadas sobre vagas, carreiras e requisitos.

O projeto também explorará o uso de modelos de linguagem como o DeepSeek para interpretar e classificar automaticamente os dados textuais das vagas, oferecendo uma experiência mais rica e personalizada para o usuário.

🎯 Objetivos principais:

  • Refatorar e melhorar o layout da aplicação (HTML/CSS)
  • Adicionar descrições completas das vagas e carreiras públicas
  • Aplicar NLP com DeepSeek para classificar e interpretar os textos das vagas
  • Oferecer filtros mais inteligentes e uma navegação mais fluida

🔗 Repositório do Projeto:
github.com/unb-mds/2024-2-Concursei_Br

🌎 Palavras-chave: Concurso Público, Visualização de Dados, Governo Aberto, NLP, Open Source

👨‍🏫 Mentoria:

  • (Definir mentor/a)

🔐 10. Biometria por Voz

📌 Descrição do Projeto
Este projeto propõe o desenvolvimento de uma funcionalidade de login por biometria de voz, utilizando bibliotecas de reconhecimento de voz. A ideia é permitir que usuários possam se autenticar no sistema com base em características únicas da sua voz, oferecendo uma alternativa prática e segura às formas tradicionais de login (senha, PIN, etc.).

Essa funcionalidade pode ser integrada a outros sistemas, aumentando a acessibilidade, a usabilidade e a segurança de aplicações que exigem autenticação de usuários.

🎯 Funcionalidades Esperadas:

  • Captura e registro da voz do usuário
  • Autenticação por comparação com o padrão de voz previamente salvo
  • Uso de bibliotecas open source de reconhecimento de voz
  • Integração com sistemas de login já existentes

🌎 Palavras-chave: Autenticação, Reconhecimento de Voz, Biometria, Open Source

👨‍🏫 Mentoria:

  • (Definir mentor/a)