Fejlett Programozsi Technikk 2 155 1 Fejlett Programozsi

  • Slides: 39
Download presentation
Fejlett Programozási Technikák 2. 15/5 1

Fejlett Programozási Technikák 2. 15/5 1

Fejlett Programozási Technológiák 2. Közhírré tétetik Március 10. -én n 14. 00 -tól TIK

Fejlett Programozási Technológiák 2. Közhírré tétetik Március 10. -én n 14. 00 -tól TIK I. Előadó n MS Road. Show n ¨ ASP. NET ¨ XML Web Szolgáltatások ¨… Ingyenes részvétel n Regisztrálni célszerű a: n ¨ http: //www. microsoft. com/hun/msdneloadas/reg. as px 2

Fejlett Programozási Technológiák 2. Az előző előadás tartalma: n Újdonságok az 1. 5 -ös

Fejlett Programozási Technológiák 2. Az előző előadás tartalma: n Újdonságok az 1. 5 -ös Java-ban ¨ ¨ ¨ n Hibakezelés ¨ ¨ ¨ n Generics Metaadatok Új ciklus Enum kezelés Statikus import 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 3

Fejlett Programozási Technológiák 2. Források n n n n http: //www-106. ibm. com/developerworks/library/j-ant/? dwzone=java

Fejlett Programozási Technológiák 2. Források n n n n 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. htm http: //today. java. net/pub/a/today/2003/08/06/multithreaded. Tests. html http: //www. developer. com/open/article. php/3097221 http: //www. manning-source. com/books/hatcher_ch 04. pdf 4

Fejlett Programozási Technológiák 2. A mai előadás tartalma: n CVS ¨ ¨ n JUnit

Fejlett Programozási Technológiák 2. A mai előadás tartalma: n CVS ¨ ¨ n JUnit ¨ ¨ ¨ n Tesztelés Test. Case Test. Suit Log 4 J ¨ ¨ ¨ n Miért van rá szükségünk? Használata Címkézés Ágak kezelése Miért nem println()? Log 4 J Ant 5

Fejlett Programozási Technológiák 2. CVS: Probléma n n n n n Nagy kód Csoportmunka

Fejlett Programozási Technológiák 2. CVS: Probléma n n n n n 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? 6

Fejlett Programozási Technológiák 2. Megoldás n RCS ¨ Fájl centrikus ¨ Lock-modify-unlock ¨ Nincs

Fejlett Programozási Technológiák 2. Megoldás n RCS ¨ Fájl centrikus ¨ Lock-modify-unlock ¨ Nincs hálózat támogatás n CVS ¨ Könyvtár szintű ¨ Hálózat támogatás ¨ Intelligens összefűzés ¨ Copy-Modify-Merge n n Microsoft VSS Bit. Torrent Celar. Case … 7

Fejlett Programozási Technológiák 2. Concurent Versions System n n n Az Open Source fejlesztés

Fejlett Programozási Technológiák 2. Concurent Versions System n n n Az Open Source fejlesztés alapja Elosztott, lazán koordinált fejlesztés Alapjai: ¨ Először n n ¨A 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) 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ú 8

Fejlett Programozási Technológiák 2. CVS n n Működőképes kódot tölt fel mindenki Mindenki frissítheti

Fejlett Programozási Technológiák 2. CVS n n 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 9

Fejlett Programozási Technológiák 2. Hogyan használjuk n A leggyakrabban használt ciklus: ¨ checkout -

Fejlett Programozási Technológiák 2. Hogyan használjuk n 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) n Á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 10

Fejlett Programozási Technológiák 2. Parancsok n cvs [globális kapcsolók] parancs [lokális kapcsolók] ¨ cvs

Fejlett Programozási Technológiák 2. Parancsok n cvs [globális kapcsolók] parancs [lokális kapcsolók] ¨ cvs n –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. uszeged. hu: /usr/local/cvs login ¨ HOME környezeti változó -. cvspass 11

Fejlett Programozási Technológiák 2. Kapcsolódás CVS-hez pserver – titkosítatlan jelszó n ext – külső

