Nesne Tabanlı Yazılım Geliştirme Bora Güngören Portakal Teknoloji EMO Ankara Şubesi
2 Kural Motorları Tasarı m Sınama Yazılım Gerçek leme Çözüm leme Ürün ve Bakım Süreci Geleneksel (doğrusal) yazılım geliştirme süreci varsayımı:
3 Nesne Tabanlı Yazılım Geliştirme Nesne tabanlı yazılım geliştirme sadece programlama etkinliğinin nesne tabanlı biçimde gerçeklenmesi değildir. –Sadece C++, Java, C# gibi bir dilin kullanılması projeyi veya üretilen yazılımı nesne tabanlı yapmaz. –Geleneksel süreç tanımındaki her bir ana etkinliğin kendi içinde nesne tabanlı yaklaşımla sürdürülmesi gereklidir. –Bunun dışında her bir ana etkinliğin aralarındaki ilişkilerin de nesne tabanlı biçimde iletişim kurmasını bekleriz. Bunun sağlanması kendiliğinden olmaz. O zaman asgari beklenti olarak bu dört etkinliğin nasıl nesne tabanlı olacağını görmek gerekli.
4 Nesne Tabanlı Yazılım Geliştirme Nesne Tabanlı Çözümleme Nesne Tabanlı Tasarım Nesne Tabanlı Yazılım Gerçekleme (Programlama?) Nesne Tabanlı Sınama (Test)
5 Nesne Tabanlı Çözümleme Çözümleme bir uygulamanın kullanılacağı iş alanı (business domain) içinde yaratacağı faydadan başlayarak, bazı soruları yanıtlama işidir. –Kim –Ne(yi) –Nerede –Ne zaman –Neden –Nasıl –(Yaptı?) Çözümlemenin nesne tabanlı yapılması bu soruların nesneler üzerinden yanıtlanması işidir.
6 Nesne Tabanlı Çözümleme Bu durumda –Kim sorusunun yanıtı olan kullanıcılar, onların görevleri ve yetkileri (rolleri?) birer nesne olarak modellenmelidir. –Ne sorusunun yanıtı olan işler, sıklıkla bir diğer nesnenin işleteceği bileşenler (olaylar, görevler, vs) olarak modellenmelidir. –Nerede sorusunun yanıtı olan iş kapsamları nesnelerin tanımlı durumlarına katkıda bulunacaktır.
7 Nesne Tabanlı Çözümleme Bu durumda –Ne zaman sorusunun yanıtı olan zaman bilgilerini nesne tabanlı modellemek oldukça zor bir iştir. –Neden sorusunun yanıtı olan amaçlar, iş süreçlerinin ayrılmasında (kulvarların oluşturulması) kullanılır. –Nasıl sorusunun yanıtı olan iş detayları kullanım durumu (use case) belgeleri ve ayrıca yasal dokümanlar, tüzükler gibi yardımcı belgelere dağıtılıp doğrulanmalıdır.
8 Nesne Tabanlı Tasarım Yazılımın mimari tasarımı problemi kendi başına büyük bir problemdir. Burada detay tasarımı tartışacağız. Nesne tabanlı (detay) tasarım asıl olarak çözümleme sırasında elde edilen iş modelini (business model) temel alır.
9 Nesne Tabanlı Tasarım Bu modelin gerçeklenmesi için eldeki kuramsal model ile uygulamada kullanılacak olan model arasında bir geçiş yaşanır. –Bazı iş modelleri birebir aktarılamaz. –Kullanılacak teknolojiler seçilmiş olabilir. Bu teknolojilerin kullanımı için modelde değişiklikler olabilir. –Performans, güvenlik gibi ek kriterler devreye girer. Bu da iş modelinin aktarımına etki eder. Nihayetinde programı yazacak olan kişilerin anlayacağı bir tasarım oluşur.
10 Nesne Tabanlı Yazılım Gerçekleme (Programlama?) Nesne tabanlı yazılım gerçekleme sadece programlama etkinliğinden ibaret değildir. –Yazılımın detay tasarımına sadık kalınarak kodların yazılması işi aslında belli ara birimlerin uygulanması ve her bir uygulamada belirlenmiş iş kurallarına dair algoritmaların gerçeklenmesidir. –Ancak bu sırada bu tasarımın ve iş kurallarının sabit kalacağını varsayamayız. –Bu durumda sürümleme, bütünleştirme ve bunun sürekli hale getirilmesi işi önem kazanır. Yapılandırmanın yönetimi bazı projelerde program yazmadan daha çok zaman alır.
11 Nesne Tabanlı Yazılım Gerçekleme (Programlama?) Bu noktada kodların ve değişikliklerin çok dikkatli biçimde belgelenmesi gerekir. –Bir değişiklikle ilgili belgeye kolayca erişilebilmesi için belgelerin de paralel bir yapıda yönetilmesi zorunludur. Belge yönetimini yazılım gerçekleme ana etkinliğinden soyutlamak kolayca yapılabilecek bir hatadır. –Bu hata yapılırsa belgeler ve projedeki kodlar arasındaki ilişki kopar. –Bu durumda projenin süreç içindeki yazılım bakımı zorlaşır. Teslimat sonrası bakım için ise belgeleme sıklıkla yetersiz kalır. Nesne tabanlı yaklaşım bakım problemini de ele alır. –Hatta bazen en öne alır.
12 Nesne Tabanlı Sınama (Test) Sınama (test) etkinliğinin nesne tabanlı gerçekleştirilmesi, kod seviyesindeki hataların saptanması için zorunludur. –Nesne testi, ara birim test, paket testi gibi kavramların katı biçimde uygulanması gerekir. Bununla birlikte, daha büyük ölçekli veya dışsal gözüken testlerin de, nesne tabanlı yapıdan yararlanacak biçimde kurgulanması mümkündür. –Testler sırasında elde edilen hataların ilgili nesnelere kadar götürülebilmesi için gerekli yaklaşımlar hem testlerde hem de test edilen kodlarda kullanılmalıdır. –Testlerin çoğunun da yine nesne tabanlı olarak tasarlanması ve yazılması önemli faydalar sağlayacaktır. s
13 Sorular?