Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20101124 Aplikované nástroje SW inženýra

526 views

Published on

Published in: Technology
  • Login to see the comments

  • Be the first to like this

20101124 Aplikované nástroje SW inženýra

  1. 1. Vývoj clearingového systému CARDS EXCHANGE a aplikované nástroje softwarového inženýra (www.slideshare.net/jiramares/20101124-matfyz) Jiří Mareš ČSAD SVT Praha s.r.o. 24.11.2010
  2. 2. Něco o mě ● Vystudoval jsem FEL ČVUT ● 17 let vyvíjím software ● Posledních 8 let v SVT ● V SVT jsem se hodně zaměřil na kvalitu kódu Něco o SVT ● Existuje 30 let, od 1991 s.r.o. ● Více než 25 let zkušeností s AMS ● Od roku 2006 držitelem ISO 9001:2000
  3. 3. Clearingový systém CARDS EXCHANGE ● Motivace: umožnění křížového používání čipových karet mezi dopravci ve Středočeském kraji s vypočtením objemu plateb mezi dopravci ● Nyní – 6 systémů – 53 subjektů ● el. peněženky, kupóny
  4. 4. Clearing CARDS – princip ● Cestující má kartu vydanou subjektem A ● Používá ji u různých subjektů (včetně A) ● Jedná se o platby (el. peněženka) i o kupóny ● Za měsíc vytvoříme závěrku ● Započteme toky peněz ● Zajistíme převod peněz
  5. 5. Clearing CARDS - architektura ● SaaS – Software as a Service ● Webová aplikace ● Žádné EJB ● OS SUSE Linux Enterprise Server ● Aplikační server Apache Tomcat ● Databázový server IBM DB2 ● Failover
  6. 6. Clearing CARDS jaký je to SW projekt ● Dlouhodobý – trvá již 7 let ● Velký – 2754 java, 1977 xml, 362 jsp, 157 groovy souborů – cca. 10,5k testů ● Multi-technologický ● Počítáme peníze – spolehlivost má vysokou prioritu
  7. 7. Nástroje SI – metodika vývoje ● Agile (Scrum) - jenom ne vodopád – Kritické věci se řeší nejdřív – Zákazník stále vidí kam se vývoj ubírá – Častá integrace – Agile & Iterative Developmen / Larman ● U nás – Hlavní release každý měsíc – Až 2 další opravné
  8. 8. Nástroje SI – evidence požadavků ● Systém JIRA (www.atlassian.com) – Každý požadavek má číslo – Evidují se podpožadavky a jiné závislosti – Plánujeme – kdo, v jakém releasu, s jakou prioritou – Víme v jakém stavu každý požadavek je – Tento přehled má kdokoliv z firmy – Máme k dispozici různé reporty
  9. 9. Nástroje SI – continuous integration ● CI server – u nás Hudson (hudson.dev.java.net) ● Automatizovaný build ● Gradle (gradle.org), Ant (ant.apache.org) ● Nutný version control repository – u nás Subversion (subversion.tigris.org) ● Často commitovat ● Okamžitě máme binárky na deploy ● Automatizovaný deployment ● Testování
  10. 10. Nástroje SI version control system ● Přístup ke kódu pro všechny ● Historie změn ● Větvení zdrojového kódu ● Tagování - release ● Lepší než CVS (transakční, verzuje i adresáře) ● Dnes nejlépe hg, git
  11. 11. Nástroje SI – unit testy ● Automatizované testování, refactoring ● Návrh kódu s ohledem na otestovatelnost – Rozumné rozložení kódu – Dependency Injection ● Guice (code.google.com/p/google-guice/) ● Spring (www.springsource.org) ● Používáme TestNG (testng.org) ● ne jUnit (www.junit.org), Hamcrest (code.google.com/p/hamcrest/) ● Mock objekty – easymock (www.easymock.org) ● mockito(code.google.com/p/mockito/)
  12. 12. Nástroje SI – integrační testy ● Webová aplikace – Selenium (seleniumhq.org) ● Testy se dají de facto naklikat (SeleniumIDE) – problém se selektory ● Testy se dají spustit na různých OS i v různých prohlížečích (díky VMWare pouštíme v noci oproti Firefoxu i IE vs. Linuxu i Windows)
  13. 13. Nástroje SI – code coverage ● Použitelné pro kontrolu testů ● Představa, jak moc je otestováno ● 100% coverage není záruka
  14. 14. Nástroje SI – code review ● Proč? – Víc očí víc vidí – Víc mozků tomu rozumí – Předávání zkušeností – Neopakovat se ● Záruka kvality ● Děláme review každého nového kódu podle požadavků v systému JIRA
  15. 15. Nástroje SI – kvalita kódu ● Design by Contract – Contract4j (www.contract4j.org) ● FindBugs (findbugs.sourceforge.net) ● PMD (pmd.sourceforge.net) ● Checkstyle (checkstyle.sourceforge.net) ● Vrstvení aplikace vs. kód je tam kde jsou data
  16. 16. Nástroje SI - dokumentace ● Dokumentace neodpovídá skutečnosti ● Kód je dokumentace - generování dokumentace z kódu – Javadoc – UMLGraph (www.umlgraph.org) – SchemaSPY (schemaspy.sourceforge.net) – Unit testy
  17. 17. Nástroje SI to celé nejenom v Javě ● Používáme HTML, CSS ● XML + XSLT + XSL-FO – Fop (xmlgraphics.apache.org/fop/) – iText (itextpdf.com) ● Groovy (groovy.codehaus.org) ● JavaScript – jQuery (jquery.com)
  18. 18. Nástroje SI – proč opensource ● Mám zdrojáky – Mohu zjistit jak funguje – Mohu fungování změnit (opravit) ● Vrátit zpět něco komunitě pomocí patchů ● Neplatím, ale občas problém s licencí
  19. 19. Nástroje SI – vlastní hlava ● Se učit, se učit, se učit ● Kolik jazyků umíš tolikrát jsi programátorem ● Nové jazyky = nové finty ● Hackathon (wikipedia.org/wiki/Hackathon)
  20. 20. Děkuji za pozornost ● The Pragmatic Programmer / Hunt, Thomas ● Design Patterns Jiří Mareš (jiri.mares@svt.cz, jirablog.blogspot.com) ČSAD SVT Praha s.r.o. (www.svt.cz)

×