2008. 06. 04-ei szoftvertechnikák vizsga
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. -- Judit - 2008.06.10.
2. C# Event + példaprogram (12p)
3. Eseményvezérelt programozás (15p)
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)
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
https://wiki.sch.bme.hu/bin/view/Infoalap/TervezesiMintak -- Judit - 2008.06.10.
7. Model-View-Controller és Document-View jellemzés, leírás + példa az egyikre (13p)
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
-- Judit - 2008.06.10.