Aula 5 ProjetoSoftware

Embed Size (px)

Citation preview

  • 8/15/2019 Aula 5 ProjetoSoftware

    1/53

    Prof. Paulo C. Masiero

    SSC - 5764

    Engenharia de Software

  • 8/15/2019 Aula 5 ProjetoSoftware

    2/53

    Projeto

    Análise de Sistema

    Análise de Requisitos

    Processo de Software Fases ou

    Subprocessos

    DEFINIÇÃO

    CONSTRUÇÃO

    MANUTENÇÃO

    Processo  peloqual osrequis i tos  dosoftware sãot raduzidos  

     para umarepresentação

    do software que permite suarealizaçãofísica.

    Projeto

  • 8/15/2019 Aula 5 ProjetoSoftware

    3/53

    Projeto 

    Codificação 

    Teste 

    ModeloComportamental

    ModeloFuncional

    Modelo deInformação

    OutrosRequisitos

    Projeto deDados

    Projeto Procedimental

    ProjetoArquitetural

    Projeto de Interface

    Programas

    Software

    Integrado eValidado

  • 8/15/2019 Aula 5 ProjetoSoftware

    4/53

    Ponto de Vista TécnicoDADOS: o modelo de domínio da informação é

    transformado nas estruturas de dados que serão exigidas

    para implementar o software.

    ARQUITETURAL: o relacionamento entre os grandes

    componentes estruturais do programa é definido.

    INTERFACE: os mecanismos de interação e layout para a

    interação homem-máquina são estabelecidos.PROCEDIMENTAL: os componentes estruturais são

    transformados em uma descrição procedimental do

    software.

  • 8/15/2019 Aula 5 ProjetoSoftware

    5/53

    Ponto de Vista Gerencial 

    PROJETO PRELIMINAR: preocupa-se com a

    transformação dos requisitos do software em

    uma arquitetura de software e de dados.

    PROJETO DETALHADO: concentra-se nos

    aprimoramentos da representação arquitetural

    que levam à estrutura de dados detalhada e às

    representações algorítmicas do software.

  • 8/15/2019 Aula 5 ProjetoSoftware

    6/53

    Projeto preliminar

    Projeto detalhado

    Projeto de dados 

    Projeto arquitetural 

    Projeto procedimental 

    Projeto de interface

  • 8/15/2019 Aula 5 ProjetoSoftware

    7/53

    Fomentar a qualidade durante o processo dedesenvolvimento.

    Fornecer representações do software que podem

    ser avaliadas quanto à qualidade.

    Traduzir com precisão os requisitos de um cliente

    num produto de software finalizado.

  • 8/15/2019 Aula 5 ProjetoSoftware

    8/538 

    Teste

    SEM projeto

    Manutenção

    Implemen-

    tação

    COM projeto

    Implementação 

    Projeto 

    Teste 

    Manutenção 

    Sistema instável.

    Falhará quando pequenas mudanças

    forem feitas. Difícil de testar.

    Qualidade não pode ser verificadaaté um ponto tardio do processo

    de desenvolvimento.

  • 8/15/2019 Aula 5 ProjetoSoftware

    9/539 

    Projeto 

    Codificação 

    Teste 

    Modelo

    ComportamentalModelo

    Funcional

    Modelo de

    Informação

    Outros

    Requisitos

    Projetode Dados 

    ProjetoProcedimental

    ProjetoArquitetural

    Projeto de Interface

    ProgramasSoftware

    Integrado eValidado

    Projeto de DadosObjetivo 

    Selecionarrepresentações lógicas

    dos dados (estruturas de

    dados), identificados

    durante a fase deespecificação dos

    requisitos. 

  • 8/15/2019 Aula 5 ProjetoSoftware

    10/53

    ESTRUTURA DE DADOS: é uma representação do

    relacionamento lógico entre elementos de dados

    individuais.

    Determina a organização, métodos de acesso, grau

    de associatividade e alternativas de processamento

    de informações.

    10 

  • 8/15/2019 Aula 5 ProjetoSoftware

    11/5311 

    Você moraria em uma casa em que

    não há um projeto (planta) ? 

  • 8/15/2019 Aula 5 ProjetoSoftware

    12/5312 

    Projeto 

    Codificação 

    Teste 

    Modelo

    ComportamentalModelo

    Funcional

    Modelo de

    Informação

    Outros

    Requisitos

    Projeto de Dados

    ProjetoProcedimental

    Projeto Arquitetural 

    Projeto de Interface

    ProgramasSoftware

    Integrado eValidado

    Projeto ArquiteturalObjetivo 

    Desenvolver umaestrutura modular  do

    sistema e representar as

    relações de controle 

    entre os módulos. 

  • 8/15/2019 Aula 5 ProjetoSoftware

    13/53

    O projeto arquitetural une a estrutura de programae a estrutura de dados, definindo interfaces que

    possibilitam que os dados fluam pelo programa. 

    13 

  • 8/15/2019 Aula 5 ProjetoSoftware

    14/53

    Propriedades que devem ser especificadascomo parte de um projeto arquitetural: 

    ◦ Propriedades estruturais: este aspecto da

    representação do projeto arquitetural define oscomponentes do sistema (como módulos, objetos)e a maneira pela qual esses componentes sãoempacotados e interagem entre si.

    14 

  • 8/15/2019 Aula 5 ProjetoSoftware

    15/53

  • 8/15/2019 Aula 5 ProjetoSoftware

    16/53

    Propriedades que devem ser especificadascomo parte de um projeto arquitetural: 

    ◦ Famílias de sistemas relacionados: o projeto

    arquitetural deve ter a capacidade de reusar blocosde construção arquitetural.

    16 

  • 8/15/2019 Aula 5 ProjetoSoftware

    17/53

    O projeto arquitetural pode ser representadousando-se um ou mais modelos:

    ◦ Modelo estrutural: representa a arquitetura como

    uma coleção organizada de componentes deprograma.

    ◦ Modelo de arcabouço (framework): aumenta o nívelde abstração de projeto por meio de tentativas de

    identificar padrões de projeto arquiteturalrepetidos, encontrados em tipos de aplicaçõessimilares.

    17 

  • 8/15/2019 Aula 5 ProjetoSoftware

    18/53

    O projeto arquitetural pode ser representadousando-se um ou mais modelos:

    ◦ Modelo dinâmico: cuida dos aspectos

    comportamentais da arquitetura do programa,indicando como a estrutura ou configuração dosistema pode mudar em reação a eventos externos.

    ◦ Modelo de processo: focaliza o projeto de negócios 

    ou processo técnico que o sistema precisa atender.

    18 

  • 8/15/2019 Aula 5 ProjetoSoftware

    19/53

    O projeto arquitetural pode ser representadousando-se um ou mais modelos:

    ◦ Modelo funcional: pode ser usado para representar

    a hierarquia funcional do sistema.

    19 

  • 8/15/2019 Aula 5 ProjetoSoftware

    20/53

    CONCEITOS  Abstração Refinamento

    Modularidade Ocultação da Informação Independência Funcional Arquitetura Particionamento Estrutural

    20 

  • 8/15/2019 Aula 5 ProjetoSoftware

    21/53

    ABSTRAÇÃO: possibilita que o projetistarepresente os procedimentos, os dados e ocontrole em vários níveis de detalhes.

    21 

    alto 

     baixo 

    Nível

    deAbstração

    Uma solução: 

    é declarada em termos amplos usando-se a

    linguagem do ambiente do problema

    é estabelecida usando-se uma terminologiaorientada à implementação 

    é estabelecida de uma forma que possa ser

    diretamente implementada 

  • 8/15/2019 Aula 5 ProjetoSoftware

    22/53

    Abstração Procedimental: uma sequência deinstruções designadas que têm uma funçãoespecífica e limitada.

    22 

    Ex: a palavra ´entrar´ numa portaSequência de passos procedimentais:

    caminhe até a porta, aproxime-se esegure a maçaneta, gire a maçaneta

    e empurre a porta, etc...

  • 8/15/2019 Aula 5 ProjetoSoftware

    23/53

    Abstração de Dados: uma coleção designadade dados que descrevem um objeto dedados.

    23 

    Ex: cheque de pagamento Trata-se de uma coleção de muitas infor-mações diferentes: nome da pessoa aquem se paga, quantia bruta paga,

    imposto retido, contribuição para aprevidência, etc.

  • 8/15/2019 Aula 5 ProjetoSoftware

    24/53

    Abstração de Controle: implica um mecanismode controle do programa sem especificardetalhes internos.

    24 

    Ex: semáforo de sincronização

    Utilizado para coordenar atividades de umsistema operacional.

  • 8/15/2019 Aula 5 ProjetoSoftware

    25/53

    REFINAMENTO passo a passo: é uma antigaestratégia de projeto top-down (1971)

    A arquitetura de um programa é desenvolvidarefinando-se, sucessivamente, os níveis dedetalhes procedimentais.

    25 

  • 8/15/2019 Aula 5 ProjetoSoftware

    26/53

    MODULARIDADE o software é dividido emcomponentes (módulos), que são integradospara atender aos requisitos do problema.◦ Dividir para conquistar.

    Um projeto modular reduz a complexidade,facilita a mudança e resulta numa

    implementação mais fácil ao estimular odesenvolvimento paralelo de diversas partes deum sistema. 

    26 

  • 8/15/2019 Aula 5 ProjetoSoftware

    27/53

    É mais fácil resolver um

     problema complexo quando ele é dividido em partes.

    Dividir indefinidamente tornao problema infinitamente

     pequeno?NÃO 

    27 

    MODULARIDADE A submodularidade ou a

    supermodularidade devemser evitadas.

    COMO DEFINIR UM TAMANHODE MÓDULO APROPRIADO?

  • 8/15/2019 Aula 5 ProjetoSoftware

    28/53

    28 

  • 8/15/2019 Aula 5 ProjetoSoftware

    29/53

    OCULTAÇÃO DE INFORMAÇÕES: o conceito demodularidade leva o projetista de software auma questão fundamental:

    “Como decompor uma solução de software paraobter o melhor conjunto de módulos? ” 

    O princípio da "ocultação de informações"

    sugere que os módulos sejam "caracterizadospelas decisões de projeto que (cada módulo)esconde de todos os outros".

    29 

  • 8/15/2019 Aula 5 ProjetoSoftware

    30/53

    Os módulos devem ser especificados eprojetados de tal forma que as informações(procedimentos e dados) contidas num módulosejam inacessíveis a outros módulos que nãotenham necessidade de tais informações.

    A ocultação implica em uma modularidade talque um conjunto de módulos independentes 

    comunicam entre si somente aquelasinformações que são necessárias para se obtera função do software.

    30 

  • 8/15/2019 Aula 5 ProjetoSoftware

    31/53

    INDEPENDÊNCIA FUNCIONAL  produto direto damodularidade e do conceito de ocultação dainformação.

    Alcançada desenvolvendo-se módulos comfunção "com um só propósito" e "aversão" ainterações excessivas com outros módulos;

    Um software com módulos independentes é

    mais fácil de ser desenvolvido e mais fácil deser mantido => fundamental para um bomprojeto.

    31 

  • 8/15/2019 Aula 5 ProjetoSoftware

    32/53

    A INDEPENDÊNCIA FUNCIONAL é medidausando-se dois critérios qualitativos:

    COESÃO 

    ACOPLAMENTO 

    32 

  • 8/15/2019 Aula 5 ProjetoSoftware

    33/53

    A INDEPENDÊNCIA FUNCIONAL é medidausando-se dois critérios qualitativos:

    COESÃO 

    ACOPLAMENTO

    33 

    COESÃO   Medida da força

     funcional relativade um módulo.

     Pode ser vista comoa força que mantém unidosos elementos de um módulo.

  • 8/15/2019 Aula 5 ProjetoSoftware

    34/53

  • 8/15/2019 Aula 5 ProjetoSoftware

    35/53

    PARTICIONAMENTO ESTRUTURAL a estrutura doprograma deve ser particionadahorizontalmente e verticalmente

    35 

     particionamento horizontal:define três partições:

    entrada, transformação de

    dados (processamento) e

    saída.

    Função 1  Função 3

    Função 2

  • 8/15/2019 Aula 5 ProjetoSoftware

    36/53

    PARTICIONAMENTO ESTRUTURAL a estrutura doprograma deve ser particionadahorizontalmente e verticalmente

    36 

     particionamento vertical:módulos de nível mais

    alto devem realizar

    funções de controle; os

    módulos de nível mais baixo devem realizar as

    tarefas de entrada,

     processamento e saída. 

    Função 1  Função 3

    Função 2

    Módulos detomada

    de decisão

    Módulos

    `trabalhadores´

  • 8/15/2019 Aula 5 ProjetoSoftware

    37/53

    ARQUITETURA DE SOFTWARE é a estruturahierárquica de componentes de programa

    (módulos), o modo pelo qual estescomponentes interagem e as estruturas dedados que são usadas pelos componentes.

    37 

  • 8/15/2019 Aula 5 ProjetoSoftware

    38/53

  • 8/15/2019 Aula 5 ProjetoSoftware

    39/53

    39 

    Princípios básicos de projeto para arquiteturas

    modulares:

    (1) unidades modulares; 

    (2) poucas interfaces;

    (3) interfaces pequenas (fraco acoplamento);

    (4) interfaces explícitas;

    (5) ocultação de informações.

    Correspondem aos módulos do sistema. 

    Projeto Arquitetural:ARQUITETURA DO

    SOFTWARE

  • 8/15/2019 Aula 5 ProjetoSoftware

    40/53

    40 

    Princípios básicos de projeto para arquiteturas

    modulares:

    (1) unidades modulares;

    (2) poucas interfaces; 

    (3) interfaces pequenas (fraco acoplamento); 

    (4) interfaces explícitas;

    (5) ocultação de informações.

    Para conseguir baixo acoplamento:

    o número de interfaces entre osmódulos e a quantidade de informações

    que se movimentam por uma interface

    devem ser minimizados.

    Projeto Arquitetural:ARQUITETURA DO

    SOFTWARE

  • 8/15/2019 Aula 5 ProjetoSoftware

    41/53

    41 

    Princípios básicos de projeto para arquiteturas

    modulares:

    (1) unidades modulares;

    (2) poucas interfaces;

    (3) interfaces pequenas (fraco acoplamento);

    (4) interfaces explícitas; 

    (5) ocultação de informações.

    Quando os módulos precisam se

    comunicar , eles devem fazê-lo deuma maneira óbvia e direta.

    Projeto Arquitetural:ARQUITETURA DO

    SOFTWARE

    P j A i l

  • 8/15/2019 Aula 5 ProjetoSoftware

    42/53

    42 

    Princípios básicos de projeto para arquiteturas

    modulares:

    (1) unidades modulares;

    (2) poucas interfaces;

    (3) interfaces pequenas (fraco acoplamento);

    (4) interfaces explícitas;

    (5) ocultação de informações. 

    Todas as informações sobre um módulo

    são escondidas do acesso externo.

    Projeto Arquitetural:ARQUITETURA DO

    SOFTWARE

  • 8/15/2019 Aula 5 ProjetoSoftware

    43/53

    43 

    Projeto 

    Codificação 

    Teste 

    Modelo

    ComportamentalModelo

    Funcional

    Modelo de

    Informação

    Outros

    Requisitos

    Projeto de Dados

    ProjetoProcedimental 

    ProjetoArquitetural

    Projeto de Interface

    Programas

    Software

    Integrado eValidado

    Projeto Procedimental

    Objetivo 

    Especificar os detalhes

    dos algoritmos de forma

    não ambígua.

  • 8/15/2019 Aula 5 ProjetoSoftware

    44/53

    PROCEDIMENTO DE SOFTWARE: focaliza osdetalhes de processamento de cada móduloindividualmente.

    O Procedimento deve oferecer umaespecificação precisa do processamento (sequência de eventos, pontos de decisão,operações repetitivas e até mesmo estrutura eorganização de dados).

    44 

  • 8/15/2019 Aula 5 ProjetoSoftware

    45/53

  • 8/15/2019 Aula 5 ProjetoSoftware

    46/53

    Características:

    1- uma sintaxe fixa de palavras-chave que forneçam todas as

    construções estruturadas, declarações de dados e

    características de modularidade.

    2- uma sintaxe livre de linguagem natural que descreva as

    características de processamento.

    3- facilidades de declaração de dados que incluam tanto asestruturas de dados simples como as complexas.

    4- a definição de subprogramas ou técnicas de chamada que

    apóiem vários modos de descrição de interfaces.

    46 

  • 8/15/2019 Aula 5 ProjetoSoftware

    47/53

    Nas fases iniciais, costuma-se usardeclarações que informam◦ Pré-condições◦ Pós-condições

    É uma linguagem baseada em lógicamatemática

    Usado por exemplo em casos de uso econtratos.

    47 

  • 8/15/2019 Aula 5 ProjetoSoftware

    48/53

    48 

    Projeto 

    Codificação 

    Teste 

    Modelo

    ComportamentalModelo

    Funcional

    Modelo de

    Informação

    Outros

    Requisitos

    Projeto de Dados

    ProjetoProcedimental

    ProjetoArquitetural

    Projeto de Interface

    Programas

    Software

    Integrado eValidado

    Projeto de InterfaceObjetivo 

    Estabelecer os

    mecanismos deinteração e layout para a

    interação homem-

    máquina

  • 8/15/2019 Aula 5 ProjetoSoftware

    49/53

    Processo iterativo, abrangendo asatividades:

    ◦ Análise e modelagem do usuário, tarefa, ambiente.

    ◦ Projeto da interface. Tempo de resposta do sistema. Facilidades de ajuda ao usuário.

    Manipulação de informações de erro. Rotulação de comandos.

    49 

  • 8/15/2019 Aula 5 ProjetoSoftware

    50/53

    ◦Construção da interface. Ferramentas de projeto de interface e prototipagem.

    Fornecem componentes de software “pré-empacotados” para criar uma interface com o usuário. 

    ◦Validação da interface. Determinar se o protótipo operacional da interface

    satisfaz as necessidades do usuário. Dados qualitativos.

    Dados quantitativos. Experimentos de usabilidade Acessibilidade

    50 

  • 8/15/2019 Aula 5 ProjetoSoftware

    51/53

    Regras de Ouro.◦ Coloque o usuário no controle.◦ Reduza a sobrecarga cognitiva do usuário.◦ Faça a interface consistente.◦ ...

    51 

  • 8/15/2019 Aula 5 ProjetoSoftware

    52/53

    52 

    Projeto 

    Codificação 

    Teste 

    ModeloComportamental

    ModeloFuncional

    Modelo deInformação

    Outros

    Requisitos

    Projeto deDados

    Projeto Procedimental

    ProjetoArquitetural

    Projeto de Interface

    Programas

    Software

    Integrado eValidado

  • 8/15/2019 Aula 5 ProjetoSoftware

    53/53

    Profa. Ellen Francine

    SSC - 5764

    Engenharia de Software