Técnicas de Inspecção de Programas para Inter-relacionar as Vistas Comportamental e Operacional

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

Download "Técnicas de Inspecção de Programas para Inter-relacionar as Vistas Comportamental e Operacional"

Transcrição

1 Técnicas de Inspecção de Programas para Inter-relacionar as Vistas Comportamental e Operacional Mario M. Berón 13 Pedro R. Henriques 1, Maria J. Varanda 2, Roberto Uzal 3 1 Departamento de Informática Universidade do Minho, CCTC, Braga, Portugal {marioberon 2 Departamento de Informática Instituto Politécnico de Bragança,Bragança, Portugal 3 Departamento de Informática Universidad Nacional de San Luis, San Luis, Argentina Grau Académico: Doutor em Ciencias da Computação Inicio: 03/02/2006 Fim: 03/02/2009 Resumo A Compreensão de Programas (CP) é uma disciplina da Engenharia de Software destinada a criar modelos, métodos, técnicas e ferramentas, baseadas num processo da aprendizagem e num processo de engenharia, com o objectivo de alcançar um profundo conhecimento dos sistemas de software. O processo da aprendizagem implica a análise da forma como os programadores entendem os programas. Esta temática é bem descrita no contexto dos Modelos Cognitivos. O processo de engenharia necessita de ser abordado através de tópicos como: Métodos de Extracção da Informação, Administração da Informação e Visualização de Software. A pesquisa em todas estas áreas faz com que seja possível abordar a construção de boas ferramentas de CP. Além disso, esta tarefa dá a possivilidade de inter-relacionar o domínio do programa (componentes de software) e o domínio do problema (comportamento do sistema). Esta última actividade é um dos grandes desafios no contexto da compreensão de programas. Neste artigo, descrevemos as pesquisas e os resultados obtidos nos tópicos descritos nos parágrafos precedentes. Estas tarefas fazem parte de nossa tese de doutoramento denominada: Técnicas de Inspecção de Programas para Inter-Relacionar a Vista Operacional e a Vista Comportamental de Sistemas de Software. Palavras Chaves: Modelos Cognitivos, Extracção da Informação, Visualização de Software. 1 Introdução A compreensão de programas, traduz-se na habilidade de perceber uma secção de código escrito numa linguagem de alto nível. Um programa não é mais do

2 que uma sequência de instruções que serão executadas de forma a garantir uma determinada funcionalidade. O leitor dum programa, consegue extrair o significado do mesmo quando compreende de que forma o código cumpre com a tarefa para a qual foi criado. A área de Compreensão de Programas é uma das mais importantes da Engenharia de Software porque é necessaria para as tarefas de reutilização, inspecção, manutenção, migração e extansão de sistemas de software. Pode também ser utilizada em áreas como Engenharia Inversa ou no Ensino de Linguagens de Programação. O processo de compreensão de programas pode ter diferentes significados e pode ser visto desde perspectivas diferentes. O utilizador pode estar interessado em como o computador executa as instruções, com o objectivo de compreender o fluxo de control e o fluxo de dados, ou pode querer verificar os efeitos que a execução do programa tem sobre o objecto que está a ser controlado pelo programa. Considerando estes níveis de abstracção, uma ferramenta versátil de inspecção visual de código é crucial na tarefa de compreensão de programas. Para construir uma ferramenta destas características é necessário perceber temas relacionados com os Modelos Cognitivos (MC), Extracção da Informação (EI) e Visualização de Software (VS). MC ajuda a perceber as principais estruturas mentais utilizadas pelo programador para entender programas. Desta forma é possível desenhar arquitecturas de software que procurem representar essas componentes do conhecimento. EI torna possível extrair toda a informação dos sistemas de software. Isto é necessário tanto para construir arquitecturas como para implementar diferentes vistas do sistema. Finalmente, VS permite representar a informação claramente. Esta característica é muito importante porque facilita a compreensão. Além das facilidades de inspecção de código, consideramos que uma ferramenta de compreensão deveria possuir algumas formas de inter-relacionar o domínio do programa com o domínio do problema. Uma estratégia importante para alcançar esta relação e facilitar a compreensão, consiste em criar vários domínios intermédios. Usando estes domínios intermédios, e incorporando funções de navegação entre eles, é possível construir uma relação operacional-comportamental. Este artigo está organizado como se explica a seguir. A secção 2, descreve os trabalhos realizados no contexto dos Modelos Cognitivos. A secção 3, apresenta as pesquisas no âmbito da Visualização de Software. A secção 4, detalha a técnica usada para extrair a informação a partir dos sistemas. A secção 5, explica as técnicas da relação operacional-comportamental. Finalmente, a secção 6 apresenta a conclusão deste artigo. 2 Modelos Cognitivos Os Modelos Cognitivos (MC) no contexto da compreesão de programas descrevem a forma como os programadores compreendem os programas. Os MC são importantes porque permitem perceber os distintos processos mentais utilizados na compreensão de programas. Desta forma é possivel desenvolver estratégias ou

3 ferramentas com suporte cognitivo. Depois de realizar um estudo do estado da arte dos MC foi possível detectar que: Todos os autores concordam que um programador compreende um programa quando pode relacionar o domínio do programa com o domínio do problema. Com isto queram eles dizer, que para cada comportamento do sistema de estudo, o programador deve encontrar as peças de código que se utilizaram para produzir esse comportamento. Existe uma necessidade de uniformizar e sistematizar os conceitos usados nesta área. Isto deve-se á existencia de conceitos que produzem ambiguidade. Esta característica dificulta a possível implementação desses conceitos numa ferramenta de compreensão. Por exemplo, o conceito de chunk é muito utilizado para explicar como os programadores extraem informação dos sistemas. Comtudo, as bibliografías de MC não apresentam uma definição ou método para extrair chunks. Por esta razão, a automatização deste conceito fica ao criterio do programador. Esto conduz a conflitos na interpretação do conceito. Não existe uma única aproximação para a aprendizagem. Isto foi claramente observado através das analises das diferentes teorias de CM. Por exemplo, o Brook afirma que o processo utilizado pelos programadores para entender programas é top-down. Em quanto Soloway mantém que este processo é bottom-up. Finalmente, existem outros autores a proporem uma metamodelo integrado que une estas duas aproximações. Todas estas teorias apresentam resultados empíricos que suportam os seus estudos. Por esta razão esta área mostra uma grande divergência neste tópico. Actualmente o Construtivismo tem tomado relevância porque é uma teoria que admite o uso misturado de estratégias da aprendizagem. A primeira observação foi muito útil porque possibilita-nos seleccionar um abordagem para a construção de estratégias e ferramentas de compreensão. A segunda permitiu-nos fazer algumas contribuições nesta área. A terceira confirma que a abordagem seguida para entender programas é seleccionada pelo programador. Quanto ás nossas contribuições nesta área podemos dizer que desenvolvemos definições de conceitos mais próximas ao domínio do engenheiro de software. Desta forma eliminamos as ambiguidades produzidas pelo uso de vocabulário pedagógico. A modo de exemplo, na sub-secção seguinte apresentamos uma parte de uma sistematização dum conceito utilizado no contexto de MC. 2.1 Sistematização do Conceito de Chunk Um chunk é um conjunto de estruturas de texto. Ou seja é uma forma de construir uma abstracção desde o código fonte do programa. Com os chunks é possível construir hierarquias de chunks. Este conceito é muito utilizado no contexto dos MC contudo as bibliografias não especificam como os chunks podem ser extraídos

4 desde o texto do programa. Nós pensamos que uma definição mais precisa permite pensar em algoritmos que façam esta tarefa e portanto proporemos a seguinte sistematização deste conceito. Chunk: é um conceito que descreve conjuntos de estruturas de texto. Eles podem ser classificados em : sequencial, selecção, iteração e rotina. Nos seguintes parágrafos definimos cada uns deles. chunk seq (stmt, n, desc): Está formado por um conjunto de n sentenças genéricas (stmt) e uma descrição (desc). Neste contexto, sentença genérica representa atribuição, chamada a função ou sentença de entrada/saída. A descrição declara a funcionalidade deste grupo de sentenças. A seguinte peça de código ilustra dois exemplos de chunk seq de três sentenças. a=temp; a=b; b=temp;... c[k]=a[i]+b[j]; i=i+1; j=j+2; O primeiro chunk é denotado como chunk seq ({a = temp; a = b; b = temp}, 3, < instercambia o valor da variavel a e o valor da variavel b >). O segundo é definido como chunk seq ({c[k] = a[i] + b[j]; i = i + 1; j = j + 2}, 3, < soma os elementos dum vector >). O tamanho de n é determinado pelo programador e é dependente do nível de precisão desejado. chunk sel (chunk seq (stmt, 1, desc), chunck, chunck): Os chunks selecção são úteis para representar sentenças de selecção. Eles estão compostos dum chunk seq que representa a condição e dois chuncks que representam as sentenças usadas na parte then e na parte else. A seguinte peça de código é um exemplo de chunck sel. if (f(x)==0) { a=temp; a=b; b=temp;} else { c[k]=a[i]+b[j]; i=i+1; j=j+2; } Esta peça de código pode ser descrita usando chunks na seguinte forma: chunk sel ( chunck seq ({f(x) == 0}, 1, < descrição da condição >), chunk seq ({a = temp; a = b; b = temp}, 3, < intercambia o valor da variavel a e o valor da variavel b >), chunk seq ({c[k] = a[i] + b[j]; i = i + 1; j = j + 2}, 3, < soma os elementos dum vector >)) O leitor pode observar que estas definições são mais precisas e possibilitam construir algoritmos para extrair chunks. Por exemplo, uma forma de extrair chunks usando estas definições pode consistir em desenvolver um analisador sintático com acções semânticas que transformem o programa fonte noutro decorado com chunks. O resto das definições de chunks e doutros conceitos de MC pode ser visto em [6]. Neste artigo não foram descritas por razões de extensão. 3 Visualização de Software A Visualização de Software (VS) [7] [2] [4] é crucial no contexto do desenvolvimento desta tese de doutoramento. Isto se deve a que é necessário representar

5 os diferentes domínios através da utilização de vistas. As vistas apresentam uma perspectiva do sistema de estudo que revela algum aspecto do mesmo. Para construir vistas de sistemas úteis para a compreensão é necessário definir uma representação estrutural e uma representação gráfica. A primeira faz referência á estrutura de dados que se utilizará para armazenar a informação e criar as vistas. A segunda aborda a temática das representações visuais dessa informação. Seleccionamos como vistas importantes as seguintes: Códigos fonte e objecto: ambos os códigos são fontes básicas de inspecção e compreensão. Normalmente o programador recorre ao código fonte para entender e modificar o sistema de estudo, por este motivo, temos que possuir estratégias para aceder ao código fonte eficientemente para facilitar o proceso de inspecção e compreensão. O código objecto é uma vista secundária que pode ser útil para tarefas como a análise do código gerado pelo compilador. Grafo de Tipos: permite visualizar os tipos utilizados e as dependências entre eles no sistema de estudo. Grafo de Funções: o código fonte é uma vista de baixo nível muito complexa de analisar quando o sistema de estudo é grande. Uma vista alternativa de mais alto nível é o grafo de funções. Esta vista mostra como as funções estão interligadas estáticamente no sistema. Desta forma o utilizador pode, com uma maior probabilidade, encontrar as funções mais importantes. Esta última função pode ser facilitada através dos operadores de grafos. Grafo de Funções de tempo de execução: o grafo de funções contêm todas as funções do sistema. Contudo, em muitas ocasiões, o utilizador necessita inspeccionar só alguma delas. Por exemplo, normalmente ele gostaria de analisar só as funções que foram utilizadas para atingir algum objectivo específico. Esta informação é fornecida por um subgrafo do grafo de funções denominado grafo de funções de tempo de execução. Grafo de Módulos: esta vista possibilita ter uma visão mais abstracta do sistema, sendo muito útil para analisar como o sistema é construído e que módulos são os mais importantes ou os mais utilizados. Para todas estas vistas a representação estrutural é directa quando utilizam listas e grafos para armazenar toda a informação. Podem aparecer situações que impliquem a geração de novas estruturas de dados, sendo que esses tópicos estão bem descritos e documentados em diferentes livros relacionados com essa temática. O problema aparece quando deseja-mos criar a representação visual. Neste caso é necessário determinar que informação é útil e como a mostrar. Neste contexto, o nosso trabalho consistiu em definir um conjunto de atributos que sempre deveriam visualizar-se e como eles seriam visualizados. Este trabalho foi principalmente feito para as representações de grafos. Para as representações textuais necessita-mos pesquisar mais. A modo de exemplo na sub-secção seguinte apresentamos a definição da visualização das dependências de módulos.

6 3.1 Dependências de Módulos As dependências de módulos mais importantes encontradas podem ser classificadas como dependências de tipos, dados e funções. A estrutura básica para modelar esta situação é um hiper-grafo dirigido, o qual é definido como: MDG=(P,E 1,E 2,E 3 ) onde P={x/ x é um módulo do sistema} e E 1 = {(x, y) / x P y P o módulo x usa uma função definida no módulo y} E 2 = {(x, y)/x P y P o módulo x usa um dado definido no módulo y} E 3 = {(x, y)/x P y P o módulo x usa um tipo definido no módulo y} Estas três principais dependências podem ser mostradas usando diferentes cores e classes de arcos. Contudo é importante caracterizar o grau de inter-dependência entre os módulos. Esta actividade pode ser feita usando a largura ou intensidade da cor. A Figura 1 mostra as dependências entre um grupo de módulos de um sistema. Sobre a esquerda pode-se ver um grafo que mostra só as dependências. Sobre a direita visualiza-se um hiper-grafo decorado. Esta vista mostra diferentes dependências em diferentes cores. Em vermelho as dependências de funções, em preto as de dados e em azul as de tipos. Também é possível visualizar arcos com larguras distintas que indicam o grau de utilização de cada um destes componentes. Neste sentido pode-se observar que o módulo 2 depende mais do que o módulo 3 se tomamos como ponto de análise as funções. Por outra parte o módulo 3 usa mais dados definidos no módulo 1 do que o módulo 2. O problema com este tipo de representação das dependências é a sobrecarga da visualização. Este inconveniente pode ser resolvido usando operações tais como filtragem, zoom, etc. Este mesmo tipo de tarefas foram feitas para as outras vistas descritas nos parágrafos precedentes e podem ser observadas em [6]. 4 Métodos de Extracção da Informação Para extrair a informação dos sistemas utilizamos Instrumentação de Código [5]. Esta técnica consiste em inserir instruções úteis no código fonte do sistema. Selecionamos como pontos estratégicos o inicio e o fim das funções. Nesses lugares inserimos funções de inspecção. Estas funções imprimem o nome da função e alguma outra informação que o programador considere importante. Os resultados obtidos com esta aproximação não foram muito bons. Isto deve-se a que as funções do sistema podem ser invocadas muitas vezes porque em certas ocasiões elas encontram-se dentro de iterações ou formam parte dum algoritmo complexo. Isto produz uma quantidade imensa de funções que não podem ser administradas com facilidade. Por esta razão foi necessário instrumentar o código para controlar as sentenças de iteração. Para atingir este objectivo esta classe de sentenças

7 Figura 1. Dependências de Módulos foram instrumentadas inserindo sentenças antes, dentro e depois das iterações. As sentenças previas ás iterações tem como tarefa inserir numa pilha o número que indica a quantidade de vezes que as funções dentro de uma iteração podem mostrar-se. As sentenças dentro das iteraçãoes diminuem essa quantidade em um. Finalmente as sentenças depois das iteraçãos tem como objectivo recuperar o número de vezes que as funções da iteração anterior devem-se mostrar. Este esquema permitiu reduzir a quantidade de funções reportadas pela nossa técnica de instrumentação. Além disso o número de funções pode ser controlado pelo utilizador porque ele pode decidir as vezes que as funções serão recuperadas. Este resultado foi satisfatório e possibilitou-nos avançar com o desenvolvimento da tese de doutoramento. A Figura 2.a mostra o esquema implementado para a instrumentação das funções e a Figura 2.b mostra o esquema para o controlo de ciclos. void f (int a, int b) push(pila,n) { for(i=0;i<tam;i++) INSPECTOR_ENTRADA("f"); {... /* acciones del loop */ INSPECTOR_SALIDA("f");... return; decrementartope(pila); } } pop(pila); (a) (b) Figura 2. Instrumentação de Funções e Controlo de Ciclos

8 4.1 Outras informações extraidas do sistema Ademais de implementar a instrumentação de código nós recuperamos toda a informação do sistema. Esta actividade permite-nos dispor de todos os componentes necessários para construir as visualizações descritas na secção 3 e inspeccionar todos as partes do código do sistema com facilidade. Além disso, nós desenhamos e criamos uma heurística de detecção de tipo de dados abstractos definidos pelo utilizador. Esta técnica baseia-se na construção dum grafo de dependências de tipos, denominado Grafo de Tipos (GT) que representa a relação é parte de. Depois a estratégia toma cada função do sistema, extrai os tipos usados em sua assinatura e constrói um sub-grafo de GT. Este último grafo contêm os nós do GT que representam os tipos usados pela função. Nós denominamos a este conjunto de nós do grafo nós básicos. Além destes nós o sub-grafo contem a todos os outros nós que podem alcançar através dum caminho aos nós básicos. Finalmente, a heurística extrai os nós maximais. Se a cardinalidade deste conjunto é maior que um, então a heurística não associa a função a nenhum tipo. Noutro caso a função é associada ao tipo maximal. A Figura 3 ilustra esta técnica. Sobre a esquerda pode-se observar um grafo de tipos. No centro encontra-se uma funçaõ. Na direita esta o sub-grafo do GT para a funçao f. O tipo seleccionado pela heurística é visualizado em cor vermelha. Figura 3. Heurística de detecção de grafos de tipos 5 Estratégias de Relação Operacional-Comportamental Nesta secção descrevemos doiss procedimentos para alcançar a relação operacionalcomportamental [3]. O primeiro é uma consequência de nosso esquema de instrumentação de código. O segundo é uma estratégia que usa informação estática é dinâmica para recuperar esta relação.

9 5.1 Efeito derivado do esquema de instrumentação de código Esta aproximação consiste em permitir a execução paralela do sistema instrumentado e do programa que administra as funções de inspecção. Este procedimento permite visualizar, directamente, as funções que estão sendo utilizadas pelo sistema para construir a sua saída. O efeito desta estratégia é similar a uma execução passo a passo a nível de funções. Básicamente este resultado é um produto derivado da implementação do nosso esquema de instrumentação de código. 5.2 BORS BORS (Behavioral-Operational Relation Strategy) [5] [6] tem por objectivo explicar o contexto onde as funções do sistema foram chamadas e suas funcionalidades. BORS baseia-se na seguinte observação: A saída dum sistema está composta de objectos do domínio do problema. Normalmente esses objectos são implementados por tipos de dados abstractos, no caso de linguagens imperativos, ou por classes, no caso de linguagens orientados a objectos. Tanto os TDAs como as classes têm objectos de dados que armazenam o seu estado e um conjunto de operações que os manipulam. Por este motivo é possível descrever cada objecto do dominio do problema utilizando os TDAs ou classes que os implementam. BORS consta dos seguintes passos: Detectar as funções relacionadas com cada objecto do domínio do problema: esta tarefa é feita em forma semi-automática. O utilizador selecciona os Tipos de Dados Abstractos que deseja explicar através da heurística de detecção de tipos descrita em brevemente na sub-secção 4.1. Depois todas as funções relacionadas com esses tipos são candidatas a ser explicadas e são armazenadas numa lista. Construir a arvore de execução de funções de tempo de execução: a saída do esquema de instrumentação de código contêm toda a informação necessária (inicio e fim da execução das funções) para construir uma estrutura de dados denominada fe-tree (Funtion Execution Tree) [1] [5] que descreve como as funções do sistema de estudo foram executadas. Explicar as funções encontradas no passo 1 usando a arvore construído no passo 2: combinando a informação dos passos anteriores (lista de funções a explicar e fe-tree) podem-se explicar as funções mostrando: o contexto onde foram invocadas (caminho desde a raíz até a função) e a tarefa que realizou para o sistema (sub-arvore que tem como raíz a função que está a ser explicada). Este processo aplica uma travessia por níveis sobre a fe-tree. Cada vez que se encontra um nó da fe-tree que pertence á lista de funções a explicar reporta-se o caminho desde esse nó até a raíz. Também é possível mostrar a sub-arvore que tem como raíz o nó analisado.

10 6 Conclução Neste artigo apresentamos os trabalhos realizados no contexto do desenvolvimento de nossa tese de doutoramento. As pesquisas estão relacionadas com: Modelos Cognitivos, Visualização de Software e Métodos de Extracção da Informação. Cada uma destas temáticas permite-nos extrair aspectos importantes para construir estratégias e ferramentas úteis para a compreensão de programas. Como principais contribuições deste trabalho podemos mencionar: a sistematização dos conceitos utilizados no âmbito dos modelos cognitivos, a caracterização de varias vistas dum sistema de software, a elaboração dum esquema de instrumentação de código para a extracção de informação dinâmica e a criação da estratégia BORS. As primeiras duas contribuições são a nível teórico enquanto as últimas são teóricas e práticas. Os procedimentos práticos são parte dum sistema de compreensão e inspecção de programas denominado PICS. Este sistema tenta implementar inter-relação de domínios através de distintas vistas, usa BORS e instrumentação de código como estratégias para relacionar directamente os domínios de programa e do problema. Uma descrição detalhada pode ser vista em [6]. Actualmente os nossos esforços estão orientados a completar: o sistema de visualização do PICS com as caracterizações teóricas do tipo das descritas na secção 3, o esquema de instrumentação de código com a inserção de sentenças noutras partes do programa. Além disso desejamos implementar técnicas de elaboração de documentação de alto nível que usem a nossa sistematização de conceitos de Modelos Cognitivos. Por outra parte, e talvez paralelamente ás tarefas previamente mencionadas, pretendemos fazer uma análise de requisitos com o objectivo de implementar uma estratégia de relação operacional-comportamental que siga um caminho top-down. Referências 1. Abdelwahab Hamou-Lhadj.The Concept of Trace Summarization.PCODA: Program Comprehension through Dynamic Analysis.(2005), Franoise Balmas, Harald Werts, Rim Chaabane. DDGraph: a Tool to Visualize Dynamic Dependences. Program Comprehension through Dynamic Analysis (2005), Lieberman H. and Fry C., Bridging the Gulf Between Code and Behavior in Programming, ACM Conference on Computers and Human Interface, (1994). 4. Maria J. Varanda and P. Henriques, Sistematização da Animação de Programas, Ph.D Thesis, University of Minho, (2000). 5. Mario M. Beron, Pedro Henriques, Maria J. Varanda, Roberto Uzal. A System to understand Programs Written in C Language by Code Annotation. European Joint Conference on Theory and Practice of Software, (2007). 6. Mario M. Beron, Pedro Henriques, Maria J. Varanda, Roberto, Program Inspection to interconnect Behavioral and Operational Views for Program Comprehension, Internal Report. University of Minho - National University of San Luis, (2007). 7. Moher T. G., {PROVIDE}: A Process Visualization and Debugging Environment, IEEE Transactions on Software Engineering, 14 (1988),

Tabela 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. 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 mais

Análise de Sistemas. Conceito de análise de sistemas

Análise de Sistemas. Conceito de análise de sistemas Análise de Sistemas Conceito de análise de sistemas Sistema: Conjunto de partes organizadas (estruturadas) que concorrem para atingir um (ou mais) objectivos. Sistema de informação (SI): sub-sistema de

Leia mais

Ciclo de Vida Clássico ou Convencional CICLOS DE VIDA DE DESENVOLVIMENTO DE SISTEMAS. Ciclo de Vida Clássico ou Convencional. Enfoque Incremental

Ciclo 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 mais

Plano de Trabalho Docente 2011. Qualificação: Auxiliar de informática para internet Módulo: 1º

Plano de Trabalho Docente 2011. Qualificação: Auxiliar de informática para internet Módulo: 1º Plano de Trabalho Docente 2011 Ensino Técnico ETEC Santa Isabel Código: 219 Município: Santa Isabel Área Profissional: Informação e Comunicação Habilitação Profissional: Técnico em informática para internet

Leia mais

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

Processos de Software. 2007 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

GereComSaber. Disciplina de Desenvolvimento de Sistemas de Software. Sistema de Gestão de Serviços em Condomínios

GereComSaber. Disciplina de Desenvolvimento de Sistemas de Software. Sistema de Gestão de Serviços em Condomínios Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática 3ºAno Disciplina de Desenvolvimento de Sistemas de Software Ano Lectivo de 2009/2010 GereComSaber Sistema de

Leia mais

Modelo Cascata ou Clássico

Modelo 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 mais

ARQUITECTURAS DE SOFTWARE

ARQUITECTURAS DE SOFTWARE ARQUITECTURAS DE SOFTWARE AULAS Nº 8 e 9 7-21/12/2007 F. Mário Martins Case Studies: Ligação das partes Use Case Diagram Use Case Specification Passo 1: ---------- Passo 2: ---------- Passo 3: ----------

Leia mais

Algoritmos e Programação I

Algoritmos e Programação I Algoritmos e Programação I Introdução a Computação Prof. Fernando Maia da Mota mota.fernandomaia@gmail.com CPCX/UFMS Fernando Maia da Mota 1 Computadores são dispositivos que só sabem fazer um tipo de

Leia mais

Universidade da Beira Interior

Universidade da Beira Interior Universidade da Beira Interior Relatório Apresentação Java Server Pages Adolfo Peixinho nº4067 Nuno Reis nº 3955 Índice O que é uma aplicação Web?... 3 Tecnologia Java EE... 4 Ciclo de Vida de uma Aplicação

Leia mais

GereComSaber. Desenvolvimento de Sistemas de Software. Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática

GereComSaber. Desenvolvimento de Sistemas de Software. Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática Desenvolvimento de Sistemas de Software Ano Lectivo de 2009/10 GereComSaber Ana Duarte, André Guedes, Eduardo

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

UNIVERSIDADE 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 mais

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

AMBIENTE 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 mais

Portal AEPQ Manual do utilizador

Portal AEPQ Manual do utilizador Pedro Gonçalves Luís Vieira Portal AEPQ Manual do utilizador Setembro 2008 Engenharia Informática - Portal AEPQ Manual do utilizador - ii - Conteúdo 1 Introdução... 1 1.1 Estrutura do manual... 3 1.2 Requisitos...

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5

Leia mais

Projecto de Programação MEEC - 2010/2011-1ºSemestre. Mestrado Integrado em Engenharia Electrotécnica e de Computadores

Projecto de Programação MEEC - 2010/2011-1ºSemestre. Mestrado Integrado em Engenharia Electrotécnica e de Computadores Mestrado Integrado em Engenharia Electrotécnica e de Computadores Programação 2010/2011 Enunciado do projecto O projecto a desenvolver pelos alunos consistirá numa sistema de monitorização do estado de

Leia mais

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS Planificação Anual da Disciplina de TIC Módulos 1,2,3-10.ºD CURSO PROFISSIONAL DE TÉCNICO DE APOIO À GESTÃO DESPORTIVA Ano Letivo 2015-2016 Manual adotado:

Leia mais

TIPOS ABSTRATOS DE DADOS DEFINIÇÃO E EXEMPLOS. Bruno Maffeo Departamento de Informática PUC-Rio

TIPOS ABSTRATOS DE DADOS DEFINIÇÃO E EXEMPLOS. Bruno Maffeo Departamento de Informática PUC-Rio TIPOS ABSTRATOS DE DADOS DEFINIÇÃO E EXEMPLOS Bruno Maffeo Departamento de Informática PUC-Rio TERMINOLOGIA BÁSICA ALGORITMO Um algoritmo pode ser visto como uma seqüência de ações expressas em termos

Leia mais

Estudo de um Sistema de Gêneros em um Curso Universitário

Estudo de um Sistema de Gêneros em um Curso Universitário Departamento de Letras Estudo de um Sistema de Gêneros em um Curso Universitário Aluna: Esther Ruth Oliveira da Silva Orientadora: Profª. Bárbara Jane Wilcox Hemais Introdução O presente projeto se insere

Leia mais

Aula 01. - Bibliografia - Definições - Operadores - Criação de um algoritmo - Exercícios. Algoritmo e Programação. Prof. Fábio Nelson.

Aula 01. - Bibliografia - Definições - Operadores - Criação de um algoritmo - Exercícios. Algoritmo e Programação. Prof. Fábio Nelson. - Bibliografia - Definições - Operadores - Criação de um algoritmo - Exercícios Aula 01 Slide 1 BIBLIOGRAFIA SCHILDT H. C Completo e Total, Makron Books. SP, 1997. Curso de linguagem C da UFMG. ZIVIANI,

Leia mais

APRENDENDO LÓGICA DE PROGRAMAÇÃO VIA WEB

APRENDENDO LÓGICA DE PROGRAMAÇÃO VIA WEB APRENDENDO LÓGICA DE PROGRAMAÇÃO VIA WEB Romero Tori Universidade de São Paulo Escola Politécnica INTERLAB Laboratório de Tecnologias Interativas-USP Instituto Sumaré de Educação Superior rometori@usp.br

Leia mais

Conceitos básicos de programação

Conceitos básicos de programação O QUE É UM PROGRAMA? Para executar uma dada tarefa é geralmente necessário entender o sistema onde ela é realizada. Por exemplo, para fazer um bolo temos um sistema composto por: Ingredientes Cozinheiro

Leia mais

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas Processamento e Otimização de Consultas Banco de Dados Motivação Consulta pode ter sua resposta computada por uma variedade de métodos (geralmente) Usuário (programador) sugere uma estratégia para achar

Leia mais

Modelos de Dados e Arquitetura de um SGBD. Introdução 1º Bimestre Prof. Patrícia Lucas

Modelos de Dados e Arquitetura de um SGBD. Introdução 1º Bimestre Prof. Patrícia Lucas Modelos de Dados e Arquitetura de um SGBD Introdução 1º Bimestre Prof. Patrícia Lucas Abstração Modelo de Dados Conjunto de conceitos que podem ser utilizados para descrever a estrutura lógica e física

Leia mais

Sistemas Inteligentes Lista de Exercícios sobre Busca

Sistemas Inteligentes Lista de Exercícios sobre Busca Sistemas Inteligentes Lista de Exercícios sobre Busca 1) A* - Problema do metrô de Paris Suponha que queremos construir um sistema para auxiliar um usuário do metrô de Paris a saber o trajeto mais rápido

Leia mais

Conceitos de Banco de Dados

Conceitos de Banco de Dados Conceitos de Banco de Dados Autor: Luiz Antonio Junior 1 INTRODUÇÃO Objetivos Introduzir conceitos básicos de Modelo de dados Introduzir conceitos básicos de Banco de dados Capacitar o aluno a construir

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 27 http://www.ic.uff.br/~bianca/engsoft2/ Aula 27-26/07/2006 1 Ementa Processos de desenvolvimento de software Estratégias e técnicas de teste de software Métricas para software

Leia mais

Engenharia de Software I

Engenharia de Software I Engenharia de Software I Rogério Eduardo Garcia (rogerio@fct.unesp.br) Bacharelado em Ciência da Computação Aula 05 Material preparado por Fernanda Madeiral Delfim Tópicos Aula 5 Contextualização UML Astah

Leia mais

Cap.2.5: Design de Algoritmos e Programação Estruturada. Algoritmos, fluxogramas e pseudo-código

Cap.2.5: Design de Algoritmos e Programação Estruturada. Algoritmos, fluxogramas e pseudo-código Cap.2.5: Design de Algoritmos e Programação Estruturada Algoritmos, fluxogramas e pseudo-código 1 Sumário Problemas e algoritmos Desenho de algoritmos/programas Passos na construção de algoritmos Método

Leia mais

ACTOS PROFISSIONAIS GIPE. Gabinete de Inovação Pedagógica

ACTOS PROFISSIONAIS GIPE. Gabinete de Inovação Pedagógica ACTOS PROFISSIONAIS GIPE Gabinete de Inovação Pedagógica Cooptécnica Gustave Eiffel, CRL Venda Nova, Amadora 214 996 440 910 532 379 Março, 2010 GESTÃO E PROGRAMAÇÃO DE SISTEMAS INFORMÁTICOS 1 GIPE - Gabinete

Leia mais

Empresa de Informática e Informação do Município de Belo Horizonte S/A PRODABEL

Empresa de Informática e Informação do Município de Belo Horizonte S/A PRODABEL Empresa de Informática e Informação do Município de Belo Horizonte S/A PRODABEL Diretoria de Sistema - DS Superintendência de Arquitetura de Sistemas - SAS Gerência de Arquitetura de Informação - GAAS

Leia mais

PROGRAMAÇÃO II 4. ÁRVORE

PROGRAMAÇÃO II 4. ÁRVORE 4. ÁRVORE PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma árvore impõe uma estrutura hierárquica em uma coleção de itens. Um exemplo familiar é a árvore genealógica. Árvores despontam de forma natural em

Leia mais

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas CMP1132 Processo e qualidade de software II Prof. Me. Elias Ferreira Sala: 402 E Quarta-Feira:

Leia mais

CASE Orientada a Objetos com Múltiplas Visões e Implementação Automática de Sistemas - MVCASE

CASE Orientada a Objetos com Múltiplas Visões e Implementação Automática de Sistemas - MVCASE CASE Orientada a Objetos com Múltiplas Visões e Implementação Automática de Sistemas - MVCASE Tathiana da Silva Barrére Antonio Francisco do Prado Vitor César Bonafe E-mail: (tathiana,prado,bonafe)@dc.ufscar.br

Leia mais

Descrição de Arquitectura e Design. SyncMasters

Descrição de Arquitectura e Design. SyncMasters 1 Descrição de Arquitectura e Design SyncMasters ConfiKeeper Version 2.0, 16-11-2014 by SyncMasters: Carlos Paiva, 2009108909, cpaiva@student.dei.uc.pt Inês Parente, 2012152484, iparente@student.dei.uc.pt

Leia mais

GereComSaber. Desenvolvimento de Sistemas de Software. Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática

GereComSaber. Desenvolvimento de Sistemas de Software. Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática Desenvolvimento de Sistemas de Software Ano Lectivo de 2009/10 GereComSaber Ana Duarte, André Guedes, Eduardo

Leia mais

ALESSANDRO RODRIGO FRANCO FERNANDO MARTINS RAFAEL ALMEIDA DE OLIVEIRA

