Java Programação para Fábrica de Software Fernando Lozano Consultor 4Linux lozano@4linux.com.br
Quem É o Lozano? Atua há mais de 15 anos em TI Consultoria para Amsterdam Sauer, Banco Bovorantim, Bob's, Caixa, Compra Fácil, Exército, Golden Cross, Marinha, Wet'n'Wild Ex-professor da UFLA, SENAC, Estácio de Sá e UniAbeu Ex-colunista da Java Magazine e colaborador do IBM Developer's Works Palestrante no JustJava, CONISLI, FISLI, Latinoware e JavaOne
3 Agenda Java na faculdade x Java no mercado Desenvolvimento terceirizado em fábricas de software (FSW) Trabalho em Equipe e Controle de Qualidade Metodologias Ágeis (Scrum, XP, Lean, etc) no mundo Java Sistemas de Controle de Versão e de Acompanhamento de Incidentes / Bugs
4 Java na Faculdade x Java no Mercado
5 Java na Faculdade Linguagem de programação Teoria de orientação a objetos IDE Eclipse ou NetBeans para compilar e depurar aplicações passo-a-passo Aplicações gráficas (Swing) Aplicações novas, pequenas, feitas por você sozinho Roda só uma vez (mostrar ao professor)
6 Java no Mercado Java EE: computação web e enterprise GRANDES sistemas críticos Frameworks: Hibernate, Struts, Spring Sistemas de controle de versão, requisitos, timesheet, bugs, testes, etc Desenvolvimento em equipes multidisplinares Manutenção e integração de aplicações antigas
7 Formação Profissional Sua faculdade realmente ensinou o Java que o mercado demanda? Ou você teve que correr por fora?
8 Desenvolvimento em Fábrica de Software Grandes empresas preferem não ter (exclusivamente) seus próprios funcionários desenvolvendo sistemas Além dos pacotes prontos, a maior parte do desenvolvimento customizado é terceirizado Fábricas de Software (FSW) são empresas especializadas em desenvolver sob encomenda para grandes empresas
9 Desenvolvimento In-House x Terceirizado Comunicação informal de requisitos Formalização de modelos e casos de uso Entrega quando pronto Prazos de entrega pré-defindos Donos de projetos e sistemas Cada um trabalha onde for necessário Desenvolvedor faztudo Desenvolvedores especializados em tecnologias específicas
10 Formação Profissional Você aprendeu na faculdade como trabalhar com programas escritos por outros? Você teve que trabalhar, durante a faculdade, em um ambiente formal e controlado?
11 Trabalho em Equipe Como uma FSW acompanha o trabalho e produtividade de cada programador? Como as tarefas são divididas entre os programadores disponíveis Como impedir que um programador perca tempo testando, corrigindo ou evoluindo a versão errada do código? Como impedir que um programador mele o trabalho do outro?
12 Controle de Qualidade Como a FSW garante que os pedaços de um mesmo sistema, desenvolvidos por diferentes programadores, funcionem juntos? Como a FSW verifica que está entregando o que o cliente contratou? Como a FSW verifica que o sistema tem a performance, segurança, etc que o cliente demandou?
13 Formação Profissional Você realmente teve que trabalhar em equipe, na faculdade? Seus trabalhos na faculdade tinham que fazer algo além de funcionar? O funcionamento dos seus trabalhos foi realmente avalidado pelo seu professor? Você teve que aprefeiçoar seus trabalhos?
14 Metodologias de Desenvolvimento Responder às questões de trabalho em equipe e controle de qualidade em software é a rasão de existirem metodologias de desenvolvimento Só que tradicionalmente as metodologias eram focadas na documentação e não no resultado final, que é o sistema executável e seus fontes Java
15 Metodologias Ágeis Incorporam princípios de qualidade e otimização industriais japoneses ao desenvolvimento de software Foco na interação entre pessoas, nas contribuições concretas ao resultado final e em automação Não eliminam documentação e burocracia, apenas focam elas para que atinjam resultados concretos!
16 Metodologias Ágeis com Java Parcialmente embutidas nos IDEs modernos, como o Eclipse Mas não basta o IDE, é necessário incorporar também ferramentas para: Automação Ant, Maven Test-Driven Development JUnit, DBUnit, Selenium, JMeter, Hudson Análise de código JDepends, PMD
17 O Mínimo Para Um Processo de Desenvolvimento Seja adotado um processo ágil (Scrum, XP) ou tradicional (RUP) há um conjunto mínimo de ferramentas para o trabalho em equipe e controle de qualidade de software: Sistemas de Controle de Versões Sistemas de Acompanhamento de Incidentes, Requisições e Bugs
18 Sistemas de Controle de Versões Repositório central de código-fonte Registram quem fez o que e quando Permitem voltar a uma situação anterior que era estável Permitem linhas paralelas de desenvolvimento: evolução e correção Exemplos: CVS, Subversion, GIT
19 Sistemas de Acompanhamento Registram demandas por novas funcionalidades e correção de erros Permitem priorizar pendências e acompanhar dependências entre demandas Controlam fluxo de demanda / estimativa / aprovação / execução / validação Exemplos: Bugzilla, Trac, Mantis, RT
20 Fluxo Simplificado da Fábrica de Software Eu quero! Acompanhamento Acompanhamento De De Chamados Chamados Quem pediu? Usuário Eu faço! Pronto! Controle Controle de de Versões Versões Quem fez? Desenvolvedor Gerente
21 Programador Java em FSW É parte de uma equipe, atuando em um pedaço de um sistema, que ele possivelmente não viu desde o início e nem conhece em sua totalidade Lida com várias APIs, frameworks e tecnologias Java EE nada a ver com desenvolvimento gŕafico ou GUI Seu trabalho é controlado por sistemas de Acompanhamento de Requisições e Controle de Versões
22 Obrigado lozano@4linux.com.br www.4linux.com.br