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

Slides:



Advertisements
Apresentações semelhantes
MOtivação Atender clientes com eficiência e rapidez .
Advertisements

Igor Cavalcanti Ramos José Francisco Pereira {icr2,
Sistemas Concorrentes com CSP e Java
RELATORIO DE PESQUISA 1 Ferramentas para modelagem de sistemas e representação dos requisitos funcionais e não funcionais.
Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques Seminário LES – 7 de abril de.
Walter de Abreu Cybis Maio, 2003
Alunos: Eduardo Akira Yonekura Rogério Esteves Salustiano
Processo de Reengenharia Prático Pós- Graduação Pós- Graduação Karolyne Almeida Siqueira Michael Caldas da Silva.
Prof. Alexander Roberto Valdameri
Prof. Alexander Roberto Valdameri
Processo Administrativo
Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Gerencia de Projeto OO Aspectos Avançados em Engenharia de Software Aula 5 Fernanda Campos DCC/UFJF.
TSDD Teste de segurança durante o desenvolvimento.
Projetar Serviços Vítor Braga –
RUPinho Qualidade de Software
. ANÁLISE DOS SISTEMAS DE INFORMAÇÕES FISCAIS COMO FERRAMENTA DE GESTÃO.
Aluno: Mário Monteiro Orientador: Sérgio Soares 1.
JAVA Linguagem Ambiente de Desenvolvimento
Desenvolvimento de Sistemas Orientados a Aspectos
Projeto: Capacitação em GP
Ferramentas para Orientação a Objetos Apresentação da Disciplina Prof. Wolley.
Sistemas Distribuídos
Banco de Dados e Usuários do Banco de Dados (capítulo 1)
Engenharia de Software
© Sérgio Soares1 Integrando Java com O2 Sérgio Soares GENTe.
Hyper/J TM : Multi-Dimensional Separation of Concerns for Java TM Peri Tarr, Harold Ossher, Vincent Kruskal, and Matthew Kaplan Por Sérgio Soares.
Um Framework Para Testes
Gerência de Configuração - GC
PFC Projeto Final de Curso
Introdução a Banco de dados
Exercícios SGBD - CESPE
JSP e Servlets ISEP – LP2 Filipe Costa – /2004.
Especificação em Projeto de Sistemas
Capítulo 8 Análise Disciplina: Estudo do RUP Autor: Raquel Almeida Orientação: Augusto Sampaio Paulo Borba.
Processos.
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
Introdução a JEE Marco A. S. Reis Arquiteto de Software Abril/2011.
A Arte de Administrar Prof. Joel Brogio.
O PROCESSO ADMINISTRATIVO
Processo de Desenvolvimento de Software – PDS C Construção - PAS
Removing Unnecessary Synchronization in Java Sérgio Soares Gente.
Um alternativa para o armazenamento
WDM Web Data Modeling UCB – Universidade Católica de Brasília
Ferramentas de Suporte a MDD: Um Quadro Comparativo
Desenvolvimento de Software Dirigido a Modelos
Linguagem de Programação IV Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
ABC reuso Reengenharia Primeiras conclusões. ABC reuso Análise do Código Fonte Arquitetura em Camadas Fachada (SIAlocacaoPlus) Negócio (Cadastros) Persistência.
Alocação PLUS by ABC Apresentação do Projeto Piloto.
Tarciane Andrade Análise de Casos de Uso Tarciane Andrade
Capítulo 6 Captura de Requisitos: De Visão para Requisitos Disciplina: Estudo do RUP Autor: Vander Alves Orientação: Augusto Sampaio Paulo Borba.
Capítulo 14 A fase de elaboração cria a linha base da arquitetura Disciplina: Estudo do RUP Autor: Vander Alves Orientação: Augusto Sampaio Paulo Borba.
Subject-Oriented Programming Sérgio Soares GENTe.
E-Commerce, Systems Performance Evaluation, and Experimental Development Laboratory A Model Checking Methodology for E-commerce Systems Adriano Machado.
Engenharia de Software
Aula 3: Áreas de Conhecimento em Gerenciamento de Projeto, Integração
Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.
Leo Silva Leonardo Murta Luiz Viana Persistência em Java.
J U nit Um Framework Para Testes. Motivação  Todos os programadores sabem que devem testar seu código  Quanto mais curto o prazo menos testes são realizados.
UCSal – Tecnologia em Análise e Desenvolvimento de Sistemas Programação para Aplicações WEB Profa. Semíramis Assis
RUP – Rational Unified Process Márcia Seabra Cabral Prof. Augusto Sampaio Centro de Informática - UFPE.
Capítulo 9 Projeto Disciplina: Estudo do RUP Autor: Sérgio Soares Orientação: Augusto Sampaio Paulo Borba.
Projeto: G-TV (Gestor de TV por Assinatura) CSTADS Aluno: Fellipe Weldson de Oliveira Ferreira Gerente: Eriko Brito Projeto Supervisionado de Análise e.
1 Projeto Piloto Conclusão em Agenda Projeto Piloto –Descrição –Execução da aplicação –Implementação de requisitos funcionais e não- funcionais.
Programação orientada a Aspectos Radio Manager System.
Bruna Cavallero Martins Universidade Católica de Pelotas.
Matheus Stigger Sistemas operacionais em carros. Eletrônica Embarcada A eletrônica embarcada consiste da eletrônica desenvolvida para uma aplicação móvel.
Solução sistêmica para apoiar os processos de fiscalização da Arsesp Agosto/2015 IX Congresso Brasileiro de Regulação.
Persistência de dados e padrão DAO
Capítulo 4 Estrutura do Sistema Operacional
Transcrição da apresentação:

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

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

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

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

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

Classes da arquitetura

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

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; } //... }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

zNúmeros da análise y325 classes y 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

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

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

Comparação

Comparação com métodos pesados

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

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

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

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

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