Arquitetura de Software

Documentos relacionados
Projeto de Arquitetura

Agenda da Aula. Arquitetura de Software e Padrões Arquiteturais. Elementos de um Padrão. Arquitetura de Software. Arquitetura de Software

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Análise e Projeto de Software

Capítulo 6. Projeto de arquitetura Pearson Pren0ce Hall. Todos os direitos reservados. 1. slide 1

Arquitetura de Software

Princípios de Engenharia de Software. Aula 6 Projeto de Software

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Processos de software

Introdução à Análise e Projeto de Sistemas

As Visões. Visões arquiteturais (revisão)

ARQUITETURA DE SOFTWARE 1

Exemplos de Estilos Arquiteturais. Estilos Arquiteturais. Estilos Arquiteturais. Estilo: Pipe e Filtros

Reuso de Software Aula Maio 2012

RUP RATIONAL UNIFIED PROCESS

Arquitetura de software

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

Engenharia de Software II

Conceitos de Sistemas Distribuídos

Projeto de Arquitetura

Introdução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s

UML Unified Modeling Language Linguagem de Modelagem Unificada

O que é um sistema distribuído?

Por que é importante?

Sistemas Embarcados (embutidos) Paulo C. Masiero

Requisitos de sistemas

Princípios da Engenharia de Software aula 03

Engenharia de Confiança. Helena Macedo Reis Luis Fernando de Souza Moro

Modelagem Conceitos e arquitetura do SBD; Modelo de dados entidade-relacionamento modelo ER; Modelo de dados relacional; Mapeamento ER para o

Sistemas Distribuídos

Apresentação. Ementa da Disciplina. Objetivo da Disciplina. DCA-108 Sistemas Operacionais. Referências Bibliográfica. Referências Bibliográfica

Universidade Federal de Goiás Estilos Arquiteturais

Sistemas Operacionais Aula 3

Requisitos de Software

Análise e projeto de sistemas

Introdução a UML (Unified Modeling Language)

Prof. Esp. Fabiano Taguchi

Estrutura dos Sistemas Operacionais. Adão de Melo Neto

Conceitos Básicos Sistemas de banco de dados; Sistemas de gerência de banco de dados.

A modelagem é tida como a parte central de todas as atividades para a construção de um bom sistema, com ela podemos:

Engenharia de Software

FUNDAMENTOS DE REDES DE COMPUTADORES AULA 2: MODELO OSI. Professor: LUIZ LEÃO

Unidade II MODELAGEM DE PROCESSOS. Profa. Gislaine Stachissini

Data Warehouse ETL. Rodrigo Leite Durães.

Sistemas Operacionais (SO)

ENGENHARIA DE SOFTWARE. Aula 03 Processos de Software

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE

2

RUP RATIONAL UNIFIED PROCESS PRÁTICAS RECOMENDADAS. Prof. Fabiano Papaiz IFRN

Banco de Dados Relacional

27) Em relação aos Projetos de Sistemas de Software, assinale a sequência correta de desenvolvimento de um sistema:

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

Requisitos de Sistemas

Desenvolvimento Baseado em Componentes e o Enfoque de Linha de Produtos

Curso: Redes de Computadores

SISTEMAS DISTRIBUÍDOS

Engenharia de Software

UML. Rodrigo Leite Durães.

PROJETO DE PROGRAMAS. Projeto de Programas PPR0001

Barramento. Prof. Leonardo Barreto Campos 1

Arquitetura de Software

Estrutura dos Sistemas Operacionais. Adão de Melo Neto

Livro texto: Capítulo 1

Arquitetura de Computadores. Processamento Paralelo

Arquiteturas de Sistemas de Informação Geográfica

Caracterização de Sistemas Distribuídos

Fundamentos de Sistemas Operacionais

Unidade 4 Projeto de Banco de Dados

Sistemas Distribuídos

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

1 Introdução. 1.1 Teoria dos Sistemas 23/4/2010

Sistemas Operacionais Estrutura do Sistema Operacional. Arquiteturas do Kernel

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1

