43 resultados para Programación orientada a objetos

em Lume - Repositório Digital da Universidade Federal do Rio Grande do Sul


Relevância:

100.00% 100.00%

Publicador:

Resumo:

Independentemente do modelo de programação adotado, no projeto e implementação de aplicações de alta disponibilidade, faz-se necessário usar procedimentos de tolerância a falhas. Dentre as atividades que trazem consigo interesse de pesquisa na área de Tolerância a Falhas, estão os mecanismos de recuperação em um sistema computacional. Do ponto de vista prático, estes mecanismos buscam manter próximo do mínimo o tempo total de execução de aplicações computacionais de longa duração, ao mesmo tempo em que as preparam para não sofrerem perdas significativas de desempenho, em caso de falhas. Paralelamente à evolução dos sistemas computacionais, foi possível observar também a evolução das linguagens de programação, principalmente as que utilizam o paradigma orientado a objetos. O advento da área de tolerância a falhas na orientação a objetos resultou em novos problemas na atividade de recuperação quanto aos mecanismos de salvamento de estados e retomada da execução, principalmente no que se refere às dificuldades de gerenciamento e controle sobre a alocação de objetos. Entretanto, observa-se que a complexidade de implementação dos mecanismos de recuperação, por parte dos programadores, exige deles conhecimentos mais especializados para o salvamento dos estados da aplicação e para a retomada da execução. Portanto, a simplificação do trabalho do programador, através do uso de uma biblioteca de checkpointing que implemente os mecanismos de salvamento de estados e recuperação é o ponto focal deste trabalho. Diante do contexto exposto, nesta dissertação, são definidas e implementadas as classes de uma biblioteca que provê mecanismos de checkpointing e recuperação. Esta biblioteca, denominada de Libcjp, visa aprimorar o processo de recuperação de aplicações orientadas a objetos escritas na linguagem de programação Java. Esta linguagem foi escolhida para implementação devido à presença dos recursos de persistência e serialização. Para a concepção do trabalho, são considerados ambos os cenários no paradigma orientado a objetos: objetos centralizados e distribuídos. São utilizados os recursos da API de serialização Java e a tecnologia Java RMI para objetos distribuídos. Conclui-se o trabalho com a ilustração de casos de uso através de diversos exemplos desenvolvidos a partir de seus algoritmos originais inicialmente, e incrementados posteriormente com os mecanismos de checkpointing e recuperação. Os componentes desenvolvidos foram testados quanto ao cumprimento dos seus requisitos funcionais. Adicionalmente, foi realizada uma análise preliminar sobre a influência das ações de checkpointing nas características de desempenho das aplicações.

Relevância:

80.00% 80.00%

Publicador:

Resumo:

Neste estudo são discutidos alguns aspectos relacionados à escolha da primeira linguagem de programação em currículos de ciência da computação, com interesse especial em Pascal e Java. A primeira linguagem é amplamente adotada para ensinar programação aos novatos, enquanto a segunda está ganhando popularidade como uma linguagem moderna e abrangente, que pode ser usada em muitas disicplinas ao longo de um curso degraduação em computação como ferramenta para ensinar desde recursos básicos de programação até tópicos mais avançados. Embora vários problemas quanto ao ensino de Java, com a primeira linguagem de programação, possam ser apontadas, consideramosque Java é uma boa escolha, visto que (a) oferece apoio a importantes questões conceituais e tecnológicos e, (b) é possível contornar algumas complexidades da linguagem e da plataforma Java para torná-las mais adequadas à alunos iniciantes. Além disso, considerando a grande popularidade de Pascal nos currículos de cursos de computação, uma eventual adoção de Java conduz à outro problema: a falta de professores aptos a lecionar programação orientada a objetos. Sugerimos que este problema de migração de Pascal para Java seja enfrentado através de smplificação do ambiente de desenvolvimento de programas, uso de um pacote com classes que facilitam a entrada e saída, e o desenvolvimento de um catálogo comparativo de programas implementados em ambas as linguagens. Neste estudo também é apresentado o JEduc, um IDE muito simples com o objetivo de dar suporte ao ensino da linguagem de programação orientada a objetos Java aos novatos. Oferece componentes desenvolvidos em Java que integram edição, compilação e execução de programas Java. Além das funcionalidades comuns a um IDE, JEduc foi desenvolvido para gir como uma ferramente pedagógica: simplifica a maioria das mensagens do compilador e erros da JRE, permite a inserção de esqueletos de comandos, e incorpora pacotes especiais para esconder alguns detalhes sintáticos e semânticos indesejáveis.

