Logo IC/UFF Leonardo Gresta Paulino Murta
Associate Professor, IC/UFF
D.Sc., COPPE/UFRJ, 2006
M.Sc., COPPE/UFRJ, 2002
B.Sc., IC/UFRJ, 1999
Picture

Menu:

Engenharia de Software II

Logística

Disciplina: TCC00293 - Engenharia de Software II

Data: terças e quintas, de 7:00 às 9:00

Sala: 215

Ambiente virtual: Google Classroom

Ementa

Avaliação

\[Media = \frac{3 \times Prova_1 + 3 \times Prova_2 + 2 \times Trabalho}{8}\]

APROVADO

\[Presenca \geq 75\% \land Media \geq 6\]

VERIFICAÇÃO SUPLEMENTAR

\[Presenca \geq 75\% \land 4 \leq Media < 6\]

Será aprovado na VS se tirar nota maior ou igual a 6.

Obs.: Nenhum aluno poderá sair da sala nos primeiros 30 minutos de prova. Depois de 30 minutos, quem terminar poderá sair. Contudo, depois que o primeiro aluno sair, nenhum aluno poderá entrar. Desta forma, se organize para ser pontual.

Trabalho

O curso terá um trabalho feito em grupos de 6 participantes, que devem ser constituídos preferencialmente na primeira semana de aula e ter a mesma formação até o final do curso. Cada grupo deve se enxergar como uma pequena software house. O tema do trabalho consiste em fazer um sistema de chamada inteligente. É esperado que os grupos, durante o decorrer do curso, utilizem as técnicas aprendidas para gerenciar o projeto e desenvolver o produto. Será avaliado o produto final e como esse produto foi desenvolvido (processos e técnicas aplicados). O produto final deve ser disponibilizado publicamente, com licença aberta (sugiro licença MIT).

Desde o início do trabalho, os grupos devem registrar as tarefas alocadas para cada membro do grupo, assim como as horas previstas para realização da tarefa e as horas efetivamente realizadas na tarefa. Essa informação será fundamental para viabilizar o Monitoramento e Controle do projeto. Além disso, apesar da matéria de testes ser dada somente no final do curso, escolham um framework de testes de unidade popular para a linguagem de programação adotada pelo grupo e iniciem a escrita dos testes desde já. Tirem dúvidas no Google Classroom caso necessário.

Foram reservados 3 momentos para apresentações de 15 minutos por grupo. O grupo deve utilizar slides nas apresentações e publicar esses slides no Google Classroom no dia das apresentações.

A primeira apresentação deve conter o escopo do produto (requisitos) e do projeto (EAP), as estimativas de esforço (tanto via APF quanto via somatório dos pacotes de trabalho da EAP) e custo, o orçamento e o cronograma de desenvolvimento (Gantt). Por fim, deve ser apresentada a versão parcial do produto feita até então (demo).

A segunda apresentação deve conter uma atualização das estimativas de esforço (usando Planning Poker), custo e orçamento do projeto, assim como a sua análise de riscos (listagem, probabilidade x impacto, priorização pela exposição e planos de contenção e contingência). Por fim, devem ser apresentados os dados de monitoramento e controle do projeto (Burndown dentro de cada iteração e Análise de Valor Agregado ao final de cada iteração) e a versão parcial do produto feita até então (demo).

A terceira apresentação deve conter o controle de versões (e.g., Git) e controle de modificações (e.g., GitHub Issues) usados no projeto, a estratégia de ramificação adotada e o endereço do repositório. Será considerado um bônus usar Pull Request com aprovações e integração contínua (e.g., GitHub Actions). Vale ressaltar que o repositório de controle de versões deve conter todos os artefatos produzidos durante o trabalho. O grupo também deve apresentar como foram feitos os testes de unidade, integração, sistema e aceitação (alfa e beta) no projeto (casos e resultados dos testes). Por fim, devem ser apresentados os dados de monitoramento e controle do projeto (conforme descrito anteriormente) e a versão final do produto (demo). Caso o grupo deseje que o professor pondere a nota por membro do grupo, deve ser informada nesta apresentação a participação de cada membro do grupo no trabalho (PV e EV de cada membro).

Essas apresentações serão avaliadas pela sua completude e corretude e capacidade de argumentação em relação às decisões tomadas. Essas decisões devem ser fundamentadas nos princípios estudados durante o curso. Essas apresentações e entregas devem ser feitas nas datas estipuladas na seção Cronograma.

