Alessandro Garcia LES/DI/PUC-Rio
Abril de 2017
Aula 10
Arquitetura de Software
e Exercício
2 / 30 LES/DI/PU C-Rio
Não Esquecer...
• Preencher tabela de atividades ao longo do processo.
• NÃO DEIXE PARA ÚLTIMA HORA, POIS VOCÊ NÃO SE LEMBRARÁ DO QUE FEZ TAL DIA, TAL HORA.
• Com relatórios similares a esse você aprende a planejar o seu trabalho
• O relatório é INDIVIDUAL
3 / 30 LES/DI/PUC-Rio
Dicas para o Trabalho
• Não esqueça de rever cuidadosamente:
– critérios de avaliação
– procedimentos para entrega do trabalho
• Certifique-se que seu trabalho atende os seguintes pontos:
– estruturação: contém tanto o fonte dos módulos de implementação quanto módulos definição (interface)
• siga princípios de modularidade: interfaces simples e documentadas, ...
– obediência a padrões de programação
– não esqueçam de produzir arquivo LEIAME.TXT
• Ferramentas como gmake e batches de apoio deve ser
utilizados
Avisos e Lembretes
• T2 – entrega:
– prazo: 8/5 (segunda); até 7 da manhã do dia 9
• Prova P1:
– data: 10/5 (quarta)
• Lembrete – horário semanal da monitoria:
– 6ª. Feira, 13:00 - 15:00
• 9o. andar do prédio Padre Leonel Franca, sala à direita, após porta de vidro
4 /35 Alessandro Garcia © LES/DI/PUC-Rio
Set 2009 LES/DI/PUC-Rio 5 /36
Especificação
• Objetivos dessa aula
– Apresentar modelagem arquitetural
• Slides adaptados de: Staa, A.v. Notas de Aula em Programação Modular; 2008.
• Referência complementar
– Silva, R.P.; UML2 em Modelagem Orientada a Objetos; Florianópolis, SC: Visual Books; 2007
Set 2009 LES/DI/PUC-Rio 6 /36
Uma Visão Profissional
Documentação das decisões de projeto
Boas práticas de projeto modular
Decisões relacionadas as estratégias
organizacionais e do implementar primeiro
Requisitos
Código
Arquitetura
Descrição explícita de requisitos funcionais e não-funcionais
7 /36 LES/DI/PUC-Rio
De requisitos a implementação
Requisitosdo Sistema
Arquiteturado Sistema
Desenvolvimento de cada Módulo
Validação dos Módulos Derivação de
Casos de Teste
• Dos requisitos em alto nível de abstração até…
• ... implementação e teste dos módulos do sistema
1. definição de todas as interfaces (*.h)
2. definição de todas as implementações (*.c) 1. Requisitos funcionais
2. Requisitos não-funcionais
modelo lógico
Arquitetura de um sistema é...
• um conjunto dos módulos essenciais de um sistema, suas interfaces, e as interdependências entre estes
– devendo satisfazer requisitos funcionais e não-funcionais
• Como representar a arquitetura de sistemas?
– com modelos (representação visual)
• permite ter uma visão global do programa com mínimo esforço
• Para modelos conceituais da arquitetura, utilizaremos diagramas da linguagem UML
– arquitetura de software é o conjunto de módulos
(componentes), interfaces, e relacionamentos entre estes módulos
8 /35 Alessandro Garcia © LES/DI/PUC-Rio
Set 2009 LES/DI/PUC-Rio 9 /36
Diagrama de módulos (componentes)
• Conjunto de módulos (componentes) de software e suas relações estruturais
• Definição lógica e independente de tecnologia
– Omissão de detalhes de implementação:
• ex. funções internas/auxiliares, estruturas de dados, etc...
• Especificação de interfaces providas e requeridas
• Dependências entre:
– diferentes módulos
– módulos e suas interfaces, e
– entre interfaces
10 /36 LES/DI/PUC-Rio
Modelo de Componentes
Concurrent Exception
Handling Action
Exception
Exception Handling
Strategy
ISearchICooperation
Handler
IInvocation
IRaising
IGet Information
IUpdate Information
get and update
get and update get
invoke handler
search handler
arquivo *.h
arquivo *.c
11 /36 LES/DI/PUC-Rio
Visão Espandida das Interfaces
<<public interface>> <<public interface>>
Jogo de Damas?
• Modelagem da Arquitetura – Como Seria?
12 /36 LES/DI/PUC-Rio
? ?
?
? ?
?
Jogo de Damas
• Requisitos Funcionais? Exemplos…
• partida é praticada entre duas pessoas, num tabuleiro de 8 x 8 casas alternadamente claras e escuras
• cada jogador possui 12 peças (pretas ou brancas) e tem como objetivo capturar ("comer") as peças do adversário
• ganha aquele que "comer" todas ou a maior quantidade de peças do adversário
• cada jogador movimenta uma peça por vez
• existem dois tipos de peças, a peça comum, que são as peças que os jogadores possuem no início do jogo e as damas
• se uma peça comum do jogador terminar uma rodada na última fileira de casas do lado oposto do tabuleiro, esta é substituída por uma dama
• etc...
13 /36 LES/DI/PUC-Rio
Como criar o modelo da arquitetura?
• Identifique nos requisitos os módulos do sistema
– São as abstrações principais
– São usualmente ‘substantivos’ nos requisitos:
• Damas: Tabuleiro, Peça, Partida/Damas, Jogador, etc…
14 /36 LES/DI/PUC-Rio
Jogo de Damas?
• Modelagem da Arquitetura – Como Seria?
15 /36 LES/DI/PUC-Rio
? ?
?
Quais funções em cada módulo e interface?
? ?
Como criar o modelo da arquitetura?
• Identifique nos requisitos os módulos do sistema
– São as abstrações principais
– São usualmente ‘substantivos’ nos requisitos:
• Damas: Tabuleiro, Peça, Partida/Damas, Jogador, etc…
• Identificação das funções das interfaces
– São usualmente ‘verbos’:
• Damas: criar tabuleiro, inserir peça na casa, mover peça de casas, retirar peça da casa,….
obter cor da peça, obter status da peça, etc…
16 /36 LES/DI/PUC-Rio
Haviam outros módulos candidatos...
• ... A partir da descrição dos requisitos:
– Casa – Jogador – Dama
– PeçasEliminadas
• Como chegar a conclusão que não devem se tornar módulos, de fato?
Abr 2010 Alessandro Garcia © LES/DI/PUC-Rio 17 /35
Mas todos candidatos devem se tornar módulos?
• Não
• Outros Princípios de Modularização
– Acoplamento deve ser reduzido
• Alto acoplamento entre dois “módulos candidatos” é um indicador de que ambos deveriam consistir de um único módulo
– Ex. Jogo de Damas: Tabuleiro (encapsula estrutura de dados que representa o Tabuleiro) e Casa (encapsula estrutura de dados que representa cada Casa)
– Coesão deve ser maximizada
• Se um subconjunto de funções não usam outras funções do mesmo módulo (baixa coesão):
– então estas funções deveriam fazer parte de outro módulo X, caso estas invocarem funções de X com frequencia), ou,
– caso contrário, estas funções deveriam fazer de um novo módulo
– Encapsulamento deve ser garantido
• um módulo não deve permitir que outros módulos tenham acesso a seus dados e funções internos
Abr 2010 Alessandro Garcia © LES/DI/PUC-Rio 18 /35
Como criar o modelo da arquitetura?
• Identifique nos requisitos os módulos do sistema
– São as abstrações principais
– São usualmente ‘substantivos’ nos requisitos:
• Damas: Tabuleiro, Peça, Partida/Damas, Jogador, etc…
• Identificação das funções das interfaces
– São usualmente ‘verbos’:
• Damas: criar tabuleiro, destruir tabuleiro, inserir peça na casa, mover peça de casas, retirar peça da casa,….
obter cor da peça, obter status da peça, etc…
• Alocação de cada função para cada interface dos módulos
– Como descobrir qual é a alocação mais apropriada?
• As ações (funções) são sempre feitas sobre o sujeito/substantivo (candidato a módulo)
19 /36 LES/DI/PUC-Rio
(do…
Tabuleiro)
Jogo de Damas
• Modelagem da Arquitetura – Visão das Interfaces
20 /36 LES/DI/PUC-Rio
Jogo de Damas?
• Modelagem da Arquitetura
21 /36 LES/DI/PUC-Rio
LISTA
Exercício: modelagem da arquitetura…
• … do programa FreeCell
– leve em consideração os módulos mencionados no enunciado do T2
• defina as funções das interfaces destes módulos
– defina outros módulos necessários
• A especificação dos requisitos será retornada
– alterar a especificação se necessário
– entregar a especificação de requisitos ao fim da aula
22 /35 Alessandro Garcia © LES/DI/PUC-Rio
Modelagem da Arquitetura
• Entrega do T2
– visão de módulos
– visão detalhada das interfaces
– espero que me enviem versão para receberem feedback
Abr 2010 Alessandro Garcia © LES/DI/PUC-Rio 23 /35
Avisos e Lembretes
• Saber escolher a melhor estrutura de dados é uma habilidade adquirida em outras disciplinas
– de fato, o uso de Listas pode não ser a estrutura mais adequada: número de casas é fixo
– porém... veremos que o uso de Listas pode facilitar a adição incremental de dados redundantes (instrumentação)
• objetivo: aumentar confiabilidade de um programa
– sempre use Lista ou ListaCircular; irá facilitar seu trabalho mais tarde
Abr 2010 Alessandro Garcia © LES/DI/PUC-Rio 24 /35
Alessandro Garcia LES/DI/PUC-Rio
Abril de 2017