Relevância:

80.00% 80.00%

Publicador:

Resumo:

Na área de Engenharia de Software, há vários modelos formais de especificação orientado a objetos (OO). Um destes é o OO-Method / OASIS. OO-Method se baseia nos seguintes princípios: - dar suporte às noções do modelo conceitual orientado a objetos; - integrar os modelos formais com metodologias de aceitação industrial; - possibilitar a produção de software avançado que inclua a geração completa de código (estática e dinâmica) do desenvolvimento comercial. O processo de desenvolvimento consiste em levantar as propriedades principais do sistema em desenvolvimento (modelo conceitual) por parte do engenheiro de software, e construir de forma automática, em qualquer momento (por um processo de conversão gráfico-textual) a especificação formal orientada a objetos em OASIS (Open and Active Specifications of Information System) que constituirá um repositório de alto nível do sistema. O objetivo de OASIS é expressar os requisitos funcionais de um sistema de informação, em um marco formal, que facilite sua validação e geração automática de programas. OASIS não inclui a especificação de aspectos temporais. A modelagem de aspectos temporais é um importante tópico da modelagem de sistemas de informação, porque através destes são representadas as características dinâmicas das aplicações e a interação temporal entre diferentes processos. A especificação de requisitos de aplicações através de modelos orientados a objetos permite representar não só os seus estados, mas também, seu comportamento. Modelos temporais representam também a evolução de objetos com o tempo. Como o estado de um objeto pode ser alterado devido à ocorrência de um evento (fato ocorrido em um determinado instante no tempo), é importante que o modelo utilizado permita apresentar a história destes eventos. O presente trabalho tem por finalidade propor uma extensão temporal a um modelo formal de especificação OO. Esta extensão inclui tanto aspectos estáticos quanto dinâmicos. A extensão de aspectos estáticos estende OASIS com atributos temporais. A extensão dos aspectos dinâmicos, contribuição central do trabalho, estende OASIS com eventos temporais.

Relevância:

80.00% 80.00%

Publicador:

Resumo:

Este trabalho descreve uma implementação de um modelo de escalonamento para a linguagem de programação DPC++. Esta linguagem, desenvolvida no Instituto de Informática da UFRGS, possibilita que uma aplicação orientada a objetos seja distribuída entre vários processadores através de objetos distribuídos. Muito mais que uma simples biblioteca de comunicação, o DPC ++ torna a troca de mensagens totalmente transparente aos objetos. A integração do DPC++ com o DECK, também em desenvolvimento, trará grandes inovações ao DPC++, principalmente pelo uso de theads. O escalonador proposto para este modelo utiliza estes recursos para implantar os chamados processos espiões, que monitoram a carga de uma máquina, enviando seus resultados ao escalonador. O escalonador implementado possui, desta forma, dois módulos: objetos espiões implementados como um serviço do DECK e o escalonador propriamente dito, incluído no objeto Diretório, parte integrante do DPC++.

Relevância:

80.00% 80.00%

Publicador:

Resumo:

A computação de tempo real é uma das áreas mais desafiadoras e de maior demanda tecnológica da atualidade. Está diretamente ligada a aplicações que envolvem índices críticos de confiabilidade e segurança. Estas características, inerentes a esta área da computação, vêm contribuindo para o aumento da complexidade dos sistemas tempo real e seu conseqüente desenvolvimento. Isto fez com que mecanismos para facilitar especificação, delimitação e solução de problemas passem a ser itens importantes para tais aplicações. Este trabalho propõe mecanismos para atuarem no desenvolvimento de sistemas de tempo real, com o objetivo de serem empregados como ferramenta de apoio no problema da verificação de presença de inconsistências, que podem vir a ocorrer nos vários modelos gerados partir da notação da linguagem de modelagem gráfica para sistemas de tempo real - UML-RT(Unified Modeling Language for Real Time). Estes mecanismos foram projetados através da construção de um metamodelo dos conceitos presentes nos diagramas de classe, de objetos, de seqüência, de colaboração e de estados. Para construir o metamodelo, utiliza-se a notação do diagrama de classes da UML (Unified Modeling Language). Contudo, por intermédio das representações gráficas do diagrama de classes não é possível descrever toda a semântica presente em tais diagramas. Assim, regras descritas em linguagem de modelagem OCL (Object Constraint Language) são utilizadas como um formalismo adicional ao metamodelo. Com estas descrições em OCL será possível a diminuição das possíveis ambigüidades e inconsistências, além de complementar as limitações impostas pelo caráter gráfico da UML. O metamodelo projetado é mapeado para um modelo Entidade&Relacionamento. A partir deste modelo, são gerados os scripts DDL (Data Definition Language) que serão usados na criação do dicionário de dados, no banco de dados Oracle. As descrições semânticas escritas através de regras em OCL são mapeadas para triggers, que disparam no momento em que o dicionário de dados é manipulado. O MET Editor do SiMOO-RT é a ferramenta diagramática que faz o povoamento dos dados no dicionário de dados. SiMOO-RT é uma ferramenta orientada a objetos para a modelagem, simulação e geração automática de código para sistemas de tempo real.

Relevância:

80.00% 80.00%

Publicador:

Resumo:

A personalização de produtos e serviços e o projeto em conjunto entre empresas e clientes representam hoje um diferencial competitivo de ambientes ágeis de negócios. Esta tendência também é válida para a indústria da construção civil, onde a customização do produto é de vital importância para a satisfação do cliente, cada vez mais desejoso de um imóvel de baixo custo e com um certo nível de exclusividade. Esta pesquisa procura levar contribuições para o setor da Indústria da Construção Civil utilizando conceitos atuais como o de manufatura ágil e dando ênfase à dimensão de interação com o cliente e à personalização de produtos. Estabelecer uma interação constante entre cliente e empresa é um dos requisitos fundamentais para a definição de um ambiente ágil de negócios. Alias, considera-se importante que as empresas construtoras, em seus planos estratégicos, busquem não somente melhorar a eficiência dos processos construtivos (através de programas de qualidade e produtividade), mas também, ampliar qualitativa e quantitativamente os atributos dos imóveis ofertados através da integração do cliente ao projeto de seu futuro imóvel. O objetivo principal deste trabalho consiste em desenvolver um modelo de sistema de informação (SPAIR: Sistema de Informações para Personalização de Imóveis Residenciais) para a interação entre clientes e empresas incorporadoras e construtoras de condomínios residenciais, permitindo a incorporação de práticas de manufatura ágil a estas empresas. Para captar a visão dos potenciais usuários do sistema, foi realizado um estudo de caso em uma empresa incorporadora e construtora de condomínios residenciais, no sentido de definir o que projetistas e compradores de imóveis consideram importante em termos de personalização. A modelagem conceitual do problema em estudo foi realizada utilizando-se uma abordagem orientada a objetos. A utilização desta abordagem permitiu a implementação de um protótipo, no qual existe uma relação direta entre os eventos que ocorrem no mundo real e no sistema computacional. Um protótipo foi desenvolvido, utilizando a Web como ambiente de execução, permitindo a utilização de SPAIR por qualquer usuário conectado a Internet. Embora o sistema tenha passado por um conjunto limitado de testes de validação, os resultados obtidos demonstram o potencial do mesmo como uma ferramenta efetiva de implementação dos conceitos de manufatura ágil e customização de massa na área de construção civil.

Relevância:

80.00% 80.00%

Publicador:

Resumo:

Uma aplicação distribuída freqüentemente tem que ser especificada e implementada para executar sobre uma rede de longa distância (wide-área network-WAN), tipicamente a Internet. Neste ambiente, tais aplicações são sujeitas a defeitos do tipo colapso(falha geral num dado nó), teporização (flutuações na latência de comunicação) e omissão (perdas de mensagens). Para evitar que este defeitos gerem comseqüências indesejáveis e irreparáveis na aplicação, explora-se técnicas para tolerá-los. A abstração de detectores de defeitos não confiáveis auxilia a especificação e trato de algoritmos distribuídos utilizados em sistemas tolerantes a falhas, pois permite uma modelagem baseada na noção de estado (suspeito ou não suspeito) dos componentes (objetos, processo ou processadores) da aplicação. Para garantir terminação, os algoritmos de detecção de defeitos costumam utilizar a noção de limites de tempo de espera (timeout). Adicionalmente, para minimizar seu erro (falasas suspeitas) e não comprometer seu desempenho (tempo para detecção de um defeito), alguns detectores de defeitos ajustam dinamicamente o timeout com base em previsões do atraso de comunicação. Esta tese explora o ajuste dinâmico do timeout realizado de acordo com métodos de previsão baseados na teoria de séries temporais. Tais métodos supõem uma amostragem periódica e fornececm estimativas relativamente confiáveis do comportamento futuro da variável aleatória. Neste trabalho é especificado uma interface para transformar uma amostragem aperiódica do atraso de ida e volta de uma mensagem (rtt) numa amostragem periódica, é analisado comportamento de séries reais do rtt e a precisão dee sete preditores distintos (três baseados em séries temporais e quatrro não), e é avaliado a influência destes preditores na qualidade de serviço de um detector de defeitos do estilopull. Uma arquitetura orientada a objetos que possibilita a escolha/troca de algoritmos de previsão e de margem de segurança é também proposta. Como resultado, esta tese mostra: (i) que embora a amostragem do rtt seja aperiódica, pode-se modelá-la como sendo uma série temporal (uma amostragem periódica) aplciando uma interface de transformação; (ii) que a série temporal rtt é não estacionária na maioria dos casos de teste, contradizendo a maioria das hipóteses comumente consideradas em detectores de defeitos; (iii) que dentre sete modelos de predição, o modelo ARIMA (autoregressive integrated moving-average model) é o que oferece a melhor precisão na predição de atrasos de comunicação, em termos do erro quadrático médio: (iv) que o impacto de preditores baseados em séries temporais na qualidade de serviço do detector de defeitos não significativo em relação a modelos bem mais simples, mas varia dependendo da margem de segurança adotada; e (v) que um serviço de detecção de defeitos pode possibilitar a fácil escolha de algoritmos de previsão e de margens de segurança, pois o preditor pode ser modelado como sendo um módulo dissociado do detector.

Relevância:

80.00% 80.00%

Publicador:

Resumo:

Até hoje, não existem implementações de SGBDs Temporais disponíveis no mercado de software. A tradução de linguagens de consulta temporais para o padrão SQL é uma alternativa para implementação de sistemas temporais com base em SGBDs comerciais, os quais não possuem linguagem e estrutura de dados temporais. OASIS (Open and Active Specification of Information Systems) é uma linguagem que serve como repositório de alto nível para especificação formal orientada a objetos e geração automática de software, em diversas linguagens, através da ferramenta CASE OO-Method. As aplicações geradas desta forma utilizam, como meio de persistˆencia de objetos, SGBDs comerciais baseados na abordagem relacional. A linguagem OASIS foi estendida com aspectos temporais. A extensão de OASIS com aspectos temporais requer a especificação de um modelo de dados e de uma linguagem de consulta temporais que possam ser utilizados em SGBDs convencionais. Há duas abordagens para resolver o problema. A primeira baseia-se em extensões da linguagem e/ou do modelo de dados de modo que o modelo não-temporal é preservado. A segunda, abordagem de generalização temporal, é mais radical e não preserva o modelo não-temporal. A linguagem ATSQL2 fornece recursos adequados aos conceitos encontrados na abordagem de generalização temporal. Neste trabalho utiliza-se os conceitos de generalização temporal preservando o modelo não-temporal. A presente dissertação tem por finalidade propor um modelo de dados para suporte à extensão temporal da linguagem OASIS, bem como estender a linguagem ATSQL2 para facilitar as consultas a eventos temporais. O sistema de tradução da linguagem de consulta temporal para SQL é também adaptado ao modelo de dados proposto.