O conceito de casos de uso foi criado em 1986 por Ivar Jacobson, metodologista e um dos pais do Processo Unificado.

Computadores e Programação (DCC/UFRJ)

Sistemas Distribuídos Aula 3

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos

As 10 Áreas da Engenharia de Software, Conforme o SWEBOK Prof. Elias Ferreira

Leitura: Cap : Sommerville; cap20: Pressman

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima

PCS3413 Engenharia de Software e Banco de Dados

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 02

Estilo: BlackBoard. BlackBoard = repositório de dados compartilhados

Alcides Pamplona

TECNOLOGIA DE PROCESSO

Rational Unified Process (RUP)

Resolução dos exercícios da lista BD01

Definição de Padrões. Padrões Arquiteturais. Padrões Arquiteturais. Arquiteturas de Referência. Da arquitetura a implementação. Elementos de um Padrão

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software

Ferramenta Web de Apoio à Elicitação de Requisitos de Software. Acadêmico: Ivan Wilhelm Orientador: Everaldo Artur Grahl

Programação Concorrente

Modelagem de Sistemas. Análise de Requisitos. Modelagem

Aula 2 BD Introdução. Profa. Elaine Faria UFU

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 03 PROFª BRUNO CALEGARO

Aula 1: Apresentação. Revisão para Prova 1. Aula 2: Motivação. O que é software? Eng. de Software em Camadas. O que é Engenharia de Software?

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS

Transcrição:

Arquitetura de Software 1

Programação Modular 2

Programação Modular Implementação 3

Programação Modular Interface Implementação 4

Programação Modular Interface Provida Implementação Interface Requerida 5

Programação Modular Interface Provida Implementação Visível apenas dentro do Módulo Interface Requerida 6

Benefícios Esperados da Programação Modular [Parnas, 1972] (1) Tempo de desenvolvimento encurtado, já que grupos de desenvolvimento separados podem trabalhar em módulos distintos, com pouca necessidade de comunicação (2) Possibilidade de aplicar mudanças drásticas a um módulo sem a necessidade de mudar outros (3) Possibilidade de estudar o sistema olhando para um módulo de cada vez Interações entre módulos 7

Arquitetura de Software A estrutura de um sistema de software, que engloba componentes de software; suas propriedades visíveis externamente; e os relacionamentos e interações entre eles As primeiras decisões tomadas no projeto de um sistema As mais importantes! Uma arquitetura de software é composta por componentes e conectores 8

Conceitos Arquitetura de software descrição de subsistemas e componentes de um sistema de software e dos relacionamentos entre eles. Projeto arquitetural processo de construção de uma arquitetura de software explícita ligação entre os processos de especificação e de projeto detalhado de software 9 9

Atributos de arquitetura Performance Localizar operações de modo a minimizar a comunicação entre subsistemas Segurança Utilizar uma arquitetura em camadas com recursos críticos localizados em camadas internas Disponibilidade Incluir componentes redundantes na arquitetura Manutenção Utilizar componentes especializados e autocontidos 10 10

Projeto arquitetural Principais atividades Decomposição do sistema de software em subsistemas e componentes Identificação das interações e comunicação entre eles Modelagem arquitetural 11 11

Projeto arquitetural Problemas O projeto de arquiteturas de software específicas (ainda) é baseado em intuição e experiência Métodos pouco ajudam! Documentação (arquitetura e decisões) Modelagem arquitetural 12 12

