Tervezési minták Irodalom Steven R. Schach: Object Oriented & Classical Software Engineering, McGRAW-HILL, 6th edition, 2005, chapter 8. E. Gamma, R. Helm, R. Johnson, J. Vlissides:Design patterns: Elements of reusable object-oriented software, Addison-Wesley, 1995 2
A szoftver újra felhasználás két alaptípusa Opportunista (esetleges) újra felhasználás el!ször a termék kerül kifejlesztésre, majd a komponensek bekerülnek az újra felhasználási adatbázisba Szisztematikus (szándékos) újra felh. újra felhasználható komponensek létrehozása, majd a szoftver kifejlesztése 3 Miért kell? Termék gyorsabb piacra kerülése A létrehozott kód mindössze 15%-a új, eredeti 4
Az újra felhasználhatóság ára újra felhasználható elemek létrehozási költsége az elem újra felhasználásának költsége az újra felhasználási folyamat kialakításának és m"ködtetésének költsége 5 Tanulság Számtalan tanulmány szerint a szoftverfejleszt! szervezetekben alacsony az újra felhasználás foka nehéz jól, hatékonyan, széleskör"en újra felhasználható szoftver komponenseket el!állítani 6
Struktúrált kód újra felhasználása Megfelel! modul kohézió esetén, a kód csak ugyanolyan adatokon, adatszerkezeteken használható fel újra 7 OOP újra felhasználhatóság Az objektumok, mivel biztosítják a logikai kohéziót, újra felhasználhatók 8
Újra felhasználási lehet!ségek tervezési elemek újra felhasználása implementálási elemek újra felhasználása 9 Tervezési újra felhasználás Opportunista újra felhasználás adott alkalmazási területhez kötöd! szoftverek fejlesztése esetén 10
Újra felhasználási lehet!ségek közvetlen kód, elemek library-k, toolkitek, (függvény könyvtárak, osztály könyvtárak) alkalmazás keretrendszerek (application framework) tervezési minták (design pattern) 11 Library, toolkit Újra felhasználható rutinok Változó vezérlési logika Vezérlési (alkalmazás) logika könyvtári rutinok (osztályok) 12
Library példák Java Swing Symantec THINK library 13 Alakmazás keretrendszerek Részben rögzített, de testreszabható alkalmazás logika, alkalmazás specifikus modulokkal kitöltve Alkalmazás keretrendszer specifikus rutinok (osztályok) 14
Alkalmazás keretrendszerek Komponensek integrált halmaza, melyek együttm"ködve egy újra felhasználható architektúrát eredményeznek, lehet!vé teszik azonos jelleg" alkalmazások létrehozását 15 Alkalmazás keretrendszerek (folyt.) Gyorsabb fejlesztés mint a toolkitek esetén a terv (architektúra) nagyobb része kerül újra felhasználásra általában a m"ködési logika létrehozása nehezebb, mint egyegy m"veleté 16
7. Known uses and related patterns Vanderbilt University OO Patterns 12 OO Patterns Alkalmazás keretrendszerek (folyt.) Libraries vs. Frameworks Class Libraries vs. Frameworks vs. Patterns Libraries Definition Class libraries Douglas C. Schmidt Self-contained, pluggable ADTs Problem, solut Frameworks Reusable, Framework semi-complete applications Patterns Class Libraries vs. Frameworks Vanderbilt University Problem, solution, context Definition Class libraries Self-contained Frameworks Reusable, sem applications Patterns 17 Vanderbilt University 14 Komponensek integrálása a keretrendszerekbe Komponensek lazán csatoltak callback interfész Függetlenül fejlesztett komponensek csatlakozathatók Általános (generikus) keretrendszer objektumok és alkalmazás specifikus objektumok 18
Keretrendszer példa MacApp Framework 19 Tervezési minták A tervezési minták egy adott területen korábban sikeres megoldások szerkezetét, m"ködését (invariáns értékeit) írják le Mintában leírt szerkezet, újra felhasználáskor a konkrét osztályokat meg kell adni 20
Tervezési minták (folyt.) Probléma és a megoldás lényegének leírása tervezési szótár (pattern language) azonosított minták struktúrált invariáns értékek formális dokumentáció Tervezési alapelvek, keretrendszerek Tervezési ajánlások Konkrét megvalósított rendszerek Pattern language Tervezési minták 21 Minta leírása Név, cél Probléma és kontextus Szerkezet absztrakt leírása A használat pozitív és negatív következményei Implementációs irányelvek, kód példa Ismert felhasználások, kapcsolódó más minták 22
ice s Douglas C. Schmidt Graphical Notation OO Patterns ay be many rs server may react tly to the same ion ject should be as led as possible observers llow observers to ge independently of ubject 8 2. Each observer may react differently to the same notification 3. The subject should be as decoupled as possible from the observers Tervezési minta i.e., allow observers to change independently of Observer pattern Cél: egy objektum állapotának Douglas C. Schmidt megváltozása több másik objektumot Structure érdekel of the Observer Pattern the subject (pl.) bilt University 8 Vanderbilt University tterns Douglas C. Schmidt Intent Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. Vanderbilt University 9 bilt University 10 OO Patterns Vanderbilt University 23 object changes st its dependents are notified and updat automatically. Collaboration in the Observer Pattern Douglas control flow and data flo Variations Push architectures com Pull architectures sepa control flow from data flo Douglas C. Schmidt 10 OO Patterns Douglas C. Schmidt Collaboration in the Observer Pattern Tervezési minták Variations Push architectures combine control flow and data flow (folyt.) Pull architectures separate control flow from data flow OO Patterns Tervezési minta vs. alk. Strategy Protocol Handler Comparing Patterns and Frameworks keretrendszer Vanderbilt University 11 Protocol Filter Reactor/Proactor I/O Strategy Framework Asynchronous Completion Token Adapter Protocol Pipeline Framework Streams State Singleton Cached Virtual Filesystem Acceptor Tilde ~ Expander /home/... Event Dispatcher Concurrency Strategy Framework Service Configurator Strategy Active Object Douglas C. Schmidt Patterns and frameworks are highly synergistic Együtt léteznek Minták i.e., - neither absztrakt isleírások Keretrendszerek - konkrét subordinate nyelvi megvalósítások Patterns can be A keretrendszerekben sok characterized as more minta jelenik meg abstract descriptions of frameworks, which are implemented in a particular language In general, sophisticated frameworks embody dozens of patterns and patterns are often used to document frameworks 24
Minták használata Kisebb változtatásokkal el!forduló, ismétl!d! problémák megoldása Sok, bonyolultan kapcsolódó lépésb!l álló megoldást kívánó problémák Inkább belátást, megértést követel! helyzetek (probléma struktúrálás) 25 Mit!l jó egy minta? Megold valamilyen problémát hasznos Valamilyen meghatározott kontextusban érvényes világosan kiderül hol használható Ismétl!dik újra felhasználható Tanít valamit rávezet a probléma megoldására Jó neve van 26
A minták használatához szükséges megközelítésmód Interfészek és implementáció elkülönítése Közös (állandó, stabil) és változó részek elkülönítése Helyettesíthet!ség, változtathatóság megvalósítása 27 Minták használatának el!nyei Szoftver architektúrák kiterjedt újra felhasználása rendszerek hatékony dokumentálása Szakért!i tudás rögzítése, elérhet!vé tétele Fejleszt!i kommunikáció támogatása Áttérés támogatása OOP-ra 28
Minták használatának hátrányai Tervezési minták nem vezetnek közvetlen kód újra felhasználáshoz Minták félrevezet!en egyszer"nek t"nhetnek Túl sok alkalmazandó minta megjelenése Minták automatizált teszteléssel nem validálhatók Minták alkalmazása emberi munka igényes 29 Hatékony minta alkalmazás Ne tervezzünk újra mindent mintának Támogassuk a minták kifejlesztését A minták kifejlesztésébe vonjuk be a domén szakért!ket és alkalmazás fejleszt!ket Világosan dokumentáljuk a minták alkalmazásának korlátait 30
Újra felhasználással adódó szoftver architektúra Könyvtárak Alkalmazás keretrendszer Tervezési minták 31