Você está na página 1de 35

Engenharia de Software

Tema da Aula Projeto de Software Prof. Cristiano R R Portella


portella@widesoft.com.br

Engenharia de Software

Projeto (Design) de Software

Projetar Software o processo de aplicar vrias tcnicas e princpios com o propsito de se definir um dispositivo, processo ou sistema, com detalhes suficientes para permitir sua realizao fsica. (Taylor-59). O Projeto de software o ncleo tcnico da Engenharia de Software. a nica maneira de se traduzir "com preciso", os requisitos do usurio para um produto ou sistema acabado. Meta: Traduzir requisitos numa representao de software.

Engenharia de Software

Projeto (Design) de Software Princpios

Desenvolver um projeto de software um processo que combina:


Instituio de critrios baseados na experincia adquirida na construo de entidades similares. Um conjunto de princpios e/ou heursticas que guiam o desenvolvimento do modelo. Um conjunto de critrios que facilitam a verificao da qualidade. Um processo de iterao que conduz a uma representao do projeto final

Engenharia de Software

Projeto (Design) de Software Diferentes Vises

' Projeto

Procedimental: descrio da funcionalidade do software (algoritmos).

' Projeto de Dados: definio das estruturas de dados. ' Projeto das Interfaces: Layouts e mecanismos
interao homem-mquina (se necessrio).

de

' Projeto

Arquitetural: associao entre os principais elementos estruturais do software (rvore dos mdulos, mensagens entre objetos, Nivelamento em Camadas).

Engenharia de Software

Projeto (Design) de Software Transio Anlise -> Projeto

Dados tratados pelo sistema Como os dados so tratados Como o sistema reage a eventos

Engenharia de Software

Projeto (Design) de Software Modelo Clssico (Cascata)

Projeto de Software:

Engenharia de Software

Projeto (Design) de Software Modelo Clssico (Cascata)

Projeto de Software:

Engenharia de Software

Processo (Design) de Software

' Projeto Preliminar


Transformao dos requisitos em modelos de arquitetura, dados e procedimentos.

' Projeto Detalhado


Refinamento da representao da arquitetura, dos dados e dos procedimentos, gerando estruturas mais refinadas (detalhadas).

Engenharia de Software

Qualidade do Projeto de Software


A Qualidade do Projeto avaliada atravs de revises tcnicas formais (walkthrougs de projetos), usando-se os seguintes critrios de referncia:
1. Organizao hierrquica: atravs do uso inteligente de controle entre os elementos do software; 2. Modularidade: particionamento lgico em elementos que executam funes e subfunes especficas;

'

Engenharia de Software

Qualidade do Projeto de Software

'

A Qualidade do Projeto avaliada ...


3. Representaes distintas para dados e procedimentos: mesmo que sejam posteriormente agrupados em objetos; 4. Deve levar a Mdulos ou Classes de objetos que apresentam caractersticas funcionais independentes; 5. Deve levar interfaces que reduzam a complexidade de conexes entre os mdulos e com o ambiente externo; e

Engenharia de Software

Fundamentos do Projeto de Software

Fundamentos: 1. Abstrao: Concentrar-se no problema com um certo nvel de generalizao.


Abstrao procedimental Abstrao de dados

Abstrao do Projeto e de seu ambiente

2. Refinamento sucessivo: um processo de elaborao que parte de uma declarao de funo, que ser elaborada atravs de sucessivos refinamentos, cada um incorporando mais detalhes.

Engenharia de Software

Fundamentos do Projeto de Software

3. Modularidade:

Engenharia de Software

Projeto de Software

Engenharia de Software

Fundamentos do Projeto de Software

4. Arquitetura de Software:
Estrutura hierrquica de componentes procedimentais e Estrutura de dados

5. Hierarquia de Controle:
Representa a organizao de componentes de um programa e a hierarquia de controle entre seus mdulos.

Engenharia de Software

Projeto Procedimental de Software Diagrama Estrutura - Hierarquia dos Mdulos

Engenharia de Software

Projeto Procedimental de Software Diagrama Estrutura - Hierarquia dos Mdulos

Deciso: o mdulo abaixo pode ou no receber o controle (deciso). Chamada repetida (iterativa) Passagem de dados entre mdulos Passagem de controle entre mdulos

