Programação Modular – TIN0121

Obrigatória – 60 horas – 4 créditos
Pré-requisitos: Projeto e Construção de Sistemas
Professor Responsável: Paulo Sergio Medeiros dos Santos

Objetivos da Disciplina

  • Capacitar o aluno a desenvolver programas em equipe utilizando recursos de sistemas de controle de versões.
  • Capacitar o aluno a desenvolver programas modulares de qualidade por meio da aplicação de métodos e técnicas de projeto de software.
  • Capacitar o aluno a verificar a qualidade dos programas desenvolvidos por meio de testes e revisões.

Ementa

Estilos de programação. Processo de desenvolvimento de programas modulares. Princípios de programação modular. Módulos, interfaces, acoplamento. Ferramentas para programação modular. Tipos abstratos de dados. Conceitos de orientação a objetos. Princípios de projeto de sistemas. Padrões de projeto. Tratamento de exceções. Revisões e Inspeções. Técnicas e estratégias de teste de software. Testes de unidade. Testes de integração. Integração de programas. Gerência de Configuração de Software.

Conteúdo Programático

  • Gerência de configuração em projetos de software
    • Sistemas de controle de versão
    • Sistemas de controle de requisição
    • Sistemas de construção (build)
    • Integração contínua
  • Aspectos de Qualidade de Programas
    • Características de um programa bem construído
    • Nomes
    • Funções (nome, tamanho, nível de abstração, assinatura)
    • Princípio da eliminação de replicação de código
    • Redução de complexidade na implementação de funções
    • Comentários
    • Tratamento de Exceções
  • Projeto de software
    • Princípios de projeto de software
    • Projeto arquitetural
    • Padrões arquiteturais
    • Padrões de projeto
    • Projeto de pacotes
    • Projeto de classes
    • Refactoring
  • Manutenção de software
  • Testes
    • Importância e papel dos testes
    • Testes de unidade
    • Testes de integração
    • Testes de sistema
    • Testes unitários automatizados
    • Test Driven Development
    • Outros tipos de testes
    • Técnicas para elaboração de testes
    • Testes Funcionais x Testes Estruturais
    • Avaliação da cobertura dos testes
    • Registro de falhas
  • Revisões e inspeções

Metodologia

Aprendizagem baseada em projeto: ao longo da disciplina o aluno deve projetar e construir, em grupo, um sistema de informação definido pelo professor. O foco do projeto está no desenvolvimento de um sistema que, além de funcionar corretamente, apresente uma estruturação adequada dos módulos e um código de boa qualidade. Exposição de conteúdo: para apoiar o aluno na realização do projeto, são realizadas aulas presenciais com exposição de conteúdos e aplicação de exercícios de fixação.

Avaliação

  • Uma prova teórica realizada ao final do semestre.
  • Entrega e apresentação do projeto ao final do semestre.
  • Pequenos trabalhos de aplicação dos métodos, técnicas e ferramentas distribuídos ao longo do semestre.

A nota final do aluno é a média dos três grupos de avaliações (prova teórica, projeto e pequenos trabalhos).
Alunos com nota final entre 4,0 e 7,0 deverão fazer uma prova final.

Bibliografia

  • Larman, Craig. Utilizando UML e Padrões – Uma introdução à análise e ao projeto orientados a objetos – 3ª Edição. Bookman. 1999.
  • Martin, R. Clean Code: A Handbook of Agile Software Craftsmanship. Prentice hall, 2008.
  • McConnell, Steve. Code Complete 2. Microsoft Press, 2004.
  • Wiegers, K.E., Peer Reviews in Software – A Practical Guide. Addison-Wesley, 1ª Edição, 2002.

mapa CCET - Avenida Pasteur, 458 - Urca
Rio de Janeiro / RJ - CEP: 22290-255
Telefone: (21)3873-6400