Büyük Veri ve Analitik: İş Kararlarını Nasıl Dönüştürüyor?
Teknoloji
- •
- 02 Dakika Okuma Süresi
Yazılım Kalite Güvencesi: Kaliteli Yazılımın Temelleri ve Nesneye Dayalı Tasarım
1960’lardan itibaren yazılıma artan talepler karşısında değişik çözümler uygulandıysa da yeterli üretim kapasitesine ulaşılamadı. Bu yetersizlik, “Yazılım Krizi” söylemiyle dünya literatüründe yerini aldı. Aynı zamanda yazılım projelerinde başarısızlık bu krizi destekler nitelikte devam etti.
Büyük yazılımlara mühendislik yaklaşımı zorunlu hale geldi. Mühendislik süreçleri yapılan iş için ölçme, değerlendirmeye ihtiyacı vardır.
Yazılım ürünü oluşturulurken yapılarına ölçmeler yapılabilir.
Aynı zamanda yazılım test edilmesi ile yazılım kalitesi farklı konulardır. Yazılım yaşam döngüsünde kalite ile test farklı yerlerde kullanılır.
Yazılım mühendisliği diğer mühendisliklerden farklıdır:
Yazılım firmaları, gereksinimleri karşılamak ve pazar payına sahip olabilmek için kaliteye gerek duyar.
Yazılımın müşterileri, ihtiyaç duyduğu yazılımı almak istediği zaman kaliteye ölçmeye ihtiyaç duyar karşılaştırma yapabilmek için.
Kaliteyi baştan sağlamanın maliyeti sonradan sağlama çalışılmasının maliyetinden daha azdır.
Yazılım projesinin toplam maliyetinin %10 gibi bir oranı tasarımın uygulanmasına gitmektedir. Tasarım aşamasında yapılan hataların bakım aşamasında giderilmesi projenin maliyetinin %80 gibi bir oranını oluşturmaktadır.
Nesneye dayalı tasarım kullanılarak hedeflenen sonuçlar: Esneklik, kolay genişletibilme, anlaşılırlık,bakım
Nesneye dayalı ürünler yapılsada bu yukarıda bahsedilen sonuçlardan çok uzaktalar burada düşük kaliteli ürünler ortaya çıkmaktadır.
Kaliteli bir yazılım çıkarmak için nesneye dayaları tasarımın prensiplerini baz alarak ve onları uygulayarak bir çalışma sergilemek gerekir. Bu prensipler ve kaliteye odaklı çalışmalara yapıldıkça sorunlar en aza inecektir.
Gerçek yapıların soyut modelleri oluşturulur. Bu gerçek varlıkların yazılımda soyutlanan kısımda kullanılan özellikler ve yapacağı işlemler belirtilir.
Gerçek dünyadan soyutladığımız soyut modeller kendi için barındıran özelliklerini kendine ait birimin içine konulur diğer birimleri ilgilendiren kısımları ise açık (public) olarak tanımlanırken özelliğin iç yapısı dış kısımlara açılmaz.
Sınıflar arasında genel ilişki oluşturur. Alt-üst ilişki oluşturulduktan sonra sınıflar içinde üstte bulunanın özelliklerini ortak olarak kullanmayı amaçlamaktadır.
Aynı arayüze sahip nesneler yazılımın çalışması için birbirlerinin yerine geçebilme imkanı vardır. İhtiyaç olan durumda uygun olan nesne harekete geçer ve ilgili hizmetin yerine geçer. Hizmeti alan bunun farkında olmak zorunda değildir.
Nesne dayalı yazılımın kalitesi sezgiseldir somut kuralları yoktur. Yıllar geçtikçe deneyimle sabit prensipler geliştirilmiştir. Bundan dolayı kaliteli bir nesneye dayaları tasarımın özellikleri:
Bir sınıftaki değişiklik diğer kısımları etkilememeli. Bu sınıflar birbirinden bağımsız olarak iletişim kurabilmeli. Bağımlılık modülerlik, anlaşırlık, sınama kolaylığı gibi nitelikleri etkilemektedir.
Sınıf belirli bir amaç için oluşturulmalı hedefe uygun olarak tasarlanmalı. Burada oluşturulan özellikler birbirleri ile uyumlu alakalı olmalı. Burada uyumun etkilediği nitelikler ise tekrar kullanılabilirlik, modülerlik, anlaşırlık gibi niteliklerdir.
Bir sınıf gerçek dünyada tek bir gerçek nesneyi karşılamalı farklı anlamı olmamalı. Bir metot bir iş yapmalı ve davranışlar aynı yerde olmalı.
Burada diğer niteliklere göre oluşturulursa karmaşıklık en aza inmiş olur. Karmaşıklığı etkilediği nitelikler ise anlaşırlık, bakım kolaylığı, güvenirlik, sınama kolaylığı gibi niteliklerdir.
Gerçek dünyaya uygun bir şekilde tasarlanmalı. Soyutlama yaparken gerçek dünyadaki nesne uygun sınıflar içinde bölünmeli. Sınıflar arasında ilişkiler hizmet alışverişi alakalı olmalı. Sınıflar arası kalıtım hiyerarşisi uygun olmalıdır.
Nesneye dayalı tasarımın bazı kalıpları: