2008. 06. 04-ei szoftvertechnikák vizsga

A VIK Wikiből

1. Milyen fajta biztonsági megoldások vannak a .NET keretrendszerben? (12p)

  • Szerep alapú biztonság (Role based security): A felhasználó rendszerben betöltött szerepén és jogain alapuló biztonsági mechanizmus.
  • Kóderedet alapú biztonság (Code access security): Képes meghatározni, hogy a kód mit tehet, a meghívott kód mit tehet, valamint képes egyértelműen azonosítani a kódot.

2. C# Event + példaprogram (12p)

Lásd: 2007. május 30-ai vizsga 2. feladata

3. Eseményvezérelt programozás (15p)

Lásd: 2007. május 30-ai vizsga 3. feladata

4. Szálkezelés (12p)

a.) Miért könnyebb az egy folyamaton belüli szálak kommunikációja? (3p)

Röviden:
	* folyamatok elszigeteltek, a folyamatok közötti kommunikáció nehéz
	* A szálak egy adott folyamaton belül egy címtartományban vannak, így "könnyen" kommunikálnak

A folyamatok egymástól elszigeteltek:
	* Védettek egymástól (minden folyamat saját kb. 2 GB virtuális címtartományt
	  kap (32 bites OS esetén); a virtuális címeket a memóriamenedzser fizikai címekre
	  képezi le (RAM)
	* Az OS védett a felhasználói folyamatoktól
	* Egy folyamat megszűntetésének nincs hatása a többire/OS-re

b.) Szálbiztos osztály fogalma egy-két mondatban (6p)

Szálbiztos:
A kölcsönös kizárás problémája:<br/>
	* Környezet: megosztott erforráshoz több szál fér hozzá
	* Megosztott erőforrás: memória (változók, objektumok), fájl, stb.
	* Meg kell őrizni a konzisztenciát. Egy CPU esetén sem tudjuk, mikor veszi el az ütemez
	  a szál futási jogát!
Megoldás: biztosítanunk kell, hogy a megosztott erőforráshoz egyidőben csak egy szál férjen hozzá.
			 (oszthatatlan test_and_set)

Szálbiztos osztály:
Egy osztály szálbiztos, ha úgy lett megírva, hogy többszálú környezetben is biztonságosan használható.
	* Maga garantálja a konzisztenciát
	* A felhasználás során már nem kell zárolni...

public class Stack<T>{

	readonly int size;
	int current = 0;
	T[] items;
	object syncObject = new object();

	public void Push(T item){
		lock(syncObject){
			items[current++] = item;
		}
	}

	public T Pop(){
		lock(syncObject){
			return items[current--];
		}
	}
}

c.) Lock, Mutex, ReaderWriterLock konstrukciók összehasonlítása (12p) <br

Név Cél Folyamatok Sebesség
lock C# utasítás (Monitor.Enter/Monit or.Leave) Biztosítja, hogy egy adott erőforráshoz/kódrészlethez egyidőben csak egy szál férhet hozzá. nem gyors
Mutex Mint a lock, de folyamatok között is. Pl. annak megoldására, hogy egy alkalmazásból csak egy példány indulhasson. igen közepes
Semaphore Mint a Mutex, de nem egy, hanem max. N hozzáférést engedélyez. igen közepes
ReaderWriterLock Sok olvasóra optimalizált megoldás. Egyszerre több olvasó is hozzáférhet az erforráshoz, de íróból csak egy (illetve az író kizárja az olvasókat is). Pl. ritkán módosított cache megvalósítása. nem közepes
Pelda lockra:

class ThreadSafeClass{

	static bool flag; // Közös erforrás
	static object syncObject = new object();

	static void Main(){
		new Thread(Run).Start();
		new Thread(Run).Start();
	}

	static void Run(){
		lock (syncObject){
			while(flag){
				flag = 1;
				// EF. használata
				flag = 0;
			}
		}
	}

}

5. Rajzolj fel példát 1:1, 1:n, m:n relációkra, és írd fel, milyen táblákba képeznéd le őket! (12p)

Lásd: 2007. május 30-ai vizsga 5. feladata

6. Tervezési minták (13p)

a.) Mik azok, mire valók? (3p)
b.) Singleton kód c++ ||| Java || C# nyelven (10p)
Lásd: 2007. június 6-ai vizsga 6. feladata

Tervezés minták

7. Model-View-Controller és Document-View jellemzés, leírás + példa az egyikre (13p)

Lásd: 2007. június 6-ai vizsga 7. feladata

8. Mi a szerver oldali vezérlők szerepe? Milyen típusok vannak? (13p)

a.) HTML Controls

  • System.Web.UI.htmlControls névtérben
  • Egy-egy HTML taget tesz elérhetővé
  • Szorosan burkolja az eredeti HTML elemeket, minimális funkcionalitást ad hozzá -> gyrosabb, mint a WebControl

b.) Web Controls

  • System.Web.UI.WebControls névtérben bonyolultabb funkcionalitású osztályok
  • Összetettebb HTML kódot generál

c.) Mobile Controls

  • Mobil web alkalmazások készítéséhet
  • Figylembe veszi az adott mobil kliens képességeit