Tornar os alunos capazes de projetar, implementar e testar sistemas de software avançados, usando conceitos e técnicas de engenharia de software e banco de dados de maneira integrada e evolutiva. Os sistemas serão desenvolvidos em times, de maneira colaborativa, e de modo a priorizar clareza de código e extensibilidade.
Princípios e técnicas de desenvolvimento de sistemas de software. Testes de software. Persistência de dados. Modelo entidade relacionamento e modelo relacional.
Técnicas para coleta de requisitos, modelagem, projeto e implementação de sistemas de software. Conceitos de projetos de sistemas avançados. Qualidade de software. Gerência e manutenção de software. Persistência de dados: projeto conceitual, lógico e físico de bancos de dados. Modelo entidade relacionamento e modelo relacional: álgebra relacional, cálculo relacional e linguagem SQL. Controle de Concorrência.
Bibliografia básica: 1- M.T. Valente. Engenharia de Software Moderna: Princípios e Práticas para Desenvolvimento de Software com Produtividade, Editora: Independente, 2020. Disponível em https://engsoftmoderna.info/ 2- C.J. Date, Introdução a Sistemas de Bancos de Dados, 8a. edição, Campus, 2004. 3- R. Elmasri, S.B. Navathe, Fundamentals of Database Systems, 4th ed., Addison-Wesley, 2003. Bibliografia complementar: 1- J.E. Ferreira, M. Finger, Controle de concorrência e distribuição de dados: a teoria clássica, suas limitações e extensões modernas, Coleção de textos especialmente preparada para a Escola de Computação, 12a, São Paulo, 2000. 2- M.F. Aniche. Effective software testing : a developer's guide. Shelter Island, NY, Manning, 2022. 3- C. Larman, Applying UML and Patterns, Prentice Hall, 2004. 4- E. Freeman, E. Robson, B. Bates, K. Sierra, Head First Design Patterns, O'Reilly . 2004. 5- A. Fox, D. Patterson, Construindo Software como Serviço (SaaS): Uma Abordagem Ágil Usando Computação em Nuvem, Strawberry Canyon, 2015.