Engenharia de Software

Projeto de Dados de Software

Projeto de Dados

Engenharia de Software

Projeto de Dados de Software

Representao do relacionamento lgico entre elementos de dados individuais. Determina a organizao, mtodos de acesso, associaes e alternativas de processamento.

' Parte dos dados levantados e representados na fase


de anlise:
Dicionrio de Dados Fluxo, Contedo e Estrutura

Engenharia de Software

Projeto de Dados de Software

Atividades do Projeto de Dados:

' Selecionar representaes de dados; ' Estudar e escolher estruturas de '

dados que permitam a implementao mais adequada; Caracterizar a Abrangncia (escopo) dos Dados
Local (componente), Partes do software ou Global Caracterizas a Persistncia dos Dados
Persistentes (B.Dados) No Persistentes (Dados em memria, estruturas de manipulao/intermediria)..

Engenharia de Software

Projeto de Dados de Software

Estruturas/Elementos de Dados Comuns: ' Itens Elementar (Tipos Primitivos) ' Listas Lineares
Gerais Pilhas Filas

' Lista no lineares


rvores Grafo

10

Engenharia de Software

Projeto de Dados de Software Dados Persistentes


Modelo de Entidade-Relacionamento (MER)

Entidades

Relacionamentos

Atributos

Engenharia de Software

Projeto de Software

Projeto Arquitetural de Software

11

Engenharia de Software

Projeto Arquitetural de Software

Visa modelar a estrutura completa do software e as maneiras fornecidas para manter a integridade conceitual de um sistema: Arquiteturas Tradicionais:
Centralizada Parcialmente Distribuda Cliente-Servidor (2 Camadas) Cliente-Servidor (3 Camadas) Distribuda (Multi-Camadas)

Engenharia de Software

Projeto Arquitetural de Software Arquitetura Centralizada

Terminal burro

' Caractersticas:

Mainframe

Processamento centralizado no Mainframe; Terminais Burros (sem processamento); Redes Corporativas; Software uso Departamental (Baixa Integrao).

12

Engenharia de Software

Projeto Arquitetural de Software Arquitetura Parcialmente Distribuda


Microcomputador

Mainframe

Caractersticas:
Um pouco de processamento departamental; Micros com algumas aplicaes locais; Rede Corporativa conectando micro-mainframe; Software Departamental com maior Integrao; Incio de Integrao entre parceiros (EDI).

Engenharia de Software

Projeto Arquitetural de Software Cliente-Servidor (2 camadas)


Micro Cliente
Cliente Cliente

Rede
Cliente

Caractersticas:

Servidor

Boa parte do processamento local Micros com algumas aplicaes locais Redes LANs ou WANs Integrao entre Parceiros (cliente-servidor)

13

Engenharia de Software

Projeto Arquitetural de Software Cliente-Servidor 3 camadas

Server Side Client Side Camada de Rede Sockets e Regras Negcio Bases de Dados (Camada 1) Midleware (Camada 2) (Camada 3)
Servidor de Aplicaes Servidor de Bases de Dados

Cliente

Caractersticas:
Mais capacidade de Processamento Distribudo Internet/Intranet como infra-estrutura de rede 2 Nveis de Servidor Internet Aplications / Software Integrados(ERPs)

Engenharia de Software

Projeto Arquitetural de Software Arquitetura Distribuda Multi-Camadas


Camada de Rede Sockets e Midleware
Regras Negcio Bases de Dados (Camada 2 e 1) (Camada 3)
Servidor de Aplicaes Servidor de Bases de Dados

Client Side (Camada 1)

Cliente

Browser

Servidor de Aplicaes

Servidor de Bases de Dados

Regras de Negcio

Bases de Dados

14

Engenharia de Software

Projeto Arquitetural de Software Arquitetura Distribuda Multi-Camadas

' Caractersticas:
Alta Capacidade de Processamento Distribudo Internet/Intranet/Extranet/VPNs como infra-estrutura de rede Distribuio dos Servios em vrias camadas de servidores de aplicao e dados Internet Aplications de ltima gerao, CRM (Relacionamento com Cliente), SCM (Cadeias de Produo e Distribuio Integradas), Bancos de Dados Distribudos

Engenharia de Software

Projeto de Software

Projeto Procedimental

15

Engenharia de Software

Projeto Procedimental de Software

Finaliza os detalhes de processamento (procedimentos) de cada mdulo. O procedimento deve oferecer uma especificao precisa do processamento, inclusive a seqncia de eventos, operaes repetitivas etc. Baseia-se na Especificao dos requisitos, na modelagem (DFD, Diagrama Classes) e no Dicionrio de Dados, obtidos na anlise.

Engenharia de Software

Projeto Procedimental de Software Modelo Comportamental


Diagrama de Estados dos Exemplares

16

Engenharia de Software

Projeto Procedimental de Software

Seqncia: 1. Decomposio, Identificao e Modelagem do software atravs de Componentes (Mdulos ou Classes) 2. Representao da estrutura de controle e interao entre os componentes 3. Reviso e Refinamento da Estrutura 4. Representao dos detalhes algortmicos

Engenharia de Software

Projeto Procedimental de Software

Estrutura do mdulo Monitorar Sensores

17

Engenharia de Software

Projeto Procedimental de Software

Caractersticas Importantes:
Coeso Acoplamento Independncia entre os Componentes

Tcnicas de Representao:
PDL (Program Design Language) ou Portugus Estruturado Tabelas/rvores de Deciso Fluxogramas Diagramas de quadros de Nassi e Schneiderman Diagrama de Chapin

Engenharia de Software

Fundamentos do Projeto de Software

Relao entre componentes:


Forte coeso (interna) Fraco acoplamento (externo)

Fraco Acoplamento

Forte Coeso
MODULO MODULO COMPONENTE 1 COMPONENTE 1

COMPONENTE 2

COMPONENTE 2

DIAGRAMA DE COMPONENTE

18

Engenharia de Software

Projeto de Software

Projeto de Interface

Engenharia de Software

Projeto de Interface de Software

O projeto de interface com o usurio tem pontos em comum com o estudo das questes tecnolgicas e pontos em comum com o estudo das pessoas (Psicologia Cognitiva):

' Percepo Visual; ' Psicologia Cognitiva de leitura; ' Memria Humana; ' Raciocnio Indutivo e Dedutivo; ' Comunicao Textual ou Pictrica (cones) ' Nvel Intelectual e/ou Habilidades do Usurio.

19

Engenharia de Software

Projeto de Interface de Software

Considerar fatores humanos

facilita

Gerar sistema com interface amigvel

Engenharia de Software

Projeto de Interface de Software


quanto a sua

Podemos classificar os usurios, exposio ao sistema, como:

' Principiantes:

' Usurios treinados e freqentes:

Sem conhecimento de interao com o sistema e pouco conhecimento das funes que so executadas. Bom conhecimento da interao e das funes do sistema. Gosta de atalhos e modos abreviados de interao. Razovel conhecimento das funes porm pouca lembrana da interao com o sistema (com usar a interface).

' Usurios treinados e intermitentes:

20

Engenharia de Software

Projeto de Interface de Software

Boas prticas em Interfaces:

' Facilidade de ajuda integrada: ' Facilidade de ajuda Add-On: ' Mensagens de Erro:

Projetada desde o incio do sistema. Sensvel ao contexto (Exemplo: Assistente do Office). Adicionada aps o produto estar construdo, para atualiza-lo (Exemplo: Help do Delphi).

Evitar mensagens lacnicas ou que apenas o remetem ao Manual ou ao Suporte.

Engenharia de Software

Projeto de Interface de Software

Severe System Failure 23X

21

Engenharia de Software

Projeto de Interface de Software

Boas prticas em Interfaces:

' Mensagens de Erro:


Descrever o problema em linguagem que o usurio entenda; Orientar para o procedimento de recuperao a ser executado; Alertar para as conseqncias do erro; Usar sinal visual (cores) e sonoro; Usar linguagem neutra e profissional. Manter mensagem na tela at que seja reconhecida

Engenharia de Software

Projeto de Interface de Software

Boas prticas em Interfaces:

' Evitar nomes de campos com abreviaturas e siglas; ' Colocar totalizao nos campos adequados; ' Evitar a necessidade de memorizar cdigos; ' Evitar que o usurio precise lembrar o prximo cdigo ' '

