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

SYLLABUS

I. Általános adatok
Kód	Tantárgy neve	
MID0009	Tervezési és programozási környezetek
(Medii de proiectare şi programare)	

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

II. Főállásban az Egyetem oktatói
Név	Tudományos	Oktatói	Tanszék	Tevékenység	
	fokozat	státus		E	Sz	L	
SIMON Károly	Dr. 	Lect.	Limbaje şi Metode de Programare	*			

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élkitűzé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öző programozási nyelvek által biztosított csomagok és függvénykönyvtárak egy részének áttanulmányozása
•	különböző 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étegű 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 fejlesztői környezetek
-	Programozási nyelvekkel kapcsolatos ismeretek rendszerezése
-	Modern szoftverfejlesztési módszerek
-	Adatbázisok elérése, többrétegű 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 Java, 4th edition, Prentice Hall, 2006.
2. ***, The Java Tutorial, Sun Microsystems, Inc, 2004. http://java.sun.com/docs/books/tutorial/index.html
3. Fowler, M., Patterns of Enterprise Application Architecture, Addison-Wesley, 2002.
4. ***, Eclipse Documentation, Eclipse Foundation, 2009.
    http://www.eclipse.org/documentation/
5. ***, RMI Tutorial, Sun Microsystems, 2008.
    http://java.sun.com/docs/books/tutorial/rmi/index.html
6. ***, JDBC Tutorial, Sun Microsystems, 2008.
    http://java.sun.com/docs/books/tutorial/jdbc/index.html
7. ***, iBatis Documentation (for Java), The Apache Software Foundation, 2006
    http://svn.apache.org/repos/asf/ibatis/trunk/java/ibatis-2/ibatis-2-docs/en/
8. ***, AspectJ Documentation, Eclipse Foundation, 
    http://www.eclipse.org/aspectj/docs.php
9. ***, Java Servlet Technology Documentation, Sun Microsystems, http://java.sun.com/products/servlet/docs.html	

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

1. Integrált fejlesztői környezetek
-	általános bevezető, történeti áttekintés, fontosabb irányvonalak
-	általános funkcionalitások
-	különböző környezetek rövid összehasonlítása
-	az Eclipse bemutatása (bevezető)
o	közösség, projektek, történeti áttekintő
o	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
o	általános tudnivalók
o	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
o	alkalmazási lehetőségek, biztonsággal kapcsolatos kérdések
-	Serialization
o	általános tudnivalók
o	szerializálás Java-ban, a Serializable interfész
o	alkalmazás, példák
-	Internationalization
o	általános tudnivalók
o	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étegű 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
o	az SQL map előkészítése, konfigurációs állomány
o	objektumok írása/olvasása
o	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
o	adatfolyamok, végrehajtási szálak ismétlése
o	a Socket és ServerSocket osztályok alkalmazása
o	UDP alapú kommunikáció
-	URI és URL (valamint a megfelelő 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)
o	általános bevezető, OMG
o	CORBA összetevők (a kliens és a szerver oldal)
o	az IDL (Interface Definition Language), IDL-Java leképezés
o	CORBA alapú alkalmazások fejlesztése (példa)
-	RMI (Remote Method Invocation)
o	a Java RMI API
o	RMI alapú alkalmazások fejlesztése (a fejlesztés lépései, a szerver és kliens létrehozása)
o	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 jellemzők, keretrendszerek
-	az OSGi keretrendszer
o	OSGi bundle
o	OSGi szolgáltatások
o	OSGi alapú fejlesztések
-	az Equinox
-	Plug-in alapú fejlesztés Eclipse-ben
o	az Eclipse felépítése, az Eclipse Workbench felépítése
o	Eclipse plug-in 
o	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 jellemzők
-	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
o	a Java Servlet API
o	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
o	motiváció, történet, általános jellemzők
o	aspektus orientált szoftverfejlesztés (AOSD – Aspect Oriented Software Development)
o	ö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):
1.	A Java programozási nyelv alapjainak ismétlését és az Eclipse környezet megismerését célzó feladatok (L1, L2)
2.	A JDBC API alkalmazása: egy többrétegű alkalmazás megírása relációs adatbázisban tárolt adatok feldolgozására, a megfelelő tervezési minták alkalmazása, grafikus felszín készítése (L3,L4)
3.	Az előzőekben (2.-es pont) megírt alkalmazás átírása, ORM alkalmazása (javasolt keretrendszer: iBatis) (L5)
4.	Hálózati alkalmazás készítése Java-ban (L6)
5.	Az RMI API alkalmazása (L7)
6.	Eclipse plug-in létrehozása (L8)
7.	Eclipse RCP alkalmazás kifejlesztése (XML dokumentumok feldolgozásával kapcsolatos feladatok megoldására) (L9,L10)
8.	Egyszerű WEB alkalmazás megírása (Java) (L11)
9.	Az AspectJ alkalmazása, példa (L12)

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

VII. Alkalmazott didaktikai módszerek
előadás, párbeszéd, gyakorlati feladatok, egyéni munka
az előadásokhoz tartozó jegyzetek kivetítése, a jegyzetek hozzáférhetővé tétele az Interneten	

VIII. Értékelés
A végső 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 vizsgaidőszakban kerül sor. Az írásbeli vizsga elméleti jellegű, a gyakorlati vizsgán az anyaggal kapcsolatos egyszerű alkalmazást kell implementálni. 
A tantárgy sikeres letételéhez minden részeredmény (A, B és C) esetében átmenő osztályzatot (5) kell elérni.	

IX. Kiegészítő 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.	***, Microsoft Developer Network, Microsoft Inc., http://msdn.microsoft.com/
4.	***, Hibernate Documentation, http://www.hibernate.org/5.html
5.	***, CORBA/IIOP Specifications, OMG, http://www.omg.org/technology/documents/corba_spec_catalog.htm
6.	***, Apache MINA Tutorial, Apache Software Foundation, http://mina.apache.org/quick-start-guide.html
7.  Hohpe, G., Woolf, B., Enterprise integration patterns, Addison-Wesley, 2003.	

	Dékán,						Tanszékvezető,

	Dátum,						Előadás felelőse,
	2010. okt. 1.						Lect. Dr. SIMON Károly