Szoftver-technológia II.
Tervezési minták
Szoftver-technológia II.
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
Szoftver-technológia II.
• 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
Szoftver-technológia II.
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
Szoftver-technológia II.
• ú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
Szoftver-technológia II.
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
Szoftver-technológia II.
• Megfelel! modul kohézió esetén, a kód csak ugyanolyan adatokon, adatszerkezeteken használható fel újra
7
OOP újra felhasználhatóság
Szoftver-technológia II.
• Az objektumok, mivel biztosítják a logikai kohéziót, újra felhasználhatók
8
Szoftver-technológia II.
Újra felhasználási lehet!ségek
• tervezési elemek újra felhasználása • implementálási elemek újra felhasználása
9
Szoftver-technológia II.
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
Szoftver-technológia II.
Ú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
Szoftver-technológia II.
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
Szoftver-technológia II.
Library példák
Java Swing
Symantec THINK library 13
Szoftver-technológia II.
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
Szoftver-technológia II.
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.)
Szoftver-technológia II.
• 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 OO Patterns
Vanderbilt University
12
Class Libraries vs. Frameworks
Definition Alkalmazás Class libraries keretrendszerek (folyt.) – Self-contained "//(.'"#.+)4 %/&'.5.' 53)'#.+)"(.#6
"&%("
0"#1 '("%%&%
)*+&%(,)&*-
"!#
!"#"$"%& '("%%&%
'("%%&%
Szoftver-technológia II.
• Libraries vs. Frameworks !"#$
&7&)# (++/
OO Patterns
%&'$
23.
)*+,-
'("%%&%
./' '("%%&%
Frameworks
6+7820+--880(,&+&588+&29(#"2#.&" Douglas C. Schmidt
Class Libraries vs. Frameworks vs. Patterns – Reusable, “sem "//(.'"#.+)4 %/&'.5.' 53)'#.+)"(.#6
"&%("
0"#1 '("%%&%
)*+&%(,)&*-
"!#
)*+,-
'("%%&%
%&'$
./' '("%%&%
6+7820+--880(,&+&588+&29(#"2#.&" Libraries
!"#$%&'(!)
"/"!# 0%%1
"!# '("%%&%
+110(2+#(%!3 (!/%'"-
"!#
Class libraries +110(2+#(%!3 (!/%'"-
).(
Patterns
2+00
-1"2(4(2
,+2'-
4.!2#(%!+0(#5 Problem, solut – Self-contained, “pluggable”–ADTs
-1"2(4(2
).(
0%%1
0"#1 '("%%&%
Frameworks *+#+,+-"
"/"!# 0%%1
–6,784&+:"$%&'88+&29(#"2#.&" Reusable,Framework “semi-complete” applications Vanderbilt University Patterns
2+00 ,+2'"/"!#
4.!2#(%!+0(#5
0%%1
0"#1 '("%%&%
*+#+,+-"
0%%1
"/"!#
23.
!"#$
applications
"/"!#
'("%%&%
!"#"$"%& '("%%&%
'("%%&%
&7&)# (++/
Definition!"#$%&'(!)
– Problem, solution, context
17
"/"!# 0%%1
6,784&+:"$%&'88+&29(#"2#.&"
Komponensek integrálása a keretrendszerekbe
Vanderbilt University
14
Szoftver-technológia II.
• 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
Szoftver-technológia II.
Keretrendszer példa
MacApp Framework
19
Szoftver-technológia II.
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
Szoftver-technológia II.
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
Pattern language
Tervezési minták
Konkrét megvalósított rendszerek
21
Szoftver-technológia II.
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
2. Each observer may react differently to the same notification 3. The subject should be as decoupled as possible from the observers
#*!123!*$#
,-.*%$+$ !"#$%&$% !"#$%&'(
,-.*%$+$ '(")$*+
1!09&.%:;7&%81%$%&'(
2&%!2)41!09&.%81%$%&8
8
Szoftver-technológia II.
1!09&.%
7&%81%$%&'( 1!09&.%81%$%&8
i.e., allow observers to change independently of the subject
object changes st its dependents are notified and updat automatically.
?BC ?@
CDECA DE=E
Tervezési minta (pl.)
&$%#
rbilt University
?@ <==> ECDECA = ?CDE
)*%+,-'( $%%$./'*01&23&2( #&%$./'*01&23&2(
Vanderbilt University
• Observer pattern
Cél: egy objektum Douglas állapotának atterns C. Schmidt OO Patterns Douglas megváltozása több másik OO Patterns Douglas C. Schmidt Douglas C. Schmidt Graphical Notation Collaboration in the Observer Pattern objektumot érdekel vice Structure of the Observer Pattern
es
may be many ers
25!,0''
!"#$%&
%$/65047 F
'(")$*+ )*%+,-'( $%%$./'*01&23&2( #&%$./'*01&23&2(
bserver may react ntly to the same tion !890,/ bject should be:as ;;,34'' pled as possible e observers
allow observers to nge independently of <=605' subject
?BC ?@ ECDECA = ?CDE ?BC ?@ CDECA DE=E
/01234/0 ,34''
,-.*%$+$ !"#$%&$% !"#$%&'(
“Push” architectures com control flow and data flo
“Pull” architectures sepa control flow from data flo
-./%#"&'
1!09&.% 1!09&.%:;7&%81%$%&'(
7&%81%$%&'( 1!09&.%81%$%&8
156789:9 Variations !<>98?98/A
156789:9 !<>98?98/@
– Define a one-to-many !"#$!#%#"&' dependency between objects so that when one ()#*+,&' object changes state, all its dependents are -./%#"&' notified and updated 0"#$!#%#"&' automatically.
!"#$%&'(
C *01&23&21
,-.*%$+$ '(")$*+
156789:9 #;<=97:
Intent
,*2&$./4*4+)4*01&23&2145**" 444*6!"#$%&'( &)#45**"
0"#$!#%#"&'
2&%!2)41!09&.%81%$%&8 ,!=/4<=10=/
23 8
Vanderbilt University
9
rbilt University
10
Douglas C. Schmidt
Vanderbilt University
OO Patterns
Douglas C. Schmidt
Collaboration in the Observer Pattern
Tervezési minták (folyt.)
156789:9 #;<=97:
156789:9 !<>98?98/@
156789:9 Variations !<>98?98/A
“Push” architectures combine control flow and data flow
!"#$!#%#"&'
7
“Pull” architectures separate control flow from data flow
()#*+,&'
Szoftver-technológia II.
minta vs. alk. • Tervezési Comparing Patterns and Frameworks -./%#"&'
0
OO Patterns0"#$!#%#"&'
Douglas C. Schmidt
keretrendszer -./%#"&'
0"#$!#%#"&'
0=/ Strategy
Patterns and frameworks are highly synergistic
State Singleton Cached Virtual Filesystem
Vanderbilt University
Protocol Filter
Acceptor
Protocol Handler
Tilde Expander
~ /home/...
Event Dispatcher
Adapter
Protocol Pipeline Framework Streams
Concurrency Strategy Framework Service Configurator
Strategy
Asynchronous Completion Token
Active Object
10
Reactor/Proactor I/O Strategy Framework
Együtt léteznek 11 absztraktisleírások i.e., -neither –Minták 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 24
In general, sophisticated frameworks embody dozens of patterns and patterns are often used to document frameworks
Minták használata
Szoftver-technológia II.
• 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? Szoftver-technológia II.
• 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
Szoftver-technológia II.
• 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
Szoftver-technológia II.
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
Szoftver-technológia II.
igényes
29
Szoftver-technológia II.
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
Szoftver-technológia II.
• Könyvtárak • Alkalmazás keretrendszer • Tervezési minták
31