(use tipo auto-incremental); Caso o cadastro no exista, abrir automaticamente o formulrio de cadastramento (evitar passeios pelos menus); Se possvel, criar opo de desfazer (UNDO) as aes executadas;

22

Engenharia de Software

Projeto de Interface de Software

Boas prticas em Interfaces:

' Colocar no sistema uma ajuda para a seqncia de ' ' '
rotinas de atualizao (o que j foi executado prximo passo). Procurar evitar o erro antes que ele acontea, ao invs de priorizar o tratamento de erros depois que ele j ocorreu; Mensagens com gravidade no podem ser reconhecidas apenas teclando [ENTER]. Criar padres para interfaces. O usurio aprende mais rpido (intuitivo), usa o aprendizado anterior e sente-se mais seguro na utilizao.

Engenharia de Software

Projeto de Interface de Software

Boas prticas em Interfaces:

' Na 'O

medida do possvel, flexibilizar as interfaces, pensando que cada usurio tem um perfil cognitivo pessoal, um nvel de conhecimento do sistema e uma necessidade operacional. sistema deve fazer tudo que ele pode fazer, deixando para o usurio apenas as tarefas que o sistema no pode fazer.

23

Engenharia de Software

Projeto de Interface de Software

As tarefas a serem realizadas pela interface, so classificadas como:

' Tarefas de Comunicao: Transmitir informaes. ' Tarefas de Dilogo: Usurio interage com o sistema. ' Tarefas Cognitivas: ' Tarefas de Controle:

Atividades associadas a funes do sistema e que so executadas assim que as informaes so obtidas. Permite que o usurio controle as informaes e a funcionalidade do sistema.

Engenharia de Software

Projeto de Interface de Software

' Estilos de Interface Humano-Computador


Painis e Botes. Linhas de Comando. Menus. Interface Point-and-Pick (aponte e pegue)
Janelas Menus Pop-UP e PULL-Down cones Quadros, Barras de Rolagem, etc...

Reconhecimento
Comandos de voz, Reconhecimento Grfico, leitura de ris, leitura de digital etc...

Realidade Virtual

24

Engenharia de Software

Projeto de Interface de Software

Engenharia de Software

Projeto de Interface de Software

25

Engenharia de Software

Etapas de um Projeto de Software

Seqncia:

' Projetar Dados e Procedimentos ' Definir as caractersticas gerais da Interface do Software, ' '
Orientado a Fluxo de Dados Orientado a Objetos Orientado a Estrutura de Dados

em funo do tipo de usurio, da arquitetura que foi projetada, etc.. Definir e Projetar a Arquitetura do Software Reviso Geral dos Projetos

Engenharia de Software

Transio da Anlise para o Projeto


Projeto

Anlise

' ' '

Especificao de Requisitos Modelos Lgicos Dicionrio de Dados (REVISADOS)

Arquitetura e Interface

Dados e Procedimental

Reviso

Fluxo de Dados ou Orientado a Objetos ou Estrutura de Dados

26

Engenharia de Software

Projeto de Software

Projeto Orientado a Fluxo de Dados

Engenharia de Software

Projeto Orientado a Fluxo de Dados


Projeto

Anlise

' ' '

Especificao de Requisitos Diagrama de Fluxo de Dados (DFD) Dicionrio de Dados

Arquitetura e Interface

Dados e Procedimental

Reviso

27

Engenharia de Software

Projeto Orientado a Fluxo de Dados

Seqncia: 1. Revisar os modelos de Anlise (DFDs, Diag.Dados). 2. Identificar Funes que agrupadas formam subsistemas ou partes do sistema maior. 3. Identificar as Funes que podem ser decompostas, fatoradas (ou explodidas). 3. Efetuar as Fatoraes das Funes. 4. Obter da fatorao a primeira verso do Diagrama Hierrquico de Estrutura, contendo os dados que so passados de um mdulo para outro.

Engenharia de Software

Projeto Orientado a Fluxo de Dados

Fatorao das Funes:

28

Engenharia de Software

Projeto Orientado a Fluxo de Dados

Engenharia de Software

Projeto Orientado a Fluxo de Dados

