BCC322 - Engenharia de Software I - 2021-1

Carga horária da disciplina: 4 horas/aula


Professor(es) em 2021-1

Turma 11 Professor:
Tiago Garcia de Senna Carneiro - www | e-mail

Horários:
Terça-feira (15h20 - 17h00)
Quinta-feira (15h20 - 17h00)

Objetivos

Ao final do curso é esperado que o aluno:
Explicar o ciclo de vida de um software por meio de exemplos, ilustrar suas fases e entregáveis que devem ser produzidos;
Selecionar modelos e processos para o desenvolvimento e manutenção de projetos de software para diferentes domínios de aplicação;
Explicar o papel dos modelos de maturação do processo de desenvolvimento de software;
Comprar diferentes modelos de desenvolvimento de software: modelo ágil, modelo incremental, modelo em cascata, entre outros;
Analisar e avaliar um conjunto de ferramentas de suporte ao desenvolvimento de software (gestão, modelagem, test, etc);
Aplicar ferramentas para o desenvolvimento de um produto de software de médio porte;
Aplicar elementos chave e métodos comuns à elicitação e análise de requisitos para o desenvolvimento de um produto de software de médio porte;
Discutir os desafios na manutenção de software legado;
Identificar as principais questões associadas à evolução de software e explicar seus impactos ao ciclo de vida do software;
Discutir os desafios encontrados na manutenção de software legado e a necessidade da engenharia reversa;
Identificar pontos fracos em um projeto de software e mostrar como eles podem ser removidos através da re-engenharia;
Demonstrar por meio do envolvimento em um projeto de software colaborativo, os elementos centrais da criação e gestão de equipes de desenvolvimento de software;
Preparar um plano de projeto para um produto de software de médio porte que inclua: estimativa de tamanho e esforço, cronograma, alocação de recursos, controle de configuração, gestão de mudanças (escopo) e identificação e gestão de riscos.
Distinguir entre verificação e validação de software;
Descrever o papel das ferramentas para a validação de software;
Distinguir entre os diferente tipos e níveis de teste (módulo, integração, sistema e aceitação);
Criar, avaliar e implementar um plano de testes para um produto de software de médio porte;
Discutir as questões relacionadas ao teste de software orientador por objeto;

Ementa

Modelagem clássica; modelagem orientada a objetos; projeto orientado a objetos; desenvolvimento modular; desenvolvimento dirigido por API (Application Programming Interface); qualidade de software; reuso de software; ferramentas para desenvolvimento de software; evolução de Software; a pesquisa e o futuro da Engenharia de Software.

Conteúdo Programático

- Modelagem Clássica
        - Especificações
        - Modelo entidade-relacionamento
        - Diagramas de fluxo de dados
        - Máquinas de estado
- Modelagem Orientada a Objetos
        - Extração e representação de classes.
        - Unified Modeling Language (UML)
        - Diagrama de classes
        - Diagrama de sequência
        - Diagrama de colaboração
        - Diagrama de objetos
        - Diagrama de atividades
        - Diagrama de estados
- Projeto Orientado a Objetos (OO)
        - Conceitos e principais fundamentos de projeto OO
        - Padrões de Projeto de software
        - Arquitetura de software
- Desenvolvimento modular
        - Fraco acoplamento, alta coesão, encapsulamento de informação e eficiência
        - Projeto de Software Dirigido por API (Application Programming Interface)
        - Reuso das (APIs) amplamente utilizadas na indústria de software
        - Projeto para reuso
- Qualidade de software
        - Confiabilidade
        - Manutenabilidade
        - Usabilidade
        - Desempenho
        - Reusabilidade
- Reúso de software
        - Tipos de reúso
        - Geradores de código
        - Desenvolvimento baseado em componentes e frameworks
        - Desenvolvimento baseado em aspectos
        - Engenharia de domínio
        - Linha de Produto de Software.
- Ferramentas
        - Ambientes de programação (Integrated Development Environment – IDE)
        - Ferramentas para modelagem e projeto de software
        - Ferramentas de teste para análise estática e dinâmica de software
        - Ferramentas para o controle de código e desenvolvimento colaborativo (time)
        - Ferramenta de suporte e integração de software
- Evolução de Software
        - Manutenção de software
        - Reengenharia e engenharia reversa
- A Pesquisa e o futuro da Engenharia de Software
        - Cenário atual da pesquisa em Engenharia de Software
        - Engenharia de Software Experimental
        - Problemas em aberto

Bibliografia

- SOMMERVILLE, Ian. Engenharia de software. 9. ed. São Paulo: Addison Wesley, 2011. 529 p. ISBN 8588639076.
- GAMMA, Erich. Design patterns elements of reusable object-oriented software / Erich Gamma ... [et al.].. Reading: Addison Wesley, 1995. 395 p. (Addison-Wesley Professional Computing Series). ISBN 0201633612 (enc.).
- SCHWABER, Ken. Agile project management with Scrum. Redmond, Wash.: Microsoft Press, c2004. xix, 163 p. ISBN 073561993X (broch.).
- CRISPIN, Lisa; GREGORY, Janet. Agile testing: a practical guide for testers and agile teams. Upper Saddle River, NJ: Addison Wesley, c2009. xli, 533 p. (The Addison-Wesley signature series). ISBN 9780321534460.
- COHN, Mike. User stories applied: for agile software development. Boston: Addison Wesley, c2004. xxi, 268 p. (Addison-Wesley signature series). ISBN 0321205685

Bibliografia complementar

- MCMAHON, Paul E. Integrating CMMI and agile development: case studies and proven techniques for faster performance improvement. Upper Saddle River, NJ: Addison Wesley, 2010. xxxi, 325 p. ISBN 9780321714107.
- PRESSMAN, Roger S. Engenharia de software: uma abordagem profissional. 7. ed. Porto Alegre: AMGH, 2011. 780 p. ISBN 9788563308337.
- SUMMERFIELD, Mark. Advanced Qt programming: creating great software with C++ and Qt4. New York: Addison Wesley, 2010. 536 p. ISBN 9780321635907.
- BOOCH, Grady; RUMBAUGH, James; JACOBSON, Ivar. UML: guia do usuário. 2. ed. Rio de Janeiro (RJ): Elsevier, Campus, c2006. xviii, 474 p. ISBN 8535217843 (broch.).
- FOWLER, Martin. UML distilled: a brief guide to the standard object modeling language. 3. ed. Boston: Addison Wesley, c2004. xxx, 175 p. (Object technology series). ISBN 0321193687 (Broch.).

Departamento de Computação  |  ICEB  |  Universidade Federal de Ouro Preto
Campus Universitário Morro do Cruzeiro  |  CEP 35400-000  |  Ouro Preto - MG, Brasil
Telefone: +55 31 3559-1692  |  decom@ufop.edu.br