=Paper= {{Paper |id=Vol-1221/paper64 |storemode=property |title=İletişim Katmanı Yazılım Mimarisinin Kalite Analizi |pdfUrl=https://ceur-ws.org/Vol-1221/64_Bildiri.pdf |volume=Vol-1221 |dblpUrl=https://dblp.org/rec/conf/uyms/DoganABDKZ14 }} ==İletişim Katmanı Yazılım Mimarisinin Kalite Analizi== https://ceur-ws.org/Vol-1221/64_Bildiri.pdf
    øOHWLúLP.DWPDQÕ@
    @ %XQXQOD ELUOLNWH ELUoRN E\N
|OoHNOL SURMHGH VRQ UQ KDOLQH JHWLULOPLú \D]ÕOÕPÕQ VRQ NDOLWHVL KDNNÕQGD \DUJÕ\D
YDUDELOPHN LoLQ JHUoHNOHPH DúDPDVÕ EHNOHQPHN ]RUXQGDGÕU ùSKHVL] NL \D]ÕOÕP
NDOLWHVL KDNNÕQGD -PPNQVH WDVDUÕP DúDPDVÕQGD- JHUoH÷H \DNÕQ ELU \DUJÕ\D VDKLS
ROPDNoRNE\NELUDUWÕGH÷HURUWD\DoÕNDUDFDNWÕU%XQXVD÷ODPDQÕQ yolu ise, tasa-
UÕPNDOLWH|]HOOLNOHULQLLQFHOHPHNYHNXOODQÕODQ\D]ÕOÕPPLPDULOHULQLQYHúDEORQODUÕQÕQ
EX NDOLWH |]HOOLNOHULQH RODQ HWNLOHULQL EHOLUOHPHNWLU %X NRQX |]HOLQGH WDUWÕúPDODUÕQ
\DSÕOGÕ÷Õ|QFOoDOÕúPDODUGDYDUGÕU>@DQFDNEXoDOÕúPDODUÕQE\NoR÷XQOX÷X, son
ürün DúDPDVÕQGDNDOLWH|]HOOLNOHULQHRGDNODQDUDN\D]ÕOÕPÕQ NDOLWHVLQLWDUWÕúPÕúWÕU
    %XPDNDOHGHøOHWLúLP.DWPDQÕ@,
QHVQH\H GD\DOÕ, LOHWLúLP NDWPDQ YH SURWRNROOHUL WDVDUÕPÕ LoLQ NXOODQÕODQ ELU \D]ÕOÕP
PLPDULPRGHOLQLQWDVDUÕPNDOLWH|]HOOLNOHULQHHWNLVLDUDúWÕUÕOPÕúWÕU%XDPDoODø.<0
NXOODQÕODUDNLoLQGHLNLDQDSURWRNRO(TCP ve UDP) EDUÕQGÕUDQ7&3/,3WDúÕPDNDWPD
QÕWDVDUODQPÕúWÕUø.<0WDEDQOÕEXWDVDUÕPÕQsürdürülebilirlik, test edilebilirlik, yeni-
GHQ NXOODQÕODELOLUOLN DQODúÕODELOLUOLN YH güvenilirlik NDOLWH |]HOOLNOHUL |OoOPú KHP
ø.<0KHPGHø.<0WDEDQOÕWDVDUÕPKDNNÕQGD\DUJÕ\DYDUÕOPD\DoDOÕúÕOPÕúWÕUSonuç
RODUDN\D]ÕOÕPNDOLWHVLQHJHUoHNOHPHDúDPDVÕQÕEHNOHPHGHQJQFHOOHPHQLQYe tasa-
UÕPGH÷LúLNOL÷LQLQGDKDD]PDOL\HWOLROGX÷XWDVDUÕPDúDPDVÕVÕUDVÕQGDNDUDUYHULOHELOH
FH÷LJ|VWHULOPLúWLU
    %XPDNDOHúXúHNLOGHRUJDQL]HHGLOPLúWLUE|OPGH|QFOoDOÕúPDODUJHQHORODUDN
DQODWÕOPÕúve 3. bölümde kalite ölçütOHULGHWD\ODUÕ\ODDoÕNODQPÕúWÕU4E|OPGHø.<0
ile TCP/IP tDúÕPD kDWPDQÕ WDVDUÕPÕ YH NDOLWH DQDOL]L \HU DOPÕúWÕU 6RQ E|OPGH LVH
ø.<0WDEDQOÕ|UQHN7&3/,3WDúÕPDNDWPDQÕQÕQNDOLWH|OoPVRQXoODUÕYHø.<0PR
delin WDVDUÕPDNDWNÕODUÕWDUWÕúÕOPÕúWÕU.




                                              668
