Affet bizi SOA seni yanlış anladık

Geçenlerde danışman olarak bulunduğum bir firmada kısa bir Desing Patterns,Principles sunumu yapıyordum. Sunumun asıl sebebi geliştirilen büyük çaplı Java projesinde sınıflarında ortalama  20.000, 30.000 satırlardan oluşan gerçekten büyük sınıflar olmasıydı.Ve sınıflar neredeyse sadece statik metodlardan oluşuyordu. Şuana kadar çalıştığım projelerde en fazla 5000’i görmüştüm orda 30.000 satırı görünce artık 5000,10.000 satır kod içeren sınıflara küçük sınıf gözüyle bakmaya başladım diyebilirim :)

Hal böyle olunca bu konuda firmaya bu sayının çok büyük bir rakam olduğunu başlarının ağrımaması için düşürülmesinin iyi olacağını belirttik. Onlarda bizden neler yapılabilir bunun hakkında bir sunum yapmamızı istediler. Bende büyük sınıfların düşmanı olan Design Patterns, S.O.L.I.D Principles konularını uygulamalı olarak anlatan bir sunum yaptım.Sunumdan sonra birkaç ilginç diyalog yaşadım o yüzden sizlerlede paylaşmak istedim.

Yazılımcı arkadaşlardan birkaç tanesi projelerinin Service Oriented olduğunu bu yüzden benim anlattığım bu tarz problemleri önleyecek Object Oriented desing ve prensiplerin projelerinde uygulanamayacağını belirttiler. Biraz şaşırdım diyebilirim aslında. Çünkü SOA ve OOP hakkında büyük bir yanlış anlaşılma olmuş.

SOA yani Service Oriented Architecture bir uygulama mimarisidir.SOA uygulamayı birbirinden bağımsız, belirli fonksiyonlara bölünmüş, tekrar kullanılabilir olacak şekilde servisler halinde tasarlamaktır. SOA size uygulamanızı şu teknolojilerle,şu şekilde yapacağınızı söylemez altında yatan teknolojiyi istediğiniz gibi seçebilirsiniz. İster RMI, ister Web Servisleri,ister WCF kullanarak geliştirin bu size kalmış.

Object Oriented uygulama geliştirirken kullandığını bir teknik fakat SOA üst seviye bir uygulama mimarisi. Service Oriented bir uygulama geliştirirkende ister Functional Programming kullanın, isterseniz Object Oriented Programming kullanın servislerin ne ile geliştirildiğinin hiç bir önemi yok.Yani herhangi bir programlama teknolojisi gibi Object Oriented teknikleri SOA uygulama geliştirirken rahatlıkla kullanabiliriz. Bu yüzden Object Oriented Programming/Design ile SOA’yı karşılaştırmak elma ile armudu karşılaştırmak gibi birşey olsa gerek. Bu yüzden üzülerek SOA’dan bizi affetmesini istiyorum ve birdaha elma ile armudu karıştırmayacağımıza söz veriyorum :)

4 thoughts on “Affet bizi SOA seni yanlış anladık

  1. Enes

    Teşekkürler Cihat Hocam. SOA yı upper architect olarak ve sadece architect olarak anlattığın için.

  2. okan

    30000 satırlık bir class yapmak hatalıdır. Belliki bu class’ın yaptığı bir çok işlem var ve doğru bir object-oriented design’da bu işlemlerin farklı class’lara aktarılması gerekir. Bir class’da satır sayısının 1000’i geçmemesini bir desing principle olarak düşünebiliriz.

  3. mehmet

    bir de bu adamlar iş buluyor, dünyalar kadar maaş alıyor ve tek yaptıkları aslında firmanın fason işi. yoksa programcılık teorisine hakim olayım, kendine geliştireyim, refactoring yapmanın yollarına arayım gibi dertler yok. hayır sonra danışmanlara dünya para veriliyor ona yanarım. :)

Comments are closed.