Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

20110511 Vývoj software - produktivně, efektivně, kvalitně

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 19 Anzeige

Weitere Verwandte Inhalte

Ähnlich wie 20110511 Vývoj software - produktivně, efektivně, kvalitně (20)

Anzeige

Aktuellste (20)

20110511 Vývoj software - produktivně, efektivně, kvalitně

  1. 1. Vývoj software Produktivně Efektivně Kvalitně http://www.slideshare.net/jiramares/20110511-matfyz Jiří Mareš ČSAD SVT Praha s.r.o. 11.5.11
  2. 2. O mě vystudoval jsem FEL ČVUT 16 let se živím vývojem SW používal jsem: Pascal, C, C++, Java, Groovy, Javascript, Scala, Smalltalk, HTML, CSS, XML, XSLT, bash, ant, gradle, maven z metodologií: vodopád, agile, SCRUM twitter - @jiramares mail - jiri.mares@svt.cz, jiramares@gmail.com blog - jirablog.blogspot.com
  3. 3. O SVT http://www.svt.cz/ malá SW firma vývoj software pro dopravu existuje 30 let 25 let vyvíjíme a provozujeme AMS 9 let vyvíjíme CARDS EXCHANGE 5 let máme ISO
  4. 4. Clearing CARDS sběr transakcí od dopravců výpočet vzájemných závazků vystavení faktur řešení toku peněz napojení na ERP Software as a Service webová aplikace rozhraní pro držitele karet
  5. 5. Clearing CARDS - projekt žádné EJB (pozor na over-engineering) prostředí: failover OS linux aplikační server Apache Tomcat databáze IBM DB2 středně velký projekt: 1826 java souborů 668 xml souborů 194 jsp souborů 131 groovy souborů 9928 unit testů 230 selenium testů
  6. 6. Zefektivnění každodenní práce - I koncentrovat se (nebýt rušen, více monitorů) mít pro projekt jeden root adresář mít používané aplikace po ruce používat shell (command prompt) klávesové zkratky clipboard manager vše co dělám podruhé zautomatizovat (scripty - bash, groovy, ant, rake, gradle, selenium) možná to trvá déle než ručně, ale hodně se naučím používat lokální dokumentaci (wget)
  7. 7. Zefektivnění každodenní práce - II minimalizovat potřebu lokálního zálohování vše na serveru - Google Docs, VCS, WIKI do VCS i scripty, nastavení (počítače, IDE), dokumentace uchovávat binárky (svých aplikací i použitých knihoven) nastavení prostředí (VMWare http://www.vmware.com/, Genuitec Pulse http://www.poweredbypulse.com/) DRY - Don't Repeat Yourself používat generátory: O/R mapping z DB schéma, různé verze dokumentace (online a ref. příručka) více viz. Automatizace dokumentace kódu dále
  8. 8. Metodika vývoje jednoznačně agile a iterativně nejlepší je SCRUM samostatný tým samoorganizující tým angažovaný jednotlivec bohužel není aplikovatelný všude na SCRUM máme velké procento studentů (nepracují na plný úvazek) malý team hlavní release máme každý měsíc
  9. 9. Používáme OpenSource veškeré zmiňované nástroje jsou opensource až na dva (Atlassian JIRA a Fisheye) pozor na licence můžete: produkt zlepšit a nebo přizpůsobit pochopit jak je udělán a jak funguje
  10. 10. Evidence požadavků a plánování používáme Atlassian JIRA http://www.atlassian.com/software/jira/ máme vše evidováno - požadavek ISO požadavky mají priority plánujeme sprinty víme v jakém je požadavek stavu propojení s VCS - co se pro splnění požadavku měnilo existují i jiné: trac http://trac.edgewall.org/ bugzilla http://www.bugzilla.org/ integrované v: github https://github.com/ bitbucket https://bitbucket.org/
  11. 11. Verzovací software (VCS) historie změn větvení, tagování klasické CVS http://www.cvshome.org/ subversion http://subversion.tigris.org/ distribuované git http://git-scm.com/ mercurial http://mercurial.selenic.com/ používáme subversion plánujeme přechod na git konkrétně na code hosting - github
  12. 12. Build & Continuous integration build automation - vytvoří replikovatelný build ant http://ant.apache.org/ gradle http://www.gradle.org/ maven http://maven.apache.org/ a další: sbt http://code.google.com/p/simple-build-tool/, rake http://rake.rubyforge.org/ artifactory http://www.jfrog.com/products.php continuous integration nutný VCS okamžitě po commitu se pouští testy a máme binárky automatizovaný deployment jenkins http://jenkins-ci.org/ (dříve hudson) cruise control http://cruisecontrol.sourceforge.net/ continuum http://continuum.apache.org/
  13. 13. Testování - unit testy automatizuje testování podporuje refactoring nepoužívám Test Driven Development dogmaticky programovat s ohledem na otestovatelnost dependency injection - guice http://code.google.com/p/google-guice/, spring http://www.springsource.org/ testovací frameworky - testng http://testng.org/, junit http://www.junit.org/ asserty - hamcrest http://code.google.com/p/hamcrest/ mock objecty - easymock http://easymock.org/, mockito http://mockito.org/, jmock http://www.jmock.org/
  14. 14. Testování - code coverage a integrační testy webových aplikací code coverage dává představu jak dobře je otestováno 100% pokrytí neznamená nic testování webových aplikací - selenium http://seleniumhq.org/ testy se dají naklikat - seleniumIDE nutno aplikaci psát s ohledem na otestovatelnost testování aplikace na různých prohlížečích a OS VMWare http://www.vmware.com/products/server/overview.html selenium remote-control http://seleniumhq.org/projects/remote-control/ testujeme na Linuxu, Windows a IE, Firefox, Chrome
  15. 15. Code review jediné co garantuje kvalitní kód napříč všemi zdrojáky review svého vs. cizího kódu často vede na refactoring (potřebujeme testy) motivace: odhalí se chyby dříve než v produkci lidé se vzájemně od sebe učí (diskutují o kódu) víc lidí kódu rozumí děláme review každého nového či změněného řádku) potřebný SW pro podporu code review: používáme JIRA, fisheye http://www.atlassian.com/software/fisheye/ chceme používat pull request gitu
  16. 16. Automatizace - kontrola kvality kódu a dokumentace kvalita kódu: FindBugs http://findbugs.sourceforge.net/ PMD http://pmd.sourceforge.net/ Checkstyle http://checkstyle.sourceforge.net/ dokumentace: špatná horší než žádná kód a jeho testy jsou dokumentace Javadoc http://www.oracle.com/technetwork/java/javase/documentation/index-jsp-135444.html UMLGraph http://www.umlgraph.org/ SchemaSPY http://schemaspy.sourceforge.net/
  17. 17. Neustálé vzdělávání učit se: nové jazyky (nová paradigmata) nové technologie nová použití technologií konference (CZJUG http://www.java.cz/detail.do?articleId=2252) hackathony
  18. 18. Literatura The Pragmatic Programmer Andrew Hunt, David Thomas Agile & Iterative Development - A Manager's Guide Craig Larman The Productive Programmer Neal Ford
  19. 19. Děkuji za pozornost vývoj SW je kreativní činnost vývojář je umělec velmi často si jdeme za svou myšlenkou "proti všem" hledejte insipraci kdekoliv, i tam kde ji nečekáte odpočívejte, potřebujete múzu

×