Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
Alessandro Garcia
LES/DI/PUC-Rio
Abril de 2017
Aula 10Arquitetura de Software
e Exercício
2 / 30 LES/DI/PUC-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 /35Alessandro Garcia © LES/DI/PUC-Rio
Set 2009 5 /36LES/DI/PUC-Rio
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 6 /36LES/DI/PUC-Rio
Uma Visão Profissional
Documentação das decisões deprojeto
Boas práticas deprojeto modular
Decisões relacionadas as estratégias organizacionais e doimplementar primeiro
Requisitos
CódigoArquitetura
Descrição explícita de requisitos funcionais e não-funcionais
7 /36LES/DI/PUC-Rio
De requisitos a implementação
Requisitos doSistema
Arquitetura doSistema
Desenvolvimentode cada Módulo
Validaçãodos Módulos
Derivação deCasos 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 /35Alessandro Garcia © LES/DI/PUC-Rio
Set 2009 9 /36LES/DI/PUC-Rio
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 /36LES/DI/PUC-Rio
Modelo de Componentes
ConcurrentExceptionHandling
Action
Exception
ExceptionHandlingStrategy
ISearch
ICooperation
Handler
IInvocation
IRaising
IGetInformation
IUpdateInformation
get and update
get and updateget
invokehandler
searchhandler
arquivo *.h
arquivo *.c
11 /36LES/DI/PUC-Rio
Visão Espandida das Interfaces
<<public interface>> <<public interface>>
Jogo de Damas?
• Modelagem da Arquitetura – Como Seria?
12 /36LES/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 /36LES/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 /36LES/DI/PUC-Rio
Jogo de Damas?
• Modelagem da Arquitetura – Como Seria?
15 /36LES/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 /36LES/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 17 /35Alessandro Garcia © LES/DI/PUC-Rio
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 18 /35Alessandro Garcia © 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…
• 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 /36LES/DI/PUC-Rio
(do…Tabuleiro)
Jogo de Damas
• Modelagem da Arquitetura – Visão das Interfaces
20 /36LES/DI/PUC-Rio
Jogo de Damas?
• Modelagem da Arquitetura
21 /36LES/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 /35Alessandro 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 23 /35Alessandro Garcia © LES/DI/PUC-Rio
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 24 /35Alessandro Garcia © LES/DI/PUC-Rio
Alessandro Garcia
LES/DI/PUC-Rio
Abril de 2017
Aula 10Arquitetura de Software
Exercício