Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaGusztáv Soós Megváltozta több, mint 9 éve
1
1 Fejlett Programozási Technikák 2. 15/5
2
Fejlett Programozási Technológiák 2. 2 Közhírré tétetik Március 10.-én 14.00-tól TIK I. Előadó MS RoadShow ASP.NET XML Web Szolgáltatások … Ingyenes részvétel Regisztrálni célszerű a: http://www.microsoft.com/hun/msdneloadas/reg.as px http://www.microsoft.com/hun/msdneloadas/reg.as px
3
Fejlett Programozási Technológiák 2. 3 Az előző előadás tartalma: Újdonságok az 1.5-ös Java-ban Generics Metaadatok Új ciklus Enum kezelés Statikus import Hibakezelés Egyszerű kivételek Kivétel elfogása Saját kivételek gyártása Bármely kivétel elfogása Finally Többszálúság Motiváció Szálkezelés alapjai Megosztott erőforrások kezelése Szál állapotok Együttműködés szálak között
4
Fejlett Programozási Technológiák 2. 4 Források http://www-106.ibm.com/developerworks/library/j-ant/?dwzone=java http://ant.apache.org/ant_in_anger.html http://cvsbook.red-bean.com/ http://junit.sourceforge.net/doc/cookbook/cookbook.htm http://today.java.net/pub/a/today/2003/08/06/multithreadedTests.html http://www.developer.com/open/article.php/3097221 http://www.manning-source.com/books/hatcher/hatcher_ch04.pdf
5
Fejlett Programozási Technológiák 2. 5 A mai előadás tartalma: CVS Miért van rá szükségünk? Használata Címkézés Ágak kezelése JUnit Tesztelés TestCase TestSuit Log4J Miért nem println()? Log Log4J Ant
6
Fejlett Programozási Technológiák 2. 6 CVS: Probléma Nagy kód Csoportmunka Verzió követés Open Source Folyamatos javítás diff, patch Probléma ki mit miért csinált Hogyan lehet egy régebbi javítást visszavonni Hogyan lehet egy régebbi verziót elővarázsolni?
7
Fejlett Programozási Technológiák 2. 7 Megoldás RCS Fájl centrikus Lock-modify-unlock Nincs hálózat támogatás CVS Könyvtár szintű Hálózat támogatás Intelligens összefűzés Copy-Modify-Merge Microsoft VSS BitTorrent CelarCase …
8
Fejlett Programozási Technológiák 2. 8 Concurent Versions System Az Open Source fejlesztés alapja Elosztott, lazán koordinált fejlesztés Alapjai: Először script gyűjtemény az RCS-hez diff (a különbség két szöveg fájl között) patch ( a diff által megállapított különbséget adja hozzá az adott fájlhoz) A különbségeket tárolja Könyvtár kezelés, több könyvtárat is összefoghatunk egy néven (projekt) Naplózás Alapvetően zárolásmentes Minden felhasználó egyenrangú
9
Fejlett Programozási Technológiák 2. 9 CVS Működőképes kódot tölt fel mindenki Mindenki frissítheti a saját munkaváltozatát Amennyiben többen ugyanazt a részt módosították a CVS értesíti a résztvevőket a konfliktusról Fontosabb fogalmak: Check out Commit Conflict Log message Repository Revision Update Working copy
10
Fejlett Programozási Technológiák 2. 10 Hogyan használjuk A leggyakrabban használt ciklus: checkout - munkapéldány modify – Dolgozunk rajta update – Frissítjük a munkapéldányunkat (itt lehet konfliktus) commit – Elküldjük a módosításokat egy log üzenettel együtt (itt lehet konfliktus) Általában a CVS-ben lévő projektet működőképes állapotban szokták tartani, tehát a fejlesztő csak akkor töltheti fel a saját munkáját, ha az a működőképességet nem rontja
11
Fejlett Programozási Technológiák 2. 11 Parancsok cvs [globális kapcsolók] parancs [lokális kapcsolók] cvs –Q update –p Meg kell adnunk a CVS tár elérési útvonalát Helyi gépen: cvs –d /usr/local/cvs update Távoli gépen: cvs -d :pserver:bilickiv@cvs.u- szeged.hu:/usr/local/cvs login HOME környezeti változó -.cvspass
12
Fejlett Programozási Technológiák 2. 12 Kapcsolódás CVS-hez pserver – titkosítatlan jelszó ext – külső programot használ (rsh, ssh,… – CVS_RSH = ssh), bármilyen program lehet amely képes a távoli gépen azonosításra és parancs futtatásra kserver – kerberos 4-es azonosítás gserver – GSSAPI (kerberos 5, …), Windows- nál ezt célszerű használni
13
Fejlett Programozási Technológiák 2. 13 Új projekt létrehozása cvs – d /usr/local/cvs/test init cvs import –m ”log msg” projname vendortag releasetag cvs checkout projname cvs add –m ”log msg” filename … cvs commit –m ”log msg”
14
Fejlett Programozási Technológiák 2. 14 Konfliktusok jelölése #include void main () { printf ("Hello, world!\n"); <<<<<<< hello.c printf ("this change will conflict\n"); ======= printf ("between hello and goodbye\n"); >>>>>>> 1.3 printf ("Goodbye, world!\n"); }
15
Fejlett Programozási Technológiák 2. 15 Módosítások visszavonása X, Y együtt fejlesztenek Y feltölti az 1.3-as verziót X erről nem tud és feltölti az 1.4-es verziót X szeretné megtartani a saját változtatásait és kiiktatni Y változtatásait cvs update –j 1.4 –j 1.3 cvs update cvs ci –m ”visszavont verzio”
16
Fejlett Programozási Technológiák 2. 16 Megjelölések (Tagging), Dátumok Minden fájlnak külön módosítás számlálója van Ezek külön-külön vannak kezelve, növelve attól függően melyik fájlt mikor módosították Projekteknél szeretünk közös verziót, dátumot használni Pl.: kérem a 3-as mérföldkövet, kérem a múlt hétvégi verziót Megoldás: Lekérés dátum szerint: cvs –q update –D ”2005-03-01 23:59:59 GMT” Tag hozzáfűzés cvs -q tag Release_1_1_0 Lekérés: cvs checkout –r Release_1_1_0 myproj
17
Fejlett Programozási Technológiák 2. 17 Ágak (Branches) Lehetőséget ad a párhuzamos fejlesztése: Instabil kód Egy mérföldkőhöz javítás utólag, nem akarjuk az egész fő vonalon azonnal végigvinni Ha majd elég stabil a fő ág akkor össze lehet fésülni (merging)
18
Fejlett Programozási Technológiák 2. 18 Kommunikáció A CVS értesítheti a fejlesztőket a projekt alakulásáról Az eddigi megoldás n darab szeparált homokozó Ki, mikor, mely részen dolgozik? Pl.: Szóljatok ha hozzányúltok a kódomhoz! Figyelők (watches) cvs watch add x.c – a fejlesztő megmondja, hogy mely fájlok érdekelik cvs edit – ha módosítani akarja akkor jeleznie kell (read only egyébként) cvs unedit Értesítést kaphatnak email-ben, …
19
Fejlett Programozási Technológiák 2. 19 Speciális karakterek Speciális karaktereket is használhatunk a kódban $Author$ $Date$ $Revision$ … A CVS behelyettesíti az értékét
20
Fejlett Programozási Technológiák 2. 20 Tesztelés Java erősen típusos nyelv Futás közbeni típus, … ellenőrzés Funkcionalitás? Gyakran változó specifikáció Hogyan lehetünk biztosak benne, hogy módosításaink nem visznek újabb hibákat a kódba? White box tesztek Automatikus tesztelés?
21
Fejlett Programozási Technológiák 2. 21 JUnit Kód átírás Előbb a tesztet írjuk meg (extrém programozás) Hogyan teszteljünk komponenseket? Main metódusok ? Hogyan döntjük el nagy mennyiségű tesztnél, hogy sikeres/sikertelen volt? A Main hozzáfér a private, protected tagokhoz Nehéz áttekinteni a kimenetet Az eredményeket össze kellene gyűjteni A láthatóság sérül xUnit keretrendszer NUnit HttpUnit DBUnit Cactus
22
Fejlett Programozási Technológiák 2. 22 JUnit Test interfész run metódus TestSuite Csoportosító A tesztelésnél megadhatom, hogy melyik csomagot futatom
23
Fejlett Programozási Technológiák 2. 23 JUnit használata import junit.framework.TestCase; public class SimpleTest extends TestCase { public SimpleTest (String name) { super(name); } public void testSomething() { assertTrue(4 == (2 * 2)); } Futtatása parancssorból, grafikus felületről test szóval kezdődő metódusokat tudjuk futtatni Inicializálásra a setUp() metódust kell felülírni Takarításra a tearDown() metódust kell felülírni Tesztetk csoportosítása TestSuite()
24
Fejlett Programozási Technológiák 2. 24 Vizsgálatok assertEquals(expected, actual) assertEquals(String message, expected, actual) assertNull(Object object), assertNull(String message, Object object) assertNotNull(Object object), assertNotNull(String message, Object) assertSame(Object expected, Object actual), assertSame(String message, Object expected, Object actual) assertTrue(boolean condition), assertTrue(String message, boolean condition) fail(), fail(String message)
25
Fejlett Programozási Technológiák 2. 25 Test Case futtatás setUp() test kezdetű metódus tearDown() Újra ez minden test kezdetű metódusra
26
Fejlett Programozási Technológiák 2. 26 Test Suite public static Test suite() { TestSuite suite= new TestSuite(); suite.addTest( new MoneyTest("money equals") { protected void runTest() { testEquals(); } } ); suite.addTest( new MoneyTest("simple add") { protected void runTest() { testSimpleAdd(); } } ); return suite; } public static void main(String args[]) { junit.textui.TestRunner.run(suite()); }
27
Fejlett Programozási Technológiák 2. 27 Naplózás, Log, Log4J Hibakeresés, monitorozás Különböző kimenetek Különböző kategóriák Különböző formátumok println()? java.utils.log Log4J
28
Fejlett Programozási Technológiák 2. 28 Log Elemei: LogRecord Handler Filter Formatter
29
Fejlett Programozási Technológiák 2. 29 ANT make, gnumake, nmake, jam OS specifikusak „Szabad” szöveg alapúak ANT XML alapú konfigurációs fájl Java programok gyűjteménye melyek a megfelelő Task interfészt megvalósítják Platform független
30
Fejlett Programozási Technológiák 2. 30 Példa simple example build file
31
Fejlett Programozási Technológiák 2. 31 FileSet Minták segítségével tudunk fájlokat megadni FileList – fájl lista PatternSet – minta lista
32
Fejlett Programozási Technológiák 2. 32 Példa
33
Fejlett Programozási Technológiák 2. 33 Érdekesebb parancsok Ant – másik ANT indtítása Copydir – egész könyvtár másolása Cvs – CVS kezelése Exec – egy rendszer program lefuttatása Get – az adott URL-ről letölti a fájlt Javadoc/Javadoc2 – legyártja a dokumentációt Tstamp - DSTAMP, TSTAMP, and TODAY
34
Fejlett Programozási Technológiák 2. 34 Bevált tehnikák Description – projecthelp használata jikes használata
35
Fejlett Programozási Technológiák 2. 35 ANT alap elemek Ant AntCall AntStructure Apply/ExecOn Available Basename BuildNumber BUnzip2 BZip2 Checksum Chmod Concat Condition Supported conditions Copy Copydir Copyfile Cvs CvsChangeLog Sequential SignJar Sleep Sql Style Subant Sync Tar Taskdef Tempfile Touch TStamp Typedef Unjar Untar Unwar Unzip Uptodate Waitfor War WhichResource XmlProperty Xslt Zip CvsVersion CVSPass CvsTagDiff Defaultexcludes Delete Deltree Dependset Dirname Ear Echo Exec Fail Filter FixCRLF GenKey Get GUnzip GZip Import Input Jar Java Javac Javadoc/Javadoc2 LoadFile LoadProperties Mail MacroDef Manifest Mkdir Move Parallel Patch PathConvert PreSetDef Property Record Rename Replace Rmic
36
Fejlett Programozási Technológiák 2. 36 Opcionális elemek NET Tasks ANTLR Attrib Cab Chgrp Chown Clearcase Tasks Continuus/Synergy Tasks Depend EJB Tasks Echoproperties FTP IContract Image Jarlib-available Jarlib-display Jarlib-manifest Jarlib-resolve JavaCC Javah JspC JDepend JJDoc JJTree Jlink JProbe Coverage JUnit JUnitReport Metamata Metrics Metamata Audit MimeMail MParse Native2Ascii NetRexxC Perforce Tasks PropertyFile Pvcs RenameExtensions ReplaceRegExp RExec Rpm ServerDeploy Setproxy Scp Script Scriptdef Sound SourceOffSite Splash Sshexec Starteam Tasks Stylebook Symlink Telnet Test Translate Visual Age for Java Tasks Microsoft Visual SourceSafe Tasks Weblogic JSP Compiler XmlValidate
37
Fejlett Programozási Technológiák 2. 37 A mai előadás tartalma: CVS Miért van rá szükségünk? Használata Címkézés Ágak kezelése JUnit Tesztelés TestCase TestSuit Log4J Miért nem println()? Log Log4J Ant
38
Fejlett Programozási Technológiák 2. 38 A következő előadás tartalma JFC és Swing Múlt Felépítés Java Bean Felső szintű konténerek Középső szintű konténerek Elemek Eseménykezelés Rajzolás
39
Fejlett Programozási Technológiák 2. 39 Közhírré tétetik Március 10.-én 14.00-tól TIK I. Előadó MS RoadShow ASP.NET XML Web Szolgáltatások … Ingyenes részvétel Regisztrálni célszerű a: http://www.microsoft.com/hun/msdneloadas/reg.as px http://www.microsoft.com/hun/msdneloadas/reg.as px
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.