Yazılım İhtiyacınızı Günlük İş Akışınızın İçinden Okuyoruz

Özel bir yazılım fikri çoğu zaman bir yorgunluktan doğar: aynı bilgiyi üç ayrı tabloya yazmak, siparişleri mesaj geçmişinde aramak ya da ay sonunda rakamları elle toplamak. İşe bu yorgunluğun tam olarak nerede başladığını bularak giriyoruz. Bir iş gününüzü adım adım anlatmanızı istiyor, mümkünse ekibinizin kullandığı dosyaları, formları ve yazışmaları birlikte inceliyoruz. Bu görüşmelere yalnızca yöneticileri değil, sistemi her gün kullanacak çalışanları da katmanızı öneriyoruz. Bilginin nerede oluştuğunu, kimin elinden geçtiğini ve nerede beklediğini bir akış şeması üzerinde gösteriyoruz. Çanakkale’de üretim yapan bir atölyenin ihtiyacıyla bir danışmanlık bürosunun ihtiyacı birbirine benzemez; bu yüzden hazır kalıplar yerine sizin akışınızdan yola çıkıyoruz. Bazen bu inceleme, yeni bir sistem kurmak yerine mevcut bir aracın doğru ayarlanmasının yeterli olduğunu gösterir. Böyle bir durumda bunu açıkça söylüyoruz, çünkü gereksiz bir proje iki tarafın da zamanını harcar.

Görüşmelerden sonra teknik terimlerle dolu bir belge yerine, sizin rahatça okuyabileceğiniz bir ihtiyaç dökümü hazırlıyoruz. Bu dökümde kullanıcı grupları, her grubun yapması gereken işler ve sistemin tutacağı bilgiler sade cümlelerle anlatılır. Depo sorumlusunun stok girişi yapması, satış temsilcisinin teklif hazırlaması, yöneticinin günlük özeti görmesi ayrı başlıklar halinde yazılır. Her maddenin yanında o işin bugün nasıl yapıldığı ve yeni sistemde nasıl yapılacağı yan yana durur. Böylece değişikliğin ekip üzerindeki etkisini daha proje başlamadan görebilirsiniz. Hangi raporlara ihtiyaç duyduğunuzu, hangi belgelerin çıktı olarak alınacağını ve kayıtların ne kadar süre saklanacağını da bu aşamada konuşuyoruz. Ekibinizden birkaç kişinin dökümü okuyup yorum yapması, gözden kaçan ayrıntıları erkenden yakalamamızı sağlar. Belgenin sonunda, henüz karar verilmemiş konuları ayrı bir liste halinde tutuyoruz; böylece belirsizlikler unutulmadan projenin ilerleyen adımlarına taşınır. Döküm onaylandığında, proje boyunca herkesin başvurduğu ortak kaynak haline gelir.

İhtiyaç dökümü netleştiğinde üç seçeneği karşılaştırıyoruz: hazır bir ürünü olduğu gibi kullanmak, hazır bir ürünü eklentilerle genişletmek ya da sıfırdan geliştirmek. Hazır ürünler hızlı başlar ama iş akışınızı onların kurallarına uydurmanızı ister. Sıfırdan geliştirilen bir yazılım ise tam olarak sizin çalışma biçiminize göre şekillenir, buna karşılık bakım sorumluluğunu da beraberinde getirir. Karşılaştırmayı yalnızca ilk maliyet üzerinden değil, lisans ücretleri, kullanıcı sayısı arttığında oluşacak giderler ve veriye erişim kolaylığı üzerinden yapıyoruz. Seçenekleri tartarken birkaç yıl sonrasını da hayal etmenizi istiyoruz; bugün küçük görünen bir kısıt, işletme büyüdükçe pahalıya patlayabilir. Seçimin gerekçesini yazılı olarak paylaşıyor, kararı sizinle birlikte veriyoruz. Hazır bir ürünü önerdiğimiz durumda da kurulumunu, veri aktarımını ve ekibin eğitimini üstlenebiliyoruz. Bazı projelerde en mantıklı yol, kullandığınız muhasebe ya da e-ticaret altyapısını koruyup yalnızca eksik kalan parçayı geliştirmektir. Bu yaklaşım, bütçenizi gerçekten fark yaratacak kısma yönlendirmenizi sağlar.

