994 resultados para Java (Linguagem de programação de computador)
Resumo:
Este trabalho realiza um estudo sobre a criação de sistemas tempo-real usando orientação a objetos, com enfoque no mapeamento de especificações para linguagens de programação. O paradigma de orientação a objetos tem sido usado nas diferentes fases relacionadas com o desenvolvimento de sistemas tempo-real, variando desde a modelagem até o ambiente de programação e execução, mas atualmente estas iniciativas ainda focam etapas isoladas do ciclo de desenvolvimento. O objetivo deste trabalho é o de preencher esta lacuna, propondo um mapeamento entre uma metodologia ou ferramenta de análise e projeto de sistemas tempo-real orientados a objetos e uma linguagem ou ambiente de desenvolvimento baseado no paradigma de orientação a objetos que possua suporte para atender às restrições temporais especificadas. O mapeamento proposto foi desenvolvido utilizando estudos de caso clássicos em aplicações tempo-real que foram baseados em dois recentes padrões. O primeiro é o emergente padrão Real-Time UML, que visa realizar a especificação de requisitos temporais utilizando diagramas UML com extensões que os representem. O outro padrão é o Real-Time Specification for Java, que consiste de uma interface de programação (API) para desenvolvimento de aplicações tempo-real com a linguagem Java. O relacionamento entre stereotypes e tags usados para representar restrições temporais em diagramas UML e o código Java correspondente é explicado e um sumário da estratégia de mapeamento é discutido.
Resumo:
A competitividade cada vez mais acirrada e globalizada tem forçado as empresas a desenvolver produtos com maior qualidade em um menor tempo com custos cada vez mais baixos. Para isto, passaram a utilizar tecnologias de ponta na manufatura de seus produtos, que envolvem desde a concepção do produto até sua efetiva produção. Uma das etapas mais importantes na concepção de um produto manufaturado, a partir de um projeto, é o planejamento do processo produtivo. A essência dessa atividade é disponibilizar uma gama de informações bem detalhadas e organizadas para o chão de fábrica que pode incluir a seleção da máquinaferramenta, determinação dos parâmetros de corte, geração do programa NC e as instruções de trabalho. Na maioria das empresas o planejamento do processo é feito por processistas experientes que utilizam técnicas manuais, onde despedem tempo considerável fazendo cálculos, recuperando informações, escrevendo, digitando e detalhando o plano, e nenhuma dessas tarefas agrega valor diretamente ao produto. Assim somente uma pequena parcela do tempo total é utilizado na concepção e análise do produto. A introdução dos computadores na confecção do plano de processo torna o planejamento mais eficiente podendo dispor de mais alternativas além daquelas exploradas manualmente, e ainda há vantagens adicionais, como a realização de várias comparações de planos semelhantes para selecionar o melhor para cada caso, reduzindo o tempo de planejamento, exigindo menor experiência técnica dos processistas, resultando em aumento da produtividade com planos otimizados. O sistema desenvolvido dentro da filosofia de planejamento de processo variante-interativo, um método que se utiliza da tecnologia de grupo para formar famílias de peças, onde para cada família é desenvolvido um plano padrão, no qual torna-se a base de dados para novas peças, exigindo alterações apenas nos detalhes que não forem similares. Quando não existir um plano semelhante para nova peça este é gerado de forma interativa onde o processista tem o auxílio do computador na definição da folha de processo, ao contrário de um sistema generativo que utiliza uma programação mais complexa e cria automaticamente planos de processo distintos para a nova peça. Os planos de processo gerados contem os processos de usinagem, as máquinas para realizar os mesmos, ferramentas e portaferramentas, sistemas de fixação, os parâmetros de corte e o sequenciamento das operações. O sistema foi projetado em Visual Basic, uma linguagem que disponibiliza uma interface gráfica amigável com o usuário. O conjunto das informações estritamente necessárias para o desenvolvimento do programa é armazenado em um sistema de gerenciamento de banco de dados relacional (ACCESS), sistema esse escolhido por ter a vantagem de permitir manipular mais de um aplicativo ao mesmo tempo, estabelecendo relações entre eles, buscando eliminar a duplicidade de informações, impondo integridade referencial, reduzindo o espaço de armazenamento e facilitando a atualização dos dados.
Resumo:
Formal methods should be used to specify and verify on-card software in Java Card applications. Furthermore, Java Card programming style requires runtime verification of all input conditions for all on-card methods, where the main goal is to preserve the data in the card. Design by contract, and in particular, the JML language, are an option for this kind of development and verification, as runtime verification is part of the Design by contract method implemented by JML. However, JML and its currently available tools for runtime verification were not designed with Java Card limitations in mind and are not Java Card compliant. In this thesis, we analyze how much of this situation is really intrinsic of Java Card limitations and how much is just a matter of a complete re-design of JML and its tools. We propose the requirements for a new language which is Java Card compliant and indicate the lines on which a compiler for this language should be built. JCML strips from JML non-Java Card aspects such as concurrency and unsupported types. This would not be enough, however, without a great effort in optimization of the verification code generated by its compiler, as this verification code must run on the card. The JCML compiler, although being much more restricted than the one for JML, is able to generate Java Card compliant verification code for some lightweight specifications. As conclusion, we present a Java Card compliant variant of JML, JCML (Java Card Modeling Language), with a preliminary version of its compiler
Resumo:
This work presents JFLoat, a software implementation of IEEE-754 standard for binary floating point arithmetic. JFloat was built to provide some features not implemented in Java, specifically directed rounding support. That feature is important for Java-XSC, a project developed in this Department. Also, Java programs should have same portability when using floating point operations, mainly because IEEE-754 specifies that programs should have exactly same behavior on every configuration. However, it was noted that programs using Java native floating point types may be machine and operating system dependent. Also, JFloat is a possible solution to that problem
Resumo:
Pós-graduação em Engenharia Elétrica - FEIS
Resumo:
We present the neuropsychological assessment with computer aid of six cerebral palsy children. Three children had right hemiparesis and three, left hemiparesis. The tomographic examination showed parietal cavities (porencephalic cyst in 4 children, ischemic injury in 1 case and subarachnoid cyst in 1 case). We have proposed to assess the visuo-spatial function since we suspected the children could have disturbance of this function. We did not detect this disturbance. On the other hand, the children had astereognosia and the right hemiparetic children preferred to execute signs on the right part of the computer visor. We discuss and propose explanations for both findings.
Resumo:
As comunicações electrónicas são cada vez mais o meio de eleição para negócios entre entidades e para as relações entre os cidadãos e o Estado (e-government). Esta diversidade de transacções envolve, muitas vezes, informação sensível e com possível valor legal. Neste contexto, as assinaturas electrónicas são uma importante base de confiança, fornecendo garantias de integridade e autenticação entre os intervenientes. A produção de uma assinatura digital resulta não só no valor da assinatura propriamente dita, mas também num conjunto de informação adicional acerca da mesma, como o algoritmo de assinatura, o certificado de validação ou a hora e local de produção. Num cenário heterogéneo como o descrito anteriormente, torna-se necessária uma forma flexível e interoperável de descrever esse tipo de informação. A linguagem XML é uma forma adequada de representar uma assinatura neste contexto, não só pela sua natureza estruturada, mas principalmente por ser baseada em texto e ter suporte generalizado. A recomendação XML Signature Syntax and Processing (ou apenas XML Signature) foi o primeiro passo na representação de assinaturas em XML. Nela são definidas sintaxe e regras de processamento para criar, representar e validar assinaturas digitais. As assinaturas XML podem ser aplicadas a qualquer tipo de conteúdos digitais identificáveis por um URI, tanto no mesmo documento XML que a assinatura, como noutra qualquer localização. Além disso, a mesma assinatura XML pode englobar vários recursos, mesmo de tipos diferentes (texto livre, imagens, XML, etc.). À medida que as assinaturas electrónicas foram ganhando relevância tornou-se evidente que a especificação XML Signature não era suficiente, nomeadamente por não dar garantias de validade a longo prazo nem de não repudiação. Esta situação foi agravada pelo facto da especificação não cumprir os requisitos da directiva 1999/93/EC da União Europeia, onde é estabelecido um quadro legal para as assinaturas electrónicas a nível comunitário. No seguimento desta directiva da União Europeia foi desenvolvida a especificação XML Advanced Electronic Signatures que define formatos XML e regras de processamento para assinaturas electrónicas não repudiáveis e com validade verificável durante períodos de tempo extensos, em conformidade com a directiva. Esta especificação estende a recomendação XML Signature, definindo novos elementos que contêm informação adicional acerca da assinatura e dos recursos assinados (propriedades qualificadoras). A plataforma Java inclui, desde a versão 1.6, uma API de alto nível para serviços de assinaturas digitais em XML, de acordo com a recomendação XML Signature. Contudo, não existe suporte para assinaturas avançadas. Com este projecto pretende-se desenvolver uma biblioteca Java para a criação e validação de assinaturas XAdES, preenchendo assim a lacuna existente na plataforma. A biblioteca desenvolvida disponibiliza uma interface com alto nível de abstracção, não tendo o programador que lidar directamente com a estrutura XML da assinatura nem com os detalhes do conteúdo das propriedades qualificadoras. São definidos tipos que representam os principais conceitos da assinatura, nomeadamente as propriedades qualificadoras e os recursos assinados, sendo os aspectos estruturais resolvidos internamente. Neste trabalho, a informação que compõe uma assinatura XAdES é dividia em dois grupos: o primeiro é formado por características do signatário e da assinatura, tais como a chave e as propriedades qualificadoras da assinatura. O segundo grupo é composto pelos recursos assinados e as correspondentes propriedades qualificadoras. Quando um signatário produz várias assinaturas em determinado contexto, o primeiro grupo de características será semelhante entre elas. Definiu-se o conjunto invariante de características da assinatura e do signatário como perfil de assinatura. O conceito é estendido à verificação de assinaturas englobando, neste caso, a informação a usar nesse processo, como por exemplo os certificados raiz em que o verificador confia. Numa outra perspectiva, um perfil constitui uma configuração do serviço de assinatura correspondente. O desenho e implementação da biblioteca estão também baseados no conceito de fornecedor de serviços. Um fornecedor de serviços é uma entidade que disponibiliza determinada informação ou serviço necessários à produção e verificação de assinaturas, nomeadamente: selecção de chave/certificado de assinatura, validação de certificados, interacção com servidores de time-stamp e geração de XML. Em vez de depender directamente da informação em causa, um perfil — e, consequentemente, a operação correspondente — é configurado com fornecedores de serviços que são invocados quando necessário. Para cada tipo de fornecedor de serviços é definida um interface, podendo as correspondentes implementações ser configuradas de forma independente. A biblioteca inclui implementações de todos os fornecedores de serviços, sendo algumas delas usadas for omissão na produção e verificação de assinaturas. Uma vez que o foco do projecto é a especificação XAdES, o processamento e estrutura relativos ao formato básico são delegados internamente na biblioteca Apache XML Security, que disponibiliza uma implementação da recomendação XML Signature. Para validar o funcionamento da biblioteca, nomeadamente em termos de interoperabilidade, procede-se, entre outros, à verificação de um conjunto de assinaturas produzidas por Estados Membros da União Europeia, bem como por outra implementação da especificação XAdES.
Resumo:
Analisando as tendências actuais de mercado, observa-se a necessidade da capacidade de integração de sistemas recorrendo à utilização de serviços web. Actualmente o C++ é ainda uma das mais populares linguagens de programação, facto justificado pelo abundante portefólio de aplicações, desde alto-nível a sistemas embebidos, com inúmeras bibliotecas que tiram partido dos diversos paradigmas de programação que a linguagem suporta. Porém, e ao contrário de outras linguagens, como C# ou Java que oferecem suporte à criação de serviços web integrado com a plataforma, existe uma lacuna no suporte ao desenvolvimento de serviços web em C++. Para dar resposta à lacuna existente é criada a plataforma ANSWER, focada em C++, com ênfase num modelo de programação simples, permitindo o rápido desenvolvimento de serviços web RPC/SOAP e REST.
Resumo:
Este trabalho teve o intuito de testar a viabilidade da programação offline para tarefas de lixamento na empresa Grohe Portugal. Para tal era necessário perceber o que é a programação offline e para isso foi efectuada uma pesquisa referente a essa temática, onde ficou evidente que a programação offline é em tudo semelhante à programação online, tendo apenas como principal diferença o facto de não usar o robô propriamente dito durante o desenvolvimento do programa. Devido à ausência do robô, a programação offline exige que se conheça detalhadamente a célula de trabalho, bem como todas as entradas e saídas associadas à célula, sendo que o conhecimento das entradas e saídas pode ser contornada carregando um backup do robô ou carregando os módulos de sistema. No entanto os fabricantes habitualmente não fornecem informação detalhada sobre as células de trabalho, o que dificulta o processo de implementação da unidade no modelo 3D para a programação offline. Após este estudo inicial, foi efectuado um estudo das características inerentes a cada uma das células existentes, com o objectivo de se obter uma melhor percepção de toda a envolvente relacionada com as tarefas de lixamento. Ao longo desse estudo efectuaram-se vários testes para validar os diversos programas desenvolvidos, bem como para testar a modelação 3D efectuada. O projecto propriamente dito consistiu no desenvolvimento de programas offline de forma a minimizar o impacto (em especial o tempo de paragem) da programação de novos produtos. Todo o trabalho de programação era até então feito utilizando o robô, o que implicava tempos de paragem que podiam ser superiores a três dias. Com o desenvolvimento dos programas em modo offline conseguiu-se reduzir esse tempo de paragem dos robôs para pouco mais de um turno (8h), existindo apenas a necessidade de efectuar algumas afinações e correcções nos movimentos de entrada, saída e movimentações entre rotinas e unidades, uma vez que estes movimentos são essenciais ao bom acabamento da peça e convém que seja suaves. Para a realização e conclusão deste projecto foram superadas diversas etapas, sendo que as mais relevantes foram: - A correcta modelação 3D da célula, tendo em conta todo o cenário envolvente, para evitar colisões do robô com a célula; - A adaptação da programação offline para uma linguagem mais usual aos afinadores, ou seja, efectuar a programação com targets inline e criar diferentes rotinas para cada uma das partes da peça, facilitando assim a afinação; - A habituação à programação recorrendo apenas ao uso de módulos para transferir os programas para a célula, bem como a utilização de entradas, saídas e algumas rotinas e funcionalidades já existentes.
Resumo:
Nos últimos anos começaram a ser vulgares os computadores dotados de multiprocessadores e multi-cores. De modo a aproveitar eficientemente as novas características desse hardware começaram a surgir ferramentas para facilitar o desenvolvimento de software paralelo, através de linguagens e frameworks, adaptadas a diferentes linguagens. Com a grande difusão de redes de alta velocidade, tal como Gigabit Ethernet e a última geração de redes Wi-Fi, abre-se a oportunidade de, além de paralelizar o processamento entre processadores e cores, poder em simultâneo paralelizá-lo entre máquinas diferentes. Ao modelo que permite paralelizar processamento localmente e em simultâneo distribuí-lo para máquinas que também têm capacidade de o paralelizar, chamou-se “modelo paralelo distribuído”. Nesta dissertação foram analisadas técnicas e ferramentas utilizadas para fazer programação paralela e o trabalho que está feito dentro da área de programação paralela e distribuída. Tendo estes dois factores em consideração foi proposta uma framework que tenta aplicar a simplicidade da programação paralela ao conceito paralelo distribuído. A proposta baseia-se na disponibilização de uma framework em Java com uma interface de programação simples, de fácil aprendizagem e legibilidade que, de forma transparente, é capaz de paralelizar e distribuir o processamento. Apesar de simples, existiu um esforço para a tornar configurável de forma a adaptar-se ao máximo de situações possível. Nesta dissertação serão exploradas especialmente as questões relativas à execução e distribuição de trabalho, e a forma como o código é enviado de forma automática pela rede, para outros nós cooperantes, evitando assim a instalação manual das aplicações em todos os nós da rede. Para confirmar a validade deste conceito e das ideias defendidas nesta dissertação foi implementada esta framework à qual se chamou DPF4j (Distributed Parallel Framework for JAVA) e foram feitos testes e retiradas métricas para verificar a existência de ganhos de performance em relação às soluções já existentes.
Resumo:
São vários os factores sociais e económicos que valorizam a aplicação de tecnologias de domótica em edifícios. No caso particular dos edifícios residenciais, a tendência dos seus utilizadores é a instalação de sistemas de controlo da segurança, do ambiente, de mecanismos de rega e de alarmes. Assim, seguindo a premissa do marketing, que identifica como uma boa prática a projecção de produtos / serviços que satisfaçam as necessidades inventariadas pelos seus utilizadores, este trabalho assenta na criação de um sistema domótico, controlado remotamente através de uma aplicação Android, que pretende, numa primeira instância, o controlo das lâmpadas de uma habitação. Neste trabalho é utilizado o protocolo KNX.TP para a comunicação dos dispositivos de domótica existentes no ISEP, que constituem o ambiente domótico deste trabalho. De forma a implementar o controlo remoto destes dispositivos via internet, este trabalho foca-se no desenvolvimento de uma interface IP-KNX, usando como hardware de controlo, um Arduino Mega 2560, uma placa de interface Ethernet para Arduino, a placa de integração KNX, e um servidor web com a linguagem PHP instalada. Para efeitos de demonstração, foi criada uma aplicação para o SO Android que controla as lâmpadas da rede KNX. Neste trabalho foram utilizadas várias linguagens de programação: C++ no firmware do Arduino, PHP no servidor web e JAVA + XML na aplicação Android.
Resumo:
Dissertação apresentada no âmbito do Mestrado em Engenharia Informática para obtenção do grau de Mestre em Engenharia Informática
Resumo:
Dissertação de Doutoramento em Ciências da Comunicação
Resumo:
Dissertação para obtenção do Grau de Mestre em Engenharia Informática
Resumo:
Java! Uma palavra nova e misteriosa que consegue conjugar imagens, movimento, internet, programação, café quente e o nome de uma das 10,000 ilhas dos nossos amigos da Indonésia. No entanto, é sobre os quatro primeiros conceitos que se trata este projecto de “JAVA Applets, um comboio em início de marcha”. Se o HTML vem ligar imagens à internet, o JAVA tenta dar uma certa interactividade utilizando programação mas, tentando também, que os utilizadores finais a possam utilizar sem grande esforço.