20110511 Vývoj software - produktivně, efektivně, kvalitně
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 945 views

 

Statistics

Views

Total Views
945
Views on SlideShare
945
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
2

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

12 of 2

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • Vývoj software Produktivně Efektivně Kvalitněhttp://www.slideshare.net/jiramares/20110511-matfyz Jiří Mareš ČSAD SVT Praha s.r.o. 11.5.11
    • 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
    • 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
    • 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
    • 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ů
    • 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)
    • 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 - Dont 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
    • 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
    • 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
    • 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/
    • 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
    • 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/
    • 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/
    • 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
    • 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
    • Automatizace - kontrola kvality kódu adokumentace 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/
    • 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
    • LiteraturaThe Pragmatic Programmer Andrew Hunt, David ThomasAgile & Iterative Development - A Managers Guide Craig LarmanThe Productive Programmer Neal Ford
    • Děkuji za pozornostvývoj SW je kreativní činnostvývojář je umělecvelmi často si jdeme za svou myšlenkou "proti všem"hledejte insipraci kdekoliv, i tam kde ji nečekáteodpočívejte, potřebujete múzu