İlk Sürümün Sınırlarını Çiziyor, Maketi Ekibinizin Eline Veriyoruz

Her fikri ilk sürüme sığdırmaya çalışmak, projelerin uzamasının başlıca nedenlerinden biridir. Bu yüzden ihtiyaç dökümündeki maddeleri üç gruba ayırıyoruz: sistemin çalışması için vazgeçilmez olanlar, işi kolaylaştıran ama bekleyebilecek olanlar ve şimdilik yalnızca not edilenler. İlk sürüm, birinci gruptaki işleri eksiksiz yapan ama gösterişten uzak bir yapıdır. Bir sipariş takip sisteminde siparişin kaydı, durumunun güncellenmesi ve müşteriye bildirim gönderilmesi ilk sürümde yer alır; ayrıntılı grafikler sonraki adıma kalabilir. Bu ayrımı birlikte yapıyoruz, çünkü neyin vazgeçilmez olduğunu işi her gün yapan kişiler bilir. Küçük başlamanın bir faydası da ekibinizin yeni düzene aşamalı olarak alışmasıdır; tek seferde değişen bir iş akışı çoğu zaman direnç görür. Bekleyen maddeler kaybolmaz, bir sonraki aşamanın taslağı olarak saklanır. Kapsam yazılı hale geldiğinde, sonradan gelen her yeni istek bu listeyle karşılaştırılır ve takvime etkisi açıkça konuşulur. Böylece proje ilerlerken hedef kaymaz, siz de bütçenizin nereye harcandığını adım adım izleyebilirsiniz.

İlk satır kod yazılmadan önce, ekranları tıklanabilir bir maket halinde önünüze koyuyoruz. Bu makette renkler ve süslemeler yoktur; amaç, hangi bilginin hangi ekranda duracağını ve bir işin kaç adımda tamamlanacağını görmektir. Maketi ekibinizden birkaç kişiye verip gerçek bir görevi, örneğin yeni bir müşteri kaydı açmayı denemelerini istiyoruz. Nerede duraksadıklarını, hangi düğmeyi aradıklarını gözlemlemek, sonradan yapılacak pahalı değişikliklerin önüne geçer. Ekranlardaki kelimeleri de ekibinizin günlük dilinden seçiyoruz; çalışanlarınız bir ürüne katalogdaki adından farklı bir adla sesleniyorsa, ekranda da o ad kullanılabilir. Maket üzerinde yapılan bir değişiklik birkaç dakika sürer, yazılım tamamlandıktan sonra yapılan aynı değişiklik ise çok daha fazla emek ister. Bu yüzden onayı bu aşamada titizlikle alıyoruz. Maket onaylandığında her ekranın hangi bilgiyi göstereceği ve hangi işlemi yapacağı, geliştirici için ayrıntılı bir iş listesine dönüşür. Bu liste, ilerlemeyi ölçmek için de kullanılır.

İlk sürümü önce küçük bir kullanıcı grubuyla, gerçek verilerle ama kontrollü bir ortamda çalıştırıyoruz. Eski yöntemle yeni sistemi kısa bir süre paralel yürütmek, hataların işinizi aksatmadan ortaya çıkmasını sağlar. Kullanıcıların karşılaştığı sorunları ve önerilerini tek bir listede topluyor, her birini hata, iyileştirme ya da yeni istek olarak sınıflandırıyoruz. Hatalar hemen düzeltilir, iyileştirmeler bir sonraki küçük güncellemeye, yeni istekler ise kapsam listesine eklenir. Geri bildirim toplamak için ekranlara küçük bir öneri düğmesi de ekleyebiliyoruz. Bu dönemde ekibinizin sisteme alışmasına da zaman tanıyoruz; kısa eğitimler ve ekran kayıtlarıyla destek oluyoruz. Deneme döneminin sonunda kısa bir değerlendirme toplantısı yapıyor, sistemin tüm ekibe açılmasına birlikte karar veriyoruz. İlk sürüm oturduğunda, ikinci aşamaya hangi özelliklerle geçileceğini artık tahminlere değil, kullanım verilerine dayanarak belirliyoruz. Hangi ekranın ne sıklıkla açıldığı, hangi işin ne kadar sürdüğü bu kararlarda yol gösterir.

