A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Desenvolvimento Progressivo de Programas Concorrentes Orientados a Objetos Aluno: Sérgio Soares Orientador: Paulo Borba.

Apresentações semelhantes


Apresentação em tema: "Desenvolvimento Progressivo de Programas Concorrentes Orientados a Objetos Aluno: Sérgio Soares Orientador: Paulo Borba."— Transcrição da apresentação:

1 Desenvolvimento Progressivo de Programas Concorrentes Orientados a Objetos Aluno: Sérgio Soares Orientador: Paulo Borba

2 Conteúdo zMotivação zMétodo para tratamento de concorrência zAplicação prática do método zImpacto em eficiência zConclusões e Trabalhos Futuros

3 Motivação zAumento do uso de ambientes concorrentes yWWW (World Wide Web) yNecessidade de eficiência

4 Ambiente concorrente zComplexidade elevada yimplementação ytestes zTratamentos baseados na intuição yfalta de um padrão zImpacto negativo em ycorretude ymanutenção

5 Implementação Progressiva zPim ypadrões de projeto yorientação a objetos zAspectos ypersistência ydistribuição yconcorrência

6 Classes da arquitetura

7 Método para tratamento de Concorrência zDiretrizes ygerais yclasses básicas ycoleções de dados ymecanismo de persistência yfachada e coleções de negócio

8 Diretrizes gerais zEvitar a execução concorrente de métodos não atômicos public class ConjuntoPessoas { private Pessoa[] pessoas; private int indice; public void inserir(Pessoa p) { pessoas[indice] = p; indice = indice + 1; } //... }

9 Exemplo thread1thread2 conjunto.inserir(p1); ConjuntoPessoas conjunto = //... conjunto.inserir(p2); 123123 pessoas[indice] = p1; indice = indice + 1; pessoas[indice] = p2; indice = indice + 1; pessoas p1 indice p2 indice

10 Diretrizes específicas - classes básicas zImpedir a atualização concorrente de cópias de um objeto zMecanismo de timestamp yobjetos só podem ser atualizados se não houver uma atualização mais recente

11 zNas coleções de dados que utilizam SGBD ycertificar-se do uso correto de SQL (SGBDR) yutilizar transações quando necessário zNas que não utilizam SGBD ytratar o acesso a estrutura de dados yimplementar o serviço de transações Diretrizes específicas - coleções de dados

12 zEvitar acesso concorrente a estrutura de dados que mantém os canais de comunicação ysincronizar métodos Diretrizes específicas - mecanismo de persistência

13 zIdentificar regras de negócio que ocasionam situações de corrida ysincronizar métodos yusar o gerenciador de concorrência xsincroniza apenas os threads que podem interferir entre si Diretrizes específicas - coleções de negócio e fachada

14 O Método zUtiliza as diretrizes zTrata concorrência de baixo para cima na hierarquia da arquitetura zTarefas yT1 - Tratar classes básicas yT2 - Tratar coleções de dados yT3 - Tratar mecanismo de persistência yT4 - Tratar coleções de negócio e fachada

15 T1 - Tratando classes básicas zNas classes que os objetos sofrem acesso concorrente yaplicar diretrizes gerais zAplicar diretrizes específicas nas demais

16 Aplicação prática do método zAplicar o método a quatro sistemas ySistema 1 xdesenvolvido na universidade utilizando o Pim ySistemas 2, 3 e 4 xjá implementados xem funcionamento xutilizar o método para analisar os sistemas xdesenvolvidos por duas empresas empresa X - sistemas 2 e 3 empresa Y - sistema 4

17 Sistema 1 zImplementa parte da aplicação A zMostrou um pequeno impacto do método ymenos de 10% do tempo de desenvolvimento ymenos de 0,5% das linhas de código zNúmero do experimento y80 classes y9.562 linhas ycerca de 33 horas de desenvolvimento

18 Sistema 2 zImplementa toda a aplicação A zJá trata concorrência ytimestamp ytransações na fachada quando necessário zProblemas encontrados ymal uso do mecanismo de exceções ymecanismo de persistência com falhas no tratamento aplicado

19 zNúmeros da análise y107 classes y21.204 linhas y9 horas para analisar o sistema xsem realizar os tratamentos Sistema 2

20 Sistema 3 zImplementado pela mesma empresa do Sistema 2 yrealiza os mesmos tratamentos yutiliza o mesmo mecanismo de persistência zProblemas ydiferenças nos tratamentos aplicados em relação ao Sistema 2 yregras de negócio misturadas com os dados yprática de programação inocente

21 zProblemas (cont.) yduas coleções de dados sem SGBD precisam de tratamento xarray e socket zNúmeros da análise y66 classes y7.805 linhas y4,5 horas para analisar o sistema xsem realizar os tratamentos Sistema 3

22 Sistema 4 zTambém já trata concorrência zImplementado pela empresa que desenvolveu o mecanismo de persistência yutilizado pelos sistemas 2, 3 e 4 zProblemas yuso desnecessário de transações yuso desnecessário de sincronização xusar o timestamp

23 zNúmeros da análise y325 classes y83.865 linhas yQuase 8 horas para analisar o sistema xsem realizar as correções necessárias zTempo de análise menor devido ao conhecimento prévio do sistema Sistema 4

24 Impacto em eficiência zDiferentes tratamentos de concorrência yfachada com todos os método sincronizados yfachada com transações em todos os métodos ycoleção de negócio com métodos sincronizados ycoleção de negócio utilizando o gerenciador de concorrência yaplicando o timestamp yaplicando o método definido

25 zApenas dois destes tratamentos garantem a corretude se aplicados isoladamente yfachada sincronizada yaplicando o método Impacto em eficiência

26 Comparação

27

28

29 Comparação com métodos pesados

30

31

32 Conclusões zPadrão para tratamento de concorrência zGanho em qualidade de software zValidação das diretrizes definidas zAnalisar sistemas já tratados

33 zImpacto de diferentes tratamentos zImpacto pequeno da aplicação do método zProposta de padrões de projetos zFonte bibliográfica Conclusões

34 Trabalhos futuros zDefinir as regras utilizando métodos formais yprovas formais das regras zDesenvolver um método com suporte a especificação ysistemas críticos zModificar o método para ambiente EJB zDesenvolver ferramentas yprodutividade a curto prazo

35 zDocumentar os padrões de projeto definidos ytimestamp e gerenciador de concorrência zEstruturar melhor o método sem misturar aspectos de concorrência com outros aspectos yregras de negócio, dados yprogramação adaptativa Trabalhos futuros

36 Trabalhos relacionados zConcurrent Programming in Java ypadrões de projeto e regras de sincronização ytratamento de concorrência durante a implementação dos requisitos funcionais zRemoving Unnecessary Syncronization in Java yremove sincronizações em tempo de compilação ynão garante corretude do sistema original


Carregar ppt "Desenvolvimento Progressivo de Programas Concorrentes Orientados a Objetos Aluno: Sérgio Soares Orientador: Paulo Borba."

Apresentações semelhantes


Anúncios Google