Anda di halaman 1dari 43

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
Modelo de
Modelo informação
funcional

Projeto de dados
Modelo
Projeto Proje
Comportamental to ar
q uitetu
ral

Projeto interfaces
Código Mód
ulos
Outros requisitos Pro do
Projeto procedimental gram
a
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):

Problema a ser resolvido Solução de Software

P1 P2 S1 S2

P3 P4 S3 S4
P5

S5
Conceitos Fundamentais de
Projeto

 4 Arquitetura de Software (continuação):

Formas diferentes de estruturação

P Interface
Problema
Interface S1 S4 S5

S3
S1 S2 S3 S4 S5 S2
Conceitos Fundamentais de
Projeto
 5 Hierarquia de Controle:
M
Fan-out

a b c

Profundidade d e k l m

f g h n o p q

Fan-in
i j r
Largura
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

coincidental
temporal comunicacional funcional
Lógico procedimental sequencial

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


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

Acoplamento por
imagem (lista de
argumentos, p.ex.:
Nenhum acoplamento struct)
Acoplamento Acoplamento por
direto
externo conteúdo (jump
Acoplamento por em assembly)
dados (elementos de Acoplamento por Acoplamento
dados isolados) controle comum (variáveis
globais)

Baixo Médio Elevado


Acoplamento (Exemplos)

Baixo Acoplamento Nenhum


acoplamento
direto

Estrutura de dados passada


por meio de lista de
argumentos (acoplamento
por imagem) Módulo 1 Módulo 2

Dados passados por


meio de listas de
argumentos
(acoplamento por
Módulo 4 Módulo 3 dados)
Acoplamento (Exemplos)

Acoplamento Elevado

A Área de dados L M
global

B C N O P

Acoplamento
por conteúdo
(jump) Os módulos C, E e N
D E F
exibem acoplamento
comum
Atividades de Projeto

Projeto Preliminar
Projeto Detalhado

Projeto de dados: OK

Projeto arquitetural: OK
Projeto procedimental: OK

Projeto de interface
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 DTE
Opção “Esc” Menu Principal
Tela Pressi- “Esc” Opção
Inicial onado Opção Pressi- Tela
“Esc” Tela onado Final
Opção “Esc” Pressi-
Tela Pressi- Opção “Esc” Tratar
Exibir Limpar Tela Pressi- onado Quarto
Tela Tela Tratar onado Limpar Exibir
Reserva Tratar onado Tela Tela
Inicial Inicial Cliente Final Final
Exibir
Exibir Limpar Limpar
Exibir Tela
Tela Tela Limpar Tela
Tela Tratar
Tratar Tratar Tela Tratar
Tratar Quarto
Reserva Reserva Tratar Quarto
Cliente Cliente
Tela Tratar Tela Tratar Tela
Tela Inicial Reserva Cliente Tratar Tela Final
Quarto

Opção “Esc”
Tela Pressi-
Reservar onado
Quarto

Exibir Limpar
Tela Tela
Reservar Reservar
Quarto Quarto

Tela
Reservar
Quarto
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 os
exercícios se referem a aula 10.
 Entregar até a aula da próxima semana. Estes
exercícios devem ser feitos em duplas ou trios.

Anda mungkin juga menyukai