Relevância:

80.00% 80.00%

Publicador:

Resumo:

Neste trabalho apresenta-se um método de desenvolvimento integrado baseado no paradigma de orientação a objetos, que visa abordar todo o ciclo de desenvolvimento de uma aplicação tempo real. Na fase de especificação o método proposto baseia-se no uso de restrições temporais padronizadas pelo perfil da UML-TR, sendo que uma alternativa de mapeamento destas restrições para o nível de programação é apresentada. Este mapeamento serve para guiar a fase de projeto, onde utilizou-se como alvo a interface de programação orientada a objetos denominada TAFT-API, a qual foi projetada para atuar junto ao ambiente de execução desenvolvido no âmbito desta tese. Esta API é baseada na especificação padronizada para o Java-TR. Este trabalho também discute o ambiente de execução para aplicações tempo real desenvolvido. Este ambiente faz uso da política de escalonamento tolerante a falhas denominada TAFT (Time-Aware Fault- Tolerant). O presente trabalho apresenta uma estratégia eficiente para a implementação dos conceitos presentes no escalonador TAFT, que garante o atendimento a todos os deadlines mesmo em situações de sobrecarga transiente. A estratégia elaborada combina algoritmos baseados no Earliest Deadline, sendo que um escalonador de dois níveis é utilizado para suportar o escalonamento combinado das entidades envolvidas. Adicionalmente, também se apresenta uma alternativa de validação dos requisitos temporais especificados. Esta alternativa sugere o uso de uma ferramenta que permite uma análise qualitativa dos dados a partir de informações obtidas através de monitoração da aplicação. Um estudo de caso baseado em uma aplicação real é usado para demonstrar o uso da metodologia proposta.

Relevância:

80.00% 80.00%

Publicador:

Resumo:

Simulador de processos é uma ferramenta valiosa, pois possibilita desde a validação de projetos e sua operabilidade prática até aumentos de produção e redução de custos. Devido a estes e outros fatores, o interesse industrial em técnicas e pacotes computacionais para a modelagem, simulação e otimização de processos tem crescido muito nos últimos anos. Juntamente com este interesse cresce a qualidade das ferramentas disponíveis no mercado para tal, mas estas ainda não satisfazem totalmente as expectativas de seus usuários. Este trabalho consiste no projeto de um novo simulador genérico para processos dinâmicos que satisfaça os usuários de forma mais completa do que os disponíveis atualmente no mercado. Para tanto, foram reunidas e, quando necessário, desenvolvidas novas técnicas relativas à descrição, análise e solução de problemas dinâmicos. Uma nova linguagem de modelagem orientada a objetos e um sistema de tradução da representação nesta linguagem para sistemas de equações foram propostos. Métodos de análise dos sistemas de equações provenientes da modelagem foram desenvolvidos com o intuito de auxiliar o usuário na detecção de erros de modelagem. Algoritmos para solução de sistemas dinâmicos e estacionários foram reunidos e uma arquitetura interna foi proposta. Por fim, o sistema como um todo foi testado através de sua aplicação em problemas típicos e outros que não podem ser resolvidos diretamente com os pacotes computacionais disponíveis no mercado. O teste com os problemas práticos provou que a estrutura proposta é adequada e apresenta uma série de vantagens quando comparada com softwares largamente utilizados na simulação de processos.

Relevância:

80.00% 80.00%

Publicador:

Resumo:

A Customização em massa é um conceito emergente na indústria orientada a fornecer produtos e serviços customizados através de processos flexíveis, em grandes volumes e a custos razoavelmente baixos. A customização de produtos é uma estratégia chave para conseguir a satisfação do cliente com produtos exclusivos e preços razoáveis. Este trabalho de tese propõe um modelo de customização de produtos para facilitar o projeto e colaboração do cliente no processo de selecionar a configuração de um produto. O modelo integra as técnicas de modelagem orientada a objetos, análise de decisão multi-atributo e programação linear inteira. O objetivo do modelo é dar suporte à customização de produtos/serviços, em que as escolhas do cliente são gerenciadas pela relevância relativa de um conjunto de atributos sobre um conjunto de combinações de componentes oferecidas pela empresa, e com a limitação de restrições técnicas, estéticas e financeiras, que definem interativamente projetistas e consumidores. A integração das técnicas resulta em uma representação do processo de configuração que considera, simultaneamente, a abordagem técnica, explícita e objetiva dos projetistas e a abordagem baseada em intenções e preferências do consumidor. Com o modelo desenvolvido, o cliente pode definir regras e fornecer informação que pode ser utilizada para representar o conhecimento tácito em um modelo de programação linear que otimiza a sua utilidade específica. O modelo computacional é capaz de implementar o processo cognitivo que caracteriza a configuração de produtos em um ambiente de customização em massa de forma explícita, dinâmica e flexível. Experimentos foram realizados para exemplificar como é utilizado o programa e um estudo de caso foi desenvolvido para validar o modelo.

Relevância:

30.00% 30.00%

Publicador:

Resumo:

Uma linguagem orientada ao problema de projeto estrutural de edifícios e a correspondente estrutura de armazenamento de dados são apresentados, como núcleo principal do sistema PROADE. Objetiva-se assim permitir ao engenheiro estrutural descrever o problema em termos correntes de Engenharia, organizandose os dados recebidos para posterior análise e dimensionamento da estrutura. São discutidos o problema PROADE e os dados correspondentes, seguidos pela descrição das estruturas de armazenamento de dados do sistema. A seguir, define-se a linguagem PROADE e finalmente apresenta-se a organização do sistema PROADE.

Relevância:

30.00% 30.00%

Publicador:

Resumo:

Este trabalho apresenta um modelo de análise estática de programas orientados a objetos, o qual se denomina DEPAnalyzer (DEPendencies Analyzer). O modelo realiza a análise das dependências entre as classes de um programa, ou seja, os relacionamentos estabelecidos entre estas. As classes representam as entidades estáticas, as quais em tempo de execução darão origem a conjuntos de objetos. Através da simulação do programa o modelo consegue obter as informações sobre quem se relaciona com quem e qual é a intensidade destes relacionamentos. Estas informações visam auxiliar no processo de escalonamento de um programa em uma arquitetura distribuída. Para expressar estes relacionamentos podem ser gerados dois grafos, o grafo de dependências e o grafo de invocações. A geração de um ou de ambos depende do propósito de utilização, ou seja, alocação inicial ou redistribuição dos objetos. O grafo de dependências apresenta uma versão resumida dos relacionamentos. Este adequa-se a auxiliar no processo de distribuição inicial por propiciar um panorama geral dos relacionamentos sem considerar a ordenação de ocorrência das ações. Por sua vez o grafo de invocações tem como propósito a discriminação da ordem de ocorrência das ações de uma aplicação. Viabilizando a utilização deste por parte do processo de redistribuição dos objetos.

Relevância:

20.00% 20.00%

Publicador:

Resumo:

Este trabalho busca a implementação da replicação de objetos através da linguagem Java e de seu sistema de invocação remota de métodos (Remote Method Invocation - RMI). A partir deste sistema, define-se uma classe de replicação - a máquina de replicação – onde a implementação de grupos de objetos é estruturada de acordo com a arquitetura cliente/servidor, sendo o cliente o representante (a interface) de um grupo de objetos e os servidores representam os demais componentes do grupo. A classe de replicação atende a uma necessidade importante dos sistemas distribuídos - o desenvolvimento de aplicações tolerantes a falhas. Fundamentalmente, a tolerância a falhas é obtida por redundância e, no caso de mecanismos de tolerância a falhas por software, esta redundância significa basicamente replicação de dados, processos ou objetos. A tolerância a falhas para tal tipo de sistema é importante para garantir a transparência do mesmo, visto que, assim como um sistema distribuído pode auxiliar muito o usuário pelas facilidades oferecidas, o não cumprimento de suas atividades de acordo com o esperado pode, em algumas situações, causar-lhe transtornos e erros irrecuperáveis nas aplicações. Finalmente, como principal contribuição, este trabalho descreve e implementa a solução completa para a construção de uma biblioteca de classes que oferece a replicação de forma totalmente transparente para o usuário.