Desenvolvimentos de Sistemas

2024/1 - Turma 0300

Ementa

Desenvolvimento de Sistemas utilizando as técnicas de desenvolvimento de um projeto de software adquiridas no decorrer do curso.

Competências

Ao final da disciplina, o aluno deverá estar apto a integrar os conceitos de programação, engenharia de software, gerência de projetos e outros conceitos da computação apreendidos durante todo o curso, com o objetivo de desenvolver um software proposto.

Objetivos

* Desenvolver e aplicar a comunicação, a argumentação de idéias e o espírito empreendedor e crítico (através da exposição de soluções individuais e em grupo)
* Organizar, sistematizar e solucionar de problemas de forma computacional através do desenvolvimento de um software
* Integrar conceitos de Engenharia de software, Gerência de Projetos, Programação e Técnicas de processamento, análise e visualização da informação com fins do desenvolvimento de software

Programa

* Metodologias de Desenvolvimento de Software
* Gerência de projetos
* Recursos da Engenharia de Software para descrição técnica de software (UML)
* Arquitetura de Software e Padrões de Projeto
* Frameworks e ferramentas para o desenvolvimento de software web (front-end e back-end)
* Desenvolvimento de aplicativos móveis
* Versionamento de código
* Relatório Técnico

Metodologia

Os alunos, reunidos em 3 equipes, devem implementar uma solução baseada de software proposta pelos professores. Como o objetivo da disciplina é simular um ambiente real de desenvolvimento de software, os professores atuam também como orientadores do projeto. Os alunos colocam em prática os conceitos aprendidos em outras disciplinas durante a graduação; além disso, serão direcionados a desenvolverem habilidades de empreendedorismo, marketing e pensamento inovador em negócios. Desta forma, a disciplina se caracteriza como transdisciplinar e requer do aluno não apenas o desenvolvimento do conhecimento técnico a respeito da criação de software, mas também o amadurecimento como indivíduo consciente, que busca resolver problemas de forma criativa e inovadora.

Cada grupo de alunos (times) será responsável pelo desenvolvimento dos requisitos de cada software proposto.

Em relação ao desenvolvimento do software, a metodologia da disciplina segue a ideia geral de uma metodologia de desenvolvimento de software, ou seja, é realizada em fases, de forma iterativa e incremental:

Fase 1 (2 pontos): Definição do escopo: equipe e atribuições; requisitos; definição da Arquitetura do Software; definição de bibliotecas e ferramentas; estimativa do desenvolvimento (utilizando a técnica Planning Poker); planejamento e cronograma do projeto (utilizando a metodologia Scrum)
Fase 2 (1 ponto): Modelagem e Engenharia de Software
Fase 3 (4 pontos): Programação
Fase 4 (1 ponto): Testes
Fase 5 (2 pontos): Entrega

Por ser realizada após a disciplina Modelagem de Sistemas, o desenvolvimento de todos os artefatos de engenharia e modelagem no desenvolvimento não é requerido dos alunos. Entretanto, nas fases 1 e 2 as equipes devem entregar descrições formais e técnicas do software, ainda que de forma reduzida.

Como já informado, seguindo o desenvolvimento iterativo e incremental, estas fases não estão diretamente relacionadas a datas de entregas. Cada entrega deve realizar um passo (iteração) em cada uma das cinco fases. Em sala de aula, o professor e as equipes devem acertar o calendário de entregas. Pelo fato de os grupos seguirem a metodologia Scrum, a cada término de Sprint será feita uma reunião entre a equipe e o professor para avaliar o trabalho realizado, identificar problemas e definir detalhes para o início da próxima sprint.

Na Fase 1, cada equipe deve definir os papeis e atribuições de cada membro no desenvolvimento do software. Uma vez definidos os papeis e as atribuições, as atividades de cada membro serão utilizadas como base para o acompanhamento do rendimento individual. Um membro da equipe deverá assumir a função de líder da equipe (team leader) e será responsável pela comunicação entre o professor e a equipe.

Na Fase 2, cada equipe deve realizar a modelagem do software, criando: Diagrama de Classes, Modelagem da Arquitetura do Software, Modelo de dados.

Na Fase 3, cada equipe deve realizar a programação dos requisitos definidos em cada sprint.

