UNIVERSIDADE VEIGA DE ALMEIDA BACHARELADO EM SISTEMAS DE INFORMAÇÃO INTRODUÇÃO A TESTES AUTOMATIZADOS EM RUBY ON RAILS. Thiago Cifani Ayres Escola

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

Download "UNIVERSIDADE VEIGA DE ALMEIDA BACHARELADO EM SISTEMAS DE INFORMAÇÃO INTRODUÇÃO A TESTES AUTOMATIZADOS EM RUBY ON RAILS. Thiago Cifani Ayres Escola"

Transcrição

1 UNIVERSIDADE VEIGA DE ALMEIDA BACHARELADO EM SISTEMAS DE INFORMAÇÃO INTRODUÇÃO A TESTES AUTOMATIZADOS EM RUBY ON RAILS Thiago Cifani Ayres Escola Cabo Frio 2011

2 THIAGO CIFANI AYRES ESCOLA INTRODUÇÃO A TESTES AUTOMATIZADOS EM RUBY ON RAILS Trabalho desenvolvido durante a disciplina Monografia e apresentada ao Curso de Sistemas de Informação da Universidade Veiga de Almeida, campus Cabo Frio, como prérequisito para a obtenção do título de Bacharel em Sistemas de Informação. Orientador: Prof. Matheus Bousquet Bandini, M.Sc. Campus Cabo Frio 2011

3 Universidade Veiga de Almeida - UVA Faculdade de Informática Curso de Bacharelado em Sistemas de Informação Reitor: Prof. Dr. Mário Veiga de Almeida Jr. Vice-Reitor: Prof. Tarquínio Prisco Lemos da Silva Coordenador do Curso de Informática: Prof. Edgar Banca Examinadora: Prof. Matheus Bousquet Bandini (Orientador) M.Sc. em Sistemas e Computação IME/RJ Prof. Douglas Ericson Marcelino de Oliveira M.Sc. em Sistemas e Computação IME/RJ Prof. Rodrigo Lessa de Sena Especialista em Computação Gráfica - UVA Universidade Veiga de Almeida Cabo Frio Estrada das Perynas, s/n CEP: Cabo Frio RJ

4 Dedico este trabalho a Arnaldo, Rose, Priscilla e Elaine.

5 AGRADECIMENTOS Agradeço a meus pais, família, amigos e professores. Agradeço todas estas pessoas que se fizeram presentes e ocuparam com excelência o devido papel em minha vida. Agradeço pelo carinho, respeito, dedicação e incentivo para continuar mesmo com todos os atenuantes da vida.

6 LISTA DE FIGURAS Figura 3.1 Modelo MVC Rails Figura 3.2 Código Rails para Localizar Cliente por ID Figura 3.3 Exemplo de uso do Active Record Figura 4.1 Exemplo de Estrutura de Teste Unitário Figura 4.2 Teste Unitário com Asserção Figura 4.3 Teste Unitário com Assert Equals Figura 4.4 Teste Unitário com Assert Not Equal Figura 4.5 Exemplo de Repetição de Código em Teste Unitário Figura 4.6 Exemplo de Método Setup Figura 4.7 Ciclo do TDD Figura 4.8 Exemplo de Describe com RSpec Figura 4.9 Exemplo de Describe com Context e IT Figura 4.10 Exemplo de Saída Formatada do RSpec Figura 4.11 Exemplo de Teste RSpec Pente Figura 4.12 Saída RSpec Teste Pente Figura 4.13 Teste RSpec pente com mensagem personalizada Figura 4.14 Teste RSpec com It para descrever comportamento Figura 4.15 Teste RSpec Let e Specify Figura 4.16 Teste Exemplo cenário com cucumber Figura 5.1 GemFile para Testes Figura 5.2 Comandos Instalação Figura 5.3 Team Feature Figura 5.4 Team Steps Pentes Figura 5.5 Team Steps Figura 5.6 Controlador Team Figura 5.7 team_spec.rb Figura 5.8 Team model... 51

7

8 LISTA DE ABREVIATURAS E SIGLAS API BDD CoC DRY DSL ERB HTML IDE JVM MRI MVC RoR SAAS SSH SVN TDD URL VPS YAML YARV XP Application Programming Interface Behavior Driven Development Convention Over Configuration Don't Repeat Yourself Domain Specific Language Embedded Ruby Hyper Text Markup Language Integrated Development Environment Java Virtual Machine Matz's Ruby Interpreter Model View Controller Ruby on Rails Software as a Service Secure Shell Subversion Test Driven Development Uniform Resource Locator Virtual Private Server YAML Ain t Markup Language Yet another Ruby VM Extreme Programming

9 RESUMO Este trabalho apresenta as formas de desenvolvimento de software baseado em testes automatizados em Ruby on Rails como tecnologia para desenvolvimento de aplicações para a Internet. São demonstrados suas principais características e componentes. Também são exibidos diversos frameworks que facilitam a elaboração de testes e gems relacionadas. Por fim, uma pequena suíte de testes é desenvolvida, de forma a exemplificar a utilização dos recursos apresentados. Através da análise das características da ferramenta e dos resultados obtidos no estudo de caso é respondida a razão do Ruby on Rails ser uma plataforma que cumpre com sucesso sua proposta de simplicidade e agilidade.

10 ABSTRACT This paper presents the ways of developing software-based automated tests in Ruby on Rails as the technology to develop applications for the Internet. Showing us the main characteristics and components. Also displayed are several frameworks that facilitate the development of tests and related gems. Finally, a small tests suite is developed in order to illustrate the use of appeals. By analyzing the characteristics of the tool and the results obtained in the study case, is answered the reason for Ruby on Rails to be a platform that successfully fulfills its proposal of simplicity and agility.

11 SUMÁRIO 1 INTRODUÇÃO CONTEXTUALIZAÇÃO PROBLEMA HIPÓTESE OBJETIVO JUSTIFICATIVA METODOLOGIA DE PESQUISA ORGANIZAÇÃO DO TEXTO HISTÓRICO O COMPUTADOR LINGUAGENS DE PROGRAMAÇÃO MANIFESTO ÁGIL TECNOLOGIAS ENVOLVIDAS RUBY RubyGems RVM RAILS Padrão MVC Suporte a Modelo no Rails Mapeamento Objeto Relacional Active Record Action Pack: Visualização e Controlador Suporte a Visualização Controlador TESTES AUTOMATIZADOS TESTES EM RUBY ON RAILS Setup e TearDown O que pode ser testado em Rails Fixtures... 34

12 4.2 TEST DRIVEN DEVELOPMENT BEHAVIOR DRIVEN DEVELOPMENT Os Princípios do BDD RSPEC Descrevo Comportamentos Exemplos Pentes Before, After, Specify, Let CUCUMBER ESTUDO DE CASO AMBIENTAÇÃO PROERD Origem Propósito OBJETIVO IMPLEMENTAÇÃO Ferramentas Testes com Rspec e Cucumber CONSIDERAÇÕES FINAIS CONCLUSÕES ANEXO A CÓDIGO FONTE TESTES REFERÊNCIAS BIBLIOGRÁFICAS

13 1. INTRODUÇÃO 1.1 Contextualização Atualmente o desenvolvimento de software tem crescido em larga escala no Brasil e no mundo. Com a popularização da internet e dos smartsfones, desenvolver software tornou-se uma forma de adquirir conhecimento e ra. Mas com o grande aumento de profissionais na área, observou-se a necessidade de elaborar padrões de especificação para o desenvolvimento desses aplicativos. Para facilitar o trabalho das equipes na elaboração e implementação do projeto, são tomadas boas práticas para desenvolver software funcional e legível, uma das mais importantes práticas adotadas para essa facilitação são os testes automatizados. 1.2 Problema A grande dificuldade que as empresas de software enfrentam nos dias de hoje é a manutenção do sistema em produção. Sabe-se que necessidades surgem a todo instante, e que para o desenvolvedor, lembrar do código criado a algum tempo não é uma tarefa fácil. O problema dessa deficiência torna a manutenção do código quase inviável. O rodízio de profissionais em equipes também torna a padronização do código algo de difícil administração. Devido a essas dificuldades, foram criados frameworks para facilitar o processo de criação e manutenção do código fonte, otimizando todo o processo e garantido o retorno esperado do mesmo. 1.3 Hipótese O ambiente de testes automatizados em Ruby On Rails, foco do trabalho, é um conjunto de ferramentas integradas que visam tornar o desenvolvimento de aplicações web simples e rápido. Esse ambiente visa cobrir o software com testes que garantem que determinada funcionalidade foi implementada com êxito e executa sua função da melhor forma esperada. Os testes automatizados também visão auxiliar o desenvolvimento através de redução na complexidade do código, o que facilitaria a manutenção futura. Através dos testes, pode ser feita uma leitura de cada método do sistema em questão e enter seu comportamento por completo. A maioria dos testes auxilia o programador a enter a regra de negócio e programá-la da melhor maneira possível. 13

14 1.4 Objetivo O objetivo desta pesquisa é apresentar o ambiente de Testes Automatizados em Ruby on Rails. Seus benefícios e usos serão explicados ao decorrer do trabalho. Será respondido ao longo deste trabalho o que é teste automatizado, TDD e BDD. Serão explicadas as suas principais características, componentes e seu funcionamento. Ao final, será apresentado um projeto construído utilizando Ruby on Rails de forma a validar a proposta dos testes automatizados. 1.5 Justificativa Ao adotar o padrão ágil de desenvolvimento que prioriza um produto de qualidade e um total contato com o cliente, o desenvolvedor se depara com um cenário onde existem mudanças constantes. Essas mudanças podem prejudicar a qualidade do código exponencialmente se não trabalhada de uma forma a facilitar seu entimento. Com testes automatizados, qualquer desenvolvedor que enta teste poderá determinar perfeitamente o comportamento da aplicação e de seus métodos. Com eles também é possível afirmar que quando uma funcionalidade é terminada realmente está terminada. Os testes facilitam a escrita do código, facilita a interação da equipe e torna o sistema mais resistente a falhas e bugs. 1.6 Metodologia de Pesquisa Foram utilizados livros especializados no assunto como fontes de pesquisa, documentos produzidos pela comunidade que desenvolve a plataforma Ruby On Rails, além de sites na internet. 1.7 Organização do Texto O texto está organizado em 6 capítulos. O Capítulo 2 mostra a evolução das tecnologias que culminaram com o surgimento de aplicações na Internet, linguagens de programação e o Manifesto Ágil. O Capítulo 3 apresenta a linguagem de programação Ruby, suas origens e ideais. Introduzirá o framework Ruby On Rails seus componentes e principais características. O Capítulo 4 apresenta 14

15 testes automatizados em Ruby On Rails, TDD, BDD e o uso de dois frameworks muito utilizados na comunidade para determinar o comportamento da aplicação e fazer teste de integração. O capítulo 5 procura demonstrar a utilização dos conceitos apresentados através do desenvolvimento de um sistema baseado na plataforma Ruby On Rails. As considerações finais sobre o projeto de estudo deste texto se encontram no Capítulo 6. 15

16 2. HISTÓRICO 2.1 O Computador Pode-se considerar o computador como uma das grandes descobertas da humanidade. Temse hoje o computador como uma ferramenta essencial no dia a dia de muitas empresas e indústrias. Seu principal papel é o processamento de dados, sabe-se que os dados que são inseridos passam por um processamento e armazenagem, o que permite a análise e compreensão de uma larga escala de informação em poucos segundos. Na década de 40, os computadores eram gigantescos e ocupavam grande espaço físico, eram utilizados principalmente para pesquisas científicas e operações militares. Os computadores dessa década tinham programas específicos para cada área de atuação e eram usados somente por especialistas. Com o passar das décadas e a grande quantidade de informação a serem processadas, as empresas foram motivadas a expandir o uso dos computadores. Com isso, passaram a fabricar computadores com tamanhos reduzidos e com um poder de processamento maior. Existiam terminais de acesso a grandes mainframes, estes, gerenciavam todos os aplicativos e efetuavam o processamento dos dados. Devido à popularização dos computadores nas empresas, notou-se uma grande possibilidade de expandir o mesmo para a utilização doméstica, o que proporcionou um maior contato do usuário leigo e o surgimento de programas personalizados para ater diversas necessidades que surgiriam com o tempo. Atualmente, com o crescimento da demanda por computadores e dispositivos portáteis de acesso a internet e a aplicativos, os smartfones e tecnologias móveis tem tomado uma grande fatia do mercado tecnológico para utilização e resolução de problemas rotineiros. 2.2 Linguagem de Programação Uma linguagem de programação é um conjunto de instruções que são lidas por uma máquina para efetuar algum processamento, ou seja, este conjunto de instruções forma o programa de computador. A linguagem permite que o programador controle o comportamento do programa e as decisões do computador de acordo com uma série de blocos de códigos e estruturas que permitem a tomada de decisões pela máquina. 16

17 O conjunto de instruções que são digitadas no computador compõem o que é chamado de código fonte de um software. O que será compilado e transformado em linguagem de máquina para que o processador venha a enter. A principal motivação para utilizar uma linguagem de programação para a elaboração de um software é a produtividade. A maioria das linguagens de programação eleva o nível da programação utilizando sintaxe e conceitos mais próximos da linguagem humana. As primeiras linguagens de programação surgiram na década de 50, so como principais daquela época, FORTRAN, LISP, COBOL. Na década de 70 as linguagens que começaram a aparecer foram, Pascal, SQL e C, então começou a debater-se sobre a criação de linguagens estruturadas. Programação estruturada é a programação onde é utilizado um fluxo para a execução do código escrito, ao contrário das linguagens que utilizavam o famoso GOTO para levar a diversas partes do código, a programação estruturada segue um bloco de código com várias funções e subrotinas que seguidas estruturalmente processam as informações de acordo com as condições impostas pelo desenvolvedor. Um pouco mais tarde foi criada a programação orientada a objetos. A orientação a objetos visa determinar escopos reduzidos para a construção dos blocos de código, facilitando assim o entimento do programa e sua real função e fluxo de troca de mensagens. Esse paradigma visa à modelagem de objetos do mundo real, agregando a eles comportamentos semelhantes no contexto da aplicação. A comunicação entre os objetos é feita através de mensagens entre os métodos. As linguagens que inspiraram a orientação a objetos foram o C++ e o Perl. Na década de 90 houve o surgimento do Java, Python e C#. A maioria dessas linguagens era direcionada a web, devido à popularização da internet no mundo e a necessidade de aplicações para internet. Uma peculiaridade da era da internet, foi o surgimento de linguagens de script, como PHP, Ruby e JavaScript. 2.3 Manifesto Ágil Com o aumento exponencial do uso de computadores por empresas e indivíduos, a necessidade de produzir software tornou-se algo vital para a humanidade. Várias empresas começaram a ser formadas ao redor do globo, desenvolvo de formas distintas. Com a necessidade de mão de obra e padronização na produção, áreas da computação foram surgindo, tais como a Engenharia de Software. Portanto, foram elaborados alguns modelos para especificar o desenvolvimento de sistemas, dos quais se destaca o modelo cascata ou seqüencial, que visa à construção do software por etapas pré-determinadas. 17

18 Ao longo dos anos, alguns desenvolvedores perceberam que a forma de trabalhar não estava correta, ou seja, as questões de levantamento de requisito antes e codificação depois de preencher papéis de documentação não se encaixavam na realidade do mercado. Esses, mais conhecidos como signatários, elaboraram o manifesto ágil, que determina algumas prioridades na elaboração do software no mundo real. Esse manifesto visa reforçar as boas práticas para desenvolvimento apontando o modelo a ser seguido num projeto. Nesse manifesto temos quatro valores principais: Os indivíduos e suas interações acima de procedimentos e ferramentas O funcionamento do software acima de documentação abrangente A colaboração dos clientes acima da negociação de contratos A capacidade de resposta às mudanças acima de um plano pré-estabelecido O que foi observado com esses valores principais, é que o processo clássico para elaboração de um projeto de software era engessado por partes vitais e seqüenciais, ou seja, se alguma das partes não fosse completada a tempo, o projeto ficava congelado esperando liberação de tal parte. Já o manifesto ágil prega uma interação constante com o cliente para ter feedback das funcionalidades implementadas, o produto so posto em produção antes mesmo de uma extensa documentação, e outros valores que vem melhorando a forma de desenvolver software atualmente. A agilidade nos projetos não implica na velocidade do desenvolvimento e sim nos curtos períodos de tempo que o produto leva para ser entregue, ou seja, têm-se entregas semanais dos produtos, para saber se tal funcionalidade ate a necessidade do cliente. A busca por simplicidade no código e qualidade técnica também são fatores abordados pelo manifesto ágil. A partir dele, alguns dos signatários ganharam notoriedade no meio do mundo do desenvolvimento, dentre eles podemos ressaltar Kent Beck, o criador do XP (BECK, 99). A técnica do XP é utilizada para agilizar o processo de desenvolvimento e reduzir a complexidade do código criado pelo desenvolvedor através de boas práticas, so elas: Testes automatizados Programação em Par Refatoração Com os testes é possível afirmar que o código elaborado realmente faz o que ele se propõe a fazer. A programação em par visa à qualidade do software e o aprizado com duas pessoas 18

19 programando juntas uma funcionalidade. E a refatoração é o ato de sempre melhorar o código uma vez criado. Refatoração ajuda você a fazer código mais legível. Quando estamos refatorando, vemos código que funciona, mas ainda não está totalmente estruturado. Um pouco de tempo gasto com refatoração pode fazer o código ser auto-explicativo. Programar dessa forma é sempre querer mostrar o que aquilo significa pra você. [FOWL 99, p. 48] 19

20 3. TECNOLOGIAS ENVOLVIDAS 3.1 Ruby Antigamente, a forma de diferenciar uma linguagem era fácil: haviam apenas a compilada, como C ou Fortran, ou a interpretada, como BASIC. Sabe-se que linguagens compiladas dão velocidade e acesso de baixo nível em computadores. Já as interpretadas são de alto nível, porém mais lentas. O tempo se passou e alguns designers de linguagem começaram a chamar suas criações de Linguagem de Script. Isso significa que essas linguagens, além de serem interpretadas, podiam ser usadas para substituir arquivos batch e shell scripts, manipulando o comportamento de outros programas e algumas funções do sistema operacional. Dentre as linguagens de Script podemos citar: Python, Perl, TCL e Ruby. [THOM, 04] Ruby é uma linguagem de script com uma tipagem dinâmica, forte e gerenciamento de memória automático. É fácil de aprer. Tarefas diárias são simples de codificar e, uma vez to as criado, é fácil mantê-las e expandí-las. É uma linguagem transparente, porque não existem partes obscuras na escrita do código, por outro lado, esse é muito legível e torna o entimento fácil para o programador. A dificuldade que o programador tem em outras linguagens para expressar o pensamento lógico, não existe em Ruby. Pela facilidade que há em escrever código em Ruby, podemos nos preocupar apenas com as regras de negócio do escopo do software e com alguns padrões de manutenção e melhorias constantes. Com a facilidade na leitura do código digitado, o risco de errar ou escrever código com comportamento duvidoso é quase nula. Ruby é uma linguagem concebida pelo intelecto de um homem através dos pontos positivos de diversas linguagens. Yukihiro Matsumoto, mais conhecido na comunidade como Matz, pegou os pontos principais de diversas linguagens como, ADA, LISP, Smalltalk, Python, Perl, e incorporou no núcleo da linguagem. [FLAN, 08] Pode-se ressaltar que Ruby é fortemente orientada a objetos, ou seja, tudo é um objeto. Outro aspecto importante é que esta linguagem possui uma poderosa capacidade de metaprogramação. Matz se preocupou em fazer uma linguagem que realmente fosse amiga do programador, tornando seu trabalho diário divertido. Em suas próprias palavras ele dizia: Ruby is designed to make programmers happy (Ruby é projetada para fazer os programadores felizes) [MATZ]. 20

21 Ruby é uma linguagem orientada a objetos genuína. Tudo que é manipulado é um objeto e os resultados dessa manipulação também são objetos. [THOM 04, p.09] A primeira publicação de Ruby, a versão 0.95, foi lançada em dezembro de O primeiro livro sobre a linguagem fora do Japão foi impresso somente em A versão da linguagem amplamente utilizada hoje é a 1.8. Em 30 de janeiro de 2009 a versão foi introduzida, incorporando novas características e melhorias, principalmente no que diz respeito ao desempenho. Ruby, até sua versão 1.8, tinha apenas duas principais implementações. A primeira e mais comum é a MRI (Matz s Ruby Interpreter), interpretador do próprio Matsumoto. A segunda é chamada JRuby, e roda o código ruby dentro da JVM (Java Virtual Machine). A partir da versão 1.9 uma nova máquina virtual é utilizada, o YARV (Yet another Ruby VM), uma máquina virtual que interpreta byte code visando aumentar a velocidade de programas em Ruby RubyGems RubyGems é um gerenciador de pacotes para a linguagem de programação Ruby. Uma gem é um conjunto de códigos reutilizáveis que podem ser distribuídos num formato muito parecido com o repositório apt-get do Linux. O interessante na utilização de gems é o padrão imposto na elaboração da mesma e seu controle de versões. RubyGems é um framework de instalação e empacotamento para bibliotecas e aplicativos, facilitando a localização, instalação, atualização e desinstalação de pacotes Ruby. (THOM 04, p. 203) Para instalar uma gem no Ruby, basta digitar o seguinte comando: gem install nomedagem 21

22 3.1.3 RVM Ruby Version Manager RVM é um gerenciador de controle de versão para a linguagem Ruby que permite ao desenvolvedor ter várias versões da linguagem instaladas na mesma máquina. Antes da criação do RVM era difícil e conflitante utilizar versões diferentes do Ruby com gems diferentes e alternar de acordo com cada projeto. Já com o uso da RVM basta digitar: rvm use versaodoruby, para utilizar a versão especificada. Com o RVM é possível ter várias versões de Ruby instalados na máquina e várias gems dentro de cada versão, o que facilita bastante na hora de desenvolver um projeto, bem como contribui na questão da compatibilidade entre sistemas desenvolvidos com versões distintas. 3.2 Rails Com a popularização do desenvolvimento web e com as práticas ágeis so incorporadas nas empresas em todo o mundo, a maioria dos desenvolvedores passaram a reaproveitar código para evitar a repetição na hora de iniciar um novo projeto e ter que configurar todos os diretórios, pastas, banco de dados e ambiente. A partir do momento que a reutilização de código tornou-se uma tarefa quase que obrigatória na área de desenvolvimento, foram surgindo os frameworks para abstração de camadas mais complexas de programação e para reuso do código usado em projetos. Uma façanha que a orientação a objetos conseguiu obter foi à estruturação de blocos de códigos imensos, em pequenas classes especialistas. Alguns conceitos como Herança, Polimorfismo e Interfaces auxiliam o desenvolvedor a estruturar melhor o seu código e fazê-lo sem muitas linhas em um único arquivo. Pensando assim, surgiu o Ruby on Rails. David Heinemeier Hansson (DHH), o criador do Rails, cansado de utilizar códigos gigantescos, como Java e PHP, resolveu utilizar alguma linguagem nova que atesse sua necessidade naquele momento. Ele então, ao iniciar seu projeto intitulado BaseCamp, na 37 Signals, empresa na qual ele foi contratado como programador, começou a preparar seu ambiente de desenvolvimento, fazo classes genéricas, abusando da orientação a objetos e da linguagem Ruby, que permitia o uso intenso deste paradigma.[ruby, 11] Rails foi lançado em 2005 para uso pela comunidade como open source, o que permitiu sua constante melhora e adição de funcionalidades por um grupo intitulado CORE TEAM e por outros desenvolvedores. 22

23 ROR (Ruby On Rails) tem como objetivo facilitar o desenvolvimento de aplicações web. É um framework que facilita a elaboração de aplicativos e torna fácil a manutenção devido a alguns princípios de qualidade de software. O primeiro princípio, Convention Over Configuration (CoC), diz que o programador que seguir algumas convenções terá rapidamente sua aplicação rodando com o mínimo de complexidade. Programadores Java que já passaram por problemas de depências, configurações de XML (extensible Markup Language), banco de dados e servidores, podem facilmente migrar para ROR e ver o quanto de configuração é encapsulada. Rails prioriza indivíduos e interações. Não existem ferramentas pesadas, configurações complexas e processos elaborados. [RUBY, 2011, p21] Rails também possui o princípio de DRY (Don t Repeat Yourself), ou seja, deve-se apenas ter código no lugar onde aquele código destina-se a ser usado. Não se deve repetir o código gerado em outros lugares. Se esse código é usado em vários locais, deve-se torná-lo genérico e de acesso múltiplo a várias classes. DHH quando criou o Rails fez pensando de forma ágil e dentro de alguns padrões de projeto. Uma característica que confirma essa afirmação é a criação de três ambientes de execução, Production (Produção), Development (Desenvolvimento) e Test (teste). Como se sabe, uma aplicação em produção tem toda uma particularidade, assim como nos outros ambientes. Em Java, é necessário sempre que feita uma modificação, reiniciar o servidor e iniciar o mesmo para visualizar a modificação efetuada. Já no ROR tem-se como utilizar o ambiente de desenvolvimento e simplesmente atualizar o navegador para visualizar a modificação efetuada no código. Ratificando o uso de metodologias ágeis, o ambiente de teste fora criado para facilitar a execução de suítes de testes e configuração de algumas peculiaridades como seed de banco de dados, fixtures, etc. E o último conceito, o KISS (Keep it Simple Stupid) visa manter o código criado na forma mais simples possível, permitindo que qualquer desenvolvedor enta o que o mesmo faz, e reforçando o uso de refatoração no código criado Padrão MVC Em 1979, Trygve Reenskaug desenvolveu uma nova arquitetura para desenvolver aplicações interativas. Na sua concepção, as aplicações eram distribuídas em três partes: Modelo, Visualização e Controlador. [RUBY, 11] 23

24 O modelo é responsável por manter o estado da aplicação. O modelo quase não tem contato com o usuário, ele é responsável pelo armazenamento da informação na base de dados. Representa também a entidade no sistema a ser desenvolvido e mantém em si, toda a regra de negócio da aplicação. Um modelo é mais que apenas dados. Ele agrega todas as regras de negócio que se aplica aos dados. [RUBY, 2011, p. 51] A visualização é responsável pela apresentação dos dados obtidos pelo modelo, gerando assim a interface. Sabe-se que essa interface pode ser representada de diversas formas para o mesmo modelo, depo assim da necessidade do usuário. O controlador como o próprio nome já diz, controla toda interação do usuário com o sistema e qual visualização o mesmo vai obter, ou seja, ele orquestra o modelo, e a visualização deste, e as entradas de dados do usuário. É através do controlador que podemos buscar adicionar e localizar dados no sistema. Ruby on Rails é um framework MVC. Ao criar uma aplicação Rails, pode-se observar que o framework cria automaticamente os diretórios para os controladores, as visualizações e os modelos. So assim, o Rails consegue interpretar todo o código adicionado nos três locais, respeitando o conceito de MVC e deixando a aplicação mais fácil de ser mantida. Figura Fonte: Modelo MVC Rails,

25 3.2.2 Suporte a Modelo no Rails O objetivo principal do Rails é proporcionar aos desenvolvedores para web que utilizam o padrão MVC a possibilidade de armazenar dados no banco de dados através da própria aplicação. Ele trata cada modelo criado através do framework como uma entidade, e através dessa convenção nota-se que o Rails cria automaticamente a tabela no banco de dados para receber os respectivos dados e seus relacionamentos caso existam. O problema em trabalhar com uma linguagem de programação orientada a objetos e um banco de dados relacional já é conhecido, devido à complexidade em questão. É correto afirmar que objetos possuem dados e métodos. Em contrapartida, bancos de dados são somente linhas e colunas com conjunto de valores. O mapeamento objeto-relacional sempre foi uma tarefa difícil de ser implementada, até mesmo em outras linguagens. Devido a essa dificuldade, alguns desenvolvedores começaram a estudar padrões de mapeamento objeto-relacional, o que permitia a comunicação e modelagem dos objetos em colunas do banco de dados. Essas bibliotecas que fazem essa comunicação são conhecidas como ORM s (Object-Relational Mapping) Mapeamento Objeto-Relacional Bibliotecas de Mapeamento Objeto-Relacional mapeiam as tabelas do banco de dados em classes. Por exemplo, se existe uma tabela chamada cliente, deve existir uma classe chamada cliente. Os objetos clientes correspondem a linhas na tabela e seus atributos a colunas da mesma. Cada objeto tem métodos get e set para preenchê-lo com os dados das colunas. Rails, em específico, traz métodos que auxiliam a manipular os dados vindos do banco de dados. Por exemplo, é possível observar nesse código Ruby a complexidade SQL que foi omitida para achar um cliente por seu código: cliente = Cliente.find(1) Figura 3.2 Código Rails para localizar Cliente por id 25

26 Em resumo, uma camada de Mapeamento Objeto-relacional mapeia tabelas para classes, linhas para objetos e colunas para atributos desse objeto. Geralmente, para que esse processo ocorra, é necessário utilizar arquivos XML para fazer o relacionamento dos campos. Porém, com a Convenção sobre a Configuração do Rails, o processo é automático Active Record Active Record (AR) é a camada ORM que vem com o Rails. Ele segue estritamente o padrão dos ORM s tradicionais, porém, uma das grandes adições feitas foi à redução de configuração se o padrão do framework for seguido. Para enter melhor como isso é feito, veremos um código em Rails de um mapeamento de uma tabela chamada clientes: classcliente<activerecord::base cliente = Cliente.find(1) cliente.nome = Thiago cliente.save Figura 3.3 Exemplo de Uso do AR Como é observado a classe automaticamente, quando criada, herda de ActiveRecord::Base, que é a classe ORM que vem por padrão em Rails. Com essa classe herdada, todos os métodos e atributos da classe ActiveRecord passam a fazer parte da classe Cliente, podo simplesmente fazer um find e localizar um cliente por id. Localizando o registro, é possível modificá-lo e depois salvá-lo na base de dados. O AR do Rails é a base do Modelo do padrão MVC e também um padrão de projeto estabelecido por Martin Fowler [FOW 03]. Ele possui algumas validações dos atributos pertencentes ao modelo e outros métodos que fazem dele um framework prático e ú. 3.3 Action Pack: Visualização e Controlador Quando é analisado a fundo a visualização e o controlador no padrão MVC, é possível perceber o quão interligados estão. O controlador recebe várias requisições das interfaces geradas 26

Entendendo Rails. Fabio Akita Surgeworks Brazil Rails Practice Manager www.akitaonrails.com

Entendendo Rails. Fabio Akita Surgeworks Brazil Rails Practice Manager www.akitaonrails.com Entendendo Rails Fabio Akita Surgeworks Brazil Rails Practice Manager www.akitaonrails.com 37signals Criado por David Heinemeier Hansson, em 2004 Extraído do aplicativo Basecamp Feito em Ruby, em vez de

Leia mais

Sistema Gerador de Anúncios para Compra e Venda On-line. Leandro de Oliveira ol.leandro@gmail.com

Sistema Gerador de Anúncios para Compra e Venda On-line. Leandro de Oliveira ol.leandro@gmail.com Sistema Gerador de Anúncios para Compra e Venda On-line Leandro de Oliveira ol.leandro@gmail.com Roteiro da Apresentação Motivação Conceitos e Tecnologias Objetivos do trabalho Sistema SideCart Conclusões

Leia mais

PRESIDÊNCIA DA REPÚBLICA SECRETARIA-GERAL Secretaria-Executiva

PRESIDÊNCIA DA REPÚBLICA SECRETARIA-GERAL Secretaria-Executiva Projeto PNUD BRA/12/018 - Documento técnico com complementação da documentação de instalação e uso da plataforma Noosfero contendo conceitos e tutoriais. Consultora: Daniela Soares Feitosa Contrato n o

Leia mais

Centro Universitário Metodista Benne1 Rio de Janeiro, Dezembro de 2009. Rafael Polo e Sabrina Arêas

Centro Universitário Metodista Benne1 Rio de Janeiro, Dezembro de 2009. Rafael Polo e Sabrina Arêas Centro Universitário Metodista Benne1 Rio de Janeiro, Dezembro de 2009 Rafael Polo e Sabrina Arêas Contexto 60 s - Primeiros sistemas de informação corporativos. 70 s Desenvolvimento e comercialização

Leia mais

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE Renan Leme Nazário, Ricardo Rufino Universidade Paranaense (Unipar) Paranavaí PR - Brasil renazariorln@gmail.com, ricardo@unipar.br Resumo. Este artigo

Leia mais

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração O livro

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração O livro Desenvolvimento em PHP usando Frameworks Elton Luís Minetto Agenda Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração O livro Ambiente Web É o ambiente

Leia mais

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração Desenvolvimento em PHP usando Frameworks Elton Luís Minetto Agenda Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração Ambiente Web É o ambiente formado

Leia mais

PROPOSTA DE SOFTWARE DE INSTALAÇÃO PARA UM AMBIENTE INTEGRADO DE GERÊNCIA DE PROJETOS E DE PROCESSOS DE NEGÓCIOS

PROPOSTA DE SOFTWARE DE INSTALAÇÃO PARA UM AMBIENTE INTEGRADO DE GERÊNCIA DE PROJETOS E DE PROCESSOS DE NEGÓCIOS PROPOSTA DE SOFTWARE DE INSTALAÇÃO PARA UM AMBIENTE INTEGRADO DE GERÊNCIA DE PROJETOS E DE PROCESSOS DE NEGÓCIOS Élysson Mendes Rezende Bacharelando em Sistemas de Informação Bolsista de Iniciação Científica

Leia mais

Começando com Ruby on Rails @gibsongabriel

Começando com Ruby on Rails @gibsongabriel Começando com Ruby on Rails @gibsongabriel Yukiriho 'Matz' Matsumoto http://ruby-lang.org/pt/ Ruby é uma linguagem de programação interpretada, com tipagem forte e dinâmica, que tem como foco a simplicidade

Leia mais

Frameworks para Desenvolvimento em PHP Elton Luís Minetto

Frameworks para Desenvolvimento em PHP Elton Luís Minetto Frameworks para Desenvolvimento em PHP Elton Luís Minetto Novatec capítulo 1 Introdução Uma das grandes vantagens do PHP é sua facilidade de aprendizado. Ao ler poucas páginas de tutoriais ou de algum

Leia mais

FERRAMENTAS PARA DESENVOLVIMENTO EM C#

FERRAMENTAS PARA DESENVOLVIMENTO EM C# FERRAMENTAS PARA DESENVOLVIMENTO EM C# Camila Sanches Navarro 1,2, Wyllian Fressatti 2 ¹Universidade paranaense (Unipar) Paranavaí PR Brasil sanchesnavarro@gmail.com wyllian@unipar.br Resumo. Este artigo

Leia mais

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA UTILIZAÇÃO DE RUBY ON RAILS PARA O DESENVOLVIMENTO DE UMA APLICAÇÃO COM BANCO DE DADOS LEGADO ELLISON MAEDA ORIENTADOR: GÉCEN DE MARCHI MARINGÁ

Leia mais

Ambientes Visuais. Ambientes Visuais

Ambientes Visuais. Ambientes Visuais Ambientes Visuais Inicialmente, apenas especialistas utilizavam os computadores, sendo que os primeiros desenvolvidos ocupavam grandes áreas e tinham um poder de processamento reduzido. Porém, a contínua

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

Lógica de Programação

Lógica de Programação Lógica de Programação Unidade 4 Ambiente de desenvolvimento Java QI ESCOLAS E FACULDADES Curso Técnico em Informática SUMÁRIO A LINGUAGEM JAVA... 3 JVM, JRE, JDK... 3 BYTECODE... 3 PREPARANDO O AMBIENTE

Leia mais

5 Detalhes da Implementação

5 Detalhes da Implementação Detalhes da Implementação 101 5 Detalhes da Implementação Neste capítulo descreveremos detalhes da implementação do Explorator que foi desenvolvido usando o paradigma MVC 45 e o paradigma de CoC 46 (Convention

Leia mais

4 O Workflow e a Máquina de Regras

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

Test-driven Development no Rails Começando seu projeto com o pé direito. 2007, Nando Vieira http://simplesideias.com.br

Test-driven Development no Rails Começando seu projeto com o pé direito. 2007, Nando Vieira http://simplesideias.com.br Test-driven Development no Rails Começando seu projeto com o pé direito 2007, Nando Vieira http://simplesideias.com.br O que iremos ver? slides = Array.new slides

Leia mais

DOMAIN-DRIVEN DESIGN E TEST-DRIVEN DEVELOPMENT

DOMAIN-DRIVEN DESIGN E TEST-DRIVEN DEVELOPMENT DOMAIN-DRIVEN DESIGN E TEST-DRIVEN DEVELOPMENT Jaqueline Rissá Franco email: jaquerifr@gmail.com Karla Marturelli Mattos Luciano Mathias Doll João Almeida Resumo: Este artigo mostra novas abordagens na

Leia mais

SISTEMA GERENCIAL TRATORPLAN

SISTEMA GERENCIAL TRATORPLAN SISTEMA GERENCIAL TRATORPLAN SIGET Fabrício Pereira Santana¹, Jaime William Dias¹, ², Ricardo de Melo Germano¹ ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil fabricioblack@gmail.com germano@unipar.br

Leia mais

Programação Web Aula 8 - Rails (Introdução)

Programação Web Aula 8 - Rails (Introdução) Programação Web Aula 8 - Rails (Introdução) Departamento de Informática UFPR 7 de Abril de 2014 1 Rails Básico Mágica Princípios Características Criando uma aplicação Levantando o Servidor Examinando o

Leia mais

Processo de Desenvolvimento de Software. Unidade V Modelagem de PDS. Luiz Leão luizleao@gmail.com http://www.luizleao.com

Processo de Desenvolvimento de Software. Unidade V Modelagem de PDS. Luiz Leão luizleao@gmail.com http://www.luizleao.com Processo de Desenvolvimento de Software Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático desta aula Modelo Cascata (Waterfall) ou TOP DOWN. Modelo Iterativo. Metodologia Ágil.

Leia mais

DESENVOLVIMENTO DE SISTEMAS COM GRAILS + IREPORT

DESENVOLVIMENTO DE SISTEMAS COM GRAILS + IREPORT DESENVOLVIMENTO DE SISTEMAS COM GRAILS + IREPORT Prof. Marcos Vinicius Fidelis Universidade Tecnológica Federal do Paraná Campus Ponta Grossa Universidade Estadual de Ponta Grossa ROTEIRO O Legado Vitórias

Leia mais

Reuso. Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior

Reuso. Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior Reuso Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior Reutilização de Software Na maioria das áreas de engenharia de software, sistemas são desenvolvidos

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 06 PROFª BRUNO CALEGARO

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 06 PROFª BRUNO CALEGARO UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 06 PROFª BRUNO CALEGARO Santa Maria, 27 de Setembro de 2013. Revisão aula anterior Desenvolvimento Ágil de Software Desenvolvimento e entrega

Leia mais

CURSO DESENVOLVEDOR JAVA Edição 2009

CURSO DESENVOLVEDOR JAVA Edição 2009 CURSO DESENVOLVEDOR JAVA Edição 2009 O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma Orientado a Objetos e com o uso

Leia mais

SHELL SCRIPT P R O F I S S I O N A L

SHELL SCRIPT P R O F I S S I O N A L SHELL SCRIPT P R O F I S S I O N A L Aurélio Marinho Jargas Novatec Capítulo 1 Programas sim, scripts não Este livro ensina a fazer programas e não scripts. Seu objetivo é transformar scripteiros em programadores,

Leia mais

Introdução ao IDE Netbeans (Programação Java)

Introdução ao IDE Netbeans (Programação Java) Universidade Federal do ABC (UFABC) Disciplina: Processamento da Informação (BC-0505) Assunto: Java e Netbeans Introdução ao IDE Netbeans (Programação Java) Conteúdo 1. Introdução... 1 1.1. Programas necessários...

Leia mais

Geração e execução de scripts de teste em aplicações web a partir de casos de uso direcionados por comportamento 64

Geração e execução de scripts de teste em aplicações web a partir de casos de uso direcionados por comportamento 64 direcionados por comportamento 64 5 Estudo de caso Neste capítulo serão apresentadas as aplicações web utilizadas na aplicação da abordagem proposta, bem como a tecnologia em que foram desenvolvidas, o

Leia mais

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP AULA 4 VISÃO BÁSICA DE CLASSES EM PHP Antes de mais nada, vamos conhecer alguns conceitos, que serão importantes para o entendimento mais efetivos dos assuntos que trataremos durante a leitura desta apostila.

Leia mais

Teste de software. Definição

Teste de software. Definição Definição O teste é destinado a mostrar que um programa faz o que é proposto a fazer e para descobrir os defeitos do programa antes do uso. Quando se testa o software, o programa é executado usando dados

Leia mais

4 Desenvolvimento da ferramenta

4 Desenvolvimento da ferramenta direcionados por comportamento 38 4 Desenvolvimento da ferramenta Visando facilitar a tarefa de documentar requisitos funcionais e de gerar testes automáticos em uma única ferramenta para proporcionar

Leia mais

Boas Práticas de Desenvolvimento Seguro

Boas Práticas de Desenvolvimento Seguro Boas Práticas de Desenvolvimento Seguro Julho / 2.012 Histórico de Revisões Data Versão Descrição Autor 29/07/2012 1.0 Versão inicial Ricardo Kiyoshi Página 2 de 11 Conteúdo 1. SEGURANÇA DA INFORMAÇÃO

Leia mais

FERRAMENTAS NECESSÁRIAS PARA O DESENVOLVIMENTO EM C#

FERRAMENTAS NECESSÁRIAS PARA O DESENVOLVIMENTO EM C# FERRAMENTAS NECESSÁRIAS PARA O DESENVOLVIMENTO EM C# Camila Sanches Navarro 1,2, Willian Magalhães 2 ¹Universidade paranaense (Unipar) Paranavaí PR Brasil sanchesnavarro@gmail.com wmagalhaes@unipar.br

Leia mais

Ruby. Conceitos básicos. Prof. Ms. Leonardo Botega. Diego Gabriel Pereira

Ruby. Conceitos básicos. Prof. Ms. Leonardo Botega. Diego Gabriel Pereira Ruby Conceitos básicos Prof. Ms. Leonardo Botega Diego Gabriel Pereira Quem somos nós Leonardo Botega Bacharel em Ciência da Computação UNIVEM Mestre em Ciência da Computação UFSCar Doutorando em Ciência

Leia mais

Padrões de Contagem de Pontos de Função

Padrões de Contagem de Pontos de Função Padrões de Contagem de Pontos de Função Contexto Versão: 1.0.0 Objetivo O propósito deste documento é apresentar os padrões estabelecidos para utilização da técnica de Análise de Pontos de Função no ambiente

Leia mais

Algumas propriedades dos objetos:

Algumas propriedades dos objetos: Orientação a Objetos Vivemos num mundo de objetos. Esses objetos existem na natureza, nas entidades feitas pelo homem, nos negócios e nos produtos que usamos. Eles podem ser categorizados, descritos, organizados,

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 05 PROFª BRUNO CALEGARO

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 05 PROFª BRUNO CALEGARO UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 05 PROFª BRUNO CALEGARO Santa Maria, 24 de Setembro de 2013. Revisão aula anterior Processos de Software Engenharia de Requisitos, Projeto,

Leia mais

UTILIZANDO ICONIX NO DESENVOLVIMENTO DE APLICAÇÕES DELPHI

UTILIZANDO ICONIX NO DESENVOLVIMENTO DE APLICAÇÕES DELPHI UTILIZANDO ICONIX NO DESENVOLVIMENTO DE APLICAÇÕES DELPHI Dr. George SILVA; Dr. Gilbert SILVA; Gabriel GUIMARÃES; Rodrigo MEDEIROS; Tiago ROSSINI; Centro Federal de Educação Tecnológica do Rio Grande do

Leia mais

Programação Web Prof. Wladimir

Programação Web Prof. Wladimir Programação Web Prof. Wladimir Linguagem de Script e PHP @wre2008 1 Sumário Introdução; PHP: Introdução. Enviando dados para o servidor HTTP; PHP: Instalação; Formato básico de um programa PHP; Manipulação

Leia mais

CURSO DESENVOLVEDOR JAVA Edição Intensiva de Férias

CURSO DESENVOLVEDOR JAVA Edição Intensiva de Férias CURSO DESENVOLVEDOR JAVA Edição Intensiva de Férias O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma Orientado a Objetos

Leia mais

Bibliografia. Desenvolvimento Orientado a Objetos. Introdução. Bibliografia. O que você vê?

Bibliografia. Desenvolvimento Orientado a Objetos. Introdução. Bibliografia. O que você vê? Bibliografia Desenvolvimento Orientado a Objetos Prof.: Edson dos Santos Cordeiro LARMAN, Graig. Utilizando UML e padrões. Porto Alegre: Bookman, 2000. STAA, Arndt von. Programação modular. Rio de Janeiro:

Leia mais

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011 CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011 O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma

Leia mais

Guia de Atualização PROJURIS WEB 4.5. Manual do Técnico Atualização - ProJuris Web 4.5. Manual do Técnico Atualização - ProJuris Web 4.

Guia de Atualização PROJURIS WEB 4.5. Manual do Técnico Atualização - ProJuris Web 4.5. Manual do Técnico Atualização - ProJuris Web 4. Guia de Atualização PROJURIS WEB 4.5 Por: Fabio Pozzebon Soares Página 1 de 11 Sistema ProJuris é um conjunto de componentes 100% Web, nativamente integrados, e que possuem interface com vários idiomas,

Leia mais

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS João Gabriel Ganem Barbosa Sumário Motivação História Linha do Tempo Divisão Conceitos Paradigmas Geração Tipos de Dados Operadores Estruturada vs

Leia mais

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Prof. Bruno Vilela Oliveira bruno@cca.ufes.br http://www.brunovilela.webnode.com.br Programas e Linguagens Para executar uma tarefa

Leia mais

Guia Projectlab para Métodos Agéis

Guia Projectlab para Métodos Agéis Guia Projectlab para Métodos Agéis GUIA PROJECTLAB PARA MÉTODOS ÁGEIS 2 Índice Introdução O que são métodos ágeis Breve histórico sobre métodos ágeis 03 04 04 Tipos de projetos que se beneficiam com métodos

Leia mais

Alunos. Hudson Martins da Silva Laércio Pedro Hoppe

Alunos. Hudson Martins da Silva Laércio Pedro Hoppe Alunos Hudson Martins da Silva Laércio Pedro Hoppe Desenvolvida no Japão em 1995, por Yukihiro "Matz" Matsumoto. Linguagem de script. Mais poderosa do que Perl, e mais orientada a objetos do que Python.

Leia mais

3. PARADIGMA ORIENTADO A OBJETOS

3. PARADIGMA ORIENTADO A OBJETOS Paradigmas de Linguagens I 1 3. PARADIGMA ORIENTADO A OBJETOS Este paradigma é o que mais reflete os problemas atuais. Linguagens orientada a objetos (OO) são projetadas para implementar diretamente a

Leia mais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais Arquitetura de Computadores Introdução aos Sistemas Operacionais O que é um Sistema Operacional? Programa que atua como um intermediário entre um usuário do computador ou um programa e o hardware. Os 4

Leia mais

Justificativa do uso da Linguagem XML no Projeto RIVED

Justificativa do uso da Linguagem XML no Projeto RIVED Justificativa do uso da Linguagem XML no Projeto RIVED Índice Introdução... 1 Sobre a linguagem XML... 2 O que é XML (extensible Markup Language)?... 2 Características da Linguagem...3 Sobre o seu uso...

Leia mais

Especificação e Automação Colaborativas de Testes utilizando a técnica BDD

Especificação e Automação Colaborativas de Testes utilizando a técnica BDD Especificação e Automação Colaborativas de Testes utilizando a técnica BDD Rafael Chiavegatto¹, Vanilton Pinheiro¹, Andréia Freitas Vieira¹, João Clineu¹, Erbett Hinton Oliveira¹, Ellen Barroso¹, Alexandre

Leia mais

Desenvolvendo Aplicações Web com NetBeans

Desenvolvendo Aplicações Web com NetBeans Desenvolvendo Aplicações Web com NetBeans Aula 3 Cap. 4 Trabalhando com Banco de Dados Prof.: Marcelo Ferreira Ortega Introdução O trabalho com banco de dados utilizando o NetBeans se desenvolveu ao longo

Leia mais

FRWTC800 - Desenvolvimento Web com Ruby on Rails

FRWTC800 - Desenvolvimento Web com Ruby on Rails FRWTC800 - Desenvolvimento Web com Ruby on Rails SOBRE A FRAMEWORK A Framework (www.frwtc.com) atua diretamente com profissionais do segmento de tecnologia em busca de capacitação, atualização e certificação,

Leia mais

Capítulo 2 Introdução à ferramenta Flash

Capítulo 2 Introdução à ferramenta Flash Capítulo 2 Introdução à ferramenta Flash Índice 1. O uso da ferramenta Flash no projeto RIVED.... 1 2. História do Flash... 4 1. O uso da ferramenta Flash no projeto RIVED. É importante, antes de iniciarmos

Leia mais

6 Infraestrutura de Trabalho

6 Infraestrutura de Trabalho 6 Infraestrutura de Trabalho Este capítulo tem como objetivo fornecer uma visão geral do ambiente de trabalho encontrado na organização estudada, bem como confrontá-lo com a organização ideal tal como

Leia mais

PHP Profissional. Alexandre Altair de Melo Mauricio G. F. Nascimento

PHP Profissional. Alexandre Altair de Melo Mauricio G. F. Nascimento PHP Profissional APRENDA A DESENVOLVER SISTEMAS PROFISSIONAIS ORIENTADOS A OBJETOS COM PADRÕES DE PROJETO Alexandre Altair de Melo Mauricio G. F. Nascimento Novatec Sumário Agradecimentos...13 Sobre os

Leia mais

Engenharia de Software I

Engenharia de Software I Engenharia de Software I Curso de Sistemas de Informação Karla Donato Fook karladf@ifma.edu.br DESU / DAI 2015 Desenvolvimento Rápido de Software 2 1 Para quê o Desenvolvimento Rápido de Software? Os negócios

Leia mais

GeCA: Uma Ferramenta de Engenharia Reversa e Geração Automática de Código

GeCA: Uma Ferramenta de Engenharia Reversa e Geração Automática de Código GeCA: Uma Ferramenta de Engenharia Reversa e Geração Automática de Código Igor Steinmacher 1, Éderson Fernando Amorim 1, Flávio Luiz Schiavoni 1, Elisa Hatsue Moriya Huzita 1 1 Departamento de Informática

Leia mais

Desenvolvimento Orientado a Comportamento com Testes Automatizados utilizando JBehave e Selenium

Desenvolvimento Orientado a Comportamento com Testes Automatizados utilizando JBehave e Selenium Desenvolvimento Orientado a Comportamento com Testes Automatizados utilizando JBehave e Selenium Rafael B. Chiavegatto¹, Lidiane V. da Silva², Andréia Vieira², William R. Malvezzi¹ ¹Centro de Pós-Graduação

Leia mais

Capítulo 25. Gerenciamento de Configuração. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D.

Capítulo 25. Gerenciamento de Configuração. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Capítulo 25 Gerenciamento de Configuração slide 624 2011 Pearson Prentice Hall. Todos os direitos reservados. Tópicos abordados Gerenciamento de mudanças Gerenciamento de versões Construção de sistemas

Leia mais

PROGRAMAÇÃO MVC E ZEND FRAMEWORK

PROGRAMAÇÃO MVC E ZEND FRAMEWORK PROGRAMAÇÃO MVC E ZEND FRAMEWORK MVC PROGRAMMING AND ZEND FRAMEWORK Rodolfo Vinícius Moimas Dias Centro Universitário Filadélfia de Londrina UniFil Rafael Francovig Cavicchioli Centro Universitário Filadélfia

Leia mais

Questionário. A ferramenta auxilia na alocação de Não (0) x x x. Satisfatório (5) complexidade de um caso de uso? de uso (72) Sim (10)

Questionário. A ferramenta auxilia na alocação de Não (0) x x x. Satisfatório (5) complexidade de um caso de uso? de uso (72) Sim (10) Questionário Nível Avaliado Gerador de plano de teste Gerador de dados Função/característica do produto Gestão dos dados do plano de teste (51) Perguntas Pontuação Selenium BadBoy Canoo A ferramenta auilia

Leia mais

Desenvolvendo para WEB

Desenvolvendo para WEB Nível - Básico Desenvolvendo para WEB Por: Evandro Silva Neste nosso primeiro artigo vamos revisar alguns conceitos que envolvem a programação de aplicativos WEB. A ideia aqui é explicarmos a arquitetura

Leia mais

Softwares de Sistemas e de Aplicação

Softwares de Sistemas e de Aplicação Fundamentos dos Sistemas de Informação Softwares de Sistemas e de Aplicação Profª. Esp. Milena Resende - milenaresende@fimes.edu.br Visão Geral de Software O que é um software? Qual a função do software?

Leia mais

Evolução do Design através de Testes e o TDD

Evolução do Design através de Testes e o TDD c a p a Lucas Souza (lucas.souza@caelum.com.br): é bacharel em Engenharia da Computação pela Universidade de Ribeirão Preto, possui a certificação SCJP e trabalha com Java há 4 anos. Atualmente é desenvolvedor

Leia mais

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena Tópicos Motivação e Objetivos LP e SOA Processo ADESE

Leia mais

Paradigmas de Linguagens de Programação. Aspectos Preliminares

Paradigmas de Linguagens de Programação. Aspectos Preliminares Aspectos Preliminares Cristiano Lehrer Motivação (1/6) Aumento da capacidade de expressar idéias: Difícil conceituar estruturas quando não se pode descreve-las. Programadores são limitados pelas linguagens.

Leia mais

Automação do Processo de Instalação de Softwares

Automação do Processo de Instalação de Softwares Automação do Processo de Instalação de Softwares Aislan Nogueira Diogo Avelino João Rafael Azevedo Milene Moreira Companhia Siderúrgica Nacional - CSN RESUMO Este artigo tem como finalidade apresentar

Leia mais

Linguagens de programação

Linguagens de programação Prof. André Backes Linguagens de programação Linguagem de Máquina Computador entende apenas pulsos elétricos Presença ou não de pulso 1 ou 0 Tudo no computador deve ser descrito em termos de 1 s ou 0 s

Leia mais

Manual do Usuário. Sistema Financeiro e Caixa

Manual do Usuário. Sistema Financeiro e Caixa Manual do Usuário Sistema Financeiro e Caixa - Lançamento de receitas, despesas, gastos, depósitos. - Contas a pagar e receber. - Emissão de cheque e Autorização de pagamentos/recibos. - Controla um ou

Leia mais

Impressão e Fotolito Oficina Gráfica da EDITORA VIENA. Todos os direitos reservados pela EDITORA VIENA LTDA

Impressão e Fotolito Oficina Gráfica da EDITORA VIENA. Todos os direitos reservados pela EDITORA VIENA LTDA Autores Karina de Oliveira Wellington da Silva Rehder Consultores em Informática Editora Viena Rua Regente Feijó, 621 - Centro - Santa Cruz do Rio Pardo - SP CEP 18.900-000 Central de Atendimento (0XX14)

Leia mais

V1.1 SITE EM UM SITE 11/2015 MINUTOS APRENDA A PROGRAMAR IMAGINE FAZER O SEU PRIMEIRO PROGRAMA EM 180 SEGUNDOS WWW.DESAFIO3MINUTOS.COM.

V1.1 SITE EM UM SITE 11/2015 MINUTOS APRENDA A PROGRAMAR IMAGINE FAZER O SEU PRIMEIRO PROGRAMA EM 180 SEGUNDOS WWW.DESAFIO3MINUTOS.COM. 11/2015 UM SITE SITE EM EM UM 3 APRENDA A PROGRAMAR IMAGINE FAZER O SEU PRIMEIRO PROGRAMA EM 180 SEGUNDOS MINUTOS V1.1 WWW.DESAFIO3MINUTOS.COM.BR ELIELBARONE RUBY ON RAILS O que é? Ruby on Rails é um framework,

Leia mais

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de

Leia mais

INDICE 3.APLICAÇÕES QUE PODEM SER DESENVOLVIDAS COM O USO DO SAXES

INDICE 3.APLICAÇÕES QUE PODEM SER DESENVOLVIDAS COM O USO DO SAXES w w w. i d e a l o g i c. c o m. b r INDICE 1.APRESENTAÇÃO 2.ESPECIFICAÇÃO DOS RECURSOS DO SOFTWARE SAXES 2.1. Funcionalidades comuns a outras ferramentas similares 2.2. Funcionalidades próprias do software

Leia mais

2. O AMBIENTE DE PROGRAMAÇÃO EM C

2. O AMBIENTE DE PROGRAMAÇÃO EM C 2. O AMBIENTE DE PROGRAMAÇÃO EM C Este capítulo trata de colocar a linguagem C para funcionar em um ambiente de programação, concentrando-se no compilador GNU Compiler Collection (gcc). Mas qualquer outro

Leia mais

Rational Quality Manager. Nome: Raphael Castellano Campus: AKXE Matrícula: 200601124831

Rational Quality Manager. Nome: Raphael Castellano Campus: AKXE Matrícula: 200601124831 Rational Quality Manager Nome: Raphael Castellano Campus: AKXE Matrícula: 200601124831 1 Informações Gerais Informações Gerais sobre o RQM http://www-01.ibm.com/software/awdtools/rqm/ Link para o RQM https://rqmtreina.mvrec.local:9443/jazz/web/console

Leia mais

UMA ABORDAGEM COMPARATIVA ENTRE AS LINGUAGENS DE PROGRAMAÇÃO JAVA E C#

UMA ABORDAGEM COMPARATIVA ENTRE AS LINGUAGENS DE PROGRAMAÇÃO JAVA E C# UMA ABORDAGEM COMPARATIVA ENTRE AS LINGUAGENS DE PROGRAMAÇÃO JAVA E C# Robson Bartelli¹, Wyllian Fressatti¹. ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil robson_lpbartelli@yahoo.com.br,wyllian@unipar.br

Leia mais

Conhecendo o Visual FoxPro 8.0 Parte 3

Conhecendo o Visual FoxPro 8.0 Parte 3 AULA Conhecendo o Visual FoxPro 8.0 Parte 3 Continuando nossa saga pelas ferramentas do Visual FoxPro 8.0, hoje vamos conhecer mais algumas. A Ferramenta Class Designer A Class Designer é a ferramenta

Leia mais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais Notas da Aula 15 - Fundamentos de Sistemas Operacionais 1. Software de Entrada e Saída: Visão Geral Uma das tarefas do Sistema Operacional é simplificar o acesso aos dispositivos de hardware pelos processos

Leia mais

PRD Tecnologia de Gestão Ltda. Julho/2008

PRD Tecnologia de Gestão Ltda. Julho/2008 O Processo de Desenvolvimento Telescope Julho/2008 Página 1 Sumário Introdução...3 O desenvolvimento de software tradicional...3 O problema da produtividade...3 O problema da portabilidade...6 O problema

Leia mais

ARQUITETURA DE SISTEMAS. Cleviton Monteiro (cleviton@gmail.com)

ARQUITETURA DE SISTEMAS. Cleviton Monteiro (cleviton@gmail.com) ARQUITETURA DE SISTEMAS Cleviton Monteiro (cleviton@gmail.com) Roteiro Definição Documento de arquitetura Modelos de representação da arquitetura Estilos arquiteturais Arquitetura de sistemas web Arquitetura

Leia mais

EMENTA DO CURSO. Tópicos:

EMENTA DO CURSO. Tópicos: EMENTA DO CURSO O Curso Preparatório para a Certificação Oracle Certified Professional, Java SE 6 Programmer (Java Básico) será dividido em 2 módulos e deverá ter os seguintes objetivos e conter os seguintes

Leia mais

Linguagem de Programação Visual

Linguagem de Programação Visual Linguagem de Programação Visual Unidade 1 Ambiente de desenvolvimento Curso Técnico em Informática SUMÁRIO INTRODUÇÃO... 3 SOBRE O JAVA... 3 AMBIENTE DE DESENVOLVIMENTO... 5 RECURSOS DA FERRAMENTA NETBEANS...

Leia mais

Introdução à Programação de Computadores

Introduçã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 mais

Construindo Aplicações Web com. PHPe MySQL. André Milani. Novatec

Construindo Aplicações Web com. PHPe MySQL. André Milani. Novatec Construindo Aplicações Web com PHPe MySQL André Milani Novatec Capítulo 1 Bem-vindo ao PHP Seja bem-vindo ao PHP! O primeiro capítulo deste livro aborda como obter, instalar e configurar corretamente o

Leia mais

TDD-Test Driven Development

TDD-Test Driven Development CENTRO UNIVERSITÁRIO UNA TDD-Test Driven Development Desenvolvimento guiado por testes Pós-graduação em Engenharia de Software Centrada em Métodos Ágeis TIME CAVE!RA Bruno Eustáquio Andrade Juliana Villas

Leia mais

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES Alexandre Egleilton Araújo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil araujo.ale01@gmail.com, jaime@unipar.br Resumo.

Leia mais

TEMA TECNOLOGIA DA INFORMAÇÃO -Tipos de SI e Recursos de Software parte2. AULA DE SISTEMAS DE INFORMAÇÃO PROFa. ROSA MOTTA

TEMA TECNOLOGIA DA INFORMAÇÃO -Tipos de SI e Recursos de Software parte2. AULA DE SISTEMAS DE INFORMAÇÃO PROFa. ROSA MOTTA TEMA TECNOLOGIA DA INFORMAÇÃO -Tipos de SI e Recursos de Software parte2 AULA DE SISTEMAS DE INFORMAÇÃO PROFa. ROSA MOTTA CONTEÚDO DA AULA Tipos de Software Serviços Web Tendências 2 OBJETIVOS ESPECÍFICOS

Leia mais

2 Medição e Acompanhamento

2 Medição e Acompanhamento 2 Medição e Acompanhamento Para verificar a eficácia da aplicação da técnica de desenvolvimento dirigido por testes, foram usadas algumas métricas para determinar se houve melhoria ou degradação no processo

Leia mais

Qualidade de Software

Qualidade de Software Qualidade de Software O software é algo abstrato, pois são as instruções que quando executadas atingem o propósito desejado no sistema computacional. (Algoritmo). As principais características são: Complexidade:

Leia mais

No artigo anterior explicamos. Desenvolvimento de Software Dirigido por Caso de Uso. Parte II: Especificando Caso de Uso

No artigo anterior explicamos. Desenvolvimento de Software Dirigido por Caso de Uso. Parte II: Especificando Caso de Uso Desenvolvimento de Software Dirigido por Caso de Uso Parte II: Especificando Caso de Uso Vinicius Lourenço de Sousa viniciuslsousa@gmail.com Atua no ramo de desenvolvimento de software há mais de 10 anos,

Leia mais

PROJETO PEDAGÓGICO DE CURSOS

PROJETO PEDAGÓGICO DE CURSOS 1 de 6 PROJETO PEDAGÓGICO DE CURSOS BURITREINAMENTOS MANAUS-AM NOVEMBRO / 2014 2 de 6 PACOTES DE TREINAMENTOS BURITECH A Buritech desenvolveu um grupo de pacotes de treinamentos, aqui chamados de BuriPacks,

Leia mais

Java Como Programar, 8/E

Java Como Programar, 8/E Capítulo 2 Introdução aos aplicativos Java Java Como Programar, 8/E (C) 2010 Pearson Education, Inc. Todos os 2.1 Introdução Programação de aplicativo Java. Utilize as ferramentas do JDK para compilar

Leia mais

Utilização do framework Ruby On Rails no desenvolvimento de um módulo web para sistema de biblioteca

Utilização do framework Ruby On Rails no desenvolvimento de um módulo web para sistema de biblioteca Utilização do framework Ruby On Rails no desenvolvimento de um módulo ARTIGO web para ORIGINAL sistema / ORIGINAL de biblioteca ARTICLE Utilização do framework Ruby On Rails no desenvolvimento de um módulo

Leia mais

Microsoft Visual Studio Express 2012 for Windows Desktop

Microsoft Visual Studio Express 2012 for Windows Desktop Microsoft Visual Studio Express 2012 for Windows Desktop Apresentação da ferramenta Professor: Danilo Giacobo Página pessoal: www.danilogiacobo.eti.br E-mail: danilogiacobo@gmail.com 1 Introdução Visual

Leia mais

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS Depurando aplicações Professor: Danilo Giacobo OBJETIVOS DA AULA Aprender dicas e técnicas para encontrar erros em aplicações Android. Conhecer os recursos que auxiliam

Leia mais

Excel 2010 Modulo II

Excel 2010 Modulo II Excel 2010 Modulo II Sumário Nomeando intervalos de células... 1 Classificação e filtro de dados... 3 Subtotais... 6 Validação e auditoria de dados... 8 Validação e auditoria de dados... 9 Cenários...

Leia mais

Aula 12: Funções. Pré-requisitos: Todas as aulas anteriores deste módulo. 1. Aproveitando Códigos no Programa

Aula 12: Funções. Pré-requisitos: Todas as aulas anteriores deste módulo. 1. Aproveitando Códigos no Programa Aula 12: Funções Nesta aula explicaremos o que são e como usar funções nos seus programas em JavaScript. Você aprenderá como elas podem receber e retornar valores à estrutura que as acionou. Entenderá

Leia mais