{edogan, tafacan, obasol, edemircan, ikaraaslan, ezaim}@aselsan.com.tr Özet. / em mimari sürdürülebilirlik, test edilebilirlik,, ve güvenilirlik kalite Anahtar Kelimeler: Kalite Ölç özellikleri Sist risi ise, ya önünde tut []. ve yen [2, olarak etkilerler. Bundan mimari kararlar l yan ler sürdürülebilirlik, test edilebilirlik,, ik ve güvenilirliktir. 667
- - yolu ise, tasa-, son ürün,, (TCP ve UDP) / sürdürülebilirlik, test edilebilirlik, yeni- güvenilirlik Sonuç e tasa- ve 3. bölümde kalite ölçüt 4 ile TCP/IP t k / delin. 668
2 kalite ölçüm ölçüt t Class Definition Entropy), RFC (Response For a Class) ve WMC (Weighted Methods per Class Data Abstraction Coupling) ve RFC (Response For a Class); uyumluluk için ise LCOM (Lack of Cohesion in Methods) ve TCC (Tight Class Cohesion) ölçüt, uygulanan ve olabilecek alanlar Marinescu [] ise iyi bilinen iki tlerin (WOC-Weight of a Class, NOPA-Number of Public Attributes, NOAM-Number of Access Methods) tasa- t t (WMC-Weighted Method Count, NOC-Number of Children, TCC-Tight Class Cohesion Sa tlerle (CBO-Coupling Between Object Classes, DAC-Data Abstraction Coupling, vb. n ve böylece a Son olarak, Jehad Al Dallal uyumluluk ölçütü -metot, veri üyesi-metot ve veri üyesi-veri üyesi çiftleri üzerin-, bu yeni ölçütün, 669
uyumluluk ölçütleri mektedir. 3 [22, 23] t, elde edilen olarak gerçekle güncellemeler erken kalite ölçümleri özellikler göz özellikleri t ölçümlere dayanarak / kalite özellik- t tleri (complexity metrics ölçütleri (coupling metrics) ve uyumluluk ölçütleri (cohesion metrics). 3. Ölçütleri (Complexity Metrics):, yeniden kullanabilmek tü seçmek oldukça zordur. B Malik ve Chhillar [8] referans al ölçütler kullan : CMCM (Class Member Complexity Measure öznitelik sa-, CMCM ye- de [7, 27]. = + () 670
CICM (Class Inheritance Complexity Measure inheritance) yoluyla t : 0, =0 = + (2), = nebilir, Bununla beraber, [7, 28]. 3.2 Ölçütleri (Coupling Metrics) geri döndürüyordur. low coupling genel yla, kulla bu lar [7, 28]. Class Aggregation Level Measure t t o = (3) 67
3.3 Uyumluluk Ölçütleri (Cohesion Metrics): ve veri üyelerinin. kendi içinde birbirin- birbiriyle ilgili olmayan veri üyeleri Kaliteli bir nesneye high cohesion [7], tü olarak CCOM (Class Cohesion Measure) [8] = (4) bir veri üyesinin bir veri üyesine nin göstere- veri üye - ) ) 4 / TCP/ / UDP olmak ü protokol olup veri UDP ve TCP protokolleri 4. metotlar ve me- 672
«Interface» «Interface» «Interface» «Interface» totlarla ölçütleri yapmak mümkündür. Malik ve Chhillar [8] ve bu tasarlanan TCP/. Serv icesprov idedtoa pplicationlay er Serv icesusedfrom A pplicationlay er sendudppacket(srcip:u32,dstip:u32,srcport:u6,dstport:u6,payloadptr:u8*,payloadlength:u6):void subscribetoudpsap(port:u6,packetreceivedfunction:void(*)):void unsubscribefromudpsap(port:u6):void opentcpsession(srcport:u6,dstport:u6,srcip:u32,dstip:u32,active:bool,optionsptr:u8*,optionslength:u6):u32 closetcpsession(sessionid:u32):u8 sendtcpdata(sessionid:u32,dataptr:u8*,datalength:u6,pushflag:u8,urgentflag:u8):u8 readtcpdata(sessionid:u32):u6 gettcpsessionstatus(sessionid:u32):status aborttcpsession(sessionid:u32):u8 TCPSessionClosed(sessionID:U32):void TCPPacketReceived(sessionID:U32,packetPtr:U8*,packetLength:U6):void TCPErrorReceived(sessionID:U32,errorNo:U32):void UDPSAPElement * port:u6 TransportLay erm anager UDPManager packetreceivedfunction:void (*) initlayer():void resetlayer():void sendudppacket(srcip:u32,dstip:u32,srcport:u6,dstport:u6,payloadpt subscribetoudpsap(port:u6,packetreceivedfunction:void (*)):void unsubscribefromudpsap(port:u6):void opentcpsession(sessionid:u32,srcport:u6,dstport:u6,srcip:u32,dstip closetcpsession(sessionid:u32):u8 sendtcpdata(sessionid:u32,dataptr:u8*,datalength:u6,pushflag:u8, gettcpsessionstatus(sessionid:u32):status aborttcpsession(sessionid:u32):u8 readtcpdata(sessionid:u32):u6 packetreceivedfuncfromiplayer(srcip:u32,dstip:u32,packetptr:u8 *,pa initudp():void resetudp():void releaseudpsaps():void getapppacketreceivedfunc(port:u6):void* unsubscribefromsap(port:u6):void subscribetosap(port:u6,packetreceivedfunction:void (*)):void packetreceived(pktptr:u8*,pktlength:short,srcip:u32,dstip:u32,tos:u8)... sendpacket(srcip:u32,dstip:u32,srcport:u6,dstport:u6,payloadptr:u8... TCPManager currentudppacket inittcp():void resettcp():void getsession(sessionid:u32):void getsession(srcport:u6,srcip:u32,dstport:u6,dstip:u32):tcpsession*..* packetreceived(srcip:u32,dstip:u32,packetptr:u8*,packetlength:u6,tos:u opensession(sessionid:u32,srcport:u6,srcip:u32,dstport:u6,dstip:u32):u closesession(sessionid:u32):u8 sendpacket(sessionid:u32,dataptr:u8*,datalength:u6,pushflag:u8,urgentf abortsession(sessionid:u32):u8 readdata(sessionid:u32):void getstatus(sessionid:u32):void TCPState SYNReceived():void SYNACKReceived():void ACKReceived():void RSTReceived():void DATAReceived():void FINReceived():void FINACKReceived():void activeopen():void passiveopen():void close():void abort():void timewaittimeout():void usertimeout():void itstcpstate itstcpsession UDPPacket srcport:u6 dstport:u6 checksum:u6 payloadptr:u8* payloadlength:u6 packetptr:u8 * packetlength:u32 parsepacket(packetptr:u8 *,packetlen:u6,srcip:u32,ds... constructudppacket(srcip:u32,dstip:u32,srcport:u32,dst... calculatechecksum(srcip:u32,dstip:u32):u6 checkudpchecksum(srcip:u32,dstip:u32):bool TCPSession srcport:u6 srcip:u32 dstport:u6 dstip:u32 sessionid:u32 initialseqnumber:u32 state:tcpstate*=closed status:u32 resetsession():void packetreceived():void setcurrentstate(state:tcpstate*):void getcurrentstate():tcpstate* sendsyn():void sendack():void sendsynack():void sendrst():void sendfin():void senddata():void sendfinack():void usertimeout():void timewaittimeout():void itstcpsession currenttcppacket currenttcppacket itstcpsession userortimewaittimer TCPPacket TTimer srcport:u6 dstport:u6 seqnumber:u32 start(timertype:u32,time:u32,parameter:u32 acknumber:u32 stop(timertype:u32):void dataoffset:u8 controlbits:u8 retransmissiontimer window:u6 checksum:u6 urgentptr:u6 TCPOutgoingQueueElement optionsptr:u8* optionslength:u6 sendtime:u32 payloadptr:u8* payloadlength:u6 packetptr:u8 * packetlen:u6 * TCPIncomingQueueElement calculatechecksum(srcip:u32,dstip:u32,le... checkchecksum(srcip:u32,dstip:u32,pack... constructtcppacket():u8 * parsepacket(packetptr:u8 *,packetlen:u... * currenttcppacket TCPDataQueueManager incomingqueue:tlist<tcpincomingqueueelement*> outgoingqueue:tlist<tcpoutgoingqueueelement*> TCPAutomaticRepeatRequest sendnext:u32 addtoqueue(queuetype:u8,element:tcpincomingqu receivenext:u32 removefromqueue(queuetype:u8,index:int):void inackno:u32 moveelement(queuetype:u8,sourceindex:int,destin inseqno:int getelementindex(queuetype:u8,element:tcpincomin outwindow:int getelement(queuetype:u8,index:int):tcpincomingqu inwindow:u32 getqueuesize():int outseqno:u32 getqueuecount():int isqueuefull():bool isqueueempty():bool ACKReceived(ackNo:U32,windowSize:U32):void FlashAllQueues():void readdata():void retransmissiontimeout(elementindex:int):void writepacket(tcppacketptr:tcppacket):void IKYM_TCP_UDP_Package Closed Listen SynSent Estab LastAck Closing FinWait FinWait2 TimeWait CloseWait Closed(itsTCPSession: activeopen():void passiveopen():void Listen(itsTCPSession activeopen():void SYNReceived():void SynSent(itsTCPSe SYNReceived():vo SYNACKReceived( Estab(itsTC FINReceive close():void LastAck(itsT ACKReceive Closing(itsT ACKReceive FinWait(its ACKReceive FINACKRec FinWait2(its FINReceive TimeWait(it timewaittim CloseWait(i close():void FINReceive ServicesProvidedToIPLayer Serv icesusedfrom IPLay er subscribetoipsap(protocoltype:u8,packetreceivedfuncptr:void(*)):void sendpacket(srcip:u32,dstip:u32,packetptr:u8*,packetlength:u32,ipoptions:u8 *,tos:u8, unsubscribefromipsap(protocoltype:u8):void. TCP/ Modeli 4.2 TCP/ ölçütleri yöntemle örnek TCP/ ölçüt için elde edilen ve 673
(bkz. Tablo -4). Buna ek olarak her ölçütün bkz. / CMCM Ölçüm Analizi. Minimum Maksimum Ortalama 0 5 3,96 Tablo. CMCM Tablo / 25% 60% 20% 5% 0% 5% 50% 40% 30% 20% 0% 0% 0 2 4 6 8 0 2 4 0% 0 2 3 4 5 2. CMCM ve CICM Ölçümlerinin Yüzdesel D CICM Ölçüm Analizi. Minimum Maksimum Ortalama 0 2 0,54 Tablo 2. 674
lik söylenebilir. CALM Ölçüm Analizi. Minimum Maksimum Ortalama 0 0,24 Tablo 3., 3 te gösterile Önceki bölümlerde yla 80% 70% 60% 50% 40% 30% 20% 0% 0% 0 0,4 0,7 00% 80% 60% 40% 20% 0% NA 0,29 0,47 0,56 0,62 3. CALM ve CCOM Ölçümlerinin Yüzdesel D CCOM Ölçüm Analizi. Minimum Maksimum Ortalama 0,29 0,59 Tablo 4. 675
Sadece veri üyesi veya metoda sahip olan (bkz. Formül 4). Örnek TCP/ bir veri üyesine lememektedir. 4 te. Henüz ger- ideal seviyeye sürdürülebilirlik, güvenilirlik ve test edilebilirlik kalite özelliklerinin ideal seviye, Jehad Al Dallal [24 25] ve Heung Seok Chae [26] ise mevcut CCOM de TCPAutomaticRepeatRequest ve TCPSession 5 Sonuç e yönelik bir ileti- bul edilebilir So- nin da 676
lenmektedir. 6 Kaynakça. David Garlan, Software Architecture: a Roadmap, Conference on The Future of Software Engineering (ICSE 00), pp. 9-0, 2000 2. David Garlan and Mary Shaw, An Introduction to Software Architecture, Technical Report, January 994 3. International Standards Organization: Information Technology - Software Product Quality - Part : Quality Model, ISO/IEC FDIS 926-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. 33-50. 5. Mawal Ali and Mahmoud O. Elish, A Comparative Literature Survey of Design Patterns Impact on Software Quality, International Conference of Information Science and Applications (ICISA), June 203 6. Brian Huston, The Effects of Design Pattern Application on Metric Scores, The Journal of Systems and Software, 200, pp. 26-269 7. Mimarisi Communication Layer Software Architecture Sempozyumu 203 8. Ladan Tahvildari and Kostas Kontogiannis, A Metric-Based Approach to Enhance Design Quality Through Meta-Pattern Transformations, Conference On Software Maintenance And Reengineering (CSMR 03), March 2003, pp. 83-92 9. Ladan Tahvildari and Kostas Kontogiannis, A Software Transformation Framework for Quality-Driven Object-Oriented Re-Engineering, International Conference on Software Maintenance (ICSM 02), 2002 0. M. Salehie, S. Li and L. Tahvildari, A Metric-Based Heuristic Framework to Detect Object-Oriented Design Flaws, Conference on Program Comprehension (ICPC 06), 2006. Radu Marinescu, Detecting Design Flaws via Metrics in Object-Oriented Systems, Conf. and Exhibition on Technology of Object-Oriented Languages and Systems (TOOLS 0), 200 2. Radu Marinescu, Using Object-Oriented Metrics for Automatic Design Flaws Detection in Large Scale Systems, Object-Oriented Technology Ecoop 98, 998 3. Houari A. Sahraoui, Robert Godin and Thierry Miceli, Can Metrics Help to Bridge the Gap Between the Improvement of 00 Design Quality and Its Automation?, International Conference on Software Maintenance, 2000, pp.54-62 4. -bergi.com/2008/eylul/yeniden- Kullanim-Software-Reuse, Last date accessed: April 204 5. Tuna Türk, The Effect of Software Design Patterns on Object-Oriented Software Quality and Maintainability, A thesis submitted to the Graduate School of Natural and Applied Sciences of METU, September 2009 6. U. Erdemir, U. Tekin, F. Buzluca, si, 677
7. Nurdan Canbaz ve Feza Buzluca,, 4. - 8. Nisha Malik and Rajender Singh Chhillar, New Design Metrics for Complexity Estimation in Object Oriented Systems, International Journal on Computer Science and Engineering (IJCSE), Vol. 3 No. 0, pp.3367-3382, October 20 9. J. Postel, User Datagram Protocol, RFC768, 28 August 980 20. Information Sciences Institute University of Southern California, Transmission Control Protocol, RFC 793, September 98 2. E. Gamma, R. Helm, R. Johnson and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addson Wesley, 995 22. Barbara Kitchenham and Shari Lawrence Pfleeger, Software Quality: The Elusive Target, IEEE Software, pages 2-2, 996. 23. Linda H. Rosenberg and Lawrence E. Hyatt, A Software Quality Model and Metrics for Identifying Project Risks and Assessing Software Quality, 8th Annual Software Technology Conference Utah, April 996 24. Jehad Al Dallal, A Design-Based Cohesion Metric for Object-Oriented Classes, World Academy of Science, Engineering and Technology, Vol:, No:0, 2007 25. Taranjeet Kaur and Rupinder Kaur, Comparison of Various Lacks of Cohesion Metrics, International Journal of Engineering and Advanced Technology (IJEAT) ISSN: 2249 8958, Volume-2, Issue-3, February 203 26. Heung Seok Chae and Yong Rae Kwon, A Cohesion Measure for Classes in Object- Oriented Systems, Software Practice and Experience, 200 27. Ladan Tahvildari, Assessing the Impact of Using Design-pattern-based Systems, A thesis submitted to the University of Waterloo, 999 28. Ladan Tahvildari and Kostas Kontogiannis, Improving design quality using meta-pattern transformations: a metric-based approach, Journal of Software Maintenance and Evolution, 6: 33-36, 2004 678