Geliştirme, Test, Entegrasyon ve Güvenlik Aynı Masada Planlanıyor

Geliştirmeyi kısa dönemlere bölüyor, her dönemin sonunda çalışan bir parçayı size gösteriyoruz. Böylece aylarca beklemek yerine sistemin büyüdüğünü adım adım görür, yön değiştirmek gerekirse bunu erken fark edersiniz. Her gösterimde aldığımız notlar, bir sonraki dönemin önceliklerini belirler. Kodda yapılan her değişiklik bir sürüm kontrol sisteminde kayıt altına alınır; hangi satırın ne zaman ve neden değiştiği her zaman izlenebilir. Test ortamı canlı sistemden ayrıdır, bu yüzden yeni bir özelliği denerken gerçek verileriniz risk altına girmez. Kritik işlemler için otomatik testler yazıyoruz; bir hesaplama ya da stok düşümü yanlış çalışırsa bunu kullanıcıdan önce biz görürüz. Otomatik testlerin yanında, gerçek kullanım senaryolarını baştan sona deneyen elle yapılan kontroller de uyguluyoruz. Bir yazılım projesinde hataları tamamen sıfırlamak mümkün değildir, ama erken yakalanan hata hem daha ucuz hem de daha az can sıkıcıdır.

İşletmenizde zaten kullanılan sistemlerle konuşamayan bir uygulama, ekibinize yeni bir veri girişi yükü getirir. Bu nedenle muhasebe programı, e-fatura sağlayıcısı, ödeme altyapısı, kargo firmaları ya da kısa mesaj servisleri gibi bağlantıları en baştan planlıyoruz. Her entegrasyon için karşı sistemin sunduğu arayüzü, veri biçimini ve kullanım sınırlarını inceliyoruz. Bağlantının koptuğu durumlarda ne olacağını da tasarlıyoruz: işlem bekletilir, kullanıcı bilgilendirilir ve bağlantı geri geldiğinde kaldığı yerden devam eder. Aynı müşterinin iki sistemde farklı kayıtlarla durmaması için hangi sistemin ana kaynak olacağını baştan belirliyoruz. Entegrasyon için gereken anahtar ve şifreler kod içinde değil, ayrı ve korunan bir ayar alanında saklanır. Bazı hizmet sağlayıcıların arayüzleri zaman zaman değişir; bu değişiklikleri takip etmek bakım işimizin bir parçasıdır. Entegrasyonların durumu, yönetici ekranında basit bir göstergeyle izlenebilir. Böylece bir fatura gönderilemediğinde bunu müşteriden duymak yerine sistemden öğrenirsiniz.

Güvenliği projenin sonunda eklenen bir katman olarak değil, ilk ekrandan itibaren tasarımın parçası olarak ele alıyoruz. Her kullanıcı yalnızca işini yapmak için ihtiyaç duyduğu bilgiyi görür; muhasebe verileri depo ekranında, müşteri telefonları da ilgisiz rollerde görünmez. Parolalar geri çözülemeyecek biçimde saklanır, hassas bilgiler şifrelenir ve kritik işlemler kimin yaptığıyla birlikte kayda geçer. Şüpheli giriş denemeleri de kayıt altına alınır ve yöneticiye bildirilir. Kişisel verilerin korunmasına ilişkin mevzuatın istediği aydınlatma metinleri, açık rıza kayıtları ve veri silme talepleri için gereken altyapıyı hazırlıyoruz. Yedekler otomatik alınır ve geri yüklemenin gerçekten çalıştığı düzenli aralıklarla denenir. Sistemi dışarıya açan her noktayı yayına almadan önce yaygın saldırı türlerine karşı test ediyoruz. Bir çalışan işten ayrıldığında hesabının tek tıkla kapatılabilmesi gibi günlük yönetim ihtiyaçlarını da ilk sürümde düşünüyoruz. Güvenlik kullanıcıyı yoran bir engele dönüşmemeli; iki adımlı doğrulama gibi önlemleri ekibinizin alışkanlıklarını gözeterek devreye alıyoruz.

Kaynak Kodunuz, Verileriniz ve Yayından Sonraki Bakım Düzeni

Geliştirdiğimiz sistemin kaynak kodu, proje bedeli ödendiğinde size aittir. Sözleşmede kodun mülkiyetini ve kullanım haklarını açık cümlelerle yazıyoruz, böylece ileride yoruma açık bir konu kalmaz. Kodu sizin adınıza açılmış bir depo hesabında tutuyor, yönetici yetkisini size veriyoruz. Kurulum adımları, kullanılan kütüphaneler, sunucu ayarları ve veritabanı yapısı ayrı bir teknik belgede anlatılır. Bu belge, ileride başka bir geliştiricinin projeyi devralması gerektiğinde işini kolaylaştırır. Teslimden önce sistemi sıfırdan başka bir sunucuya kurarak belgenin eksiksiz olduğunu kendimiz de sınıyoruz; bu provayı mümkünse sizin ekibinizden biriyle birlikte yapıyoruz. Kodun okunabilir olmasına, açıklama satırlarına ve anlamlı adlandırmalara da dikkat ediyoruz; yalnızca yazanın anlayabildiği bir yazılım, sahibini o kişiye bağımlı kılar. Kullanılan açık kaynak bileşenlerin lisanslarını listeliyor, ticari kullanımda sorun çıkarmayacaklarını kontrol ediyoruz. Barındırma hesabı ve alan adı gibi altyapı hizmetleri de sizin adınıza açılır; biz yalnızca yetkilendirildiğimiz ölçüde erişim kullanırız.

Sistemde biriken kayıtlar, işletmenizin en değerli varlıklarından biridir ve bu verilere erişiminiz hiçbir koşula bağlanmaz. Müşteri, ürün, sipariş ve hareket kayıtlarını istediğiniz an yaygın dosya biçimlerinde dışa aktarabileceğiniz bir işlev ekliyoruz. Eski sistemden yeni sisteme geçerken verilerin taşınmasını da projenin ayrı bir aşaması olarak planlıyoruz. Taşınacak kayıtları önce temizliyor, tekrar eden müşterileri birleştiriyor, eksik alanları sizinle birlikte tamamlıyoruz. Taşıma işlemini bir deneme ortamında birkaç kez prova ettikten sonra gerçek geçişi yapıyoruz. Geçişten sonra rakamların eski sistemle tuttuğunu, örneğin açık bakiyelerin ve stok miktarlarının eşleştiğini birlikte kontrol ediyoruz. Bu karşılaştırma tamamlanmadan eski sistemi kapatmanızı önermiyoruz; bir süre salt okunur halde tutulması, beklenmedik bir eksiklikte başvurulacak bir yedek yol bırakır. Verilerin hangi sunucuda ve hangi ülkede tutulduğunu da açıkça belirtiyoruz; mevzuat açısından bu bilgi sizin için önemlidir.

Yayına alınan bir sistem, işletmeniz değiştikçe onunla birlikte değişmek zorundadır. Bakım anlaşmamızda güvenlik güncellemeleri, hata düzeltmeleri, sunucu izleme ve yedeklerin kontrolü yer alır; kapsamı ve taleplerin önceliklendirilmesini yazılı olarak belirliyoruz. Sistemin yanıt süresini ve hata kayıtlarını düzenli olarak inceliyor, bir sorun büyümeden müdahale ediyoruz. Kullanılan çerçeve ve kütüphanelerin destek süreleri dolmadan güncel sürümlere geçişi planlıyor, sistemin eskimesini önlüyoruz. Yeni bir modül ya da rapor ihtiyacı doğduğunda, ilk projede kullandığımız yöntemle önce ihtiyacı yazıya döküyor, sonra geliştiriyoruz. Çanakkale’de ya da başka bir yerde yeni bir şube açtığınızda sistemin buna uyum sağlayabilmesi için başlangıçta esnek bir yapı kuruyoruz. Destek taleplerini tek bir kanaldan alıyor, her talebin durumunu izleyebileceğiniz bir kayıt tutuyoruz. Özenle kurulmuş bir yazılım, yıllar içinde küçük dokunuşlarla büyüyen ve ekibinizin işini her gün biraz daha kolaylaştıran bir araca dönüşür.