Fejlett Programozási Technológiák 2. Kapcsolódás CVS-hez pserver – titkosítatlan jelszó n 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 n kserver – kerberos 4 -es azonosítás n gserver – GSSAPI (kerberos 5, …), Windowsnál ezt célszerű használni n 12

Fejlett Programozási Technológiák 2. Új projekt létrehozása cvs – d /usr/local/cvs/test init n cvs

Fejlett Programozási Technológiák 2. Új projekt létrehozása cvs – d /usr/local/cvs/test init n cvs import –m ”log msg” projname vendortag releasetag n cvs checkout projname n cvs add –m ”log msg” filename n… n cvs commit –m ”log msg” n 13

Fejlett Programozási Technológiák 2. Konfliktusok jelölése #include <stdio. h> void main () { printf

Fejlett Programozási Technológiák 2. Konfliktusok jelölése #include <stdio. h> void main () { printf ("Hello, world!n"); <<<<<<< hello. c printf ("this change will conflictn"); ======= printf ("between hello and goodbyen"); >>>>>>> 1. 3 printf ("Goodbye, world!n"); } 14

Fejlett Programozási Technológiák 2. Módosítások visszavonása X, Y együtt fejlesztenek n Y feltölti az

Fejlett Programozási Technológiák 2. Módosítások visszavonása X, Y együtt fejlesztenek n Y feltölti az 1. 3 -as verziót n X erről nem tud és feltölti az 1. 4 -es verziót n X szeretné megtartani a saját változtatásait és kiiktatni Y változtatásait n cvs update –j 1. 4 –j 1. 3 n cvs update n cvs ci –m ”visszavont verzio” n 15

Fejlett Programozási Technológiák 2. Megjelölések (Tagging), Dátumok n n n Minden fájlnak külön módosítás

Fejlett Programozási Technológiák 2. Megjelölések (Tagging), Dátumok n n n 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: n cvs –q update –D ” 2005 -03 -01 23: 59 GMT” ¨ Tag hozzáfűzés n cvs -q tag Release_1_1_0 ¨ Lekérés: n cvs checkout –r Release_1_1_0 myproj 16

Fejlett Programozási Technológiák 2. Ágak (Branches) n Lehetőséget ad a párhuzamos fejlesztése: ¨ Instabil

Fejlett Programozási Technológiák 2. Ágak (Branches) n 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) 17

Fejlett Programozási Technológiák 2. Kommunikáció n A CVS értesítheti a fejlesztőket a projekt alakulásáról

Fejlett Programozási Technológiák 2. Kommunikáció n 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! n 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 n Értesítést kaphatnak email-ben, … 18

Fejlett Programozási Technológiák 2. Speciális karakterek n Speciális karaktereket is használhatunk a kódban ¨

Fejlett Programozási Technológiák 2. Speciális karakterek n Speciális karaktereket is használhatunk a kódban ¨ $Author$ ¨ $Date$ ¨ $Revision$ ¨… n A CVS behelyettesíti az értékét 19

Fejlett Programozási Technológiák 2. Tesztelés Java erősen típusos nyelv n Futás közbeni típus, …

Fejlett Programozási Technológiák 2. Tesztelés Java erősen típusos nyelv n Futás közbeni típus, … ellenőrzés n Funkcionalitás? n Gyakran változó specifikáció n ¨ Hogyan lehetünk biztosak benne, hogy módosításaink nem visznek újabb hibákat a kódba? White box tesztek n Automatikus tesztelés? n 20

Fejlett Programozási Technológiák 2. JUnit n n Kód átírás Előbb a tesztet írjuk meg

Fejlett Programozási Technológiák 2. JUnit n n 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 ¨ n n Nehéz áttekinteni a kimenetet Az eredményeket össze kellene gyűjteni A láthatóság sérül x. Unit keretrendszer NUnit ¨ Http. Unit ¨ DBUnit ¨ Cactus ¨ 21

Fejlett Programozási Technológiák 2. JUnit n Test interfész ¨ run n metódus Test. Suite

Fejlett Programozási Technológiák 2. JUnit n Test interfész ¨ run n metódus Test. Suite ¨ Csoportosító ¨A tesztelésnél megadhatom, hogy melyik csomagot futatom 22

Fejlett Programozási Technológiák 2. JUnit használata import junit. framework. Test. Case; public class Simple.