ALESSANDRO RODRIGO FRANCO FERNANDO MARTINS RAFAEL ALMEIDA DE OLIVEIRA ALESSANDRO RODRIGO FRANCO FERNANDO MARTINS RAFAEL ALMEIDA DE OLIVEIRA INTRODUÇÃO O projeto de um banco de dados é realizado sob um processo sistemático denominado metodologia de projeto. O processo do

Leia mais

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP 1) Introdução Programação Orientada a Objetos é um paradigma de programação bastante antigo. Entretanto somente nos últimos anos foi aceito realmente

Leia mais

Prof. Dr. Abel Gomes (agomes@di.ubi.pt) Cap.4: Design de Algoritmos e Programação Estruturada. Algoritmos, fluxogramas e pseudo-código

Prof. Dr. Abel Gomes (agomes@di.ubi.pt) Cap.4: Design de Algoritmos e Programação Estruturada. Algoritmos, fluxogramas e pseudo-código Prof. Dr. Abel Gomes (agomes@di.ubi.pt) Cap.4: Design de Algoritmos e Programação Estruturada Algoritmos, fluxogramas e pseudo-código 1 Sumário Problemas e algoritmos Desenho de algoritmos/programas Passos

Leia mais

Figura 1 - O computador

Figura 1 - O computador Organização e arquitectura dum computador Índice Índice... 2 1. Introdução... 3 2. Representação da informação no computador... 4 3. Funcionamento básico dum computador... 5 4. Estrutura do processador...

