Desenvolvimento de
Sistemas Empregando
Software Livre
Copyright © 2004
Fábio Nogueira de Lucena fabio@inf.ufg.br
Software Livre de Goiás
http://www.inf.ufg.br/~fabio/sol.zip Estes slides estão em
Instituto de Informática Universidade Federal de Goiás
IDE Borland, caro.
Solução Microsoft, caríssima.
SGBD Oracle, um escândalo.
Um Eclipse,
um JBoss,
um Linux, não tem preço...
Para todos os demais, tenha muito dinheiro.
Mensagem da apresentação
Ferramenta para
e-business
não precisa ser
e-xpensive!
Você segue a direção indicada ...
Ou escolhe
o seu futuro?
Perspectiva
• Eu gostaria, mas
– não aborda aspectos políticos!
– não aborda aspectos sociais!
– não aborda aspectos econômicos!
– não aborda aspectos gerenciais!
– não aborda aspectos religiosos!
– não aborda aspectos éticos!
• Esta palestra é
técnica
• Ferramentas especializadas
– Disponíveis gratuitamente (inclusive para uso comercial) – Código fonte disponível (mudanças permitidas)
• Orientação a Objetos (não há nada melhor!)
• Java (existe software livre até para VB e Delphi!)
• Java™ versus .Net™ (Java™ vence com folga)
O que se faz com esta palestra?
Da perspectiva do Unified Process
(disciplina Environment)
Conheça um pouco mais ...
• Open Software www.opensource.org • GNU www.gnu.org • SourceForge.net http://sourceforge.net/ (mais de 70K projetos)– Open Source Dir
Quais as “boas”
ferramentas disponíveis
gratuitamente?
Gerência de projeto de software
Qual o problema que todo gerente de projeto
enfrenta, logo no início?
Estimativas e um plano é exigido,
mas pouca informação está disponível.
O que fazem, em geral?
Planejamento de projeto de software
• Estimar esforço (função de LOC ou FP)
– COCOMO (COnstructive COst MOdel)
http://www.engin.umd.umich.edu/CIS/tinytools/
http://sunset.usc.edu/research/cocomosuite/index.html
– Function points, COCOMO, ...
www.construx.com
http://www-cs.etsu.edu/softeng/
Quais as ações? Quando? Quem?
• GanttProject (100% Java)
http://ganttproject.sourceforge.net/
• jxProject (100% Java)
Mudar é inevitável. Como controlar?
• CVS
http://www.cvshome.org/
• CVSNT
http://www.cvsnt.org
• CVSWeb (cliente web)
http://people.freebsd.org/~fenner/cvsweb/
• WinCVS, gnuCVS, MacCVS
www.wincvs.org
• Outros
www.jcvs.org
Computação “ainda” não é profissional.
Elimine listas e emails para monitorar
defeitos de uma aplicação!
Bugzilla (bug tracking system)
www.bugzilla.org
Ou seja, erros são inevitáveis!
Como acompanhá-los?
Você precisa ...
• Gerenciar dependências de produtos (e outras)?
• Acompanhar métricas de software?
• Manter lista de desenvolvedores?
• Gerar relatórios de testes?
• Gerar relatórios de cobertura dos testes?
• Acompanhar mudanças no repositório de código?
• Verificar se padrões estão sendo seguidos?
• Documentar melhores práticas?
• Obter informações sobre estas questões?
• Tarefas a serem feitas?
Documentar e comunicar é preciso!
Textos
Apresentações
Planilhas, em português ...
Software não é apenas código!
Visualizar documentos
• Adobe Reader (PDF)
http://www.adobe.com
• GhostScript (PDF, PostScript)
http://www.cs.wisc.edu/~ghost/doc/AFPL/
• GhostView (PDF, PostScript)
http://www.cs.wisc.edu/~ghost/gsview/
•
Edição! Compressão melhor que ZIP!
Scintilla
Conversão para PDF, Latex, ...
http://www.scintilla.org/
7-Zip
Software livre, ...
• Benefícios de software livre?
• Grande audiência?
• Softwares
– Edição
– Segurança
– E muitas outras, todas open source!
Sistema Operacional
Microsoft™ (empresa concorrente) (Bill Gates, Bélgica, “Torta na cara”)
Linus Torvalds
Criador do Linux
Quer uma prova de que o mundo está em apuros?
Plataforma Java versus .Nada
Algumas plataformas J2EE certificadas
A melhor é FREE
Fontes de informações sobre Java
Sun Java™
http://java.sun.com Java-Channelhttp://www.java-channel.org
JGuru
http://www.jguru.com/ Java Communit Processhttp://www.jcp.org
JavaPro http://www.fawcette.com/javapro/ Java Technology http://www-106.ibm.com/developerworks/java/ FTPOnline http://www.ftponline.com OnJava http://www.onjava.com/ Java.Net http://www.java.net/
Aplicações WEB precisam de W3 Server
NetCraft Web Server Survey (novembro/2003)
http://news.netcraft.com/
Análise obtida de respostas de quase 45 milhões de portais!
Apache 67.41%
Microsoft 21.02%
SunONE 3.39%
Zeus 1.65%
Apache HTTP Server
http://httpd.apache.org/
Estender Servidor Web
• Tomcat (Servlet e JavaServer Pages)
http://jakarta.apache.org/tomcat/
Trocar informações? XML/XSLT
• TreeBeard (100% Java)
http://treebeard.sourceforge.net/
• XAmple XML Editor
http://www.xample-xml-editor.com-download.net/
• XML Editor (Schema support)
http://architag.com/xray/
• CockTop
http://www.xmlcooktop.com • XMLEditPro
Código “atende” requisitos, necessidades!
• A mais simples
(editor de texto)
• Ferramenta especializada
http://reqsman.sourceforge.net/
• Ferramentas para modelagem UML
• Gerência de requisitos
http://klendathu.lsi.us.es/REM/
The Free Requirements
Management Tool
Engenheiros de software falam ...
... e um pouco de português!
http://www.uml.org/
• ArgoUML http://argouml.tigris.org • ProxyDesigner www.proxysource.com • FUJABA www.fujaba.de
• Delphia Object Modeler
http://www.si.fr.atosorigin.com/dom/english/ • Unimodeler http://www.unimodeler.com • DIA http://www.lysator.liu.se/~alla/dia/ • UMLet http://qse.ifs.tuwien.ac.at/~auer/umlet/
Modelagem UML
AnáliseE se a modelagem não existir?
• ESS-Model (modelos a partir de código)
http://essmodel.sourceforge.net/
Edição, compilação, depuração
• Eclipse
www.eclipse.org
• Ant
http://ant.apache.org
• Compilador GNU para Java
http://gcc.gnu.org/java/
• Jikes® IBM®
O compilador “mais rápido”
http://www-124.ibm.com/developerworks/opensource/jikes/
NetBeans IDE
Ambiente para a web
• e-Gen (usa Struts)
http://www.egen.com.br/
Onde o software “demora”?
• Eclipse Profiler Plug-in
Qual o termômetro para software?
• Metrics http://metrics.sourceforge.net/ • JMetric http://www.it.swin.edu. au/projects/jmetric/products/jmetric /Métricas
Visualização de coesão eTestes
• Abbot (GUI testes)
http://abbot.sourceforge.net/
• Bugkilla (testar aplicações web J2EE)
http://bugkilla.sourceforge.net/
• JMeter (100% Java, desempenho, JDBC, Web, ...)
http://jakarta.apache.org/jmeter/
• JUnit (framework para teste de regressão)
http://www.junit.org
• FindBugs
http://www.cs.umd.edu/~pugh/java/bugs/
• PMD
Quer proteger o seu código?
• ProGuard
Onde executar software em Java?
J2SE
http://java.sun.com
JRockit (a MVJ “mais rápida”)
www.bea.com
Free JVM Kaffe.Org
www.kaffe.org
Jikes™ Research Virtual Machine (IBM)
http://oss.software.ibm.com/developerworks/opensource/jikesrvm/
Várias implementações da MVJ (open source)
Projeto OO e SGBD relacional? Como?
• JDO (implementação)
http://tjdo.sourceforge.net/
• Java Persistent Objects (JDO)
http://jpox.sourceforge.net/
• ObjectRelationalBridge (ODMB 3.0, JDO 1.0)
http://db.apache.org/ojb/
• Hibernate
Investigar SQL via JDBC
• www.irongrid.com – IronEye SQL – IronEye Cache – IronTrack P6SPY http://p6spy.com/Como ter acesso a base SQL?
• JfaceDBC (Eclipse plug-in)
http://jfacedbc.sourceforge.net/
• Quantum Eclipse plug-in
Como definir uma base?
• PgAdmin III (PostgreSQL)
http://www.pgadmin.org/pgadmin3/
• Druid
http://druid.sourceforge.net/
Rekall
SGBD comercial (Por quê?)
Qual a diferença entre Deus e Larry Ellison?
Deus não pensa que é Larry Ellison.
TCS, James Glassman
Larry Ellison é o “dono” da Oracle®
“Clientes da Oracle® estão à mercê de quase 60 diretores que se envolvem em aventuras de alto risco e cujo
interesse na companhia é esporádico.”
Karen Southwick, sept/2003
CNET Tech News
Enfim, alguns bons SGBDs!
PostgreSQL
www.postgresql.org
Small footprint, < 160k, 100% Java
http://hsqldb.sourceforge.net/
Firebird
Miscelâneas
• Gerar PDF através de API Java
iText
http://www.lowagie.com/iText/
• Gerador de instalador de programa
IzPack
http://www.izforge.com/izpack/
• MD5 (assinatura digital)
http://www.fourmilab.ch/md5
•
• GnuPG (free PGP)
http://www.gnupg.org/
•
Considerações finais
• Aspectos não contemplados
– Apresentação (interface gráfica) – Componentes web (Servlet e JSP) – Web services
– ... e muitos outros.
• Ênfase
– Aplicações e-business (“grandes” e para a web) – Emprego de Java
– Tarefas “principais” de gerência
– Tarefas “principais” de desenvolvedores
• Comentário
– Muitas ferramentas (use as que forem adequadas) – Projetos “comuns” usam poucas ferramentas
Você está pronto
para a liberdade?
www.
www.open
open
source
source
.org
.org