Fejlett Programozási Technológiák 2. JUnit használata import junit. framework. Test. Case; public class Simple. Test extends Test. Case { public Simple. Test (String name) { super(name); } public void test. Something() { assert. True(4 == (2 * 2)); } } n Futtatása parancssorból, grafikus felületről n test szóval kezdődő metódusokat tudjuk futtatni n Inicializálásra a set. Up() metódust kell felülírni n Takarításra a tear. Down() metódust kell felülírni n Tesztetk csoportosítása Test. Suite() 23

Fejlett Programozási Technológiák 2. Vizsgálatok n n n assert. Equals(expected, actual) assert. Equals(String message,

Fejlett Programozási Technológiák 2. Vizsgálatok n n n assert. Equals(expected, actual) assert. Equals(String message, expected, actual) assert. Null(Object object), assert. Null(String message, Object object) assert. Not. Null(Object object), assert. Not. Null(String message, Object) assert. Same(Object expected, Object actual), assert. Same(String message, Object expected, Object actual) assert. True(boolean condition), assert. True(String message, boolean condition) fail(), fail(String message) 24

Fejlett Programozási Technológiák 2. Test Case futtatás set. Up() n test kezdetű metódus n

Fejlett Programozási Technológiák 2. Test Case futtatás set. Up() n test kezdetű metódus n tear. Down() n Újra ez minden test kezdetű metódusra n 25

Fejlett Programozási Technológiák 2. Test Suite public static Test suite() { Test. Suite suite=

Fejlett Programozási Technológiák 2. Test Suite public static Test suite() { Test. Suite suite= new Test. Suite(); suite. add. Test( new Money. Test("money equals") { protected void run. Test() { test. Equals(); } } ); suite. add. Test( new Money. Test("simple add") { protected void run. Test() { test. Simple. Add(); } } ); return suite; } public static void main(String args[]) { junit. textui. Test. Runner. run(suite()); } 26

Fejlett Programozási Technológiák 2. Naplózás, Log 4 J Hibakeresés, monitorozás n Különböző kimenetek n

Fejlett Programozási Technológiák 2. Naplózás, Log 4 J Hibakeresés, monitorozás n Különböző kimenetek n Különböző kategóriák n Különböző formátumok n println()? n java. utils. log n Log 4 J n 27

Fejlett Programozási Technológiák 2. Log n Elemei: ¨ Log. Record ¨ Handler ¨ Filter

Fejlett Programozási Technológiák 2. Log n Elemei: ¨ Log. Record ¨ Handler ¨ Filter ¨ Formatter 28

Fejlett Programozási Technológiák 2. ANT n make, gnumake, nmake, jam ¨ OS specifikusak ¨

Fejlett Programozási Technológiák 2. ANT n make, gnumake, nmake, jam ¨ OS specifikusak ¨ „Szabad” szöveg alapúak n 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 29

Fejlett Programozási Technológiák 2. <project name="My. Project" default="dist" basedir=". "> <description> simple example build

Fejlett Programozási Technológiák 2. <project name="My. Project" default="dist" basedir=". "> <description> simple example build file </description> <property name="src" location="src"/> <property name="build" location="build"/> <property name="dist" location="dist"/> <target name="init"> <tstamp/> <mkdir dir="${build}"/> </target> <target name="compile" depends="init" description="compile the source " > <javac srcdir="${src}" destdir="${build}"/> </target> <target name="dist" depends="compile" description="generate the distribution" > <mkdir dir="${dist}/lib"/> <jar jarfile="${dist}/lib/My. Project-${DSTAMP}. jar" basedir="${build}"/> </target> <target name="clean" description="clean up" > <delete dir="${build}"/> <delete dir="${dist}"/> </target> </project> 30 Példa

Fejlett Programozási Technológiák 2. File. Set Minták segítségével tudunk fájlokat megadni n File. List

Fejlett Programozási Technológiák 2. File. Set Minták segítségével tudunk fájlokat megadni n File. List – fájl lista n Pattern. Set – minta lista n 31

Fejlett Programozási Technológiák 2. Példa <fileset dir=". "> <patternset id="blah"> <include name="**/*bl*"/> <exclude name="**/blah/*"/>

Fejlett Programozási Technológiák 2. Példa <fileset dir=". "> <patternset id="blah"> <include name="**/*bl*"/> <exclude name="**/blah/*"/> </patternset> </fileset> <fileset dir=”. ”> <patterset refid="blah"/> </fileset> 32

Fejlett Programozási Technológiák 2. Érdekesebb parancsok Ant – másik ANT indtítása n Copydir –

Fejlett Programozási Technológiák 2. Érdekesebb parancsok Ant – másik ANT indtítása n Copydir – egész könyvtár másolása n Cvs – CVS kezelése n Exec – egy rendszer program lefuttatása n Get – az adott URL-ről letölti a fájlt n Javadoc/Javadoc 2 – legyártja a dokumentációt n Tstamp - DSTAMP, TSTAMP, and TODAY n 33

Fejlett Programozási Technológiák 2. Bevált tehnikák Description – projecthelp n <xslt> használata n jikes

Fejlett Programozási Technológiák 2. Bevált tehnikák Description – projecthelp n <xslt> használata n jikes használata n 34

Fejlett Programozási Technológiák 2. ANT alap elemek n n n n n n Ant.

Fejlett Programozási Technológiák 2. ANT alap elemek n n n n n n Ant. Call n Ant. Structure n Apply/Exec. On n Available n Basename n Build. Number n BUnzip 2 n BZip 2 n Checksum n Chmod n Concat n Condition n Supported conditions n Copydir n Copyfile n Cvs. Change. Log n Cvs. Version CVSPass Cvs. Tag. Diff Defaultexcludes Delete Deltree Dependset Dirname Ear Echo Exec Fail Filter Fix. CRLF Gen. Key Get GUnzip GZip Import Input n n n n n Jar Javac Javadoc/Javadoc 2 Load. File Load. Properties Mail Macro. Def Manifest Mkdir Move Parallel Patch Path. Convert Pre. Set. Def Property Record Rename Replace Rmic n n n n n n Sequential Sign. Jar Sleep Sql Style Subant Sync Tar Taskdef Tempfile Touch TStamp Typedef Unjar Untar Unwar Unzip Uptodate Waitfor War Which. Resource Xml. Property Xslt Zip 35

Fejlett Programozási Technológiák 2. Opcionális elemek n n n n n NET Tasks ANTLR

Fejlett Programozási Technológiák 2. Opcionális elemek n n n n n 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 Java. CC n n n n n n Javah Jsp. C JDepend JJDoc JJTree Jlink JProbe Coverage JUnit. Report Metamata Metrics Metamata Audit Mime. Mail MParse Native 2 Ascii Net. Rexx. C Perforce Tasks Property. File Pvcs Rename. Extensions Replace. Reg. Exp RExec Rpm n n n n n Server. Deploy Setproxy Scp Scriptdef Sound Source. Off. Site Splash Sshexec Starteam Tasks Stylebook Symlink Telnet Test Translate Visual Age for Java Tasks Microsoft Visual Source. Safe Tasks Weblogic JSP Compiler Xml. Validate 36

Fejlett Programozási Technológiák 2. A mai előadás tartalma: n CVS ¨ ¨ n JUnit

Fejlett Programozási Technológiák 2. A mai előadás tartalma: n CVS ¨ ¨ n JUnit ¨ ¨ ¨ n Tesztelés Test. Case Test. Suit Log 4 J ¨ ¨ ¨ n Miért van rá szükségünk? Használata Címkézés Ágak kezelése Miért nem println()? Log 4 J Ant 37

Fejlett Programozási Technológiák 2. A következő előadás tartalma n JFC és Swing ¨ Múlt

Fejlett Programozási Technológiák 2. A következő előadás tartalma n 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 38

Fejlett Programozási Technológiák 2. Közhírré tétetik Március 10. -én n 14. 00 -tól TIK

Fejlett Programozási Technológiák 2. Közhírré tétetik Március 10. -én n 14. 00 -tól TIK I. Előadó n MS Road. Show n ¨ ASP. NET ¨ XML Web Szolgáltatások ¨… Ingyenes részvétel n Regisztrálni célszerű a: n ¨ http: //www. microsoft. com/hun/msdneloadas/reg. as px 39