İlgiye yönelik yaklaşımla yazılım geliştirme
Software development with aspect oriented approach
Yazar: OYTUN KURTAR
Danışman: PROF.DR. OYA KALIPSIZ
Yıldız Teknik Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı
Derece: Yüksek Lisans, 2007
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control
Dizin: Yazılım geliştirme = Software development

Özet:
Nesneye Yönelik Programlama (NYP), yazılım mühendisligi için önemli bir dönümnoktasıdır. Çünkü NYP, günlük yasantımızda karsılastıgımız problem çözme mantıgınabenzer olarak, problemleri nesne modeli olarak ele alabilmemizi saglayan birprogramlama mekanizması sunar. Fakat NYP teknikleri, yazılım sistemlerindeki artanihtiyaçlar ve karmasıklasan problemler karsısında bazı gereksinimleri karsılamaktayetersiz kalmaya baslamıstır.Bu çalısmada NYP tekniklerinin eksik kaldıkları yerlerde kullanılabilecek yeni teknikleriiçeren bir programlama yaklasımı üzerinde durulacaktır. Bu yeni yaklasım lgiye YönelikProgramlama (YP) adı ile anılmaktadır. YP ile birlikte yazılım dünyasına yeni terimlereklenmistir. En önemli kullanım alanı sistem islevleri ile aynı anda çalısması gereken vesürekli tekrarlanmak durumunda olan kod bloklarının ayrıstırılması ve bunların özelyapılar ile uygulamaya eklenmesidir. Sistem islevleri ile çakısan islevlere ?enine kesenilgi?, bunların ayrıstırılmasından olusan yeni yapılara ise ?ilgi? adı verilmektedir.Çalısma süresince, bazı tasarımların neden gerçek kod içerisinde uygulanmasının zoroldugu ve karmasıklıga neden oldugu incelenmis ve bunu gidermek için kullanılan lgiyeYönelik Programlama (YP) teknikleri üzerinde durulmustur. Bu programlamayaklasımında yeni bir sınıf tipi olan ilgiler kullanılarak karmasıklıktan uzak, yenidenkullanılabilir ve bakımı kolay programlar gelistirilmesi hedeflenmektedir. Yine, çalısmasüresince YP teknikleri ve getirdikleri yenilikler üzerinde durulmus, yazılım dünyasındagetirdikleri kurallar birçok problemin çözümünde kullanılan tasarım kalıplarının YPkullanım alanlarına deginilmis, performansları açısından YP araçlarınınkarsılastırılmaları yapılmıstır. Gelistirilen örnek bir uygulamada çalısma süresinceanlatılan tasarım ve gelistirme adımları izlenmis ve sonuçlar belirtilmistir.Anahtar kelimeler: lgiye Yönelik Program Gelistirme (YPG), Enine Kesen lgiler,UML, GOF Tasarım Kalıpları, YP araç ve çatıları

Abstract:
Object Oriented Programming (OOP) is a very important milestone in SoftwareEngineering, since it provides a programming mechanism to handle problems as anobject model , similar to our daily life problem solving mechanism. But in some cases,OOP techniques remain insufficient due to increasing needs and the complexity of thesoftware systems.In this work, insufficient parts of the OOP techniques will be discussed and the approachcalled Aspect Oriented Programming (AOP) will be introduced. There are many termsspecific to AOP introduced in software world. Fundamental usage area of AOPprogramming technique is preventing the code tangling because of the system basedconcerns overlapping the main functionality of the system and the unnecessary repeatingcode blocks. The term used to describe the system based concerns overlapping the mainfunctionality of the system is known as a ?crosscutting concern?. Modularization of thecrosscutting concerns requires new special classes to be written to add new functionalityto the system. These special classes are also called aspects.During this work, reasons of difficulty of applying some design types in actual codeand reasons of the results in complexity is examined, and focused on the AOP techniquesto overcome these problems. This programming approach provides a system having lesscomplexity, reusable parts and easy to maintain, using a specific type also thefundamental of AOP called aspect. Design patterns which provide solutions to manyindividiual software problems and different AOP approaches were examined andcompared with respect to their performance criterias. The design and development stepsare followed with a tutorial and results were discussed.Keywords: Aspect Oriented Software Development (AOSD), Crosscutting Concerns,UML, GOF Design Patterns, different AOP tools and frameworks