Seqncia (cont): 5. Obter a primeira verso do modelo de Dados do Sistema sejam eles persistentes (MER) ou no (Estruturas de Apoio) 6. Refinar ambos os projetos 7. Especificar e Documentar cada Mdulo (PDL, Tabelas de Deciso) e cada estrutura de dados (Listas, tabelas do bancos dados) 8. Projetar Interface para cada mdulo de E/S 9. Revisar Projetos de Dados e Procedimental

29

Engenharia de Software

Projeto de Software

Projeto Orientado a Objetos

Engenharia de Software

Projeto Orientado a Objetos


Projeto

Anlise

' ' ' '

Especificao de Requisitos Diagrama de Casos de Uso Descrio dos Casos de Uso Dicionrio de Dados

Arquitetura e Interface

Dados e Procedimental

Reviso

30

Engenharia de Software

Projeto Orientado a Objetos


Projeto

Anlise

' ' ' '

Especificao de Requisitos Diagrama de Casos de Uso Descrio dos Casos de Uso Dicionrio de Dados

Objeto
Arquitetura e Interface Dados + Procedimentos

Reviso

Engenharia de Software

Projeto Orientado a Objetos

Seqncia: 1. Revisar os modelos de Anlise: Casos de uso (funcionalidades) e Dicionrio Dados 2. Obter Diagrama de Classes Conceitual -Classes do Domnio do Problema, seus atributos, operaes, associaes, especializaes e generalizaes (herana) 3. Obter a Percepo de como cada Caso de Uso ser implementado no sistema, atravs dos Diagrama de Interao 4. Obter os Modelos de Comportamento do Sistema - Estados dos Objetos

31

Engenharia de Software

Projeto Orientado a Objetos

Seqncia (cont.): 5. Identificar e projetar as classes de Interface (E/S) obtendo Diagrama de Classes Detalhado 6. Refinar os modelos de classes, interao e Estados (Projetar aspectos de reutilizao) 7. Especificar e Documentar cada Classe:
Operaes, Atributos, Domnio, Persistncia, etc.

8. Projetar Diagramas de Componentes e Implementao 9. Revisar o Projeto Orientado a Objetos

Engenharia de Software

Projeto Orientado a Objetos Heurstica de Projeto

Heurstica de Projeto: 1. Avalie a estrutura do programa para reduzir acoplamentos e melhorar a coeso;

MODULO

MODULO

COMPONENTE 1

COMPONENTE 1

COMPONENTE 2

COMPONENTE 2

2. Tente minimizar estruturas com elevado FAN-OUT. Esforce-se para ter FAN-IN medida que a profundidade do projeto aumentar;

32

Engenharia de Software

Projeto de Software Heurstica de Projeto

Engenharia de Software

Projeto Orientado a Objetos Heurstica de Projeto

Heurstica de Projeto: 3. Mantenha o alcance dos efeitos de um mdulo dentro do alcance de controle desse mdulo;

33

Engenharia de Software

Projeto Orientado a Objetos Heurstica de Projeto

Heurstica de Projeto: 4. Avalie interfaces para reduzir a complexidade e melhorar a consistncia e entendimento; 5. Defina mdulos cujas funes sejam previsveis mas no crie mdulos exageradamente restritos;

Engenharia de Software

Projeto de Software Heurstica de Projeto

Modularidade efetiva:
1. Independncia funcional; e 2. Mdulos com um s propsito.

34

Engenharia de Software

Projeto Orientado a Objetos Heurstica de Projeto

Heurstica de Projeto: 6. Lute por mdulos com uma nica entrada e uma nica sada (sem acoplamentos patolgicos); 7. Empacote o software tendo como base os requisitos de portabilidade e as restries de projeto (por exemplo a plataforma do ambiente de operao).

Engenharia de Software

Projeto Orientado a Objetos Exerccio

1. Projete a interface de pesquisa ao acervo do Sistema de Informatizao da Biblioteca. 2. Faa o Dicionrio de Dados de todas as informaes utilizadas na interface projetada para pesquisa ao acervo. 3. Como os conceitos de acoplamento e portabilidade de software se relacionam? Apresente um exemplo. 4. Ao escrever cdigo fonte, ns estamos projetando software ? Explique.

35