24 resultados para Plataforma Java
em Lume - Reposit
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.
Resumo:
Muitos aplicativos atuais, envolvendo diversos domínios de conhecimento, são estruturados como arquiteturas de software que incorporam, além dos requisitos funcionais, requisitos não funcionais, como segurança, por exemplo. Tais requisitos podem constituir um domínio próprio, e, portanto, serem comuns a várias outras arquiteturas de software. Tecnologias como Programação Orientada a Aspectos, Reflexão Computacional e Padrões de Projeto colaboram no desenvolvimento de arquiteturas que provêem a separação de requisitos não funcionais. Porém, sua experimentação e adoção no domínio da segurança computacional ainda é incipiente. O foco deste trabalho é a elaboração de um padrão de projeto voltado à segurança, utilizando como arquitetura conceitual programação orientada a aspectos, e como arquitetura de implementação, reflexão computacional. A composição destas tecnologias resulta em um middleware orientado à segurança, voltado a aplicações desenvolvidas em Java. Estuda-se as tecnologias, seus relacionamentos com a área de segurança, seguido da proposta de uma arquitetura de referência, a partir da qual é extraído um protótipo do middleware de segurança. Este, por sua vez, provê mecanismos de segurança tão transparentes quanto possível para as aplicações que suporta. Com o objetivo de realizar a implementação do middleware de segurança, também são estudadas os mecanismos de segurança da plataforma Java, porém limitado ao escopo deste trabalho. Segue-se o estudo da base conceitual das tecnologias de Reflexão Computacional, o modelo de implementação, seguido de Programação Orientada a Aspectos, o modelo conceitual, e, por fim, têm-se os Padrões de Projeto, a arquitetura de referência. Integrando as três tecnologias apresentadas, propõe-se um modelo, que estabelece a composição de um Padrão Proxy, estruturado de acordo com a arquitetura reflexiva. Este modelo de arquitetura objetiva implementar o aspecto de segurança de acesso a componentes Java, de forma não intrusiva,. Baseado no modelo, descreve-se a implementação dos diversos elementos do middleware, estruturados de forma a ilustrar os conceitos propostos. Ao final, apresenta-se resultados obtidos durante a elaboração deste trabalho, bem como críticas e sugestões de trabalhos futuros.
Resumo:
Renovados são os desa os trazidos à computação distribuída pelos recentes desenvolvimentos nas tecnologias de computação móvel. Tais avanços inspiram uma perspectiva na qual a computação tornar-se-á uma entidade ubíqua em um futuro próximo, estando presente nas mais simples atividades do dia-a-dia. Esta perspectiva é motivadora das pesquisas conduzidas no escopo do projeto ISAM, as quais investigam as questões relativas ao uso da computação em ambientes móveis de larga escala. Neste trabalho é apresentado o sistema PRIMOS (PRIMitives for Object Scheduling), o qual busca, pela complementação da plataforma Java, satisfazer as emergentes necessidades do ISAM. Especi camente, o PRIMOS constitui um conjunto de primitivas para instanciação remota e migração de objetos, comunicação e monitoração, direcionadas a um ambiente de computação distribuída de larga escala de características pervasivas. A primitiva de instanciação remota disponibilizada pelo PRIMOS aumenta a plataforma Java padrão com a possibilidade de criar e ativar objetos em nodos remotos do sistema. Por sua vez, a primitiva de migração faculta a relocação de objetos. A consecu- ção de tais semânticas tem como sub-produto a de nição de semânticas para ativação e desativação de objetos, assim como para captura e restauração de contexto de execução. Sob a perspectiva da comunicação, o PRIMOS de ne um esquema de endereçamento independente de protocolo de transporte, assim como uma interface neutra para acesso às facilidades de comunicação. A integração destas funcionalidades ao mecanismo de invocações remotas da plataforma Java, o RMI, permite a desvinculação deste da pilha TCP/IP. Por conseguinte, habilita a adoção de transportes otimizados ao hardware de comunicação disponibilizado pelo sistema. No que se refere à monitoração, o PRIMOS de ne um esquema exível e extensível baseado em sensores. A exibilidade vem principalmente da possibilidade dos sensores terem seus parâmetros de operação recon gurados a qualquer momento em resposta a novas necessidades do sistema. Por outro lado, o sistema é extensível pois o conjunto de sensores básicos, ditos nativos, pode ser aumentado por sensores providos pela aplicação. Com intuito de validar as idéias postuladas, um protótipo foi construído para o sistema. Sobre este, baterias de testes foram realizadas para cada uma das primitivas constituintes do PRIMOS.
Resumo:
Esta dissertação apresenta duas implementações de algoritmos para gerência dinâmica de memória em software, as quais foram desenvolvidas utilizando como alvo uma plataforma embarcada Java. Uma vez que a plataforma utilizada pertence a uma metodologia para geração semi-automática de hardware e software para sistemas embarcados, os dois algoritmos implementados foram projetados para serem integrados ao contexto desta mesma metodologia. Como forma de estabelecer comparações detalhadas entre as duas implementações desenvolvidas, foram realizadas diversas estimativas em desempenho, uso de memória, potência e energia para cada implementação, utilizando para isto duas versões existentes da plataforma adotada. Através da análise dos resultados obtidos, observou-se que um dos algoritmos desenvolvidos obteve um desempenho melhor para realização da gerência dinâmica da memória. Em contrapartida, o outro algoritmo possui características de projeto que possibilitam sua utilização com aplicações de tempo-real. De um modo geral, os custos adicionais resultantes da utilização do algoritmo de tempo-real, em relação ao outro algoritmo também implementado, são de aproximadamente 2% para a potência média dissipada, 16% para o número de ciclos executados, 18% para a energia consumida e 10% sobre a quantidade de total memória utilizada. Isto mostra que o custo extra necessário para utilização do algoritmo de tempo real é razoavelmente baixo se comparado aos benefícios proporcionados pela sua utilização. Como impactos finais produzidos por este trabalho, obteve-se um acréscimo de 35% sobre o número total de instruções suportadas pela arquitetura utilizada. Adicionalmente, 12% das instruções que já existiam no conjunto desta arquitetura foram modificadas para se adaptarem aos novos mecanismos implementados. Com isto, o conjunto atual da arquitetura passa a corresponder a 44% do total de instruções existentes na arquitetura da máquina virtual Java. Por último, além das estimativas desenvolvidas, foram também realizadas algumas sugestões para melhoria global dos algoritmos implementados. Em síntese, alguns pontos cobertos por estas sugestões incluem: a migração de elementos do processamento do escopo dinâmico para o estático, o desenvolvimento de mecanismos escaláveis para compactação de memória em tempo-real, a integração de escalonadores ao processo de gerência de memória e a extensão do processo de geração semi-automática de software e hardware para sistemas embarcados.
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.
Resumo:
Fácies marinhas e costeiras associadas a eventos transgressivos-regressivos quaternários ocorrem na Planície Costeira do Rio Grande do Sul e na plataforma continental adjacente. Enquanto as fácies expostas na planície costeira apresentam uma composição essencialmente siliciclástica, as fácies submersas, hoje aflorantes na antepraia e plataforma interna, apresentam, muitas vezes, uma composição carbonática. Formada por coquinas e arenitos de praia fortemente cimentados, estas fácies destacam-se do fundo oceânico como altos topográficos submersos. Os altos topográficos da antepraia têm atuado como fonte de boa parte dos sedimentos e bioclastos de origem marinha encontrados nas praias da área de estudo. Os bioclastos carbonáticos que ocorrem nestes locais caracterizam uma Associação Heterozoa, ou seja, são formados por carbonatos de águas frias, característicos de médias latitudes, e são representados principalmente por moluscos, equinodermos irregulares, anelídeos, crustáceos decápodos, restos esqueletais de peixes ósseos e cartilaginosos, cetáceos, tartarugas e aves semelhantes à fauna atual. Além destes bioclastos de origem marinha, as praias estudadas apresentam a ocorrência de fragmentos orgânicos provenientes de afloramentos continentais fossilíferos, contendo abundantes restos esqueletais de mamíferos terrestres gigantes extintos, das ordens Edentada, Notoungulada, Litopterna, Proboscidea, Artiodactila, Perissodactila, Carnívora e Rodentia. A concentração dos bioclastos na praia resultada da ação direta dos processos hidrodinâmicos que atuam na região de estudo (ondas de tempestade, deriva litorânea, correntes, etc). A variação no tamanho médio dos bioclastos encontrados ao longo da linha de costa está relacionada ao limite da ação das ondas de tempestades sobre o fundo oceânico, o qual é controlado principalmente pela profundidade. Os afloramentos-fonte submersos podem ser divididos em holocênicos e pleistocênicos. A tafonomia dos bioclastos pleistocênicos permite argumentar que após o penúltimo máximo transgressivo que resultou na formação do sistema deposicional Laguna-Barreira III (aproximadamente 120 ka) parte dos depósitos lagunares permaneceram emersos e não estiveram sob a ação marinha (barrancas do arroio Chuí, com a megafauna preservada in situ), enquanto que parte dos depósitos lagunares esteve sob ação direta do ambiente praial. Em diversas feições submersas observam-se coquinas contendo fósseis de mamíferos terrestres, indicando o retrabalhamento dos sedimentos lagunares em ambiente praial. As coquinas que apresentam moluscos pouco arredondados e de maior granulometria são aqui definidas, informalmente, como Coquinas do Tipo 1. Como conseqüência da última regressão pleistocênica (iniciada após o máximo transgressivo de 120 ka) estas coquinas ficaram submetidas a uma exposição subaérea. Este fato possibilitou a dissolução diferenciada dos componentes carbonáticos existentes nos depósitos (coquinas e arenitos) e sua recristalização (calcita espática) em ambientes saturados em água doce. A Transgressão Pós-Glacial (iniciada em torno de 18 ka) foi responsável pelo retrabalhamento dos arenitos e coquinas, recristalizando mais uma vez os elementos carbonáticos. Devido ao seu grau de consolidação estes depósitos resistiram à erosão associada à elaboração da superfície de ravinamento e encontram-se atualmente expostos na antepraia e, mesmo, na linha de praia atual. Pelo menos há 8 ka houve novamente um período favorável à precipitação de carbonato de cálcio, ocorrendo a litificação de rochas sedimentares em uma linha de praia numa cota batimétrica inferior a atual. Neste intervalo de tempo formaram-se as coquinas e arenitos não recristalizados, apresentando fragmentos de moluscos muito fragmentados e arredondados e de menor granulometria, aqui definidas, informalmente, como Coquinas do Tipo 2. A interpretação da tafonomia dos bioclastos de idade holocênica sugere pelo menos duas fácies deposicionais: (a) Fósseis articulados numa matriz areno-síltica, preenchidos por silte e argila, interpretados como originalmente depositados em regime transgressivo no ambiente Mesolitoral (foreshore) para Infralitoral superior (upper shoreface), com baixa ação de ondas. (b) Fragmentos de carapaças e quelas isoladas encontradas numa coquina fortemente cimentada por calcita espática, por vezes recristalizada, interpretados como concentrados na Zona de Arrebentação por ondas de tempestades. A dinâmica costeira atual retrabalha novamente os sedimentos inconsolidados enquanto as rochas sedimentares consolidadas (formadas pelas Coquinas Tipo 1 e 2) resistem parcialmente à erosão e constituem os altos topográficos submersos (parcéis) descritos neste trabalho.
Resumo:
Este trabalho apresenta uma metodologia para a geração automática de ASICs, em VHDL, a partir da linguagem de entrada Java. Como linguagem de especificação adotou-se a Linguagem Java por esta possuir características desejáveis para especificação a nível de sistema, como: orientação a objetos, portabilidade e segurança. O sistema é especificamente projetado para suportar síntese de ASICs a partir dos modelos de computação Máquina de Estados Finita e Pipeline. Neste trabalho, adotou-se estes modelos de computação por serem mais usados em sistemas embarcados As principais características exploradas são a disponibilização da geração de ASICs para a ferramenta SASHIMI, o alto nível de abstração com que o projetista pode contar em seu projeto, as otimizações de escalonamento realizadas automaticamente, e o sistema ser capaz de abstrair diferentes modelos de computação para uma descrição em VHDL. Portanto, o ambiente permite a redução do tempo de projeto e, consequentemente, dos custos agregados, diminuindo a probabilidade de erros na elaboração do projeto, portabilidade e reuso de código – através da orientação a objetos de Java – podendo-se proteger os investimentos prévios em desenvolvimento de software. A validação desses conceitos foi realizada mediante estudos de casos, utilizando-se algumas aplicações e analisando os resultados obtidos com a geração dos ASICs.
Resumo:
Em 1982 o Brasil participa da Convenção das Nações Unidas para o Direito do Mar. Esta convenção dispõe sobre os usos dos espaços marítimos e oceânicos, buscando a utilização racional e a exploração dos recursos do mar. Devido ao escasso conhecimento da região da plataforma externa e talude continental, surge o programa Avaliação do Potencial Sustentável de Recursos Vivos da Zona Econômica Exclusiva – REVIZEE, tanto para a diversificação da exploração pesqueira quanto para a determinação dos limites sustentáveis de captura. Com base em material coletado em abril de 1998, durante campanha de Bentos concernente ao programa REVIZEE, são fornecidos resultados relativos a Gastropoda encontrados na radial 45, estações hidrográficas 6839 (32o55´70´´S - 50o34´60´´W), 6840 (33o01´45´´S - 50o12´75´´W), 6841 (33o00´16´´S - 50o22´84´´W) e 6842 (32o57´81´´S - 50o29´18´´W), localizadas ao largo de Rio Grande, Rio Grande do Sul, Brasil. Para a avaliação da diversidade bêntica foram utilizados três tipos de amostradores de fundo; Draga de arrasto, Box Corer e Van Veen. Molluscos foram separados dos demais grupos taxonômicos pela equipe do REVIZEE e recebidos pelo laboratório de malacologia da Universidade Federal do Rio Grande do Sul. O material foi triado sob lupa Zeiss Stemi 2000- C ou Wild M-38. O material foi identificado por comparação com os dados da bibliografia e/ou por comparação com exemplares depositados nas coleções do Museu Oceanográfico Eliézer de Carvalho Rios (MORG) e/ou com a coleção particular do Dr. José Carlos Tarasconi São identificados e caracterizados quanto a tamanho, esculturação e área de ocorrência 6.020 exemplares distribuídos em 36 famílias - 80 táxons em nível de espécie, 19 em nível de gênero e 2 em nível de família. A família Turridae é a que apresenta o maior número de táxons com 16 espécies. Turritella hookeri Reeve, 1849 é a espécie mais abundante, com 684 exemplares. Registra-se pela primeira vez para o Rio Grande do Sul as seguintes espécies: Brookula conica (Watson, 1886), Calliostoma echinatum Dall, 1881, Solariela carvalhoi Lopes & Cardoso, 1958, Caecum massambabensis Absalão, 1994, Turritella hookeri Reeve, 1849, Crepidula plana Say, 1822, Natica pusilla Say, 1822, Polinices lacteus (Guilding, 1833), Eulima mulata Rios & Absalão, 1990, Melanella aff. hypsela (Verrill & Bush, 1900), Trachipollia turricula (von Maltzan, 1884), Anachis sparsa Reeve, 1859, Dentimargo janeiroensis (E. A. Smith, 1915), Axelella brasiliensis Verhecken, 1991, Drilliola loprestiana (Calcara, 1841), Mitrolumna biplicata (Dall, 1889), Nannodiella vespuciana (Orbigny, 1842), Stenodrillia goundlachi (Dall & Simpson, 1901), Terebra brasiliensis E. A. Smith, 1873 e Mathilda aff. scitula Dall, 1889. Novos limites de profundidade são registrados para 29 espécies. Com base na lista de espécies encontradas, se discute sobre o limite das Províncias Caribenha e Patagônica e sobre a influência da Laguna dos Patos no Talude Continental ao largo de Rio Grande.
Resumo:
Este texto apresenta um novo modelo multiparadigma orientado ao desenvolvimento de software distribuído, denominado Holoparadigma. O Holoparadigma possui uma semântica simples e distribuída. Sendo assim, estimula a modelagem subliminar da distribuição e sua exploração automática. A proposta é baseada em estudos relacionados com modelos multiparadigma, arquitetura de software, sistemas blackboard, sistemas distribuídos, mobilidade e grupos. Inicialmente, o texto descreve o modelo. Logo após, é apresentada a Hololinguagem, uma linguagem de programação que implementa os conceitos propostos pelo Holoparadigma. A linguagem integra os paradigmas em lógica, imperativo e orientado a objetos. Além disso, utiliza um modelo de coordenação que suporta invocações implícitas (blackboard) e explícitas (mensagens). A Hololinguagem suporta ainda, concorrência, modularidade, mobilidade e encapsulamento de blackboards em tipos abstratos de dados. Finalmente, o texto descreve a implementação da Holoplataforma, ou seja, uma plataforma de desenvolvimento e execução para a Hololinguagem. A Holoplataforma é composta de três partes: uma ferramenta de conversão de programas da Hololinguagem para Java (ferramenta HoloJava), um ambiente de desenvolvimento integrado (ambiente HoloEnv) e um plataforma de execução distribuída (plataforma DHolo).
Resumo:
A atividade de teste constitui uma fase de grande importância no processo de desenvolvimento de software, tendo como objetivo garantir um alto grau de confiabilidade nos produtos desenvolvidos. O paradigma da Orientação a Objetos (OO) surgiu com o objetivo de melhorar a qualidade bem como a produtividade no desenvolvimento de aplicações. Entretanto, apesar do aumento constante de aceitação do paradigma OO pela indústria de software, a presença de algumas de suas características torna a atividade de teste de programas neste paradigma mais complexa do que o teste de sistemas tradicionais. Entre estas características cita-se a herança, o encapsulamento, o polimorfismo e a ligação dinâmica [EIS 97] [PRE 95] [UNG 97]. Algumas técnicas estão sendo implementadas para auxiliarem a atividade de teste através do uso da tecnologia de reflexão computacional [HER 99]. Estas técnicas permitem a realização de análises de aspectos dinâmicos dos programas, sem a necessidade de instrumentar o código-fonte das aplicações que estão sendo monitoradas. Com o objetivo de auxiliar o processo de teste de programas orientados a objetos, este trabalho aborda o desenvolvimento de uma ferramenta, a qual automatiza parcialmente o teste de programas escritos em Java. A ferramenta evidencia o teste de estados fazendo uso da tecnologia de reflexão computacional. Através da especificação de asserções, feitas pelo usuário da ferramenta, na forma de invariantes de classe, pré e pós-condições de métodos, é possível verificar a integridade dos estados dos objetos durante a execução do programa em teste. A ferramenta possibilita também, armazenar a seqüência de métodos chamados pelos objetos da aplicação em teste, tornando possível ao testador, visualizar o histórico das interações entre os objetos criados no nível-base.
Resumo:
Na realização de atividades físicas o corpo humano exerce forças contra o solo. Em atividades tais como correr e saltar as forças são exercidas através dos pés. Atualmente, sabe-se que estudos da magnitude e direção destas forças, e das maneiras de suas mudanças no tempo, fornecem valiosas informações sobre a performance alcançada no movimento, podendo indicar medidas corretivas que possam aprimorá-la. Na obtenção destas variáveis determinantes no desempenho do movimento utilizam-se instrumentos denominados plataformas de forças, capazes de medir a força de ação realizada sobre sua superfície de contato, e o respectivo momento, permitindo a determinação das três componentes ortogonais de força (Fx, Fy, Fz) e os momentos em torno dos três eixos ortogonais (Mx, My, Mz) simultaneamente. Este trabalho descreve o desenvolvimento teórico de uma plataforma de forças específica para aplicação na decolagem do salto em distância, bem como as alternativas de projeto geradas neste desenvolvimento. Foram buscadas soluções para a realização dos experimentos sob condições naturais de treinamento, visando a construção do instrumento e sua instalação na pista de saltos atléticos. Para isso é proposta a substituição da tábua de impulsão original pela plataforma de forças desenvolvida. Nas alternativas geradas foi utilizado o princípio extensométrico resistivo de medição de forças, que representa uma diminuição substancial no custo de manufatura estimado frente às unidades comercialmente avaliadas. Nestas alternativas, os sensores resistivos “strain gages” são localizados estrategicamente em estruturas metálicas que sustentam uma tampa de material composto com a função de superfície de contato Para a análise estrutural das alternativas estudadas foi utilizado o Método dos Elementos Finitos. Para comparar e escolher a melhor entre as diversas alternativas, foram propostos índices de desempenho. Ao final do trabalho são apresentadas conclusões sobre a metodologia empregada no estudo realizado e sobre o novo modelo de plataforma de forças desenvolvido.
Resumo:
Com o advento dos computadores surgiram problemas de saúde associados à tarefa da digitação, causados, principalmente, pela posição estática do corpo, pela repetitividade de movimentos dos membros superiores, pelas forças envolvidas, etc. Na tentativa de relacionar esses fatores com os distúrbios, iniciou-se, na década de 90, o estudo da força aplicada nos teclados de computador. O objetivo principal deste trabalho é desenvolver uma plataforma para medir a força aplicada nas teclas do teclado de um computador durante a digitação, para utilização em biomecânica. Foi projetada e construída uma plataforma de força que mede a força vertical, Fz, (direção z), a força horizontal (e transversal) ao teclado, Fy, (direção y) e o momento aplicado no eixo horizontal e longitudinal ao teclado, Mx, (eixo x). Com estes três componentes é possível, numa análise bidimensional (2D), determinar a magnitude do vetor força resultante, seu ângulo com plano horizontal e o ponto de aplicação sobre a superfície da tecla. Os sensores utilizados foram os extensômetros de resistência elétrica, colados em placas que deformam-se principalmente por flexão; estes sensores são ligados em ponte completa de Wheatstone para cada canal de aquisição, Fx, Fy e Mx. Foi construído um modelo em madeira, PVC e acrílico, na escala 4,5:1, para auxiliar na busca de soluções de problemas de construção. Com o objetivo de aperfeiçoar o modelo conceitual criado, utilizou-se modelamento numérico (elementos finitos) Os sinais adquiridos para cada canal são independentes, não necessitando de operações posteriores. O sistema de aquisição é composto por um computador para armazenar e posteriormente tratar matematicamente os dados coletados, por uma placa de aquisição (A/D) de dados, um condicionador de sinais e o programa SAD 2.0 para aquisição e processamento de dados. A linearidade da plataforma de força permaneceu dentro dos limites de 3 % durante a calibração estática. Os testes dinâmicos mostraram que a plataforma possui freqüência fundamental superior a 2300 Hz, o que permite que ela seja utilizada com segurança para a análise de forças aplicadas durante a digitação.
Resumo:
Para reutilização, manutenção e refatoração, projetistas de sistemas de software, freqüentemente, precisam examinar o código fonte da aplicação para entender os detalhes dos sistemas desenvolvidos. As aplicações orientadas a objetos em geral, tornam-se coleções nebulosas de classes e implementações de métodos. Sem dúvida a habilidade de entender sistemas de software é largamente aumentada visualizando-se esses produtos em níveis mais altos de abstração. Os padrões de projeto demonstram um alto índice de abstração e são considerados uma ferramenta efetiva para o entendimento de sistemas de software orientados a objetos. Aplicações orientadas a objetos visualizadas como um sistema de interação de padrões requerem a descoberta, identificação e classificação de grupos de classes relacionadas. Estas visualizações podem representar qualquer padrão conhecido ou agrupamentos que executam uma tarefa abstrata e necessariamente não são uma solução de padrão conhecida. Os padrões de projeto descrevem, portanto, microarquiteturas que resolvem problemas arquitetônicos em sistemas de software orientados a objetos. É importante identificar estas microarquiteturas durante a fase de manutenção de aplicações orientadas a objetos. Faz-se necessário salientar que estas microarquiteturas aparecem freqüentemente distorcidas na aplicação fonte. O objeto deste trabalho é demonstrar a viabilidade de construir uma ferramenta para descobrir a utilização de padrões de projeto em aplicações Java. Assim, esta tese examina as características de alguns padrões, determinando a natureza do que faz um padrão ser detectável por intermédio de meios automatizados, e propõe algumas regras pelas quais um conjunto de padrões possa ser identificado. As regras são baseadas nos relacionamentos entre classes e objetos mediante observação dos modelos estático e dinâmico. Este trabalho também documenta o desenvolvimento do protótipo da ferramenta de inspeção, que tem por objetivo aplicar os processos de engenharia reversa e reflexão computacional sobre código Java, utilizando as informações adquiridas para detectar padrões de projeto. Finalmente, esta tese demonstra a utilização dessa ferramenta em um exemplo pequeno de aplicação Java e forma a base para trabalhos adicionais que investiguem a existência de diferentes padrões de projeto em sistemas de software construídos em Java.
Resumo:
Em vista da maior complexidade da programação paralela e distribuída em relação à programação de ambientes centralizados, novas ferramentas vêm sendo construídas com o objetivo de auxiliar o programador desses ambientes a desempenhar sua tarefa de formas mais eficazes e produtivas. Uma das ferramentas que há algum tempo tem sido usada na programação centralizada e aos poucos está sendo empregada também na programação concorrente é a programação visual. A programação visual se vale da presença de elementos visuais na especificação dos programas como peças chaves do processo de desenvolvimento de software. No caso específico da programação concorrente, a programação visual é especialmente útil pela capacidade que os gráficos têm de representar de forma mais adequada estruturas bidimensionais. Um programa concorrente, por relacionar no espaço diversos elementos com seus próprios fluxos de execução, faz surgir duas dimensões de análise que são mais difíceis de serem observadas através de programas textuais. Atualmente existem ferramentas de programação visual paralela e distribuída, mas a ênfase é dada na programação paralela, sem muita atenção a aplicações de sistemas abertos ou cliente-servidor. Além disso, tais ferramentas sofrem da falta de apoio à engenharia do software. Considerando essas deficiências, este trabalho apresenta uma ferramenta de programação visual para o desenvolvimento de aplicações compostas por objetos distribuídos que ofereça também a possibilidade de aplicar os principais conceitos da engenharia de software, como reutilização e orientação a objeto. Nesta ferramenta, o programador especifica de maneira visual a estrutura do seu programa, insere o código textual para a lógica da aplicação e o ambiente se encarrega do tratamento da distribuição e da comunicação de mais baixo nível. A aplicação é representada como um grafo dirigido, onde os nodos representam os objetos distribuídos e os arcos indicam os relacionamentos existentes entre esses objetos. A especificação dos programas é modular, baseando-se na reunião de componentes reutilizáveis, o que torna o sistema altamente configurável e extensível. Tanto a implementação da ferramenta quanto o código das aplicações geradas usam a linguagem de programação Java. A linguagem de programação visual projetada não especifica detalhes a respeito de como irá funcionar a comunicação e distribuição dos objetos. Portanto, foram implementados componentes para comunicação e outros recursos de programação distribuída, como locks e dados globais para serem usados nas aplicações. Para validar os principais objetivos da ferramenta, foram implementados alguns exemplos de aplicações distribuídas, como um pequeno sistema de bate-papo.
Resumo:
Este trabalho apresenta a proposta e a implementação de um sistema de gerência de energia para redes locais de computadores (Local Area Networks ou LANs). Desde sua introdução, no início dos anos 90, os mecanismos de gerência de energia para computadores têm contribuído de maneira significativa para a redução do consumo nos períodos de inatividade, mas podem ter seu efeito minimizado por uma série de fatores, dentre os quais destaca-se a conexão do equipamento a uma rede. Em linhas gerais, o objetivo do sistema proposto é, justamente, facilitar a gerência de energia em ambientes de rede. O funcionamento do sistema é baseado na aplicação de políticas de consumo definidas pelo administrador da rede. As políticas podem ser aplicadas em duas situações distintas: em horários pré-determinados (p. ex. depois do horário comercial), quando podem ajudar a reduzir o desperdício de energia, ou em resposta a alterações no fornecimento de energia, caso a rede seja protegida por no-breaks, quando a redução no consumo resulta em maior tempo de autonomia da fonte reserva (banco de baterias). As políticas são configuradas através de um mecanismo flexível, que permite não apenas desligar os equipamentos, mas colocá-los em estados intermediários de consumo e executar outros tipos de ações. A arquitetura do sistema é baseada no modelo SNMP (Simple Network Management Protocol) de gerência de redes. É composta, basicamente, de agentes, elementos de software que residem nos equipamentos da rede e detêm o conhecimento específico sobre suas características de consumo de eletricidade, e de um gerente, elemento central que contém a configuração das políticas de consumo e que é responsável pelo monitoramento e controle dos agentes. Gerente e agentes comunicam-se através do protocolo SNMP, trocando informações segundo uma base de informações (MIB) projetada especificamente para a gerência de energia. A ênfase da parte prática do trabalho está no gerente, que foi inteiramente implementado através da linguagem Java, utilizando bibliotecas disponíveis gratuitamente. Adicionalmente, foi implementado um agente-protótipo para a plataforma Windows, o que permitiu observar o sistema completo em execução. Os testes permitiram validar a praticabilidade da arquitetura e estimar o ganho potencial proporcionado pela utilização do sistema. São apresentadas medições que demonstram um aumento de até 6 vezes na autonomia do banco de baterias do no-break para uma configuração de rede pequena, utilizando o sistema para desligar automaticamente 90% dos computadores durante um corte no fornecimento externo. A economia decorrente da redução de consumo em horários de inatividade foi estimada em até R$0,63 por computador no período de um ano (tomando por base a tarifa média praticada no Brasil entre janeiro e maio de 2002).