inf1301 aula10 arquitetura exercicio 2017 1 finalinf1301/docs/2017_1/inf1301... · /(6 ',...

25
Alessandro Garcia LES/DI/PUC-Rio Abril de 2017 Aula 10 Arquitetura de Software e Exercício

Upload: others

Post on 03-Sep-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

Alessandro Garcia

LES/DI/PUC-Rio

Abril de 2017

Aula 10Arquitetura de Software

e Exercício

Page 2: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

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

Page 3: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

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

Page 4: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

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

Page 5: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

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

Page 6: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

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

Page 7: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

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

Page 8: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

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

Page 9: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

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

Page 10: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

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

Page 11: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

11 /36LES/DI/PUC-Rio

Visão Espandida das Interfaces

<<public interface>> <<public interface>>

Page 12: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

Jogo de Damas?

• Modelagem da Arquitetura – Como Seria?

12 /36LES/DI/PUC-Rio

? ?

?

???

Page 13: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

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

Page 14: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

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

Page 15: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

Jogo de Damas?

• Modelagem da Arquitetura – Como Seria?

15 /36LES/DI/PUC-Rio

? ?

?Quais funções em cada

módulo e interface?

??

Page 16: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

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

Page 17: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

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

Page 18: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

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

Page 19: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

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)

Page 20: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

Jogo de Damas

• Modelagem da Arquitetura – Visão das Interfaces

20 /36LES/DI/PUC-Rio

Page 21: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

Jogo de Damas?

• Modelagem da Arquitetura

21 /36LES/DI/PUC-Rio

LISTA

Page 22: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

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

Page 23: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

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

Page 24: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

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

Page 25: INF1301 Aula10 Arquitetura Exercicio 2017 1 finalinf1301/docs/2017_1/INF1301... · /(6 ', 38& 5lr 'lfdv sdud r 7udedokr 1mr hvtxhodgh uhyhu fxlgdgrvdphqwh ±fulwpulrv gh dydoldomr

Alessandro Garcia

LES/DI/PUC-Rio

Abril de 2017

Aula 10Arquitetura de Software

Exercício