Uma Arquitetura em Camadas Clientes web (. etc (Mozilla, IE, Internet Servidor WEB Rede Local Banco de Dados Relacional 13

Uma Arquitetura em Camadas Clientes web (. etc (Mozilla, IE, Internet Servidor WEB Rede Local Banco de Dados Relacional Componente Componente Componente 14

Uma Arquitetura em Camadas Clientes web (. etc (Mozilla, IE, Internet Servidor WEB Rede Local Banco de Dados Relacional Conector (HTTP, ( RMI Conector (Ponte ( SQL 15

Projeto Arquitetural O processo de projeto que estabelece Os subsistemas que constituem um sistema A maneira como essas componentes interagem Incluindo algumas decisões tecnológicas Ex. Plataforma de componentes, SGBD A saída desse processo de projeto é uma descrição da arquitetura de software. A arquitetura de software lida com os requisitos não-funcionais do sistema 16

Projeto Arquitetural É o primeiro estágio do projeto do sistema Representa a ligação entre os processos de especificação e de projeto É freqüentemente conduzido em paralelo com algumas atividades de especificação Às vezes junto com a elicitação de requisitos Envolve a identificação dos componentes principais do sistema e sua interação Componentes => unidades de modularidade 17

Vantagens de uma Arquitetura Explícita Comunicação com os stakeholders A arquitetura pode ser usada como um foco de discussão pelos stakeholders do sistema. Análise de sistema Se há possibilidade de o sistema atender a seus requisitos de qualidade (não-funcionais) Reuso em larga escala A arquitetura pode ser reusável em uma variedade de sistemas Suas partes também! 18

Conflitos de arquitetura O uso de componentes de granularidade grossa aprimora o desempenho mas diminui a facilidade de manutenção A introdução de dados redundantes aprimora a disponibilidade, mas torna a proteção mais difícil E cria dificuldades para tornar o sistema confiável em outras partes Localizar as funcionalidades críticas de segurança em poucos locais pode criar gargalos de desempenho Decisões de projeto 19

Decisões de projeto Projeto de arquitetura é um processo criativo Cada sistema envolve diferentes decisões/requisitos/conflitos/restrições Envolve solucionar os problemas representados pelos requisitos Decisões de projeto: Escolhas feitas durante o projeto de um sistema Afetam sua capacidade de fornecer seu serviço Normalmente resultam em compromissos É importante avaliar as opções existentes Não estão restritas ao projeto arquitetural! 20

Exemplos de Decisões de Projeto Como representar o mapa em um sistema que traça rotas percorridas por ônibus de modo a minimizar o trabalho da equipe? Como garantir a confiabilidade de um servidor a um baixo custo? Qual a maneira mais eficiente de se construir uma grade de horários levando-se em conta as várias restrições impostas por professores, diretores e regras departamentais? Qual a melhor tecnologia para se construir uma ferramenta de análise de programas? Como a arquitetura do sistema deve ser documentada? 21

Características de um Sistema que decorrem de sua Arquitetura Desempenho Localizar operações críticas e minimizar comunicações. Usar componentes de fina ao invés de grossa granularidade. Proteção (security) Usar uma arquitetura em camadas com itens críticos nas camadas mais internas. Segurança (safety) Localizar características críticas de segurança em um pequeno número de subsistemas. Disponibilidade Incluir componentes redundantes e mecanismos para tolerância à falhas. Facilidade de manutenção Usar componentes facilmente trocáveis 22

Representação de Arquiteturas Arquiteturas são um ativo importante no desenvolvimento Podem ser a diferença entre o sucesso e o fracasso Representá-las é importante Torna possível falar sobre ela O projeto de arquitetura é normalmente expresso como um diagrama de blocos Modelos mais específicos também podem ser desenvolvidos. 23

Sistema de controle robotizado de empacotamento 24

Diagramas caixa e linha Muito abstrato não mostram a natureza dos relacionamento de componentes, nem suas propriedades externamente visíveis Contudo, são úteis para comunicação com os stakeholders e para planejamento de projeto. Alternativas: Notações formais Notações informais mais organizadas 25

Visões Arquiteturais A arquitetura de um sistema software normalmente é representada através de várias visões Visões são maneiras diversas de se enxergar uma mesma arquitetura Enfocando diferentes aspectos de interesse Ex.: as várias plantas de uma casa Arquiteturas de software são especificadas através de uma ou mais de suas visões 26

Correio Eletrônico Visão 1 Três principais elementos: agentes de usuário (UA). servidores de correio. simple mail transfer protocol: SMTP. servidor de correio SMTP SMTP servidor de correio agente de usuário agente de usuário SMTP fila de mensagens de saída caixa de correio do usuário servidor de correio agente de usuário POP3/IMAP agente de usuário agente de usuário 27

Correio Eletrônico Visão 2 1) Alice usa o UA para compor uma mensagem para bob@someschool.edu 2) O UA de Alice envia a mensagem para o seu servidor de correio; a mensagem é colocada na fila de mensagens. 3) O lado cliente do SMTP abre uma conexão TCP com o servidor de correio de Bob. 4) O cliente SMTP envia a mensagem de Alice através da conexão TCP. 5) O servidor de correio de Bob coloca a mensagem na caixa de entrada de Bob. 6) Bob chama o seu UA para ler a mensagem. 1 user agent mail server 2 3 4 mail server 5 6 user agent 28

Correio Eletrônico Visão 3 Fonte: Axigen Mail Server Documentation - Mail Server Architecture. Consultado em 24 de março de 2008 http://www.axigen.com/docs/en/mail-server-architecture_85.html 29

Um Exemplo de Sistema de Controle de Tráfego Aéreo M&C Console Exceções G.A.M Exceções Exceções Local/Group A.M. O/S E. A. S. Exceções ATC Console A.S.O.U Exceções Exceções Network Operating System Processor I/O Devices Fonte: Bass, Clements, and Kazman, Software Architecture in Practice, 2 nd Edition, 2003. Attachments 30

Sobre Visões Algumas são genéricas Lógica Diagramas de classes e pacotes De interação Diagrama de sequência Física ou de Alocação Diagrama de implantação Outras servem a fins específicos Fluxo de exceções Qualquer dos diagramas acima mostrando apenas componentes associados a exceções (ou ao fim específico em questão) 31

Reuso de arquitetura Sistemas do mesmo domínio freqüentemente têm arquiteturas similares que refletem os conceitos de domínio Resultam em decisões de projeto similares Linhas do produto de software são construídas em torno de um núcleo de arquitetura Variantes satisfazem requisitos de cada cliente. Reuso de arquiteturas é capturado através da noção de padrões ou estilos arquiteturais Próxima aula 32

Padrões e Estilos Arquiteturais 33

Padrões Projetistas e arquitetos experientes procuram aderir a princípios e promover boas práticas de design. usam padrões para documentar e reutilizar experiência comprovadamente boa em novos projetos (de software) Abordagem orientada a problemas 34 34

Estilos Arquiteturais A arquitetura de um sistema pode aderir a um ou mais estilos arquiteturais Um estilo define os tipos de elementos que podem aparecer em uma arquitetura e as regras que regem a sua interconexão Esses estilos pode simplificar o problema de definição de arquiteturas de sistema. A maioria dos sistemas de grande porte adere a vários estilos Estilos arquiteturais = modelos arquiteturais 35

Estilos arquiteturais Shaw and Garlan, 1996 Independent Components Communicating Processes Event-Driven Data Flow Batch Pipes & Filters Data-Centric Repository Blackboard Call & Return Layered systems Object Oriented Main Program & Subroutine Virtual Machine Interpreter Rule-Based 36 36

Exemplos de Estilos Arquiteturais Cliente-Servidor Em camadas Filtros e dutos (pipes and filters) Baseado em repositório Orientado a eventos (publisher/subscriber) Transferência Representacional de Estado (REST) Objetos distribuídos 37

Estilos Arquiteturais e Escolhas de Projto Um estilo arquitetural representa um conjunto de escolhas de projeto Conjunto de características comuns a diversos sistemas nos quais as mesmas escolhas foram feitas Padrões arquiteturais Um sistema aderente a determinado estilo ganha" as características inerentes a ele Estilos podem ser usados para descrever uma determinada arquitetura Foco nas soluções de projeto e não em sua documentação 38

Organização de sistema Reflete a estratégia básica que é usada para estruturar um sistema Exemplos: O estilo de repositório de dados compartilhados Estilo de serviços e servidores compartilhados Estilo de máquina abstrata ou em camadas Orientado a objetos (ou Objetos Distribuídos) Pipes and Filters ou Pipelining 39

Estilo de repositório Sistemas cujas partes precisam trocar dados com frequência: Dados compartilhados podem ser mantidos em um banco de dados central e acessados por todos os subsistemas Cada subsistema mantém seu próprio banco de dados e passa dados para outros subsistemas Podem usar uma abstração de repositório centralizado Implementação distribuída 40

Arquitetura de conjunto de ferramentas CASE 41

Características do Estilo Arquitetural de Repositório Vantagens É uma maneira eficiente de compartilhar grandes quantidades de dados Dados aderem a uma representação comum Simplifica a projeto de aplicações fortemente baseadas em dados Tanto para troca de info. quanto para armazenamento Desvantagens Os subsistemas devem estar de acordo com um modelo de dados padronizado A evolução de dados é difícil e dispendiosa Dificuldade para distribuir de forma eficiente 42

Estilo Cliente-Servidor Mostra como dados e processamento são distribuídos por uma variedade de componentes Servidores independentes que fornecem serviços tais como impressão, transferência de arquivos, gerenciamento de dados, etc. Clientes utilizam esses serviços Clientes e servidores normalmente se comunicam através de uma rede Diversas tecnologias de comunicação são possíveis 43

Biblioteca de filmes e fotografias 44

Vantagens Características do Estilo Cliente-Servidor Separação de interesses Inerentemente distribuído Balanceamento de carga, tolerância a falhas É fácil adicionar novos servidores ou atualizar servidores existentes. Desvantagens Gerenciamento redundante em cada servidor; Nenhum registro central de nomes e serviços pode ser difícil descobrir quais servidores e serviços estão disponíveis Requisições e respostas casadas 45

Modelo de Máquina Abstrata (Em Camadas) Organiza o sistema em um conjunto de camadas (ou máquinas abstratas) Cada uma fornece um conjunto de serviços Cada camada é cliente da camada subjacente Generalização do estilo Cliente-Servidor Não precisa ser distribuído Apóia o desenvolvimento incremental dos subsistemas em camadas diferentes. Ex. Se mudarmos a camada de negócios, só as camadas acima precisam ser modificadas 46

Sistema de gerenciamento de versões 47

Características do Estilo em Camadas Vantagens Facilidade de compreensão Facilidade de manutenção Desenvolvimento independente Desvantagens Duplicação de funcionalidade Às vezes é difícil estruturar um sistema através de camadas É comum que a estruturação seja violada Camadas relaxadas são necessárias Overhead de implementação e desempenho 48

Estilo Arquitetural de Objetos Sistema como um conjunto de objetos fracamente acoplados e com interfaces bem definidas Cada objeto oferece um conjunto de serviços No nível arquitetural, é frequentemente empregado na construção de sistemas distribuídos Objetos distribuídos Uma implementação OO não implica em uma arquitetura OO 49

Sistema de processamento de faturas 50

Características do Estilo Arquitetural de Objetos Vantagens Objetos são fracamente acoplados devido ao uso de interfaces Linguagens de implementação orientada a objeto são amplamente usadas. Desvantagens Mudanças de interface têm alto impacto Não envolve restrições topológicas, o que pode dificultar a manutenção Dependências entre objetos não são limitadas 51

Estilo Dutos e Filtros (Pipelining) Originário de sistemas operacionais UNIX e do projeto de compiladores Transformações funcionais processam entradas para produzir saídas. Componentes são chamados de filtros Conectores são dutos (pipes) Útil para aplicações de processamento de informação que interagem pouco com usuários 52

Sistema de processamento de faturas 53

Características do Estilo Dutos e Filtros Vantagens Apóia reuso de transformações. É fácil adicionar novas transformações. É relativamente simples implementar como sistema concorrente ou seqüencial. Desvantagens Requer um formato comum para a transferência de dados ao longo do pipeline Não é apropriado para aplicações interativas Mais especificamente: só é apropriado para realizar processamento sequencial 54

Fluxo de Controle Estilos arquiteturais relacionados com o fluxo de controle entre os componentes arquiteturais Controle centralizado Um subsistema tem responsabilidade global pelo controle e inicia e para outros sistemas Controle baseado em eventos Cada componente responde a eventos gerados por outros subsistemas 55

Controle centralizado Um componente é responsável pelo gerenciamento da execução de outros componente. O estilo Chamada-Retorno Controle se inicia no topo de uma hierarquia de subrotinas e move-se para baixo na hierarquia. Pode ser sequencial ou concorrente O estilo de Gerenciador Aplicável a sistemas concorrentes e de tempo real Um componente controla a parada, o início e a coordenação de outros processos de sistema 56

Chamada-Retorno 57

Gerenciador para um Sistema Tempo Real Comunicação entre o Controlador e os outros componentes pode ser baseada em eventos, chamadas de procedimentos, etc. 58

Sistemas orientados a eventos Dirigidos por eventos gerados externamente O timing dos eventos está fora do controle dos componentes que os processam Estilo Publisher/Subscriber Eventos são transmitidos a todos os componentes. Qualquer componente interessado pode respondê-los Estilo Orientado a Interrupções Usado em sistemas de tempo real Interrupções são detectadas por tratadores e passadas por outro componente para processamento. 59

Modelo Publisher/Subscriber É efetivo na integração de componentes em computadores diferentes em uma rede Desacoplamento espacial e temporal Componentes não sabem se um evento será tratado e nem quando será. Alguns componentes (publishers) publicam eventos Componentes (subscribers) registram interesse em eventos específicos e podem tratá-los A política de controle não é embutida no tratador de eventos e mensagens 60

Publisher/Subscriber 61

Estilo Orientado a Interrupções Usado em sistemas de tempo real onde a resposta rápida para um evento é essencial Existem tipos de interrupções conhecidos Um tratador definido para cada tipo Cada tipo é associado a uma localização da memória Uma chave de hardware causa a transferência de controle para um tratador. Permite respostas rápidas, mas é complexo para programar e difícil de validar. 62

Controle dirigido a interrupções 63

Arquiteturas de Referência Derivadas de um estudo de domínio de aplicação, ao invés de sistemas existentes. Podem ser usadas como base para a implementação de sistemas ou comparação de sistemas diferentes. Atua como um padrão com relação ao qual os sistemas podem ser avaliados. Exs. Modelo OSI para sistemas de comunicação Organização tradicional de compiladores em vanguarda e retaguarda (e seus elementos internos) 64

Modelo de referência OSI 65

Arquitetura de um Compilador 66

Estilos 67 67

Arquitetura de uma ferramenta CASE Editor de projeto Gerador de código Tradutor de projeto Repositório de projeto Editor de programa Analisador de projeto Gerador de relatório 68 68

Sistema de controle robotizado de Sistema de Visão embalagem Sistema de identificação de objetos Controlador de braço Controlador de garra Sistema de seleção de embalagem Sistema de embalagem Controlador de transportadora 69 69

Cliente-servidor Cliente 1 Cliente 2 Cliente 3 Cliente 4 Rede de banda larga Servidor de catálogo Servidor de vídeo Servidor de fotografias Servidor de hipertexto catálogo Arquivos de clipes de filmes Fotografias digitalizadas Web de hipertexto 70 70

Arquitetura baseada em eventos Subsistema 1 Subsistema 2 Subsistema 3 Subsistema 4 Manipulador de eventos e mensagens 71 71

Questões Como escolher subsistemas e componentes? Quais as suas propriedades? E responsabilidades? Como componentes interagem? Como incorporar e explicitar propriedades não-funcionais? Como descrever uma arquitetura? 72 72

Exemplos 73

74 74

75 75

76 76

77 77

78 78

79 79

80 80

81 81

82 82

83 83

84 84

85 85

86 86

87 87

88 88

89 89

90 90

91 91

92 92

93 93

94 94

95 95

96 96

97 97

98 98

99 99

100 100

101 101

102 102