Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilBohumila Slavíková
1
Vývoj clearingového systému CARDS EXCHANGE a aplikované nástroje softwarového inženýra Jiří Mareš ČSAD SVT Praha s.r.o. 2.12.2009
2
Něco o mě ● Vystudoval jsem FEL ČVUT ● 14 let vyvíjím software ● Posledních 7 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
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ů
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
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
Clearing CARDS jaký je to SW projekt ● Dlouhodobý – trvá již 6 let ● Velký – 1614 java, 988 xml, 180 jsp, 134 groovy souborů – cca. 8000 testů ● Multi-technologický ● Počítáme peníze – spolehlivost má vysokou prioritu
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
Nástroje SI – evidence požadavků ● Systém JIRA ( www.atlassian.com ) 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
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
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)
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 ) www.junit.org ● Mock objekty – easymock ( www.easymock.org )
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)
13
Nástroje SI – code coverage ● Použitelné pro kontrolu testů ● Představa, jak moc je otestováno ● 100% coverage není záruka
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
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
Nástroje SI - dokumentace ● Dokumentace neodpovídá skutečnosti ● Kód je dokumentace - generování dokumentace z kódu – Javadoc – GraphUML – SchemaSPY – Unit testy
17
Nástroje SI to celé nejenom v Javě ● Používáme HTML, CSS ● XML + XSLT + XSL-FO – Fop ( xmlgraphics.apache.org/fop/ ) – iText ( www.lowagie.com/iText/ ) ● Groovy ● JavaScript
18
Nástroje SI – proč opensource ● Mám zdrojáky – Mohu zjistit jak funguje – Mohu fungování změnit (opravit) ● Neplatím, ale občas problém s licencí
19
Děkuji za pozornost ● The Pragmatic Programmer / Hunt, Thomas ● Design Patterns Jiří Mareš ( jiri.mares@svt.cz, jirablog.blogspot.com ) jiri.mares@svt.cz ČSAD SVT Praha s.r.o. ( www.svt.cz )
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.