Yazılım Projesini Planlarken Sık Sorulanlar

Evet, durum adları ve taşıdıkları anlam iş sürecinize göre kurgulanabilir. Ne var ki yalnızca isimleri seçmek yeterli olmaz; her durumun hangi bilgiyle ve hangi kullanıcının işlemiyle değişeceği de tarif edilmelidir. Beklemedeki, geri gönderilen ya da tamamlanan bir kaydın bir sonraki adımda nasıl davranacağı bu kurallarla belirlenir. Başlangıçta örnek bir işi bu aşamalardan geçirerek uygunluğu birlikte sınıyoruz.

Hayır, bildirimin hangi olayda gerektiği işinize göre belirlenir. Yeni bir görevin atanması, eksik bilgi istenmesi veya bir değerlendirmenin sonuçlanması ayrı bildirimler gerektirebilir. Her küçük değişiklikte mesaj yollamak yerine alıcının hangi durumda harekete geçmesi gerektiğine bakıyoruz. Bir mesajın hazırlanmış olması ile karşı tarafa ulaştığının doğrulanması ayrı şeylerdir; kullanılacak kanalın koşulları da kapsamı etkiler.

Kullanım planı buna uygun kurulabilir. Önce hangi işlemlerin tamamlanmış olacağı, denemeye kimlerin katılacağı ve hangi verilerin kullanılacağı belirlenir. Sınırlı bir başlangıç, ekibin gerçek kullanımda gördüğü ayrıntıları değerlendirmesine yardımcı olur. Yine de temel işlevlerin ve erişim sınırlarının bu aşamada da kontrol edilmesi gerekir. Hangi koşullar sağlandığında sonraki aşamaya geçileceğini baştan konuşuyoruz.

Bu koşulu en baştan paylaşmanız gerekir; tarayıcıdan çalışan her uygulamanın bağlantı yokken aynı işleri sürdüreceği varsayılamaz. Hangi ekranların açık kalması gerektiği, yeni kayıt açılıp açılmayacağı ve bağlantı döndüğünde verilerin nasıl birleşeceği ayrı ihtiyaçlardır. Kesinti sırasında işlemi güvenle bekletmek kimi işte yeterli olurken başka bir işte çevrim dışı kullanım için ek geliştirme gerekebilir. Uygulanabilir yöntem ve sınırları anlatılmadan kesintisiz kullanım sözü vermiyoruz.

Bu, kaydın işte nasıl kullanıldığına göre kararlaştırılması gereken bir kuraldır. Bazı ekranlarda güncel bilginin görünmesi beklenirken tamamlanmış bir işlemde o günkü bilginin korunması istenebilir. Sözgelimi değişen bir ürün açıklamasının daha önce oluşmuş kayıtları etkileyip etkilemeyeceği başta değerlendirilmelidir. Hangi bilginin ortak kaynaktan okunacağı ve hangi ayrıntının işlem anında saklanacağı açıklanır; teslimde örnek bir bilgi değiştirilerek beklenen görünüm doğrulanır.

Önce erişim eksikliğinin hangi işlevi etkilediği belirlenir. Programın sunduğu aktarım seçenekleri ve sağlayıcının izin verdiği yöntemler incelenebilir. Dosya üzerinden bilgi paylaşımı kimi ihtiyaçta bir seçenek olsa da her canlı bağlantının yerini tutmaz. Kullanılabilir bir yöntem doğrulanmadan karşı sistemle bütünleşmenin biteceği varsayılmaz. Bağımsız ilerleyebilen işler ayrı bir aşamada sürdürülebilir; bağlantıya bağlı özellikler için koşullar açıkça belirtilir.