acoplamento e coesão

43
Engenharia de Software Aspectos Fundamentais do Projeto de Software Prof. Laudelino Cordeiro Bastos

Upload: rone2011

Post on 29-Jun-2015

260 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: acoplamento e coesão

Engenharia de Software

Aspectos Fundamentais do Projeto de Software

Prof. Laudelino Cordeiro Bastos

Page 2: acoplamento e coesão

Considerações Iniciais

�Definição: projeto é o processo de se aplicar várias técnicas e princípios com o propósito de se definir um dispositivo, um processo ou um sistema com detalhes suficientes para permitir sua realização física.

�Importância do Projeto: Qualidade.

Page 3: acoplamento e coesão

Fluxo de Informações

Projeto

Modelo de informaçãoModelo

funcional

Modelo

Comportamental

Outros requisitos

Projeto de dados

Projeto interfaces

Projeto procedimental

Projeto arquitetural

Módulos doPrograma

Código

Teste

Produto

Page 4: acoplamento e coesão

Características de Bom Projeto

�Deve exibir uma organização hierárquica inteligente.

�Deve ser modular e logicamente dividido.�Deve representar e separar dados e

procedimentos.�Deve ter módulos que apresentem

características funcionais independentes

Page 5: acoplamento e coesão

Características de Bom Projeto

�Deve levar a interfaces reduzidas entre os módulos (baixo acoplamento).

�Deve ser derivado com o uso de um método que seja orientado pelas informações obtidas durante a análise.

Page 6: acoplamento e coesão

Características de Métodos de Projeto

�Mecanismo para a tradução da representação do domínio de informação em uma representação de projeto.

�Notação para representar os componentes funcionais e suas interfaces.

�Heurísticas para refinamento e divisão.�Diretrizes para a avaliação da qualidade.

Page 7: acoplamento e coesão

Conceitos Fundamentais de Projeto

�1 Abstração: apresentação em diferentes níveis de detalhes:�Abstração procedimental.�Abstração de dados.

Page 8: acoplamento e coesão

Conceitos Fundamentais de Projeto

�2 Refinamento: processo de elaboração:�Refinamento passo a passo: antiga estratégia de

projeto top-down.

Page 9: acoplamento e coesão

Conceitos Fundamentais de Projeto

�3 Modularidade: O software é dividido em componentes separadamente nomeados e endereçáveis, denominados módulos:�Atributo que permite que um programa seja

intelectualmente administrável.�Envolve o conceito de tipos abstratos de dados.

Page 10: acoplamento e coesão

Conceitos Fundamentais de Projeto

�4 Arquitetura de Software: diz respeito a duas características de um programa de computador:�A estrutura hierárquica de componentes (módulos).�A estrutura de dados.

Page 11: acoplamento e coesão

Conceitos Fundamentais de Projeto

�4 Arquitetura de Software (continuação):

P1 P2

P3 P4P5

S1 S2

S3 S4

S5

Problema a ser resolvido Solução de Software

Page 12: acoplamento e coesão

Conceitos Fundamentais de Projeto

�4 Arquitetura de Software (continuação):

Formas diferentes de estruturação

S1 S2 S3 S4 S5

S1 S4 S5

S3

S2

P

ProblemaInterface

Interface

Page 13: acoplamento e coesão

Conceitos Fundamentais de Projeto�5 Hierarquia de Controle:

M

a b c

d e

f g h

i j

k l m

n o p q

r

Largura

Profundidade

Fan-out

Fan-in

Page 14: acoplamento e coesão

Conceitos Fundamentais de Projeto

�6 Estrutura de Dados:�Representação do relacionamento lógico

entre elementos de dados individuais.�A estrutura da informação é tão

importante quanto a estrutura de programa para a representação da arquitetura do software, pois afeta o projeto procedimental final.

Page 15: acoplamento e coesão

Conceitos Fundamentais de Projeto

�7 Procedimento de Software:�Focaliza os detalhes de processamento de cada

módulo;�Deve especificar:

�Processamento.�Sequência de eventos.�Pontos de decisão exatos.�Operações representativas.�Estrutura e/ou organização de dados.

Page 16: acoplamento e coesão

Conceitos Fundamentais de Projeto

�8 Ocultamento de Informação:�Um dos aspectos fundamentais de

modularidade.�Critério de projeto que melhora as fases de teste

e manutenção do software.

Page 17: acoplamento e coesão

Projeto Modular

�Abordagem aceita em todas as disciplinas de Engenharia e Computação.

�Facilita a mudança.�Facilita a implementação (desenvolvimento em

paralelo).

Page 18: acoplamento e coesão

