Correção de Software com Verificação de Modelos
|
|
- Luciana Ávila Miranda
- 8 Há anos
- Visualizações:
Transcrição
1 Correção de Software com Verificação de Modelos Aline Maria Santos Andrade Departamento de Ciência da Computação (DCC) Laboratório de Sistemas Distribuídos (LaSiD) Universidade Federal da Bahia (UFBA)
2 Sumário Motivação Correção de Software Conceito de Métodos Formais Técnicas de Verificação Formal Verificação de Modelos Conceitos A ferramenta SPIN
3 Engenharia? de Software Não existe um modelo universalmente aceito para desenvolver software As técnicas utilizadas normalmente são derivadas de uma abordagem informal adotada no processo, não incluem teorias e formalismos essenciais a um desenvolvimento científico Ambientes (ferramentas) existentes em geral não possuem uma fundamentação teórica. Difícil garantir a confiabilidade dos software Certificação e garantia? Aline Maria Santos Andrade (aline@ufba.br)
4 Engenharia de Software Incorporou novos paradigmas e metodologias sistematização do processo de desenvolvimento melhoria da confiabilidade do software produzido. Embora os processos sistemáticos de desenvolvimento de software aumentem o grau de confiabilidade, a validação de software é feita de maneira informal ou semi formal e não garantem com precisão que o software atende aos requisitos desejados. Em sistemas que envolvem riscos, como sistema de monitoração de pacientes, controle de tráfego aéreo, etc é necessário um processo de validação mais seguro de maneira que possamos garantir a correção do software gerado. Aline Maria Santos Andrade (aline@ufba.br)
5 O que são métodos formais Utilização de modelos matemáticos para representar o sistema Métodos matemáticos de prova para verificação Adicionar precisão, auxiliar no entendimento e raciocinar sobre propriedades de um projeto Certificação/Garantia! Engenharia Pode ser comparado à forma com que cálculo estrutural é usado no projeto de construções, mecânica computacional de fluídos é usada no projeto de aeronaves, etc
6 Validação de Software Simulação Teste Verificação
7 Correção de Software Aplicação Formal => Verificação Formal => Correção Requisitos Não Formal => Testes => Confiável Confiabilidade i = 0 Especificação i i= i+1 Refinamento Confiável / Correta Testes / Simulação / Verificação Máquina Virtual Testes Aline Maria Santos Andrade (aline@ufba.br)
8 Verificação Um passo de verificação pode cobrir todo possível comportamento do sistema Verificação antes da implementação diminui o custo $$!! É especialmente importante quando o comportamento é complexo. Aline Maria Santos Andrade (aline@ufba.br)
9 Especificação formal Linguagem formal Verificação Refinamento Geração automática de código Propriedades desejadas consistência correção completude Aline Maria Santos Andrade
10 Desenvolvimento formal de software Especificação formal do problema B, Z, VDM, CSP, LOTOS, Pi-Calculus, SPIN, SMV, UPPAAL... Validação Simulação Verificação Refinamento Geração automática de código Aline Maria Santos Andrade
11 Tipos de Sistemas Sequencial Concorrente Distribuído Móvel Transformacional Reativo Aline Maria Santos Andrade
12 Requisitos Sistemas seqüenciais funcionalidade Sistemas concorrentes concorrência funcionalidade Sistemas Reativos necessitam interagir com o ambiente frequentemente e frequentemente não terminam. Portanto, não podem ser modelados pelo seu comportamento de entrada/saída. Aline Maria Santos Andrade (aline@ufba.br)
13 Técnicas de verificação formal Provadores de teoremas Provam propriedades em uma teoria sobre o sistema Verificadores de modelos (Model checking) Verificam se certas propriedades valem em um modelo da aplicação Sistemas de estados finitos As abordagens se complementam Aline Maria Santos Andrade (aline@ufba.br)
14 Provador de Teoremas Especificar: O sistema (em algum nível adequado de abstração) Propriedades requeridas do sistema Suposições (restrições de ambiente, usuário, etc) Teorias sobre os tipos de dados envolvidos Provar: Teorias + Suposições + Sistema -- Requisitos Variação: Provar que a implementação é um refinamento da especificação Funciona melhor em sistemas com intenso tratamento de dados Aline Maria Santos Andrade (aline@ufba.br)
15 Verificador de Modelos Especificar Modelo do sistema Estrutura de Kripke Propriedades em uma linguagem lógica Lógica temporal Provar que as propriedades são válidas no modelo do sistema modelo do sistema = propriedades Algoritmo faz varredura no modelo do sistema (sistema de transição) Aline Maria Santos Andrade (aline@ufba.br)
16 Estrutura de Kripke Estado - é uma descrição instantânea do sistema que captura os valores das variáveis em um particular instante de tempo. Transições entre estados representam as ações do sistema. Estrutura de Kripke - conjunto de estados, conjunto de transições entre estados e uma função que rotula cada estado com um conjunto de propriedades que são verdadeiras naquele estado. Aline Maria Santos Andrade (aline@ufba.br)
17 Verificação de Modelos Dado uma estrutura de Kripke M = (S,R,L) que representa um sistema concorrente e uma fórmula na lógica temporal f que expressa alguma especificação desejada, encontre todos os estados em S que satisfaz f: {s S M, s = f} Aline Maria Santos Andrade (aline@ufba.br)
18 Verificação de modelos Estados definidos pelas variáveis do sistema, que assumem valores dentro de um conjunto finito de valores Um componente do sistema unfolding modelo de Kripke ----> sistema de transição Vários componentes produto síncrono (ou assíncrono) do sistema de transição de cada componente
19 1 ev1 C=true/act1 3 ev2 act2 2 C Kripke estendida (guardas) (Máquina de estados finita) Fonte: Prof E. H. Haeusler - PUC-Rio ev2 act2 2c act2 2c 3 1 act2 2c ev2 act1 ev2 3 act ev1 act2 2c ev2 3 ev2 act2 2c 3 act ev1 ev1 act2 2c ev2 ev2 3 act2 2c act1 3 ev1 act2 2c ev2 Sistema de transição (unfolding da estrutura de Kripke 3
20 Produto síncrono / assíncrono Combinar os modelos dos componentes do sistema ---> autômato global Produto cartesiano dos autômatos representando os componentes (estado global é um vetor construído a partir dos diferentes estados dos componentes) Componentes se sincronizam ---> produto síncrono ---> subconjunto de transições do produto cartesiano definido através de um conjunto de sincronização Explosão de estados!
21 Produto assíncrono X = Explosão de estados!!!
22 Otimizações Explosão de estados ocorre quando se resolve representar em memória todos os estados do autômato Symbolic Model Checking representa estados e transições simbolicamente ao invés de explicitamente BDD - Diagrama de decisões binárias utilizados para representar simbolicamente conjunto de estados de um autômato On the Fly Model Checking
23 Um Programa de Exclusão Mútua P = m: cobegin P 0 P 1 coend m S 0 (V,PC) pc = m pc 0 = pc 1 = Nenhuma restrição é imposta ao valor de turn P 0 :: l 0 : While True do NC 0 : wait(turn = 0) CR 0 : turn := 1; end while; l 0 P 1 :: l 1 : While True do NC 1 : wait(turn = 1) CR 1 : turn := 0; end while; l 1 Aline Maria Santos Andrade (aline@ufba.br)
24 Turn =0, Turn =0 l 0,l 1 Turn =1, Turn =1 l 0,l 1 Garantido exclusão mútua. Não garante ausência de starvation. Turn =0 l 0,NC 1 Turn =0 NC 0,l 1 Turn =1 l 0,NC 1 Turn =1 NC 0,l 1 Turn =0 NC 0,NC 1 Turn =0 CR 0,l 1 Turn =1 l 0,CR 1 Turn =1 NC 0,NC 1 Turn =0 CR 0,NC 1 Turn =1 NC 0,CR 1 Estados alcançáveis da estrutura de Kripke para o exemplo de exclusão mútua
25 Verificação de Modelos Usualmente não há necessidade de teorias auxiliares Normalmente, as únicas suposições dizem respeito às propriedades dinâmicas do sistema (safety, fairness, liveness) Funciona melhor com sistemas voltados ao controle e com um pequeno espaço de estados Aline Maria Santos Andrade (aline@ufba.br)
26 Lógica temporal Operadores modais de tempo (G) sempre (F) em algum tempo futuro Relativos a mundos possíveis (estrutura de kripke)
27 Mundos Possíveis (Kripke) - A verdade de uma proposição é verificada em relação a um mundo. - Os mundos estão relacionados ao tempo (lógica temporal) - Mundos podem ser vistos como estados locais/globais. - Estrutura ramificada, ou, linear de tempo. (obs: P P ) P P EP P,Q,Q P,Q,P P,Q,Q P,Q,P P,Q,P P,Q,P P,Q,P P,Q,P P,Q,P P,Q,EP P,Q,P P,Q P,Q P,Q P,Q P,Q P,Q P,Q P,Q P,Q P,Q P,Q P,Q Fonte: Prof E. H. Haeusler - PUC-Rio EP Eventualmente P P
28 Lógicas temporais Lógica temporal ramificada (CTL - Computational Tree Logic) CTL apresenta quantificação sobre caminhos e sobre estados AG(p) : p é verdade em todo estado ao longo de cada caminho AF(p) : p é verdade em algum estado ao longo de cada caminho EG(p) : p é verdade em todo estado ao longo de algum caminho EF(p) : p é verdade em algum estado ao longo de algum caminho Lógica temporal linear (LTL) único caminho de computação
29 TL Gp Fp GFp FGp p p p p p p p p p p p p p p p p p p p p TL p p AGp AFp AGAFp Não existe Existem também fórmulas em CTL que não são expressáveis em LTL
30 Sistemas concorrentes Safety - algo ruim nunca acontece ausência de deadlock exclusão mútua sempre a resposta dada é correta Liveness - algo bom acontece se um processo solicita um recurso eventualmente ele será atendido se uma resposta é solicitada então ela será fornecida Aline Maria Santos Andrade (aline@ufba.br)
31 Alarme de Cofre sound alarm count = = 3 /count = 0 count attempts enter code code entered check code invalid code/ count ++ delay timeout unlock door valid code/count = 0 Fonte: Prof E. H. Haeusler - PUC-Rio
32 - Verificando AG(enter_code & valid_code ===> AF(unlock_door)) resulta em verdade - Verificando AG(enter_code ===> AF(unlock_door)) resulta no seguinte caminho de computação como contra-exemplo enter code check code count attempts sound alarm 3 times enter code check code count attempts 3 times Fonte: Prof E. H. Haeusler - PUC-Rio
33 SPIN Ferramenta para analisar a consistência lógica de sistemas concorrentes, especialmente protocolos de comunicação de dados. (free) Linguagem Promela Permite criação dinâmica de processos concorrentes Comunicação via canal pode ser síncrona ou assíncrona Aline Maria Santos Andrade (aline@ufba.br)
34 SPIN Dado um modelo do sistema especificado em Promela, SPIN pode fazer: simulações verificação online de propriedades de correção do sistema verificação de ausência de deadlocks, código não executável, etc verificação de propriedades de correção (safety e liveness) expressas em lógica temporal linear (LTL) On the Fly Model Checking Aline Maria Santos Andrade (aline@ufba.br)
35 Verificação On the fly A propriedade verificada é traduzida em um autômato Este autômato é utilizado para guiar a criação do grafo de transição de estados (modelo do sistema) Isto evita a necessidade de se construir grandes pedaços ou todo o grafo de estados do modelo do sistema
36 Autômatos Finitos Sobre Palavras Infinitas Em muitos sistemas concorrentes a computação não pára durante uma execução normal Nestes casos, a computação é modelada como uma sequência infinita de estados Estas computações podem ser representadas através de autômatos finitos sobre palavras infinitas
37 Autômatos Büchi Um autômato Büchi tem a mesma estrutura que um autômato sobre palavras finitas Estados finais são chamados de estados de aceitação Considere inf(ρ) como o conjunto de estados que aparecem infinitamente freqüentemente em uma execução ρ Uma execução ρ de um autômato Büchi sobre uma palavra infinita é aceita se e somente se inf(ρ) F
38 Exemplo q1 b q2 b a a Se interpretamos o grafo acima como um autômato Büchi, a linguagem aceita será: (b*a) ω a palavra (ab)* (sequência infinita de a s e b s alternando, começando por a) é aceita
39 Verificação de Modelos usando Autômatos Autômatos finitos podem ser usados para modelar sistemas concorrentes de execução infinita Uma vantagem de se utilizar autômatos para verificação de modelos é a possibilidade de usar a mesma forma de representação para o sistema modelado e para as propriedades
40 Convertendo estruturas Kripkes em autômatos s 0 s 1 {p,q} i {p} {p},q} {p} s 0 s 1 s 2 {q} {p,q} {q} {p,q} s 2
41 Turn =0, 1 Turn =1, 2 Turn =0 l 0,l 1 Turn =1 l 0,l 1 4 Turn =0 l 0,NC 1 Turn =0 NC 0,l Turn =1 Turn =1 l 0,NC 1 NC 0,l 1 7 Turn =0 NC 0,NC 1 Turn =0 CR 0,l 1 5 Turn =1 l 0,CR 1 Turn =1 NC 0,NC 1 Turn =0 CR 0,NC 1 Turn =1 NC 0,CR 1 Estados alcançáveis da estrutura de Kripke para o exemplo de exclusão mútua
42 Turn=0,, i Turn=1,, 1 2 Turn=1, l 0,l 1 Turn=1, l 0, l Turn=0, CR 0, l Turn=1, l Turn=1, NC 0, l 1 1 0, NC Turn=1, NC 0, l 1
43 Especificações como autômatos Considere L(A) a linguagem do autômato A que representa a estrutura kripke A especificação pode ser dada como um autômato S sobre o mesmo alfabeto de A
44 Exemplo de Especificação como Autômato (CR 0 CR 1 ) (CR 0 CR 1 ) true Exclusão mútua CR 0 true CR 0 Liveness: o processo P 0 entrará na região crítica
45 Verificação de Modelos usando Autômatos Considere L(A) a linguagem do autômato A que representa a estrutura kripke Considere L(S) a linguagem do autômato que representa a especificação S O sistema A satisfaz S quando: L(A) L(S) L(A) L(S) =
46 Algoritmo de Verificação de Modelos O sistema modelado é convertido em um autômato Büchi A O autômato Büchi S é gerado a partir da negação da especificação ϕ Se a interseção A S é vazia a especificação é satisfeita Senão um contra-exemplo é exibido
47 Algoritmo de Verificação de Modelos On the Fly Constrói-se inicialmente o autômato de S Este autômato é usado para dinamicamente guiar a construção do autômato do sistema A, ao mesmo tempo em que a interseção é computada Desta forma é possível encontrar um contra-exemplo ou garantir a satisfatibilidade sem precisar construir todo autômato A
48 Promela PROMELA (PROcedural MEta LAnguage) é uma linguagem de especificação cuja sintaxe é baseada em: C CSP (canais para troca de mensagens) Comandos Guardados (controle de fluxo) Não determinismo Utilizada pelo SPIN para especificação do sistema Permite abstrações de protocolos (ou sistemas distribuídos em geral) suprimindo detalhes que não são relacionados para a interação entre processos
49 Promela Programas em Promela consistem de: Processos - são objetos globais que especificam comportamento Canais e variáveis - podem ser declaradas globalmente ou localmente dentro de um processo; canais podem ser síncronos ou assíncronos. Definem o ambiente em que o processo executa. Aline Maria Santos Andrade (aline@ufba.br)
50 Problema dos filósofos 5 filósofos Uma mesa circular com 5 cadeiras rotuladas cada uma com o nome do filósofo À esquerda de cada filósofo tem um garfo e no meio da mesa uma tigela de macarrão, que é constantemente preenchida Para comer o macarrão, o filósofo pega o garfo da esquerda e depois o da direita Após o filósofo comer o macarrão, ele deve deitar os dois garfos na mesa Aline Maria Santos Andrade (aline@ufba.br)
51 Aline Maria Santos Andrade
52 chan garfo[5] = [0] of {mtype}; mtype = {wait, signal}; proctype Garfo(int id){ do :: garfo[id]!wait -> proctype filosofo(int id){ pensando: do ::skip -> faminto: garfo[id]?wait; /*tenta adquirir garfo da esquerda fica bloqueado caso o garfo tenha sido adquirido*/ deadlock: garfo[(id+1)%5]?wait; /*tenta adquirir garfo da direita*/ comendo: skip; garfo[id]!signal; /*cede garfo da esquerda*/ garfo[(id+1)%5]!signal; /*cede garfo da direita*/ } garfo[id]?signal od } od Aline Maria Santos Andrade (aline@ufba.br)
53 init{ } atomic{ } run filosofo(0); run filosofo(1); run filosofo(2); run filosofo(3); run filosofo(4); run Garfo(0); run Garfo(1); run Garfo(2); run Garfo(3); run Garfo(4); Aline Maria Santos Andrade (aline@ufba.br)
54 #define f1 #define f2 #define f3 #define f4 #define f5 /* * Formula As Typed: <> (f1 && f2 && f3 && f4 && f5) */ never { /* (<> (f1 && f2 && f3 && f4 && f5)) */... pan: claim violated! (at depth 550)... A verificação aponta um erro indicando que a propriedade não é mantida, ou seja, existe a possibilidade do sistema entrar em deadlock. O Spin salva a seqüência na qual o erro foi detectado em arquivo.trail. É possível, então, realizar uma simulação desta seqüência na tentativa de identificar as possíveis causas para a violação da propriedade. Aline Maria Santos Andrade (aline@ufba.br)
55 Extensão de Promela Extensão de Promela para especificar sistemas de agentes móveis trabalho realizado no LaSiD/UFBA Permite a utilização do ambiente SPIN para a simulação e verificação de sistemas de agentes móveis
56 Ferramentas UPPAAL Verificador de modelos para sistemas de tempo real Especificação: autômato com tempo Lógica temporal: dialeto de CTL Outras ferramentas SMV KRONOS HYTECH
57 Casos famosos de software complexos que não funcionaram a contento Explosão do foguete Ariadne (projeto europeu) poucos segundos após seu lançamento devido a falha de programação. Sistema de triagem/controle de bagagem do aeroporto internacional de Denver (EUA) atrasou a inauguração do aeroporto. Custo do sistema (193 milhões $$ ) Inauguração estava prevista para Out/1993 Em Junho/1994 o sistema ainda não estava funcionando, mas custava $$!! No começo de 1995 um controle MANUAL de bagagem foi instalado para que o aeroporto pudesse ser inaugurado (com atraso de mais de um ano). O Therac-25, um equipamento de radioterapia controlado por computador, aplicou doses fatais de radiação em alguns pacientes de câncer. Quando decidiram testar o subsistema de desligamento de emergência da Sizewell-B, uma usina nuclear na Inglaterra, este falhou em mais de 50% das vezes. Não conseguiram encontrar a razão da falha nas linhas de código.
(Model Checking) Estes slides são baseados nas notas de aula da Profa. Corina
Verificação de Modelos (Model Checking) Estes slides são baseados nas notas de aula da Profa. Corina Cîrstea Lista de Leitura para a Parte Teórica M. Huth and M. Ryan, Logic in Computer Science Modelling
Leia maisSistemas Operacionais
AULA 09 Sincronização de Processos - II Monitores Conforme comentamos, o uso equivocado dos semáforos pode levar a uma situação de deadlock, por isso devemos tomar cuidado ao programar utilizando este
Leia maisSincronização e Comunicação entre Processos. Adão de Melo Neto
Sincronização e Comunicação entre Processos Adão de Melo Neto 1 INTRODUÇÃO Em um sistema multitarefa os processos alternam sua execução segundo critérios de escalonamento estabelecidos pelo sistema operacional.
Leia maisNa medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.
1 Introdução aos Sistemas de Informação 2002 Aula 4 - Desenvolvimento de software e seus paradigmas Paradigmas de Desenvolvimento de Software Pode-se considerar 3 tipos de paradigmas que norteiam a atividade
Leia maisMetodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi
Metodologias de Desenvolvimento de Sistemas Analise de Sistemas I UNIPAC Rodrigo Videschi Histórico Uso de Metodologias Histórico Uso de Metodologias Era da Pré-Metodologia 1960-1970 Era da Metodologia
Leia maisSumário. Deadlock. Definição. Recursos. M. Sc. Luiz Alberto lasf.bel@gmail.com
Sumário Condições para Ocorrência de Modelagem de Evitando deadlock Algoritmo do banqueiro M. Sc. Luiz Alberto lasf.bel@gmail.com Aula - SO 1 Definição Um conjunto de N processos está em deadlock quando
Leia maisTabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008
Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,
Leia maisSistemas Operacionais
Sistemas Operacionais Aula 11 Sincronização de Processos Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso
Leia maisTabela de roteamento
Existem duas atividades que são básicas a um roteador. São elas: A determinação das melhores rotas Determinar a melhor rota é definir por qual enlace uma determinada mensagem deve ser enviada para chegar
Leia maisUML - Unified Modeling Language
UML - Unified Modeling Language Casos de Uso Marcio E. F. Maia Disciplina: Engenharia de Software Professora: Rossana M. C. Andrade Curso: Ciências da Computação Universidade Federal do Ceará 24 de abril
Leia maisAutómatos Finitos Determinísticos
Ficha 2 Autómatos Finitos Determinísticos 2.1 Introdução Se olharmos, de forma simplificada, para um computador encontramos três componentes principais: a) A unidade de processamento central b) As unidades
Leia maisUNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação
SOFT DISCIPLINA: Engenharia de software AULA NÚMERO: 08 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir conceitos relacionados a modelos e especificações. Nesta aula
Leia maisBancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info
Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com Última atualização: 20.03.2013 Conceitos Banco de dados distribuídos pode ser entendido como uma coleção de múltiplos bds
Leia maisAlgoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br
(Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução
Leia maisPLANOS DE CONTINGÊNCIAS
PLANOS DE CONTINGÊNCIAS ARAÚJO GOMES Capitão SC PMSC ARAÚJO GOMES defesacivilgomes@yahoo.com.br PLANO DE CONTINGÊNCIA O planejamento para emergências é complexo por suas características intrínsecas. Como
Leia maisA lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.
INTRODUÇÃO A lógica de programação é extremamente necessária para as pessoas que queiram trabalhar na área de programação, seja em qualquer linguagem de programação, como por exemplo: Pascal, Visual Basic,
Leia maisEngenharia de Software: Introdução. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes
Engenharia de Software: Introdução Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes Programa 1. O processo de engenharia de software 2. UML 3. O Processo Unificado 1. Captura de requisitos 2.
Leia maisProgramação de Sistemas para Tempo Real Capítulo 1. Luiz Affonso Guedes DCA-CT-UFRN 2003.1
Programação de Sistemas para Tempo Real Capítulo 1 Luiz Affonso Guedes DCA-CT-UFRN 2003.1 Conteúdo Programático Capítulo 1: Introdução aos Sistemas de Tempo Real Definição, caracterização e classificação
Leia maisDiagrama de transição de Estados (DTE)
Diagrama de transição de Estados (DTE) O DTE é uma ferramenta de modelação poderosa para descrever o comportamento do sistema dependente do tempo. A necessidade de uma ferramenta deste tipo surgiu das
Leia maisEngenharia de Requisitos
Engenharia de Requisitos Introdução a Engenharia de Requisitos Professor: Ricardo Argenton Ramos Aula 08 Slide 1 Objetivos Introduzir a noção de requisitos do sistema e o processo da engenharia de requisitos.
Leia maisExtração de Requisitos
Extração de Requisitos Extração de requisitos é o processo de transformação das idéias que estão na mente dos usuários (a entrada) em um documento formal (saída). Pode se entender também como o processo
Leia maisModelagemde Software Orientadaa Objetos com UML
Modelagemde Software Orientadaa Objetos com UML André Maués Brabo Pereira Departamento de Engenharia Civil Universidade Federal Fluminense Colaborando para a disciplina CIV 2802 Sistemas Gráficos para
Leia maisSistemas Distribuídos: Conceitos e Projeto Introdução a Tolerância a Falhas
Sistemas Distribuídos: Conceitos e Projeto Introdução a Tolerância a Falhas Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.ufma.br
Leia maisEngenharia de Sistemas Computacionais
Engenharia de Sistemas Detalhes no planejamento UNIVERSIDADE FEDERAL DE ALAGOAS Curso de Ciência da Computação Engenharia de Software I Prof. Rômulo Nunes de Oliveira Introdução Na aplicação de um sistema
Leia maisDeadlocks. Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO
Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Dispositivos e recursos são compartilhados a todo momento: impressora, disco, arquivos,
Leia maisProcessos e Threads (partes I e II)
Processos e Threads (partes I e II) 1) O que é um processo? É qualquer aplicação executada no processador. Exe: Bloco de notas, ler um dado de um disco, mostrar um texto na tela. Um processo é um programa
Leia maisDesenvolvimento 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 2009 Profa. Dra. Itana Gimenes RUP: Artefatos de projeto Modelo de Projeto: Use-Case Realization-projeto
Leia maisEngenharia de Software: conceitos e aplicações. Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com
Engenharia de Software: conceitos e aplicações Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com 1 Objetivos da aula Apresentar os conceitos de Engenharia de Software e explicar a sua importância.
Leia maisEngenharia de Software. Parte I. Introdução. Metodologias para o Desenvolvimento de Sistemas DAS 5312 1
Engenharia de Software Parte I Introdução Metodologias para o Desenvolvimento de Sistemas DAS 5312 1 Mitos do Desenvolvimento de Software A declaração de objetivos é suficiente para se construir um software.
Leia maisAula 2 Modelagem de Sistemas. Introdução Modelo de Base Lógica de 1ª Ordem. Concorrentes
Aula 2 Modelagem de Sistemas Introdução Modelo de Base Lógica de 1ª Ordem Concorrentes 1 Aula 2 Modelagem de Sistemas Introdução Modelo de Base Lógica de 1ª Ordem Concorrentes 2 Constituição dos Sistemas
Leia maisResumo das Interpretações Oficiais do TC 176 / ISO
Resumo das Interpretações Oficiais do TC 176 / ISO Referência RFI 011 Pergunta NBR ISO 9001:2000 cláusula: 2 Apenas os termos e definições da NBR ISO 9000:2000 constituem prescrições da NBR ISO 9001:2000,
Leia maisAMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS
UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS Orientando: Oliver Mário
Leia maisNomes e Endereçamento. Nomes e Endereçamento. Paradigmas em Sistemas Distribuídos. Paradigmas em Sistemas Distribuídos
Paradigmas em Sistemas Distribuídos Paradigmas em Sistemas Distribuídos Nomes e Endereçamento Troca de Mensagens Operações emota Comunicação em Grupo Time e Clocks Sincronismo Ordenação Coordenação Consistência
Leia maisINTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO
Capítulo 1 INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO 1.1 Histórico de Linguagens de Programação Para um computador executar uma dada tarefa é necessário que se informe a ele, de uma maneira clara, como ele
Leia maisIA: Problemas de Satisfação de Restrições. Prof. Msc. Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br
IA: Problemas de Satisfação de Restrições Prof. Msc. Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br Introdução Um PSR é definido por um conjunto de variáveis X 1, X 2,..., X n, e por um conjunto de restrições,
Leia maisRequisitos de Software. Teresa Maciel DEINFO/UFRPE
Requisitos de Software Teresa Maciel DEINFO/UFRPE 1 Requisito de Software Características que o produto de software deverá apresentar para atender às necessidades e expectativas do cliente. 2 Requisito
Leia maisEngenharia de Software 01 - Introdução. Márcio Daniel Puntel marciopuntel@ulbra.edu.br
Engenharia de Software 01 - Introdução Márcio Daniel Puntel marciopuntel@ulbra.edu.br Engenharia de Software Nações desenvolvidas dependem de software; Cada vez mais sistemas são controlados por software;
Leia maisRegistro e Acompanhamento de Chamados
Registro e Acompanhamento de Chamados Contatos da Central de Serviços de TI do TJPE Por telefone: (81) 2123-9500 Pela intranet: no link Central de Serviços de TI Web (www.tjpe.jus.br/intranet) APRESENTAÇÃO
Leia maisSistemas Distribuídos. Aleardo Manacero Jr.
Sistemas Distribuídos Aleardo Manacero Jr. Conteúdo Conceitos fundamentais Estratégias de controle: relógios e algoritmos de sincronismo Serviços: arquivos e memória Corba Processamento distribuído Sistemas
Leia maisPROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Introdução Modelos de Processo de Desenvolvimento de Software Os modelos de processos de desenvolvimento de software surgiram pela necessidade de dar resposta às
Leia maisRequisitos de Software
Requisitos de Software Centro de Informática - Universidade Federal de Pernambuco Kiev Gama kiev@cin.ufpe.br Slides originais elaborados por Ian Sommerville e adaptado pelos professores Márcio Cornélio,
Leia maisBanco de Dados Orientado a Objetos
Banco de Dados Orientado a Objetos MODELAGEM, ANÁLISE, PROJETO e CLASSIFICAÇÃO Interação combinando lógica, através de objetos que contém os dados. Estes divididos conforme seus tipos e métodos (classe),
Leia mais5 Mecanismo de seleção de componentes
Mecanismo de seleção de componentes 50 5 Mecanismo de seleção de componentes O Kaluana Original, apresentado em detalhes no capítulo 3 deste trabalho, é um middleware que facilita a construção de aplicações
Leia maisCiclo de Vida Clássico ou Convencional CICLOS DE VIDA DE DESENVOLVIMENTO DE SISTEMAS. Ciclo de Vida Clássico ou Convencional. Enfoque Incremental
CICLOS DE VIDA DE DESENVOLVIMENTO DE SISTEMAS Elicitação Ciclo de Vida Clássico ou Convencional O Modelo Cascata Análise Ana Paula Terra Bacelo Blois Implementação Material Adaptado do Prof. Marcelo Yamaguti
Leia maisCarlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br
Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Principais problemas programação concorrente Deadlocks (impasses) Starvation (inanição) Condições de corrida Erros de consistência na
Leia maisUniversidade Federal de Santa Catarina Departamento de Informática e Estatística Bacharelado em Ciências da Computação
Universidade Federal de Santa Catarina Departamento de Informática e Estatística Bacharelado em Ciências da Computação INE5406 - Sistemas Digitais semestre 2011/1 Prof. José Luís Güntzel guntzel@inf.ufsc.br
Leia maisTópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite andreza.lba@gmail.com (81 )9801-6619
Tópicos em Engenharia de Software (Optativa III) AULA 2 Prof. Andrêza Leite andreza.lba@gmail.com (81 )9801-6619 Engenharia de Software Objetivo da aula Depois desta aula você terá uma revisão sobre o
Leia maisLógica de Programação
Lógica de Programação Softblue Logic IDE Guia de Instalação www.softblue.com.br Sumário 1 O Ensino da Lógica de Programação... 1 2 A Ferramenta... 1 3 Funcionalidades... 2 4 Instalação... 3 4.1 Windows...
Leia maisUnidade VI. Validação e Verificação de Software Teste de Software. Conteúdo. Técnicas de Teste. Estratégias de Teste
Unidade VI Validação e Verificação de Software Teste de Software Profa. Dra. Sandra Fabbri Conteúdo Técnicas de Teste Funcional Estrutural Baseada em Erros Estratégias de Teste Teste de Unidade Teste de
Leia maisProjeto de Sistemas I
Instituto Federal de Educação, Ciência e Tecnologia de São Paulo Projeto de Sistemas I Professora: Kelly de Paula Cunha E-mail:kellypcsoares@ifsp.edu.br Requisitos: base para todo projeto, definindo o
Leia maisOrganização e Arquitetura de Computadores
Organização e Arquitetura de Computadores Entrada e saída Alexandre Amory Edson Moreno Nas Aulas Anteriores Foco na Arquitetura e Organização internas da Cleo Modelo Von Neuman Circuito combinacional Circuito
Leia maisManual de Instalação... 2 RECURSOS DESTE RELÓGIO... 3 1 - REGISTRANDO O ACESSO... 4 1.1 Acesso através de cartão de código de barras:...
0 Conteúdo Manual de Instalação... 2 RECURSOS DESTE RELÓGIO... 3 1 - REGISTRANDO O ACESSO... 4 1.1 Acesso através de cartão de código de barras:... 4 1.2 Acesso através do teclado (digitando a matrícula):...
Leia maisModelo Cascata ou Clássico
Modelo Cascata ou Clássico INTRODUÇÃO O modelo clássico ou cascata, que também é conhecido por abordagem top-down, foi proposto por Royce em 1970. Até meados da década de 1980 foi o único modelo com aceitação
Leia maisDispositivo que de alguma maneira descreve o comportamento do sistema
Sistema: Conceito primitivo (intuitivo) Tentativas de definição: Agregação ou montagem de coisas, combinadas pelo homem ou pela natureza de modo a formar um todo unificado. Grupo de itens interdependente
Leia maisEverson Scherrer Borges João Paulo de Brito Gonçalves
Everson Scherrer Borges João Paulo de Brito Gonçalves 1 Tipos de Sistemas Operacionais Os tipos de sistemas operacionais e sua evolução estão relacionados diretamente com a evolução do hardware e das
Leia maisSistemas Operacionais Introdução. Professora: Michelle Nery
Sistemas Operacionais Introdução Professora: Michelle Nery Área de Atuação do Sistema Operacional Composto de dois ou mais níveis: Tipo de Sistemas Operacionais Sistemas Operacionais Monotarefas Sistemas
Leia maisICC Introdução para JavaScript
ICC Introdução para JavaScript Arquitetura Genérica de um Computador Máquina de Von Neumann Diagrama conhecido como Máquina de Von Neumann (grande nome da informática) A finalidade de um computador é receber,
Leia maisSistemas Distribuídos
Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor
Leia mais3. Comunicação em Sistemas Distribuídos
3. Comunicação em 3.1.Troca de mensagens As mensagens são objetos de dados cuja estrutura e aplicação são definidas pelas próprias aplicações que a usarão. Sendo a troca de mensagens feita através de primitivas
Leia maisProjeto e Análise de Algoritmos Projeto de Algoritmos Introdução. Prof. Humberto Brandão humberto@dcc.ufmg.br
Projeto e Análise de Algoritmos Projeto de Algoritmos Introdução Prof. Humberto Brandão humberto@dcc.ufmg.br aula disponível no site: http://www.bcc.unifal-mg.edu.br/~humberto/ Universidade Federal de
Leia mais3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio
32 3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio Este capítulo apresenta o framework orientado a aspectos para monitoramento e análise de processos de negócio
Leia maisInformática II Cap. 3
Cap. 3 1 Tradicionalmente, programar significava apenas a escrita de um programa, que resolvesse o problema pretendido de uma forma aparentemente correcta. Problema Problema Programa Programa Desvantagens:
Leia mais6.3 Equivalência entre Autômatos com Pilha Não-Determinísticos e Gramáticas Livre do Contexto
Capítulo 6. Autômatos com Pilha 6.3 Equivalência entre Autômatos com Pilha Não-Determinísticos e Gramáticas Livre do Contexto Nos exemplos da seção anterior, vimos que os autômatos com pilha existem para
Leia maisIntrodução à Programação de Computadores
1. Objetivos Introdução à Programação de Computadores Nesta seção, vamos discutir os componentes básicos de um computador, tanto em relação a hardware como a software. Também veremos uma pequena introdução
Leia maisInstituto Superior Politécnico de VISEU. Escola Superior de Tecnologia
1 Tradicionalmente, programar significava apenas a escrita de um programa, que resolvesse o problema pretendido de uma forma aparentemente correcta. Problema Problema Programa Programa Desvantagens: Programas
Leia maisRoteiro. BCC321 - Banco de Dados I. Conceitos Básicos. Conceitos Básicos. O que é um banco de dados (BD)?
Roteiro BCC321 - Banco de Dados I Luiz Henrique de Campos Merschmann Departamento de Computação Universidade Federal de Ouro Preto luizhenrique@iceb.ufop.br www.decom.ufop.br/luiz Conceitos Básicos Banco
Leia maisCiência da Computação ENGENHARIA DE SOFTWARE. Análise dos Requisitos de Software
Ciência da Computação ENGENHARIA DE SOFTWARE Análise dos Requisitos de Software Prof. Claudinei Dias email: prof.claudinei.dias@gmail.com Roteiro Introdução Tipos de requisitos Atividades Princípios da
Leia maisEngenharia de Requisitos Estudo de Caso
Engenharia de Requisitos Estudo de Caso Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 1 Engenharia de Requisitos Exemplo 1 Reserva de Hotel 1. INTRODUÇÃO Este
Leia maisEngenharia de Software
Engenharia de Software O que é a engenharia de software É um conjunto integrado de métodos e ferramentas utilizadas para especificar, projetar, implementar e manter um sistema. Método É uma prescrição
Leia maisLição 1 Introdução à programação de computadores
Lição Introdução à programação de computadores Introdução à Programação I Objetivos Ao final desta lição, o estudante será capaz de: Identificar os diferentes componentes de um computador Conhecer linguagens
Leia maisLINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto
LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto Conceitos de Linguagens de Roteiro: Apresentação do plano de ensino; Apresentação do plano de
Leia maisALGORITMOS PARTE 01. Fabricio de Sousa Pinto
ALGORITMOS PARTE 01 Fabricio de Sousa Pinto Algoritmos: Definição 2 É uma sequência de instruções finita e ordenada de forma lógica para a resolução de uma determinada tarefa ou problema. Algoritmos 3
Leia mais4 Plano de Recuperação
4 Plano de Recuperação Como pode ser observado na Seção 3.2, um projeto de um middleware para TVD deve considerar o fato que ele será embarcado em plataformas diversas e, portanto, que fará uso de diversas
Leia mais4 O Workflow e a Máquina de Regras
4 O Workflow e a Máquina de Regras O objetivo do workflow e da máquina de regras é definir um conjunto de passos e regras configuráveis. Ao longo de sua execução, um usuário consegue simplificar o seu
Leia maisEVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E OPERADORES BÁSICOS PARA PROJETO DE PROCESSOS. Alexandre Mota
EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E OPERADORES BÁSICOS PARA PROJETO DE PROCESSOS Alexandre Mota CSP Concebida por Tony Hoare [85] Atualizada por Bill Roscoe [97] para fins de automação (Verificação
Leia maisCircuitos Seqüenciais: Latches e Flip-Flops. Fabrício Noveletto
Circuitos Seqüenciais: Latches e Flip-Flops Fabrício Noveletto Objetivos Usar portas lógicas para construir latches básicos Explicar a diferença entre um latch S-R e um latch D Reconhecer a diferença entre
Leia maisComunicação entre Processos
Comunicação entre Processos Comunicação entre Processos - Sistemas Operacionais fornecem mecanismos para comunicação entre processos (IPC), tal como filas de mensagens, semáfaros e memória compartilhada.
Leia maisIntrodução aos Computadores
Os Computadores revolucionaram as formas de processamento de Informação pela sua capacidade de tratar grandes quantidades de dados em curto espaço de tempo. Nos anos 60-80 os computadores eram máquinas
Leia maisTriNMPC. Controlador Preditivo Multivariável Linear e Não-linear BENEFÍCIOS: APLICAÇÕES: CARACTERÍSTICAS:
TriNMPC Controlador Preditivo Multivariável Linear e Não-linear O software TriNMPC é um controlador preditivo multivariável que pode ser tanto linear como nãolinear, sendo extremamente versátil e de fácil
Leia maisFMR Faculdade Marechal Rondon Gestão de Sistemas de Informação Prof. Ms. Elvio Gilberto da Silva http://www.elvio.pro.br elvio@fmr.edu.
ANÁLISE ORIENTADA À OBJETO UML FMR Faculdade Marechal Rondon Gestão de Sistemas de Informação Prof. Ms. Elvio Gilberto da Silva http://www.elvio.pro.br elvio@fmr.edu.br AULA Nº 1 A UML utiliza vários diagramas
Leia maisProcessos de Desenvolvimento de Software
Processos de Desenvolvimento de Software Gerenciamento de Projetos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e
Leia maisObjetivos. Requisitos de Software. Tipos de Requisitos. O que é um requisito? Requisitos Funcionais e Não- Funcionais. Requisitos Funcionais
Objetivos de Software Gidevaldo Novais (gidevaldo.vic@ftc.br) Introduzir os conceitos do usuário e do Descrever requisitos funcionais e nãofuncionais (domínio) Apresentar um esqueleto de documento e notas
Leia maisComo melhorar a Qualidade de Software através s de testes e nua. Cláudio Antônio de Araújo 22/11/2008
Como melhorar a Qualidade de Software através s de testes e integração contínua. nua. Cláudio Antônio de Araújo 22/11/2008 Objetivos Fornecer uma visão geral da área de testes de software, com ênfase em
Leia maisGerenciamento de Clientes
Programação Orientada a Objetos Gerência de Objetos por Outro Objeto Programação de Computadores II Professor: Edwar Saliba Júnior Gerenciamento de Clientes Neste exemplo, veremos de forma bem simples
Leia maisMC714 - Sistemas Distribuídos. Leandro Villas
MC714 - Sistemas Distribuídos Aula de Hoje Aula Passada Relógios Lógicos Relógios de Lamport Relógios Vetoriais Aula de Hoje Exclusão Mútua Algoritmos de Eleição Exclusão mútua Questão fundamental em SDs
Leia maisEsta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi
5 Conclusão Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi permitir que scripts Lua instanciem e usem
Leia maisOrganização e Arquitetura de Computadores I. de Computadores
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 Básica B de Computadores
Leia maisAula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW
Ciclo de Vida Aula 2 Revisão 1 Processo de Desenvolvimento de Software 1 O Processo de desenvolvimento de software é um conjunto de atividades, parcialmente ordenadas, com a finalidade de obter um produto
Leia maisOBJETIVO 2 APLICAÇÃO 3 ATRIBUIÇÕES E RESPONSABILIDADES 4 DOCUMENTOS DE REFERÊNCIA 5 TERMINOLOGIA 6 DESCRIÇÃO DO PROCESSO DE GESTÃO DE MUDANÇAS
Impresso em 26/08/2015 10:31:18 (Sem título Aprovado ' Elaborado por Daniel Trindade/BRA/VERITAS em 01/11/2013 Verificado por Cintia Kikuchi em 04/11/2013 Aprovado por Americo Venturini/BRA/VERITAS em
Leia maisBanco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados
Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Um Sistema Gerenciador de Banco de Dados (SGBD) é constituído por um conjunto de dados associados a um conjunto de programas para acesso a esses
Leia maisA Linguagem Pascal e o Ambiente de Programação Dev-Pascal. Introdução à Ciência da Computação I
A Linguagem Pascal e o Ambiente de Programação Dev-Pascal Introdução à Ciência da Computação I Março/2004 Introdução (1 de 3) Homenagem a Blaise Pascal, filósofo e matemático do século XVII. Desenvolvida
Leia maisSistemas Distribuídos. Professora: Ana Paula Couto DCC 064
Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Resiliência de Processos Comunicação Confiável Cliente-Servidor Capítulo 8 Resiliência de Processos Idéia Básica: Replicar processos em grupos,
Leia maisModelagem de Processos. Prof.: Fernando Ascani
Modelagem de Processos Prof.: Fernando Ascani Modelagem da arquitetura de negócios Arquitetura Definições Aurélio: Informática: Estrutura e organização lógica de funcionamento de um sistema computacional.
Leia maisPara construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.
Apresentação Este curso tem como objetivo, oferecer uma noção geral sobre a construção de sistemas de banco de dados. Para isto, é necessário estudar modelos para a construção de projetos lógicos de bancos
Leia mais