acoplamento e coesão

Post on 29-Jun-2015

258 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Engenharia de Software

Aspectos Fundamentais do Projeto de Software

Prof. Laudelino Cordeiro Bastos

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.

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

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

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.

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.

Conceitos Fundamentais de Projeto

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

Conceitos Fundamentais de Projeto

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

projeto top-down.

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.

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.

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

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

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

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.

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.

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.

Projeto Modular

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

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

paralelo).

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.

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.

Coesão

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

coincidental

Lógicotemporal

procedimental

comunicacional

sequencial

funcional

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.

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)

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

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

Atividades de Projeto

Projeto de dados: OK

Projeto arquitetural: OK

Projeto procedimental: OK

Projeto de interface

Projeto Preliminar

Projeto Detalhado

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.

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?

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.

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.”

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.

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.

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.

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.

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.

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.

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.

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.

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

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.

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.

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.

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.

top related