Blog

Bileşen Temelli yazılım Sistemleri Geliştirmek-1

Yazılım Sistem tasarımının en önemli stretejilerinden birisi, alt sistemlere ayrıştırmaktır. (Subsystem Decomposition, Modularity)
Yani, büyük sistemi birbiri ile etkileşimde olan daha küçük sistemler olarak ele alabilmeliyiz.
Her alt sistem, hizmet aldığı diğer sistemler ile standartlar üzerinden haberleşir.

Tasarım stratejileri içinde yer alan diğer önemli bir soru ise ; “Yazılım bileşenlerimiz temini için, nasıl bir yol izleyeceğiz? “Geliştirmek, Satın almak, Açık kaynak kodlu bileşenler kullanmak”

Kısıtlı proje kaynakları ile, teknik ve iş alanına bağlı gereksinimleri yönetmek zor. Tüm bileşenlerimizi kendimiz geliştirelim eğiliminden çıkılması gerekiyor.

İş ihtiyaçlarımızı güncel olarak karşılayacak bileşenleri (Ticari, Açık Kaynak) değerlendirmeliyiz.

Peki bu geliştirme dengesini nasıl sağlayacağız ? Nasıl bir yaklaşım takip etmeliyiz? sorularına sonraki yazılarda cevap vereceğiz.

Yazılım alt yapı bileşenleri (Framework) geliştirmek üzerine – 2

Başlangıç olarak; ilk etapta açmamız gereken projelerimizi (Framework.Main, Framework.Common, Framework.Mail) açalım. Metodumuzu, ilgili bileşenimize koyalım. Framework üzerinden Eposta bileşenimizi hazır hale getirelim.

Şu an için, sadece mail atan bir framework bileşenine sahibiz. Yeni ihtiyaçlarımız geldiğinde; yine bir yardımcı metot. Eğer yoksa, metoda ait bir yeni bir bileşen projesi. Bu bileşenin Framework ile entegrasyonu.

İhtiyaçlarımızı ne kadar üst seviye modelleme imkanına sahip olursak, yeniden düzenleme de o kadar az olacaktır. (Refactoring)

Projelerimizdeki “Utility – Yardımcı” metotlarımızı, bu şekilde framework projesine çevirebilir. Framework proje yönetimi ile ilgili temel kısıtlardan kurtulabiliriz.

Sonraki proje de ise, hazır olan bir çok işlevimiz olacaktır. Bundan sonrasını, yöneticilerimize daha kolay anlatabiliriz.

Yazılım alt yapı bileşenleri (Framework) geliştirmek üzerine – 1

Birbirine yakın özellikleri olan yazılımların, ortak ihtiyaçları da aynıdır. Bu ortak ihtiyaçların, bir framework projesi olarak ele alınması, asıl iş ihtiyaçlarından bağımsız olarak geliştirilmesi mümkün olabilir.

Burada en önemli kısıt, böyle bir proje için bütçe oluşturabilmek ve kurumumuzun yazılım geliştirme vizyonuna yerleştirebilmektir. Çoğu zaman, bunu yöneticilerimize anlatabilmemiz bile zor olabilir. (“No Time, No Money” Yazılım Mühendisliği literatürüne de girmiş durumdadır.)

İmkanların çok kısıtlı olduğu durumlarda bile, framework projesi modelleyebilirsiniz. Tekrar kullanılabilirlik hakkında yazdığım daha önceki yazılarımda ifade ettiğim gibi, en küçük birim metotdur. EPosta gönderen bir metot yazdığınızı düşünelim. Bu metot aslında, Framework projemizin, Eposta bileşenin bir metodu olmalıdır.

İçerik sermayeniz kadar zenginsiniz. (İçerik Üretme Prensibi)

Kişi ve kurumların entellektüel sermayeleri ve kurumsal hafızası, ürettikleri içeriklerdir. Arşivleridir.

İçerik üretmek, kaliteli iş süreçlerinin en temel fonksiyonudur. Düşündüklerinizi çok daha iyi bir seviye de ortaya koymak demektir. Sürecin olduğu gibi değil, olması gerektiği gibi yürütülmesi hedeflenmelidir. Şu ana göre değil, yarına göre hareket edilmesi esas olmalıdır. İçerik üretmekle vakit kaybedilmez. Orta ve uzun vade için bir yatırım olduğu için, kazançlı çıkarsınız. Bu ürettiklerimizden, hem kendimiz hem de birlikte çalıştıklarımız tekrar tekrar istifade eder. (Ne zaman?, Kimlerle?, Niçin?, Nasıl?, Ne yapıldı?…) Tekrar tekrar anlatmak ve vakit kaybetmek zorunda kalmazsınız.

İçerik aynı zamanda kalıcı referans demektir. İçeriklerimiz ile, bilgi bütünlüğünü muhafaza eder, ihtilafları önleriz. Çok yoğun formatlara boğulmadan, kolaylaştırarak üretmeli ve üretmeyi teşvik etmeliyiz.

Söz uçar, yazı kalır.

Az olsun devamlı olsun (Süreklilik prensibi)

İş hayatımız süreklidir. Yeni haftalar, yeni aylar, yeni yıllar. Sorumlu olduğumuz işlerimizde, bu sürekliliğe uygun bir çalışma modeli geliştirmeliyiz. “Sürekli eğitim”, “Sürekli koordinasyon”, “Sürekli raporlama”, “Sürekli ARGE” gibi…

İşin süresinden ziyade süreklilik daha önemlidir. Ayda bir kaç gün yoğun bir şekilde, bir işi yapmak yerine, onu haftalık veya günlük olarak, daha küçük dilimlerde yapabiliriz. Yüksek yoğunluklu işlerin, çalışma motivasyonunu düşürmesine mukabil, az da olsa sürekli şekilde gerçekleştirilen işler, iş motivasyonunuzu yükseltecektir. Ayın sonunda yapılacak bir işin büyük bir bölümünü, ay sonu geldiğinde bitirmiş olacaksınız. Her geçen gün/hafta üzerinde değerlendirme imkanı da bularak.

Özel hayatınıza da tatbik edebilirsiniz.