Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Licenţă
Domeniul: Informatică
Programul de studii: Informatică - linia de studiu maghiară
Limba de predare: Maghiară

SYLLABUS

I. Általános adatok
Kód	Tantárgy neve	
MID0009	Tervezési és programozási környezetek	

Félév	Órák: C+S+L+P	Kategória	Típus	
6	2+0+2+0	szaktárgy	kötelezö	

II. Foállásban az  Egyetem  oktatói
Név	Tudományos	Oktatói	Tanszék	Tevékenység	
	fokozat	státus		E	Sz	L	
SIMON Karoly	Dr. 	Lect.	Magyar Matematika és Informatika	*			

Társult oktatók
Név	Tudományos	Intézmény	Állás	Tevékenység 	
	fokozat		típusa	E	Sz	L	

III. A tantárgy célkituzései
a szoftverrendszerek tervezésével és megvalósításával kapcsolatos ismeretek elmélyítése, rendszerezése
bonyolultabb szoftverrendszerek fejlesztésénél alkalmazható tervezési minták elsajátítása
osztott rendszerek fejlesztésével kapcsolatos ismeretek elsajátítása, távoli metódushívásokon, valamint üzenetküldéseken alapuló kliens-szerver alkalmazások fejlesztése
különbözo programozási nyelvek által biztosított csomagok és függvénykönyvtárak egy részének áttanulmányozása
különbözo tervezési és programozási környezetek megismerése (a biztosított funkcionalitásokon kívül beleértve azok felépítését is)
komponensorientált szoftverarchitektúrák megismerése, plug-in alapú rendszerek fejlesztése, keretrendszerek alkalmazása 
több rétegu alkalmazások fejlesztése, szolgáltatás orientált architektúrák tervezése
néhány, a modern szoftverfejlesztésben alkalmazott paradigma, modell és technológia bemutatása, alkalmazása (aspektus orientált programozás, ORM, webalkalmazások fejlesztésénél alkalmazott keretrendszerek, stb.)	

IV. A tantárgy tartalma
Integrált fejlesztoi környezetek
Programozási nyelvekkel kapcsolatos ismeretek rendszerezése
Modern szoftverfejlesztési módszerek
Adatbázisok elérése, többrétegu szoftverarchitektúrák, kapcsolódó tervezési minták, ORM (Object Relational Mapping)
Hálózati alkalmazások, távolsági metódushíváson alapuló kliens-szerver alkalmazások
Plug-in alapú rendszerek, vonatkozó standardok, keretrendszerek
RCP (Rich Client Platform) alkalmazások
XML dokumentumok, és alkalmazások közötti XML alapú kommunikáció
WEB alkalmazások, kapcsolódó tervezési minták, keretrendszerek
Aspektus-orientált programozás	

V. Könyvészet
1. Eckel, B., Thinking in C#, MindView Inc, 2004.
2. Larman, C.: Applying UML and Design Patterns: An Introduction to OO Analysis and Design and Unified Process, Berlin, Prentice Hall, 2002.
3. Fowler, M., Patterns of Enterprise Application Architecture, Addison-Wesley, 2002.
4. Hohpe, G., Woolf, B., Enterprise integration patterns, Addison-Wesley, 2003.
5. ***, Microsoft Developer Network, Microsoft Inc., http://msdn.microsoft.com/
6. ***, The Java Tutorial, SUN Microsystems, Inc, 2004. http://java.sun.com/docs/books/tutorial/index.html
7. Eckel, B., Thinking in Java, 4th edition, Prentice Hall, 2006.	

VI. Az oktatói tevékenység heti tematikája
Eloadásokon tárgyalt témák:

1. Integrált fejlesztoi környezetek
általános bevezeto, történeti áttekintés, fontosabb irányvonalak
általános funkcionalitások
különbözo környezetek rövid összehasonlítása
az Eclipse bemutatása (bevezeto)
közösség, projektek, történeti áttekinto
az Eclipse SDK bemutatása