Independência Funcional

�Conceito que está diretamente relacionado a modularidade, abstração e ocultamento de informação.

�Características:�Módulo (função) de propósito único.�Interfaces simples quando visto de outras partes

da estrutura do programa.� É medida usando-se dois critérios qualitativos:

�Coesão.�Acoplamento.

Page 19: acoplamento e coesão

Coesão

�É uma medida de força funcional relativa de um módulo.

�Um módulo coeso executa uma única tarefa, exigindo pouca interação com outros módulos.

�Alta coesão é o desejável.

Page 20: acoplamento e coesão

Coesão

Baixa • • • • • • • • • • Espectro de coesão • • • • • • • • • • Elevada

coincidental

Lógicotemporal

procedimental

comunicacional

sequencial

funcional

Page 21: acoplamento e coesão

Acoplamento

�É uma medida da interdependência relativa entre os módulos.

�Depende da complexidade de interface entre os módulos.

�Baixo acoplamento é o desejável.

Page 22: acoplamento e coesão

Acoplamento

Baixo Médio Elevado

Nenhum acoplamento direto

Acoplamento por dados (elementos de dados isolados)

Acoplamento por imagem (lista de argumentos, p.ex.: struct)

Acoplamento por controle

Acoplamento externo

Acoplamento comum (variáveis globais)

Acoplamento por conteúdo (jumpem assembly)

Page 23: acoplamento e coesão

Acoplamento (Exemplos)

Módulo 1

Módulo 4 Módulo 3

Módulo 2

Estrutura de dados passada por meio de lista de

argumentos (acoplamento por imagem)

Nenhum acoplamento

direto

Dados passados por meio de listas de

argumentos (acoplamento por

dados)

Baixo Acoplamento

Page 24: acoplamento e coesão

Acoplamento (Exemplos)

Acoplamento Elevado

CB

FED

PON

MLA

Acoplamento por conteúdo

(jump)

Área de dados global

Os módulos C, E e N exibem acoplamento

comum

Page 25: acoplamento e coesão

Atividades de Projeto

Projeto de dados: OK

Projeto arquitetural: OK

Projeto procedimental: OK

Projeto de interface

Projeto Preliminar

Projeto Detalhado

Page 26: acoplamento e coesão

Projeto de Interface

�Especificação da interface homem-máquina.�Regras do projeto homem-máquina.�Projeto da interface externa:

�Interface para dados externos.�Interface para sistemas ou dispositivos externos.

Page 27: acoplamento e coesão

Questões a Serem Consideradas

�Quem é o usuário? �Como ele aprende a interagir com um novo

sistema baseado em computador? �Como ele interpreta a informação produzida

pelo sistema?

Page 28: acoplamento e coesão

Chaves para uma Boa Interface

�Coloque o usuário no controle.�Reduza a carga para a memória do usuário.�Faça a interface consistente.

Page 29: acoplamento e coesão

Usuário no Controle

�Depoimento de um possível usuário:�“O que eu realmente gostaria, é de um sistema que

lesse a minha mente. Que soubesse o que quero fazer antes que eu precise pedí-lo, e que torne muito mais fácil para mim conseguir que seja feito. Gostaria apenas disso.”

Page 30: acoplamento e coesão

Diretrizes para Manter o Usuário no Controle

�Defina modos de interação de uma forma que não force o usuário a executar ações desnecessárias ou indesejadas.

�Proporcione interação flexível:�Comandos do teclado, movimentos do mouse, caneta

digitadora.�Permita que a interação com o usuário possa ser

interrompida e desfeita, mesmo em se tratando de uma seqüência de ações.

�Esconda detalhes técnicos dos usuários. A interface deve levar o usuário a um mundo virtual da aplicação.

�Projete da forma mais real possível a interação do usuários com objetos.

Page 31: acoplamento e coesão

Memória do Usuário

�Quanto mais um usuário tiver que lembrar, mais sujeito a erros está a interação com o sistema.

�Sempre que possível o sistema deve lembrar de informações que são importantes para o usuário.

Page 32: acoplamento e coesão

Diretrizes para Poupar a Memória do Usuário

�Redefinição do conjunto inicial (default) de parâmetros. Permitindo a redefinição dos valores iniciais.

�Os atalhos devem ser intuitivos.�O layout visual deve ser baseado no mundo real:

� Facilitar a interação do usuário. Por ex.: Pagamento de contas.

�Revele a informação de um modo progressivo:�A interface deve ser organizada hierarquicamente.�Primeiramente, um alto nível de abstração, e depois de um

clique, o detalhamento progressivo do produto.

