Curso de Verão de Java
Aula 10 - Elementos de Engenharia de Software
O que distingue um software bem construído de um mal construído?
Engenharia: construir produtos da forma mais eficiente, levando em conta
o custo, o tempo e a qualidade.
Enumeramos aqui quatro atributos
essenciais de um software bem construído:
Manutenibilidade
O software deve ser escrito e documentado de forma a permitir
modificações sem custo excessivo. A manutenção deve ser
planejada e evitar mudanças muito grandes em cada etapa.
Confiabilidade
O comportamento de um software precisa ser previsível, especialmente
em situações críticas e de alto custo. Sua confiabilidade depende
totalmente da corretude do projeto e da implementação. Um
sistema precisa estar de acordo com sua especificação.
Eficiência
Buscar a eficiência máxima para um software pode comprometer
outros elementos, como a manutenibilidade e a confiabilidade.
Uma abordagem razoável é evitar o desperdício de recursos do
sistema, como memória e tempo de processamento.
Facilidade de Uso
Um software será de pouco uso se não oferecer uma interface
adequada aos seus usuários.
Módulos
- Módulo:
- parte logicamente separável de um programa
- Acoplamento:
- medida de interdependência entre módulos.
Ideal: módulos fracamente acoplados, minimizando o
efeitos de alterações num módulo possam
acarretar nos demais módulos;
Reduzido se somente a interface definida é usada pelos
módulos;
- Coesão:
- medida da ligação entre os elementos (dados e funções)
de um mesmo módulo.
Elementos da Programação Orientada a Objetos
- Abstração: construímos objetos e métodos cada vez mais
abstratos a partir de outros já existentes (tipos abstratos de
dados);
- Encapsulamento: um módulo deve acessar e modificar somente os itens
de que necessita. Podemos enxergar classes (e objetos)
como módulos na POO, encapsulando dados e
comportamento (métodos);
- Herança: mecanismo poderoso de reutilização e extensão de
software;
- Polimorfismo: redefinição do mesmo nome para funções
diferentes; uso de parâmetros diferentes numa mesma
função;
- Ligação dinâmica: busca de métodos em tempo de
execução, dependendo do tipo do objeto
receptor da mensagem.
A Programação Orientada a Objetos incentiva ainda:
- Desenvolvimento Incremental e
- Programação Exploratória
-
-
Vantagens:
- a avaliação pode ser feita em etapas iniciais
do desenvolvimento (através de protótipos); incentiva o uso
de bibliotecas e rotinas prontas
- Desvantagens:
- sem planejamento, pode comprometer a manutenibilidade.
José Fernando Tepedino, jftm@di.ufpe.br
Última edição em 29 de janeiro de 1996.
URL: http://www.di.ufpe.br/~java/verao/aula10/elementos.html