Tendências Atuais em Sistemas de Tempo Real

Tamanho: px
Começar a partir da página:

Download "Tendências Atuais em Sistemas de Tempo Real"

Transcrição

1 Capítulo 6 Tendências Atuais em Sistemas de Tempo Real Sistemas de Tempo Real são reconhecidos por possuírem problemas bem definidos e únicos. Um conjunto de técnicas, métodos, ferramentas e fundamentação teórica formam uma disciplina necessária na compreensão e na concepção de sistemas de tempo real. Apesar da evolução nos últimos anos, em termos de conceitos e métodos, os meios mais convencionais continuam a ser usados na prática. Além do aspecto dessas ferramentas usuais não tratarem com a correção temporal, um outro fato que se pode considerar é o relativo desconhecimento do que seria tempo real. A grande maioria dos sistemas de tempo real é projetada a partir de um entendimento errado que reduz tempo real, a simplesmente uma questão de melhoria no desempenho. A literatura de tempo real tem sido pródiga no definição de modelos, metodologias e suportes que consideram restrições temporais. Foi no intuito de melhorar o conhecimento desta disciplina que nos propomos neste texto a apresentar duas abordagens para a construção de STRs: a síncrona e a assíncrona. 6.1 Abordagem Síncrona A abordagem síncrona é baseada na hipótese síncrona que, em seus princípios básicos, considera os processamentos e comunicações instantâneos. O tempo é visto com granularidade suficientemente grossa para que essas premissas sejam aceitas como verdadeiras. A observação dos eventos nessa abordagem é cronológica. A abordagem síncrona é considerada como orientada ao comportamento de uma aplicação e à sua verificação. Por se situar num nível de abstração maior, os aspectos de implementação são em grande parte desconsiderados, facilitando a especificação e a análise das propriedades de sistemas de tempo real. A abordagem síncrona forma uma base conceitual bastante sólida permitindo a definição de conjuntos de ferramentas integradas próprias para o desenvolvimento de aplicações de tempo real. Entretanto, aplicações complexas que envolvem programas de calculo, grande quantidade de dados a manusear e distribuição são dificilmente tratáveis por completo pela abordagem síncrona. A abordagem síncrona é bem adaptada para sistemas reativos ou partes reativas de sistemas complexos que são dirigidos pelo ambiente e para os quais o determinismo no comportamento é fortemente desejável.

2 Tendências Atuais em Sistemas de Tempo Real Os sistemas reativos para os quais o uso da abordagem síncrona é uma solução recomendada se encontram nos seguintes campos de aplicação: controle de processo tempo real, sistemas de manufatura, sistemas de transporte, sistemas embutidos, sistemas autônomos, sistemas de supervisão, protocolos de comunicação, "drivers" de periféricos, interface homem-máquina, processamento de sinais, entre outros. Geralmente, as linguagens síncronas não são suficientes para a programação completa dos sistemas complexos. As partes não reativas têm que ser construídas usando a abordagem assíncrona. As linguagens assíncronas devem fornecer mecanismos para a interação entre as partes reativas e não reativas segundo um modo de comunicação assíncrona. Propostas de formalismos ou de metodologias que fazem uso de modos de comunicação síncronos e assíncronos em conjunto podem ser encontradas em [SBS93] e [BCJ97]. A distribuição do código em vários computadores é uma característica indispensável dos sistemas complexos por uma ou mais das razões seguintes: aumento da capacidade de cálculo, melhoria de desempenho, tolerância a falhas, localização geográfica dos sensores e atuadores, entre outras. As dificuldades encontradas para tratar a distribuição na abordagem síncrona provem da necessidade, imposta pela hipótese de sincronismo, da existência de um relógio global e, conseqüentemente, de um algoritmo (síncrono) de sincronização de relógios. A distribuição de código pode ser feita de três formas diferentes [CGP99]: (i) (ii) Compilando separadamente cada parte do programa total, e alocando aos computadores do sistema cada uma destas partes que devem se comunicar. Apesar de ser uma solução fácil, nem sempre a compilação em separado gera programas seqüenciais deterministas [Maf93]; Compilando o programa todo e gerando programas seqüenciais para cada computador, cada programa podendo se comunicar com os outros, segundo o método de grafo abstrato apresentado em [Maf93]; (iii) Compilando o programa num único programa objeto e distribuindo-o posteriormente em tantos programas quanto computadores que realizarão apenas os cálculos que lhes correspondem [CaK88] e [CPG99]. Esta abordagem tem a vantagem de otimizar a compilação e de permitir a verificação e depuração do programa antes de distribui-lo. Maiores detalhes sobre o estado atual das pesquisas sobre distribuição de programas síncronos podem ser encontradas em [CGP99], [BCL99] e [BeC99]. 6.2 Abordagem Assíncrona A abordagem assíncrona visa uma descrição a mais exata possível de um sistema de

3 6.2 Abordagem Assíncrona 157 tempo real e por isto é considerada como orientada à implementação. Vários aspectos referentes a uma aplicação são tratadas explicitamente a nível de programação e gerenciadas em tempo de execução; o tempo e a concorrência são exemplos deste conhecimento explicito necessário a um programador de aplicações de tempo real nesta abordagem. Como conseqüência, torna-se necessário levar em conta já na especificação e no decorrer do projeto, algumas características dos suportes de software e de hardware. Por outro lado, na abordagem assíncrona, a procura de uma descrição completa do comportamento e a introdução de considerações de implementação torna complexa a análise das propriedades do sistema de tempo real. Num sentido mais clássico, dentro desta ótica da abordagem assíncrona, uma fundamentação teórica já é bem definida para sistemas onde é possível uma previsibilidade determinista. Uma coleção de algoritmos e técnicas de analise existem para problemas envolvendo escalonamentos com garantias em tempo de projeto, caracterizando o que Stankovic chama de ciência da garantia de desempenho [Sta96]. Os sistemas, neste perspectiva de garantia em tempo de projeto, são de dimensões não muito extensas, construídos para realizar um conjunto específico de objetivos e envolvendo, em termos de implementação, soluções ditas proprietárias. Estão dentro desta ciência da garantia do desempenho as abordagens que tratam com ambientes dinâmicos, ainda limitados, usando técnicas para obter garantias dinâmicas. Estas abordagens envolvem testes de aceitação baseados em hipóteses de pior caso dos tempos de computação da carga presente no sistema. O estudo apresentado neste texto de certa maneira cobriu estas técnicas que formam esta ciência da garantia. Como os sistemas se tornam cada vez maiores e mais complexos, interagindo com ambientes também complexos e dinâmicos e, portanto, não deterministas uma expansão desta ciência da garantia é necessária para captar as características destes novos sistemas. As técnicas existentes, mesmo as de abordagens assíncronas que tratam com garantias dinâmicas, não são abrangentes o suficiente para que possam ser eficazes diante destes novos sistemas. A evolução prevista para os próximos anos caracteriza sistemas como sendo distribuídos, de larga escala, oferecendo uma grande variedade de serviços que trata com várias formas de dados e se apresentam constantemente mudando e evoluindo. Em contraste, um desafio crescente colocado a comunidade de tempo real é como construir esses sistemas de propósito geral, abertos, que permitam conviver várias aplicações independentes e de tempo real. Uma perfeita análise de escalonabilidade a priori é impraticável em um ambiente destes. É necessário uma nova disciplina, com modelos e abordagens criados no sentido de captar as complexidades desses novos ambientes que estão se caracterizando envolvendo novas tecnologias e aplicações. Esta nova disciplina para aplicações de tempo real vai exigir esforços de pesquisa na engenharia de software, em linguagens de programação, em sistemas operacionais, na teoria de escalonamento e na comunicação.