Na Fase 4, cada equipe deve realizar testes no software. As estratégias de testes são determinadas por cada equipe, entretanto, o professor atuará no incentivo para a adoção de boas práticas de teste de software além da aplicação de testes funcionais.

Na Fase 5, cada equipe deve realizar a entrega e a integração do que foi produzido na sprint, entregando o produto em questão para o repositório do projeto do software desenvolvido.

Datas para a entrega dos itens produzidos em cada sala serão definidas em sala de aula, juntamente com os alunos. Atrasos nas entregas serão penalizados (com redução da pontuação para cada item).

Durante o semestre, 03 web aulas (online) serão disponibilizadas em um sistema web, compostas por recursos didáticos - como textos, apresentações e vídeos - e atividades individuais ou em grupo, seguindo as determinações da Portaria MEC nº 2.117, de 06 de dezembro de 2019.

Avaliação

A avaliação da aprendizagem será progressiva de modo que a Pontuação Semestral (PS) é a soma das notas das avaliações de cada etapa do desenvolvimento. A disciplina não possui Avaliação Final (AF), conforme aprovado em Conselho de Curso.
Cada aluno receberá um conjunto de requisitos que deve ser trabalhado durante a disciplina. A avaliação ocorrerá a partir das entregas dos requisitos de cada aluno.

Em cada uma das fases, os grupos são avaliados, conforme os critérios e pontuações definidos a seguir:
* Fase 1: 2 pontos
* Fase 2: 1 ponto
* Fase 3: 4 pontos
* Fase 4: 1 ponto
* Fase 5: 2 pontos

Como estas fases são realizadas a cada sprint, a pontuação final é representada pela soma da pontuação conquistada em cada fase:
*  Fase 1 + Fase 2 + Fase 3 + Fase 4 + Fase 5 = PS

A pontuação de cada Fase inclui a seguinte proporção entre trabalho individual e grupo:
* Trabalho individual: 70%
* Trabalho em grupo: 30%

Desta forma, a avaliação do aluno inclui avaliação individual e em grupo.

Bibliografia

Básica

LARMAN, Craig. Utilizando UML e padrões: uma introdução à análise e ao projeto orientados a objetos. Porto Alegre: Bookman, 2000.

PAGE-JONES, Meilir. Fundamentos do desenho orientado a objeto com UML. São Paulo: Pearson, 2001. E-book. [BV Pearson]. Disponível em: https://plataforma.bvirtual.com.br/Acervo/Publicacao/33. Acesso em: 30 mar. 2022.

PRESSMAN, Roger S.; MAXIM, Bruce R. Engenharia de software: uma abordagem profissional. Tradução [de] Francisco Araújo da Costa. 9. ed. Porto Alegre: AMGH, 2021. E-book. [Minha Biblioteca]. Disponível em: https://integrada.minhabiblioteca.com.br/reader/books/9786558040118. Acesso em: 30 mar. 2022.

Complementar

FOWLER, Martin. UML Distilled. 2. ed. Boston: Addison-Wesley, 2000.

FURLAN, José Davi. Modelagem de objetos através da UML - the unified modeling language. São Paulo: Makron, 1998.

GAMMA, Erich; HELM, Richard; RALPH, Johnson; VLISSIDES, John. Padrões de projeto: soluções reutilizáveis de software orientado a Objetos. Porto Alegre: Bookman, 2007. E-book. [Minha Biblioteca]. Disponível em: https://integrada.minhabiblioteca.com.br/reader/books/9788577800469. Acesso em: 1 abr. 2022.

MARTINS, José Carlos Cordeiro. Gestão de projetos de desenvolvimento de software: PML - UML. Rio de Janeiro: Brasport, 2002.

QUATRANI, Terry. Modelagem visual com Rational Rose 2000 e UML. Rio de Janeiro: Moderna. 2001.

Material Digital

Explorando o Design Participativo como Prática de Desenvolvimento de Sistemas de Informação. (https://www.revistas.usp.br/incid/article/view/64103)

Ferramenta para desenvolvimento de aplicativos mobile. (https://flutterflow.io/)

Informações da Turma
Curso
Sistemas de Informação
Período: 7
Carga Horária: 76h
Horário: 5N
Sala: