Yazılım
- Anasayfa
- Yazılım
Yazılım Kararından Önce Bir Talebin Şirket İçindeki Yolunu İzliyoruz
Bir yazılım projesi çoğu zaman tek bir şikâyetle gündeme geliyor. Siparişler tablolarda kayboluyor, stok bilgisi tutmuyor ya da aynı veri üç ayrı yere elle yazılıyor. İlk görüşmede bu şikâyetin arkasındaki iş akışını adım adım dinliyoruz. Bir talebin işletmenize nasıl girdiğini, kimlerin elinden geçtiğini, hangi noktada onay beklediğini ve nerede tıkandığını birlikte çiziyoruz. Mevcut formları, tabloları ve raporları örnek olarak istiyor, içlerindeki alanları tek tek inceliyoruz. Bu çizim genellikle beklenmedik şeyler ortaya çıkarıyor. Sorun sanılan ekranın aslında sorun olmadığı, asıl zaman kaybının iki birim arasındaki telefon trafiğinde yaşandığı anlaşılabiliyor. Gerekirse süreci ekran paylaşımıyla ya da yerinde, işin başında gözlemliyoruz. Düzce’de ya da başka bir yerde faaliyet gösteren her işletmenin kendine özgü çalışma alışkanlıkları var. İyi kurgulanmış bir sistem bu alışkanlıkları bozmadan hızlandırmalı. Bu yüzden çözüm önermeden önce işin ideal halini değil, bugün gerçekte nasıl yapıldığını anlamaya çalışıyoruz.
İş akışını çizerken sistemi kimlerin kullanacağını da belirliyoruz. Sahadaki personel, muhasebe, depo, yönetim ve belki müşterilerinizin kendisi farklı ekranlara ve farklı yetkilere ihtiyaç duyuyor. Her kullanıcı grubuyla kısa görüşmeler yapıyor, gün içinde hangi bilgiye ne zaman ihtiyaç duyduklarını soruyoruz. Depodaki bir çalışan için telefondan kullanılabilen, büyük butonlu sade bir ekran gerekirken yönetici için özet raporlar ve dışa aktarma seçenekleri öne çıkıyor. Bu görüşmeler, yeni yazılım kullanılmaya başlandığında karşılaşılacak direnci de azaltıyor. Kullanıcılar fikirlerinin sürecin en başında sorulduğunu gördüklerinde sisteme daha kolay sahip çıkıyor. Yetki yapısını da bu aşamada netleştiriyoruz: kim hangi kaydı görebilir, kim değiştirebilir, kim silebilir. Bu kararlar hem güvenliğin hem de ekran tasarımının temelini oluşturuyor. İnternet bağlantısının zayıf olduğu depo ya da saha gibi ortamlar varsa, çevrimdışı çalışma ihtiyacını da not ediyoruz. Kullanıcı sayısının zamanla nasıl artabileceğini de hesaba katıyoruz.
Her ihtiyaç sıfırdan geliştirme gerektirmiyor. Analizin sonunda piyasada hazır bulunan bir çözümün işinizi görüp görmeyeceğini de dürüstçe değerlendiriyoruz. Hazır bir ürün ihtiyacınızın büyük kısmını karşılıyorsa, onu kurup işletmenize uyarlamak çoğu zaman daha hızlı ve daha ekonomik oluyor. Özel geliştirme ise iş akışınız gerçekten farklı olduğunda ya da hazır ürünler sizi kendi süreçlerinizi değiştirmeye zorladığında anlam kazanıyor. Birden fazla sistemi tek bir yapıda buluşturma ihtiyacı da özel geliştirmeyi öne çıkaran nedenlerden biri. Bu kararı birlikte verebilmemiz için seçeneklerin avantajlarını, sınırlarını ve uzun vadeli maliyet kalemlerini yazılı bir analiz raporunda topluyoruz. Lisans ücretleri, sunucu giderleri ve bakım emeği gibi ilk bakışta görünmeyen kalemleri de bu rapora ekliyoruz. Raporda ekran listesi, veri yapısının ana hatları ve öncelik sırası da yer alıyor. Hangi yolu seçerseniz seçin, bu belge projenin ortak dili haline geliyor.
Özellik Listesini Üç Sepete Bölüp İlk Sürümü Hafif Tutuyoruz
Kapsam belirlenirken en sık yapılan hata, akla gelen her özelliği ilk sürüme sığdırmaya çalışmak. Böyle projeler uzuyor, bütçe zorlanıyor ve sistem kullanıcıların eline geç ulaşıyor. Biz analiz raporundaki özellikleri üç sepete ayırıyoruz: işin yürümesi için vazgeçilmez olanlar, kısa süre sonra eklenebilecekler ve şimdilik bekleyebilecek fikirler. İlk sürüm yalnızca birinci sepeti içeriyor. Her sepetteki maddeleri kısa kullanıcı hikâyeleri halinde yazıyoruz; bir depo sorumlusunun gün sonunda eksik ürünleri tek ekranda görmek istemesi gibi. Bu sınırı çizerken sizinle masaya oturuyor, her özelliğin günlük işi gerçekten değiştirip değiştirmeyeceğini tartışıyoruz. Kapsam yazılı hale geldiğinde, hangi ekranın hangi işlevleri içereceğini gösteren taslakları hazırlıyoruz. Bir taslak üzerinde değişiklik yapmak, kodu yazılmış bir ekranı değiştirmekten çok daha kolay ve ucuz. Bu nedenle bu aşamaya özellikle zaman ayırıyor, taslakları kullanıcılarınızla birlikte gözden geçiriyoruz. Kapsam dışında kalan fikirleri de kaybolmasınlar diye ayrı bir listede saklıyoruz.
Küçük bir ilk sürümün en büyük faydası, gerçek kullanımdan öğrenme fırsatı vermesi. Toplantı odasında mantıklı görünen bir ekran, sahada bir çalışanın elinde bambaşka bir izlenim bırakabiliyor. İlk sürümü sınırlı bir ekiple ya da tek bir birimde kullanıma açıyor, geri bildirimleri düzenli olarak topluyoruz. Kullanıcıların önerilerini doğrudan ekrandan iletebileceği küçük bir bildirim kutusu da ekleyebiliyoruz. Kullanıcıların nerede zorlandığını, hangi alanı hiç doldurmadığını ve hangi raporu her gün istediğini gözlemliyoruz. Ekranların nasıl kullanıldığını gösteren basit ölçümler de hangi özelliğin gerçekten ilgi gördüğünü ortaya koyuyor. Sonraki geliştirmeler bu gözlemlerle şekilleniyor. Böylece bütçenizi kimsenin kullanmayacağı özelliklere değil, işletmenize gerçekten zaman kazandıran iyileştirmelere harcıyorsunuz. Bu yaklaşım, yazılım geliştirmeyi tek seferlik bir teslim olmaktan çıkarıp adım adım büyüyen bir sürece dönüştürüyor. Riskler de böylece erkenden görünür hale geliyor ve büyümeden çözülebiliyor.
İlk sürümün kullanıma alınması teknik olduğu kadar organizasyonel bir iş. Mevcut tablolardaki, eski programlardaki ya da kâğıt kayıtlardaki verilerin yeni sisteme nasıl aktarılacağını baştan planlıyoruz. Aktarım öncesinde verileri temizliyor, tekrar eden kayıtları birleştiriyor, eksik alanları sizinle birlikte tamamlıyoruz. Aktarımı önce bir deneme ortamında yapıp sonuçları sizinle kontrol ediyoruz. Geçiş döneminde eski yöntemle yeni sistemin kısa bir süre paralel çalışması çoğu zaman güven veriyor. Sonuçları karşılaştırarak hataları erkenden yakalıyoruz. Eski sistemi hemen kapatmıyor, geçiş tamamlanana kadar okunabilir halde tutuyoruz. Kullanıcılar için kısa eğitimler düzenliyor, sık karşılaşılan sorulara cevap veren sade bir kullanım kılavuzu hazırlıyoruz. Her birimden bir kişiyi sistemin iç sorumlusu olarak yetiştirmek, ilk haftalardaki soruların çoğunu yerinde çözüyor. Geçişin hangi gün ve hangi sırayla yapılacağını, işletmenizin yoğun dönemlerini gözeterek belirliyoruz. Amacımız yeni sisteme geçişin günlük işleri aksatmadan ve kimseyi zor durumda bırakmadan tamamlanması.
Kodu Kısa Turlarla Yazıyor, Her Turu Sizinle Deniyoruz
Geliştirmeyi kısa turlara bölüyoruz. Her turun başında hangi işlevlerin tamamlanacağını birlikte belirliyor, sonunda çalışan halini size gösteriyoruz. Böylece projenin nereye gittiğini aylar sonra değil, her turda kendi gözünüzle görüyorsunuz. Tur sonlarındaki gösterimlere sistemi gerçekten kullanacak kişileri de davet etmenizi öneriyoruz. Onların ilk tepkisi, toplantılarda tutulan uzun notlardan çoğu zaman daha öğretici oluyor. Beklentiyle sonuç arasında bir fark varsa bunu erkenden fark ediyor, küçük bir düzeltmeyle yönü değiştirebiliyoruz. Proje boyunca yapılacak işlerin, tamamlananların ve bekleyenlerin görüldüğü ortak bir takip panosu kullanıyoruz. Sorularınıza ve değişiklik taleplerinize bu pano üzerinden cevap veriyor, her kararın kaydını tutuyoruz. Kapsama yeni bir istek eklendiğinde bunun bütçeye ve takvime etkisini önceden söylüyoruz. Yazılım ekibimiz kodu anlaşılır ve belgelenmiş biçimde yazıyor. Sistemin yıllarca bakımı yapılacak ve ileride başka bir geliştiricinin de kodu okuyup anlayabilmesi gerekiyor. Hiçbir değişiklik, ikinci bir geliştiricinin incelemesinden geçmeden ana sürüme alınmıyor.
Testi geliştirmenin sonuna bırakılan bir adım olarak görmüyoruz. Her işlevi yazarken otomatik testlerini de hazırlıyoruz. Böylece yeni bir özellik eklendiğinde eski özelliklerin bozulup bozulmadığı hemen anlaşılıyor. Otomatik testlerin yakalayamadığı durumlar için her turun sonunda elle kontrol yapıyor, gerçek kullanım senaryolarını adım adım deniyoruz. Hatalı veri girildiğinde sistemin nasıl davrandığını, çok sayıda kullanıcının aynı anda işlem yaptığı durumları ve yavaş bağlantıda ekranların nasıl açıldığını özellikle kontrol ediyoruz. Sistemin yoğun saatlerde nasıl davrandığını görmek için yük testleri de yapıyoruz. Testleri canlı verilerinizle değil, onlara benzeyen deneme verileriyle ayrı bir ortamda yürütüyoruz. Sizin ekibinizden de kabul testi istiyoruz, çünkü gerçek bir iş gününü yeni sistemde yaşamak en ince ayrıntıları ortaya çıkarıyor. Bulunan hataları önem sırasına göre sınıflandırıyor, hangisinin ne zaman çözüleceğini açıkça paylaşıyoruz. Bir hatanın düzeltilmesi, aynı hatanın tekrarını yakalayacak yeni bir testin yazılmasıyla tamamlanıyor. Yayına alma kararını testler tamamlandıktan sonra birlikte veriyoruz.
Yeni bir sistem nadiren tek başına çalışıyor. Muhasebe programınız, e-fatura altyapınız, ödeme sağlayıcınız, kargo firmanız ya da web siteniz ile veri alışverişi gerekebiliyor. Entegrasyonları planlarken her sistemin sunduğu bağlantı imkânlarını ve sınırlarını önceden inceliyoruz. Her entegrasyon için hangi verinin hangi yönde ve ne sıklıkla aktarılacağını gösteren kısa bir belge hazırlıyoruz. Veri aktarımında hata oluştuğunda bunun nasıl fark edileceğini, kaydın nasıl yeniden gönderileceğini ve kimin haberdar edileceğini baştan tasarlıyoruz. Dış servislerde yaşanabilecek kesintilerin sizin sisteminizi durdurmaması için gerekli önlemleri alıyoruz. Bağlantı bilgilerini ve erişim anahtarlarını kodun içine gömmüyor, ayrı ve korunan bir yerde tutuyoruz. Elle yapılan aktarımların ortadan kalkması hem zaman kazandırıyor hem de yazım hatalarından doğan tutarsızlıkları azaltıyor. Entegrasyon listesini ilk sürümün kapsamına göre önceliklendiriyor, bazı bağlantıları ilerleyen aşamalara bırakabiliyoruz. Bu sayede sistem, işletmenizin kullandığı diğer araçlarla uyumlu bir bütün oluşturuyor.
Güvenlik, Bakım ve Kod Mülkiyeti Aynı Sözleşmede Netleşiyor
Güvenliği geliştirmenin her aşamasına yayıyoruz. Parolaları güvenli yöntemlerle saklıyor, kullanıcı yetkilerini yalnızca gerektiği kadar tanımlıyor ve önemli işlemlerin kimin tarafından yapıldığını kayıt altına alıyoruz. Dışarıdan gelen her veriyi denetleyerek yaygın saldırı türlerine karşı önlem alıyoruz. Sunucu tarafında güncel yazılım sürümleri kullanıyor, bağlantıları şifreliyor, farklı bir konumda saklanan düzenli yedekler oluşturuyoruz. Yönetici hesapları için iki aşamalı doğrulamayı varsayılan hale getiriyoruz. Yayına almadan önce sistemin dışarıdan erişilebilen noktalarını bir kez daha tarıyor, açık kapı kalmadığından emin oluyoruz. Kişisel veri içeren sistemlerde verilerin hangi amaçla toplandığını, kimlerin erişebildiğini ve ne kadar süre saklanacağını birlikte belirliyoruz. Bu çalışma, kişisel verilerin korunmasına ilişkin yükümlülüklerinizi yerine getirmenizi de kolaylaştırıyor. Yedekten geri dönüşün gerçekten çalıştığını da belirli aralıklarla deniyoruz. Hiç denenmemiş bir yedek, kriz anında hoş olmayan bir sürprize dönüşebiliyor. Güvenlik olayı yaşandığında kimin neyi yapacağını anlatan kısa bir müdahale planını da sizinle paylaşıyoruz.
Sistem kullanıma alındıktan sonra da yanınızda kalıyoruz. Bakım desteği kapsamında güvenlik güncellemelerini yapıyor, sunucu ve uygulama performansını izliyor, kullanıcıların bildirdiği hataları öncelik sırasına göre çözüyoruz. Destek taleplerinin kaydını tutuyor, benzer sorunların tekrar edip etmediğini dönemsel olarak inceliyoruz. Tekrarlayan bir sorun, genellikle kalıcı bir iyileştirme gerektiğinin işareti. Sistemde bir aksaklık başladığında bunu kullanıcılarınızdan önce fark etmemizi sağlayan uyarılar kuruyoruz. İşletmeniz büyüdükçe yeni ihtiyaçlar doğuyor. Yeni bir şube, yeni bir ürün grubu ya da yeni bir rapor talebi sistemin genişlemesini gerektirebiliyor. Bu talepleri kapsam, bütçe ve öncelik açısından değerlendirip planlı bir geliştirme takvimine yerleştiriyoruz. Kullanılan kütüphanelerin ve altyapı bileşenlerinin desteği sona ermeden güncelleme planı hazırlıyoruz. Böylece sistem yıllar içinde eskiyip güvenlik açığı barındıran bir yapıya dönüşmüyor. Bakım sözleşmesinin kapsamını, hangi taleplerin ek geliştirme sayılacağını ve destek kanallarını baştan açıkça yazıyoruz. Bu netlik, ileride doğabilecek anlaşmazlıkların önüne geçiyor.
Projenin sonunda kaynak kodun, veritabanının ve tüm belgelerin sahibi siz oluyorsunuz. Kodu işletmeniz adına açılmış bir depoda tutuyor, sunucu ve servis hesaplarını sizin adınıza oluşturuyoruz. Kurulum adımlarını, veri yapısını ve önemli teknik kararları anlatan belgeleri teslim ediyoruz. Alan adı, sunucu ve üçüncü taraf servislerin fatura ve yenileme bilgileri de sizin hesaplarınızda duruyor. Teslim sırasında tüm erişimleri sizinle birlikte deniyor, eksik bir yetki kalmadığını doğruluyoruz. Verilerinizi istediğiniz zaman yaygın biçimlerde dışa aktarabileceğiniz şekilde saklıyoruz. Hiçbir kayıt yalnızca bizim erişebildiğimiz bir yerde kalmıyor. Bu yaklaşım, ileride farklı bir ekiple çalışmak isterseniz sizi bize bağımlı kılmıyor. Düzce’deki bir işletmeyle çalışırken de ilişkiyi bir zorunluluk üzerine değil, verdiğimiz hizmetin kalitesi üzerine kurmayı tercih ediyoruz. Yazılım yatırımınızın gerçek değeri de burada ortaya çıkıyor. Sistem sizin mülkünüz olarak kalıyor, geliştirmeye devam edip etmeyeceğinize ise yalnızca siz karar veriyorsunuz.
Özel Yazılım Projelerinde Merak Edilenler
Kullandığımız tablolar yazılımın çözümlenmesinde işe yarar mı?
Evet, kullandığınız güncel tablolar hangi bilgilerin takip edildiğini ve işin nasıl yürüdüğünü anlamamıza yardımcı olur. Yine de her sütun olduğu gibi yeni uygulamaya taşınmaz. Kimi alan birleştirilir, kimi alan ayrıştırılır; belirleyici olan tablonun kendisi değil, onun arkasındaki işleyiştir.
Bütün ekiplerin aynı anda yeni sisteme geçmesi gerekir mi?
Geçişin biçimi iş akışlarına ve kayıtların birbirine bağlılığına göre planlanır. Uygun projelerde sınırlı bir ekiple bir deneme dönemi yürütülebilir. Ancak ekipler ortak kayıtlar üzerinde çalışıyorsa, bölünmüş bir kullanım karışıklık yaratabilir; böyle durumlarda birlikte geçiş daha sağlıklı olur.
Kullanıcı yanlış bir işlem yaptığında geri alma özelliği eklenebilir mi?
Hangi işlemin geri alınabileceği iş kurallarına bağlıdır. Basit bir alan düzeltmesiyle onaylanmış bir teslim kaydının iptali aynı sonucu doğurmaz. Bu yüzden geri almayı tek bir düğme gibi değil, her işlem için ayrı ayrı düşünüyor ve olası etkilerini önceden birlikte değerlendiriyoruz.
Hazır bir programın eksik yönlerini tamamlayan bir uygulama yapılabilir mi?
Mevcut programın veriye erişim ve bağlantı olanakları incelenirse bu olasılık değerlendirilebilir. Kullandığınız sistemin verdiği dosya çıktıları ya da sunduğu servisler burada belirleyici olur. Bağlantı kapalıysa seçenekler daralır; açıksa eksik kalan adımları tamamlayan bir yapı çoğu zaman kurulabilir.
Proje ilerlerken yeni bir ihtiyaç ortaya çıkarsa ne olur?
Yeni isteğin mevcut işlemlerle ilişkisine ve gerektirdiği çalışmaya bakarız. Küçük bir düzenleme mi yoksa yeni bir iş akışı mı olduğunu açıkça belirtiriz. Ardından bunu teslim planına ne zaman ve nasıl ekleyeceğimizi kararlaştırır, o sırada yürüyen işi aksatmadan ilerleriz.
Uygulamanın devri sırasında hangi bilgiler teslim edilir?
Teslim edilecek erişimler, kaynak dosyalar, kullanım açıklamaları ve teknik belgeler başlangıçta belirlenen kapsama göre belirlenir. Kullanıcı yönetimi ve günlük işletimle ilgili bilgiler de bu kapsamda aktarılır. Amaç, sistemin ileride başka bir elden de sürdürülebilmesini güvence altına almaktır.