4 Tendências Atuais em Sistemas de Tempo Real Sistemas Abertos A meta principal nesta tendência é o desenvolvimento de arquiteturas, suportes de middlewares e componentes com interfaces públicas e bem definidas, que possam ser desenvolvidos de forma independente, para posteriormente serem combinados e usados na construção de sistemas complexos. Esta estratégia conduz à obtenção, além de grande flexibilidade, de vantagens como melhor portabilidade, interoperabilidade e facilidades na evolução dos sistemas. Estas interfaces favorecem também o uso de componentes/softwares de prateleira ( off-the-shelf ). As tecnologias abertas para sistemas distribuídos de tempo real são recentes. O RT CORBA [OMG98] e o ANSAware/RT [Li95] são exemplos destes esforços de organizações padronizadoras na definição de padrões para componentes de middleware que suportem aplicações distribuídas de tempo real. E, mesmo para a automação industrial e sistemas embutidos em geral, estão previstos certos requisitos para as próximas gerações que envolvem padrões abertos [Sta96]: os controladores (computadores especializados) devem apresentar arquitetura modular que suporte mudanças em tempos mínimos sem comprometer os requisitos de desempenho de uma planta industrial; devem suportar facilmente a adição de funcionalidade ou a alteração no comportamento da aplicação e, também, não depender de fabricante ou tecnologias proprietárias. A adequação de padrões abertos para o desenvolvimento de aplicações de tempo real sempre foi vista com uma certa desconfiança por projetistas da área. A necessidade de previsibilidade no atendimento das restrições temporais, historicamente tem contribuído para soluções proprietárias, específicas para suas aplicações alvo. Algumas das dificuldades de uma arquitetura aberta para aplicações de tempo real em sistemas distribuídos de larga escala incluem: Características de hardware desconhecidas até o tempo de execução (velocidades de processadores, caches, barramentos, memória variam de máquina para máquina). Ambientes onde convivem diferentes aplicações onde suas necessidades de recursos e seus requisitos temporais são desconhecidos até o tempo de execução. Linguagens Até recentemente, muito pouco tinha sido feito em termos de linguagens de programação para sistemas de tempo real. Na prática corrente, no uso de abordagens assíncronas em muitas aplicações, as partes críticas das aplicações eram (ou ainda são) implementadas em códigos de máquina ou "Assembly". Isto forçava um conhecimento

5 6.2 Abordagem Assíncrona 159 prévio sobre a arquitetura dos processadores usados no sistema. As implicações são muitas no uso desta prática: os códigos produzidos não são portáveis, e a própria modificação ou evolução do sistema fica comprometida. Todos esses fatores apontam para a necessidade do uso de linguagens de programação de alto nível com construções explícitas que facilitem a descrição do comportamento temporal de uma aplicação de tempo real. Em quase todos os modelos de escalonamento citados no capítulo 2, é assumido o pior caso nos tempos de computação dos códigos das tarefas. Os códigos gerados na compilação destas linguagens de alto nível devem ter, portanto, bem determinados os valores de seus piores tempos de computação. Para a obtenção destes tempos é necessário evitar a utilização de certas construções de linguagens convencionais e certas práticas correntes de programação. O uso de estruturas dinâmicas deve também ser limitado. São necessárias ferramentas para preverem o pior caso e o tempo de computação médio destes códigos. A estimação do pior caso pode ser obtida por análises ou por medidas. Algumas ferramentas existentes, baseada em análises do código, são protótipos acadêmicos [Gus94], [Har94]. A dificuldade de métodos baseados em análise é a necessidade de um modelo que capte todas as características da arquitetura do computador ( cache, pipeline, etc). O problema de técnicas baseadas em medidas está na dificuldade de se conseguir o pior caso de tempo de computação a partir de um certo número de ativações sob o qual é submetido o código de uma tarefa. As linguagens de programação em geral são fracas no sentido de suportarem a implementação das abordagens de escalonamento de tempo real. A falta de expressividade fica evidente quando o objetivo é a generalização de requisitos temporais e de estratégias de implementação. É improvável que uma única linguagem seja abrangente o suficiente para acomodar todos os requisitos temporais das abordagens existentes e mais os novos que certamente deverão surgir nos próximos anos. São necessárias novas estruturas de linguagens mais flexíveis que permitam a especialização diante dos diferentes tipos de aplicações de tempo real. A Reflexão Computacional, através dos protocolos Meta-Objeto ([Mae87], [TaT92]), e a Programação Orientada a Aspectos [Kic97] são exemplos de novas técnicas e mecanismos de programação que são incentivadas porque trazem esta flexibilidade necessária na programação em tempo real. Ambas técnicas enfatizam a separação das funcionalidades de uma aplicação de seu gerenciamento. Recentemente, o grande sucesso da linguagem Java no contexto da Internet e mesmo fora dela, atraiu a atenção das pessoas que desenvolvem software de tempo real. Na sua forma original Java não é apropriada para tempo real devido às diversas fontes de não determinismo presentes. O exemplo clássico é o seu coletor de lixo, o qual pode executar a qualquer momento e ocupar o processador por um tempo não desprezível, sempre que o suporte ficar sem memória para instanciar novos objetos. Existem dois fortes consórcios definindo uma versão de Java para tempo real (Real-Time Java, [Ort99]). Embora neste momento não esteja claro qual será o consórcio vencedor, o fato das maiores empresas de computação do mundo participarem deles é um sinal de que

