İyi Programlama, Kötü Programlama, Kurumsal Yapı

İyi Programlama, Kötü Programlama, Kurumsal Yapı

20 Mayıs 2019 Genel Tavsiyeler 0

Yarı devlet, yarı özel bir kurumda çalışıyorum. Programlama yapısının en kötü örneklerini görme fırsatını burada elde ettim. Yapılabilecek tüm ölümcül hataları gözlemledim.

Bir veri tabanı düşünün, değişim gerektirdiğinde tüm sisteme ayrı ayrı noktalardan müdahale etmeniz gereksin, veriler, verileri getiren yazılımlar, kullanıcı ekranları, hesaplamaların hepsi veritabanına ait sunucuda. Asla farklı bir veri tabanına geçemeyeceğiniz manasına gelen bir yapı. Dünya çapında olan programlarla uyum sağlanamayacak bir karmaşa sebebiyle hep aynı programcılara mahkumsunuz. Yeni bir düzenleme yapmak isterseniz bu işlemler yıllarınızı alacaktır. Yeni mezun bir programcı düşünün, hadi program yazalım dese ve bir programlama dili biliyor olsun, işte bu programcının yazacağı acemi kodları burada.

İyi bir programlama yapısında yeni bir ekleme yapacağınız zaman değişim kısa sürelerde gerçekleşir. Ekip işidir, her ekip üyesi kendi payına düşen, en iyi bildiği sistemi yazar. Gerçek hayatta her işin bir ustası vardır, ustası işi kısa sürede, kolayca yapar. Programlama ekibinde olması gereken roller; analizci, veri tabanı tasarımcısı, ara katman yazarı, ekran tasarımcısı, ekran programlayıcı, mimar, test kullanıcısıdır.

Analizci: programın kullanıcılarının yaptığı işleri anlamak, işleyiş sırası, ihtiyacı olan bilgiler neler, kaydedilmesi gereken veriler neler öğrenip bir iş akış şeması hazırlar.

Veri tabanı tasarımcısı: Veri tabanlarında excel benzeri veri tabloları bulunur. Veriler bir aradayken en anlamlı olabileceği en küçük parçalar halinde bölünerek ayrı ayrı tablolara yerleştirilir. Mesela bir insanın ayırıcı özelliği adı ve soyadıdır, aynı tabloda olması gerekir, cinsiyeti tektir, aynı tabloya girer, adresi ise değişebilir, aynı tabloya girmesi sorun oluşturur. Tasarımcı değişimleri göz önünde bulundurmalıdır, bir insan adını veya soyadını değiştirebilir. Değişimi işaret edecek şekilde yeni bir veriye atıfta bulunmayı sağlamalıdır. Nihayetinde gerçek dünyada eski ad ve soyadı ile evraklar, bağlantılar olabilir. Güncel verileri ana tablosunda tutarken değişimleri ve değişimin olduğu tarihleri değişim tablosunda saklar. Bu şekilde tasarlanmış, bağlantıları iyi düşünülmüş, dökümantasyonu sağlanmış yapılar kolayca taşınabilir. Yüksek maliyetli bir veri tabanı yazılımından ucuz, hızlı bir yazılıma geçişi kolaylaştırır. Yeni teknolojilerde bütünlük sağlayan, tüm verilerin bir tablo yapısında bulunduğu, alanların dinamik değişimi sağlanan yapılar mevcut. Hız, donanım gereksini sebebiyle henüz aktif kullanımı kısıtlı.

Ara katman yazarı: Verilere erişimde belirli kurallar vardır. Bazı kişiler verilere erişebilir, bazıları erişememelidir. Kullanıcı erişim kontrolleri, verilerin nasıl bir araya getirileceği, hesaplamaları ara katman yazarları hazırlar. Birer servis yapısıdır. Ekranlarda, kullanıcıların neye ihtiyacı varsa bildirilir, buna göre kodları hazırlarlar. Değişik programlama dillerinde, farklı farklı programların süzgeçlerinden geçirilebilir. Kodları kendi programcılarınız yazabildiği gibi dışarıdan aldığınız, konunun uzmanı firmaların programlarında veri işlenmesi söz konusu olabilir. Ara katman esnekliği sayesinde tek bir programcıya veya firmaya mahkum olmazsınız.

