Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

1 Fejlett Programozási Technikák 2. 15/5. 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 

Hasonló előadás


Az előadások a következő témára: "1 Fejlett Programozási Technikák 2. 15/5. 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 "— Előadás másolata:

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 tól TIK I. Előadó MS RoadShow  ASP.NET  XML Web Szolgáltatások  … Ingyenes részvétel Regisztrálni célszerű a:  px 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

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 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 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 szeged.hu:/usr/local/cvs login  HOME környezeti változó -.cvspass

12 Fejlett Programozási Technológiák 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 Ú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 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 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 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 ” :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 Á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 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 -ben, …

19 Fejlett Programozási Technológiák 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 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 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 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 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 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 Test Case futtatás setUp() test kezdetű metódus tearDown() Újra ez minden test kezdetű metódusra

26 Fejlett Programozási Technológiák 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 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 Log Elemei:  LogRecord  Handler  Filter  Formatter

29 Fejlett Programozási Technológiák 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 Példa simple example build file

31 Fejlett Programozási Technológiák 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 Példa

33 Fejlett Programozási Technológiák É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 Bevált tehnikák Description – projecthelp használata jikes használata

35 Fejlett Programozási Technológiák 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 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 Mim 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 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 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 Közhírré tétetik Március 10.-én tól TIK I. Előadó MS RoadShow  ASP.NET  XML Web Szolgáltatások  … Ingyenes részvétel Regisztrálni célszerű a:  px px


Letölteni ppt "1 Fejlett Programozási Technikák 2. 15/5. 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 "

Hasonló előadás


Google Hirdetések