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

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

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

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

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem

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

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

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

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO 10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO UMA DAS GRANDES FUNÇÕES DA TECNOLOGIA É A DE FACILITAR A VIDA DO HOMEM, SEJA NA VIDA PESSOAL OU CORPORATIVA. ATRAVÉS DELA, ELE CONSEGUE

Leia mais

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE Amarildo Aparecido Ferreira Junior 1, Ricardo Ribeiro Rufino 1 ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil aapfjr@gmail.com

Leia mais

ENGENHARIA DE SOFTWARE I

ENGENHARIA DE SOFTWARE I ENGENHARIA DE SOFTWARE I Prof. Cássio Huggentobler de Costa [cassio.costa@ulbra.br] Twitter: www.twitter.com/cassiocosta_ Agenda da Aula (002) Metodologias de Desenvolvimento de Softwares Métodos Ágeis

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

Lazarus pelo SVN Linux/Windows

Lazarus pelo SVN Linux/Windows Lazarus pelo SVN Linux/Windows Sei que não faltam artigos sobre como obter e compilar o Lazarus e o FPC pelo SVN, mas sei também que nunca é de mais divulgar um pouco mais e talvez escrever algo diferente.

Leia mais

Noções de. Microsoft SQL Server. Microsoft SQL Server

Noções de. Microsoft SQL Server. Microsoft SQL Server Noções de 1 Considerações Iniciais Basicamente existem dois tipos de usuários do SQL Server: Implementadores Administradores 2 1 Implementadores Utilizam o SQL Server para criar e alterar base de dados

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

Processos Técnicos - Aulas 4 e 5

Processos Técnicos - Aulas 4 e 5 Processos Técnicos - Aulas 4 e 5 Trabalho / PEM Tema: Frameworks Públicos Grupo: equipe do TCC Entrega: versão digital, 1ª semana de Abril (de 31/03 a 04/04), no e-mail do professor (rodrigues.yuri@yahoo.com.br)

Leia mais

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 1. Conceitos de Orientação a Objetos Introdução O paradigma da POO Classes

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

Feature-Driven Development

Feature-Driven Development FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por

Leia mais

TESTES AUTOMATIZADOS COM JUNITE MOCKITO

TESTES AUTOMATIZADOS COM JUNITE MOCKITO TESTES AUTOMATIZADOS COM JUNITE MOCKITO Jaime William Dias 12, Dener Barranco 1, Douglas Delapria 1 1 Universidade Paranaense (Unipar) 2 Universidade Estadual de Maringá (UEM) Paranavaí PR Brasil dener_barranco@hotmail.com,

Leia mais

APLICATIVO WEB PARA O SETOR DE EXTENSÃO IFC VIDEIRA

APLICATIVO WEB PARA O SETOR DE EXTENSÃO IFC VIDEIRA APLICATIVO WEB PARA O SETOR DE EXTENSÃO IFC VIDEIRA Autores: Claudiléia Gaio BANDT; Tiago HEINECK; Patrick KOCHAN; Leila Lisiane ROSSI; Angela Maria Crotti da ROSA Identificação autores: Aluna do Curso

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

Leia mais

Figura 1 - Arquitetura multi-camadas do SIE

Figura 1 - Arquitetura multi-camadas do SIE Um estudo sobre os aspectos de desenvolvimento e distribuição do SIE Fernando Pires Barbosa¹, Equipe Técnica do SIE¹ ¹Centro de Processamento de Dados, Universidade Federal de Santa Maria fernando.barbosa@cpd.ufsm.br

Leia mais

Metodologia e Gerenciamento do Projeto na Fábrica de Software v.2

Metodologia e Gerenciamento do Projeto na Fábrica de Software v.2 .:: Universidade Estadual de Maringá Bacharelado em Informática Eng. de Software III :. Sistema de Gerenciamento de Eventos - Equipe 09 EPSI Event Programming System Interface Metodologia e Gerenciamento

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel Ambiente de Desenvolvimento Orientação a Objetos É uma técnica de desenvolvimento de softwares que consiste em representar os elementos do mundo

Leia mais

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.

Leia mais

Guia Site Empresarial

Guia Site Empresarial Guia Site Empresarial Índice 1 - Fazer Fatura... 2 1.1 - Fazer uma nova fatura por valores de crédito... 2 1.2 - Fazer fatura alterando limites dos cartões... 6 1.3 - Fazer fatura repetindo última solicitação

Leia mais

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate Luis Gustavo Zandarim Soares 1, Késsia Rita da Costa Marchi 1 1 Universidade Paranaense (Unipar) Paraná PR Brasil luisgustavo@live.co.uk,

Leia mais

Lógica de Programação

Lógica de Programação Lógica de Programação Softblue Logic IDE Guia de Instalação www.softblue.com.br Sumário 1 O Ensino da Lógica de Programação... 1 2 A Ferramenta... 1 3 Funcionalidades... 2 4 Instalação... 3 4.1 Windows...

Leia mais

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS ATRIBUTOS PRIVADOS Podemos usar o modificador private, para tornar um atributo privado, obtendo um controle centralizado Definimos métodos para implementar todas as lógicas que utilizam ou modificam o

Leia mais

Aplicação Prática de Lua para Web

Aplicação Prática de Lua para Web Aplicação Prática de Lua para Web Aluno: Diego Malone Orientador: Sérgio Lifschitz Introdução A linguagem Lua vem sendo desenvolvida desde 1993 por pesquisadores do Departamento de Informática da PUC-Rio

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

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

SISTEMA DE GERENCIAMENTO DE PROJETOS - REDMINE MANUAL DE USO

SISTEMA DE GERENCIAMENTO DE PROJETOS - REDMINE MANUAL DE USO SISTEMA DE GERENCIAMENTO DE PROJETOS - REDMINE MANUAL DE USO AGOSTO DE 2013 SUMÁRIO STI/UFF - Sistema de Gerenciamento de Projetos do PDI SUMÁRIO... 2 1 Introdução... 3 1.1 O que é e qual a finalidade

Leia mais

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 SUMÁRIO 1 Conceitos Básicos... 3 1.1 O que é Software?... 3 1.2 Situações Críticas no desenvolvimento

Leia mais

Manual SAGe Versão 1.2 (a partir da versão 12.08.01)

Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação

Leia mais

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi 5 Conclusão Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi permitir que scripts Lua instanciem e usem

Leia 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

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO Capítulo 1 INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO 1.1 Histórico de Linguagens de Programação Para um computador executar uma dada tarefa é necessário que se informe a ele, de uma maneira clara, como ele

Leia mais

Alterações Easycaptive 2.0.10

Alterações Easycaptive 2.0.10 Alterações Easycaptive 2.0.10 data: 10/04/2010 Este documento tem por objetivo demonstrar as alterações feitas nos scripts que compõem o addon easycaptive do sistema BrazilFW Firewall and Router. Todo

Leia mais

Programação Orientada a Objetos Herança Técnico em Informática. Prof. Marcos André Pisching, M.Sc.

Programação Orientada a Objetos Herança Técnico em Informática. Prof. Marcos André Pisching, M.Sc. Herança Técnico em Informática, M.Sc. Herança 2 Herança Reutilização de código Exemplo Banco: Um banco oferece diversos serviços que podem ser contratados individualmente pelos clientes. Quando um serviço

Leia mais

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS O termo metodologia não possui uma definição amplamente aceita, sendo entendido na maioria das vezes como um conjunto de passos e procedimentos que

Leia mais

Distribuidor de Mobilidade GUIA OUTSOURCING

Distribuidor de Mobilidade GUIA OUTSOURCING Distribuidor de Mobilidade GUIA OUTSOURCING 1 ÍNDICE 03 04 06 07 09 Introdução Menos custos e mais controle Operação customizada à necessidade da empresa Atendimento: o grande diferencial Conclusão Quando

Leia mais

ROTEIRO PARA ELABORAÇÃO DE PROJETOS

ROTEIRO PARA ELABORAÇÃO DE PROJETOS APRESENTAÇÃO ROTEIRO PARA ELABORAÇÃO DE PROJETOS Breve histórico da instituição seguido de diagnóstico e indicadores sobre a temática abrangida pelo projeto, especialmente dados que permitam análise da

Leia mais

http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho vi http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Administração de Redes de Computadores Resumo de Serviços em Rede Linux Controlador de Domínio Servidor DNS

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

Parte I. Demoiselle Mail

Parte I. Demoiselle Mail Parte I. Demoiselle Mail Para o envio e recebimento de e-s em aplicativos Java, a solução mais natural é usar a API JavaMail [http:// www.oracle.com/technetwork/java/java/index.html]. Ela provê um framework

Leia mais

Engenharia de Software III

Engenharia de Software III Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf (flavio.ceci@unisul.br) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,

Leia mais

Modelagemde Software Orientadaa Objetos com UML

Modelagemde Software Orientadaa Objetos com UML Modelagemde Software Orientadaa Objetos com UML André Maués Brabo Pereira Departamento de Engenharia Civil Universidade Federal Fluminense Colaborando para a disciplina CIV 2802 Sistemas Gráficos para

Leia mais

MANIFESTO ÁGIL. Esses conceitos aproximam-se melhor com a forma que pequenas e médias organizações trabalham e respondem à mudanças.

MANIFESTO ÁGIL. Esses conceitos aproximam-se melhor com a forma que pequenas e médias organizações trabalham e respondem à mudanças. METODOLOGIAS ÁGEIS SURGIMENTO As metodologias ágeis surgiram em resposta ao problema dos atrasos no desenvolvimento de software e aos cancelamentos, devido ao fato dos sistemas demorarem muito tempo para

Leia mais

Projeto Você pede, eu registro.

Projeto Você pede, eu registro. Projeto Você pede, eu registro. 1) IDENTIFICAÇÃO 1.1) Título do Projeto: Você pede eu registro. 1.2) Equipe responsável pela coordenação do projeto: Pedro Paulo Braga Bolzani Subsecretario de TI Antonio

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

Como se tornar um desenvolvedor de plug-ins para AutoCAD e Revit

Como se tornar um desenvolvedor de plug-ins para AutoCAD e Revit Como se tornar um desenvolvedor de plug-ins para AutoCAD e Revit Vitor Paulo Silva Se você é um projetista e sua principal ferramenta de trabalho é o AutoCAD ou o Revit, certamente você já se deparou com

Leia mais

Sphinx Scanner Informações gerais V 5.1.0.8

Sphinx Scanner Informações gerais V 5.1.0.8 Sphinx Scanner Informações gerais V 5.1.0.8 Pré-requisitos: Possuir modalidade scanner no software Sphinx A SPHINX Brasil propõe uma solução de leitura automática de questionários por scanner. O Sphinx

Leia mais

2 Diagrama de Caso de Uso

2 Diagrama de Caso de Uso Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Caso de Uso (Use Case) Autoria:Aristófanes Corrêa

Leia mais

Tópicos de Ambiente Web. Modulo 2 Processo de desenvolvimento de um site Professora: Sheila Cáceres

Tópicos de Ambiente Web. Modulo 2 Processo de desenvolvimento de um site Professora: Sheila Cáceres Tópicos de Ambiente Web Modulo 2 Processo de desenvolvimento de um site Professora: Sheila Cáceres Roteiro Motivação Desenvolvimento de um site Etapas no desenvolvimento de software (software:site) Analise

Leia mais

XP extreme Programming, uma metodologia ágil para desenvolvimento de software. Equipe WEB Cercomp web@cercomp.ufg.br

XP extreme Programming, uma metodologia ágil para desenvolvimento de software. Equipe WEB Cercomp web@cercomp.ufg.br XP extreme Programming, uma metodologia ágil para desenvolvimento de software. Equipe WEB Cercomp web@cercomp.ufg.br Introdução Criada por Kent Baeck em 1996 durante o projeto Daimler Chrysler. O sucesso

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

PEN - Processo de Entendimento das Necessidades de Negócio Versão 1.4.0

PEN - Processo de Entendimento das Necessidades de Negócio Versão 1.4.0 PEN - Processo de Entendimento das Necessidades de Negócio Versão 1.4.0 Banco Central do Brasil, 2015 Página 1 de 14 Índice 1. FLUXO DO PEN - PROCESSO DE ENTENDIMENTO DAS NECESSIDADES DE NEGÓCIO... 3 2.

Leia mais

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

Pós-Graduação em Gerenciamento de Projetos práticas do PMI Pós-Graduação em Gerenciamento de Projetos práticas do PMI Planejamento do Gerenciamento das Comunicações (10) e das Partes Interessadas (13) PLANEJAMENTO 2 PLANEJAMENTO Sem 1 Sem 2 Sem 3 Sem 4 Sem 5 ABRIL

Leia mais

Operador de Computador. Informática Básica

Operador de Computador. Informática Básica Operador de Computador Informática Básica Instalação de Software e Periféricos Podemos ter diversos tipos de software que nos auxiliam no desenvolvimento das nossas tarefas diárias, seja ela em casa, no

Leia mais

Desenvolvendo Software Livre com Programação extrema

Desenvolvendo Software Livre com Programação extrema Desenvolvendo Software Livre com Programação extrema Dairton Bassi FISL 7.0 abril/2006 Panorama sobre o Desenvolvimento de Software A sociedade demanda: Grande quantidade de sistemas/aplicações Sistemas

Leia mais

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha

Leia mais

1. NÍVEL CONVENCIONAL DE MÁQUINA

1. NÍVEL CONVENCIONAL DE MÁQUINA 1. NÍVEL CONVENCIONAL DE MÁQUINA Relembrando a nossa matéria de Arquitetura de Computadores, a arquitetura de Computadores se divide em vários níveis como já estudamos anteriormente. Ou seja: o Nível 0

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: 10 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir os conceitos de coesão e acoplamento. DESENVOLVIMENTO Projetar

Leia mais

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões Prof. MSc. Hugo Souza Se você precisar manter informações sobre seus usuários enquanto eles navegam pelo seu site, ou até quando eles saem

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

Na tela dele, clique no sinal de + ao lado do nome do seu computador, para expandi-lo. A seguir, expanda também o item "Sites da web".

Na tela dele, clique no sinal de + ao lado do nome do seu computador, para expandi-lo. A seguir, expanda também o item Sites da web. Servidor WEB Desenvolvedores de sites que querem aprender ou testar ASP, ou mesmo profissionais que precisam desenvolver páginas ASP ou ASP.Net, não precisam necessariamente ter um servidor na web com

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

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução

Leia 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

Engenharia de Requisitos Estudo de Caso

Engenharia de Requisitos Estudo de Caso Engenharia de Requisitos Estudo de Caso Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 1 Engenharia de Requisitos Exemplo 1 Reserva de Hotel 1. INTRODUÇÃO Este

Leia mais

Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo.

Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo. Manual de Instruções ECO Editor de Conteúdo Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo. O ECO é um sistema amigável e intui?vo, mas abaixo você pode?rar eventuais dúvidas e aproveitar

Leia mais

TRABALHO DE DIPLOMAÇÃO Regime Modular ORIENTAÇÕES SOBRE O ROTEIRO DO PROJETO FINAL DE SISTEMAS DE INFORMAÇÕES

