Escolar Documentos
Profissional Documentos
Cultura Documentos
Engenharia 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
Engenharia de Software
' Projeto
' 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
Dados tratados pelo sistema Como os dados so tratados Como o sistema reage a eventos
Engenharia de Software
Projeto de Software:
Engenharia de Software
Projeto de Software:
Engenharia de Software
Engenharia de Software
'
Engenharia de Software
'
Engenharia de Software
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
3. Modularidade:
Engenharia de Software
Projeto de Software
Engenharia 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
Engenharia de Software
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
Engenharia de Software
Representao do relacionamento lgico entre elementos de dados individuais. Determina a organizao, mtodos de acesso, associaes e alternativas de processamento.
Engenharia de Software
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
Estruturas/Elementos de Dados Comuns: ' Itens Elementar (Tipos Primitivos) ' Listas Lineares
Gerais Pilhas Filas
10
Engenharia de Software
Entidades
Relacionamentos
Atributos
Engenharia de Software
Projeto de Software
11
Engenharia 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
Terminal burro
' Caractersticas:
Mainframe
Processamento centralizado no Mainframe; Terminais Burros (sem processamento); Redes Corporativas; Software uso Departamental (Baixa Integrao).
12
Engenharia de Software
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
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
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
Cliente
Browser
Servidor de Aplicaes
Regras de Negcio
Bases de Dados
14
Engenharia de Software
' 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
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
16
Engenharia 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
17
Engenharia 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
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
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
facilita
Engenharia de Software
' Principiantes:
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).
20
Engenharia de Software
' 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).
Engenharia de Software
21
Engenharia de Software
Engenharia de Software
' 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
' 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
' 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
' 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
Reconhecimento
Comandos de voz, Reconhecimento Grfico, leitura de ris, leitura de digital etc...
Realidade Virtual
24
Engenharia de Software
Engenharia de Software
25
Engenharia 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
Anlise
Arquitetura e Interface
Dados e Procedimental
Reviso
26
Engenharia de Software
Projeto de Software
Engenharia de Software
Anlise
Arquitetura e Interface
Dados e Procedimental
Reviso
27
Engenharia de Software
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
28
Engenharia de Software
Engenharia de Software
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
Engenharia de Software
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
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
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
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.
Engenharia de Software
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
Engenharia de Software
Heurstica de Projeto: 3. Mantenha o alcance dos efeitos de um mdulo dentro do alcance de controle desse mdulo;
33
Engenharia de Software
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
Modularidade efetiva:
1. Independncia funcional; e 2. Mdulos com um s propsito.
34
Engenharia de Software
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
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