UNIVERSIDADE FEDERAL DO RIO DE JANEIRO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

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

Download "UNIVERSIDADE FEDERAL DO RIO DE JANEIRO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO"

Transcrição

1 UNIVERSIDADE FEDERAL DO RIO DE JANEIRO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO Comparativo entre as linguagens de programação Java e Ruby para projetos que utilizem Extreme Programming ALAN KLOH, RODOLFO CORDEIRO BURLA DE AGUIAR DCC-IM/UFRJ Bacharelado em Ciência da Computação Orientador: Vinícius Manhães Teles Rio de Janeiro 2007

2 Comparativo entre as linguagens de programação Java e Ruby para projetos que utilizem Extreme Programming Alan Kloh, Rodolfo Cordeiro Burla de Aguiar Projeto Final de Curso submetido ao Departamento de Ciência da Computação do Instituto de Matemática da Universidade Federal do Rio de Janeiro como parte dos requisitos necessários para obtenção do grau de Bacharel em Ciência da Computação. Apresentado por: Alan Kloh Rodolfo Cordeiro Burla de Aguiar Aprovado por: Vinícius Manhães Teles, M.Sc. (Presidente) Adriano Joaquim de Oliveira Cruz, Ph.D. Carlo Emmanoel Tolla de Oliveira, Ph.D.. Vanessa de Paula Braganholo, D.Sc RIO DE JANEIRO, RJ - BRASIL JUNHO DE 2007

3 AGRADECIMENTOS Rodolfo A Deus, por ter me dado a oportunidade de concluir mais essa etapa na minha vida. Aos meus pais, José Geraldo e Paula, que mesmo estando longe, me deram todo incentivo, auxilio e carinho que precisava para completar mais essa etapa. À minha irmã Rosane, que foi quem sempre esteve ao meu lado durante todos esses anos, me ajudando quando precisava, me incentivando quando era necessário e me divertindo nos momentos de descanso. À minha irmã, Cecília, e meu cunhado, Pascoal, pelo o apoio e carinho durante todos esses anos. À minha namorada Mayara, pela compreensão nos momentos de ausência, pelo carinho e amor nos momentos em que estávamos juntos, que tornaram a graduação muito mais agradável, e pelo grande incentivo em todos os momentos. Ao nosso orientador Vinícius Manhães Teles, por ter me apresentado a essa nova metodologia, pelo apoio e auxilio na escolha do tema, e sem o qual essa monografia não teria a mesma qualidade. Ao Alan, parceiro durante toda a graduação, inclusive nessa monografia, sempre tornando os momentos mais difíceis naqueles mais divertidos com seu bom humor e suas piadas. Aos amigos da graduação, Luciano, Rafael, Carlos Eduardo (Kadu), João Paulo (Pipa) e Wallace, pela ajuda nos momentos de dificuldade e pela amizade nos momentos de diversão. Aos professores do DCC/UFRJ os quais nos transmitiram valiosos conhecimentos ao longo da graduação. A todos que nos ajudaram de alguma forma, direta ou indiretamente, na elaboração desta monografia.

4

5 RESUMO KLOH, Alan; AGUIAR, Rodolfo Cordeiro Burla, Comparativo entre as linguagens de programação Java e Ruby para projetos que utilizem Extreme Programming. Orientador: Vinícius Manhães Teles. Rio de Janeiro: UFRJ/IM/DCC, Monografia ( Bacharelado em Ciência da Computação) Este trabalho apresenta um estudo comparativo entre as linguagens Java e Ruby, com o framework Rails, no que se refere à utilização da metodologia de desenvolvimento Extreme Programming. Esse comparativo foi criado através de uma pesquisa de tecnologias para as linguagens a fim de identificarmos as vantagens e desvantagens das mesmas. Para o estudo, também foram criados dois blogs para comparar a qualidade do produto final, o tempo de duração do processo de desenvolvimento e a facilidade de sua utlização.

6 ABSTRACT KLOH, Alan; AGUIAR, Rodolfo Cordeiro Burla, Comparativo entre as linguagens de programação Java e Ruby para projetos que utilizem Extreme Programming. Orientador: Vinícius Manhães Teles. Rio de Janeiro: UFRJ/IM/DCC, Monografia ( Bacharelado em Ciência da Computação) This work presents a comparative study between Java and Ruby languages, relating to the use of Extremme Programming methodology. This comparative was created through research on technologies to the languages and by the development of two blogs, each of them in one of the languages. To identify the advantages and disadvantages of each used language with a set of technologies previously chosen.

7 SUMÁRIO 1 Introdução Motivação Proposta Validação Extreme Programming Valores Práticas Blog em Java Introdução Padrão Model-View-Controller MVC Model Struts JUnit Estrutura do Blog Funcionamento do Blog Considerações Blog em Ruby Introdução Ruby on Rails Migration Estrutura do Blog Funcionamento do Blog Considerações Comparativo Introdução Linhas de Código Analisando as práticas Conclusão...74

8 7 1 Introdução 1.1 Motivação Ao longo de mais de três anos, entre estágio e trabalho, percebemos que apesar de trabalharmos em lugares distintos nos deparávamos com os mesmos problemas em nossos projetos. Eles constantemente sofriam alteração no cronograma, pois era verificado que este era irreal e não poderia ser cumprido. Com isso, projetos que deveriam durar um determinado número de meses duravam, na realidade, quase o dobro. Os projetos eram entregues mas, muitas das vezes não atendiam às necessidades dos usuários. Em alguns casos até, esta já havia deixado de existir, devido a alguma mudança no ambiente em que seria utilizada. Esses problemas não aconteciam somente na nossa equipe, mas sim em grande parte dos projetos que as empresas estavam envolvidas, o que nos mostrava que não era um problema gerencial ou técnico das equipes. Como ocorriam em empresas diferentes, verificamos que se tratava de um problema em algo que era de uso comum às duas empresas. Foi então que começamos a estudar Extreme Programming (XP) 1 na faculdade. Durante esse estudo, o professor apresentou diversos problemas que eram comuns em projetos de software em geral. E eram, exatamente, esses os que identificávamos nas respectivas empresas. Assim descobrimos que as metodologias utilizadas nas duas empresas eram muito parecidas e, portanto, tinham alguma influência nos constantes atrasos e falhas dos projetos de software. E essa é uma metodologia comum, não somente a essas duas empresas, mas à maioria das companhias de desenvolvimento de software. 1 Metodologia de desenvolvimento de softwares criada no final da década de 90. (TELES, 2004)

9 8 No estudo do XP vimos que ela apresenta diversas práticas que buscam corrigir os erros mais comuns no desenvolvimento de software. Essa metodologia nos foi apresentada utilizando-se o Java (SUN 2006f), por ser tratar de uma linguagem amplamente utilizada hoje em dia no mercado e por possuir artefatos que auxiliam na utilização dessa metodologia. Porém, a integração desses artefatos que auxiliam na utilização dessa metodologia nem sempre é fácil e rápido, assim como o desenvolvimento nessa linguagem em geral requer a codificação de muitas classes, interfaces e arquivos de configurações. Diante dessa característica da linguagem, optamos por buscar, uma outra, e foi então que conhecemos a linguagem Ruby(THOMAS; HANSSON 2005) e o framework Ruby on Rails (THOMAS; HANSSON 2005). Porém, não sabíamos como seria utilizar a metodologia XP com essa linguagem, quais práticas possuiriam ferramentas para auxílio e quais seriam as dificultadas. Decidimos comparar as duas linguagens para verificar qual delas se mostraria mais eficiente, utilizando-se as práticas de XP, levando-se em conta as características de cada linguagem e o seu suporte na utilização das práticas de XP. 1.2 Proposta Nesse trabalho iremos testar essas duas linguagens utilizando-se as técnicas de XP, com a finalidade de verificarmos qual seria mais recomendada para o desenvolvimento de aplicações Web. Iremos com isso gerar um estudo comparativo entre as duas linguagens, apresentando vantagens e desvantagens, para cada técnica utilizada em XP. Ao

10 9 final, apresentaremos aquela que considerarmos a mais adequada para o desenvolvimento de aplicações Web, se verificarmos a existência de uma. Nesse comparativo iremos utilizar a métrica de linhas de código, como uma das formas de comparação entre as duas, bem como uma análise subjetiva em relação a complexidade no desenvolvimento da aplicação. 1.3 Validação Para obtermos esse comparativo, iremos desenvolver uma mesma aplicação Web, utilizando-se as técnicas de XP, nas duas linguagens, anotando as características de cada uma em relação a cada técnica. Essa aplicação será um blog 2, por se tratar de uma aplicação bastante utilizada atualmente, simples de ser implementada, mas, ao mesmo tempo, suficiente para a elaboração desse estudo. 2 Página da web que possui textos, que em geral se referem a um mesmo assunto, ou pertencem a uma mesma pessoa, que são organizados cronologicamente, que normalmente podem ser comentadas.

11 10 2 Extreme Programming Extreme Programming (XP) é uma metodologia de desenvolvimento de software, nascida nos Estados Unidos, na década de 90, baseada em alguns valores e práticas que ajudam a tornar o desenvolvimento dos softwares mais ágil e produzir resultados com maior qualidade. Essa é uma das metodologias conhecidas como metodologias de desenvolvimento ágil. Essas metodologias seguem um conjunto de princípios criados por um grupo de profissionais veteranos que se reuniram numa estação de esqui, no EUA, para discutir formas de melhorar e agilizar o processo de desenvolvimento de software. Eles chegaram à conclusão de que todos os projetos em que estiveram envolvidos e que obtiveram sucesso, seguiam um mesmo conjunto de princípios. Com base nisso, eles criaram o Manifesto para o Desenvolvimento Ágil (http://agilemanifesto.org/history.html), também conhecido como Manifesto Ágil. Esses princípios são: Indivíduos e interação entre eles mais que processos e ferramentas Software em funcionamento mais que documentação abrangente Colaboração com o cliente mais que negociação de contratos Responder a mudanças mais que seguir um plano O manifesto ressalta que, mesmo que haja valor nos itens à direita, os itens à esquerda são considerados prioritários. No decorrer desse capítulo, iremos apresentar e explicar cada um dos valores e práticas utilizadas no desenvolvimento de software que seguem o XP. 2.1 Valores

12 11 Feedback Projetos de software são bastante suscetíveis à falha, pelo fato de que, em muitas vezes, os clientes não sabem exatamente o que desejam quando fazem uma solicitação de softwares Em geral, os clientes reconhecem os seus problemas e querem um sistema para resolvê-lo. No entanto, não sabem ao certo o que o software deve fazer para solucioná-lo. Devido a essa característica, geralmente, o entendimento do que o sistema deveria fazer não é o mesmo entre os desenvolvedores e os clientes, e por isso, constantemente, vemos softwares que não satisfazem às necessidades dos clientes (BROOKS, 1987). Para contornar essa característica do desenvolvimento de software, o XP utiliza um valor chamado feedback, que consiste em obter o feedback dos seus clientes o mais rápido possível. Esse processo busca diminuir, ao máximo, a defasagem de tempo entre o momento entre a execução da ação e a obtenção de seu resultado. Quanto mais cedo um mau entendimento de alguma funcionalidade for identificado, menor será o custo de seu reparo. Por isso, este valor é tão importante no XP, pois quanto maior o feedback dos clientes menor o risco de se produzir algo errado. Comunicação No desenvolvimento de software estão envolvidas pelo menos duas pessoas. O desenvolvedor e o cliente. Mas, em sua maioria, um maior número de pessoas estão envolvidas( mais clientes e desenvolvedores). No desenvolvimento de software, o cliente geralmente, precisa informar o que deseja ser produzido. E cabe ao desenvolvedor, informar quais as limitações técnicas envolvidas. No processo, os problemas na comunicação, frequentemente, causam uma compreensão equivocada do que está sendo solicitado.

13 12 Muitas vezes o meio de comunicação que está sendo utilizado faz toda a diferença na compreensão das pessoas que estão se comunicando, pois uma série de conhecimentos tácitos podem ser perdidos, dependendo do meio de comunicação empregado. Quando explicamos algo pessoalmente, por exemplo, percebemos através das expressões faciais, se estamos sendo compreendidos pela outra pessoa. Quando fazemos essa explicação por telefone, esse conhecimento tácito é perdido. Muitas vezes os clientes executam suas atividades de modo tácito, e por isso têm dificuldades de descrever suas atividades utilizando meio de comunicação pouco ricos como, telefone e por exemplo, mas em uma conversa presencial conseguem explicar facilmente essas tarefas. Por isso o XP valoriza meios de comunicação mais ricos, trazendo o cliente, ou ao menos um representante, para dentro da equipe de desenvolvimento. Isso significa trazer o cliente para o mesmo ambiente em que estão os desenvolvedores, para que a comunicação entre eles seja feita de forma presencial e o mais rápido possível. O XP também faz uso de radiadores de informação (COCKBURN, 2002) que, além de facilitar a comunicação, ajudam a colocar em prática um modelo de autodirecionamento do processo de desenvolvimento. Outra característica do XP, importante para que haja uma melhor comunicação entre os integrantes do processo de desenvolvimento, é a utilização de equipes pequenas, pois quanto menos pessoas envolvidas no processo de desenvolvimento, mais fácil saber o que cada uma está fazendo. Assim, evita-se que duas pessoas realizem tarefas que interfiram nas tarefas dos outros. Além disso, quanto menos pessoas envolvidas num processo de comunicação, mais fácil é a

14 13 compreensão do que uma pessoa está falando, por termos menos interferência e conversas paralelas, o que torna a comunicação mais rica. Simplicidade Um estudo do Standish Group (JOHNSON, 2002) mostrou que 45% das funcionalidades de um sistema típico jamais são utilizadas e que 19% das funcionalidades são usadas raramente. Esses números revelam um pouco da razão pela qual o desenvolvimento de software costuma ser mal sucedido. Quando falamos mal sucedido, nos referimos a projetos que, foram entregue fora do prazo, ou extrapolaram o custo, ou os dois, ou até que não terminaram. Esses 64% de funcionalidades desenvolvidas, sem necessidade, indicam um desperdício de tempo, dinheiro e pessoal responsável. Isto, em grande parte, pelo insucesso dos projetos de software. Essas funcionalidades surgem basicamente por três motivos: O escopo do sistema, geralmente, é fechado no inicio do desenvolvimento e alterações no mesmo são evitadas; Desenvolvedores criam soluções genéricas para facilitar possíveis alterações no escopo; Desenvolvedores têm a tendência de criar funcionalidades que eles imaginam que serão solicitadas pelos clientes. Para combater esses problemas, o XP utiliza um escopo negociável (POPPENDIECK & POPPENDIECK, 2003) e utiliza iterações curtas onde são projetados, programados, testados, integrados e entregues incrementos de softwares úteis (POPPENDIECK & POPPENDIECK, 2003).

15 14 Como essas iterações são curtas, o feedback do usuário é obtido em um espaço curto de tempo e, assim, o desenvolvimento de funcionalidades desnecessárias é evitada, já que as funcionalidades de uma iteração são definidas pelo usuário que estabelece a prioridade de cada funcionalidade que ele imagina ser necessária ao sistema. Os desenvolvedores selecionam as mais prioritárias dentro do limite de tempo para realização daquela iteração, deixando as outras para a iteração seguinte. E, assim, aquelas funcionalidades que o usuário imaginava necessária no inicio do desenvolvimento, mas que não eram prioritárias, mostram o seu caráter desnecessário com o passar das iterações e não são desenvolvidas. O valor da simplicidade implica em fazer somente o que é necessário agora, sem tentar adivinhar o que será necessário no futuro, fazendo da maneira mais simples possível. Porque mantendo o seu sistema o mais simples possível, fica mais fácil adicionar novas funcionalidades no futuro, nas iterações seguintes. Coragem Existem diversos temores no processo de desenvolvimento de software. Esses temores podem interferir no desenvolvimento, já que atingem tanto os clientes como os desenvolvedores, e as tarefas executadas passam a ser baseadas nesses temores.. Em projetos XP, estes temores também estão presentes. Porém, o XP utiliza um conjunto de práticas que tendem a diminuir a conseqüência desses temores e, com isso, torna a equipe mais confiante de que seu trabalho não será afetado por esses temores. Por exemplo: Os clientes possuem medo de que não seja produzido o que eles querem, ou que estejam pagando muito por pouco. Para isso o XP usa a prática de iterações curtas que mostram o resultado rapidamente ao cliente, que assim pode

16 15 avaliar se está sendo bem interpretado e ainda avaliar se a equipe com a qual está trabalhando está produzindo o suficiente que justifique o investimento. Essas e outras práticas dão suporte para que as equipes XP se sintam encorajadas a desenvolver seus trabalhos. 2.2 Práticas Cliente Presente Esta prática consiste em levar o cliente para perto da equipe de desenvolvimento ou levar a equipe para perto do cliente. Quando falamos perto, queremos dizer, colocar os dois, fisicamente, no mesmo local. Esta prática é importantíssima para dois dos valores em que o XP se baseia: feedback e comunicação. O feedback é aprimorado na medida em que o desenvolvedor, estando próximo ao cliente, pode tirar dúvidas, na hora que sentir necessidade. Por sua vez, o cliente pode ir testando o sistema, à medida que este vai ficando pronto e com isso ir fornecendo feedback a respeito do que foi produzido. E, assim, o desenvolvedor assimila mais rapidamente as necessidades do cliente, fazendo com o desenvolvimento fique mais rápido ao longo do tempo. A comunicação melhora, pois conforme falamos anteriormente, o XP valoriza os meios de comunicação mais ricos e, nada é mais rico do que uma conversa presencial. Estando o cliente no mesmo espaço físico do desenvolvedor, a comunicação entre eles tenderá ser sempre presencial, o que é importantíssimo para uma maior compreensão do que está sendo conversado. A presença do cliente no mesmo espaço do desenvolvedor cria uma outra relação benéfica, que é a

17 16 relação de confiança, onde o cliente toma conhecimento dos esforços das equipes de desenvolvimento. Apesar da presença dos clientes trazer essas vantagens, nem sempre é fácil envolvê-los nos projetos. Boehm e Turner (2003) e Teles (2004) apresentam situações nas quais pode ser difícil, ou inviável, a utilização desta prática. Como por exemplo, quando o cliente está situado em outra cidade, estado ou país diferente de onde se encontra a equipe de desenvolvimento. Jogo de Planejamento O planejamento em XP é feito de forma contínua ao longo do desenvolvimento do software, onde o cliente e os desenvolvedores estão presentes. Os clientes escrevem pequenas funcionalidades em cartões, chamadas de histórias. Essas histórias devem ser simples e escritas de forma que cliente e desenvolvedores sejam capazes de entendê-las. Uma vez com as histórias definidas, os desenvolvedores estimam quanto tempo irão levar para desenvolver cada uma. Com as estimativas definidas, o cliente define o valor de negócio de cada uma e então determina as prioridades e, baseado no orçamento dos desenvolvedores, define quais as histórias deverão ser entregues no próximo release.(beck & FOWLER, 2001). Os releases são intervalos de tempos, que geralmente duram alguns meses, onde um pequeno conjunto de funcionalidades, devidamente testado e integrado, é entregue aos usuários para serem utilizados. Esses releases são divididos em intervalos menores chamados de iterações. As iterações são intervalos de tempos que, geralmente, duram algumas semanas, e onde os desenvolvedores entregam algumas funcionalidades, também devidamente testadas. Uma coisa que vale ressaltar é que a duração de cada

18 17 iteração é constante ao longo do de todo o projeto. Essas iterações servem para se obter uma melhor estimativa do andamento do projeto e, com isso, estimar melhor o tempo de desenvolvimento da equipe, chamada de velocidade, ao longo do desenvolvimento. Essa velocidade tende a se estabilizar. As iterações também são extremamente importantes para obtenção de feedback de que o que está sendo desenvolvido é realmente o que foi pedido pelos clientes. Assim podemos identificar, mais rapidamente, possíveis erros cometidos e corrigí-los. A cada início de iteração é definido quais funcionalidades serão implementadas, baseado na velocidade das iterações passadas e após redefinição das prioridades das histórias. Por se tratar de um processo continuo de planejamento, revisão de prioridades e entrega de produtos, as funcionalidades desnecessárias tendem a não serem desenvolvidas, uma vez que o cliente vai tendo acesso ao sistema e verifica que essas funcionalidades não se fazem mais necessárias. Com isso, o desperdício de recursos é minimizado e aumenta a chance do projeto ser bem sucedido. Stand up meeting O Stand up meeting, como o próprio nome em inglês diz, é uma reunião em que seus participantes ficam em pé. Essa característica e extremamente importante para demonstrar que esta reunião deve ser rápida. Ela ocorre, diariamente, para que todos tomem ciência do que aconteceu no dia anterior. Todos contam o que fizeram um dia antes para que toda a equipe tenha conhecimento do andamento do projeto. Essa reunião também é importante para a obtenção do feedback dos outros integrantes da equipe. Neste momento, cada um fica sabendo de sua atividade diária, que é definida por toda a equipe. Ao tomar conhecimento de todas as atividades dos membros, dos problemas enfrentados e das soluções encontradas, o conhecimento adquirido por uma pessoa

19 18 é disseminado para toda a equipe. Porém, esta reunião só é possível se todos os membros da equipe trabalharem no mesmo lugar. Programação em Par A programação em par consiste em duas pessoas programando juntas em um mesmo computador. À primeira vista, essa prática pode ser vista como uma perda de recursos. Porém, como iremos ver, essa prática traz uma série de vantagens. A inspeção de código realizada intensamente é a primeira das vantagens que podem ser citadas. Ter alguém, ao lado, desenvolvendo com você, faz com que esta pessoa funcione como um revisor do código capaz de verificar erros simples, que podem passar despercebidos pelos programadores. Tais erros poder consumir dias para serem corrigidos. Assim, detectá-los cedo diminui o esforço da correção. Discussões ao longo do desenvolvimento fazem com que os programadores explorem um número maior de cenários, fazendo com que estes cheguem a uma forma mais simples de resolver o problema. Isto é uma grande vantagem quando tiver que ser dada alguma manutenção no código. Além disso, implantar a solução mais simples, em geral, consome menos tempo. Outro aspecto importantíssimo na programação, em par, é a disseminação do conhecimento. Como os programadores trocam de par constantemente, a troca de conhecimento enquanto trabalham juntos é acontece naturalmente. Ao se depararem com problemas, os programadores mais experientes passam seus conhecimentos para os mais jovens. Além disso, quando as pessoas obtêm informações sobre questões que estão enfrentando no dia-a-dia, a sua concentração no aprendizado tende e a ser muito melhor. A programação em par também é extremamente importante para construir uma equipe mais sólida, que não depende de um único programador chave e, ao

20 19 mesmo tempo, contribui para a adição de uma pessoa à equipe. Como o conhecimento é disseminado ao longo de toda equipe, a presença de um programador chave se torna mais difícil e a adição de uma pessoa é facilitada, pois esta irá trabalhar em par com outros programadores e obter conhecimento do domínio do sistema. Efeito conhecido, gerado pela programação em par, a pressão do par é importante porque aumenta a produtividade das equipes já que as pessoas se sentem pressionadas por seus pares. Isso diminui o tempo perdido com atividades externas ao projeto, como verificação de e conversas. As pessoas ficam inibidas em parar suas atividades pois isto implicará em parar, também, o trabalho de seu companheiro. Alem disso, a programação em par aumenta a motivação da equipe e o relacionamento inter pessoal pois proporciona o convívio direto com as pessoas e aumenta a confiança no outro, gerando uma maior intimidade que dão início. Até mesmo, a conversas sobre lazer e vida pessoal. Além disso, o fato de desenvolverem uma solução, em conjunto aumenta, a confiança nas atividades que executam. Todos esses fatores geram um aumento de produtividade que compensa o uso de dois desenvolvedores em um mesmo computador, além de produzir software mais rapidamente e de melhor qualidade. Existem alguns fatores, como ego e competitividade, que podem tornar a programação em par problemática. A presença de programadores com egos extremamente elevados, que não aceitam ver seus códigos serem questionados, e a existência de um ambiente extremamente competitivo, onde as pessoas não querem ser vistas aprendendo com um companheiro de trabalho, podem atrapalhar o

21 20 andamento do trabalho em conjunto. E, ao mesmo tempo em que alguns não estão dispostos a aprender, também se recusam a ensinar, a um colega de trabalho, algo que ele poderia passar adiante. Código Coletivo Uma outra prática utilizada no XP, que complementa a programação em par, é a pratica do código coletivo. Em XP, ninguém é proprietário de um código. O código pertence a toda a equipe e todos podem alterá-lo, sem pedir permissão a ninguém, o que ajuda na formação de uma equipe coesa. Já que todos têm acesso ao código, e sempre há um revezamento de pares e do trecho de código que cada um está desenvolvendo, na hora que for necessário dar manutenção em algum trecho de código, várias pessoas poderão fazer pois já trabalharam naquele trecho em algum momento. Como pessoas diferentes alteram o mesmo trecho de código, a tendência é que o código fique cada vez mais simplificado, pois cada um que notar que algo está sendo feito de uma maneira muito complicada tentará simplificá-lo. Assim, o código fica cada vez mais simples e os erros são detectados mais rapidamente, pois as pessoas que irão alterá-lo farão uma revisão do código e poderão identificar erros que ainda não haviam sido detectados (BECK, 2000, p ). Essa prática também agiliza o processo de desenvolvimento uma vez que as pessoas não precisam esperar que outra altere alguma coisa para que eles realizem os seus trabalhos. Eles mesmos alteram. Temos que ressaltar que esta prática só deve ser usada se a equipe desenvolve seu sistema utilizando uma base sólida de testes, pois alterações em trechos de códigos que não foram desenvolvidos pela própria pessoa podem causar muitos erros, mas com um grande conjunto de testes esse problema é contornado,

22 21 porque a pessoa poderá identificar esses erros quando rodar os testes e consertá-lo antes de integrá-lo. Código Padronizado Projetos XP utilizam código padronizado. Essa padronização é determinada pelos próprios desenvolvedores, o que auxilia na programação em par e no código coletivo. Mas essas práticas também são importantes para que se tenha um código padronizado, já que um código encontrado fora do padrão pode ser alterado para que fique no padrão. Design Simples Quando os usuários solicitam um software, esperam, basicamente, que ele possua quatro características : Que faça a coisa certa; Que funcione; Que seja fácil de utilizar e Que possa evoluir com o tempo. As duas primeiras características são alcançadas com a utilização da prática de iterações curtas (TELES, 2005), assim rapidamente os clientes podem verificar se o que está sendo feito está correto e funciona. Porém, essa mesma técnica pode ser uma armadilha para se obter as duas últimas características. Uma vez que o processo é iterativo, corre-se o risco de que nas iterações futuras seja difícil inserir novas funcionalidades e fazer com estas sejam facilmente adaptadas ao que já existe. Isso poderia tornar o sistema complexo de se usar e muitas vezes engessado. Mas para resolver esse problema, o XP utiliza uma série de práticas que são usadas em conjunto para corrigir possíveis falhas das outras e, uma delas, é a do

23 22 design simples. Equipes XP procuram manter o design dos sistemas o mais simples possível para que nas iterações futuras fique mais fácil agregar novas funcionalidades. Esta prática consiste em fazer sempre o mínimo possível, deixando que decisões complicadas sejam tomadas na hora certa, sem tentar prever o que está por vir, ou tentar prever mudanças que poderão acontecer no futuro. Essas previsões acabam fazendo com que os desenvolvedores comecem a gerar funcionalidades genéricas, porque acreditam que no futuro essas funcionalidades serão utilizadas por outros procedimentos e, com isso, vão gerando códigos complexos e difíceis de serem mantidos. Esta prática também é muito importante na utilização da prática de iterações curtas, pois apenas possuindo um design simples é possível fazer análise, design, implementação, testes e depuração de um conjunto de funcionalidades, em uma ou duas semanas. O design simples é obtido utilizando-se outras práticas que veremos a seguir. Essas práticas juntas fazem com que o crescimento do custo de manutenções futuras seja linear, e não exponencial, como na maioria dos casos. Isso ocorre porque com um design, sempre mantido o mais simples possível, com uso de computadores rápidos pelo os desenvolvedores, que permite que estes realizem testes sempre que fizerem uma mudança no sistema, e a adoção dos testes automatizados, evita que manutenções no futuro sejam muito mais custosas que as feitas no presente (BECK, 2000). Desenvolvimento Orientado a Testes Uma das práticas citadas acima que ajudam na elaboração de um design simples e que reduz o custo de manutenções futuras é a prática de desenvolvimento orientado a testes (HUNT & THOMAS, 2003). Essa prática consiste na elaboração

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

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

Leia mais

Capítulo 1. Extreme Programming: visão geral

Capítulo 1. Extreme Programming: visão geral Capítulo 1 Extreme Programming: visão geral Extreme Programming, ou XP, é um processo de desenvolvimento de software voltado para: Projetos cujos requisitos são vagos e mudam com freqüência; Desenvolvimento

Leia mais

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

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

Leia mais

Desenvolvendo Aplicações Web com NetBeans

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

Leia mais

SISTEMA DE GESTÃO DE PRODUÇÃO DE EVENTOS

SISTEMA DE GESTÃO DE PRODUÇÃO DE EVENTOS SISTEMA DE GESTÃO DE PRODUÇÃO DE EVENTOS Rodrigo das Neves Wagner Luiz Gustavo Galves Mählmann Resumo: O presente artigo trata de um projeto de desenvolvimento de uma aplicação para uma produtora de eventos,

Leia mais

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

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

Leia mais

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

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

Leia mais

Este livro é dedicado a minha esposa Edna e a todos os desenvolvedores que fizeram do software livre um meio profissional levado a sério.

Este livro é dedicado a minha esposa Edna e a todos os desenvolvedores que fizeram do software livre um meio profissional levado a sério. EDSON GONÇALVES Este livro é dedicado a minha esposa Edna e a todos os desenvolvedores que fizeram do software livre um meio profissional levado a sério. AGRADECIMENTOS Primeiramente gostaria de agradecer

Leia mais

CURSO DESENVOLVEDOR JAVA Edição 2009

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

Leia mais

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

Engenharia de Software I

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

Leia mais

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

Curso - Padrões de Projeto Módulo 5: Model-View- Controller

Curso - Padrões de Projeto Módulo 5: Model-View- Controller Curso - Padrões de Projeto Módulo 5: Model-View- Controller Vítor E. Silva Souza vitorsouza@gmail.com http://www.javablogs.com.br/page/engenho http://esjug.dev.java.net Sobre o Instrutor Formação: Java:

Leia mais

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

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

Leia mais

DESENVOLVENDO APLICAÇÕES UTILIZANDO JAVASERVER FACES E MVC

DESENVOLVENDO APLICAÇÕES UTILIZANDO JAVASERVER FACES E MVC DESENVOLVENDO APLICAÇÕES UTILIZANDO JAVASERVER FACES E MVC Felipe Moreira Decol Claro 1, Késsia Rita da Costa Marchi 1 1 Universidade Paranaense (Unipar) Paranavaí PR Brasil felipe4258@hotmail.com, kessia@unipar.br

Leia mais

Curso de Introdução ao

Curso de Introdução ao Curso de Introdução ao Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br O que é? Struts Struts é um framework gratuito para construção de aplicações web implementadas em Java.

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

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira ENTERPRISE JAVABEANS 3 Msc. Daniele Carvalho Oliveira Apostila Servlets e JSP www.argonavis.com.br/cursos/java/j550/index.html INTRODUÇÃO Introdução Enterprise JavaBeans é um padrão de modelo de componentes

Leia mais

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

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

Leia mais

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

Arquitetura de uma Webapp

Arquitetura de uma Webapp Arquitetura de uma Webapp Arquitetura J2EE Containers e componentes MVC: introdução Frederico Costa Guedes Pereira 2006 fredguedespereira@gmail.com Plataforma J2EE World Wide Web e a Economia da Informação

Leia mais

Jonas de Souza H2W SYSTEMS

Jonas de Souza H2W SYSTEMS Jonas de Souza H2W SYSTEMS 1 Tecnólogo em Informática Fatec Jundiaí MBA em Gerenciamento de Projetos FGV Project Management Professional PMI Mestrando em Tecnologia UNICAMP Metodologia de apoio à aquisição

Leia mais

PRD Tecnologia de Gestão Ltda. Julho/2008

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

Leia mais

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

SCRUM: UM MÉTODO ÁGIL. Cleviton Monteiro (cleviton@gmail.com)

SCRUM: UM MÉTODO ÁGIL. Cleviton Monteiro (cleviton@gmail.com) SCRUM: UM MÉTODO ÁGIL Cleviton Monteiro (cleviton@gmail.com) Roteiro Motivação Manifesto Ágil Princípios Ciclo Papeis, cerimônias, eventos, artefatos Comunicação Product Backlog Desperdício 64% das features

Leia mais

ANÁLISE DA UTILIZAÇÃO DE PRÁTICAS DO EXTREME PROGRAMMING PARA A PREVENÇÃO DO DÉBITO TÉCNICO DE PROJETOS DE SOFTWARE

ANÁLISE DA UTILIZAÇÃO DE PRÁTICAS DO EXTREME PROGRAMMING PARA A PREVENÇÃO DO DÉBITO TÉCNICO DE PROJETOS DE SOFTWARE CENTRO UNIVERSITÁRIO UNA DIRETORIA DE EDUCAÇÃO CONTINUADA, PESQUISA E EXTENSÃO CURSO DE PÓS GRADUAÇAO EM ENGENHARAIA DE SOFTWARE CENTRADA EM MÉTODOS ÁGEIS ANÁLISE DA UTILIZAÇÃO DE PRÁTICAS DO EXTREME PROGRAMMING

Leia mais

SISTEMA DE CONTROLE DE DADOS CLIMÁTICOS NA WEB NO AUXILIO À AGRICULTURA RESUMO SYSTEM CONTROL OF CLIMATIC DATA IN THE WEB TO ASSIST THE AGRICULTURE

SISTEMA DE CONTROLE DE DADOS CLIMÁTICOS NA WEB NO AUXILIO À AGRICULTURA RESUMO SYSTEM CONTROL OF CLIMATIC DATA IN THE WEB TO ASSIST THE AGRICULTURE SISTEMA DE CONTROLE DE DADOS CLIMÁTICOS NA WEB NO AUXILIO À AGRICULTURA CAROLINE VISOTO 1 EDUARDO RUBIN 2 THIAGO X. V. OLIVEIRA 3 WILINGTHON PAVAN 4 JOSÉ MAURÍCIO CUNHA FERNANDES 5 CRISTIANO ROBERTO CERVI

Leia mais

Desenvolvimento Ágil de Software

Desenvolvimento Ágil de Software Desenvolvimento Ágil de Software Métodos ágeis (Sommerville) As empresas operam em um ambiente global, com mudanças rápidas. Softwares fazem parte de quase todas as operações de negócios. O desenvolvimento

Leia mais

Associação Carioca de Ensino Superior Centro Universitário Carioca

Associação Carioca de Ensino Superior Centro Universitário Carioca Desenvolvimento de Aplicações Web Lista de Exercícios Métodos HTTP 1. No tocante ao protocolo de transferência de hipertexto (HTTP), esse protocolo da categoria "solicitação e resposta" possui três métodos

Leia mais

Tecnologia Java. Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br

Tecnologia Java. Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br Tecnologia Java Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br Origem da Tecnologia Java Projeto inicial: Oak (liderado por James Gosling) Lançada em 1995 (Java) Tecnologia

Leia mais

Arquitetura de Software

Arquitetura de Software Arquitetura de Software XP Lammers Equipe: Pedro Henrique Soares Andréa Negreiros Charles Mendes Custódio Neto Georgina Barreto Humberto Moura José Lindomar Luis Paulo Silva Tiago Bento Introdução A muito

Leia mais

SISTEMA GERENCIAL TRATORPLAN

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

Leia mais

Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Programa de Pós-Graduação em Informática

Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Programa de Pós-Graduação em Informática Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Programa de Pós-Graduação em Informática Disciplina: INF5008 Prof.: (monalessa@inf.ufes.br) Conteúdo 8. Metodologias

Leia mais

UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS

UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS Edi Carlos Siniciato ¹, William Magalhães¹ ¹ Universidade Paranaense (Unipar) Paranavaí PR Brasil edysiniciato@gmail.com,

Leia mais

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br SCE-557 Técnicas de Programação para WEB Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br 1 Cronograma Fundamentos sobre servidores e clientes Linguagens Server e Client side

Leia mais

Teste de software. Definição

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

Leia mais

MÓDULO Programação para Web 2

MÓDULO Programação para Web 2 MÓDULO Programação para Web 2 Sistemas Web na JEE OBJETIVO DO MÓDULO Arquitetura Web em aplicações JEE Conceitos iniciais Desenvolvimento Web Aplicações web tornam-se mais e mais importantes Mais e mais

Leia mais

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Desenvolvimento Ágil Modelos Ágeis. Profª Esp.: Maysa de Moura Gonzaga

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Desenvolvimento Ágil Modelos Ágeis. Profª Esp.: Maysa de Moura Gonzaga DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Desenvolvimento Ágil Modelos Ágeis Profª Esp.: Maysa de Moura Gonzaga 2º Semestre / 2011 Extreme Programming (XP); DAS (Desenvolvimento Adaptativo de Software)

Leia mais

ORDEM DE SERVIÇO OS 003/DINFO/2013 16/09/2013

ORDEM DE SERVIÇO OS 003/DINFO/2013 16/09/2013 A DIRETORIA DE INFORMÁTICA DINFO DA UNIVERSIDADE DO ESTADO DO RIO DE JANEIRO -UERJ, no uso de suas atribuições legais, estabelece: Art. 1º: Para fins de normatização do Desenvolvimento Tecnológico na UERJ

Leia mais

ERP: Pacote Pronto versus Solução in house

ERP: Pacote Pronto versus Solução in house ERP: Pacote Pronto versus Solução in house Introdução Com a disseminação da utilidade e dos ganhos em se informatizar e integrar os diversos departamentos de uma empresa com o uso de um ERP, algumas empresas

Leia mais

Padrões de Projeto WEB e o MVC

Padrões de Projeto WEB e o MVC Padrões de Projeto WEB e o MVC Padrões de Projeto WEB e o MVC O que são padrões? "Cada padrão descreve um problema que ocorre freqüentemente em seu ambiente, e então descreve o cerne da solução para aquele

Leia mais

UNIVERSIDADE FEDERAL DE SANTA CATARINA. Informatização de farmácias publicas utilizando software livre.

UNIVERSIDADE FEDERAL DE SANTA CATARINA. Informatização de farmácias publicas utilizando software livre. UNIVERSIDADE FEDERAL DE SANTA CATARINA Informatização de farmácias publicas utilizando software livre. MURILO NUNES ELIAS FLORIANÓPOLIS SC 2007/2 UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE

Leia mais

UNIVERSIDADE FEDERAL DE SANTA CATARINA CURSO DE GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO. Contribuições do MDA para o desenvolvimento de software

UNIVERSIDADE FEDERAL DE SANTA CATARINA CURSO DE GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO. Contribuições do MDA para o desenvolvimento de software UNIVERSIDADE FEDERAL DE SANTA CATARINA CURSO DE GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO Contribuições do MDA para o desenvolvimento de software Anna Carla Mohr Verner Helder Eugenio dos Santos Puia Florianópolis,

Leia mais

HIBERNATE EM APLICAÇÃO JAVA WEB

HIBERNATE EM APLICAÇÃO JAVA WEB HIBERNATE EM APLICAÇÃO JAVA WEB Raul Victtor Barbosa Claudino¹, Ricardo Ribeiro Rufino¹ ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil victtor.claudino@gmail.com, ricardo@unipar.br Resumo: Este

Leia mais

Pós Graduação Engenharia de Software

Pós Graduação Engenharia de Software Pós Graduação Engenharia de Software Ana Candida Natali COPPE/UFRJ Programa de Engenharia de Sistemas e Computação FAPEC / FAT Estrutura do Módulo Parte 1 QUALIDADE DE SOFTWARE PROCESSO Introdução: desenvolvimento

Leia mais

Workshop. Workshop SCRUM. Rildo F Santos. rildo.santos@etecnologia.com.br. Versão 1 Ago 2010 RFS. www.etcnologia.com.br (11) 9123-5358 (11) 9962-4260

Workshop. Workshop SCRUM. Rildo F Santos. rildo.santos@etecnologia.com.br. Versão 1 Ago 2010 RFS. www.etcnologia.com.br (11) 9123-5358 (11) 9962-4260 Workshop www.etcnologia.com.br (11) 9123-5358 (11) 9962-4260 Rildo F Santos twitter: @rildosan skype: rildo.f.santos http://rildosan.blogspot.com/ Todos os direitos reservados e protegidos 2006 e 2010

Leia mais

WebApps em Java com uso de Frameworks

WebApps em Java com uso de Frameworks WebApps em Java com uso de Frameworks Fred Lopes Índice O que são frameworks? Arquitetura em camadas Arquitetura de sistemas WEB (WebApps) Listagem resumida de frameworks Java Hibernate O que são frameworks?

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

Workshop SCRUM. Versão 5 Out 2010 RFS. rildo.santos@etecnologia.com.br

Workshop SCRUM. Versão 5 Out 2010 RFS. rildo.santos@etecnologia.com.br Todos os direitos reservados e protegidos 2006 e 2010 Objetivo: Estudo de Caso Objetivo: Apresentar um Estudo de Caso para demonstrar como aplicar as práticas do SCRUM em projeto de desenvolvimento de

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 5 Servidores de Aplicação

Leia mais

ARQUITETURA DO SISTEMA ERP PEGASUS

ARQUITETURA DO SISTEMA ERP PEGASUS ARQUITETURA DO SISTEMA ERP PEGASUS Elaborado por: Bruno Duarte Nogueira Arquiteto de Software Data: 05/03/2012 1 Sumário 1. Introdução... 3 2. Tecnologias... 3 2.1. Web Tier... 3 2.1.1. Facelets 1.1.14...

Leia mais

Engenharia da WEB 16/08/2011. Vida moderna. Sistemas WEB

Engenharia da WEB 16/08/2011. Vida moderna. Sistemas WEB Engenharia da WEB Fernando Schütz Especialização 2010 UTFPR Vida moderna Sistemas WEB Início Arquivos hipertexto Hoje Bancos! Powell Sistemas WEB envolvem uma mistura de publicação impressa e desenvolvimento

Leia mais

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com www.facom.ufu.br/~bacala

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com www.facom.ufu.br/~bacala Programação para a Internet Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com www.facom.ufu.br/~bacala A plataforma WEB Baseada em HTTP (RFC 2068) Protocolo simples de transferência de arquivos Sem estado

Leia mais

DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS

DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS Emanuel M. Godoy 1, Ricardo Ribeiro Rufino 1 1 Universidade Paranaense (Unipar) Paranavaí PR Brasil godoymanel@gmail.com,

Leia mais

05/05/2010. Década de 60: a chamada Crise do Software

05/05/2010. Década de 60: a chamada Crise do Software Pressman, Roger S. Software Engineering: A Practiotioner s Approach. Editora: McGraw- Hill. Ano: 2001. Edição: 5 Introdução Sommerville, Ian. SW Engineering. Editora: Addison Wesley. Ano: 2003. Edição:

Leia mais

SCC-0263. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br

SCC-0263. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br SCC-0263 Técnicas de Programação para WEB Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br 1 Cronograma Fundamentos sobre servidores e clientes Linguagens Server e Client side

Leia mais

Universidade da Beira Interior

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

Leia mais

Guia Projectlab para Métodos Agéis

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

Leia mais

Metodologia de Gestão e Desenvolvimento de Software. Coordenação Geral de Tecnologia da Informação

Metodologia de Gestão e Desenvolvimento de Software. Coordenação Geral de Tecnologia da Informação Metodologia de Gestão e Desenvolvimento de Software Coordenação Geral de Tecnologia da Informação 2 Índice 1. Processos Organizacionais... 7 1.1. A gestão da demanda... 7 1.2. e Responsabilidades... 7

Leia mais

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano Programação Servidor para Sistemas Web 1 Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano Objetivo: Apresentar a teoria por trás dos padrões na construção de aplicações Web. INTRODUÇÃO Nas aulas anteriores

Leia mais

Desenvolvimento WEB em JAVA. Palestrante: Lourival F. de Almeida Júnior

Desenvolvimento WEB em JAVA. Palestrante: Lourival F. de Almeida Júnior Desenvolvimento WEB em JAVA Palestrante: Lourival F. de Almeida Júnior Agenda Introdução Servlet Arquitetura de Software Velocity Struts Conclusão Referências Introdução (antes) Programador Produto Introdução

Leia mais

Práticas do XP (Programação em Pares e Stand Up Meeting)

Práticas do XP (Programação em Pares e Stand Up Meeting) Programação Extrema Práticas do XP (Programação em Pares e Stand Up Meeting) Prof. Mauro Lopes 1-17 31 Objetivos Após explorarmos os Valores e as Práticas do XP, iremos trabalhar de forma mais profunda

Leia mais

Programação WEB Introdução

Programação WEB Introdução Programação WEB Introdução Rafael Vieira Coelho IFRS Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul Campus Farroupilha rafael.coelho@farroupilha.ifrs.edu.br Roteiro 1) Conceitos

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

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

Msc. Daniele Carvalho Oliveira Doutoranda em Ciência da Computação UFU Mestre em Ciência da Computação UFU Bacharel em Ciência da Computação UFJF

Msc. Daniele Carvalho Oliveira Doutoranda em Ciência da Computação UFU Mestre em Ciência da Computação UFU Bacharel em Ciência da Computação UFJF Msc. Daniele Carvalho Oliveira Doutoranda em Ciência da Computação UFU Mestre em Ciência da Computação UFU Bacharel em Ciência da Computação UFJF 1. Identificação de um problema a ser implementado 2. Análise

Leia mais

WLADIMIR HENRIQUE MANGELADO BARBOSA

WLADIMIR HENRIQUE MANGELADO BARBOSA FUNDAÇÃO DE ENSINO EURÍPIDES SOARES DA ROCHA CENTRO UNIVERSITÁRIO EURÍPIDES DE MARÍLIA UNIVEM FACULDADE DE CIÊNCIA DA COMPUTAÇÃO WLADIMIR HENRIQUE MANGELADO BARBOSA A METODOLOGIA EXTREME PROGRAMMING: UM

Leia mais

Modelos de processos de desenvolvimento de software

Modelos de processos de desenvolvimento de software Definição Um modelo de processo de software é uma representação abstrata de um processo. Os modelos de processo podem ser desenvolvidos a partir de várias perspectivas e podem mostrar as atividades envolvidas

Leia mais

Aluno: Paulo Roberto Alves de Oliveira Trabalho da disciplina Segurança em Windows 2010. Comparativo entre Apache e IIS.

Aluno: Paulo Roberto Alves de Oliveira Trabalho da disciplina Segurança em Windows 2010. Comparativo entre Apache e IIS. Aluno: Paulo Roberto Alves de Oliveira Trabalho da disciplina Segurança em Windows 2010 Comparativo entre Apache e IIS. Apache versus IIS 1. Resumo Os programas de computador Apache, da fundação Apache

Leia mais

Ferramenta para gestão ágil

Ferramenta para gestão ágil Ferramenta para gestão ágil de projetos de software Robson Ricardo Giacomozzi Orientador: Everaldo Artur Grahl Agenda Introdução Objetivos Fundamentação teórica Desenvolvimento Resultados e discussões

Leia mais

Programação Web Aula 12 - Java Web Software

Programação Web Aula 12 - Java Web Software Programação Web Aula 12 - Java Web Software Bruno Müller Junior Departamento de Informática UFPR 25 de Maio de 2015 1 Java 2 Java Web Software 3 Servlets Modelo de Trabalho Funcionamento API Java Código

Leia mais

METODOLOGIA LEAN DE DESENVOLVIMENTO DE SOFTWARE: UMA VISÃO GERAL

METODOLOGIA LEAN DE DESENVOLVIMENTO DE SOFTWARE: UMA VISÃO GERAL METODOLOGIA LEAN DE DESENVOLVIMENTO DE SOFTWARE: UMA VISÃO GERAL Guilherme Vota Pereira guivotap@hotmail.com Prof. Pablo Schoeffel, Engenharia de Software Aplicada RESUMO: Este artigo irá efetuar uma abordagem

Leia mais

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS Pablo dos Santos Alves Alexander Roberto Valdameri - Orientador Roteiro da apresentação Introdução Objetivos Motivação Revisão bibliográfica

Leia mais

Introdução ao OpenUP (Open Unified Process)

Introdução ao OpenUP (Open Unified Process) Introdução ao OpenUP (Open Unified Process) Diferentes projetos têm diferentes necessidades de processos. Fatores típicos ditam as necessidades de um processo mais formal ou ágil, como o tamanho da equipe

Leia mais

Prof. Roberto Desenvolvimento Web Avançado

Prof. Roberto Desenvolvimento Web Avançado Resposta exercício 1: Configuração arquivo web.xml helloservlet br.com.exercicios.helloservlet

Leia mais

TESTE DE SOFTWARE COM XP. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

TESTE DE SOFTWARE COM XP. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com TESTE DE SOFTWARE COM XP Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com Contexto Inúmeros processos de software Evolução das formas/metodologias de desenvolvimento de software Dificuldades encontradas

Leia mais

Padrões de Interação com o Usuário

Padrões de Interação com o Usuário Padrões de Interação com o Usuário Granularidade dos Padrões Padrões estão relacionados a 3 elementos: Contexto ocorre Problema resolve Solução Problemas e Soluções podem ser observados em diferentes níveis

Leia mais

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition)

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition) Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) J2EE () Sumário Introdução J2EE () APIs J2EE Web Container: Servlets e JSP Padrão XML 2 J2EE é Uma especificação para servidores

Leia mais

Java II. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com

Java II. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Java II Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Java Web Arquitetura Aplicações web são basicamente constituídas de: Requisições Respostas Model View Controller (MVC) O que é MVC? Padrão

Leia mais

SCRUM. Fabrício Sousa fabbricio7@yahoo.com.br

SCRUM. Fabrício Sousa fabbricio7@yahoo.com.br SCRUM Fabrício Sousa fabbricio7@yahoo.com.br Introdução 2 2001 Encontro onde profissionais e acadêmicos da área de desenvolvimento de software de mostraram seu descontentamento com a maneira com que os

Leia mais

Estudo de Viabilidade

Estudo de Viabilidade Universidade Federal de Pernambuco Centro de Informática Estudo de Viabilidade SorveTech (Sistema de Gerenciamento) Professora: Carla Silva Disciplina: Especificação de Requisitos e Validação de Sistemas

Leia mais

Metodologias Ágeis de Desenvolvimento de Software

Metodologias Ágeis de Desenvolvimento de Software "Antes de imprimir pense em sua responsabilidade e compromisso com o MEIO AMBIENTE." Engenharia de Software de Desenvolvimento de Software Givanaldo Rocha de Souza givanaldo.rocha@ifrn.edu.br http://docente.ifrn.edu.br/givanaldorocha

Leia mais

PROJETO PEDAGÓGICO DE CURSOS

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

Leia mais

Criando Frameworks Inteligentes com PHP. Uma abordagem prática: vantagens, aplicações e procedimentos.

Criando Frameworks Inteligentes com PHP. Uma abordagem prática: vantagens, aplicações e procedimentos. Criando Frameworks Inteligentes com PHP Uma abordagem prática: vantagens, aplicações e procedimentos. Apresentação Equipes ao redor do mundo utilizam diferentes padrões de projeto, de acordo com suas necessidades

Leia mais

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas Linguagem de Programação JAVA Professora Michelle Nery Nomeclaturas Conteúdo Programático Nomeclaturas JDK JRE JEE JSE JME JVM Toolkits Swing AWT/SWT JDBC EJB JNI JSP Conteúdo Programático Nomenclatures

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

UNIVERSIDADE ESTADUAL DO CENTRO-OESTE UNICENTRO CURSO DE ESPECIALIZAÇÃO EM MÍDIAS EM EDUCAÇÃO

UNIVERSIDADE ESTADUAL DO CENTRO-OESTE UNICENTRO CURSO DE ESPECIALIZAÇÃO EM MÍDIAS EM EDUCAÇÃO UNIVERSIDADE ESTADUAL DO CENTRO-OESTE UNICENTRO CURSO DE ESPECIALIZAÇÃO EM MÍDIAS EM EDUCAÇÃO Jader dos Santos Teles Cordeiro Orientador Prof. Paulo Guilhermeti PERSISTÊNCIA EM OBJETOS JAVA: UMA ANÁLISE

Leia mais

Tércio Oliveira de Almeida. TCC - Nexus - RAS

Tércio Oliveira de Almeida. TCC - Nexus - RAS Tércio Oliveira de Almeida TCC - Nexus - RAS Porto Alegre 12 de novembro de 2009 Tércio Oliveira de Almeida TCC - Nexus - RAS Trabalho de Graduação Orientador: Prof. Dr. Marcelo Soares Pimenta UNIVERSIDADE

Leia mais

Com relação às áreas de conhecimento de projetos conforme o. PMBoK, julgue os itens subseqüentes.

Com relação às áreas de conhecimento de projetos conforme o. PMBoK, julgue os itens subseqüentes. De acordo com o comando a que cada um dos itens de 1 a 70 se refira, marque, na folha de respostas, para cada item: o campo designado com o código C, caso julgue o item CERTO; ou o campo designado 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

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

Maior Previsibilidade com o Visual Studio Team System 2008

Maior Previsibilidade com o Visual Studio Team System 2008 Maior Previsibilidade com o Visual Studio Team System 2008 White Paper Maio de 2008 Para obter as últimas informações, visite o site www.microsoft.com/teamsystem As informações contidas neste documento

Leia mais

Aula 2: RIA - Aplicações Ricas para Internet Fonte: Plano de Aula Oficial da Disciplina

Aula 2: RIA - Aplicações Ricas para Internet Fonte: Plano de Aula Oficial da Disciplina Programação para Internet Rica 1 Aula 2: RIA - Aplicações Ricas para Internet Fonte: Plano de Aula Oficial da Disciplina Objetivo: Identificar as principais características de uma Aplicação Internet Rica.

Leia mais

Banco de Dados de Músicas. Andre Lima Rocha Campos Osório Pereira Carvalho

Banco de Dados de Músicas. Andre Lima Rocha Campos Osório Pereira Carvalho Banco de Dados de Músicas Andre Lima Rocha Campos Osório Pereira Carvalho Definição Aplicação Web que oferece ao usuário um serviço de busca de músicas e informações relacionadas, como compositor, interprete,

Leia mais

J550. Apache Struts. Helder da Rocha (helder@acm.org) www.argonavis.com.br

J550. Apache Struts. Helder da Rocha (helder@acm.org) www.argonavis.com.br J550 Apache Struts Helder da Rocha (helder@acm.org) www.argonavis.com.br 1 Sobre este módulo Este é um módulo opcional. Apresenta uma visão geral do framework Struts, usado para desenvolver aplicações

Leia mais

Fundamentos de Teste de Software

Fundamentos de Teste de Software Núcleo de Excelência em Testes de Sistemas Fundamentos de Teste de Software Módulo 2- Teste Estático e Teste Dinâmico Aula 3 Teste Estático SUMÁRIO INTRODUÇÃO... 3 1. Definição... 3 2. Custo Versus Benefício...

Leia mais

Identificação rápida de gargalos Uma forma mais eficiente de realizar testes de carga. Um artigo técnico da Oracle Junho de 2009

Identificação rápida de gargalos Uma forma mais eficiente de realizar testes de carga. Um artigo técnico da Oracle Junho de 2009 Identificação rápida de gargalos Uma forma mais eficiente de realizar testes de carga Um artigo técnico da Oracle Junho de 2009 Identificação rápida de gargalos Uma forma mais eficiente de realizar testes

Leia mais

Integração Contínua com Rational Team Concert, Jenkins e SonarQube

Integração Contínua com Rational Team Concert, Jenkins e SonarQube Integração Contínua com Rational Team Concert, Jenkins e SonarQube Agenda 1. Introdução à Integração Contínua 2. Ferramentas 3. Solução de Integração Contínua em Furnas 4. Demonstração O que é a Integração

Leia mais

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

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

Leia mais

Metodologias Ágeis. Aécio Costa

Metodologias Ágeis. Aécio Costa Metodologias Ágeis Aécio Costa Metodologias Ágeis Problema: Processo de desenvolvimento de Software Imprevisível e complicado. Empírico: Aceita imprevisibilidade, porém tem mecanismos de ação corretiva.

Leia mais