2. Programozási nyelvekkel kapcsolatos ismeretek rendszerezése
natív kód és bájtkód, AOT és JIT fordítók
programozási nyelvek összehasonlító elemzése (C++, C#, Java)
a .NET keretrendszer és a Java platform
a J2SE5
3. Modern módszerek a szoftverfejlesztésben
a tárgy további részeinél szereppel bíró fejlesztési módszerek bemutatása
Reflection
általános tudnivalók
megvalósítás Java-ban
az Object és a Class osztályok
a java.lang.reflect csomag, a Field, a Method és a Constructor osztályok
alkalmazási lehetoségek, biztonsággal kapcsolatos kérdések
Serialization
általános tudnivalók
szerializálás Java-ban, a Serializable interfész
alkalmazás, példák
Internationalization
általános tudnivalók
nemzetköziesítés megvalósítása Java-ban
a Properties osztály, .properties állományok
a Locale és a MessageBundle osztályok

4. Adatbázisok elérése, többrétegu szoftverarchitektúrák
a JDBC API bemutatása
a DAO tervezési minta (és a kapcsolódó tervezési minták ismétlése)
a szolgáltatás réteg bevezetése
kapcsolódó tervezési/fejlesztési eszközök

5. Objektumorientált programozás és relációs adatbázisok
ORM (Object Relational Mapping): motiváció, általános tudnivalók
Az iBatis alkalmazása
az SQL map elokészítése, konfigurációs állomány
objektumok írása/olvasása
ORM alapú alkalmazás fejlesztése iBatis alkalmazásával (példa)
A Hibernate alkalmazása (összehasonlítás az iBatis –al)

6. Hálózati alkalmazások
TCP kommunikáción alapuló kliens-szerver alkalmazások
hálózati alkalmazások Java-ban
adatfolyamok, végrehajtási szálak ismétlése
a Socket és ServerSocket osztályok alkalmazása
UDP alapú kommunikáció
URI és URL (valamint a megfelelo Java osztályok alkalmazása)
keretrendszerek használata (az Apache MINA bemutatása)

7. Távolsági metódushívásokon alapuló kliens-szerver alkalmazások
az általános modell (egy Distributed Object Application általános modellje, távoli interfészek, objektumok, metódusok)
CORBA (Common Object Request Broker Architecture)
általános bevezeto, OMG
CORBA összetevok (a kliens és a szerver oldal)
az IDL (Interface Definition Language), IDL-Java leképezés
CORBA alapú alkalmazások fejlesztése (példa)
RMI (Remote Method Invocation)
a Java RMI API
RMI alapú alkalmazások fejlesztése (a fejlesztés lépései, a szerver és kliens létrehozása)
RMI alapú alkalmazások futtatása
biztonsági mechanizmusok: class loaders, security managers, protection domains, kriptográfiai algoritmusok és a JCE (Java Criptography Extension), digitális aláírások

8.  Plug-in alapú rendszerek fejlesztése
plug-in alapú fejlesztés: motiváció, általános jellemzok, keretrendszerek
az OSGi keretrendszer
OSGi bundle
OSGi szolgáltatások
OSGi alapú fejlesztések
az Equinox
Plug-in alapú fejlesztés Eclipse-ben
az Eclipse felépítése, az Eclipse Workbench felépítése
Eclipse plug-in 
Eclipse plug-in készítése

9. RCP (Rich Client Platform) alkalmazások fejlesztése
Thin Client és Rich Client alkalmazások: általános jellemzok
az SWT grafikus csomag
a JFace grafikus eszköztár
Eclipse RCP alkalmazások fejlesztése (a fejlesztés lépései, példa)

10. XML dokumentumok feldolgozása és alkalmazása
XML dokumentumok
XML dokumentumok feldolgozása, a DOM (Document Object Model)
XML dokumentumok feldolgozása Java-ban (a javax.xml csomag)
alkalmazások közötti XML alapú kommunikáció
a SOAP protokoll bemutatása és alkalmazása

11. WEB alkalmazások
általános tudnivalók, alkalmazott tervezési minták
WEB alkalmazások fejlesztése Java-ban
a Java Servlet API
a JavaServer Pages technológia
keretrendszerek alkalmazása, az Apache Struts bemutatása

12. Aspektus-orientált programozás
az AOP (Aspect Oriented Programming) paradigma
motiváció, történet, általános jellemzok
aspektus orientált szoftverfejlesztés (AOSD – Aspect Oriented Software Development)
összehasonlítás más paradigmákkal
Join-point modellek (a join-point, pointcut, aspect fogalmak tárgyalása)
az AspectJ projekt

Gyakorlati tevékenységek (a laborórák feladatai: L1-L12):
A Java programozási nyelv alapjainak ismétlését és az Eclipse környezet megismerését célzó feladatok (L1, L2)
A JDBC API alkalmazása: egy többrétegu alkalmazás megírása relációs adatbázisban tárolt adatok feldolgozására, a megfelelo tervezési minták alkalmazása, grafikus felszín készítése (L3,L4)
Az elozoekben (2.-es pont) megírt alkalmazás átírása, ORM alkalmazása (javasolt keretrendszer: iBatis) (L5)
Hálózati alkalmazás készítése Java-ban (L6)
Az RMI API alkalmazása (L7)
Eclipse plug-in létrehozása (L8)
Eclipse RCP alkalmazás kifejlesztése (XML dokumentumok feldolgozásával kapcsolatos feladatok megoldására) (L9,L10)
Egyszeru WEB alkalmazás megírása (Java) (L11)
Az AspectJ alkalmazása, példa (L12)

További információk: http://www.cs.ubbcluj.ro/~ksimon	

VII. Alkalmazott didaktikai módszerek

VIII. Értékelés
A végso jegyet az alábbiakban leírtak szerint határozzuk meg: 
A. Labortevékenység: 40% 
B. Írásbeli vizsga: 40%
C. Gyakorlati vizsga: 20%
Az írásbeli és gyakorlati vizsgára a vizsgaidoszakban kerül sor. Az írásbeli vizsga elméleti jellegu, a gyakorlati vizsgán az anyaggal kapcsolatos egyszeru alkalmazást kell implementálni. 
A tantárgy sikeres letételéhez minden részeredmény (A, B és C) esetében átmeno osztályzatot (5) kell elérni.	

IX. Kiegészíto könyvészet

	Dékán,						Tanszékvezeto,

	Dátum,						Eloadás felelose,
	2011. okt. 1.						Lect. Dr.  SIMON Karoly