Teste de Programas Concorrentes. Simone Senger de Souza LABES/ SSC / ICMC / USP

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

Download "Teste de Programas Concorrentes. Simone Senger de Souza LABES/ SSC / ICMC / USP"

Transcrição

1 Teste de Programas Concorrentes Simone Senger de Souza LABES/ SSC / ICMC / USP srocio@icmc.usp.br

2 Assuntos Teste de software Programação concorrente Teste de software concorrente Seleção de técnicas de teste

3 Teste de software Fundamental em todos os ramos de engenharia o Software: produto da Engenharia de Software Atividade essencial para ascensão ao nível 3 do Modelo CMMI/SEI Atividade relevante para avaliação da característica funcionalidade (ISO 9126, ISO 25010, ISO 25041)

4 Teste de software

5 Teste de software O que é o Teste de Software? o Teste Examina comportamento do programa Execução de entradas específicas e saídas esperadas o Teste não é depuração! Depuração localiza causas que levam à falha

6 Teste de software Teste busca por falhas ou erros exercitando o software como um todo ou partes dele Depuração busca e corrige defeitos que são responsáveis por falhas ou erros do software

7 Limitações do teste int blech (int j){ j = j 1 ; // deveria ser j = j + 1 j = j / 30000; return j ; } Quais valores escolher? Entrada (j) Saída Esperada Saída Obtida Quais valores de entrada revelam o erro?

8 Limitações do teste Nenhum dos casos de teste anteriores revelou o erro Somente quatro valores do intervalo de entrada válido revelam o erro Entrada (j) Saída Esperada Saída Obtida

9 Limitações do teste Observe o exemplo a seguir: 1 int blech (int j){ 2 j = j 1 ; // deveria ser j = j j = j / 30000; 4 return j ; 5 } Código-fonte: blech.java Considerando o tipo inteiro com 16 bits (2 bytes), o menor valor possível seria e o maior seria , resultando em valores diferentes possíveis. Haverá tempo suficiente para se criar casos de teste? E se os programas forem maiores? Quantos casos de teste serão necessários?

10 Limitações do teste Solução selecionar um subconjunto reduzido do domínio de entrada que tenha alta probabilidade de revelar a presença de possíveis defeitos. Como selecionar os subdomínios? o Utilizar técnicas de teste de software

11 Técnicas de teste As técnicas de teste são definidas conforme o tipo de informação utilizada para realizar o teste. Maneira sistemática e planejada para conduzir os testes o Técnicas e Critérios de Teste Conjunto de Casos de Teste T o Características desejáveis Deve ser finito Custo de aplicação deve ser razoável

12 Critérios de teste Critério de Teste C o Objetivo Obter, de maneira sistemática, um conjunto T de casos de teste que seja efetivo quanto à meta principal de teste (revelar a presença de erros no programa)

13 Técnicas e Critérios de teste Técnica Funcional o Requisitos funcionais do software Critério Particionamento em Classes de Equivalência Técnica Estrutural o Estrutura interna do programa Critérios Baseados em Fluxo de Controle e Dados Técnica Baseada em Erros Erros mais frequentes cometidos durante o processo de desenvolvimento de software Critério Análise de Mutantes

14 Técnica funcional (teste de caixa preta) Baseia-se na especificação do software para derivar os requisitos de teste Aborda o software de um ponto de vista macroscópico Envolve dois passos principais: o Identificar as funções que o software deve realizar (especificação dos requisitos) o Criar casos de teste capazes de checar se essas funções estão sendo executadas corretamente

15 Técnica funcional Critérios da Técnica Funcional o Particionamento em Classes de Equivalência Divide o domínio de entrada do programa em classes de dados (classes de equivalências) Os dados de teste são derivados a partir das classes de equivalência o Análise do Valor Limite o Grafo de Causa-Efeito

16 Técnica funcional: Exemplo Passos o Identificar classes de equivalência Condições de entrada Classes válidas e inválidas o Definir os casos de teste Enumeram-se as classes de equivalência Casos de teste para as classes válidas Casos de teste para as classes inválidas

17 Técnica funcional: Exemplo Especificação do programa Identifier o O programa deve determinar se um identificador é válido ou não. Um identificador válido deve começar com uma letra e conter apenas letras ou dígitos. Além disso, deve ter no mínimo um caractere e no máximo seis caracteres de comprimento. o Exemplo abc12 (válido); cont*1 (inválido); 1soma (inválido); a (inválido)

18 Técnica funcional: Exemplo Classes de equivalência Tamanho t do identificador Condições de Entrada Classes Válidas Classes Inválidas Tamanho t do identificador 1 t 6 (1) Primeiro caractere c é uma letra Só contém caracteres válidos Sim (3) Sim (5) 1 > t > 6 (2) Não (4) Não (6) Exemplo de Conjunto de Casos de Teste o T0 = {(a1,válido), (2B3, Inválido), (Z-12, Inválido), (A1b2C3d, Inválido)} (1, 3, 5) (4) (6) (2)

19 Teste estrutural (teste de caixa branca) Baseia-se no conhecimento da estrutura interna(implementação) do programa. o Teste dos detalhes procedimentais. A maioria dos critérios dessa técnica utiliza uma representação de programa conhecida como grafo de programa.

20 Critérios de teste estrutural Representação do programa que visa auxiliar a geração dos requisitos de teste. Seja um GFC o GFC = (N, E, s) onde N representa o conjunto de nós, E o conjunto de arcos, e s o nó de entrada. o Nós: blocos de comandos indivisíveis. o Não existe desvio para o meio do bloco. o Uma vez que o primeiro comando do bloco é executado, os demais comandos são executados sequencialmente. o Arestas ou Arcos: representam o fluxo de controle entre os nós. Caminhos: sequências de execução de comandos que iniciam em um nó de entrada e terminam em um nó de saída.

21 Critérios de teste estrutural Construções Básicas do GFC

22 Teste estrutural Nós: 1, 2, 3,... Arcos: <1,2>, <1,3>,... Caminhos Simples: (2,3,4,5,6,7) Completo: (1,2,3,4,5,7,4,8,9,11)

23 Critérios de teste estrutural a 1

24 Exercício Nós: Arestas: (1,2) (1,3) (5,6) (5,7) (8,9) (8,10) T0 = {(a1,válido), (2B3, Inválido), (Z-12, Inválido), (A1b2C3d, Inválido)}

25 Critérios de teste estrutural Critérios de fluxo de controle o 1- testar todos os comandos o 2- testar todos os desvios condicionais o 3- testar todos os caminhos básicos Critério de Fluxo de dados o 1- Testar todos os usos a partir de uma definição de variável

26 Fases de teste Assim como outras atividades de Engenharia de Software, a atividade de teste também é dividida em fases. o Cada fase aborda diferentes tipos de erros e aspectos do software. Conceito de dividir para conquistar. Objetivo: minimizar a complexidade na condução dos testes. Ideia: Iniciar os testes a partir da menor unidade executável até atingir o programa como um todo.

27 Fases de teste Teste de Unidade o Identificar erros de lógica e de implementação em cada módulo do software, separadamente Teste de Integração o Identificar erros associados às interfaces entre os módulos do software Teste de Sistema o Verificar se as funções estão de acordo com a especificação e se todos os elementos do sistema combinam-se adequadamente

28 Concluindo... A atividade de teste é um processo executado em paralelo com as demais atividades do ciclo de vida de desenvolvimento do software. A principal etapa da atividade de teste é o projeto de casos de teste. o A ideia é selecionar casos de teste com maior probabilidade de revelar os erros existentes. Diferentes técnicas e critérios de teste existem para auxiliar na atividade de teste. Além disso, o teste deve ser conduzido em fases para reduzir a complexidade.

29 Programação concorrente Programação concorrente é essencial para reduzir o tempo de execução em diferentes domínios de aplicações: o Simulação de dinâmica molecular o Bioinformática o Processamento de imagens o Previsão do tempo o Web server o Sistemas embarcados

30 Programação concorrente Dificuldades para desenvolver programas concorrentes o Complexidade o Solução computacional x recursos computacionais o Propenso a erros (error prone) o Desenvolvedores não treinados o Testes não são realizados...

31 Programação Concorrente Um programa concorrente contém dois ou mais processos ou threads que trabalham juntos para realizar uma tarefa. processos concorrentes = começaram a sua execução e em um determinado instante do tempo ainda não a finalizaram processos paralelos = executam em diferentes processadores no mesmo intervalo de tempo.

32 Programação Concorrente processo processo P2 P2 P1 P1 tempo tempo processos concorrentes processos paralelos

33 Programação Concorrente Paradigmas: o Memória compartilhada: threads compartilham espaço de endereçamento (variáveis compartilhadas) Sincronização através de monitores e semáforos. o Passagem de mensagens: Processos possuem memória distribuída Sincronização por troca de mensagens: Primitivas send/receive

34 Programação Concorrente Exemplos clássicos: o Produtor-consumidor o Jantar dos filósofos o Leitores escritores em área comum o Macacos no precipício o Multiplicação de matrizes

35 Programação Concorrente - Exemplos Produtor-consumidor

36 Programação Concorrente - Exemplos Jantar dos filósofos

37 Programação Concorrente - Exemplos Leitura e escrita em área comum

38 Programação Concorrente - Exemplos Macacos no precipício o 1 corda para travessia - não pode atravessar se existir macaco no sentido contrário atravessando semáforo oeste = 0; semáforo leste = 1; Cruza Oeste { wait(oeste); Cruza; post(leste); }Cruza Leste { wait(leste); Cruza; post(oeste); }

39 Programação Concorrente - Exemplos Multiplicação de matrizes

40 Programação Concorrente Programas seqüenciais X Programas concorrentes: 1. Primitivas para definir quais processos serão executados em paralelo; 2. Primitivas para iniciar e finalizar processos concorrentes; 3. Primitivas para coordenar e especificar a interação entre os processos. Impacto na validação da aplicação!

41 Programação Concorrente Desenvolvimento de aplicações paralelas: o Ambientes automáticos que geram código paralelo o Linguagens de programação concorrente (Ada) o Extensões para linguagens seqüenciais (Fortran, C. Java): Ambientes de passagem de mensagens: MPI Message Passing Interface Bibilotecas para threads Pthreads, openmp

42 Teste para programas concorrentes Desafios: Número elevado de requisitos de teste comunicação e sincronização Execução não determinística Todos as sinc foram testadas? Todas as saídas produzidas são corretas? Quais sinc podem levar a um erro?

43 Exemplo de não determinismo P1 P0 P2 recv(p0) 1 1 send(p1) 2 send(p2) 1 recv(p0) send(p0) 2 3 recv(-1,-1) 2 send(p0) 4 recv(-1, -1) Sincronizações: (1 0,1 1 ), (2 0,1 2 ), (2 2,3 0 ), (2 1,4 0 ) Sincronizações: (1 0,1 1 ), (2 0,1 2 ), (2 1,3 0 ), (2 2,4 0 )?

44 Exemplo de não determinismo Sincronizações: (1 0,1 1 ), (2 0,1 2 ), (2 2,3 0 ), (2 1,4 0 ) Sincronizações: (1 0,1 1 ), (2 0,1 2 ), (2 1,3 0 ), (2 2,4 0 )? Duas comunicações possíveis: Como saber qual delas ocorreu na execução do programa? Qual a chance de uma delas ser executada? Como forçar uma delas para ocorrer?

45 Exemplo de não determinismo Sincronizações: (1 0,1 1 ), (2 0,1 2 ), (2 2,3 0 ), (2 1,4 0 ) Sincronizações: (1 0,1 1 ), (2 0,1 2 ), (2 1,3 0 ), (2 2,4 0 )? Solução conservadora: Forçar a ocorrência de todas as possíveis Problema?

46 Desafios Número elevado de requisitos de teste Interleaving dos processos ou threads Programa LOC Sync-pairs Infeasible All Sync Crivo de Erastótenes Gcd Mmult Filósofos Qsort Jacobi

47 Erro de Observabilidade bool saque( int quantia ) 2 { 3 if( saldo >= quantia ) 4 { 5 saldo = saldo - quantia; 6 return true; 7 } 8 else 9 { 10 return false; 11 } 12 } Saldo= 500 P1 chama saque(300) P2 chama saque(200) Saldo final =?

48 Erro de Observabilidade bool saque( int quantia ) 2 { 3 pthread_mutex_lock(v_bloqueio); 4 if( saldo > = quantia ) 5 { 6 saldo = saldo - quantia; 7 pthread_mutex_unlock(v_bloqueio); 8 return true; 9 } 10 else 11 { 12 pthread_mutex_unlock(v_bloqueio); 13 return false; 14 } 15 }

49 Erro de Travamento

50 Tipos de erros em programas concorrentes Deadlock Starvation Data race Livelock Atomicity violation Communication error Synchronization error Erros de observabilidade Erros de travamento Arora, V., Bhatia, R., and Singh, M. (2016) A systematic review of approaches for testing concurrent programs. Concurrency Computation: Pract. Exper., 28: doi: /cpe.3711

51 Teste de programas concorrentes Como testar um programa concorrente? o Como gerar/executar os casos de teste? o Como analisar a saída obtida?

52 Desafios Conceito de caso de teste: Caso de teste: (Input, Output, Sync) Desafio: execução dos casos de teste Todos as sincronizações foram testadas? Todas as saídas produzidas são corretas? Quais sincronizações podem levar a um erro?

53 Execução de programas concorrentes Execução ad hoc (sem controle) Execução controlada o Determinística o Temporal testing

54 Abordagens de Teste para Software Concorrente Teste de alcançabilidade Teste Estrutural Teste de Mutação Teste de baseado em Modelos Teste baseado em busca Arora, V., Bhatia, R., and Singh, M. (2016) A systematic review of approaches for testing concurrent programs. Concurrency Computation: Pract. Exper., 28: doi: /cpe.3711

55 Exemplo Programa GCD Programa GCD para três números P o {gcd.c} x,y x {mgcd.c} P mestre y,z y P 2 {gcd.c} x,y z P 1 {gcd.c}

56 Exemplo Programa GCD /* Master program GCD - mgcd */ /* Slave program GCD - gcd 3x */ main() { /*1*/ integer x,y,z, slv[3], buf[2]; /*1*/ read (x, y, z); /*1*/ spawn_process("gcd", NULL, 3, slv); /*2*/ buf[0] = x; buf[1] = y; /*2*/ send(slv[0], 2, buf); /*3*/ buf[0] = y; buf[1] = z; /*3*/ send(slv[1], 2, buf); /*4*/ recv(*, x); // não determinismo /*5*/ recv(*, y); // não determinismo /*6*/ if ( ( x>1 ) && ( y>1 ) ) { /*7*/ buf[0] = x; buf[1] = y; /*7*/ send(slv[2], 2, buf); /*8*/ recv(*, z); /*9*/ else { /*9*/ finalize_process(slv[2]); /*9*/ z = 1; /*9*/ } /*10*/ print (z); /*10*/ finalize(); /*10*/ } main(){ /*1*/ integer pid, x, y, buf[2]; /*1*/ pid = my_father(); /*2*/ recv(pid, 2, buf); /*2*/ x = buf[0]; /*2*/ y = buf[1]; /*3*/ while (x!= y){ /*4*/ if (x<y) /*5*/ y = y-x; /*6*/ else /*6*/ x = x-y; /*7*/ } /*8*/ send(pid,1, x); /*9*/ finalize(); /*9*/ }

57 Exemplo Programa GCD Programa GCD para três números para x = 1, y = 2 e z = 1 x = 1, y = 2 {mgcd} y = 2, z = 1 P 0 {gcd} P mestre x' = 1 y' = 1 P 1 {gcd} z = 1 (gcd) P 2 {gcd}

58 Exemplo Programa GCD Programa GCD para três números para x = 2, y = 4 e z = 6 x = 2, y = 4 {mgcd} y = 4, z = 6 P 0 {gcd} P mestre x' = 2 y' = 2 P 1 {gcd} x = 2, y =2 z = 2 (gcd) P 2 {gcd}

59 Exemplo Programa GCD Programa GCD para três números para x = 3, y = 6 e z = 4 x = 3, y = 6 {mgcd} y = 6, z = 4 P 0 {gcd} P mestre x' = 3 y' = 2 P 1 {gcd} x = 3, y = 2 z = 1 (gcd) P 2 {gcd} foi testado suficiente?

60 Exemplo Programa GCD /* Master program GCD - mgcd */ /* Slave program GCD - gcd 3x */ main() { /*1*/ integer x,y,z, slv[3], buf[2]; /*1*/ read (x, y, z); /*1*/ spawn_process("gcd", NULL, 3, slv); /*2*/ buf[0] = x; buf[1] = y; /*2*/ send(slv[0], 2, buf); /*3*/ buf[0] = y; buf[1] = z; /*3*/ send(slv[1], 2, buf); /*4*/ recv(*, x); // não determinismo /*5*/ recv(*, y); // não determinismo /*6*/ if ( ( x>1 ) && ( y>1 ) ) { /*7*/ buf[0] = x; buf[1] = y; /*7*/ send(slv[2], 2, buf); /*8*/ recv(*, z); /*9*/ else { /*9*/ finalize_process(slv[2]); /*9*/ z = 1; /*9*/ } /*10*/ print (z); /*10*/ finalize(); /*10*/ } main(){ /*1*/ integer pid, x, y, buf[2]; /*1*/ pid = my_father(); /*2*/ recv(pid, 2, buf); /*2*/ x = buf[0]; /*2*/ y = buf[1]; /*3*/ while (x!= y){ /*4*/ if (x<y) /*5*/ y = y-x; /*6*/ else /*6*/ x = x-y; /*7*/ } /*8*/ send(pid,1, x); /*9*/ finalize(); /*9*/ }

61 /* Master program GCD - mgcd */ Exemplo Programa GCD main() { /*1*/ integer x,y,z, slv[3], buf[2]; /*1*/ read (x, y, z); /*1*/ spawn_process("gcd", NULL, 3, slv); /*2*/ buf[0] = x; buf[1] = y; /*2*/ send(slv[0], 2, buf); /*3*/ buf[0] = y; buf[1] = z; /*3*/ send(slv[1], 2, buf); /*4*/ recv(*, x); /*5*/ recv(*, y); y =? /*6*/ if ( ( x>1 ) && ( y>1 ) ) { /*7*/ buf[0] = x; buf[1] = y; /*7*/ send(slv[2], 2, buf); /*8*/ recv(*, z); /*9*/ else { /*9*/ finalize_process(slv[2]); /*9*/ z = 1; /*9*/ } /*10*/ print (z); /*10*/ finalize(); /*10*/ } x = 1 z =? (esperava 1 ) /* Slave program GCD - gcd */ main(){ /*1*/ integer pid, x, y, buf[2]; /*1*/ pid = my_father(); /*2*/ recv(pid, 2, buf); /*2*/ x = buf[0]; /*2*/ y = buf[1]; /*3*/ while (x!= y){ /*4*/ if (x<y) /*5*/ y = y + x; /*6*/ else /*6*/ x = x - y; /*7*/ } /*8*/ send(pid,1, x); /*9*/ finalize(); /*9*/ } nó 5 1 como y = y + x (o correto é y = y x) entrada {x=1, y=2, z=1} executa o nó 5 1 e revela o defeito

62 /* Master program GCD - mgcd */ Exemplo Programa GCD main() { /*1*/ integer x,y,z, slv[3], buf[2]; /*1*/ read (x, y, z); /*1*/ spawn_process("gcd", NULL, 3, slv); /*2*/ buf[0] = x; buf[1] = y; /*2*/ send(slv[0], 2, buf); /*3*/ buf[0] = y; buf[1] = z; /*3*/ send(slv[1], 2, buf); /*4*/ recv(*, x); /*5*/ recv(*, y); /*6*/ if ( ( x>1 ) && ( y>1 ) ) { /*7*/ buf[0] = x; buf[1] = y; /*7*/ send(slv[2], 2, buf); x = 1 y = 1 /*8*/ recv(*, x); /*9*/ else { /*9*/ finalize_process(slv[2]); /*9*/ z = 1; /*9*/ } z = 1 (saída esperada ) /*10*/ print (z); /*10*/ finalize(); /*10*/ } /* Slave program GCD - gcd */ main(){ /*1*/ integer pid, x, y, buf[2]; /*1*/ pid = my_father(); /*2*/ recv(pid, 2, buf); /*2*/ x = buf[0]; /*2*/ y = buf[1]; /*3*/ while (x!= y){ /*4*/ if (x<y) /*5*/ y = y - x; /*6*/ else /*6*/ x = x - y; /*7*/ } /*8*/ send(pid,1, x); /*9*/ finalize(); /*9*/ } nó 8 m recebe msg em x - o correto seria z entrada {x=1, y=2, z=1} não revela defeito

63 /* Master program GCD - mgcd */ Exemplo Programa GCD main() { /*1*/ integer x,y,z, slv[3], buf[2]; /*1*/ read (x, y, z); /*1*/ spawn_process("gcd", NULL, 3, slv); /*2*/ buf[0] = x; buf[1] = y; /*2*/ send(slv[0], 2, buf); /*3*/ buf[0] = y; buf[1] = z; /*3*/ send(slv[1], 2, buf); /*4*/ recv(*, x); /*5*/ recv(*, y); /*6*/ if ( ( x>1 ) && ( y>1 ) ) { /*7*/ buf[0] = x; buf[1] = y; /*7*/ send(slv[2], 2, buf); x = 2 y = 2 /*8*/ recv(*, x); /*9*/ else { /*9*/ finalize_process(slv[2]); /*9*/ z = 1; /*9*/ } z = 6 (esperava 2 ) /*10*/ print (z); /*10*/ finalize(); /*10*/ } /* Slave program GCD - gcd */ main(){ /*1*/ integer pid, x, y, buf[2]; /*1*/ pid = my_father(); /*2*/ recv(pid, 2, buf); /*2*/ x = buf[0]; /*2*/ y = buf[1]; /*3*/ while (x!= y){ /*4*/ if (x<y) /*5*/ y = y - x; /*6*/ else /*6*/ x = x - y; /*7*/ } /*8*/ send(pid,1, x); /*9*/ finalize(); /*9*/ } nó 8 m recebe msg em x - o correto seria z entrada {x=2, y=4, z=6} executa o nó 8 m e revela defeito

64 /* Master program GCD - mgcd */ Exemplo Programa GCD main() { /*1*/ integer x,y,z, slv[3], buf[2]; /*1*/ read (x, y, z); /*1*/ spawn_process("gcd", NULL, 3, slv); /*2*/ buf[0] = x; buf[1] = y; /*2*/ send(slv[0], 2, buf); /*3*/ buf[0] = y; buf[1] = z; /*3*/ send(slv[1], 2, buf); x = 2 /*4*/ recv(*, x); y =? /*5*/ nb_recv(*, y); /*6*/ if ( ( x>1 ) && ( y>1 ) ) { /*7*/ buf[0] = x; buf[1] = y; /*7*/ send(slv[2], 2, buf); x = 2 e y = 4 /*8*/ recv(*, z); /*9*/ else { /*9*/ finalize_process(slv[2]); /*9*/ z = 1; /*9*/ } /*10*/ print (z); /*10*/ finalize(); /*10*/ } /* Slave program GCD - gcd */ main(){ /*1*/ integer pid, x, y, buf[2]; /*1*/ pid = my_father(); /*2*/ recv(pid, 2, buf); /*2*/ x = buf[0]; /*2*/ y = buf[1]; /*3*/ while (x!= y){ /*4*/ if (x<y) /*5*/ y = y - x; /*6*/ else /*6*/ x = x - y; /*7*/ } /*8*/ send(pid,1, x); /*9*/ finalize(); /*9*/ } nó 5 m como recv não bloqueante - o correto é bloqueante z = 2 (saída esperada ) {x=2, y=4, z=6} não revela o defeito

65 /* Master program GCD - mgcd */ Exemplo Programa GCD main() { /*1*/ integer x,y,z, slv[3], buf[2]; /*1*/ read (x, y, z); /*1*/ spawn_process("gcd", NULL, 3, slv); /*2*/ buf[0] = x; buf[1] = y; /*2*/ send(slv[0], 2, buf); /*3*/ buf[0] = y; buf[1] = z; /*3*/ send(slv[1], 2, buf); x = 3 /*4*/ recv(*, x); y =? /*5*/ nb_recv(*, y); /*6*/ if ( ( x>1 ) && ( y>1 ) ) { /*7*/ buf[0] = x; buf[1] = y; /*7*/ send(slv[2], 2, buf); x = 3 e y = 6 /*8*/ recv(*, z); /*9*/ else { /*9*/ finalize_process(slv[2]); /*9*/ z = 1; /*9*/ } /*10*/ print (z); /*10*/ finalize(); /*10*/ } z = 3 (esperava 1 ) /* Slave program GCD - gcd */ main(){ /*1*/ integer pid, x, y, buf[2]; /*1*/ pid = my_father(); /*2*/ recv(pid, 2, buf); /*2*/ x = buf[0]; /*2*/ y = buf[1]; /*3*/ while (x!= y){ /*4*/ if (x<y) /*5*/ y = y - x; /*6*/ else /*6*/ x = x - y; /*7*/ } /*8*/ send(pid,1, x); /*9*/ finalize(); /*9*/ } nó 5 m como recv não bloqueante - o correto é bloqueante {x=3, y=6, z=4} pode revelar o defeito

66 /* Master program GCD - mgcd */ Exemplo Programa GCD main() { /*1*/ integer x,y,z, slv[3], buf[2]; /*1*/ read (x, y, z); /*1*/ spawn_process("gcd", NULL, 3, slv); /*2*/ buf[0] = x; buf[1] = y; /*2*/ send(slv[0], 2, buf); /*3*/ buf[0] = y; buf[1] = z; /*3*/ send(slv[1], 2, buf); x = 3 /*4*/ recv(*, x); y = 2 /*5*/ nb_recv(*, y); /*6*/ if ( ( x>1 ) && ( y>1 ) ) { /*7*/ buf[0] = x; buf[1] = y; /*7*/ send(slv[2], 2, buf); x = 3 e y = 2 /*8*/ recv(*, z); /*9*/ else { /*9*/ finalize_process(slv[2]); /*9*/ z = 1; /*9*/ } /*10*/ print (z); /*10*/ finalize(); /*10*/ } z = 1 (Saída esperada ) /* Slave program GCD - gcd */ main(){ /*1*/ integer pid, x, y, buf[2]; /*1*/ pid = my_father(); /*2*/ recv(pid, 2, buf); /*2*/ x = buf[0]; /*2*/ y = buf[1]; /*3*/ while (x!= y){ /*4*/ if (x<y) /*5*/ y = y - x; /*6*/ else /*6*/ x = x - y; /*7*/ } /*8*/ send(pid,1, x); /*9*/ finalize(); /*9*/ } nó 5 m como recv não bloqueante - o correto é bloqueante {x=3, y=6, z=4} pode revelar o defeito

67 /* Master program GCD - mgcd */ main() { /*1*/ integer x,y,z, slv[3], buf[2]; /*1*/ read (x, y, z); /*1*/ spawn_process("gcd", NULL, 3, slv); /*2*/ buf[0] = x; buf[1] = y; /*2*/ send(slv[0], 2, buf); /*3*/ buf[0] = y; buf[1] = z; /*3*/ send(slv[1], 2, buf); /*4*/ recv(*, x); // não determinismo /*5*/ recv(*, y); // não determinismo /*6*/ if ( ( x>1 ) && ( y>1 ) ) { /*7*/ buf[0] = x; buf[1] = y; /*7*/ send(slv[2], 2, buf); /*8*/ recv(*, z); /*9*/ else { /*9*/ finalize_process(slv[2]); /*9*/ z = 1; /*9*/ } /*10*/ print (z); /*10*/ finalize(); /*10*/ } /* Slave program GCD - gcd 3x */ main(){ /*1*/ integer pid, x, y, buf[2]; /*1*/ pid = my_father(); /*2*/ recv(pid, 2, buf); /*2*/ x = buf[0]; /*2*/ y = buf[1]; /*3*/ while (x!= y){ /*4*/ if (x<y) /*5*/ y = y-x; /*6*/ else /*6*/ x = x-y; /*7*/ } /*8*/ send(pid,1, x); /*9*/ finalize(); /*9*/ }

68 Critérios de teste estruturais Modelo de Teste o GFCP (Grafo de Fluxo de Controle Paralelo): Similar ao GFC de programas seqüenciais Definição de arestas intra-processo e interprocesso Extrai os pares send/receive: considera toda possível sincronização extraída estaticamente Aplica conceitos de fluxo de controle e estende para tratar sincronização. Aplica conceitos de fluxo de dados e estende para tratar uso-comunicacional (s-uso)

69 Critérios de teste estruturais Modelo de teste extrai do programa concorrente: o Informações de fluxo de controle: Nós e arestas como ocorre em programas seqüenciais Nós com comandos send (Ns) Nós com comandos receive (Nr) Arestas de sincronização (s-uso) o Informações de fluxo de dados: Definição Uso computacional Uso predicativo Uso comunicacional

70 Contribuições em Teste de Software Concorrente Geração automática de Dados de Teste; 10% Teste Determinístico; 18,30% Teste Baseado em Defeitos; 26% Teste Estrutural; 25,50% Teste Baseado Modelos; 20% S. M. Melo, Definição de um Framework para Avaliação Sistemática de Técnicas de Teste no Contexto de Software Concorrente, Teste de doutorado, ICMC/USP, em andamento

71 Teste de software concorrente Programação Concorrente com qualidade: É necessária nos dias de hoje e será também no futuro Está repleta de novos desafios maior demanda com novas arquiteturas necessidade de maior produtividade redução dos custos de manutenção explorar o desempenho de pico das arquiteturas Teste ainda é muito limitado complexidade e custo

72 O objetivo das abordagens de seleção é auxiliar os testadores a escolher a técnica de teste adequada ao seu projeto de software Teste baseado em erros Teste baseado em busca Análise simbólica Análise preditiva Teste de alçabilidade Execução determinística Teste baseado em cobertura Teste de mutação Teste funcional Teste baseado em métodos formais Teste randômico Teste baseado em modelos Teste estrutural Teste ativo

73 Seleção de técnicas de teste Pesquisadores têm desenvolvido diversas técnicas de teste de software para o contexto da programação concorrente Porém, na maioria dos projetos de software a escolha da técnica de teste é baseada no conhecimento ou hábitos da equipe de teste

74 Seleção de técnicas de teste

75 Seleção de técnicas de teste Técnica de teste Nível de teste Entradas requeridas Linguagem de programação

76 Seleção de técnicas de teste

77 Desafios Prover a qualidade de aplicações concorrentes o Aplicação de técnicas de teste o Usar na indústria oque é produzido na academia o Selecionar técnicas de teste mais adequadas a um projeto de software Características Limitações

78 Exercício Turma 1 Essa atividade tem como objetivo selecionar a técnica de teste mais adequada ao projeto de software apresentado, para isso deverão ser consideradas as características do projeto e das técnicas de teste fornecidas. o Considere o projeto de software apresentado na Tabela 1. Leia a sua especificação. o Dadas as duas técnicas a seguir (Tabela 2 e 3) você deve selecionar a técnica mais adequada ao projeto apresentado na Tabela 1.

79 Caracterização do Projeto de Estacionamento Descrição do sistema a ser desenvolvido O objetivo é construir um software que gerencie vagas de estacionamento, utilizando sensores, para verificar se está ou não ocupado e uma central que informe os motoristas sobre informações do estacionamento. O sistema deve ser composto por dois módulos principais: (1) Módulo de vagas, que utiliza um micro controlador e um sensor que capta, processa os dados da vaga e envia a uma central, através de uma rede sem fio. (2) Central de controle, que capta as informações recebidas pelo módulo 1 e converte em informações apresentadas ao usuário em uma tela/monitor. Atributos de caracterização Valor Características do software a ser desenvolvido Plataforma de execução do software Windows Contexto/Objetivo Sistema distribuído, Sistema embarcado Linguagem de programação utilizada para Ada construir o software Paradigma concorrente de iteração de processos Memória compartilhada Complexidade do problema Duração estimada do projeto Alta (muitas fórmulas) 2 meses para os testes Tamanho estimado da aplicação Pequeno Frequência de mudança nos requisitos Baixa Características desejadas para os testes a serem realizados Nível de teste desejado para o projeto Teste de sistema, teste de integração Tipo de técnica de teste a ser aplicada no Teste funcional software Tipo de análise Dinâmica Características de qualidade de software Funcionalidade, segurança, definidas nos requisitos e que devem ser eficiência avaliadas ao longo do projeto Tipos de falhas que desejam ser reveladas Código faltando, erro de navegação, erro de exceção, tipo de dados incorreto, deadlock, livelock, condição de corrida Custo desejado para os testes Ferramentas para realização dos testes Entradas disponíveis para a técnica de teste Saídas esperadas Representação do programa A empresa não possui verba para aquisição de ferramentas A empresa não possui ferramentas Código fonte Quantidade de erros detectados, tempo de execução Modelo em linguagem Lustre Técnica 1 (Teste baseado em métodos formais checagem de modelos) [Musuvathi et al., 2007] Atributo de caracterização Valores Plataforma de execução Windows Contexto/Objetivo Computação de alto desempenho (HPC) Linguagem de programação Nível de teste Saídas (Resultados gerados) Características de qualidade do software que podem ser avaliadas pela abordagem Tipo de estudo (avaliação empírica) Tipo de análise Tipos de erros revelados (erros concorrentes) Ferramenta de apoio Compreensibilidade (necessidade de conhecimento de alguma tecnologia adicional) Dependências (a abordagem depende de outra) C/C++/C# Teste de sistema Quantidade de execuções Eficácia Estudo de caso Estática Erros de sincronização, condição de corrida CHESS Conhecimento sobre análise de modelos Não Técnica 2 (Teste estrutural - escalonamento randômico) [Burckhardt et al., 2010] Atributo de caracterização Valores Plataforma de execução Windows Contexto/Objetivo Sistemas distribuídos Linguagem de programação Nível de teste Saídas (Resultados gerados) Características de qualidade do software que podem ser avaliadas pela abordagem Tipo de estudo (avaliação empírica) Tipo de análise Tipos de erros revelados (erros concorrentes) Ferramenta de apoio Compreensibilidade (necessidade de conhecimento de alguma tecnologia adicional) Dependências (a abordagem depende de outra) C/C++ Teste de sistema Porcentagem de erros detectados Eficiência Estudo de caso Dinâmica Violação de atomicidade, deadlock, preempção PCT Conhecimento sobre a linguagem em que o software é implementado Dependente da instrumentação

80 Grupo 2 Grupo 4 Grupo 1 Grupo 3 Turma 1 - Grupos Allan Silva Domingues Barbara Darques Barros Bernardo Barcellos de Castro Cunha Bruno Henrique Rasteiro Chan Ken Chen Cho Young Lim Danilo de Moraes Costa Douglas Seiti Kodama Eder Rosati Ribeiro Eduardo Aguiar Pacheco Eduardo Santos Carlos de Souza Elisa Saltori Trujillo Filipe Mariano Freire da Silva Fulvio Eduardo Ferreira Gabriel Alves Pereira Estrela Giovanna Oliveira Guimaraes Gustavo Cabral de Barros Gustavo Lima Lopes Gustavo Rocha Spena Henrique Caetano Anraki Hugo Moraes Dzin Igor Trevelin Xavier da Silva Italo Tobler Silva João Vítor Silvério de Sousa Kaique Lupo Leite Leonardo Ventura Lucas Alexandre Soares Lucas Silveira de Moura Luccas Henrique Braga de Almeida Luiz Eduardo Dorici Marcius Leandro Junior Marcus Vinicius dos Santos Araujo Matheus Gomes da Silva Horta Pedro Naidhig Puzzi Piero Lima Capelo Rafael Andreatta Martins Rafael Augusto Monteiro Rafael Bueno da Silva Rafael Silva de Milhã Sabrina Faceroli Tridico Thauan Leandro Gonçalves Vitor Giovani Dellinocente Wesley Tiozzo Willian Gomes de Oliveira

81

Teste de Software. Teste Funcional Teste Estrutural. Teste Baseado em Erros (Análise de Mutantes)

Teste de Software. Teste Funcional Teste Estrutural. Teste Baseado em Erros (Análise de Mutantes) Teste de Software Teste Funcional Teste Estrutural Teste Baseado em Erros (Análise de Mutantes) Profa Rosana T. V. Braga Material adaptado do material dos profs. Ellen Francine Barbosa e José Carlos Maldonado

Leia mais

Introdução a Testes de Software. Ricardo Argenton Ramos

Introdução a Testes de Software. Ricardo Argenton Ramos Introdução a Testes de Software Ricardo Argenton Ramos ricargentonramos@gmail.com Agenda da Aula Introdução sobre Testes; Testes Funcionais de software; Testes Estruturais de Software; Teste de Software

Leia mais

Introdução a Teste de Software

Introdução a Teste de Software Universidade Católica de Pelotas Tecnólogo em Análise e Desenvolvimento de Sistemas Disciplina de Qualidade de Software Introdução a Teste de Software Prof. Luthiano Venecian 1 Conceitos Teste de software

Leia mais

Engenharia de Software

Engenharia de Software Prof. M.Sc. Ronaldo C. de Oliveira ronaldooliveira@facom.ufu.br FACOM - 2011 Verificação e Validação (V&V) S.L.Pfleeger (Cap.8 & 9) R.Pressman (Cap.13 & 14) I.Sommerville (Cap.22 & 23) Introdução Verificação

Leia mais

Ricardo A. Ramos. [Baseado na apresentação do LABS ICMC-USP ->

Ricardo A. Ramos. [Baseado na apresentação do LABS ICMC-USP -> Introdução ao Teste de Software Ricardo A. Ramos [Baseado na apresentação do LABS ICMC-USP -> http://www.labes.icmc.usp.br] Organização Introdução Teste de Software Terminologia e Conceitos Básicos Técnicas

Leia mais

UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA

UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA Teste de Software Engenharia de Software 2o. Semestre de 2006 Slide

Leia mais

Introdução ao Teste de Software

Introdução ao Teste de Software Introdução ao Teste de Software Ricardo A. Ramos [Baseado na apresentação do LABS ICMC-USP -> http://www.labes.icmc.usp.br] Organização Introdução Teste de Software Terminologia e Conceitos Básicos Técnicas

Leia mais

Unidade VI. Técnicas de Teste de Software Teste Estrutural. Profa. Dra. Sandra Fabbri

Unidade VI. Técnicas de Teste de Software Teste Estrutural. Profa. Dra. Sandra Fabbri Unidade VI Técnicas de Teste de Software Profa. Dra. Sandra Fabbri Os requisitos de teste são extraídos de uma implementação em particular Teste dos detalhes procedimentais A maioria dos critérios dessa

Leia mais

Introdução à Verificação, Validação e Teste (VV&T)*

Introdução à Verificação, Validação e Teste (VV&T)* Introdução à Verificação, Validação e Teste (VV&T)* Auri Marcelo Rizzo Vincenzi (UNIVEM) Edmundo Sérgio Spoto (UNIVEM) Márcio Eduardo Delamaro (UNIVEM) {auri, dino, delamaro}@fundanet.br Essa apresentação

Leia mais

Organização para Realização de Teste de Software

Organização para Realização de Teste de Software Organização para Realização de Teste de Software Quando o teste se inicia há um conflito de interesses: Desenvolvedores: interesse em demonstrar que o programa é isento de erros. Responsáveis pelos testes:

Leia mais

Teste de Software Orientado a Objeto. Ricardo Argenton Ramos

Teste de Software Orientado a Objeto. Ricardo Argenton Ramos Teste de Software Orientado a Objeto Ricardo Argenton Ramos O que diferencia teste de software OO de testes Convencionais? Técnicas e abordagens são normalmente semelhantes, porém novos desafios são apresentados

Leia mais

TESTES DE SOFTWARE Unidade 1 Importância do Teste de Software. Luiz Leão

TESTES DE SOFTWARE Unidade 1 Importância do Teste de Software. Luiz Leão Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 1.1 - O teste nas fases de vida e de desenvolvimento de um software. 1.2 - O teste na engenharia de sistemas e na engenharia de

Leia mais

Teste de Software: conceitos, técnicas e benefícios

Teste de Software: conceitos, técnicas e benefícios Teste de Software: conceitos, técnicas e benefícios MSc. Alessandro Viola Pizzoleto IFSP - Instituto Federal de São Paulo Piracicaba - SP 30 de março de 2017 1 / 49 Sobre Mim Mestre em Engenharia de Software

Leia mais

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos Pensando em Paralelo Pensar em paralelo é uma tarefa que exige disciplina

Leia mais

Estágio II. Aula 02 Conceitos de Teste de Software. Prof. MSc. Fred Viana

Estágio II. Aula 02 Conceitos de Teste de Software. Prof. MSc. Fred Viana Estágio II Aula 02 Conceitos de Teste de Software Prof. MSc. Fred Viana Agenda Teste de Software Defeito, Erro ou Falha? Dimensões do Teste Níveis de Teste Tipos de Teste Técnicas de Teste Teste de Software

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Ciência da Computação Prof. Elias Ferreira Elaborador por: Ana Claudia Bastos Loureiro Monção JUNIT Teste de Software Processo de Software Um processo de software pode ser visto como o conjunto de atividades,

Leia mais

Sistemas Distribuídos e Paralelos

Sistemas Distribuídos e Paralelos Sistemas Distribuídos e Paralelos Aula #6: Programação paralela em sistemas de memória compartilhada. ISUTIC - 2016 Eng. Alexander Rodríguez Bonet Aula de hoje Regiões paralelas. Cláusulas de âmbito. Partilha

Leia mais

PROJETO DE PROGRAMAS. Projeto de Programas PPR0001

PROJETO DE PROGRAMAS. Projeto de Programas PPR0001 PROJETO DE PROGRAMAS Projeto de Programas PPR0001 Desenvolvimento de Software 2 3 Desenvolvimento de Software Análise de Requisitos Distinguir e dividir o sistema em componentes: Analisar os componentes

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

Linguagem C++ Estruturas de controle Parte II Estruturas de repetição

Linguagem C++ Estruturas de controle Parte II Estruturas de repetição Fundamentos de Programação Linguagem C++ Estruturas de controle Parte II Estruturas de repetição Prof. Bruno E. G. Gomes IFRN 1 Estruturas de Controle Permitem o controle da sequência de execução de um

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

Fundamentos de Teste de Software

Fundamentos de Teste de Software Núcleo de Excelência em Testes de Sistemas Fundamentos de Teste de Software Módulo 2- Teste Estático e Teste Dinâmico Aula 5 Técnicas de Especificação SUMÁRIO INTRODUÇÃO... 3 TÉCNICAS PARA PROJETO DE CASOS

Leia mais

Paradigmas da Engenharia de Software AULA PROF. ABRAHAO LOPES

Paradigmas da Engenharia de Software AULA PROF. ABRAHAO LOPES Paradigmas da Engenharia de Software AULA 03-04 PROF. ABRAHAO LOPES Introdução O processo de software é visto por uma sequência de atividades que produzem uma variedade de documentos, resultando em um

Leia mais

Teste de Software Parte 2. Prof. Jonas Potros

Teste de Software Parte 2. Prof. Jonas Potros Teste de Software Parte 2 Prof. Jonas Potros Conteúdos Processo de Teste Planejamento de Teste Processo de Teste Independentemente da fase de teste, o processo de teste inclui as seguintes atividades:

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 11 - Threads e Concorrência

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 11 - Threads e Concorrência Aula 11 - Threads e Concorrência Conteúdo Programático desta aula Apresentar os Conceitos de Threads, Concorrência e Sincronização. Verificar a aplicabilidade destes conceitos no mercado, bem como sua

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

Processos de Desenvolvimento de Software. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 2

Processos de Desenvolvimento de Software. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 2 Processos de Desenvolvimento de Software Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 2 A Engenharia de Software Uma Tecnologia em Camadas Gerenciamento da Qualidade Total e filosofias

Leia mais

Engenharia de Software. Teste de Software. Introdução. Profa. Dra. Lúcia V. L. Filgueiras Profa. Dra. Selma Shin Shimizu Melnikoff

Engenharia de Software. Teste de Software. Introdução. Profa. Dra. Lúcia V. L. Filgueiras Profa. Dra. Selma Shin Shimizu Melnikoff Engenharia de Software Profa. Dra. Lúcia V. L. Filgueiras Profa. Dra. Selma Shin Shimizu Melnikoff Teste de Software Introdução Estratégias de teste Testes de módulo Testes de integração Teste de aceitação

Leia mais

Estratégias de Testes Parte I

Estratégias de Testes Parte I Engenharia de Software III 5º. Semestre ADS Capítulo 9 Estratégias de Testes Parte I Profa. Dra. Ana Paula Gonçalves Serra Prof. Ms. Edson Saraiva de Almeida Agenda Exercício Profa. Dra. Ana Paula G. Serra

Leia mais

Segundo trabalho prático de implementação Sistema de reserva de assentos

Segundo trabalho prático de implementação Sistema de reserva de assentos Segundo trabalho prático de implementação Sistema de reserva de assentos 1. Descrição do problema Computação Concorrente (MAB-117) 2016/2 Prof. Silvana Rossetto 1 DCC/IM/UFRJ 17 de novembro de 2016 Um

Leia mais

Simulador didático de testes de algoritmos de ordenação

Simulador didático de testes de algoritmos de ordenação UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA Simulador didático de testes de algoritmos de ordenação Nomes: Bruno Silva Guedes (159033) Matheus de Carvalho Proença (160184) Turma:

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 4: Programação Concorrente Diego Passos Últimas Aulas Processos Compostos por: Código (programa). Estado (memória, registradores). Em um sistema com multiprogramação:

Leia mais

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA) Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA) Análise Léxica A primeira fase da compilação Recebe os caracteres de entrada do programa e os converte em um fluxo de

Leia mais

Capítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais

Capítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais DCA-108 Sistemas Operacionais Capítulo 2 Luiz Affonso Guedes www.dca.ufrn.br/~affonso affonso@dca.ufrn.br Multiprogramação Luiz Affonso Guedes 1 Luiz Affonso Guedes 2 Conteúdo Caracterização de um SO Moderno

Leia mais

Engenharia de Software Aula 2.1 Introdução à Engenharia de Requisitos. Prof. Bruno Moreno

Engenharia de Software Aula 2.1 Introdução à Engenharia de Requisitos. Prof. Bruno Moreno Engenharia de Software Aula 2.1 Introdução à Engenharia de Requisitos Prof. Bruno Moreno bruno.moreno@ifrn.edu.br Engenharia de Requisitos É, talvez, o maior problema da indústria de SW; Está relacionada

Leia mais

RUP RATIONAL UNIFIED PROCESS

RUP RATIONAL UNIFIED PROCESS O que é RUP? É um metodologia para gerenciar projetos de desenvolvimento de software que usa a UML como ferramenta para especificação de sistemas. Ele é um modelo de processo híbrido Mistura elementos

Leia mais

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores 2013-2 Compilador para a Linguagem Cafezinho Especificação dos trabalhos: T2 (Geração da Representação Intermediária e Análise

Leia mais

Sistemas Distribuídos Aula 3

Sistemas Distribuídos Aula 3 Sistemas Distribuídos Aula 3 Aula passada Processos IPC Características Ex. sinais, pipes, sockets Aula de hoje Threads Kernel level User level Escalonamento Motivação: Servidor Web Considere Servidor

Leia mais

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches CES-11 Algoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra Ideia de Tarjan (1972) Durante a exploração em profundidade de um digrafo, podemos numerar seus vértices de

Leia mais

Fundamentos de Algoritmos (5175/31)

Fundamentos de Algoritmos (5175/31) UEM/CTC Departamento de Informática Curso: Ciência da Computação Professor: Flávio Rogério Uber Fundamentos de Algoritmos (5175/31) Material Original: Prof. Yandre Maldonado e Gomes da Costa (UEM/DIN)

Leia mais

Introdução INTRODUÇÃO AO SWEBOK. Origens do corpo de conhecimentos da Engenharia de Software: Introdução a Computação e Engenharia de Software

Introdução INTRODUÇÃO AO SWEBOK. Origens do corpo de conhecimentos da Engenharia de Software: Introdução a Computação e Engenharia de Software INTRODUÇÃO AO SWEBOK Introdução a Computação e Engenharia de Software Profa. Cynthia Pinheiro Introdução Origens do corpo de conhecimentos da Engenharia de Software: Engenharia da Computação Ciência da

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 12 - Threads e Concorrência em Java

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 12 - Threads e Concorrência em Java Aula 12 - Threads e Concorrência em Java Conteúdo Programático desta aula Aplicar os conceitos e threads, processos concorrentes e sincronização em pequenos programas. Aplicar e verificar os conceitos

Leia mais

Capítulo 7. Expressões e Sentenças de Atribuição

Capítulo 7. Expressões e Sentenças de Atribuição Capítulo 7 Expressões e Sentenças de Atribuição Introdução Expressões são os meios fundamentais de especificar computações em uma linguagem de programação Para entender a avaliação de expressões, é necessário

Leia mais

Quiz baseado em localização para Symbian OS

Quiz baseado em localização para Symbian OS Quiz baseado em localização para Symbian OS 1. Introdução Luis Valente lvalente@inf.puc-rio.br O objetivo do trabalho é criar uma demo de um jogo baseado em localização para telefone celular (Nokia S60).

Leia mais

TESTES DE SOFTWARE 1. Fundamentos sobre testes de software

TESTES DE SOFTWARE 1. Fundamentos sobre testes de software ENG SOFT - TESTES TESTES DE SOFTWARE 1. Fundamentos sobre testes de software A atividade de teste de software sempre foi considerada como um gasto de tempo desnecessário, uma atividade de segunda classe,

Leia mais

2.1 NesC Seguem alguns dos principais desafios impostos à linguagem NesC:

2.1 NesC Seguem alguns dos principais desafios impostos à linguagem NesC: 2 TinyOS e NesC O framework de programação mais utilizado em redes de sensores sem fio é composto pelo sistema operacional TinyOS [11] e pela linguagem de programação NesC [12]. A linguagem NesC foi definida

Leia mais

Programação: Vetores

Programação: Vetores Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia

Leia mais

Projeto de Algoritmos

Projeto de Algoritmos Projeto de Algoritmos Introdução aos Sistemas Computacionais Prof. Ernani Viriato de Melo / Reginaldo Costa http://www.ernani.eti.br http://reginaldofazu.blogspot.com 2º Semestre - 2008 Conceitos Básicos

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 6: Monitores, Troca de Mensagens e Deadlock Diego Passos Última Aulas Mecanismos de Exclusão Mútua Operações atômicas. Protocolos de controle de acesso. Spin-locks.

Leia mais

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1 Processos de Software Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1 Objetivos Apresentar modelos de processos de software Descrever três modelos genéricos de processo e quando

Leia mais

Sincronização e Comunicação entre Processos

Sincronização e Comunicação entre Processos Sincronização e Comunicação entre Processos Monitores/Semáforos Semáforos Mecanismos de sincronização nãoestruturados; Exige do desenvolvedor bastante cuidado, pois qualquer engano pode levar a problemas.

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

PRIMEIROS PASSOS COM PYTHON. Prof. Msc. Luis Filipe Alves Pereira 2015

PRIMEIROS PASSOS COM PYTHON. Prof. Msc. Luis Filipe Alves Pereira 2015 PRIMEIROS PASSOS COM PYTHON Prof. Msc. Luis Filipe Alves Pereira 2015 PRIMEIROS PASSOS COM PYTHON 02/47 O QUE É PYTHON? Python é uma linguagem de propósito geral, de alto nível e interpretada Python será

Leia mais

Teste Estrutural e de Mutação

Teste Estrutural e de Mutação Teste Estrutural e de Mutação no Contexto de Programas OO Ellen Francine Barbosa José Carlos Maldonado Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação (ICMC) Universidade

Leia mais

PROTÓTIPO PARA SUMARIZAÇÃO AUTOMÁTICA DE TEXTOS ESCRITOS EM LÍNGUA PORTUGUESA ALEXANDRE BUSARELLO JOYCE MARTINS

PROTÓTIPO PARA SUMARIZAÇÃO AUTOMÁTICA DE TEXTOS ESCRITOS EM LÍNGUA PORTUGUESA ALEXANDRE BUSARELLO JOYCE MARTINS PROTÓTIPO PARA SUMARIZAÇÃO AUTOMÁTICA DE TEXTOS ESCRITOS EM LÍNGUA PORTUGUESA ALEXANDRE BUSARELLO JOYCE MARTINS Roteiro Introdução Objetivos Fundamentação Teórica Especificação Implementação Operacionalidade

Leia mais

Linguagens de Programação

Linguagens de Programação Universidade Federal do Rio Grande do Norte Centro de Tecnologia Departamento de Computação e Automação Linguagens de Programação Professor Responsável: Luiz Affonso Henderson Guedes de Oliveira Prof.

Leia mais

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima Gerência de Projetos e Qualidade de Software Prof. Walter Gima 1 Plano de Ensino e Aprendizagem 2 3 Objetivos CONTEÚDO Se preparar para o inicio de um projeto Acompanhamento projeto Controles Métricas

Leia mais

Conceitos Básicos de Algoritmos

Conceitos Básicos de Algoritmos Conceitos Básicos de Algoritmos 35 TIPOS PRIMITIVOS Palavra-reservada: inteiro - define variáveis numéricas do tipo inteiro, ou seja, sem casas decimais Palavra-reservada: real - define variáveis numéricas

Leia mais

Gerência de recursos - escalonamento global. GERÊNCIA DE RECURSOS Escalonamento Global. Gerência de recursos - escalonamento global

Gerência de recursos - escalonamento global. GERÊNCIA DE RECURSOS Escalonamento Global. Gerência de recursos - escalonamento global GERÊNCIA DE RECURSOS Escalonamento Global Além de prover comunicação, recursos de acesso a rede, memória compartilhada, sistemas de arquivos distribuídos, um sistema operacional distribuído tem que poder

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 12 http://www.ic.uff.br/~bianca/engsoft2/ Aula 12-31/05/2006 1 Ementa Processos de desenvolvimento de software (Caps. 2, 3 e 4 do Pressman) Estratégias e técnicas de teste

Leia mais

SISTEMAS DIGITAIS (SD)

SISTEMAS DIGITAIS (SD) SISTEMAS DIGITAIS (SD) MEEC Acetatos das Aulas Teóricas Versão 4.0 - Português Aula N o 23: Título: Sumário: Máquinas de Estado Microprogramadas: Endereçamento Expĺıcito/Impĺıcito Projecto de máquinas

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

Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação. Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Organização e Arquitetura Básicas

Leia mais

Gerência de Projetos de Software. Prof. Dr. João Dovicchi INE / CTC / UFSC.

Gerência de Projetos de Software. Prof. Dr. João Dovicchi INE / CTC / UFSC. Prof. Dr. João Dovicchi INE / CTC / UFSC dovicchi@inf.ufsc.br http://www.inf.ufsc.br/~dovicchi Programa Projetos e Metodologias Tipos e abordagens Organização Estimativas de Esforço e Gerência de Riscos

Leia mais

Verificação e Validação

Verificação e Validação Verificação e Validação Sistemas possuem restrições de qualidade e confiabilidade Qualidade de sw: satisfação dos requisitos funcionais, de desempenho e normas explicitamente declarados. Redução de custos

Leia mais

JUnit. Facilitando o desenvolvimento e execução de testes unitários em código java. Peterson Rodrigues

JUnit. Facilitando o desenvolvimento e execução de testes unitários em código java. Peterson Rodrigues JUnit Facilitando o desenvolvimento e execução de testes unitários em código java. Peterson Rodrigues Roteiro Teste Unitário: O que? Por quê? Quando? Quem? O que testar? Teste Funcional: O que é? JUnit:

Leia mais

Projeto de Linguagem. Linguagens de Programação

Projeto de Linguagem. Linguagens de Programação Projeto de Linguagem Renato Ferreira Linguagens de Programação Linguagens são adotadas para preencher uma demada Facilitar uma aplicação outrora difícil/impossível Independente da qualidade da linguagem

Leia mais

Barramento. Prof. Leonardo Barreto Campos 1

Barramento. Prof. Leonardo Barreto Campos 1 Barramento Prof. Leonardo Barreto Campos 1 Sumário Introdução; Componentes do Computador; Funções dos Computadores; Estrutura de Interconexão; Interconexão de Barramentos Elementos de projeto de barramento;

Leia mais

Exercícios de Sistemas Operacionais 3 B (1) Gerência de Dispositivos de Entrada e Saída

Exercícios de Sistemas Operacionais 3 B (1) Gerência de Dispositivos de Entrada e Saída Nome: Exercícios de Sistemas Operacionais 3 B (1) Gerência de Dispositivos de Entrada e Saída 1. A gerência de dispositivos de entrada e saída é uma das principais e mais complexas funções de um sistema

Leia mais

Working 03 : Conceitos Básicos II

Working 03 : Conceitos Básicos II Universidade Federal do Espirito Santo Centro Tecnologico Working 03 : Conceitos Básicos II Objetivos: Dominar a construção de estruturas de seleção em C; Aperfeiçoarse na resolução de problemas, da primeira

Leia mais

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS Prof. Dr. Daniel Caetano 2014-1 DISCUSSÃO Visão Geral dos Paradigmas Quais os paradigmas mais comuns? Do que é composto um programa

Leia mais

COMPUTAÇÃO PARALELA E DISTRIBUÍDA

COMPUTAÇÃO PARALELA E DISTRIBUÍDA COMPUTAÇÃO PARALELA E DISTRIBUÍDA Aluno: Alessandro Faletti Orientadora: Noemi Rodriguez Introdução O objetivo inicial no projeto era aplicar a possibilidade de processamento em paralelo no sistema CSBase

Leia mais

ESTUDANTES SELECIONADOS PARA ENTREVISTA AUXÍLIO ESTUDANTIL 2015 EDITAL 38/15 Campus Pouso Alegre Dia 03/11 Terça- feira. Dia 04/11 Quarta-feira

ESTUDANTES SELECIONADOS PARA ENTREVISTA AUXÍLIO ESTUDANTIL 2015 EDITAL 38/15 Campus Pouso Alegre Dia 03/11 Terça- feira. Dia 04/11 Quarta-feira ESTUDANTES SELECIONADOS PARA ENTREVISTA AUXÍLIO ESTUDANTIL 2015 EDITAL 38/15 Campus Pouso Alegre Dia 03/11 Terça- feira 7202 Vitor Hugo Melo de Lima Licenciatura em Química 19h 6699 Michele do Nascimento

Leia mais

ESTRUTURAS CONDICIONAIS. Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza

ESTRUTURAS CONDICIONAIS. Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza ESTRUTURAS CONDICIONAIS Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza Estruturas de Controle ESTRUTURA SEQUENCIAL ESTRUTURA CONDICIONAL ESTRUTURA DE REPETIÇÃO 2 Estruturas Condicionais

Leia mais

Definindo melhor alguns conceitos

Definindo melhor alguns conceitos Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais de um thread/processo concorrendo por recursos Paralelismo uma aplicação é eecutada por um conjunto

Leia mais

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO Bacharelado em Sistemas de Informação. Processamento Paralelo Threads. Aluno: Wagner Palacio

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO Bacharelado em Sistemas de Informação. Processamento Paralelo Threads. Aluno: Wagner Palacio UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO Bacharelado em Sistemas de Informação Processamento Paralelo Threads Aluno: Wagner Palacio Turma: 3º período Professor: Giordano Cabral Recife, 29 de maio de 2012

Leia mais

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima Gerência de Projetos e Qualidade de Software Prof. Walter Gima 1 OBJETIVOS Compreender o processo de gerenciamento de qualidade e as principais atividades do processo de garantia, planejamento e controle

Leia mais

INFORMÁTICA APLICADA AULA 02 ALGORITMOS

INFORMÁTICA APLICADA AULA 02 ALGORITMOS UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: Bacharelado em Ciências e Tecnologia INFORMÁTICA APLICADA AULA 02 ALGORITMOS Profª ª Danielle Casillo ALGORITMOS Um algoritmo é uma sequência de instruções

Leia mais

Capítulo 2 Processos e Threads

Capítulo 2 Processos e Threads Capítulo 2 Processos e Threads 2.1 Processos 2.2 Threads 2.3 Comunicação interprocesso 2.4 Problemas clássicos de IPC 2.5 Escalonamento 1 Processos O Modelo de Processo Multiprogramação de quatro programas

Leia mais

Algoritmo: Definição. Algoritmo. O que é Lógica? Lógica de Programação. Mas e a Lógica de Programação?

Algoritmo: Definição. Algoritmo. O que é Lógica? Lógica de Programação. Mas e a Lógica de Programação? : Definição Introdução a s Prof. Araken Medeiros araken@ufersa.edu.br Um algoritmo pode ser definido como uma sequência de passos finitos, que se executados em um determinado período de tempo, atingirá

Leia mais

INTRODUÇÃO AO ARDUINO DUE, CANAL DIGITAL, FUNÇÃO DELAY

INTRODUÇÃO AO ARDUINO DUE, CANAL DIGITAL, FUNÇÃO DELAY INTRODUÇÃO AO ARDUINO DUE, CANAL DIGITAL, FUNÇÃO DELAY INTRODUÇÃO A Plataforma Arduino é considerada plataforma aberta, ou seja, qualquer pessoa pode efetuar uma melhoria em um código, biblioteca e disponibilizá-la

Leia mais

Aula de hoje. Comandos. Comandos simples. Comandos. Comandos de controle. Bloco de comandos. SCC Introdução à Programação para Engenharias

Aula de hoje. Comandos. Comandos simples. Comandos. Comandos de controle. Bloco de comandos. SCC Introdução à Programação para Engenharias SCC 124 - Introdução à Programação para Engenharias Comandos Professor: André C. P. L. F. de Carvalho, ICMC-USP Pos-doutorando: Isvani Frias-Blanco Monitor: Henrique Bonini de Britto Menezes 1 Aula de

Leia mais

Aula 6: Comunicação entre processos. Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela

Aula 6: Comunicação entre processos. Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela Aula 6: Comunicação entre processos Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela (-- motivação --) Processos em execução no sistema operacional podem ser: Independentes:

Leia mais

OpenMP: Variáveis de Ambiente

OpenMP: Variáveis de Ambiente Treinamento OpenMP C/C++ 1 TREINAMENTO OpenMP C/C++ Módulo 1 Computação de Alto Desempenho Módulo 2 OpenMP: Construtores Paralelos Módulo 3 OpenMP: Diretivas de sincronização Módulo 4 OpenMP: Funções de

Leia mais

Prof. Esp. Fabiano Taguchi

Prof. Esp. Fabiano Taguchi UML Prof. Esp. Fabiano Taguchi http://fabianotaguchi.wordpress.com fabianotaguchi@hotmail.com UML COMPETÊNCIA: Conhecer e desenvolver estudos de caso usando modelagem orientada a objeto. HABILIDADE: Conhecer

Leia mais

TS03. Teste de Software ESTÁGIOS DO TESTE DE SOFTWARE. COTI Informática Escola de Nerds

TS03. Teste de Software ESTÁGIOS DO TESTE DE SOFTWARE. COTI Informática Escola de Nerds TS03 Teste de Software ESTÁGIOS DO TESTE DE SOFTWARE COTI Informática Escola de Nerds Teste do Desenvolvedor O Teste do Desenvolvedor denota os aspectos de design e implementação de teste mais apropriados

Leia mais

Requisitos de Software

Requisitos de Software Requisitos de Software Engenharia de requisitos Estabelece os serviços que o cliente requer de um sistema e as restrições sob as quais tal sistema operará e será desenvolvido. Tais serviços e restrições

Leia mais

Aula 23 Testes 3. Alessandro Garcia Leonardo da Silva Sousa OPUS Group/LES/DI/PUC-Rio Dezembro 2016

Aula 23 Testes 3. Alessandro Garcia Leonardo da Silva Sousa OPUS Group/LES/DI/PUC-Rio Dezembro 2016 Aula 23 Testes 3 Alessandro Garcia Leonardo da Silva Sousa OPUS Group/LES/DI/PUC-Rio Dezembro 2016 Slides adaptados de: Staa, A.v. Notas de Aula em Programacao Modular; 2008. Especificação Objetivo dessa

Leia mais

Arquitetura e Organização de Computadores. Prof. Marciano dos Santos Dionizio

Arquitetura e Organização de Computadores. Prof. Marciano dos Santos Dionizio Arquitetura e Organização de Computadores Prof. Marciano dos Santos Dionizio Arquitetura e Organização de Computadores Quando falamos de arquitetura de computadores é possível que inicialmente pensemos

Leia mais

UML. Modelando um sistema

UML. Modelando um sistema UML Modelando um sistema Fases do desenvolvimento de Software Análise de requisitos Análise Projeto Programação Análise de Requisitos Esta fase captura as intenções e necessidades dos usuários do sistema

Leia mais

TORNEIO RIO DE JANEIRO 2016 ADULTO MASCULINO

TORNEIO RIO DE JANEIRO 2016 ADULTO MASCULINO TORNEIO RIO DE JANEIRO 2016 ADULTO MASCULINO Classificação Final 1 colocado: Botafogo F.R. 2 colocado: Angra Basquete 3 colocado: Minas Tênis Clube 4º colocado: ABIG/Jequiá I.C. 5º colocado: Tijuca T.C.

Leia mais

Programação Orientada a Objetos. Manipulação de Exceções

Programação Orientada a Objetos. Manipulação de Exceções Programação Orientada a Objetos Manipulação de Exceções Cristiano Lehrer, M.Sc. Introdução à Manipulação de Exceções (1/2) Em uma linguagem sem manipulação de exceção: Quando ocorre uma exceção, o controle

Leia mais

Categoria Faster - FST. Categoria Professional PRO 6.5. Categoria Professional PRO 7.5

Categoria Faster - FST. Categoria Professional PRO 6.5. Categoria Professional PRO 7.5 Categoria Faster - FST 12/05/2016 - Tempos válidos para a categoria - ABAIXO de 06.499s NÃO houve participantes nessa categoria Categoria Professional 6.5 - PRO 6.5 12/05/2016 - Tempos válidos para a categoria

Leia mais

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE DEPARTAMENTO DE INFORMÁTICA E MATEMÁTICA APLICADA. DIM0320 Algoritmos e Programação de Computadores

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE DEPARTAMENTO DE INFORMÁTICA E MATEMÁTICA APLICADA. DIM0320 Algoritmos e Programação de Computadores UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE DEPARTAMENTO DE INFORMÁTICA E MATEMÁTICA APLICADA DIM0320 Algoritmos e Programação de Computadores #VARIÁVEIS #TIPOS DE DADOS E L I EZ I O S O A R ES E L I EZ

Leia mais

Conceitos básicos de programação

Conceitos básicos de programação Para aprender uma linguagem de programação podemos começar por conhecer os vocábulos ou símbolos que formam o seu léxico e depois aprender como esses vocábulos integram as instruções (frases) que compõe

Leia mais

Gerência de Dispositivos. Adão de Melo Neto

Gerência de Dispositivos. Adão de Melo Neto Gerência de Dispositivos Adão de Melo Neto 1 Gerência de Dispositivos Introdução Acesso ao Subsistema de E/S Subsistema de E/S Device Drivers Controladores Dispositivos de E/S Discos Magnéticos Desempenho,

Leia mais

PROVAS DE ADMISSÃO PARA O ANO LETIVO 15/16 PROVA DE APTIDÃO MUSICAL - ESCRITA NOME DO CANDIDATO

PROVAS DE ADMISSÃO PARA O ANO LETIVO 15/16 PROVA DE APTIDÃO MUSICAL - ESCRITA NOME DO CANDIDATO Dia: 8 de junho de 2015 Hora: 18,00 horas Professor: Carla Sabino Sala: 1 1 035 Ana Júlia Tavares de Oliveira 014 Ana Sofia Pereira Leal 001 Beatriz Pacheco Festas 011 Bruno Tomás Silva Ribeiro 099 Daniel

Leia mais