Page 33: acoplamento e coesão

Interface Consistente

�A informação deve aparecer de um modo consistente:�Toda informação visual deve ser organizada de

acordo com um padrão de projeto, mantido para todas as telas.

�Mecanismos de navegação são consistentemente definidos e implementados.

Page 34: acoplamento e coesão

Diretrizes para Obter uma Interface Consistente

�Permita que o usuário saiba em qual contexto está inserido. Utilize títulos de telas, ícones, cores diferenciadas.

�Mantenha consistência ao longo de uma família de produtos.

�Se aplicações anteriores já utilizavam padrões, não altere os mesmos, a menos que haja uma forte razão para isso.

Page 35: acoplamento e coesão

Modelos de Projeto de Interface

�Modelo do Engenheiro de Software: cria um modelo de software, cria um modelo de produto.

�Modelo do Usuário: o usuário desenvolve uma imagem mental do modelo. É também denominado modelo do ponto de vista do usuário.

�Modelo do Implementador: cria a imagem do sistema.

Page 36: acoplamento e coesão

Tipos de Usuários

�Usuários Novatos: nenhum conhecimento sintático e nem semântico.

�Usuários Esporádicos ou Conhecedores: razoável conhecimento semântico, leve lembrança da interface.

�Usuários Freqüentes e Conhecedores: Bom conhecimento semântico e sintático, indivíduos que buscam atalhos e modos de interação abreviados.

Page 37: acoplamento e coesão

Projeto de Interface

�Para um Projeto de Interface com o usuário, épreciso:�Análise e modelagem do usuário, tarefas e ambiente.�Projeto da Interface.�Construção da Interface.�Validação da Interface.

�Cada uma das tarefas vai ocorrer mais de uma vez, até o término da Interface.

Page 38: acoplamento e coesão

Projeto de Interface com DTEMenu Principal

Tela InicialTela Tratar

ReservaTela Tratar

ClienteTela

TratarQuarto

Tela Final

OpçãoTelaInicial

ExibirTelaInicial

“Esc”Pressi-onado

LimparTelaInicial

“Esc”Pressi-onado

LimparTelaTratarReserva

OpçãoTelaTratarReserva

ExibirTelaTratarReserva

OpçãoTelaTratarCliente

ExibirTelaTratarCliente

OpçãoTelaTratarQuarto

ExibirTelaTratarQuarto

“Esc”Pressi-onado

LimparTelaTratarCliente

OpçãoTelaFinal

ExibirTelaFinal

“Esc”Pressi-onado

LimparTelaFinal

“Esc”Pressi-onado

LimparTelaTratarQuarto

Tela ReservarQuarto

OpçãoTelaReservarQuarto

ExibirTelaReservarQuarto

“Esc”Pressi-onado

LimparTelaReservarQuarto

Page 39: acoplamento e coesão

Evolução do Projeto: Relação com a Interface

�À medida que o projeto evolui, surgem algumas questões:�Tempo de resposta do sistema:

�Duração e variabilidade.

�Facilidades de ajuda aos usuários.�Manipulação das informações de erro.�Rotulação de comandos.

Page 40: acoplamento e coesão

Mensagens de Erro

�As mensagens de erros na interface devem seguir as seguintes características:�Descrever o problema em uma linguagem que o usuário possa

entender.� Fornecer sugestão construtiva para se recuperar do erro.� Indicar quaisquer conseqüências negativas causadas pelo erro,

como Banco de Dados corrompido.�A mensagem deve ser acompanhada por uma indicação audível

ou visual.�A mensagem deve ser “não-opinativa”, ou seja, nunca deve

colocar a culpa no usuário.

Page 41: acoplamento e coesão

Exercício

�Responda as seguintes perguntas, antes de iniciar o seu projeto de interface:�Caracterize o usuário do seu sistema: idade, sexo,

nível de escolaridade, etc.�Como você classificaria os usuários do seu sistema:

novos, esporádicos ou experientes. Por quê?�O usuário necessita de condições especiais de

utilização? Caso a resposta seja sim, quais são as necessidades.

Page 42: acoplamento e coesão

Exercício (continuação)

�Faça o Projeto de Interface com DTE para o seu Projeto. Para tanto, utilize um modelo hierárquico de representação.

�Utilize o padrão ABNT para apresentação de trabalhos.Utilize o editor de textos Word, ou outro que tenha extensão DOC, para confeccionar o exercício.

� Indique, no documento a ser entregue, que osexercícios se referem a aula 10.

�Entregar até a aula da próxima semana. Estes exercícios devem ser feitos em duplas ou trios.

Page 43: acoplamento e coesão