2      ø/*ø/ød$/,ù0$/$5

    %XE|OPGHQHVQH\H\|QHOLNELU\D]ÕOÕPNDSVDPÕQGDNLKDWDOÕVÕQÕIODUÕQLOJLOL\D]Õ
OÕPD X\JXODQDQ NDOLWH |OoPOHULQLQ VRQXoODUÕ ]HULQGHQ WHVSLWLQH \|QHOLN \DSÕOPÕú
RODQ oDOÕúPDODU LQFHOHQPLúWLU @\D]ÕOÕPGDNLRODVÕWDVDUÕPKDWDODUÕQÕQEXOXQPDVÕLoLQ
QHVQH\H \|QHOLN WDVDUÕP |]HOOLNOHULQGHQ ID\GDODQPÕúODUGÕU %X DPDoOD NXOODQGÕNODUÕ
ölçütOHULNDOLWHOLELUQHVQH\H\|QHOLN\D]ÕOÕPÕQVDKLSROPDVÕJHUHNHQIDUNOÕ|]HOOLNOHUL
WHPVLOHGHQNDUPDúÕNOÕNED÷ÕPOÕOÕNYHX\XPOXOXN|OotOHULQHJ|UHoDQDVÕQÕIWDWRS
ODPÕúODUGÕU @LVHQHVQH\H\|QHOLN\D]ÕOÕP
ODUGDVUGUOHELOLUOLNNDOLWH|]HOOL÷L]HULQHGLUdDOÕúPDGDELU\D]ÕOÕPÕQKHPPLPDUL
WDVDUÕPÕ KHPGHND\QDNNRGVHYL\HVLQGHLQFHOHPHVL\DSÕOPÕú\D]ÕOÕPVUGUOHELOLU
OL÷LQLROXPVX]\|QGHHWNLOH\HQNÕVÕPODUÕQRUWDN|]HOOLNOHULEXOXQXSED]ÕWHVSLWOHU\D
SÕOPÕúWÕU6DOHKLHYHDUNDGDúODUÕGDQHVQH\H\|QHOLN\D]ÕOÕPGDVUGUOHELOLUOLNNDOLWH
|]HOOL÷L ]HULQH ELU oDOÕúPD >@ \DSPÕúODUGÕU $GÕ JHoHQ oDOÕúPDGD, uygulanan ve
|QHULOHQ\|QWHPLNLDúDPDOÕROXSLONDúDPDGDEDUL]\D]ÕOÕPWDVDUÕPNXVXUODUÕEXOXQ
PD\D oDOÕúÕOPÕú LNLQFL DúDPDGD LVH R DQ NXVXU JLEL J|UQPH\HQ DPD LOHULGH VRUXQ
olabilecek alanlar WHVSLWHGLOPH\HoDOÕúÕOPÕúWÕU
    Marinescu [11] ise iyi bilinen iki WDVDUÕP KDWDVÕQÕQ E\N VÕQÕI YHUL VÕQÕIÕ  \D]Õ
OÕPODUGD EHOLUOHQPHVLQH \|QHOLN ELU \|QWHP JHOLúWLUPLú YH EX \|QWHPL |UQHN ELU HQ
GVWUL\HO\D]ÕOÕPGDX\JXODPÕúWÕUdDOÕúPDGDNXOODQÕODQ|Ootlerin (WOC-Weight of a
Class, NOPA-Number of Public Attributes, NOAM-Number of Access Methods) tasa-
UÕP PRGHOL ]HULQH X\JXODQDELOPHVLQGHQGROD\Õ \D]DUWDPDPHQGLOGHQED÷ÕPVÕ]ELU
NDOLWH |OoP \|QWHPL JHOLúWLUGL÷LQL LOHUL VUPHNWHGLU 0DULQHVFX¶QXQ GL÷HU ELU oDOÕú
PDVÕQGD>@LVH \D]ÕOÕPWDVDUÕP KDWDODUÕGDKD IDUNOÕ|OotOHUOHWHVSLWHGLOPH\HoDOÕ
úÕOPÕúWÕUhoIDUNOÕ|Oot (WMC-Weighted Method Count, NOC-Number of Children,
TCC-Tight Class Cohesion oIDUNOÕ\D]ÕOÕPD X\JXODQPÕúYHVRQXoODU\RUXPODQPÕú
WÕU SaKUDRXL YHDUNDGDúODUÕ \DSWÕNODUÕoDOÕúPDGD>@&LOHNRGODQPÕú \D]ÕOÕPODU
GDNL SRWDQVL\HO WDVDUÕP KDWDODUÕQÕ oHúLWOL |Ootlerle (CBO-Coupling Between Object
Classes, DAC-Data Abstraction Coupling, vb.  WHVSLW HWPH\L DPDoODPÕúODUGÕU $UDú
WÕUPDODUÕNDSVDPÕQGDKDWDWHVSLWLúOHPLQLRWRPDWLNKDOHJHWLUHn ELUDUDoJHOLúWLUPLúOHU
ve böylece NXOODQÕFÕODUa WDVDUÕPKDWDODUÕQÕEXOPDLPNkQÕVD÷ODPÕúODUGÕU
    Son olarak, Jehad Al Dallal >@ WDVDUÕP DúDPDVÕQGD X\JXODQDELOHFHN \HQL ELU
uyumluluk ölçütü JHOLúWLUGL÷LQL LGGLD HWPHNWHGLU *HOLúWLULOHQ |OoW GR÷UXGDQ HWNLOH
úLPGHEXOXQDQ PHWRW-metot, veri üyesi-metot ve veri üyesi-veri üyesi çiftleri üzerin-
GHQ ELU KHVDSODPD \DSPDNWDGÕU $\UÕFD, \DSÕODQ NDUúÕODúWÕUPDODUOD bu yeni ölçütün,




                                            669
|UQHN RODUDN VHoLOHQ GL÷HU uyumluluk ölçütleriQGHQ GDKD GX\DUOÕ ROGX÷X LOHUL VUO
mektedir.


3      .$/ø7(g/dh0/(5ø

    .DOLWH|]HOOLNOHULQLQGR÷UXGDQ|OoP]RUKDWWDED]ÕGXUXPODUGDLPNkQVÕ]GÕU [22,
23]'H÷LúLN|OotOHUELUDUD\DJHWLULOHUHNNDOLWH|]HOOLNOHUL KDNNÕQGDED]ÕVD\ÕVDOGH
÷HUOHUHXODúÕOPD\DoDOÕúÕOPDNWDGÕU>@, IDNDWEXoDOÕúPDODUJHQHOGH|]QHOQLWHOLNWDúÕ
PDNWDGÕU$\UÕFDEX|OoPOHUJHQHORODUDN\D]ÕOÕPÕQJHUoHNOHPHDúDPDVÕVRQUDVÕQGD
\DSÕOPDNWDYHelde edilen VRQXoODUDJ|UHWDVDUÕPÕQGH÷LúWLULOPHVLQHKDWWDEXQDED÷OÕ
olarak gerçeklePHQLQGH÷LúWLULOPHVLQHLKWL\DoGX\XOPDNWDGÕU1H\D]ÕNNLEXWUgün-
cellemeler JHUHNSURMHWDNYLPLJHUHNVHGR÷DFDNPDOL\HWDoÕVÕQGDQKHU]DPDQPP
NQROPDPDNWDGÕU%XQGDQGROD\Õerken WDVDUÕPDúDPDVÕQGD\DSÕODQkalite ölçümleri
YHGH÷HUOHQGLUPHOHU E\N|QHPND]DQPDNWDGÕU
    %X oDOÕúPD NDSVDPÕQGD QHVQH\H \|QHOLN WDVDUÕP LoLQ WHPHO RODQ özellikler göz
|QQGHEXOXQGXUXOPXúEXözellikleri GR÷UXGDQHWNLOH\HQ|OotOHUVHoLOPLúYH\DSÕODQ
ölçümlere dayanarak ø.<0WDEDQOÕ7&3/,3WDúÕPDNDWPDQÕWDVDUÕPÕQÕQ kalite özellik-
OHUL KDNNÕQGD ED]Õ VRQXoODU oÕNDUÕOPD\D oDOÕúÕOPÕúWÕU 6HoLOHQ |OotOHUL o DQD EDúOÕN
DOWÕQGDWRSODPDN PPNQGU.DUPDúÕNOÕN|Ootleri (complexity metrics ED÷ÕPOÕOÕN
ölçütleri (coupling metrics) ve uyumluluk ölçütleri (cohesion metrics).


3.1    .DUPDúÕNOÕNÖlçütleri (Complexity Metrics):

   @ @

ņ $VÕQÕIÕQÕQLoLQGH%VÕQÕIÕFLQVLQGHQELUUHIHUDQVLúDUHWoL\DGDQHVQHYDUGÕU
ņ $VÕQÕIÕQÕQQHVQHOHUL%VÕQÕIÕQÕQQHVQHOHULQLQPHWRWODUÕQÕoD÷ÕUÕ\RUGXU
ņ $ VÕQÕIÕQÕQ ELU PHWRGX SDUDPHWUH RODUDN % VÕQÕIÕ WLSLQGHQ YHULOHU DOÕ\RUGXU \D GD
  geri döndürüyordur.
ņ $VÕQÕIÕQÕQELUPHWRGX%WLSLQGHQELU\HUHOGH÷LúNHQHVDKLSWLU

   1HVQH\H\|QHOLNNDOLWHOLELU\D]ÕOÕPGDVÕQÕIODUDUDVÕED÷ÕPOÕOÕ÷ÕQPPNQROGX÷XQ
FDGúNROPDVÕWHUFLKHGLOLU low coupling %LUVÕQÕIÕQED÷ÕPOÕOÕNVHYL\HVL\NVHOGLN
oH EX VÕQÕIÕ VLVWHPLQ PRGOHU ELU SDUoDVÕ RODUDN J|US LúOHP \DSPDN ]RUODúDFDNWÕU
%D÷ÕPOÕOÕ÷Õ \NVHN RODQ ELU VÕQÕIWDNL GH÷LúLP GL÷HU VÕQÕIODUÕ HWNLOH\HFH÷LQGHQ genel
RODUDN \D]ÕOÕPÕQ VUGUOHELOLUOL÷L GH GúN RODFDNWÕU 6LVWHPGH ED÷ÕPOÕOÕ÷Õ \NVHN
VÕQÕIODUDUWWÕNoDVÕQÕIODUÕELUELULQGHQD\UÕDQODPDN]RUODúDFDNGROD\ÕVÕyla DQODúÕODELOLU
OLN YH WHVWHGLOHELOLUOLNGHGúHFHNWLU $\UÕFD, ED÷ÕPOÕOÕ÷Õ \NVHNRODQVÕQÕIODUÕWHNUDU
kullaQPDN]RURODFD÷ÕQGDQbu VÕQÕIlarÕQ\HQLGHQNXOODQÕODELOLUOLNGH÷HULGHGúHFHNWLU
[17, 28].
   %XoDOÕúPDNDSVDPÕQGD&$/0 Class Aggregation Level Measure >@ED÷ÕPOÕ
OÕN|OotNXOODQÕOPÕúWÕU%X|Oot ELUVÕQÕIWDNLNXOODQÕFÕWDQÕPOÕ|]QLWHOLNVD\ÕVÕQÕQo
VÕQÕIWDNLWRSODP|]QLWHOLNVD\ÕVÕQDRUDQÕRODUDNKHVDSODQÕU
                                             ܷௗ
                                 ‫= ܯܮܣܥ‬                       (3)
                                             ܰௗ
                         ܷௗ .XOODQÕFÕWDQÕPOÕ|]QLWHOLNVD\ÕVÕ

                              ܰௗ 7RSODP|]QLWHOLNVD\ÕVÕ




                                                671
3.3    Uyumluluk Ölçütleri (Cohesion Metrics):
   8\XPOXOXN|OoPVÕQÕIWDNLPHWRWve veri üyelerinin NHQGLLoLQGHNLX\XPOXOX÷XQX
EHOLUWLU+HUVÕQÕIÕQWHNELUVRUXPOXOX÷XROPDOÕGÕU. (÷HUELUVÕQÕIkendi içinde birbirin-
GHQIDUNOÕYHED÷ÕPVÕ]LúOHU\DSÕ\RUVD birbiriyle ilgili olmayan veri üyeleri EDUÕQGÕUÕ
\RUVD YH\D oRN ID]OD Lú \DSÕ\RUVD VÕQÕIÕQ X\XPOXOX÷X GúNWU Kaliteli bir nesneye
\|QHOLN \D]ÕOÕPGD VÕQÕIODUÕQ NHQGL LoOHULQGHNL X\XPOXOX÷XQXQ PPNQ ROGX÷XQFD
\NVHNROPDVÕWHUFLKHGLOLU high cohesion 8\XPOXOXNDUWWÕNoDVÕQÕIÕQNHQGLLoLQGHNL
NDUDUOÕOÕ÷ÕDUWDFDNEXQGDQGROD\ÕVÕQÕIÕQVUGUOHELOLUOLNYHJYHQLOLUOLNGH÷HUOHULGH
DUWDFDNWÕU [17] $\UÕFD, X\XPOXOXN DUWWÕNoD VÕQÕI GDKD PRGOHU ELU \DSÕ\D NDYXúDFD
÷ÕQGDQWHVWHGLOHELOLUOLNGH÷HULGHDUWDFDNWÕU
   %X oDOÕúPDGD X\XPOXOXN |Ootü olarak CCOM (Class Cohesion Measure) [18]
NXOODQÕOPÕúWÕU&&20GH÷HULDúD÷ÕGDEHOLUWLOHQIRUPOLOHKHVDSODQÕU
                                          ‫ܣܣ‬ௌ஼
                               ‫= ܯܱܥܥ‬                        (4)
                                          ‫ܣܯ‬ௌ஼
‫ܣܣ‬ௌ஼ %LUVÕQÕIWDEXOXQDQKHU bir veri üyesinin RVÕQÕIÕQNDoWDQHPHWRGXWDUDIÕQGDQ
HULúLOGL÷LKHVDSODQÕUYHEXGH÷HUOHUWRSODQÕU

‫ܣܯ‬ௌ஼ %LUVÕQÕIWDEXOXQDQKHUPHWRWKHU bir veri üyesine HULúLUVH‫ܣܣ‬ௌ஼ ’nin göstere-
FH÷LGH÷HUGLU WRSODPveri üye VD\ÕVÕ[ WRSODPPHWRWVD\ÕVÕ- 1) )


4      ø.<0LOH7&3/,37$ù,0$.$70$1,7$6$5,0,YH
       .$/ø7($1$/ø=ø

    TCP/,3WDúÕPDNDWPDQÕQÕQWHPHOJ|UHYLXoWDQXFDELULPOHUDUDVÕRWXUXPODUÕ\|QHWH
UHNX\JXODPDODUDUDVÕYHULLOHWLPLQLVD÷ODPDNWÕU7DúÕPDNDWPDQÕQÕQVWQGHX\JXOD
PDNDWPDQÕDOWÕQGDLVHLQWHUQHWNDWPDQÕ\HUDOÕU7&3/,3WDúÕPDNDWPDQÕQGD7&3YH
UDP olmak ü]HUH LNL DQD SURWRNRO EXOXQXU 8'3 ED÷ODQWÕVÕ] ELU SURWRNRO ROXS YHUL
JYHQOL÷LLoHUPH]YHJHQHOOLNOHVHVYLGHRYEDNWDUÕPÕ\DSDQJHUoHN]DPDQOÕX\JX
ODPDODU WDUDIÕQGDQ WHUFLK HGLOLU 7&3 LVH ED÷ODQWÕOÕ DNÕú NRQWUROO YH JYHQLOLU ELU
protokol olup veriQLQ KHGHIH XODúÕS XODúPDGÕ÷ÕQÕ RQD\ PHNDQL]PDVÕ\OD EHOLUOH\LS
XODúPDGÕ÷ÕGXUXPGDYHULWHNUDUÕQÕJHUoHNOHúWLULU7&3GRV\DWUDQVIHULLQWHUQHWWDUD\Õ
FÕJLELND\ÕSVÕ]YHULWUDQVIHULJHUHNWLUHQX\JXODPDODUWDUDIÕQGDQWHUFLKHGLOLU
    UDP ve TCP protokolleri VÕUDVÕ\OD5)& >@YH5)&¶GH>@WDQÕPODQPÕú
WÕU%XE|OPGHø.<0 øOHWLúLP.DWPDQÕ@PRGHOLNXOODQÕODUDN
7&3,3 WDúÕPD NDWPDQÕQÕQ WDVDUÕPÕ DQODWÕOPÕú NDOLWH |OoPOHUL \DSÕODUDN |OoP VR
QXoODUÕQÕQDQDOL]L\DSÕOPÕúYHEXVRQXoODU\RUXPODQPÕúWÕU


4.1    7&3,37DúÕPD.DWPDQÕ7DVDUÕPÕ
   gQFHNL oDOÕúPDPÕ]GD >@ 7&3,3 WDúÕPD NDWPDQÕ VDGHFH VÕQÕI YH LOLúNLOHU VHYL\H
VLQGHWDVDUODQPÕúWÕ%XoDOÕúPDPÕ]GDVÕQÕIODUÕQ LoHUGL÷LGH÷LúNHQOHU metotlar ve me-




                                              672
totlarla GH÷LúNHQOHUDUDVÕQGDNLLOLúNLOHUGHWD\ODQGÕUÕODUDNGHWD\OÕELUWDVDUÕPHOGHHGLO
PLúWLU 8\JXQ NDOLWH ölçütleri VHoLOHUHN JHUoHNOHPH DúDPDVÕ EHNOHQPHGHQ NDOLWH |O
oPOHUL\DSPDNYH|OoPVRQXoODUÕQDJ|UH\D]ÕOÕPÕQNDOLWHVLKDNNÕQGDGH÷HUOHQGLUPH
yapmak mümkündür. Malik ve Chhillar [18]µÕQGDEHOLUWWL÷LJLELNRGODPD\D JHUoHN
OHPH\H EDúODPDGDQDOÕQDQJHULELOGLULP]DPDQSDUDYHLúJFPDOL\HWLQLGúUHFHN
EXQXQ\DQÕVÕUDWDVDUÕPÕQGR÷UX\|QGHLOHUOHPHVLQHNDWNÕGDEXOXQDFDNWÕU
   ø.<0PRGHOLNXOODQÕODUDNWDVDUODQDQ7&3,3WDúÕPDNDWPDQÕWRSODP DGHWVÕQÕI
ve bu VÕQÕIODUÕQELUELUOHUL\OHRODQLOLúNLOHULQGHQROXúPDNWDGÕU%XoDOÕúPDNDSVDPÕQGD
tasarlanan TCP/,3WDúÕPDNDWPDQÕQDDLW80/6ÕQÕI0RGHOLùHNLO¶GHJ|VWHULOPLúWLU.
                                                                «Interface»                                                                                                                                            «Interface»
                                             Se rv ice sProv ide dToA pplica t ionLa y e r                                                                                                            Se rv ice sUse dFrom A pplica t ionLa y e r


  sendUDPPacket(srcIP:U32,dstIP:U32,srcPort:U16,dstPort:U16,payloadPtr:U8*,payloadLength:U16):void
  subscribeToUDPSAP(port:U16,packetReceivedFunction:void(*)):void
  unsubscribeFromUDPSAP(port:U16):void                                                                                                                                            TCPSessionClosed(sessionID:U32):void
  openTCPSession(srcPort:U16,dstPort:U16,srcIP:U32,dstIP:U32,active:bool,optionsPtr:U8*,optionsLength:U16):U32                                                                    TCPPacketReceived(sessionID:U32,packetPtr:U8*,packetLength:U16):void
  closeTCPSession(sessionID:U32):U8                                                                                                                                               TCPErrorReceived(sessionID:U32,errorNo:U32):void
  sendTCPData(sessionID:U32,dataPtr:U8*,dataLength:U16,pushFlag:U8,urgentFlag:U8):U8
  readTCPData(sessionID:U32):U16
                                                                                                                                                                                                                          1
  getTCPSessionStatus(sessionID:U32):STATUS
  abortTCPSession(sessionID:U32):U8




                                                                                                                                                                                                                           UDPSAPElement

                                                                                                                                                                                                             *       port:U16
                      Tra nsport La y e rM a na ge r                                                                           UDPManager                                                                            packetReceivedFunction:void (*)




                                                                                 1       1
                                                                                                                                                                                                                                            UDPPacket
                                                                                                 initUDP():void
                                                                                                                                                                                                                     srcPort:U16
                                                                                                 resetUDP():void
                                                                                                                                                                                                                     dstPort:U16
                                                                                                 releaseUDPSaps():void
                                                                                                                                                                                                                     checkSum:U16
                                                                                                 getAppPacketReceivedFunc(port:U16):void*                                                                1                                                                                                                                                                  userOrTimeWaitTimer
                                                                                                                                                                                                                     payloadPtr:U8*
                                                                                                 unsubscribeFromSAP(port:U16):void                                                                                                                                                                                                                                                                             1
                                                                                                                                                                                                                     payloadLength:U16
                                                                                                 subscribeToSAP(port:U16,packetReceivedFunction:void (*)):void                             currentUDPPacket                                                                                                                       TCPPacket
                                                                                                                                                                                                                     packetPtr:U8 *                                                                                                                                                                    TTimer
                                                                                                 packetReceived(pktPtr:U8*,pktLength:short,srcIp:U32,dstIp:U32,tos:U8)...
                                                                                                                                                                                                                     packetLength:U32                                                                            srcPort:U16                                                1
                                                                                                 sendPacket(srcIP:U32,dstIP:U32,srcPort:U16,dstPort:U16,payloadPtr:U8...
                                                                                                                                                                                                                                                                                                                 dstPort:U16
  initLayer():void                                                                                                                                                                                                                                                                                                                                                                      start(timerType:U32,time:U32,parameter:U32
                                                                                                                                                                                                                                                                                                                 seqNumber:U32
  resetLayer():void                                                                                                                                                                                                  parsePacket(packetPtr:U8 *,packetLen:U16,srcIp:U32,ds...
                                                                                                                                                                                                                                                                                                                 ackNumber:U32                                                          stop(timerType:U32):void
  sendUDPPacket(srcIP:U32,dstIP:U32,srcPort:U16,dstPort:U16,payloadPt                                                                                                                                                constructUDPPacket(srcIP:U32,dstIP:U32,srcPort:U32,dst...
                                                                                                                                                                                                                                                                                                                 dataOffset:U8
  subscribeToUDPSAP(port:U16,packetReceivedFunction:void (*)):void                                                                                                                                                   calculateChecksum(srcIP:U32,dstIP:U32):U16
                                                                                                                                                                                                                     checkUDPChecksum(srcIP:U32,dstIP:U32):bool
                                                                                                                                                                                                                                                                                                                 controlBits:U8                                            retransmissionTimer
  unsubscribeFromUDPSAP(port:U16):void
                                                                                                                                                                                                                                                                                                                 window:U16
  openTCPSession(sessionID:U32,srcPort:U16,dstPort:U16,srcIP:U32,dstIP
                                                                                                                                                                                                                                                                                                                 checkSum:U16
  closeTCPSession(sessionID:U32):U8
                                                                                                                                                                                                                                                                                                                 urgentPtr:U16
  sendTCPData(sessionID:U32,dataPtr:U8*,dataLength:U16,pushFlag:U8,                                                                                                                                                                                                                                                                                                                            TCPOutgoingQueueElement
                                                                                                                                                                                                                                                                                                      1          optionsPtr:U8*
  getTCPSessionStatus(sessionID:U32):STATUS                                                                                                                                                                                                                                       currentTCPPacket
                                                                                                                                                                                                                                                                                                                 optionsLength:U16                                                      sendTime:U32
  abortTCPSession(sessionID:U32):U8
                                                                                                                                                                                                                                                                                                                 payloadPtr:U8*
  readTCPData(sessionID:U32):U16
                                                                                                                                TCPManager                                                                                            TCPSession              itsTCPSession                                      payloadLength:U16
  packetReceivedFuncFromIPLayer(srcIp:U32,dstIp:U32,packetPtr:U8 *,pa
                                                                                                                                                                                                                                                                                                                 packetPtr:U8 *
                                                                                                                                                                                                                      srcPort:U16                                   1                                                                                                                                                   *
                                                                                                                                                                                                                                                                                                                 packetLen:U16
                                                                                                                                                                                                                      srcIP:U32
                                                                                                                                                                                                                      dstPort:U16                                                                     1
                                                                                                                                                                                                                      dstIP:U32
                                                                                                                                                                                                                                                                                    currentTCPPacket                                                                                           TCPIncomingQueueElement
                                                                                                                                                                                                                      sessionID:U32
                                                                                                                                                                                                                                                                                                                 calculateChecksum(srcIP:U32,dstIP:U32,le...
                                                                                                 initTCP():void                                                                                                       initialSeqNumber:U32
                                                                                 1           1                                                                                                                                                                                                                   checkChecksum(srcIP:U32,dstIP:U32,pack...
                                                                                                 resetTCP():void                                                                                                      state:TCPState*=Closed
                                                                                                                                                                                                                                                                                                                 constructTCPPacket():U8 *
                                                                                                 getSession(sessionID:U32):void                                                                                       status:U32
                                                                                                                                                                                                                                                                                                                 parsePacket(packetPtr:U8 *,packetLen:U1...                                      *
                                                                                                 getSession(srcPort:U16,srcIP:U32,dstPort:U16,dstIP:U32):TCPSession*                   1                     1..*
                                                                                                 packetReceived(srcIP:U32,dstIP:U32,packetPtr:U8*,packetLength:U16,tos:U
                                                                                                 openSession(sessionID:U32,srcPort:U16,srcIP:U32,dstPort:U16,dstIP:U32):U                                                                                                                                        currentTCPPacket
                                                                                                 closeSession(sessionID:U32):U8                                                                                       resetSession():void                                                                                                  1
                                                                                                                                                                                                                                                                                                                                                                                                     TCPDataQueueManager
                                                                                                 sendPacket(sessionID:U32,dataPtr:U8*,dataLength:U16,pushFlag:U8,urgentF                                              packetReceived():void
                                                                                                 abortSession(sessionID:U32):U8                                                                                       setCurrentState(state:TCPState*):void                                                                                                                               incomingQueue:TList
                                                                                                 readData(sessionID:U32):void                                                                                         getCurrentState():TCPState*                                                                                                                                         outgoingQueue:TList
                                                                                                 getStatus(sessionID:U32):void                                                                                        sendSYN():void
                                                                                                                                                                                                                      sendACK():void
                                                                                                                                                                                                                      sendSYNACK():void                                                                                  TCPAutomaticRepeatRequest

                                                                                                                                                                                                                      sendRST():void                                                                              sendNext:U32                                                            addToQueue(queueType:U8,element:TCPIncomingQu
                                                                                                                                                                                                                      sendFIN():void                                1                                     1       receiveNext:U32                                                         removeFromQueue(queueType:U8,index:int):void
                                                                                                                                                                                                                                                                   itsTCPSession
                                                                                                                                                                                                                      sendDATA():void                                                                             inAckNo:U32                                                             moveElement(queueType:U8,sourceIndex:int,destIn
                                                                                                                                                                                                                      sendFINACK():void                                                                           inSeqNo:int                                        1                    getElementIndex(queueType:U8,element:TCPIncomin
                                                                                                                                                                                                                      userTimeout():void                                                                          outWindow:int                                                           getElement(queueType:U8,index:int):TCPIncomingQu
                                                                                                                  TCPState
                                                                                                                                                                                                                      timeWaitTimeout():void                                                                      inWindow:U32                                                            getQueueSize():int
                                                                                                                                                                                                                                                                                                                  outSeqNo:U32                                                            getQueueCount():int
                                                                                                                                                  1                                                              1                                                                                                                                                   1          1
                                                                                                                                                  itsTCPState                                  itsTCPSession                                                                                                                                                                              isQueueFull():bool
                                                                                                                                                                                                                                                                                                                                                                                          isQueueEmpty():bool
                                                                                                                                                                                                                                                                                                                  ACKReceived(ackNo:U32,windowSize:U32):void                              FlashAllQueues():void
                                                                                                  SYNReceived():void
                                                                                                  SYNACKReceived():void                                                                                                                                                                                           readData():void
                                                                                                  ACKReceived():void                                                                                                                                                                                              retransmissionTimeout(elementIndex:int):void
                                                                                                  RSTReceived():void                                                                                                                                                                                              writePacket(tcpPacketPtr:TCPPacket):void
                                                                                                  DATAReceived():void
                                                                                                  FINReceived():void
                                                                                                  FINACKReceived():void
                                                                                                  activeOpen():void                                                                                                                                                                                                                                                                                  IKYM_TCP_UDP_Package
                                                                                                  passiveOpen():void
                                                                                                  close():void
                                                                                                  abort():void
                                                                                                  timeWaitTimeout():void
                                                                                                  userTimeout():void




                                                                                                                                       1                             1                               1                                              1                    1                   1                       1                     1                   1                    1
                                                                                                                                 Closed                         Listen                         SynSent                                         Estab              LastAck             Closing                 FinWait1             FinWait2          TimeWait            CloseWait


                                                                                                                             Closed(itsTCPSession:         Listen(itsTCPSession              SynSent(itsTCPSe                                  Estab(itsTC         LastAck(itsT        Closing(itsT            FinWait1(its          FinWait2(its      TimeWait(it         CloseWait(i
                                                                                                                             activeOpen():void             activeOpen():void                 SYNReceived():vo                                  FINReceive          ACKReceive          ACKReceive              ACKReceive            FINReceive        timeWaitTim         close():void
                                                                                                                             passiveOpen():void            SYNReceived():void                SYNACKReceived(                                   close():void                                                    FINACKRec
                                                                                                                                                                                                                                                                                                               FINReceive




                                                                                                                                                                          1

                                                  «Interface»                                                                                                            «Interface»
                                       ServicesProvidedToIPLayer                                                                                            Se rv ice sUse dFrom IPLa y e r



                                                                                                                                  subscribeToIPSAP(protocolType:U8,packetReceivedFuncPtr:void(*)):void
                                                                                                                                  sendPacket(srcIP:U32,dstIP:U32,packetPtr:U8*,packetLength:U32,ipOptions:U8 *,tos:U8,
                                                                                                                                  unsubscribeFromIPSAP(protocolType:U8):void




                                                                                                 ùHNLO1. TCP/,37DúÕPD.DWPDQÕ80/6ÕQÕI Modeli


4.2                        TCP/,37DúÕPD.DWPDQÕ7DVDUÕPÕQÕQ.DOLWHgOoPOHUL
   %XoDOÕúPDNDSVDPÕQGDVHoLOHQNDOLWHölçütleri 0DOLNYH&KKLOODU>@µÕQEHOLUWWL÷L
yöntemle örnek TCP/,3WDúÕPDNDWPDQÕLoLQKHVDSODQPÕúWÕU+HUölçüt için elde edilen
|OoP VRQXoODUÕQÕQ HQ GúN HQ \NVHN ve RUWDODPD GH÷HUOHUL D\UÕ WDEORODU KDOLQGH




                                                                                                                                                                                                                     673
J|VWHULOPLúWLU (bkz. Tablo 1-4). Buna ek olarak her ölçütün VÕQÕIODUÕQ\]GHVHOGD÷Õ
OÕPÕQDJ|UHGH÷HUGH÷LúLPLGHD\UÕFDJUDILNVHORODUDNJ|VWHULOPLúWLU bkz. ùHNLOYH 
6RQUDVÕQGDLVHHOGHHGLOHQEXYHULOHUHGD\DQÕODUDNKHP|UQHN7&3/,3WDúÕPDNDWPDQÕ
WDVDUÕPÕQÕQ KHPGHø.<0PRGHOLQLQNDOLWHVLKDNNÕQGDED]ÕoÕNDUVDPDODU\DSÕOPÕúWÕU


CMCM Ölçüm Analizi.

                                Minimum            Maksimum                   Ortalama
                                     0                15                        3,96

                                       Tablo 1. CMCM gOoP6RQXoODUÕ
   Tablo 1¶GHJ|UOG÷]HUH|UQHN7&3/,3WDúÕPDNDWPDQÕWDVDUÕPÕQÕQ&0&0GH
÷HULRUWDODPDVÕoÕNPÕúWÕU%XGH÷HULQGúNoÕNPDVÕHOHDOÕQDQVÕQÕIODUÕQNDUPD
úÕNOÕNG]H\LQLQGúNJYHQLOLUOL÷LQLQ\NVHNROGX÷XQXJ|VWHUPHNWHGLU%XQXQ\DQÕ
VÕUD&0&0GH÷HULGúNRODQEXVÕQÕIODUÕQ\HQLGHQNXOODQÕODELOLUOLNGH÷HULQLQ\NVHN
ROGX÷XQXV|\OHPHNPPNQGU &0&0GH÷HULQLQ\NVHNoÕNWÕ÷ÕVÕQÕIODUEHNOHQGL÷L
JLELNDUPDúÕNOÕ÷Õ\NVHNRODQ\|QHWLFLVÕQÕIODUGÕU

                     25%                                                60%
                     20%                                                50%
       ^ŦŶŦĨйΖƐŝ




                                                           ^ŦŶŦĨйΖƐŝ




                                                                        40%
                     15%
                                                                        30%
                     10%
                                                                        20%
                     5%                                                 10%
                     0%                                                 0%
                             0 2 4 6 8 10 12 14                                0   1     2   3   4   5
                                    DD                                              /D


                           ùHNLO2. CMCM ve CICM Ölçümlerinin Yüzdesel DD÷ÕOÕPODUÕ


CICM Ölçüm Analizi.

                                Minimum            Maksimum                   Ortalama
                                     0                 2                         0,54

                                       Tablo 2. &,&0gOoP6RQXoODUÕ
   &,&0|OoPOHULQLQLVWDWLVWLNVHOGH÷HUOHUL ùHNLO¶GHJ|VWHULOPLúWLU*|UOG÷]H
UHHQGúN&,&0GH÷HULHQ\NVHN&,&0GH÷HULYHRUWDODPD&,&0GH÷HUL
oÕNPÕúWÕU@2UWDODPDGH÷HUJ|]|QQHDOÕQ
GÕ÷ÕQGDLVHVLVWHPGHNLVÕQÕIODUÕQNDUPDúÕNOÕNGH÷HUOHULQLQGúNROGX÷XDQODúÕODELOLU
lik WHNUDU NXOODQÕODELOLUOLN YH VUGUOHELOLUOLN GH÷HUOHULQLQ X\JXQ VHYL\HGH ROGX÷X
söylenebilir.


CALM Ölçüm Analizi.

                              Minimum         Maksimum                Ortalama
                                   0              1                      0,24

                                   Tablo 3. &$/0gOoP6RQXoODUÕ
   ùHNLO¶WHNL&$/0|OoPQQ\]GHVHOGD÷ÕOÕPJUDIL÷LQHEDNÕOGÕ÷ÕQGD, VÕQÕIODUÕQ
¶QQGH÷HULQHVDKLSROGX÷XJ|UOPHNWHGLU%XQDED÷OÕRODUDN7DEOR3’te gös-
terileQRUWDODPD&$/0GH÷HULROGXNoDGúNoÕNPÕúWÕUÖnceki bölümlerde DQODWÕOGÕ÷Õ
]HUH &$/0 GH÷HULQLQ GúN oÕNPDVÕ VÕQÕIODU DUDVÕQGDNL ED÷ÕPOÕOÕ÷ÕQ D] ROGX÷XQX
GROD\ÕVÕyla DQODúÕODELOLUOLNWHVWHGLOHELOLUOLNYH\HQLGHQNXOODQÕODELOLUOLNNDOLWH|]HOOLN
OHULQLQ \NVHN ROGX÷XQX J|VWHUPHNWHGLU &$/0 GH÷HULQLQ \NVHN oÕNWÕ÷Õ VÕQÕIODU
&0&0|OoWQGHROGX÷XJLELNDUPDúÕNOÕ÷Õ\NVHNRODQ\|QHWLFLVÕQÕIODUÕGÕU

                    80%                                        100%
                    70%
                                                               80%
                    60%
                                                  ^ŦŶŦĨйΖƐŝ
       ^ŦŶŦĨйΖƐŝ




                    50%                                        60%
                    40%
                                                               40%
                    30%
                    20%                                        20%
                    10%
                                                                0%
                     0%
                                                                      NA




                                                                                                       1
                                                                           0,29
                                                                                  0,47
                                                                                         0,56
                                                                                                0,62




                          0    0,4 0,7   1
                                >D                                             KD

                      ùHNLO3. CALM ve CCOM Ölçümlerinin Yüzdesel DD÷ÕOÕPODUÕ


CCOM Ölçüm Analizi.

                              Minimum         Maksimum                Ortalama
                                  0,29            1                      0,59

                                   Tablo 4. &&20gOoP6RQXoODUÕ




                                               675
    Sadece veri üyesi veya metoda sahip olan VÕQÕIODUÕQ &&20 GH÷HUOHUL WDQÕPVÕ]GÕU
(bkz. Formül 4). Örnek TCP/,3WDúÕPDNDWPDQÕWDVDUÕPÕQGD&&20|OoP \DSÕOD
PD\DQ VÕQÕI RUDQÕ  JLEL \NVHN ELU GH÷HUGLU $OW YH VW NDWPDQODUOD RODQ DUD\]
VÕQÕIODUÕLOH'XUXP7DVDUÕPùDEORQXQD>@J|UHROXúWXUXODQGXUXPVÕQÕIODUÕKHUKDQJL
bir veri üyesine VDKLSGH÷LOGLUYHEX\]GHQ&&20GH÷HUOHULWDQÕPVÕ]GÕU$\QÕúHNLO
GHWDVDUÕPGDNXOODQÕODQYHULVÕQÕIODUÕQÕQGDPHWRGXROPDGÕ÷ÕLoLQ&&20GH÷HUL|Oo
lememektedir.
    1HVQH\H GD\DOÕ ELU WDVDUÕPGD EHNOHQHQ &&20 GH÷HUL  FLYDUÕQGDGÕU 7DEOR 4’te
J|UOG÷ ]HUH |UQHN WDVDUÕPÕQ RUWDODPD &&20 GH÷HUL  oÕNPÕúWÕU. Henüz ger-
oHNOHPH DúDPDVÕQD JHOLQPH\HQ EX VLVWHPGHNL VÕQÕIODUÕQ &&20 GH÷HUOHULQH EDNÕOGÕ
÷ÕQGDEXWDVDUÕPÕQNDUDUOÕOÕ÷ÕQÕQideal seviyeye \DNÕQ>@ROGX÷XV|\OHQHELOLU%XQ
GDQGROD\Õ|OoP\DSÕODQVÕQÕIODUÕQ sürdürülebilirlik, güvenilirlik ve test edilebilirlik
kalite özelliklerinin ideal seviye\H\DNÕQROGX÷X J|]OHPOHQPLúWLU
    %XQXQ\DQÕQGD, Jehad Al Dallal [24@PHYFXWX\XPOXOXN|OoWOHULQLQNDOÕWÕPJLEL
ED]Õ DQDKWDU QHVQH\H GD\DOÕ GLO |]HOOLNOHULQL GLNNDWH DOPDGÕ÷ÕQÕ JHUoHNOHPH DúDPD
VÕQGD EHOLUOHQHFHN RODQ JHUoHN HWNLOHúLPOHUH PRWLYH ROGXNODUÕQÕ GROD\OÕ HWNLOHúLPOHUL
|OoHPHGLNOHULQLEHOLUWPLúWLU7DUDQMHHW.DXU>25] ve Heung Seok Chae [26] ise mevcut
|OoWOHULQ X\XPOXOXN |OoPOHUL LoLQ \HWHUOL ROPDGÕ÷ÕQÕ YH VRUJXODQÕU ROGXNODUÕQÕ EH
OLUWPLúWLU
    6RQXoRODUDNKHUQHNDGDUOLWHUDWUGHX\XPOXOXN|OoWOHULQHoHúLWOLHOHúWLULOHUYDUVD
GDWDVDUÕPDúDPDVÕQGDHOGHHWWL÷LPL]EXIDUNÕQGDOÕNODJHUoHNOHPHDúDPDVÕQDJHoPH
GHQ VÕQÕIODU WHNUDU EX J|]OH LQFHOHQGL 7&3,3 WDúÕPD NDWPDQÕ |]HOLQGH GH GúN
CCOM de÷HULQHVDKLSRODQTCPAutomaticRepeatRequest ve TCPSession VÕQÕIODUÕQÕQ
ELUELULQGHQED÷ÕPVÕ]LúOHYOHUL|]QHVLQGHWRSOD\DQVÕQÕIODUROGX÷XJ|]OHQGLYHEXVÕQÕI
ODUÕQE|OQPHVLQHNDUDUYHULOGL


5      Sonuç

   %XoDOÕúPDNDSVDPÕQGD7&3,3WDúÕPDNDWPDQÕ\D]ÕOÕPÕQHVQH\e yönelik bir ileti-
úLPNDWPDQÕ\D]ÕOÕPPLPDULVLRODQø.<0LOHWDVDUODQPÕúWÕUøOHWLúLPNDWPDQÕ\D]ÕOÕP
WDVDUÕPODUÕQGDø.<0NXOODQÕODUDN\D]ÕOÕPNDOLWH|]HOOLNOHULQLQVD÷ODQPDVÕYH\D]ÕOÕP
NDOLWHVLQLQ DUWWÕUÕOPDVÕ KHGHIOHQPHNWHGLU $\UÕFD WDVDUÕPGD NXOODQÕODQ ø.<0¶QLQ
QHVQH\H\|QHOLNROPDVÕKHPQHVQH\H\|QHOLNSURJUDPODPDQÕQID\GDODUÕQGDQ\DUDUOD
QÕOPDVÕQDKHPGHQHVQH\H\|QHOLNWDQÕPODQDQ\D]ÕOÕPNDOLWH|OoWOHULQLQNXOODQÕOPD
VÕQDRODQDNVD÷ODPÕúWÕU
   $\UÕFD EX oDOÕúPDGD 7&3,3 WDúÕPD NDWPDQÕ WDVDUÕPÕ X\JXQ |OoWOHUOH VÕQÕI ED
]ÕQGD JHUoHNOHPH \DSPDGDQ |OoOPú YH VRUXQOX RODELOHFHN VÕQÕIODU EHOLUOHQHUHN
WDVDUÕPÕQ HUNHQ DúDPDODUÕQGD LOJLOL L\LOHúWLUPHOHULQ \DSÕODELOHFH÷L J|VWHULOPLúWLU
7&3,3 WDúÕPD NDWPDQÕQÕQ VÕQÕI ED]ÕQGDNL NDOLWH |OoP VRQXoODUÕQÕQ NDbul edilebilir
VHYL\HQLQ VWQGH oÕNPDVÕ YH \D]ÕOÕPÕQ J|UHFH NÕVD VUHGH WDVDUODQDELOPLú ROPDVÕ
ø.<0¶QLQEDúDUÕOÕELUQHVQH\H\|QHOLN\D]ÕOÕPPLPDULVLROGX÷XQXJ|VWHUPLúWLU So-
QXoODUø.<0¶nin WHVWHGLOHELOLUVUGUOHELOLU\HQLGHQNXOODQÕODELOLUDQODúÕODELOLUYH
JYHQLOLUROGX÷XQDGDLúDUHWHWPHNWHGLU%X|]HOOLNOHUHø.<0NXOODQÕODQGL÷HUSURWR
NRO WDVDUÕPODUÕQÕQ GD VDKLS RODFD÷Õ GúQOHELOLU 6RQ RODUDN \D]ÕOÕP WDVDUÕPÕQda




                                             676
ø.<0 NXOODQÕPÕQÕQ \D]ÕOÕP JHOLúWLUPH PDOL\HWOHULQL E\N RUDQGD GúUPHVL EHN
lenmektedir.



6       Kaynakça
 1. David Garlan, “Software Architecture: a Roadmap”, Conference on The Future of Softwa-
    re Engineering (ICSE ’00), pp. 91-101, 2000
 2. David Garlan and Mary Shaw, “An Introduction to Software Architecture”, Technical Re-
    port, January 1994
 3. International Standards Organization: Information Technology - Software Product Quality
    - Part 1: Quality Model, ISO/IEC FDIS 9126-1
 4. Francisca Losavio and Ledis Chirinos, Nicole Lévy and Amar Ramdane-Cherif, France
    “Quality Characteristics for Software Architecture” in Journal of Object Technology, vol.
    2, no. 2, March-April 2003, pp. 133-150.
 5. Mawal Ali and Mahmoud O. Elish, “A Comparative Literature Survey of Design Patterns
    Impact on Software Quality”, International Conference of Information Science and Appli-
    cations (ICISA), June 2013
 6. Brian Huston, “The Effects of Design Pattern Application on Metric Scores”, The Journal
    of Systems and Software, 2001, pp. 261-269
 7. ø .DUDDVODQ 7 $IDFDQ ( 'HPLUFDQ g %DúRO DQG ( =DLP ³øOHWLúLP .DWPDQÕ