Toto je starší verze dokumentu!


Návrh a modelování softwarových systémů

Cvičení

  • semestrálka ve skupinách po 2, hodnocení 0-100%
  • max 2 absence
  • min 50% z odevzdané semestrální práce
  • ústní prezentace semestrální práce v 12/13 týdnu
  • semestrální práce se podílí z 20% na hodnocení u zkoušky

Zkouška

Termín 05.01.2011

První

Namodelovat v podobě class diagramu program na tvorbu ER diagramu. Jednotlivé třídy budou Diagram (plátno, kde se bude kreslit), Node (uzel reprezentující např. třídu), Edge (hrana mezi uzly), Polygon (grafická reprezentace uzlu), Dialog (dialogové okno, které vyskočí po kliknutí na uzel), Point (jednotlivá zalomení hrany). V diagramu bude možné pohybovat s uzly, přidávat nové a mazat staré. Mezi uzly bude možné vytvořit orientovanou hranu. Po kliknutí na uzel se ukáže dialog.

Druhý

Napsat javovský program, který spustí druhé vlákno a zároveň umožní jeho bezpečné ukončení. Zadání bylo velmi strohé, teprve u ústního mi vysvětlil, že chtěl ukázat použití wait() a notify(). Mohlo to vypadat nějak takto (nezaručuju funkčnost, jsem línej to zkoušet):

public class Main implements Runnable {

public static void main(String[] args) {
  Main m = new Main();
  Thread t = new Thread(t);
  t.start();
}
private boolean running = true;
public synchronized void run() {
  while (running) {
    //Wait musí být uvnitř cyklu
    wait(1000);
  }
}
public synchronized void getRunning() {return running;}
public synchronized boolean setRunning(boolean b) {running = b;}

}

Třetí

Nakreslit pomocí UML návrhový vzor Bridge. Popsat, k čemu se používá (příklad) a jak funguje. Já popisoval JDBC, ale to se mu moc nelíbilo, že prý JDBC nemusí být bridge, protože stačí volat funkce v ovladači jako je connect a executeQuery. Já oponoval tím, že pokud bych chtěl například ve svém systému logovat uživatelské příkazy na databázi, rozhodně bych si vytvořil svojí obalovací metodu na komunikaci s JDBC. Nakonec jsem ho přesvědčil.

Termín 11.01.2009

Prva uloha

Jednalo sa o E-shop s kuponami na prazsku hromadnu dopravu, kde si zakaznik moze kupit novy kupon, zaplatit ho bud bankovym prevodom alebo nejak inak a zvolit si notifikaciu o prebehnutej platbe (mail || sms). Ked pride k validatoru (akoze ta skatula co je v metre), po vsunuti karty do citacky sa mu zobrazi zoznam existujucich kuponov a zoznam novych kuponov, ktore si moze nahrat na kartu. Bolo este povedane ze verifikacia a nahravanie je operacne a casovo narocna preto to trebe paralelizovat.
Bolo treba urobit nejaky model ako to bude fungovat a use-case k tomu.
Ja som spravil:

  • napisal som slovne use-case. Samostatne E-Shop a samostatne validator. Na konci som napisal ako by som to sparalelizoval (viacej serverov s jednou frontou sprav, po vyhodnoteni spravy server zasiela spravu validatoru, ze moze vykonat nejaku operaciu)
  • diagram nasadenia (na jednaj strane viacero serverov a databaza a na druhej strane validator. Komunikuju pomocou HTTP, XML a JMS)
  • funkcne a nefunkcne poziadavky. Opat samostatne na E-Shop a na Validator
Druha uloha

A) Uvedte pri akych okolnostiach sa pri sucasnom pristupe viacerych threadov k tomu istemu objektu mozeme vyhnut nutnosti pouzivania synchronizacie a pritom nebude ohrozena threadova bezpecnost.
Zjednodusene ako sa vyhnut pouzitiu klucoveho slova synchronized a pritom zabezpecit threadovu bezpecnost

  • pouzitie volatile premenych a a atomickych operacii (doulezite je tam to 'a' ja som mal 'alebo' a hned mi strhol dva body)

B) Diskutujte vhodnost volania abstraktnych metod vo viacvlaknovych aplikaciach

  • Absolutne nevhodne, pretoze kazdy si tam moze napisat svoju implementaciu a to moze viest k necakanemu chovaniu aplikacie alebo problemom typu deathlock.
Tretia uloha

A) Vymyslite zmysluplny priklad na pouzitie navrhoveho vzoru STRATEGY
B) Nakreslite diagram tried ilustrujuci vas priklad

Materiály

courses/a4m33nms.1294229577.txt.gz · Poslední úprava: 2025/01/03 18:15 (upraveno mimo DokuWiki)
Nahoru
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0