Ekran tasarımcısı: Kullanıcıların alışık olduğu, hızlı hareket edebildiği, psikolojik olarak rahat hissettiği tasarımlar ile daha verimli çalıştıkları bir gerçektir. Ekranlarda görsel akış bütünlüğünü sağlamak, ön tasarımları kullanıcılara sunarak fikirlerini almak, en uygun görsel ekranı sunmak tasarımcının görevidir. Bir arada bulunması gereken verileri, veri girişi, işlem başlatan tıklamaların yerlerini belirlerler. Rapor, yazdırılacak sonuç ekranları tasarımları görevlerindendir.

Ekran programlayıcı: Tasarımcının vermiş olduğu grafik yapıyı farklı bilgisayarlar, tabletler, telefonlar için çalışabilecek şekilde yazar, ara katman yazılımcısından aldığı servislerle verileri ekranlara yansıtır, kaydetme işlemlerini yaptırır.

Mimar: Tüm kişilerin yaptığı işleri yapabilecek kapasitededir. Tüm kodlamaları kontrol eder, bütünlüğü sağlar, yazılımın dokümantasyonunu kontrol eder, yazılım oluşturma sürelerini bilir, işin ne kadar sürede tamamlanabileceği bilgisine sahiptir. Programların hızlı çalışmasını, sorun çıkartmamasını sağlayacak koordinatördür.

Test kullanıcısı: İş sürecinin akışını farklı senaryolarla deneyecek kişidir. Ekranlar arasında düzenli geçişler sağlanıyor mu, hesaplmalar düzgün mü, kayıtlar düzgün geliyor mu sorularını cevaplar. Sorunları raporlar. Sürekli kod yazılan, geliştirmeleri aralıksız devam eden kurumlar içerisinde önemli bir yere sahiptir.

İş paylaşımı olmayan yerlerde problemleri çözümlemek, test etmek, veri yapılarını hazırlamak, ekranları tasarlamak aynı kişiye kaldığından tüm becerilere tek bir insanın sahip olması zor olacağı, zamanın kötü kullanımı sebebiyle çok fazla masraf ortaya çıkacaktır. Katı yapılar sebebiyle belli kişi ve firmalara bağımlı olursanız eğer, bu firmalara, kişilere istediği ödemeyi yapmak zorunda kalırsınız. İşin tam olarak ne kadar sürede biteceğini tahmin edemediğiniz için zamanında iş yetiştirmeyi unutacaksınız demektir. Karmaşık yapıları işletmek için ayrıca yüksek fiyatlara bilgisayar donanımları, sunucular almak zorunda kalacağınızdan zorluklar peşinizi bırakmayacaktır.

Peki, karmaşa içinde bir sistemdesiniz, nasıl düzene geçiş yapacaksınız? Ara katman yazarınıza büyük iş düşecektir. Aktif çalışan sistemi devam ettirirken normalize edilmiş bir yapıya geçiş yapmanız gerekecek. Analizciniz sistem çalışmasını inceleyip veri ihtiyaçlarını çıkaracak, değişimde kullanılacak tablolar tasarlanacak, parça parça ekranlardan gelen veri tabanına kaydedilen veriler aynı anda düzenlenmiş yeni tablolara yazdırılacak. Yeni arayüzler üzerine veriler gönderilerek yeni ekranlardan veri girişleri eski sistemdeki ekranların veri girişlerini taklit ettirilecek. Parça parça geçişler tamamlanırken eski sisteminiz yavaş yavaş normalize edilmiş yapıya kavuşacaktır.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir