Aula 7 - Projeto de Arquitetura

Embed Size (px)

Citation preview

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    1/22

    Projeto de Arquitetura deSoftware

    Alexandre Monteiro

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    2/22

    2

    Roteiro Contexto Projeto Renando o modelo de anlise

    Classes Arquitetura Pacotes

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    3/22

    3

    Contexto Aps a etapa de anlise temos um

    primeiro modelo do sistema Queremos agora melorar esse

    modelo! a ponto de gerarmosfacilmente a implementa"#o do

    sistema $ste modelo % camado de modelo

    de Projeto

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    4/22

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    5/22

    5

    Anlise & Projeto A'strato & Concreto (ndependente & dependente da

    tecnologia de implementa"#o Simples & detalado

    Modelos por caso de uso &unica"#o em um )nico modelo

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    6/22

    6

    Ati*idades + Projeto Renar o modelo de classes Projetar arquitetura

    Camadas Separa"#o em pacotes

    Projetar ,anco de -ados

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    7/22

    7

    Renar o modelo de

    classes.untar todas as classes em um s

    diagrama

    Analisar se % necessrio criar no*asclasses ou remo*er classes existentes

    $liminar os esteretipos de anlise

    Adicionar modicadores de*isi'ilidade aos m%todos e atri'utos

    -enir os tipos dos atri'utos

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    8/22

    8

    $xemplo / Anlise login

    Usuario

    login

    senha

    TelaLogin

    efetuarLogin(login, senha)

    !aastroUsuarios

    "he"ar(login, senha)

    !ontrolaorLogin

    efetuarLogin(login, senha)registrar#essao()

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    9/22

    &

    $xemplo / Anlise adicionar

    aluno'luno

    noe

    eail

    login

    senha

    'luno()

    ail

    ail()

    Tela'i"ionar'luno

    ai"ionar'luno()

    !aastro'lunos

    ai"ionar'luno()

    !ontrolaor'i"ionar'luno

    ai"ionar'luno()

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    10/22

    $,

    $xemplo / diagrama )nico

    TelaLogin

    efetuarLogin()

    Tela'i"ionar'luno

    ai"ionar'luno()

    !aastroUsuarios

    "he"ar()

    !ontrolaorLogin

    efetuarLogin()

    registrar#essao()

    %

    $

    %

    $

    $

    $

    $

    $!aastro'lunos

    ai"ionar'luno()

    !ouni"a"ao#er+iorail

    en+iarail()

    !ontrolaor'i"ionar'luno

    ai"ionar'luno()

    $**%

    $

    $**%

    $

    $

    $

    $

    $

    $$ $$

    ail

    ail()

    'luno

    noe - #tring

    eail - #tring

    login - #tring

    senha - #tring

    'luno()

    Usuario

    login - #tring

    senha - #tring

    ail

    assunto - #tring

    reetente - #tring

    estinatario - #tring

    "or.o - #tring

    ail()

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    11/22

    $$

    Renar o modelo de

    classes -etalar assinatura dos m%todos

    denir todos os par0metros dos

    m%todos! seu tipos e o tipo de retornodos m%todos

    Mapear associa"1es em atri'utos2

    Analisar a possi'ilidade de utili3areran"a

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    12/22

    $2

    $xemplo / diagrama

    meloradoTelaLogin

    efetuarLogin()

    TelaLogin()

    !ontrolaorLogin

    efetuarLogin()

    registrar#essao()

    !ontrolaorLogin()

    %

    $

    %

    $

    !aastroUsuarios

    "he"ar()

    !aastroUsuarios()

    $

    $

    $

    $

    Tela'i"ionar'luno

    ai"ionar'luno()

    Tela'i"ionar'luno()

    !aastro'lunos

    ai"ionar'luno()

    !aastro'lunos()

    !ontrolaor'i"ionar'luno

    ai"ionar'luno()

    !ontrolaor'i"ionar'luno()

    $**%

    $

    $**%

    $

    $

    $

    $

    $

    !ouni"a"ao#er+iorail

    en+iarail()

    !ouni"a"ao#er+iorail()$$ $$

    ail

    assunto - #tring

    reetente - #tring

    estinatario - #tring

    "or.o - #tring

    ail()

    'luno

    noe - #tring

    eail - #tring

    'luno()

    Usuario

    login - #tring

    senha - #tring

    Usuario()

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    13/22

    $3

    Renar o modelo de

    classes (denticar padr1es de projeto

    4acada

    Re*isar as classes

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    14/22

    $4

    Padr1es

    !aastroUsuarios

    "he"ar()

    !aastroUsuarios()

    !aastro'lunos

    ai"ionar'luno()

    !aastro'lunos()

    !ouni"a"ao#er+iorail

    en+iarail()

    !ouni"a"ao#er+iorail()

    ail

    assunto - #tring

    reetente - #tring

    estinatario - #tring

    "or.o - #tring

    ail()

    'luno

    noe - #tring

    eail - #tring

    'luno()

    Usuario

    login - #tring

    senha - #tring

    Usuario()

    Tela'i"ionar'luno

    ai"ionar'luno()

    Tela'i"ionar'luno()

    TelaLogin

    efetuarLogin()

    TelaLogin()

    !ontrolaor'i"ionar'luno

    ai"ionar'luno()

    !ontrolaor'i"ionar'luno()

    $

    $

    $

    $

    $

    $

    $

    $

    /a"haa

    ai"ionar'luno()

    efetuarLogin()

    $

    $**%

    $

    $**%

    $

    $

    !ontrolaorLogin

    efetuarLogin()

    registrar#essao()

    !ontrolaorLogin()$

    $

    $

    $

    $

    $

    $ $

    $**% $**%

    $ $

    $ $

    FachadaSingleton

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    15/22

    $5

    Projetar arquitetura -i*idir o sistema em camadas Arquitetura 'em comum5

    Apresentao

    Negcio

    Dados

    Interface com o usurio

    Regras de negcio inerentes aplicao

    Cdigo relacionado ao mecanismode persistncia utilizado

    Comunicao Comunicao entre apresentao e negcio e comoutros sistemas

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    16/22

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    17/22

    $7

    Camadas

    !aastroUsuarios

    "he"ar()

    !aastroUsuarios()

    !aastro'lunos

    ai"ionar'luno()

    !aastro'lunos()

    !ouni"a"ao#er+iorail

    en+iarail()

    !ouni"a"ao#er+iorail()

    ail

    assunto - #tring

    reetente - #tring

    estinatario - #tring

    "or.o - #tring

    ail()

    'luno

    noe - #tring

    eail - #tring

    'luno()

    Usuario

    login - #tring

    senha - #tring

    Usuario()

    Tela'i"ionar'luno

    ai"ionar'luno()

    Tela'i"ionar'luno()

    TelaLogin

    efetuarLogin()

    TelaLogin()

    !ontrolaor'i"ionar'luno

    ai"ionar'luno()

    !ontrolaor'i"ionar'luno()

    $

    $

    $

    $

    $$ $$

    /a"haa

    ai"ionar'luno()efetuarLogin()

    $

    $**%

    $

    $**%

    $

    $

    !ontrolaorLogin

    efetuarLogin()

    registrar#essao()

    !ontrolaorLogin()

    $

    $

    $

    $

    $

    $

    $$

    $**%$**%

    $ $

    $

    $Comunicao

    Dados

    Apresentao

    Negcio

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    18/22

    $8

    9is#o :eral da Arquitetura

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    19/22

    $&

    -i*is#o do sistema empacotes

    Agrupar classes em pacotes Poss8*eis crit%rios5

    Camadas ;gica do sistema

    Crit%rios escolidos de*em minimi3ara depend7ncia entre os pacotes

    Criar um diagrama de pacotesindicando as depend7ncias entre ospacotes

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    20/22

    2,

    Pacotes

    !aastroUsuarios

    "he"ar()

    !aastroUsuarios()

    (fro aos)

    !aastro'lunos

    ai"ionar'luno()

    !aastro'lunos()

    (fro aos)

    !ouni"a"ao#er+iorail

    en+iarail()

    !ouni"a"ao#er+iorail()

    (fro "ouni"a"ao)

    ail

    assunto - #tring

    reetente - #tring

    estinatario - #tring

    "or.o - #tring

    ail()

    (fro nego"io)'luno

    noe - #tring

    eail - #tring

    'luno()

    (fro nego"io)

    Usuario

    login - #tring

    senha - #tring

    Usuario()

    (fro nego"io)

    Tela'i"ionar'luno

    ai"ionar'luno()

    Tela'i"ionar'luno()

    (fro gui)

    TelaLogin

    efetuarLogin()

    TelaLogin()

    (fro gui)

    !ontrolaor'i"ionar'luno

    ai"ionar'luno()

    !ontrolaor'i"ionar'luno()

    (fro nego"io)

    $

    $

    $

    $

    $$ $$

    /a"haa

    ai"ionar'luno()

    efetuarLogin()

    (fro nego"io)

    $

    $**%

    $

    $**%

    $

    $

    !ontrolaorLogin

    efetuarLogin()

    registrar#essao()

    !ontrolaorLogin()

    (fro nego"io)

    $

    $

    $

    $

    $

    $

    $$

    $**%$**%

    $ $

    $

    $

    Indicao do pacoteda classe

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    21/22

    2$

    Pacotes

    gui

    nego"io aos"ouni"a"ao

  • 7/24/2019 Aula 7 - Projeto de Arquitetura

    22/22

    22

    Refer7ncias