TRABALHO DE DIPLOMAÇÃO Regime Modular ORIENTAÇÕES SOBRE O ROTEIRO DO PROJETO FINAL DE SISTEMAS DE INFORMAÇÕES TRABALHO DE DIPLOMAÇÃO Regime Modular ORIENTAÇÕES SOBRE O ROTEIRO DO PROJETO FINAL DE SISTEMAS DE INFORMAÇÕES [Observação: O template a seguir é utilizado como roteiro para projeto de sistemas orientado

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

Construtor de sites SoftPixel GUIA RÁPIDO - 1 -

Construtor de sites SoftPixel GUIA RÁPIDO - 1 - GUIA RÁPIDO - 1 - Sumário Introdução...3 Por que utilizar o Construtor de Sites?...3 Vantagens do Construtor de Sites...3 Conceitos básicos...3 Configuração básica do site...5 Definindo o layout/template

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

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 5 http://www.ic.uff.br/~bianca/engsoft2/ Aula 5-05/05/2006 1 Dúvidas da aula passada RUP (Rational Unified Process) é uma ferramenta ou um processo? Resposta: os dois. O

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

agility made possible

agility made possible RESUMO DA SOLUÇÃO Utilitário ConfigXpress no CA IdentityMinder a minha solução de gerenciamento de identidades pode se adaptar rapidamente aos requisitos e processos de negócio em constante mudança? agility

Leia mais

Introdução a Banco de Dados

Introdução a Banco de Dados Introdução a Banco de Dados Ricardo Henrique Tassi - Departamento de Replicação Índice 1- Introdução... 03 2- Quais são os bancos de dados mais conhecidos hoje em dia...04 3- Quais são os tipos de banco...05

Leia mais

Desenvolvendo plugins WordPress usando Orientação a Objetos

Desenvolvendo plugins WordPress usando Orientação a Objetos Desenvolvendo plugins WordPress usando Orientação a Objetos por Daniel Antunes danieldeveloper.com @danieldeveloper Introdução Desenvolver plugins WordPress é mais que programar: é obter grandes resultados

Leia mais

Curso Técnico em Redes

Curso Técnico em Redes Curso Técnico em Redes Prof. Airton Ribeiro - 2012 Histórico das Linguagens de Programação O que é? É um método padronizado para expressar instruções para um computador. É um conjunto de regras sintáticas

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

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki Prevayler Perola André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki Prevayler Prevayler é a implementação em Java do conceito de Prevalência. É um framework que prega uma JVM invulnerável

Leia mais

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate Tiago Peres Souza 1, Jaime Willian Dias 1,2 ¹Universidade paranaense (Unipar) Paranavaí PR Brasil tiagop_ti@hotmail.com 2 Universidade

Leia mais

Dicas para usar melhor o Word 2007

Dicas para usar melhor o Word 2007 Dicas para usar melhor o Word 2007 Quem está acostumado (ou não) a trabalhar com o Word, não costuma ter todo o tempo do mundo disponível para descobrir as funcionalidades de versões recentemente lançadas.

Leia mais

FLUXO DE CAIXA: Módulo BI (Business Intelligence)

FLUXO DE CAIXA: Módulo BI (Business Intelligence) RELATÓRIO DE ESTÁGIO: Tânia Cristina Leite RA: 046567 Orientador: Prof. Dr. Aurelio Ribeiro Leite de Oliveira FLUXO DE CAIXA: Módulo BI (Business Intelligence) Universidade Estadual de Campinas Instituto

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 10 Persistência de Dados

Leia mais

Disciplina de Banco de Dados Introdução

Disciplina de Banco de Dados Introdução Disciplina de Banco de Dados Introdução Prof. Elisa Maria Pivetta CAFW - UFSM Banco de Dados: Conceitos A empresa JJ. Gomes tem uma lista com mais ou menos 4.000 nomes de clientes bem como seus dados pessoais.

Leia mais

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia. 1 Introdução aos Sistemas de Informação 2002 Aula 4 - Desenvolvimento de software e seus paradigmas Paradigmas de Desenvolvimento de Software Pode-se considerar 3 tipos de paradigmas que norteiam a atividade

Leia mais

Documento de Análise e Projeto VideoSystem

Documento de Análise e Projeto VideoSystem Documento de Análise e Projeto VideoSystem Versão Data Versão Descrição Autor 20/10/2009 1.0 21/10/2009 1.0 05/11/2009 1.1 Definição inicial do documento de análise e projeto Revisão do documento

Leia mais

1. Quem somos nós? A AGI Soluções nasceu em Belo Horizonte (BH), com a simples missão de entregar serviços de TI de forma rápida e com alta qualidade.

1. Quem somos nós? A AGI Soluções nasceu em Belo Horizonte (BH), com a simples missão de entregar serviços de TI de forma rápida e com alta qualidade. 1. Quem somos nós? A AGI Soluções nasceu em Belo Horizonte (BH), com a simples missão de entregar serviços de TI de forma rápida e com alta qualidade. Todos nós da AGI Soluções trabalhamos durante anos

Leia mais

MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento. Toledo PR. Versão 2.0 - Atualização 26/01/2009 Depto de TI - FASUL Página 1

MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento. Toledo PR. Versão 2.0 - Atualização 26/01/2009 Depto de TI - FASUL Página 1 MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento Toledo PR Página 1 INDICE 1. O QUE É O SORE...3 2. COMO ACESSAR O SORE... 4 2.1. Obtendo um Usuário e Senha... 4 2.2. Acessando o SORE pelo

Leia mais

INTRODUÇÃO E CONFIGURAÇÃO DO PRIMEFACES MOBILE EM APLICAÇÕES JSF

INTRODUÇÃO E CONFIGURAÇÃO DO PRIMEFACES MOBILE EM APLICAÇÕES JSF INTRODUÇÃO E CONFIGURAÇÃO DO PRIMEFACES MOBILE EM APLICAÇÕES JSF Guilherme Macedo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil guilhermemacedo28@gmail.com, jaime@unipar.br Resumo.

Leia mais

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO UTILIZANDO O HIBERNATE Rafael Laurino GUERRA, Dra. Luciana Aparecida Martinez ZAINA Faculdade de Tecnologia de Indaiatuba FATEC-ID 1 RESUMO Este artigo apresenta

Leia mais

Software automatizado para controle de consultas da clínica de fisioterapia

Software automatizado para controle de consultas da clínica de fisioterapia Software automatizado para controle de consultas da clínica de fisioterapia Jeverson Siqueira 1, Wallace Caldeira 1, Jorge Aikes Junior 1 1 Ciência da Computacão Faculdades Anglo Americano de Foz do Iguaçu

Leia mais

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como:

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como: Plano de Teste (resumo do documento) I Introdução Identificador do Plano de Teste Esse campo deve especificar um identificador único para reconhecimento do Plano de Teste. Pode ser inclusive um código

Leia mais