: : : :

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

Download ": : www.mundoj.com.br : :"

Transcrição

1 : : : : Marcelo Zeferino (marceloczeferino@gmail.com): formado em análise de sistemas, atua com TI desde 1999 e já participou de projetos de software para grandes organizações como Fundação BioRio/Johns Hopkins School of Medicine, Oi, Sul América e Fundação Roberto Marinho. Já atuou pela IBM Brasil e atualmente é líder técnico na Lumis Tecnologia, consultor e instrutor Java em cursos de extensão oferecidos pela UERJ. Mantem o blog com ideias sobre desenvolvimento de software. 30

2 As práticas de teste antecipado têm ganhado cada vez mais adeptos nos últimos anos com a crescente utilização de Test-Driven Development (TDD), sendo encorajada pelo extreme Programming e outros métodos ágeis. Como evolução ao TDD, Behaviour-Driven Development (BDD) nos permite criar, junto aos clientes, especificações que poderão ser executadas (e automatizadas), utilizando textos simples, em linguagem natural. Neste artigo, será apresentado o framework JBehave e trabalharemos um exemplo prático de especificação de cenário. Ao final, iremos configurar a ferramenta para utilizar o português como língua padrão nas especificações, facilitando ainda mais a compreensão. Behaviour-Driven Development em Java na prática, com JBehave Criando especificações executáveis utilizando BDD, em nossa língua! magine o seguinte problema: precisamos desenvolver um módulo de nossa aplicação que possui regras de negócio complicadas que estão apenas na cabeça de nosso cliente ou em um daqueles bons e velhos documentos estáticos e, provavelmente, desatualizados. Começamos entendendo e documentando as regras, modelando etc., até que arregaçamos as mangas e vamos para o desenvolvimento. Ao longo do desenvolvimento vamos criando testes e codificando, seguindo os ciclos do TDD. Após algumas repetições, executamos nossa suíte de teste e temos a certeza de que está tudo funcionando, até que o cliente verifica o funcionamento e nos informa que desenvolvemos a funcionalidade baseados em regras que na realidade estavam erradas (aquela velha história do não foi bem isso o que quis dizer ). Agora, digamos que, ao invés da abordagem anterior, escrevemos especificações junto à área cliente/de negócio, em nossa própria língua, a partir das necessidades relatadas para aquela funcionalidade, com exemplos de valores de entrada e saída de sucesso e falha para a execução de nosso módulo, mapeando e nos guiando pelo comportamento esperado. Passamos pelo ciclo de desenvolvimento 31

3 : : : : (executando testes aos poucos) e, ao final, executamos a nossa especificação (que foi escrita em texto puro) tendo como feedback as falhas e sucessos de acordo com os valores que especificamos. Isso mesmo, estamos falando de algo como uma especificação executável! Com a segunda abordagem, temos algumas vantagens: participação mais ativa do cliente; nosso código não está diretamente acoplado aos testes (o que acontece bastante com TDD) e está mais íntimo ao comportamento final; ao invés de testes escritos em Java, temos especificações em texto puro e em nossa língua que servirão como documentação da funcionalidade, facilitando o entendimento das necessidades e expectativas. Estas são apenas algumas vantagens do BDD. Ao longo deste artigo, será apresentado um pouco do conceito por trás do BDD e utilizaremos um exemplo prático, com o JBehave, para nos auxiliar neste processo. Ao final, será apresentado como podemos estender a ferramenta para que possamos escrever nossas especificações em português, facilitando ainda mais o entendimento. Primeiramente, um pouco de conceito O BDD segue a mesma linha de pensamento de outros métodos baseados em test-first, em que iniciamos o desenvolvimento de uma funcionalidade com escrita de testes antes de escrevermos qualquer linha de código de produção e, como sugere o TDD, seguimos ciclos de 1) criação de um teste que falhe; 2) implementação de código que faça o teste passar (e nada além disso); e 3) refatoração do código criado no passo anterior visando melhorá-lo. Dessa forma, além de termos a garantia de testes automatizados (já que os criamos antes mesmo de criar código de produção), não cairemos na velha armadilha de deixar os testes para depois, quando tivermos mais folga no cronograma geralmente, nunca! Apesar de apresentar grandes vantagens, principalmente no design, TDD possui algumas desvantagens, como o forte acoplamento entre testes e classes e baixa expressividade do código de testes, tendo em vista que, mesmo utilizando padrões na escrita dos métodos de teste, ainda estamos falando de código Java. Por mais expressivo que este seja, ainda será código em uma linguagem de programação, o que é algo geralmente distante de pessoas mais voltadas para o negócio. Neste contexto, a principal ideia do BDD é facilitar a comunicação sobre os requisitos entre pessoas de negócio (analistas de negócio, patrocinadores etc.) e o time de desenvolvimento. Apesar de dar ênfase na comunicação, também é esperado que os comportamentos/requerimentos levantados nestas comunicações possam ser verificados de forma automática (inclusive com integração contínua). A ideia é que o desenvolvimento seja guiado através do comportamento esperado para a funcionalidade, encorajando os envolvidos a trabalharem juntos na definição de especificações que poderão ser executadas automaticamente, comprovando o funcionamento conforme o que foi definido. Segundo texto publicado em seu blog, Dan North iniciou em 2003 o desenvolvimento do primeiro framework para trabalho com BDD: o JBehave. A intenção era sobrescrever o JUnit fazendo com que referências a teste fossem substituídas por comportamento. Seguindo 32 este raciocínio, são desenvolvidos cenários como o apresentado na Listagem 1 (retirado do site do projeto JBehave). Listagem 1. Exemplo básico de cenário. Given I am not logged in When I log in as Liz with a password JBehaver Then I should see a message, Welcome, Liz! A partir daí, o JBehave utiliza classes Java para mapear os fragmentos dos cenários, fazendo o parse das informações e executando os testes no formato JUnit, com exibição de resultados aproveitando a estrutura disponibilizada por ele. O relacionamento entre BDD e Domain-Driven Design (DDD) Mais ou menos na mesma época, Eric Evans publicou seu livro Domain-Driven Design: Tackling Complexity in the Heart of Software que falava sobre o desenvolvimento de softwares tomando como base os conceitos envolvidos no domínio do negócio, fazendo com que seja utilizada uma linguagem única (ubíqua), melhorando a comunicação entre a equipe técnica e de negócio. Neste sentido, BDD torna-se ainda mais útil sendo utilizado na análise do problema, identificando cenários e critérios de aceitação com user stories que serão executadas (com o JBehave, por exemplo) para validar o funcionamento. A aproximação entre equipe técnica e de negócio, utilizando uma linguagem única que é perfeitamente entendida pelos dois grupos, conforme pregou Evans, ganha mais força quando os dois grupos podem trabalhar juntos na elaboração de especificações funcionais baseadas em pequenas especificações executáveis. BDD vs TDD Em alguns momentos pode parecer que há algum tipo de disputa ou concorrência entre BDD e TDD, mas é importante entender que as duas metodologias possuem focos de atuação diferentes e podem ser utilizadas de forma complementar. Na edição 43 da MundoJ, há um artigo do Rodrigo Yoshima com mais informações sobre TDD e BDD, suas origens e o relacionamento entre estas duas abordagens. No site do JBehave, podemos encontrar uma breve comparação entre as duas metodologias que é bastante interessante e traduzi livremente aqui (o quadro de referências no final do artigo contém o link para o texto original): É importante entender a diferença entre BDD e TDD. Essas duas práticas são igualmente importantes, mas possuem focos diferentes e devem ser complementares no uso das melhores práticas de desenvolvimento. BDD está preocupado principalmente com a especificação do comportamento do sistema sendo testado como um todo, portanto, é particularmente adequado para testes de aceitação e regressão. TDD está preocupado principalmente com o teste de um componente como unidade, mantendo-o isolado de outras dependências, que normalmente são "mockadas". BDD deve falar a linguagem do domínio de negócio e não a linguagem da tecnologia do desenvolvimento, que, por outro lado, é "falada" pelo TDD.

4 A criação e evolução do JBehave Como já falamos e segundo o blog do próprio Dan North (vide quadro de referências), o JBehave foi iniciado em 2003 e no começo algumas coisas não saíram muito bem. A maioria das características que o faz uma boa escolha hoje em dia foram baseadas em outros frameworks, particularmente o RSpec. Para mais informações, os artigos Automação de Testes de Aceitação com Cucumber e JRuby, Ed. 39 e Aplicações Desktop a jato com JRuby e Netbeans, Ed. 36 abordaram a utilização de RSpec e Cucumber (ver quadro de referências, no final do artigo). A partir daí, ao longo dos anos, a ferramenta sofreu fortes modificações (North fala que foi completamente reescrito, em seu blog na nota de lançamento da versão 2.0), inclusive para tirar proveito das facilidades de Java 5 e JUnit 4. A versão 2.0 é considerada um marco, pois já disponibiliza algumas ótimas características como integração com Maven, cenários em texto puro, entre outras. a classe Steps) e outra para definir o cenário (estendendo a classe Scenario). A classe que representa o cenário será executada como um teste JUnit e apresentará os resultados com as famosas barras verdes ou vermelhas (como um JUnit Test mesmo). Para isso, esta classe precisa, em seu construtor, adicionar cada Step criado para o cenário. Outro ponto importante é que o nome da classe deve ter relacionamento direto com o nome do arquivo que contém a descrição do cenário. Exemplo: para um cenário user_logs_in_successfully a classe que o representará deve ser UserLogsInSuccessfully, trocando os _ por camel casing; Criando nosso primeiro exemplo Entendendo os cenários e vocabulário No exemplo que iremos criar, implementaremos parte de uma funcionalidade para alteração de senha de acesso ao sistema. Neste ponto faremos apenas uma rápida verificação para identificar se é ou não uma senha segura. O BDD possui um vocabulário próprio que tenta ser bastante simples para facilitar sua utilização como linguagem ubíqua e seus principais componentes são Given, When e Then. Após criar um projeto novo e configurar as dependências (ver seção Dependências Necessárias), criaremos o arquivo de texto validacao_nova_senha.scenario, com o conteúdo da Listagem 3. Colocando a mão na massa! Tendo User Stories definidas, podemos criar o que chamamos de cenários para representá-las, podendo definir diversos cenários para cada uma delas, garantindo que trabalhamos todas as variações que formam o critério de aceite da User Story. Seguindo o padrão de Stories As a <type of user>, I want..., sugerido por Mike Cohn em seu blog (ver quadro de referências), poderíamos ter uma story como a apresentada na Legenda 2 (retirada do blog de Dan North). Listagem 2. Exemplo de story seguindo o padrão de Mike Cohn. As a customer, I want to withdraw cash from an ATM, So that I don t have to wait in line at the bank. E um possível cenários seria: Scenario 1: Account is in credit Given the account is in credit And the card is valid And the dispenser contains cash When the customer requests cash Then ensure the account is debited And ensure cash is dispensed And ensure the card is returned Há os que defendam abordagens mais completas, mencionando critérios de aceite mais detalhados e tabelas de dados. Como os cenários serão executados? Os cenários são salvos em um arquivo-texto e, para cada cenário, precisaremos de uma classe Java que defina os passos (estendendo Dependências necessárias Para o funcionamento correto da versão (utilizada em nosso projeto) do framework, é necessário configurar as seguintes dependências no classpath do projeto: jbehave-core jar (download direto do site do JBehave: hamcrest-all-1.1.jar ( commons-lang-2.5.jar ( download_lang.cgi); commons-collections.jar Além do JUnit4 (em Listagem 3. Código do cenário Validação de Nova Senha. Title Recadastramento de Senha Narrative: As a Usuario I want recadastrar minha senha So that continue tenasso ao sistema, com outra senha Scenario: Validar nova senha Given Um usuário de nome Marcelo Zeferino e login zeferino e a senha é 1234 When verifico se a senha é segura Then Deve retornar a mensagem A senha deve conter ao menos 5 caracteres. Feito isso, temos nossa especificação pronta e precisamos criar uma classe que execute nosso cenário. Para tanto, criaremos a classe ValidacaoNovaSenha.java, seguindo as convenções do JBehave, com o conteúdo da Listagem 4. 33

5 : : : : Listagem 4. Implementação da classe responsável por rodar o cenário. Listagem 5. Implementação da classe responsável pelos passos de teste dos cenários. public class ValidacaoNovaSenha extends JUnitScenario { public class ValidacaoNovaSenhaSteps extends Steps { private Usuario usuario = new Usuario(); public ValidacaoNovaSenha() { private String mensagemerro; super(new MostUsefulConfiguration() usuário de nome $nomeusuario e login $loginusuario e a senha é $novasenha") public void setup(string nomeusuario, String loginusuario, String novasenha) { public ScenarioDefiner fordefiningscenarios() { return new ClasspathScenarioDefiner( new UnderscoredCamelCaseResolver(.scenario ), new PatternScenarioParser(keywords())); mensagemerro = ""; usuario.setnome(nomeusuario); usuario.setlogin(loginusuario); public ScenarioReporter forreportingscenarios() { return new se a senha é segura") public void checksenha() { ); try{ usuario.validarnovasenha(); catch (Exception e) { mensagemerro = e.getmessage(); Feito isso, já podemos executar nosso teste e verificar o resultado. Rodando a nossa classe como um JUnit Test temos o resultado apresentado na figura 1, mostrando que a implementação dos passos de nosso cenário ainda estão retornar a mensagem \"$mensagem\"") public void checkmessagem(string mensagem) { ensurethat(mensagemerro.equalsignorecase(mensagem)); O JBehave utiliza para codificar algum comportamento para cada um destes passos do cenário descrito no arquivo de texto. Figura 1. Execução com passos ainda pendentes. O próximo passo é criar a classe que implementará os passos necessários para testar nossa especificação. Criaremos uma classe chamada ValidacaoNovaSenhaSteps.java, estendendo a classe Steps do JBehave, com o conteúdo da Listagem Podemos utilizar o conteúdo do arquivo de texto e fazer parsing das Strings a fim de compará-las com os resultados esperados. No nosso caso, queremos comparar se o conteúdo da variável mensagemerro, que está sendo recuperado de acordo com a Exception lançada pelo método validarnovasenha da classe Usuário, é equivalente à mensagem apresentada na descrição do cenário. Poderíamos neste ponto validar diversas entradas e saídas, de acordo com nossas necessidades, não estando limitados a apenas tipos String. O conteúdo da classe Usuário.java está descrito na Listagem 6.

6 Listagem 6. Implementação da classe de negócio Usuário, com o comportamento para verificação da senha. Listagem 7. Alteração na classe ValidacaoNovaSenha para executar o TestStep criado. package main.java.usuario; public class ValidacaoNovaSenha extends JUnitScenario { public ValidacaoNovaSenha() { public class Usuario { super(new MostUsefulConfiguration() { public Usuario(){ private String nome; private String login; private String senha; public ScenarioDefiner fordefiningscenarios() { return new ClasspathScenarioDefiner( new UnderscoredCamelCaseResolver(".scenario"), new PatternScenarioParser(keywords())); public String getnome() { return nome; public void setnome(string nome) { this.nome = nome; public String getlogin() { return login; public void setlogin(string login) { this.login = login; public String getsenha() { return senha; public void setsenha(string senha) { this.senha = public ScenarioReporter forreportingscenarios() { return new PrintStreamScenarioReporter(); ); addsteps(new ValidacaoNovaSenhaSteps()); public void validarnovasenha() throws Exception{ if (this.getsenha().length() < 5){ throw new Exception("A senha deve conter ao menos 5 caracteres."); Neste ponto, estamos aptos para inserir nosso TestStep no construtor da classe ValidacaoNovaSenha.java para que o runner chame a classe ValidacaoNovaSenhaSteps.java e execute os passos que predefinimos. Figura 2. Resultado de execução com sucesso. Para isso, incluiremos a linha addsteps(new ValidacaoNovaSenhaSteps()); após a chamada a super na classe ValidacaoNovaSenha.java, para ficar da forma apresentada na Listagem 7 e executaremos novamente esta classe como um JUnitTest. Se tudo correr bem, o resultado será apresentado como na figura 2, apresentando o sucesso do teste. Para testar o caso de falha, podemos alterar a mensagem da especificação e rodar novamente, verificando que o JUnit irá apresentar a barra vermelha, indicando que ocorreu uma falha, como na figura 3. Figura 3. Falha na execução do teste, indicando que uma condição não foi satisfeita, após alterarmos a mensagem. 35

7 : : : : Criando cenários com Tabela de Dados de Exemplo Uma ótima opção para trabalhar com mais dados de entrada para os testes é a utilização do recurso Table Examples. Este recurso permite que seja definida uma tabela com valores de entrada e/ou saída para o(s) cenário(s) de uma especificação, sem a necessidade de criar diversos cenários (um para cada entrada de dados, por exemplo). A sintaxe para a criação de Table Examples é apresentada na Listagem 8, já com uma aplicação prática no nosso exemplo. Listagem 9. Alterações na classe ValidacaoNovaSenhaSteps. java para compatibilizar com a utilização da tabela de exemplos. public class ValidacaoNovaSenhaSteps extends Steps { private Usuario usuario = new Usuario(); private String usuário de nome: <nome> e login: <login> e a senha: <senha>") public void setup(@named("nome") String String String novasenha) { Note que retiramos os valores anteriormente passados manualmente para os passos e adicionamos <> nos campos nome, login, senha e mensagem para que estes dados sejam recuperados da tabela de exemplos, no final da story. mensagemerro = ""; usuario.setnome(nomeusuario); usuario.setlogin(loginusuario); usuario.setsenha(novasenha); Foi necessário, também, alterar a classe ValidacaoNovaSenhaSteps.java para que os passos do cenário considerem as alterações feitas na especificação. A Listagem 9 apresenta o código alterado desta classe, utilizando a NomeDoCampo ), para identificar os valores recebidos da se a senha é segura") public void checksenha() { Note que a utilização deste tipo de anotação é bastante útil, pois é possível utilizar diretamente os atributos com seus tipos reais, ao invés de trabalhar com o parsing de Strings. try{ usuario.validarnovasenha(); catch (Exception e) { mensagemerro = e.getmessage(); A figura 4 apresenta o log geral de execução das entradas na tabela de exemplos, impresso no console. Listagem 8. Alterações em nossa especificação para utilização de Table Examples. Title Recadastramento de Senha Narrative: As a Usuario I want recadastrar minha senha So that continue tendo acesso ao sistema, com outra retornar a mensagem: <mensagem>") public void checkmessagem(@named("mensagem") String mensagem) { ensurethat(mensagemerro.trim().equalsignorecase(mensagem)); Title Recadastramento de Senha Narrative: As a Usuario I want recadastrar minha senha So that continue tendo acesso ao sistema, com outra senha Scenario: Validar nova senha Given Um usuário de nome: <nome> e login: <login> e a senha: <senha> When verifico se a senha é segura Then Deve retornar a mensagem: <mensagem> Examples: nome login senha mensagem Marcelo Zeferino zeferino 1234 A senha deve conter ao menos 5 caracteres. Kurt Cobain kurt Figura 4. Console apresentando resultado de execução de especificação utilizando Table Examples. 36

8 Mas estamos escrevendo em inglês e português ao mesmo tempo! Neste ponto, criei uma nova classe genérica para os cenários e steps em português, fazendo com que as classes anteriores agora herdem destas novas classes. Estendendo o JBehave para utilizar Português-BR nos cenários As Listagens 11 e 12, respectivamente, apresentam o código das classes genéricas para os cenários e steps, incluindo alguns comentários relevantes. Agora que já passamos por alguns conceitos básicos sobre o framework, percebemos que a utilização de inglês (devido ao padrão Given, When, Then) e português no mesmo documento não soa muito bem. Inclusive, pode ser um empecilho para o objetivo de alcançar maior participação dos envolvidos. Listagem 11. Classe genérica, com configurações para utilizar língua personalizada pelo arquivo keywords_pt. public class ScenarioPtBR extends JUnitScenario { O JBehave nos reserva a possibilidade de estendê-lo para utilizar outros dialetos, permitindo configurar o vocabulário para a forma que melhor atenda aos usuários. Criaremos novas classes e especificação, agora utilizando apenas nossa linguagem na descrição das especificações. Manteremos a mesma funcionalidade para permitir um comparativo. public ScenarioPtBR() { this(thread.currentthread().getcontextclassloader()); public ScenarioPtBR(final ClassLoader classloader) { super(new PropertyBasedConfiguration() public ScenarioDefiner fordefiningscenarios() { Criando o arquivo de redefinição do vocabulário (keywords_ pt.properties) // Repare que aqui estamos utilizando a extensão.cenario e não //.scenario, como antes return new ClasspathScenarioDefiner( new UnderscoredCamelCaseResolver(".cenario"), new PatternScenarioParser(this), classloader); Para que o JBehave possa trabalhar com nosso vocabulário, precisamos definir um arquivo de palavras-chave, traduzindo tais palavras para o nosso idioma. A Listagem 10 apresenta o conteúdo deste arquivo (salvo como keywords_pt.properties). Listagem 10. Arquivo de mapeamento de palavras-chaves e suas traduções. Scenario=Cenário: Narrative=Narrativa: InOrderTo=Para que AsA=Como um IWantTo=Eu desejo GivenScenarios=DadoCenários: ExamplesTable=Exemplos: ExamplesTableRow=LinhaTabelaExemplo: Given=Dado When=Quando Then=Então And="E" Pending=PENDENTE NotPerformed=N\u00E3o Executado Failed=FALHA Ignorable=Ignoravel DryRun=DryRun Um alerta para a linha que contém o mapeamento do keyword And (ainda na Listagem 10). Neste caso, utilizamos E, entre aspas, devido a problemas na biblioteca utilizada pelo JBehave para fazer o match das strings. Caso não tivéssemos usado as aspas o And seria convertido para qualquer palavra que iniciasse com a letra E. Outra solução seria envolver todas as palavras em public ScenarioReporter forreportingscenarios() { //definição do Locale "pt", utilizado na exibição dos resultados return new PrintStreamScenarioReporter(keywordsFor( new Locale("pt"), classloader)); //Definição do Locale utilizado na obtenção dos public KeyWords keywords() { return keywordsfor(new Locale("pt"), classloader); ); //Aqui está sendo definido o pacote onde está inserido o arquivo properties com //mapeamento das palavras chaves traduzidas para o Português protected static KeyWords keywordsfor(locale locale, ClassLoader classloader) { return new I18nKeyWords(locale, new StringEncoder(), "test/resources/keywords", classloader); Além de criar o arquivo keywords_pt_properties da Listagem 10, precisaremos definir algumas configurações em nossas classes (tanto a que funciona como runner dos cenários quanto a que define o comportamento dos passos de execução) para que as novas configurações sejam utilizadas. 37

9 : : : : Listagem 12. Classe genérica para Steps com configurações para utilizar língua personalizada pelo arquivo keywords_pt. Cont. Listagem 14. Classe para execução dos steps, agora herdando comportamentos de configuração de linguagem. public class StepPtBR extends Steps { try{ usuario.validarnovasenha(); public StepPtBR(){ this(thread.currentthread().getcontextclassloader()); catch (Exception e) { mensagemerro = e.getmessage(); //Definindo que serão utilizados os keywords traduzidos public StepPtBR(ClassLoader classloader) { super(new StepsConfiguration(keywordsFor(new Locale("pt"), classloader))); //Aqui está sendo definido o pacote onde está inserido o arquivo properties com //mapeamento das palavras chaves traduzidas para o Português protected static KeyWords keywordsfor(locale locale, ClassLoader classloader) { return new I18nKeyWords(locale, new StringEncoder(), "test/resources/keywords", retornar a <mensagem>") public void checkmessagem(@named("mensagem") String mensagem) { ensurethat(mensagemerro.trim().equalsignorecase(mensagem)); Listagem 15. Especificação, agora escrita em nossa língua. Título Recadastramento de Senha As Listagens 13 e 14 apresentam o código das novas classes para runner de cenários e steps, que agora herdam as características de configuração das classes genéricas. Na Listagem 15, temos o novo texto de nossa especificação, agora em português. Listagem 13. Classe para execução do cenário, simplificada pela herança de comportamentos de configuração de linguagem. Narrativa: Como a Usuario Eu desejo recadastrar minha senha Para que continue tendo acesso ao sistema, com outra senha Cenário: Validar nova senha Dado Um usuário de <nome> e <login> e a <senha> Quando verifico se a senha é segura Então Deve retornar a <mensagem> public class ValidacaoNovaSenhaPtBr extends ScenarioPtBR { public ValidacaoNovaSenhaPtBr(){ addsteps(new ValidacaoNovaSenhaStepsPtBr()); Exemplos: nome login senha mensagem Marcelo Zeferino zeferino 1234 A senha deve conter ao menos 5 caracteres. Kurt Cobain kurt Por fim, a figura 5 contém o resultado da execução, já utilizando nossa língua e a figura 6 contém a estrutura final de nossa aplicação. Listagem 14. Classe para execução dos steps, agora herdando comportamentos de configuração de linguagem. public class ValidacaoNovaSenhaStepsPtBr extends StepPtBR { private Usuario usuario = new Usuario(); private String usuário de <nome> e <login> e a <senha>") public void setup(@named("nome") String String String novasenha) { mensagemerro = ""; usuario.setnome(nomeusuario); usuario.setlogin(loginusuario); se a senha é segura") public void checksenha() { 38 Figura 5. Console com a execução, após configuração da língua para português.

10 Utilizar uma prática baseada em TestFirst é importante para garantir que testes automatizados existirão (e não ficarão para quando a equipe tiver tempo nunca!) e que o design da aplicação será orientado para facilitar testes. Existem diversas ferramentas que habilitam a utilização de BDD em Java, como EasyB, JBee, EasySpec e o famoso Cucumber (com JRuby). No entanto, JBehave se posiciona no mercado como uma ótima opção e, em minha opinião, é a melhor dentre outros frameworks, pois podemos criar especificações de maneira bastante simples e utilizando puramente Java (e não JRuby ou Groovy, por exemplo, como no caso de Cucumber e EasyB, respectivamente). A ferramenta ainda permite uma série de outras habilidades não apresentadas neste artigo, como a integração com outros frameworks, como HTMLUnit e Selenium, por exemplo. É possível encontrar uma implementação de exemplo utilizando JBehave sobre WebDriver (HTMLUnit) no GitHub profile do Rodrigo Yoshima (da Aspercom e colunista da MundoJ), descrito na seção de referências no final do artigo. Outra capacidade interessante é a integração com Ant e Maven, facilitando a execução automática dos testes de acordo com o ponto no ciclo de vida da aplicação, mas este é um assunto para um novo artigo Figura 6. Estrutura final da aplicação, no Eclipse. Considerações finais São diversos os benefícios na utilização de BDD, como a possibilidade de escrever especificações junto aos usuários finais garantindo melhor entendimento do problema. Tais especificações servirão como documentação e poderão ser executadas automaticamente para validação e verificação dos cenários, o que aumenta consideravelmente a chance de se tornar uma documentação útil e constantemente atualizada. Referências blog de Dan North. post no blog de Dan North com detalhes sobre a evolução do JBehave e sua versão post no blog de Dan North sobre a filosofia do framework e breve, porém excelente e esclarecedora, comparação entre BDD e TDD. Automação de Testes de Aceitação com Cucumber e JRuby Ed 39 da MundoJ, Aplicações Desktop a jato com JRuby e Netbeans Ed 36 da MundoJ. site de referência para o RSpec. Domain-Driven Design: Tackling Complexity in the Heart of Software, Eric Evans. blog oficial do framework. link do GitHub profile de Rodrigo Yoshima, com exemplo prático utilizando JBehave sobre WebDriver. post em blog de Mike Cohn com template para User Stories. Para aplicações nas quais utilizamos Domain-Driven Design, a utilização de BDD aparece com grande utilidade, facilitando a criação e manutenção da Ubiquitous Language, entre desenvolvedores e pessoas de negócio. 39

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

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

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

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

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1 DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1 1 Sumário 1 - Instalação Normal do Despachante Express... 3 2 - Instalação do Despachante Express em Rede... 5 3 - Registrando o Despachante Express...

Leia mais

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC Módulo 5 No módulo anterior adaptamos nosso projeto para persistir as informações no banco de dados utilizando as facilidades da extensão demoiselle-jpa. Experimentamos o controle transacional do Framework

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

02 - Usando o SiteMaster - Informações importantes

02 - Usando o SiteMaster - Informações importantes 01 - Apresentação do SiteMaster - News Edition O SiteMaster foi desenvolvido para ser um sistema simples de gerenciamento de notícias, instalado em seu próprio computador e com configuração simplificada,

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

Configurações de Templates no SolidWorks 2011

Configurações de Templates no SolidWorks 2011 Configurações de Templates no SolidWorks 2011 Esse tutorial tem como intuito a criação de propriedades personalizadas, a criação destas propriedades é uma forma de automatizar o preenchimentos de informações

Leia mais

Guia de Fatores de Qualidade de OO e Java

Guia de Fatores de Qualidade de OO e Java Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.

Leia mais

GUIA DE ORIENTAÇÕES ROTEIRO DE CONFIGURAÇÃO DO SOFTWARE CRM PROFESSIONAL ANEXO III ROTEIRO DE CONFIGURAÇÃO - CRM PROFESSIONAL

GUIA DE ORIENTAÇÕES ROTEIRO DE CONFIGURAÇÃO DO SOFTWARE CRM PROFESSIONAL ANEXO III ROTEIRO DE CONFIGURAÇÃO - CRM PROFESSIONAL ANEXO III ROTEIRO DE CONFIGURAÇÃO - CRM PROFESSIONAL GUIA DE ORIENTAÇÕES ROTEIRO DE CONFIGURAÇÃO DO SOFTWARE CRM PROFESSIONAL ANEXO III ROTEIRO DE CONFIGURAÇÃO E INSTALAÇÃO DO CRM PROFESSIONAL SUMÁRIO

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

COMO FAZER A TRANSIÇÃO

COMO FAZER A TRANSIÇÃO ISO 9001:2015 COMO FAZER A TRANSIÇÃO Um guia para empresas certificadas Antes de começar A ISO 9001 mudou! A versão brasileira da norma foi publicada no dia 30/09/2015 e a partir desse dia, as empresas

Leia mais

Plano de Gerenciamento do Projeto

Plano de Gerenciamento do Projeto Projeto para Soluções Contábeis 2015 Plano de Gerenciamento do Projeto Baseado na 5ª edição do Guia PMBOK Brendon Genssinger o e Elcimar Silva Higor Muniz Juliermes Henrique 23/11/2015 1 Histórico de alterações

Leia mais

CURSO DE PROGRAMAÇÃO EM JAVA

CURSO DE PROGRAMAÇÃO EM JAVA CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro

Leia mais

Desenvolvimento Guiado por Testes

Desenvolvimento Guiado por Testes Desenvolvimento Guiado por Testes Test-Driven Development (TDD) Guilherme Chapiewski http://gc.blog.br gc@mandic.com.br O que é TDD? Regras fundamentais do TDD: Escreva o teste da implementação ANTES de

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

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

Guia Rápido para Acesso, Preenchimento e Envio Formulário de Cadastro da Empresa e Formulário de Projeto

Guia Rápido para Acesso, Preenchimento e Envio Formulário de Cadastro da Empresa e Formulário de Projeto EDITAL DE SELEÇÃO PÚBLICA MCTI/AEB/FINEP/FNDCT Subvenção Econômica à Inovação Transferência de Tecnologia do SGDC 01/2015 Transferência de Tecnologia Espacial no Âmbito do Decreto nº 7.769 de 28/06/2012

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

INTRODUÇÃO 12. DOCUMENTAÇÃO INTRODUÇÃO INTRODUÇÃO

INTRODUÇÃO 12. DOCUMENTAÇÃO INTRODUÇÃO INTRODUÇÃO INTRODUÇÃO 12. DOCUMENTAÇÃO Na plataforma Java SE 7, há cerca de 4000 classes e interfaces disponíveis para utilizarmos em nossas aplicações Podemos visualizar a documentação dessas classes e interfaces

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

5. Métodos ágeis de desenvolvimento de software

5. Métodos ágeis de desenvolvimento de software Engenharia de Software 5. Métodos ágeis de desenvolvimento de software Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Desenvolver e entregar software o mais rapidamente possível é hoje em dia um dos

Leia mais

OI CONTA EMPRESA MANUAL DO USUÁRIO

OI CONTA EMPRESA MANUAL DO USUÁRIO OI CONTA EMPRESA MANUAL DO USUÁRIO 1 Bem-vindo ao Oi Conta Empresa! A Oi tem o orgulho de lançar mais um produto para nossos clientes corporativos, o Oi Conta Empresa. Nele, nossos clientes poderão acessar

Leia mais

Implantação do Padrão TISS

Implantação do Padrão TISS Implantação do Padrão TISS Como avalia o impacto da TISS no setor de atendimento de seu laboratório? Como avalia o impacto da TISS no setor de faturamento de seu laboratório? Após a TISS, o número de colaboradores

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

PARANÁ GOVERNO DO ESTADO

PARANÁ GOVERNO DO ESTADO A COMUNICAÇÃO NA INTERNET PROTOCOLO TCP/IP Para tentar facilitar o entendimento de como se dá a comunicação na Internet, vamos começar contando uma história para fazer uma analogia. Era uma vez, um estrangeiro

Leia mais

SERVICE DESK MANAGER SDM. Manual do Sistema - DPOI

SERVICE DESK MANAGER SDM. Manual do Sistema - DPOI SERVICE DESK MANAGER SDM Manual do Sistema - DPOI Conteúdo SERVICE DESK MANAGER SDM... 1 Manual do Sistema - DPOI... 1 INTRODUÇÃO... 4 ACESSO AO SISTEMA... 5 OPÇÕES DO SISTEMA... 6 SISTEMA... 7 Pesquisar

Leia mais

MANUAL DE UTILIZAÇÃO

MANUAL DE UTILIZAÇÃO MANUAL DE UTILIZAÇÃO Módulo de operação Ativo Bem vindo à Vorage CRM! Nas próximas paginas apresentaremos o funcionamento da plataforma e ensinaremos como iniciar uma operação básica através do nosso sistema,

Leia mais

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA Manual do Moodle- Sala virtual UNIFAP MACAPÁ-AP 2012 S U M Á R I O 1 Tela de Login...3 2 Tela Meus

Leia mais

Demoiselle Report Guide. Demoiselle Report. Marlon Carvalho. <marlon.carvalho@gmail.com> Rodrigo Hjort. <rodrigo.hjort@gmail.com> Robson Ximenes

Demoiselle Report Guide. Demoiselle Report. Marlon Carvalho. <marlon.carvalho@gmail.com> Rodrigo Hjort. <rodrigo.hjort@gmail.com> Robson Ximenes Demoiselle Report Guide Demoiselle Report Marlon Carvalho Rodrigo Hjort Robson Ximenes Demoiselle Report... v 1. Configuração

Leia mais

ProgramaTchê programatche.net Programação OO com PHP

ProgramaTchê programatche.net Programação OO com PHP Roteiro 2 Objetivos: * Apresentar a sintaxe básica para utilização de Orientação a Objetos em PHP. Ferramentas necessárias Navegador, NetBeans, Servidor Apache. 1 Orientação a Objetos em PHP PHP é uma

Leia mais

Apresentação. Nossa sugestão é que você experimente e não tenha medo de clicar!!!

Apresentação. Nossa sugestão é que você experimente e não tenha medo de clicar!!! Apresentação Este manual é uma orientação para os participantes de cursos no ambiente Moodle do INSTITUTO PRISMA. Tem como objetivo orientar sobre as ações básicas de acesso e utilização do ambiente virtual

Leia mais

Manual de configuração do sistema

Manual de configuração do sistema Manual de configuração do sistema (v.1.5.x Beta) Rua México, 119 Sala 2004 Centro Rio de Janeiro, RJ www.doctors-solution.com.br www.simdoctor.com.br contato@simdoctor.com.br Sumário 1. Fazendo seu primeiro

Leia mais

Manual Do Usuário Processo Licitação

Manual Do Usuário Processo Licitação Manual Do Usuário Processo Licitação Versão 1.0 Agosto 2015 2 SUMÁRIO 1 OBJETIVO... 4 2 INTRODUÇÃO... 4 3 ACESSANDO O SISTEMA DE GESTÃO DE PROCESSOS... 5 4 CONFIGURANDO O IDIOMA DO SISTEMA... 6 5 ENTENDENDO

Leia mais

Sumário. Apresentação O que é o Centro de Gerenciamento de Serviços (CGS) NTI? Terminologia Status do seu chamado Utilização do Portal Web

Sumário. Apresentação O que é o Centro de Gerenciamento de Serviços (CGS) NTI? Terminologia Status do seu chamado Utilização do Portal Web Sumário Apresentação O que é o Centro de Gerenciamento de Serviços (CGS) NTI? Terminologia Status do seu chamado Utilização do Portal Web Fazendo Login no Sistema Tela inicial do Portal WEB Criando um

Leia mais

Prefeitura Municipal de São Luís Manual de uso dos serviços da SEMFAZ. Prefeitura Municipal de São Luís Manual de uso dos serviços da SEMFAZ

Prefeitura Municipal de São Luís Manual de uso dos serviços da SEMFAZ. Prefeitura Municipal de São Luís Manual de uso dos serviços da SEMFAZ Prefeitura Municipal de São Luís Manual de uso dos serviços da SEMFAZ 1 Sumário 1. Introdução 2. Emissão de Certidões 3. Autenticação de Certidões 4. Cadastro de Imóveis/Empresa 5. Acessando meu cadastro

Leia mais

Instalando e configurando o Java Development Kit (JDK)

Instalando e configurando o Java Development Kit (JDK) Tutorial elaborado pelo professor José Gonçalo dos Santos Contato: jose.goncalo.santos@gmail.com Instalando e configurando o Java Development Kit (JDK) 1.1 Obtendo o JDK + JRE Para obter o JDK e o JRE

Leia mais

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas Microsoft Power Point 2003 No Microsoft PowerPoint 2003, você cria sua apresentação usando apenas um arquivo, ele contém tudo o que você precisa uma estrutura para sua apresentação, os slides, o material

Leia mais

Grupo Seres Adota CA Cloud Service Management para Automatizar e Gerenciar Chamados de Service Desk

Grupo Seres Adota CA Cloud Service Management para Automatizar e Gerenciar Chamados de Service Desk CUSTOMER SUCCESS STORY Abril 2014 Grupo Seres Adota CA Cloud Service Management para Automatizar e Gerenciar Chamados de Service Desk PERFIL DO CLIENTE Indústria: Consultoria Empresa: Grupo Seres Colaboradores:

Leia mais

Implementando uma Classe e Criando Objetos a partir dela

Implementando uma Classe e Criando Objetos a partir dela Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 04 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 2 Prof. Cristóvão Cunha Implementando uma Classe

Leia mais

Gerenciamento de Projetos

Gerenciamento de Projetos Gerenciamento de Projetos O objetivo do módulo de Gerenciamento de Projetos é ajudar a empresa a gerenciar com mais eficiência os seus projetos. Controle dos prazos, das tarefas, dos eventos, da quantidade

Leia mais

Manual do Google agenda. criação e compartilhamento de agendas

Manual do Google agenda. criação e compartilhamento de agendas Manual do Google agenda criação e compartilhamento de agendas 1 O que é o Google Agenda? Google Agenda é um serviço de agenda on line gratuito do Google, onde você pode anotar compromissos e tarefas, organizando

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

edirectory Plataforma ios / Android

edirectory Plataforma ios / Android edirectory Plataforma ios / Android Levando seu site ao próximo nível Conheça o novo aplicativo do edirectory. E seja bem vindo a revolução em aplicativos para Diretórios Online. Mobile Completamente reestruturado

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

GARANTIA DA QUALIDADE DE SOFTWARE

GARANTIA DA QUALIDADE DE SOFTWARE GARANTIA DA QUALIDADE DE SOFTWARE Fonte: http://www.testexpert.com.br/?q=node/669 1 GARANTIA DA QUALIDADE DE SOFTWARE Segundo a NBR ISO 9000:2005, qualidade é o grau no qual um conjunto de características

Leia mais

UNIDADE 4. Introdução à Metodologia de Desenvolvimento de Sistemas

UNIDADE 4. Introdução à Metodologia de Desenvolvimento de Sistemas UNIDADE 4. Introdução à Metodologia de Desenvolvimento de Sistemas 4.1 Motivação Sistemas de Informação são usados em diversos níveis dentro de uma organização, apoiando a tomada de decisão; Precisam estar

Leia mais

Manual Xerox capture EMBRATEL

Manual Xerox capture EMBRATEL Manual Xerox capture EMBRATEL Versão 2 Junho/2011 Tópicos 1) Instalação do Xerox Capture 2) Utilização do Xerox Capture 2.1) Capturar pacotes de imagens pelo scanner 2.2) Importar pacote de imagens a partir

Leia mais

Dicas para implantação do Autodesk Vault para pequenas e médias empresas

Dicas para implantação do Autodesk Vault para pequenas e médias empresas Dicas para implantação do Autodesk Vault para pequenas e médias empresas Rodrigo Tito Nova CS Informática Cristiano Oliveira ConsultCAD É sabido por todos que hoje, o processo de desenvolvimento do produto

Leia mais

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova. 3.5 Páginas: Ao clicar em Páginas, são exibidas todas as páginas criadas para o Blog. No nosso exemplo já existirá uma página com o Título Página de Exemplo, criada quando o WorPress foi instalado. Ao

Leia mais

QUESTINAMENTOS AO EDITAL DE CONCORRÊNCIA 01/2013

QUESTINAMENTOS AO EDITAL DE CONCORRÊNCIA 01/2013 QUESTINAMENTOS AO EDITAL DE CONCORRÊNCIA 01/2013 Prezados Senhores da comissão de licitação da UENF, seguem alguns questionamentos acerca do edital de concorrência 01/2013 para esclarecimentos: 1. ANEXO

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

USANDO O IZCODE PARA GERAR SOFTWARE RAPIDAMENTE

USANDO O IZCODE PARA GERAR SOFTWARE RAPIDAMENTE USANDO O IZCODE PARA GERAR SOFTWARE RAPIDAMENTE SUMÁRIO usando o izcode... 1 para gerar software rapidamente... 1 introdução... 2 o que é o izcode?... 2 Como funciona o izcode?... 2 os tipos diferentes

Leia mais

Gerenciamento de software como ativo de automação industrial

Gerenciamento de software como ativo de automação industrial Gerenciamento de software como ativo de automação industrial INTRODUÇÃO Quando falamos em gerenciamento de ativos na área de automação industrial, fica evidente a intenção de cuidar e manter bens materiais

Leia mais

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova. 3.5 Páginas: Ao clicar em Páginas, são exibidas todas as páginas criadas para o Blog. No nosso exemplo já existirá uma página com o Título Página de Exemplo, criada quando o WorPress foi instalado. Ao

Leia mais

Documento de Arquitetura

Documento de Arquitetura Documento de Arquitetura A2MEPonto - SISTEMA DE PONTO ELETRÔNICO A2MEPonto - SISTEMA DE PONTO ELETRÔNICO #1 Pág. 1 de 11 HISTÓRICO DE REVISÕES Data Versão Descrição Autor 28/10/2010 1 Elaboração do documento

Leia mais

2 echo "PHP e outros.";

2 echo PHP e outros.; PHP (Hypertext Preprocessor) Antes de qualquer coisa, precisamos entender o que é o PHP: O PHP(Hypertext Preprocessor) é uma linguagem interpretada gratuita, usada originalmente apenas para o desenvolvimento

Leia mais

Material de Apoio. Sistema de Informação Gerencial (SIG)

Material de Apoio. Sistema de Informação Gerencial (SIG) Sistema de Informação Gerencial (SIG) Material de Apoio Os Sistemas de Informação Gerencial (SIG) são sistemas ou processos que fornecem as informações necessárias para gerenciar com eficácia as organizações.

Leia mais

GUIA INTEGRA SERVICES E STATUS MONITOR

GUIA INTEGRA SERVICES E STATUS MONITOR GUIA INTEGRA SERVICES E STATUS MONITOR 1 - Integra Services Atenção: o Integra Services está disponível a partir da versão 2.0 do software Urano Integra. O Integra Services é um aplicativo que faz parte

Leia mais

Menus Personalizados

Menus Personalizados Menus Personalizados Conceitos básicos do Painel Logando no Painel de Controle Para acessar o painel de controle do Wordpress do seu servidor siga o exemplo abaixo: http://www.seusite.com.br/wp-admin Entrando

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

Na disciplina de Cálculo Numérico, vamos trabalhar com a linguagem C++ e o compilador que vamos usar é o Dev C++.

Na disciplina de Cálculo Numérico, vamos trabalhar com a linguagem C++ e o compilador que vamos usar é o Dev C++. Data: 14/8 Página 1 de 9 Primeiros passos Introdução Na disciplina de Cálculo Numérico, vamos trabalhar com a linguagem C++ e o compilador que vamos usar é o Dev C++. No tutorial anterior, mostramos como

Leia mais

Prototype, um Design Patterns de Criação

Prototype, um Design Patterns de Criação Prototype, um Design Patterns de Criação José Anízio Pantoja Maia Este artigo tem como finalidade compreender o funcionamento do padrão de projeto prototype, serão abordados os participantes que compõe

Leia mais

Soluções em. Cloud Computing. Midia Indoor. para

Soluções em. Cloud Computing. Midia Indoor. para Soluções em Cloud Computing para Midia Indoor Resumo executivo A Midia Indoor chegou até a Under buscando uma hospedagem para seu site e evoluiu posteriormente para uma solução cloud ampliada. A empresa

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

Curso: Desenvolvendo Jogos 2d Com C# E Microsoft XNA. Mostrar como funciona a programação orientada a objetos

Curso: Desenvolvendo Jogos 2d Com C# E Microsoft XNA. Mostrar como funciona a programação orientada a objetos META Curso: Desenvolvendo Jogos 2d Com C# E Microsoft XNA Conteudista: André Luiz Brazil Aula 3: CRIANDO A CLASSE ESPAÇONAVE Mostrar como funciona a programação orientada a objetos OBJETIVOS Ao final da

Leia mais

Cinco principais qualidades dos melhores professores de Escolas de Negócios

Cinco principais qualidades dos melhores professores de Escolas de Negócios Cinco principais qualidades dos melhores professores de Escolas de Negócios Autor: Dominique Turpin Presidente do IMD - International Institute for Management Development www.imd.org Lausanne, Suíça Tradução:

Leia mais

Modelo Cascata ou Clássico

Modelo Cascata ou Clássico Modelo Cascata ou Clássico INTRODUÇÃO O modelo clássico ou cascata, que também é conhecido por abordagem top-down, foi proposto por Royce em 1970. Até meados da década de 1980 foi o único modelo com aceitação

Leia mais

INTRODUÇÃO À TECNOLOGIA SERVLETS

INTRODUÇÃO À TECNOLOGIA SERVLETS PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB INTRODUÇÃO À TECNOLOGIA SERVLETS Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o conceito aplicações orientada a serviços via web Apresentar o papel dos contentores

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

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação. ANEXO 11 O MATRIZ Para o desenvolvimento de sites, objeto deste edital, a empresa contratada obrigatoriamente utilizará o framework MATRIZ desenvolvido pela PROCERGS e disponibilizado no início do trabalho.

Leia mais

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE Aluno: Roberto Reinert Orientador: Everaldo A. Grahl Roteiro de apresentação Introdução Objetivos Fundamentação Teórica Workflow Processo

Leia mais

Voltado para novos usuários, este capítulo fornece uma instrução para edição de Leiaute do SILAS e suas funções.

Voltado para novos usuários, este capítulo fornece uma instrução para edição de Leiaute do SILAS e suas funções. 13. Editor de leiautes Voltado para novos usuários, este capítulo fornece uma instrução para edição de Leiaute do SILAS e suas funções. Neste capítulo uma breve explicação será apresentada sobre a organização

Leia mais

Manual de Utilização

Manual de Utilização Manual de Utilização Versão 1.0 18/01/2013 Sempre consulte por atualizações deste manual em nossa página. O Cotação Web está em constante desenvolvimento, podendo ter novas funcionalidades adicionadas

Leia mais

Requisitos de Software. Teresa Maciel DEINFO/UFRPE

Requisitos de Software. Teresa Maciel DEINFO/UFRPE Requisitos de Software Teresa Maciel DEINFO/UFRPE 1 Requisito de Software Características que o produto de software deverá apresentar para atender às necessidades e expectativas do cliente. 2 Requisito

Leia mais

Programação Extrema. Luis Fernando Machado. Engenharia de Software

Programação Extrema. Luis Fernando Machado. Engenharia de Software Programação Extrema Luis Fernando Machado Engenharia de Software Desenvolvimento Ágil Programação Extrema, ou Extreme Programming (XP) é um modelo de desenvolvimento ágil. Desenvolvimento ágil foi criado

Leia mais

Rock In Rio - Lisboa

Rock In Rio - Lisboa Curso de Engenharia Informática Industrial Rock In Rio - Lisboa Elaborado por: Ano Lectivo: 2004/05 Tiago Costa N.º 4917 Turma: C Gustavo Graça Patrício N.º 4757 Turma: C Docente: Professora Maria Estalagem

Leia mais

TRANSMISSOR ECF. Sistema de transmissão de arquivos Nota Fiscal Paulista. Manual de Utilização

TRANSMISSOR ECF. Sistema de transmissão de arquivos Nota Fiscal Paulista. Manual de Utilização TRANSMISSOR ECF Sistema de transmissão de arquivos Nota Fiscal Paulista Manual de Utilização 1. Histórico de alterações Data Versão Alteração 04/12/2012 1 Criação do documento 28/02/2013 2 Revisão 2. Proposta

Leia mais

Criando uma agenda simples com NetBeans 6.5

Criando uma agenda simples com NetBeans 6.5 Criando uma agenda simples com NetBeans 6.5 (Swing application framework e Beansbinding) Já faz algum tempo que escrevi uma agenda simples usando o Eclipse com o Visual Class Editor. Demorei em torno de

Leia mais

3 Dicas MATADORAS Para Escrever Emails Que VENDEM Imóveis

3 Dicas MATADORAS Para Escrever Emails Que VENDEM Imóveis 3 Dicas MATADORAS Para Escrever Emails Que VENDEM Imóveis O que é um e- mail bem sucedido? É aquele e- mail que você recebe o contato, envia o e- mail para o cliente e ele te responde. Nós não estamos

Leia mais

Validando dados de páginas WEB

Validando dados de páginas WEB Validando dados de páginas WEB Para que validar os dados? Validar os dados informados pelo usuário garante que sua aplicação funcione corretamente e as informações contidas nela tenha algum sentido. Outro

Leia mais

NOVIDADES DO JAVA PARA PROGRAMADORES C

NOVIDADES DO JAVA PARA PROGRAMADORES C PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB NOVIDADES DO JAVA PARA PROGRAMADORES C Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o Conceito de Classes e Objetos Capacitar para a criação de objetos simples

Leia mais

Atividade: COBIT : Entendendo seus principais fundamentos

Atividade: COBIT : Entendendo seus principais fundamentos SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA INSTITUTO FEDERAL DO PIAUÍ CAMPUS FLORIANO EIXO TECNOLÓGICO: INFORMAÇÃO E COMUNICAÇÃO CURSO: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PERÍODO

Leia mais

O papel do CRM no sucesso comercial

O papel do CRM no sucesso comercial O papel do CRM no sucesso comercial Escrito por Gustavo Paulillo Você sabia que o relacionamento com clientes pode ajudar sua empresa a ter mais sucesso nas vendas? Ter uma equipe de vendas eficaz é o

Leia mais

Empresa capixaba de tecnologia lança primeiro construtor de sites do Estado

Empresa capixaba de tecnologia lança primeiro construtor de sites do Estado Empresa capixaba de tecnologia lança primeiro construtor de sites do Estado Por meio do www.webfacil.com.br qualquer usuário de informática é capaz de criar seu próprio site, no domínio que desejar, e

Leia mais

VISUAL LIGHTBOX FERRAMENTA WEB DESIGN FABIANO KEIJI TAGUCHI

VISUAL LIGHTBOX FERRAMENTA WEB DESIGN FABIANO KEIJI TAGUCHI VISUAL LIGHTBOX FERRAMENTA WEB DESIGN FABIANO KEIJI TAGUCHI ESTE MATERIAL TEM UM OBJETIVO DE COMPLEMENTAR OS ASSUNTOS ABORDADOS DENTRO DE SALA DE AULA, TORNANDO-SE UM GUIA PARA UTILIZAÇÃO DA FERRAMENTA

Leia mais

JDBC Java Database Connectivity

JDBC Java Database Connectivity 5 JDBC Java Database Connectivity Prof. Autor: Daniel Morais dos Reis e-tec Brasil Programação Avançada Para Web Página1 Meta Trabalhar com bancos de dados em aplicações web em JSP através das classes

Leia mais

Aula 01 - Formatações prontas e condicionais. Aula 01 - Formatações prontas e condicionais. Sumário. Formatar como Tabela

Aula 01 - Formatações prontas e condicionais. Aula 01 - Formatações prontas e condicionais. Sumário. Formatar como Tabela Aula 01 - Formatações prontas e Sumário Formatar como Tabela Formatar como Tabela (cont.) Alterando as formatações aplicadas e adicionando novos itens Removendo a formatação de tabela aplicada Formatação

Leia mais

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Aula 09 Introdução à Java Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Agenda da Aula Java: Sintaxe; Tipos de Dados; Variáveis; Impressão de Dados.

Leia mais

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse Como criar um EJB Criando um projeto EJB com um cliente WEB no Eclipse Gabriel Novais Amorim Abril/2014 Este tutorial apresenta o passo a passo para se criar um projeto EJB no Eclipse com um cliente web

Leia mais

Registro e Acompanhamento de Chamados

Registro e Acompanhamento de Chamados Registro e Acompanhamento de Chamados Contatos da Central de Serviços de TI do TJPE Por telefone: (81) 2123-9500 Pela intranet: no link Central de Serviços de TI Web (www.tjpe.jus.br/intranet) APRESENTAÇÃO

Leia mais

Manual Do Usuário Processo Aditivo de Prazo

Manual Do Usuário Processo Aditivo de Prazo Manual Do Usuário Processo Aditivo de Prazo Versão 1.0 Agosto 2015 2 SUMÁRIO 1 OBJETIVO... 3 2 INTRODUÇÃO... 3 3 ACESSANDO O SISTEMA DE GESTÃO DE PROCESSOS... 4 4 CONFIGURANDO O IDIOMA DO SISTEMA... 5

Leia mais

1. Tela de Acesso pg. 2. 2. Cadastro pg. 3. 3. Abas de navegação pg. 5. 4. Abas dados cadastrais pg. 5. 5. Aba grupo de usuários pg.

1. Tela de Acesso pg. 2. 2. Cadastro pg. 3. 3. Abas de navegação pg. 5. 4. Abas dados cadastrais pg. 5. 5. Aba grupo de usuários pg. Sumário 1. Tela de Acesso pg. 2 2. Cadastro pg. 3 3. Abas de navegação pg. 5 4. Abas dados cadastrais pg. 5 5. Aba grupo de usuários pg. 6 6. Aba cadastro de funcionários pg. 7 7. Pedidos pg. 12 8. Cartões

Leia mais

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans. 1 - Criando uma classe em Java Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans. Antes de criarmos a(s) classe(s) é necessário criar o projeto

Leia mais

DESENVOLVIMENTO WEB DENTRO DOS PARADIGMAS DO HTML5 E CSS3

DESENVOLVIMENTO WEB DENTRO DOS PARADIGMAS DO HTML5 E CSS3 DESENVOLVIMENTO WEB DENTRO DOS PARADIGMAS DO HTML5 E CSS3 Eduardo Laguna Rubai, Tiago Piperno Bonetti Universidade Paranaense (Unipar) Paranavaí PR- Brasil eduardorubay@gmail.com, bonetti@unipar.br Resumo.

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

AMBIENTE. FORMULÁRIO: é a janela do aplicativo apresentada ao usuário. Considere o formulário como a sua prancheta de trabalho.

AMBIENTE. FORMULÁRIO: é a janela do aplicativo apresentada ao usuário. Considere o formulário como a sua prancheta de trabalho. DELPHI BÁSICO VANTAGENS Ambiente de desenvolvimento fácil de usar; 1. Grande Biblioteca de Componentes Visuais (VCL - Visual Component Library), que são botões, campos, gráficos, caixas de diálogo e acesso

Leia mais