Listas de exercícios

As listas de exercícios devem ser feitas individualmente e entregues no Google Classroom dentro do prazo definido na seção de Cronograma. Caso, no final do curso, o aluno esteja com média entre 5,5 e 6,0, as listas serão corrigidas podendo somar até 0,5 pontos na média, eventualmente arredondando a média para 6,0. Não serão aceitas entregas fora do prazo.

Obs.: Caso tenha dificuldade de fazer alguma questão, verifique se não é referente a uma matéria que está para ser apresentada nas próximas aulas.

Ferramentas

No curso não temos uma ferramenta obrigatória. Os grupos devem aproveitar essa oportunidade para experimentar ferramentas que ainda não conhecem ou mesmo aprofundar os conhecimentos em ferramentas já conhecidas.

Existem várias ferramentas proprietárias e livres que apóiam os diferentes tópicos tratados neste curso: gerência de projetos, estimativas, controle de versões, controle de modificações, gerenciamento de construção, integração contínua, hospedagem de projetos, testes de unidade, testes de interface, testes de carga e profiling.

Bibliografia

Visando um maior aprofundamento, as aulas foram baseadas em diversos livros. Não é esperado que todos esses livros sejam lidos pelos alunos durante o curso, mas podem ser consultados no caso de dúvidas específicas em um determinado assunto da matéria. A seguir, são listadas as referências completas dos principais livros utilizados. Apesar de essas referências estarem em inglês, muitos desses livros têm versões em português.

Greene, J.; Stellman, A.; 2007. Head First PMP. O’Reilly Media.

Larman, C.; 2007. Utilizando UML e Padrões: uma introdução à análise e ao projeto orientados a objetos e ao desenvolvimento iterativo. Bookman

Orth, A.; Prikladnicki, R.; 2009. Planejamento e Gerência de Projetos. EDIPUCRS.

Pilone, D.; Miles, R.; 2008. Head First Software Development. O’Reilly Media.

Pressman, R. S.; 2004. Software Engineering: A Practitioner’s Approach. 6 ed. McGraw-Hill.

Schwaber, K.; 2004. Agile Project Management with Scrum. Microsoft Press.

Cronograma

Data Atividade Entrega
29/08/2023 Aula - Apresentação da disciplina  
31/08/2023 Aula - Processo de desenvolvimento de software  
05/09/2023 Aula - Processo de desenvolvimento de software  
07/09/2023 Sem aula (Independência do Brasil)  
12/09/2023 Aula - Planejamento de projetos  
14/09/2023 Aula - Planejamento de projetos  
19/09/2023 Aula - Planejamento de projetos  
21/09/2023 Aula - Planejamento de projetos  
26/09/2023 Sem aula (CBSoft)  
28/09/2023 Sem aula (CBSoft) Vídeo com a apresentação de trabalho (1a. rodada)
03/10/2023 Aula - Gerência de riscos e Monitoramento e controle  
05/10/2023 Aula - Gerenciamento ágil Listas 1 a 4
10/10/2023 Prova 1  
12/10/2023 Sem aula (Nossa Senhora Aparecida)  
17/10/2023 Sem aula (Agenda Acadêmica)  
19/10/2023 Sem aula (Agenda Acadêmica)  
24/10/2023 Apresentação de trabalho (2a. rodada) Slides
26/10/2023 Apresentação de trabalho (2a. rodada) Slides
31/10/2023 Aula - Gerência de configuração  
02/11/2023 Sem aula (Finados)  
07/11/2023 Aula - Gerência de configuração  
09/11/2023 Aula - Git  
14/11/2023 Aula - Verificação, validação e testes (slides)  
16/11/2023 Aula - Verificação, validação e testes (slides)  
21/11/2023 Aula - Garantia da Qualidade, medição e melhoria  
23/11/2023 Aula - Manutenção de software  
28/11/2023 Apresentação de trabalho (3a. rodada) - grupos 1, 4, 6 e 8 Slides
30/11/2023 Apresentação de trabalho (3a. rodada) - grupos 2, 3, 5 e 7 Slides e Listas 5 a 7
05/12/2023 Prova 2  
07/12/2023 Segunda chamada  
12/12/2023 Vista de prova (7h às 8h) na sala 433  
14/12/2023 Verificação suplementar  
19/12/2023 Vista de prova (7h às 8h) na sala 433