Leia mais

Guião de Introdução ao Eclipse IDE Índice

Guião de Introdução ao Eclipse IDE Índice Índice 1. Introdução... 2 1.1. O que é um ambiente de desenvolvimento (IDE)?... 2 1.2. Visão geral sobre o Eclipse IDE... 2 2. Iniciar o Eclipse... 3 2.1. Instalação... 3 2.2. Utilizar o Eclipse... 3 3.

Leia mais

Aula 02 Modelagem de Dados. Banco de Dados. Aula 02 Modelagem de Dados. Superior /2011 Redes Computadores - Disciplina: Banco de Dados -

Aula 02 Modelagem de Dados. Banco de Dados. Aula 02 Modelagem de Dados. Superior /2011 Redes Computadores - Disciplina: Banco de Dados - Banco de Dados Aula 02 Modelagem de Dados Roteiro Definição Evolução Projeto de BD Abstração Esquema e Instância Definição É uma representação, normalmente gráfica, de estruturas de dados reais. Auxilia

Leia mais

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias: Arquitetura de Computadores Estrutura e Funcionamento da CPU Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Revisão dos conceitos básicos O processador é o componente vital do sistema de

Leia mais

Computação Paralela. Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho.

Computação Paralela. Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho. Computação Paralela Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho Outubro 2005 Desenvolvimento de Aplicações Paralelas Uma Metodologia

Leia mais

Roteiro 2 Conceitos Gerais

Roteiro 2 Conceitos Gerais Roteiro 2 Conceitos Gerais Objetivos: UC Projeto de Banco de Dados Explorar conceitos gerais de bancos de dados; o Arquitetura de bancos de dados: esquemas, categorias de modelos de dados, linguagens e

Leia mais

Aplicações de Escritório Electrónico

Aplicações de Escritório Electrónico Universidade de Aveiro Escola Superior de Tecnologia e Gestão de Águeda Curso de Especialização Tecnológica em Práticas Administrativas e Tradução Aplicações de Escritório Electrónico Microsoft Word Folha

Leia mais

Sistema de Certificação de Competências TIC

Sistema de Certificação de Competências TIC Sistema de Certificação de Competências TIC Portal das Escolas Manual de Utilizador INDICE 1 Introdução... 5 1.1 Sistema de formação e certificação de competências TIC...6 1.1.1 Processo de certificação

Leia mais

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação Programação 1I Prof. Osório Árvores Binárias Pag.: 1 - UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação Programação II Disciplina: Linguagem

Leia mais

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores UNIVERSIDADE TÉCNICA DE LISBOA INSTITUTO SUPERIOR TÉCNICO Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores Primeiro Teste 21 de Outubro de 2006, 9:00H 10:30H Nome: Número:

Leia mais

CAPÍTULO 2. Grafos e Redes

CAPÍTULO 2. Grafos e Redes CAPÍTULO 2 1. Introdução Um grafo é uma representação visual de um determinado conjunto de dados e da ligação existente entre alguns dos elementos desse conjunto. Desta forma, em muitos dos problemas que

Leia mais

Sistemas de Bases de Dados

Sistemas de Bases de Dados Sistemas de Bases de Dados Carlos Viegas Damásio José Alferes e Carlos Viegas Damásio Sistemas de Bases de Dados 2014/15 Objectivos - Em Bases de Dados (2º ano) pretendia-se: Que os estudantes fossem capazes

Leia mais

Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software

Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Curso Técnico em Informática ENGENHARIA DE SOFTWARE Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br Clayton Maciel Costa

Leia mais

Introdução a Verificação, Validação e Teste de Software

Introdução a Verificação, Validação e Teste de Software Engenharia de Software I 2012.2 Introdução a Verificação, Validação e Teste de Software Ricardo A. Ramos [Baseado na apresentação do LABS ICMC-USP -> http://www.labes.icmc.usp.br] Organização Introdução

Leia mais

Algoritmos e Estrutura de Dados III. Árvores

Algoritmos e Estrutura de Dados III. Árvores Algoritmos e Estrutura de Dados III Árvores Uma das mais importantes classes de estruturas de dados em computação são as árvores. Aproveitando-se de sua organização hierárquica, muitas aplicações são realizadas

Leia mais

NOÇÕES ELEMENTARES DE BASES DE DADOS

NOÇÕES ELEMENTARES DE BASES DE DADOS 1 NOÇÕES ELEMENTARES DE BASES DE DADOS Este primeiro capítulo aborda conceitos elementares relacionados com bases de dados. Os conceitos abordados neste capítulo são necessários para trabalhar adequadamente

Leia mais

Ajuda ao SciEn-Produção 1. 1. O Artigo Científico da Pesquisa Experimental

Ajuda ao SciEn-Produção 1. 1. O Artigo Científico da Pesquisa Experimental Ajuda ao SciEn-Produção 1 Este texto de ajuda contém três partes: a parte 1 indica em linhas gerais o que deve ser esclarecido em cada uma das seções da estrutura de um artigo cientifico relatando uma

Leia mais

UML - Unified Modeling Language

UML - 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 mais

WorkinProject 8 Manual de Referência Rápida

WorkinProject 8 Manual de Referência Rápida WorkinProject 8 Manual de Referência Rápida Flagsoft, Lda 2015 Índice 1. Introdução...3 2. Integrador - Interface com o utilizador...4 3. Registo de actividade - Folha de horas...5 4. Agenda e colaboração...7

Leia mais

15 Computador, projeto e manufatura

15 Computador, projeto e manufatura A U A UL LA Computador, projeto e manufatura Um problema Depois de pronto o desenho de uma peça ou objeto, de que maneira ele é utilizado na fabricação? Parte da resposta está na Aula 2, que aborda as

Leia mais

Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados

Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados 1. Conceitos Básicos No contexto de sistemas de banco de dados as palavras dado e informação possuem o mesmo significado, representando uma

Leia mais

Ensino Técnico Integrado ao Médio FORMAÇÃO PROFISSIONAL. Plano de Trabalho Docente 2014

Ensino Técnico Integrado ao Médio FORMAÇÃO PROFISSIONAL. Plano de Trabalho Docente 2014 Ensino Técnico Integrado ao Médio FORMAÇÃO PROFISSIONAL Plano de Trabalho Docente 2014 ETEC PROF. MASSUYUKI KAWANO Código: 136 Município: TUPÃ Eixo Tecnológico: INFORMAÇÃO E COMUNICAÇÃO Habilitação Profissional:

Leia mais

ISO/IEC 12207: Gerência de Configuração

ISO/IEC 12207: Gerência de Configuração ISO/IEC 12207: Gerência de Configuração Durante o processo de desenvolvimento de um software, é produzida uma grande quantidade de itens de informação que podem ser alterados durante o processo Para que

Leia mais

Análise semântica. Análise Semântica. Estrutura de um compilador. Anotação da árvore sintática. Tipos de comunicação de atributos?

Análise semântica. Análise Semântica. Estrutura de um compilador. Anotação da árvore sintática. Tipos de comunicação de atributos? Estrutura de um compilador Análise semântica Tradução orientada pela sintaxe 1 2 Análise Semântica Anotação da árvore sintática Análise semântica: Tipos (& Declarações) Escopo Checagens estáticas: Idéia:

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 02 Análise e Projeto OO Edirlei Soares de Lima Análise A análise modela o problema e consiste das atividades necessárias para entender

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

PROCESSO 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 mais

Geração de código intermediário. Novembro 2006

Geração de código intermediário. Novembro 2006 Geração de código intermediário Novembro 2006 Introdução Vamos agora explorar as questões envolvidas na transformação do código fonte em uma possível representação intermediária Como vimos, nas ações semânticas

Leia mais

! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico. " Crise do Software

! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico.  Crise do Software Agenda Introdução a Engenharia de Cleidson de Souza cdesouza@ufpa.br http://www.ufpa.br/cdesouza! e! e Programação! Histórico " Crise do! No Silver Bullet! Fases Genéricas do Processo de Desenvolvimento

Leia mais

Algoritmos e Estrutura de Dados II

Algoritmos e Estrutura de Dados II Universidade Federal do Vale do São Francisco Algoritmos e Estrutura de Dados II Professor: Marcelo Santos Linder E-mail: marcelo.linder@univasf.edu.br Ementa Árvores B, grafos e tabelas de hash: alocação

Leia mais

LEVANTAMENTO DE REQUISITOS SEGUNDO O MÉTODO VOLERE

LEVANTAMENTO DE REQUISITOS SEGUNDO O MÉTODO VOLERE LEVANTAMENTO DE REQUISITOS SEGUNDO O MÉTODO VOLERE RESUMO Fazer um bom levantamento e especificação de requisitos é algo primordial para quem trabalha com desenvolvimento de sistemas. Esse levantamento

Leia mais

Introdução. Banco de dados. Por que usar BD? Por que estudar BD? Exemplo de um BD. Conceitos básicos

Introdução. Banco de dados. Por que usar BD? Por que estudar BD? Exemplo de um BD. Conceitos básicos Introdução Banco de Dados Por que usar BD? Vitor Valerio de Souza Campos Adaptado de Vania Bogorny 4 Por que estudar BD? Exemplo de um BD Os Bancos de Dados fazem parte do nosso dia-a-dia: operação bancária

Leia mais

Tutorial Moodle Visão do Aluno

Tutorial Moodle Visão do Aluno Tutorial Moodle Visão do Aluno A P R E S E N T A Ç Ã O A sigla MOODLE significa (Modular Object Oriented Dynamic Learning Environment), em inglês MOODLE é um verbo que descreve a ação ao realizar com gosto

Leia mais

Bases de Dados. Bibliografia. 1. Parte I Componente Teórica. Pedro Quaresma

Bases de Dados. Bibliografia. 1. Parte I Componente Teórica. Pedro Quaresma Índice Bases de Dados Pedro Quaresma Departamento de Matemática Universidade de Coimbra 2010/2011 1. Parte I Componente Teórica 1.1 Introdução 1.2 Modelo ER 1.3 Modelo Relacional 1.4 SQL 1.5 Integridade

Leia mais

Sistemas de Nomes Planos

Sistemas de Nomes Planos Sistemas de Nomes Planos November 2, 2009 Sumário Sistemas de Nomes Planos e DHTs Chord Sistemas de Nomes Planos Tipicamente, sistemas de nomes à escala da Internet usam nomes estruturados hierarquicamente.

Leia mais

Introdução Banco de Dados

Introdução Banco de Dados Introdução Banco de Dados Vitor Valerio de Souza Campos Adaptado de Vania Bogorny Por que estudar BD? Os Bancos de Dados fazem parte do nosso dia-a-dia: operação bancária reserva de hotel matrícula em

Leia mais

De Arte a Ciência: Regras para o Desenho de Software

De Arte a Ciência: Regras para o Desenho de Software De Arte a Ciência: Regras para o Desenho de Software Neste artigo é apresentado um conjunto de regras de desenho um padrão de desenho universal associado ao princípio fundamental e aos requisitos axiomáticos.

Leia mais

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

Para 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

Curso de Iniciação ao Access Basic (I) CONTEÚDOS

Curso de Iniciação ao Access Basic (I) CONTEÚDOS Curso de Iniciação ao Access Basic (I) CONTEÚDOS 1. A Linguagem Access Basic. 2. Módulos e Procedimentos. 3. Usar o Access: 3.1. Criar uma Base de Dados: 3.1.1. Criar uma nova Base de Dados. 3.1.2. Criar

Leia mais

Projeto de Arquitetura

Projeto de Arquitetura Projeto de Arquitetura Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 11 Slide 1 Objetivos Apresentar projeto de arquitetura e discutir sua importância Explicar as decisões de projeto

Leia mais

Curso Técnico Superior Profissional em Desenvolvimento Web

Curso Técnico Superior Profissional em Desenvolvimento Web Curso Técnico Superior Profissional em Desenvolvimento Web PROVA DE AVALIAÇÃO DE CAPACIDADE REFERENCIAL DE CONHECIMENTOS E APTIDÕES Áreas relevantes para o curso de acordo com o n.º 4 do art.º 11.º do

Leia mais

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

4.2. UML Diagramas de classes

4.2. UML Diagramas de classes Engenharia de Software 4.2. UML Diagramas de classes Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Um diagrama de classes serve para modelar o vocabulário de um sistema Construído e refinado ao longo

Leia mais

Algoritmia e Estruturas de Dados

Algoritmia e Estruturas de Dados JOSÉ BRAGA DE VASCONCELOS JOÃO VIDAL DE CARVALHO Algoritmia e Estruturas de Dados Programação nas linguagens C e JAVA Portugal/2005 Reservados todos os direitos por Centro Atlântico, Lda. Qualquer reprodução,

Leia mais

Extracção de Anúncios e Notificação de Utilizadores do Site do Emprego Científico da Fundação para a Ciência e a Tecnologia

Extracção de Anúncios e Notificação de Utilizadores do Site do Emprego Científico da Fundação para a Ciência e a Tecnologia Extracção de Conhecimento da Internet Mestrado em Inteligência Artificial e Computação Extracção de Anúncios e Notificação de Utilizadores do Site do Emprego Científico da Fundação para a Ciência e a Tecnologia

Leia mais

18º Congresso de Iniciação Científica IMPLEMENTAÇÃO DE UM MODELO DE TESTE DE APLICAÇÕES WEB

18º Congresso de Iniciação Científica IMPLEMENTAÇÃO DE UM MODELO DE TESTE DE APLICAÇÕES WEB 18º Congresso de Iniciação Científica IMPLEMENTAÇÃO DE UM MODELO DE TESTE DE APLICAÇÕES WEB Autor(es) HARLEI MIGUEL DE ARRUDA LEITE Orientador(es) PLÍNIO ROBERTO SOUZA VILELA Apoio Financeiro PIBIC/CNPQ

Leia mais

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação Enzo Seraphim 1 Padrões de Operação

Leia mais

DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA

DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA Sistemas Operativos 2003/2004 Trabalho Prático #2 -- Programação em C com ponteiros -- Objectivos Familiarização

Leia mais

ESCOLA SECUNDÁRIA DE LEAL DA CÂMARA

ESCOLA SECUNDÁRIA DE LEAL DA CÂMARA ESCOLA SECUNDÁRIA DE LEAL DA CÂMARA DEPARTAMENTO DE TECNOLOGIAS 2007/08 Curso Tecnológico de Informática Ensino Secundário Recorrente DISCIPLINA DE BASES LÓGICAS DE PROGRAMAÇÃO 11º ano (Módulo 4) OBJECTIVOS

Leia mais

PLANIFICAÇÃO MODULAR ANO LECTIVO 2015 / 2016

PLANIFICAÇÃO MODULAR ANO LECTIVO 2015 / 2016 PLANIFICAÇÃO MODULAR ANO LECTIVO 2015 / 2016 CURSO/CICLO DE FORMAÇÃO Técnico de Eletrotecnia e Técnico de Gestão de Equipamentos Informáticos / 2015/2018 DISCIPLINA: Tecnologias da Informação e Comunicação

Leia mais

Interpretação e Compilação de Linguagens de Programação

Interpretação e Compilação de Linguagens de Programação Interpretação e Compilação de Linguagens de Programação 28 de Fevereiro de 2013 Esta unidade curricular pretende transmitir ao longo de um semestre as noções fundamentais sobre o desenho e implementação

Leia mais

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular PROGRAMAÇÃO Ano Lectivo 2013/2014

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular PROGRAMAÇÃO Ano Lectivo 2013/2014 Programa da Unidade Curricular PROGRAMAÇÃO Ano Lectivo 2013/2014 1. Unidade Orgânica Ciências da Economia e da Empresa (1º Ciclo) 2. Curso Engenharia Electrotécnica e de Computadores 3. Ciclo de Estudos

Leia mais

EMENTAS DO CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

EMENTAS DO CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS EMENTAS DO CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS INTRODUÇÃO À COMPUTAÇÃO 60 h 1º Evolução histórica dos computadores. Aspectos de hardware: conceitos básicos de CPU, memórias,

Leia mais

Nome: Login: CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA

Nome: Login: CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TURMA 2008 3º PERÍODO - 5º MÓDULO AVALIAÇÃO A4 DATA 23/04/2009 ENGENHARIA DE SOFTWARE Dados de identificação do Acadêmico: Nome: Login: CA: Cidade: UF CARTÃO RESPOSTA

Leia mais

Introdução ao Projeto. Projeto de Software. 1) Objetivos. 2) Importância. Análise e Projeto - Diferenças. Importância. Silvia Regina Vergilio - UFPR

Introdução ao Projeto. Projeto de Software. 1) Objetivos. 2) Importância. Análise e Projeto - Diferenças. Importância. Silvia Regina Vergilio - UFPR Introdução ao Projeto Projeto de Software Silvia Regina Vergilio - UFPR 1. Objetivos 2. Importância 3. Fundamentos 4. O processo de projeto 5. Métodos de projeto 6. Analisando a estrutura do software 1)

Leia mais

Tecnologia para Sistemas Inteligentes Apontamentos para as aulas sobre. Introdução à Representação e Processamento de Ontologias: Framework O3f

Tecnologia para Sistemas Inteligentes Apontamentos para as aulas sobre. Introdução à Representação e Processamento de Ontologias: Framework O3f Tecnologia para Sistemas Inteligentes Apontamentos para as aulas sobre Introdução à Representação e Processamento de Ontologias: Framework O3f Luís Miguel Botelho Departamento de Ciências e Tecnologias

Leia mais

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular INTRODUÇÃO À PROGRAMAÇÃO Ano Lectivo 2014/2015

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular INTRODUÇÃO À PROGRAMAÇÃO Ano Lectivo 2014/2015 Programa da Unidade Curricular INTRODUÇÃO À PROGRAMAÇÃO Ano Lectivo 2014/2015 1. Unidade Orgânica Ciências da Economia e da Empresa (1º Ciclo) 2. Curso Informática 3. Ciclo de Estudos 1º 4. Unidade Curricular

Leia mais

PROPOSTA DE UMA METODOLOGIA PARA ELABORAR PROJETO DE ENSINO INTEGRANDO RECURSOS TECNOLÓGICOS

PROPOSTA DE UMA METODOLOGIA PARA ELABORAR PROJETO DE ENSINO INTEGRANDO RECURSOS TECNOLÓGICOS PROPOSTA DE UMA METODOLOGIA PARA ELABORAR PROJETO DE ENSINO INTEGRANDO RECURSOS TECNOLÓGICOS Fortaleza Ce Agosto 2009 Liádina Camargo Lima Universidade de Fortaleza liadina@unifor.br Categoria C Métodos

Leia mais

Direcção Regional de Educação do Algarve

Direcção Regional de Educação do Algarve MÓDULO 1 Folha de Cálculo 1. Introdução à folha de cálculo 1.1. Personalização da folha de cálculo 1.2. Estrutura geral de uma folha de cálculo 1.3. O ambiente de da folha de cálculo 2. Criação de uma

Leia mais

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos Conceitos Básicos Introdução Banco de Dados I Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM Dados

Leia mais