6 Tendências Atuais em Sistemas de Tempo Real Java poderá ser usada no futuro também para sistemas de tempo real. Sistemas Operacionais O mercado de sistemas operacionais de tempo real está passando por uma fase de rápidas mudanças. A teoria de escalonamento de tempo real, ignorada até alguns anos atrás, começa a ser incorporada aos sistemas operacionais. Desta forma, pode-se esperar para os próximos anos suportes de execução cada vez mais previsíveis. Ao mesmo tempo, Posix firmou-se como a interface padrão nesta área. Embora o próprio Posix seja grande e por vezes ambíguo, ele estabelece um padrão para as chamadas de sistema a serem oferecidas para aplicações de tempo real. Variações do Linux para tempo real estão surgindo com força neste mercado. Como o capítulo 3 mostrou, muitos grupos de pesquisa em todo o mundo estão trabalhando no sentido de criar versões do Linux apropriadas para aplicações de tempo real. Enquanto alguns trabalhos nesta área buscam uma previsibilidade rigorosa para atender sistemas críticos, outros procuram melhorar o desempenho do escalonamento para melhor suportar aplicações com requisitos temporais brandos. Não é possível ignorar que a disponibilidade de um sistema operacional Unix completo, com fonte aberto e adaptado para tempo real, vai causar um grande impacto no mercado. Por exemplo, no momento em que este livro é escrito, é anunciado que o QNX será fornecido sem custo para aplicações não comerciais ( Com respeito aos sistemas distribuídos, ainda existe um longo caminho a ser percorrido. Embora RT-CORBA padronize interfaces e crie uma estrutura conceitual baseada em objetos, sua implementação depende dos serviços de escalonamento e comunicação tempo real fornecidos pelo sistema operacional e protocolos de comunicação subjacentes. A medida que a qualidade destes serviços aumentar, implementações do RT-CORBA também apresentarão melhor qualidade com respeito a previsibilidade temporal. Apesar de todos estes esforços, a verdade é que o mercado de sistemas operacionais de tempo real continuará segmentado ainda por muitos anos. Com aplicações tão diversas quanto uma teleconferência e o controle de um motor elétrico apresentando restrições temporais, obviamente existe espaço para um grande conjunto de soluções. Estas incluem desde sistemas operacionais completos, adaptados para fornecer escalonamento do tipo melhor esforço, até núcleos totalmente previsíveis, capazes de garantir "deadlines" em aplicações críticas. Escalonamento de Tempo Real A evolução prevista com novos ambientes de larga escala e novas aplicações preconiza o surgimento de novas abordagens com algoritmos e testes de escalonamento

7 6.2 Abordagem Assíncrona 161 que possam tratar com estruturas complexas de tarefas e de recursos, definindo escalas que atendam granularidades variáveis de restrições temporais [Sta96]. As técnicas de escalonamento devem ser robustas ou ainda, flexíveis e adaptativas quando necessário. Existe uma necessidade de testes e algoritmos mais robustos. Na chamada ciência da garantia testes e algoritmos, definidos segundo certas premissas, são válidos para determinados modelos de tarefas. Quando aplicados em um sistema, a atuação de um algoritmo é tida como correta se todas as premissas assumidas no modelo são válidas. Se algumas dessas premissas não são verificadas e mesmo assim as propriedades do algoritmo se mantém corretas, as restrições de tempo real da aplicação são atendidas e o algoritmo é dito robusto. O uso de um algoritmo robusto reduz, significativamente, a necessidade da caracterização da aplicação e de seu ambiente de execução nos esforços de análises e medidas para a validação do conjunto de tarefas que formam a sua carga [Sta96]. A eficiência e a robustez podem ser concretizadas facilmente se o grau de sucesso da validação não é o objetivo maior. Testes de aceitação (ou testes de escalonabilidade), por serem excessivamente pessimistas, apresentam um baixo grau de sucesso nestes novos e complexos ambientes. As abordagens de escalonamento adaptativo ( adaptive scheduling ) têm sido propostas no sentido de se adotar modelos mais flexíveis. Essas abordagens assumem que as condições do sistema são monitoradas, e as decisões do escalonamento são baseadas nas condições observadas [LSL94]. Modelos e abordagens de escalonamento adaptativos são empregados com objetivo de lidar com a incerteza na carga do sistema e a obtenção de uma degradação suave [CLL90], [GNM97], [MFO99], [TaT93]. Degradação suave em sistemas de tempo real, significa a manutenção das propriedades de previsibilidade na sobrecarga. De forma diversa às abordagens mais clássicas, algumas abordagens adaptativas não necessitam o conhecimento a priori dos piores casos de tempo de computação das tarefas. A determinação destes tempos das tarefas, necessários em abordagens mais clássicas, sempre é um trabalho árduo. Diversas técnicas adaptativas têm sido propostas recentemente. Por exemplo, uma técnica de adaptação pode ser baseada no ajuste dos períodos de tarefas periódicas em tempo de execução. A adaptação dos períodos de tarefas pode ser usada em alguns sistemas de controle realimentados ou também, através da mudança da freqüência de apresentação de quadros, em uma aplicação de vídeo sob demanda [KuM97]. A computação imprecisa [LSL94] uma outra técnica que permite a combinação de garantia determinista com degradação suave é usada para o tratamento de sobrecargas. Nessa técnica, cada tarefa é decomposta em duas partes: uma parte obrigatória e uma parte opcional. A parte obrigatória de uma tarefa deve ser completada antes do deadline da tarefa para produzir um resultado aproximado com uma qualidade aceitável. A parte opcional refina o resultado produzido pela parte obrigatória. Durante uma sobrecarga, um nível mínimo de operação do sistema pode ser garantido de forma determinista, através da execução apenas das partes obrigatórias. Em [HaR95], foi proposto o conceito de deadline (m,k)-firm, definindo que uma

8 Tendências Atuais em Sistemas de Tempo Real tarefa periódica deve ter pelo menos m "deadlines" atendidos em cada janela de k ativações. O limite superior tolerado de perdas de "deadlines" é dado por k-m. Uma falha dinâmica é assumida no sistema quando esse limite é excedido. O DBP ( Distance Based Priority Assignment ) é a heurística de escalonamento usada com essa técnica no sentido de minimizar o número de falhas dinâmicas. Essa heurística de escalonamento atribui as mais altas prioridades para as tarefas que estão próximas de exceder o limite superior especificado para as perdas de "deadlines". Outras técnicas semelhantes deadline (m,k)-firm foram introduzidas na literatura [KoS95], [CaB97] e [BeB97]. Todas se utilizam do descarte de certas ativações de tarefas periódicas para aumentar a escalonabilidade do sistema. Comunicação Se considerarmos os sistemas de tempo real distribuídos, a comunicação desempenha um papel importantíssimo nos tempos de resposta que envolve uma aplicação nestes sistemas. Os objetivos de protocolos de comunicação em sistemas de tempo real são diferentes dos sistemas que não são de tempo real. Em sistemas mais convencionais, não tempo real, o aumento do desempenho na forma de taxas de transferências é o ponto chave. Por outro lado, na comunicação em sistemas de tempo real o que se procura é a obtenção de altas probabilidades que uma mensagem será entregue dentro de um deadline específico ou atendendo uma latência máxima. Em sistemas críticos ( hard real-time systems ) e, portanto na ótica da ciência da garantia, os protocolos de comunicação para tempo real devem apresentar um limite máximo na latência de uma mensagem durante uma comunicação. Em sistemas mais brandos, tais como multimídia e videoconferência, onde dados de diferentes naturezas estão sendo transmitidos, é evidente a necessidade da entrega de mensagens segundo certas restrições temporais. Ocasionais falhas em atender estas restrições temporais é perfeitamente admissível; porém, atrasos ou perdas de mensagens excessivos degradam a qualidade do serviço fornecido a nível da aplicação. São duas as abordagens usadas para tratar comunicações em sistemas de tempo real. A primeira é baseada sobre a utilização do conhecimento sobre a máxima latência nas transferências de mensagens no sistema [ARS91]. As análises e escalas produzidas para o sistema consideram então este pior tempo de comunicação. Na segunda abordagem as mensagens estão sujeitas elas próprias a restrições temporais ("deadlines", períodos, etc) e escalonadores atuam, segundo políticas de tempo real, em filas de emissão levando em conta estas restrições [ZhB94]. Sistemas de larga escala com diferentes tipos de aplicações, implicam na necessidade do suporte a vários tipos de comunicação, sujeitas a diferentes necessidades de garantias e de restrições de tempo. Novas tecnologias de comunicação estão surgindo para suprir essas necessidades. Exemplo destas tecnologias são as redes baseadas no protocolo IP, que inicialmente foram concebidas no sentido das técnicas de melhor

9 6.2 Abordagem Assíncrona 163 esforço e que estão sendo estendidas para implementar diferentes Qualidades de Serviço (QoS). Redes ATM também suportam diferentes classes de serviço. Além de serviços de melhor esforço estas tecnologias oferecem classes de serviços garantidos que, com reservas de recursos, fornecem serviços garantidos fim-a-fim com o controle rígido da largura de banda e do retardo [SPG97]. Com base nestas tecnologias novos modelos de comunicação de tempo real deverão surgir, possibilitando a associação de parâmetros de QoS relacionados com tempo real a um canal de comunicação. Metodologias Atualmente, a complexidade dos sistemas computacionais exige cada vez mais o uso de metodologias para especificar, analisar, projetar e implementar. Os sistemas de tempo real em particular quando distribuídos, apresentam características que se encaixam nesta categoria. As metodologias de propósito geral, normalmente utilizadas na comunidade acadêmica e no setor industrial e de serviços, tem apresentado inconvenientes. As razões estão na inadequação da linguagem de modelagem que não inclui o conjunto especifico de requisitos necessários para representar os sistemas tempo real e, as dificuldades de implementação que não facilitam a ligação entre os conceitos usados numa modelagem de alto nível de abstração e os conceitos usados na implementação. Metodologias para sistemas de tempo real e que ao mesmo tempo acrescentam as potencialidades da orientação objeto têm sido propostas para remediar este problema e diminuir as dificuldades na construção destes sistemas. Destacam-se entre estas linguagens de modelagem e metodologias para tempo real a ROOM ( Real- Time Object-Oriented Modeling ) [SGW94] e a UML-RT ( Unified Modeling Language for Real-Time ) [SeR98]. Essas metodologias apresentam as seguintes características: seguir o paradigma de orientação-objeto; permitir a modelagem e a construção de software tempo real; fornecer modelos executáveis em todos os níveis de abstração; permitir um processo de desenvolvimento incremental e iterativo; e facilitar a documentação. Neste mesmo contexto, técnicas de descrição formal tem sido adotadas num número crescente de aplicações, devido aos benefícios significativos que o rigor de seus formalismos traz para a produção de software de qualidade, sobretudo quando esta qualidade se expressa em termos de consistência, segurança e correção temporal. Muitas pesquisas e desenvolvimentos de ferramentas vem sendo realizadas neste campo nos últimos anos. Esta área é muito ampla e promissora e sai do escopo deste livro; os interessados podem procurar, na ampla bibliografia disponível da área, as referências [HeM96], [BCN95] e [Rus93] que destacamos por apresentarem uma visão geral das técnicas de descrição formal próprias para sistemas tempo real.

Abordagens de Escalonamento

Abordagens de Escalonamento Necessidade de Diferentes Abordagens Sistemas de Tempo Real: Abordagens de Escalonamento Rômulo Silva de Oliveira Departamento de Automação e Sistemas DAS UFSC romulo@das.ufsc.br http://www.das.ufsc.br/~romulo

Leia mais

Caracterização. Sistemas de Tempo Real: Caracterização. Caracterização. Caracterização. Concepções Erradas. Mercados

Caracterização. Sistemas de Tempo Real: Caracterização. Caracterização. Caracterização. Concepções Erradas. Mercados Sistemas de Tempo Real: Rômulo Silva de Oliveira Departamento de Automação e Sistemas DAS UFSC romulo@das.ufsc.br http://www.das.ufsc.br/~romulo Maio/2009 1 Sistemas computacionais com requisitos de real:

Leia mais

Abordagens de Escalonamento na Perspectiva da Engenharia

Abordagens de Escalonamento na Perspectiva da Engenharia Mercado para tempo real é amplo Necessidade de Diferentes Abordagens Sistemas de Tempo Real: Abordagens de Escalonamento na Perspectiva da Engenharia Rômulo Silva de Oliveira Departamento de Automação

Leia mais

Sistemas Embarcados (embutidos) Paulo C. Masiero

Sistemas Embarcados (embutidos) Paulo C. Masiero Sistemas Embarcados (embutidos) Paulo C. Masiero Caracterização São usados para controlar sistemas de diferentes tipos: máquinas domésticas, fábricas, carros, jogos etc. O software é embutido no hardware

Leia mais

Conceitos Básicos dos Sistemas de Tempo Real

Conceitos Básicos dos Sistemas de Tempo Real Conceitos Básicos dos Sistemas de Tempo Real Rômulo Silva de Oliveira Edição do Autor, 2018 www.romulosilvadeoliveira.eng.br/livrotemporeal Outubro/2018 1 Sistemas computacionais com requisitos de tempo

Leia mais

Neste capítulo será descrito detalhadamente o desenvolvimento do software do sistema FEROS, justificando a escolha das tecnologias envolvidas.

Neste capítulo será descrito detalhadamente o desenvolvimento do software do sistema FEROS, justificando a escolha das tecnologias envolvidas. Desenvolvimento de um Sistema Aberto para Ensino de Robôs Manipuladores 59 4 Software Neste capítulo será descrito detalhadamente o desenvolvimento do software do sistema FEROS, justificando a escolha

Leia mais

Sistemas de Tempo Real: Sistemas Operacionais

Sistemas de Tempo Real: Sistemas Operacionais Escola de Computação 2000 - IME-USP Sistemas de Tempo Real: Sistemas Operacionais Jean-Marie Farines Joni da Silva Fraga Rômulo Silva de Oliveira LCMI - Laboratório de Controle e Microinformática DAS -

Leia mais

Processos de software

Processos de software Processos de software 1 Processos de software Conjunto coerente de atividades para especificação, projeto, implementação e teste de sistemas de software. 2 Objetivos Introduzir modelos de processos de

Leia mais

Sistemas Operacionais de Tempo Real. Prof. Andre Luis Meneses Silva

Sistemas Operacionais de Tempo Real. Prof. Andre Luis Meneses Silva Sistemas Operacionais de Tempo Real Prof. Andre Luis Meneses Silva andreluis.ms@gmail.com O que é um Sistema Operacional? Provê um ambiente para execução de programas. Abstração de processos para multitarefa/

Leia mais

Sistemas de Tempo Real

Sistemas de Tempo Real Sistemas de Tempo Real Msc.Marcelo de Paiva Guimarães Doutorando da Universidade de São Paulo Laboratório de Sistemas Integráveis Escola Politécnica da Universidade de São Paulo {paiva@lsi.usp.br} Fonte:

Leia mais

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software Engenharia de Software Aula 03 Perguntas da Aula 2 Processos de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@gmail.com 12 Março 2012 Inconsistente: perguntei laranjas, respondeu

Leia mais

6.CONCLUSÕES CONCLUSÕES

6.CONCLUSÕES CONCLUSÕES 6.CONCLUSÕES 193 6 CONCLUSÕES Este trabalho apresentou uma proposta para modelagem e análise de Sistemas de Controle envolvidos na geração de energia elétrica hidráulica, tendo como base dois desenvolvimentos:

Leia mais

por parte dos usuários dos sistemas de computação se tornou menos necessária e a popularidade desse tipo de linguagem diminuiu. Mais recentemente, a

por parte dos usuários dos sistemas de computação se tornou menos necessária e a popularidade desse tipo de linguagem diminuiu. Mais recentemente, a 1 Introdução Middleware é um termo cunhado no final da década de 60 (Naur e Randell, 1968), que é freqüentemente empregado para designar uma camada de software que oferece uma infra-estrutura para construção

Leia mais

Componente de aplicação. Figura 1 - Elementos funcionais de uma aplicação sendo executados de forma distribuída

Componente de aplicação. Figura 1 - Elementos funcionais de uma aplicação sendo executados de forma distribuída 11 1 Introdução Recentes avanços em redes de computadores impulsionaram a busca e o desenvolvimento de meios para facilitar e acelerar o desenvolvimento de aplicações em sistemas distribuídos, tornando

Leia mais

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS. Nome:

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS. Nome: Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS Nome: 1. A figura abaixo representa, simplificadamente, as fases do Modelo de Ciclo de Vida Cascata.

Leia mais

Estilos Arquiteturais

Estilos Arquiteturais Estilos Arquiteturais Estilos Arquiteturais A arquitetura de um sistema pode aderir a um ou mais estilos arquiteturais Um estilo define os tipos de elementos que podem aparecer em uma arquitetura e as

Leia mais

Engenharia de Software

Engenharia de Software Arquitetura de Sistemas Distribuídos Cap. 12 Sommerville 8 ed. Introdução: É um software que usa várias máquinas para executar suas tarefas. Praticamente todos os sistemas baseado em grandes computadores

Leia mais

Implementação da Especificação de Tempo Real Java para o EPOS

Implementação da Especificação de Tempo Real Java para o EPOS UNIVERSIDADE FEDERAL DE SANTA CATARINA Curso de Ciências da Computação Implementação da Especificação de Tempo Real Java para o EPOS ANDERSON LUIS ZAPELLO Florianópolis, julho de 2005 ANDERSON LUIS ZAPELLO

Leia mais

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS 1. Com relação à engenharia de software, julgue os itens seguintes. Engenharia de software não está relacionada

Leia mais

Introdução à Análise e Projeto de Sistemas

Introdução à Análise e Projeto de Sistemas Introdução à I. O Que vamos fazer na Disciplina? Saber uma linguagem de programação orientada a objeto (OO) não é suficiente para criar sistemas OO Tem que saber Análise e Projeto OO (APOO) Isto é, Análise

Leia mais

Figura 1. Estrutura do agente de software.

Figura 1. Estrutura do agente de software. 24 2 Conceitos Básicos A engenharia de software baseada em agentes é uma área emergente cujo objetivo é oferecer suporte ao desenvolvimento de sistemas multi-agentes (Garcia et al., 2003; Jennings & Wooldridge,

Leia mais

7.1 Trabalhos Relacionados

7.1 Trabalhos Relacionados 7 Conclusões O desenvolvimento de aplicações adaptáveis traz novos desafios em relação ao desenvolvimento de software convencional. Em parte, isso está relacionado às diferentes características das diversas

Leia mais

Engenharia de Software. Projeto de Arquitetura

Engenharia de Software. Projeto de Arquitetura Engenharia de Software Projeto de Arquitetura O que já vimos? Introdução a Engenharia de Software Processos de Software Desenvolvimento Ágil de Software Engenharia de Requisitos Modelagem de sistemas (outra

Leia mais

3.1 Reflexão Computacional

3.1 Reflexão Computacional 3 Adaptação Dinâmica Adaptação dinâmica é a capacidade de um sistema ser modificado durante sua execução para se adequar a novas necessidades. Recentemente, esse tem se tornado um tópico de pesquisa proeminente

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos LICENCIATURA EM COMPUTAÇÃO Prof. Adriano Avelar Site: www.adrianoavelar.com Email: eam.avelar@gmail.com 1. Que são sistemas abertos? É um sistema que oferece serviços de acordo com

Leia mais

Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP:

Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP: Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP: 8429016 Definição de MDA OMG (Object Management Group) propôs uma aplicação abrangente das práticas

Leia mais

Sistemas Distribuídos. Plano de Curso. Plano de Curso 04/03/12 ! EMENTA:

Sistemas Distribuídos. Plano de Curso. Plano de Curso 04/03/12 ! EMENTA: Sistemas Distribuídos Prof. Msc. André Luiz Nasserala Pires nassserala@gmail.com! EMENTA: Plano de Curso! Conceitos. Comunicação entre processos (IPC). Programação de aplicações cliente- servidor. Sincronização

Leia mais

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE 1 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE Nickerson Fonseca Ferreira nickerson.ferreira@ifrn.edu.br Introdução 2 Antes de qualquer

Leia mais

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação MULTIPROCESSADORES

Leia mais

Engenharia Software. Ení Berbert Camilo Contaiffer

Engenharia Software. Ení Berbert Camilo Contaiffer Engenharia Software Ení Berbert Camilo Contaiffer Características do Software Software não é um elemento físico, é um elemento lógico; Software é desenvolvido ou projetado por engenharia, não manufaturado

Leia mais

Bibliografia. Quais são os problemas? capacidade de construção. acompanha a demanda por novos programas. ameaçada por projetos ruins.

Bibliografia. Quais são os problemas? capacidade de construção. acompanha a demanda por novos programas. ameaçada por projetos ruins. Bibliografia Quais são os problemas? 4 A sofisticação do software ultrapassou nossa capacidade de construção. 4 Nossa capacidade de construir programas não acompanha a demanda por novos programas. 4 Nossa

Leia mais

O que é um sistema distribuído?

O que é um sistema distribuído? Disciplina: Engenharia de Software 4 Bimestre Aula 1: ENGENHARIA DE SOFTWARE DISTRIBUÍDO O que é um sistema distribuído? Segundo Tanenbaum e Steen (2007) um sistema distribuído é uma coleção de computadores

Leia mais

Sistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos

Sistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos Sistema Distribuído Conjunto de máquinas (CPU + memória) interligadas em rede. Sistema Distribuído Sistema operacional distribuído trata este conjunto como um único sistema computacional. Estação 1 Estação

Leia mais

Rational Unified Process (RUP)

Rational Unified Process (RUP) Rational Unified Process (RUP) A Rational é bem conhecida pelo seu investimento em orientação em objetos. A empresa foi à criadora da Unified Modeling Language (UML), assim como de várias ferramentas que

Leia mais

Sistemas de Tempo-Real

Sistemas de Tempo-Real s de Tempo-Real Notas de curso realizado em Agosto de 2006 na Universidade Federal do Rio Grande do Norte, Natal, Brasil 1. Introdução aos s de Tempo-Real Francisco Vasques Faculdade de Engenharia da Universidade

Leia mais

Diferentes Abordagens para Sistemas de Tempo Real

Diferentes Abordagens para Sistemas de Tempo Real Diferentes Abordagens para Sistemas de Tempo Real Rômulo Silva de Oliveira ebook Kindle, 2018 www.romulosilvadeoliveira.eng.br/livrotemporeal Outubro/2018 1 Necessidade de Diferentes Abordagens 1/2 Mercado

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Caracterização de Faculdades SENAC Análise e Desenvolvimento de Sistemas 24 de fevereiro de 2010 Caracterização de Histórico Anos 50 - Sistemas Operacionais tipo Lote Aumentar a capacidade de processamento

Leia mais

Reuso de Software Aula Maio 2012

Reuso de Software Aula Maio 2012 Reuso de Software Aula 19 Tópicos da Aula Engenharia de Software baseada em Componentes (CBSE) Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo reuso.software@gmail.com Componentes Modelos de Componentes

Leia mais

Introdução 12 que inuenciam a execução do sistema. As informações necessárias para o diagnóstico de tais problemas podem ser obtidas através da instru

Introdução 12 que inuenciam a execução do sistema. As informações necessárias para o diagnóstico de tais problemas podem ser obtidas através da instru 1 Introdução Atualmente a demanda pela construção de novos sistemas de software tem aumentado. Junto com esse aumento também cresce a complexidade das soluções que estão sendo desenvolvidas, o que torna

Leia mais

Engenharia de Software I Processos de desenvolvimento de SW. profa. Denise Neves

Engenharia de Software I Processos de desenvolvimento de SW. profa. Denise Neves I Processos de desenvolvimento de SW profa. Denise Neves profa.denise@hotmail.com 2018 Projeto Um projeto é um empreendimento temporário empreendido para alcançar um único conjunto de objetivos. (PMI,PMBOK

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS CUP Disk Memoey CUP Memoey Disk Network CUP Memoey Disk Introdução aos Sistemas Distribuídos 1 Sumário Evolução Problema/Contexto O que é um Sistema Distribuído? Vantagens e Desvantagens

Leia mais

INF1013 MODELAGEM DE SOFTWARE

INF1013 MODELAGEM DE SOFTWARE INF1013 MODELAGEM DE SOFTWARE Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 1 O Paradigma Orientado a Objetos A Linguagem UML Descrição da Arquitetura 1 Programa

Leia mais

Programação Concorrente

Programação Concorrente INE 5410 Programação Concorrente Professor: Lau Cheuk Lung (turma A) INE UFSC lau.lung@inf.ufsc.br Conteúdo Programático 1. 2. Programação Concorrente 3. Sincronização 1. Condição de corrida, região critica

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 4 http://www.ic.uff.br/~bianca/engsoft2/ Aula 4-03/05/2006 1 Modelos Prescritivos de Processo Modelo em cascata Modelos incrementais Modelo incremental Modelo RAD Modelos

Leia mais

Projeto de Banco de Dados. Componentes de um Sistema de Informação. Arquitetura de SI. Sistema de Informação (SI) SI nas Organizações

Projeto de Banco de Dados. Componentes de um Sistema de Informação. Arquitetura de SI. Sistema de Informação (SI) SI nas Organizações Sistema (SI) Coleção de atividades de Banco de Dados que regulam o compartilhamento, SI nas Organizações a distribuição de informações Fernando Fonseca e o armazenamento de dados relevantes ao gerenciamento

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Faculdades SENAC Análise e Desenvolvimento de Sistemas 23 de fevereiro de 2011 Histórico Anos 50 - Sistemas Operacionais tipo Lote Aumentar a capacidade de processamento de programas Usuário ia ao computador

Leia mais

Guia de recursos: produtividade de workstations

Guia de recursos: produtividade de workstations Guia de recursos: produtividade de workstations Conteúdo Além do desktop: produtividade de workstations 2 Descubra como obter a maior produtividade possível de aplicativos de alto desempenho que requerem

Leia mais

Engenharia de Software

Engenharia de Software Universidade São Judas Tadeu Prof. André Luiz Ribeiro Prof. Jorge Luis Pirolla Introdução à Computação Engenharia de Software Tópicos O que é Engenharia de Software? Engenharia de Software em camadas Processo

Leia mais

ENGENHARIA DE SOFTWARE. Aula 03 Processos de Software

ENGENHARIA DE SOFTWARE. Aula 03 Processos de Software ENGENHARIA DE SOFTWARE Aula 03 Processos de Software AGENDA Modelos de processo de software Atividades do processo Lidando com mudanças Rational Unified Process (RUP) 14/03/2017 IFPR QUEDAS DO IGUAÇU -

Leia mais

ü Na década de 1920 os dispositivos mecânicos foram substituídos pelos relés; ü O uso da lógica de relés dificultava modificações do processo;

ü Na década de 1920 os dispositivos mecânicos foram substituídos pelos relés; ü O uso da lógica de relés dificultava modificações do processo; O que são? CLP - CONTROLADOR LÓGICO PROGRAMÁVEL ü O CLP é um computador industrial, capaz de implementar funções de controle (sequência lógica, contagem e temporização), operações lógicas e aritméticas,

Leia mais

Prof. Me. Sérgio Carlos Portari Júnior

Prof. Me. Sérgio Carlos Portari Júnior Prof. Me. Sérgio Carlos Portari Júnior Ambientes que visam desenvolver aplicações que precisam de um processamento paralelo e distribuído deverão saber lidar com algumas dificuldades. Isto decorre da heterogeneidade

Leia mais

Metamodelos para Banco de Dados. Carlos Julian Menezes Araújo Prof. Dr. Robson do Nascimento Fidalgo

Metamodelos para Banco de Dados. Carlos Julian Menezes Araújo Prof. Dr. Robson do Nascimento Fidalgo Metamodelos para Banco de Dados Carlos Julian Menezes Araújo cjma@cin.ufpe.br Prof. Dr. Robson do Nascimento Fidalgo 1 Agenda Metadados MDA MOF Metamodelos CWM Pacote Relacional Referências 2 Metadados

Leia mais

Prof. Luiz A. Nascimento

Prof. Luiz A. Nascimento Prof. Luiz A. Nascimento Qual a importância da Engenharia de Software? O desenvolvimento de um software envolve processos muitos complexos. A engenharia de software estabelece um modelo para se construir

Leia mais

3 Sistema Operacional Scriptável

3 Sistema Operacional Scriptável 3 Sistema Operacional Scriptável Sistema operacional scriptável é a nossa proposta de modelo de projeto de sistema operacional com o objetivo de aumentar a sua flexibilidade e facilidade de desenvolvimento,

Leia mais

Curso de Tecnologia em Sistemas Eletrônicos MATRIZ CURRICULAR. Módulo I /Semestre 1 Carga horária total: 400h

Curso de Tecnologia em Sistemas Eletrônicos MATRIZ CURRICULAR. Módulo I /Semestre 1 Carga horária total: 400h Curso de Tecnologia em Sistemas Eletrônicos CÂMPUS FLORIANÓPOLIS MATRIZ CURRICULAR Módulo I /Semestre 1 Carga horária total: 400h Circuitos Elétricos 1 80 Lógica Combinacional 80 Física Geral 80 Comunicação

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Thaís Vasconcelos Batista UFRN DIMAp http://www.dimap.ufrn.br/~thais thais@ufrnet.br Programa do Curso INTRODUÇÃO Conceitos Básicos Sistemas em Rede X Sistemas Distribuídos Necessidade

Leia mais

Paradigmas de Software

Paradigmas de Software Paradigmas de Software Objetivos Introdução aos paradigmas de software. Descrição de modelos genéricos e sua aplicabilidade. Descrição dos processos de requisitos, desenvolvimento, teste e evolução. Modelo

Leia mais

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Mestrado em Ciência da Computação 1o. Semestre / 2006 Prof. Fábio M. Costa fmc@inf.ufg.br www.inf.ufg.br/~fmc/ds-msc2006 Aula

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Introdução: Comunicação, e Coordenação março de 2015 Comunicação entre Processos troca de mensagens é sempre a primitiva básica sobre essa primitiva podemos construir outras visões da comunicação Mensagens

Leia mais

Programação Paralela e Distribuída

Programação Paralela e Distribuída INE 5645 Programação Paralela e Distribuída Professor: Lau Cheuk Lung (turma A) INE UFSC lau.lung@inf.ufsc.br Conteúdo Programático 1. Introdução 2. Programação Paralela 3. Controle de Concorrência 4.

Leia mais

RUP RATIONAL UNIFIED PROCESS PRÁTICAS RECOMENDADAS. Prof. Fabiano Papaiz IFRN

RUP RATIONAL UNIFIED PROCESS PRÁTICAS RECOMENDADAS. Prof. Fabiano Papaiz IFRN RUP RATIONAL UNIFIED PROCESS PRÁTICAS RECOMENDADAS Prof. Fabiano Papaiz IFRN O RUP recomenda as seguintes práticas que devem ser utilizadas no desenvolvimento de um software: 1. Desenvolver de forma iterativa

Leia mais

Análise e Projeto Orientado a Objetos

Análise e Projeto Orientado a Objetos Análise e Projeto Orientado a Objetos Aula 1.10 - Engenharia de Requisitos Bruno Neiva Moreno Instituto Federal do Rio Grande do Norte Campus Nova Cruz bruno.moreno@ifrn.edu.br 1/27 Introdução A Engenharia

Leia mais

Processos de Software. O que é modelo de processo? Vantagens. Modelos de Processo Gerais. O que é um processo de software?

Processos de Software. O que é modelo de processo? Vantagens. Modelos de Processo Gerais. O que é um processo de software? DCC / ICEx / UFMG O que é um processo de software? Processos de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Conjunto de atividades que leva ao desenvolvimento do produto software Um

Leia mais

Características de Sistemas Distribuídos

Características de Sistemas Distribuídos Características de Sistemas Distribuídos Carlos Ferraz cagf@cin.ufpe.br 2002-2003 Carlos A. G. Ferraz 2 Tópicos O conceito de Sistemas Distribuídos Infra-estrutura básica Exemplos Vantagens e desvantagens

Leia mais

Paradigmas de Linguagens

Paradigmas de Linguagens Paradigmas de Linguagens Aula 1: Introdução e Conceitos Básicos Professora Sheila Cáceres O que é um paradigma??? Paradigmas de Linguagens - Sheila Cáceres 2 O que é um paradigma??? Paradigmas de Linguagens

Leia mais

Quando Distribuir é bom

Quando Distribuir é bom Quando Distribuir? Se não precisar, não distribua. Problema de natureza descentralizada Rede de manufatura com atividades concorrentes de engenharia em locações remotas; Teleconferência; Automação industrial.

Leia mais

Engenharia de Software Processo de Desenvolvimento. Ciclo de Vida - Modelo Cascata

Engenharia de Software Processo de Desenvolvimento. Ciclo de Vida - Modelo Cascata Processo de Desenvolvimento Também chamado de ciclo de vida do software Reflete os passos necessários para se construir um produto de software Existem vários modelos de ciclo de vida Cascata (1956) Iterativo

Leia mais

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação PROGRAMAÇÃO PARALELA

Leia mais

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto Engenharia de Software I Informática 2006 Profa. Dra. Itana Gimenes RUP: Projeto Artefatos Modelo de Projeto: Lista de classes de

Leia mais

Programação de Alto Desempenho - 2. Prof: Carla Osthoff

Programação de Alto Desempenho - 2. Prof: Carla Osthoff Programação de Alto Desempenho - 2 Prof: Carla Osthoff E-mail: osthoff@lncc.br 3- Modelos de programação paralela Shared Memory/Threads Posix Win32 treads OpenMP Message Passing MPI Data Parallel OpenCL/Cuda

Leia mais

Objetos e Componentes Distribuídos: EJB e CORBA

Objetos e Componentes Distribuídos: EJB e CORBA : EJB e CORBA Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos

Leia mais

UML Unified Modeling Language Linguagem de Modelagem Unificada

UML Unified Modeling Language Linguagem de Modelagem Unificada UML Unified Modeling Language Linguagem de Modelagem Unificada Prof. Gilberto Porto e-mail: porto@gilbertoporto.com.br A linguagem UML n UML (Unified Modeling Language) Linguagem de Modelagem Unificada

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Faculdades SENAC Análise e Desenvolvimento de Sistemas 1 de agosto de 2009 Orientação a Objetos Encapsulamento: Parte interna (privada) dos objetos Implementação: métodos Estado: atributos, variáveis,

Leia mais

Processos de Software

Processos de Software DCC / ICEx / UFMG Processos de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Processos Procedimentos e métodos definindo relação entre tarefas PROCESSO Pessoas com habilidades, treinadas

Leia mais

Escalonamento (Tarefas Esporádicas)

Escalonamento (Tarefas Esporádicas) Universidade Federal do Amazonas Faculdade de Tecnologia Escalonamento (Tarefas Esporádicas) Lucas Cordeiro lucascordeiro@ufam.edu.br Notas de Aula Baseado nas notas de aula do Prof. Francisco Vasques,

Leia mais

Introdução 2014/1 Prof. Luís Fernando Garcia

Introdução 2014/1 Prof. Luís Fernando Garcia Engenharia de Software Introdução 2014/1 Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software Onipresença/DEPENDÊNCIA de computadores Computador = Software Aspectos POSITIVOS Aspectos NEGATIVOS

Leia mais

Prof. Ms. Ronaldo Martins da Costa

Prof. Ms. Ronaldo Martins da Costa Prof. Ms. Ronaldo Martins da Costa Diferentes conjuntos de etapas que envolvem métodos, ferramentas e procedimentos utilizados no desenvolvimento de software CiclodeVidaClássico Prototipação Modelo Espiral

Leia mais

Estilo: BlackBoard. BlackBoard = repositório de dados compartilhados

Estilo: BlackBoard. BlackBoard = repositório de dados compartilhados Estilo: BlackBoard Útil para problemas no qual não há uma solução determinística Uma coleção de programas independentes que trabalham cooperativamente em uma estrutura de dados comum (blackboard) Vários

Leia mais

Características de Sistemas Distribuídos

Características de Sistemas Distribuídos Tópicos O conceito de Características de Carlos Ferraz cagf@cin.ufpe.br Infra-estrutura básica Exemplos Vantagens e desvantagens Convergência digital Características 2002-2003 Carlos A. G. Ferraz 2 O Conceito

Leia mais

ENGENHARIA DE SOFTWARE. Aula 17 Reuso de software

ENGENHARIA DE SOFTWARE. Aula 17 Reuso de software ENGENHARIA DE SOFTWARE Aula 17 Reuso de software OBJETIVOS Entender os benefícios e problemas de reuso de software durante o desenvolvimento de novos sistemas; Entender o conceito de um framework de aplicações

Leia mais

Quando Distribuir é bom

Quando Distribuir é bom Quando Distribuir? Se não precisar, não distribua. Problema de natureza descentralizada Rede de manufatura com atividades concorrentes de engenharia em locações remotas; Teleconferência; Automação industrial.

Leia mais

Sistemas de Tempo Real e Tolerante a Falhas

Sistemas de Tempo Real e Tolerante a Falhas Sistemas de Tempo Real e Tolerante a Falhas Eduardo Ferreira dos Santos Engenharia de Computação Centro Universitário de Brasília UniCEUB Fevereiro, 2016 1 / 31 Sumário 1 Introdução 2 Denição 3 Conceitos

Leia mais

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) Java Comunicação 1

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) Java Comunicação 1 Programação com Objetos Distribuídos (C. Geyer) Java Comunicação 1 Autor Autor Local Cláudio Geyer Instituto de Informática disciplinas: POD e PDP Versão v4 2010-1 Programação com Objetos Distribuídos

Leia mais

Aula 2 POO 1 Introdução. Profa. Elaine Faria UFU

Aula 2 POO 1 Introdução. Profa. Elaine Faria UFU Aula 2 POO 1 Introdução Profa. Elaine Faria UFU - 2019 Sobre o Material Agradecimentos Aos professores José Gustavo e Fabiano, por gentilmente terem cedido seus materiais. Os slides consistem de adaptações

Leia mais

INSTITUTO FEDERAL DE SÃO PAULO CAMPUS PRESIDENTE EPITÁCIO MODELO DOS PROCESSOS DE SOFTWARE

INSTITUTO FEDERAL DE SÃO PAULO CAMPUS PRESIDENTE EPITÁCIO MODELO DOS PROCESSOS DE SOFTWARE INSTITUTO FEDERAL DE SÃO PAULO CAMPUS PRESIDENTE EPITÁCIO CURSO ANÁLISE E DESENVOLVIMENTO DE SISTEMA MODELO DOS PROCESSOS DE SOFTWARE ALUNO SAMUEL BRAGA LOPES SUMÁRIO - AGENDA INTRODUÇÃO MODELO CASCATA

Leia mais

2 Conceitos. 2.1 Sistema Multiagentes Abertos e Abordagens de Leis

2 Conceitos. 2.1 Sistema Multiagentes Abertos e Abordagens de Leis 2 Conceitos Neste capítulo são apresentados alguns conceitos necessários para o entendimento desta dissertação. Visto que esta proposta está inserida no contexto de sistemas multiagentes abertos, serão

Leia mais

Introdução a Engenharia de Software

Introdução a Engenharia de Software Engenharia de Software Aula 02 Introdução a Engenharia de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@dcc.ufmg.br ou disciplina.eduardo@gmail.com 7 Março de 2018 Bibliografia

Leia mais

Objetos e Componentes Distribuídos: EJB

Objetos e Componentes Distribuídos: EJB : EJB Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos Nesta

Leia mais

Arquiteturas Paralelas

Arquiteturas Paralelas ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES Arquiteturas Paralelas Medidas de desempenho Alexandre Amory Edson Moreno Índice 2 1. Introdução 2. Medidas de Desempenho Introdução 3 Aumento de desempenho dos

Leia mais

Engenharia de Software I: Introdução. Graduação em Informática 2009 Profa. Itana Gimenes

Engenharia de Software I: Introdução. Graduação em Informática 2009 Profa. Itana Gimenes Engenharia de Software I: Introdução Graduação em Informática 2009 Profa. Itana Gimenes Programa 1. O processo de engenharia de software 2. Engenharia de requisitos 3. Modelagem de sistemas 4. Conceitos

Leia mais

Princípios da Engenharia de Software aula 03

Princípios da Engenharia de Software aula 03 Princípios da Engenharia de Software aula 03 Prof.: José Honorato Ferreira Nunes Material cedido por: Prof.: Franklin M. Correia Na aula anterior... Modelos de processos de software: Evolucionário Tipos

Leia mais

Professor Emiliano S. Monteiro

Professor Emiliano S. Monteiro Professor Emiliano S. Monteiro To-Do Doing Done Conhecer os processos de desenvolvimento habilita o aluno a realizar uma melhor escolha de processo para uso em projetos futuros. A vantagem de conhecer

Leia mais

INTRODUÇÃO A SISTEMAS OPERACIONAIS

INTRODUÇÃO A SISTEMAS OPERACIONAIS INTRODUÇÃO A SISTEMAS OPERACIONAIS Prof. Me. Hélio Esperidião DEFINIÇÃO DE SISTEMA OPERACIONAL. O sistema operacional é uma camada de software colocada sobre o hardware para gerenciar todos os componentes

Leia mais

Sumário. Simulação (1) Simulação (2) Simulação (3) Inteligência Artificial Distribuída (1) Ambientes de Simulação Baseados em Agentes

Sumário. Simulação (1) Simulação (2) Simulação (3) Inteligência Artificial Distribuída (1) Ambientes de Simulação Baseados em Agentes Ambientes de Simulação Baseados em Agentes Disciplina: Inteligência Artificial Avançada INF 5004 Aluna: Diana Francisca Adamatti Orientadora: Ana Lucia C. Bazzan Sumário Simulação Inteligência Artificial

Leia mais

SOFTWARE REUSE. Ian Sommerville, 8º edição Capítulo 18. Aula de Luiz Eduardo Guarino de Vasconcelos

SOFTWARE REUSE. Ian Sommerville, 8º edição Capítulo 18. Aula de Luiz Eduardo Guarino de Vasconcelos SOFTWARE REUSE Ian Sommerville, 8º edição Capítulo 18 Aula de Luiz Eduardo Guarino de Vasconcelos Objetivos Explicar os benefícios e alguns problemas do reuso de software Descrever diferentes tipos de

Leia mais

Conhecendo um pouco sobre RUP

Conhecendo um pouco sobre RUP Aluno: Rainei Santos Costa Prof :Marcio Borges Faculdade Santíssimo Sacramento (FSSS) Alagoinhas -BA -Brasil R.Mal. Deodoro, 118 - Centro, Alagoinhas - BA, 48005-020 Turma de Sistemas De Informação IV

Leia mais

Adaptação Dinâmica desistemas Distribuídos p.1/54

Adaptação Dinâmica desistemas Distribuídos p.1/54 Adaptação Dinâmica de Sistemas Distribuídos Francisco José da Silva e Silva Orientadores: Prof. Dr. Markus Endler Prof. Dr. Fabio Kon Instituto de Matemática e Estatística da Universidade de São Paulo

Leia mais

5 Processo de Reificação e de Desenvolvimento com ACCA

5 Processo de Reificação e de Desenvolvimento com ACCA Uma Arquitetura para a Coordenação e a Composição de Artefatos de Software 53 5 Processo de Reificação e de Desenvolvimento com ACCA Resumo Este capítulo visa esclarecer e descrever atividades existentes

Leia mais