İşleyişinizden yola çıkan yazılım geliştirme süreci

Birçok işletme işe hazır programlar ve tablolarla başlar. İş büyüdükçe bu araçların esnemediği noktalar ortaya çıkar ve ekip, programa uymak için kendi düzenini değiştirmeye başlar. Size özel geliştirilen bir yazılım ise tam tersini yapar; kendini sizin işleyişinize göre biçimlendirir. Bu yüzden geliştirme sürecine ekranlardan değil, işinizin bugün nasıl yürüdüğünü anlamaktan başlıyoruz. Amasya’da üretimden perakendeye, sağlıktan konaklamaya kadar farklı işlerle uğraşan işletmelerle görüşürken benzer işaretlerle sık karşılaşıyoruz. Aynı bilgi birkaç farklı yere tekrar tekrar giriliyor, aylık raporlar elle hazırlanıyor, müşteri talepleri mesajlar arasında kayboluyor. Ekipte bir kişinin izne çıkmasıyla işlerin aksaması da benzer bir uyarıdır. Bu tablo, düzenli bir sisteme geçme zamanının geldiğini gösterir. Yine de her sorun yeni bir geliştirme gerektirmez. Bazen mevcut bir programın doğru ayarlanması ya da iki aracın birbirine bağlanması yeterli olur. Böyle bir durumu ilk görüşmede açıkça dile getiriyor, gerek olmayan bir projeyi önermiyoruz. Yeni bir sistemin gerçekten gerekli olduğu durumlarda ise işe mevcut iş akışını adım adım çözümleyerek başlıyoruz. Çözümlemede ilk baktığımız yer, işlerin bugün hangi araçlarla yürütüldüğüdür.
Bu yüzden kullandığınız tabloları ve formları bizimle paylaşmanızı istiyoruz. Hesap tabloları esnektir, ancak dosya çoğaldıkça hangisinin güncel olduğu belirsizleşir. Bir formül bozulduğunda hata uzun süre fark edilmeyebilir. Kimin hangi hücreyi ne zaman değiştirdiğini sonradan izlemek de çoğu zaman mümkün olmaz. Kâğıt formlar ise ayrı bir risk taşır. Sahada doldurulan bir iş emri ofise ulaşana kadar kaybolabilir, okunmayabilir ya da geç girilebilir. Bu gecikmeler faturalamadan stok takibine kadar birçok işi doğrudan etkiler. Bir kaydın hangi aşamada beklediğini öğrenmek için yapılan telefonlar da ekibin gününden sessizce zaman çalar. Bu işleri tek bir veritabanına taşıdığımızda her kayıt yalnızca bir kez girilir ve herkes aynı güncel bilgiyi görür. Değişikliklerin geçmişi otomatik olarak kaydedilir. Böylece bir hatanın kaynağını bulmak, dosyalar arasında dedektiflik yapmayı gerektirmez. Sahadaki çalışan kaydı girdiği anda ofisteki ekip de aynı bilgiye ulaşır. Bir müşterinin geçmiş siparişlerini ya da bir ürünün stok hareketlerini görmek de tek bir ekrana iner. Mevcut düzeni anladıktan sonra sistemden ne beklediğinizi teknik terimlerle değil, günlük dille yazıya döküyoruz.
Örneğin “Depo sorumlusu olarak, bir ürünün stoğu azaldığında uyarı almak istiyorum.” gibi kısa ifadeler kullanıyoruz. Her ifade, sistemi kimin ve hangi amaçla kullanacağını tek cümlede anlatır. Böyle cümleler, ekibinizle geliştirme ekibinin aynı şeyi anlamasını sağlar. İlk aşamada yapılmayacak işleri de açıkça yazıyoruz. Kapsam dışı bırakılan her madde çöpe gitmez; ileride değerlendirilmek üzere ayrı bir listeye alınır. Bu ayrım, proje ilerlerken sürekli yeni isteklerin eklenip planın dağılmasını önler. Kapsamı net bir yazılım projesi, hem sizin hem de geliştirme ekibinin önünü görmesini kolaylaştırır. Kapsam dışı listesi, ilk sürüm kullanılmaya başladığında yeniden birlikte gözden geçirilir. Bu çalışmanın sonunda ekran listesi, kullanıcı rolleri, bağlanılacak diğer sistemler ve öncelikler tek bir analiz belgesinde toplanır. Teklif ve iş planı bu belgeye dayanır. Böylece iki taraf da neyin, hangi sırayla yapılacağını baştan bilir. Belgeyi ekibinizle birlikte okumanızı ve takıldığınız noktaları not etmenizi öneriyoruz. Belge üzerinde uzlaştığımızda fikirleri ekranda görmeye sıra gelir.

Prototip ve aşamalı geliştirmeyle ilerlemek

Kodlamaya başlamadan önce ana ekranların tıklanabilir bir prototipini hazırlıyoruz. Prototip gerçek bir uygulama gibi görünür ama arkasında veri yoktur. Ekibiniz ekranlar arasında gezinerek akışın mantıklı olup olmadığını kolayca görebilir. Prototipi, analiz belgesindeki örnek senaryolar üzerinden sizinle birlikte adım adım geziyoruz. Bu gezinti sırasında eksik bir adım ya da gereksiz bir ekran çoğu zaman kendiliğinden ortaya çıkar. Bu aşamada gelen yorumlar çok değerlidir. “Bu bilgi ilk ekranda olmalı” ya da “Bu adımı hiç kullanmıyoruz” gibi tespitler, kullanıcının gerçek alışkanlıklarını ortaya çıkarır. Özellikle sahada ya da tezgâh başında çalışan kişilerin görüşleri, masa başında akla gelmeyen ihtiyaçları gösterir. Prototip, bu yorumlarla adım adım olgunlaşır. Bir düğmenin yerini prototipte değiştirmek küçük bir iştir. Aynı değişikliği kod yazıldıktan sonra yapmak ise çok daha fazla emek ister. Erken geri bildirim, bütçenizin yanlış yöne harcanmasını bu yüzden önler. Prototip onaylandığında ekranların neye benzeyeceği konusunda kimsenin aklında soru işareti kalmaz.
Onaylanan prototipin ardından büyük bir yazılım sistemini tek seferde teslim etmek yerine projeyi aşamalara bölüyoruz. İlk aşama, işinizin en kritik akışını karşılayan çekirdek işlevleri kapsar. Örneğin sipariş kaydı ve stok düşümü, raporlama ekranlarından önce gelir. Çekirdek işlevler oturduktan sonra diğer bölümler bu sağlam temelin üzerine eklenir. Her aşamanın sonunda kullanılabilir bir sürüm ortaya çıkar. Ekibiniz bu sürümle gerçek işini yapmaya başlarken biz de sahadan gelen gözlemleri topluyoruz. Sonraki aşamanın içeriği bu deneyime göre yeniden gözden geçirilir. Böylece bitmiş bir sistemi beklemeden, işinize katkı sağlayan ilk bölümü kullanmaya başlarsınız. Öncelik sırasını belirlerken üç soruya bakıyoruz. Bu işlev işinize ne kadar katkı sağlar? Ne sıklıkla kullanılır? Başka işlevler ona bağlı mı? Bu ölçütler, tartışmaları kişisel tercihlerden çıkarıp ortak bir zemine taşır. Kararları gerekçeleriyle birlikte yazıya geçirmek, sonradan neden bu sırayı seçtiğimizi hatırlamayı kolaylaştırır. Sistemin hangi ortamda çalışacağı, işin nerede yapıldığına göre belirlenir.
Ofiste çalışan ekipler için tarayıcıdan açılan web tabanlı bir panel çoğu zaman yeterlidir. Sahadaki personel için mobil uygulama, özel donanımla çalışan birimler içinse masaüstü programı daha uygun olabilir. Bazı projelerde bu seçeneklerin birkaçı aynı veritabanına bağlanarak birlikte kullanılır. Teknoloji seçiminde yaygın kullanılan, belgelendirmesi güçlü ve topluluk desteği olan yazılım araçlarını tercih ediyoruz. Bu tercih, ileride sistemin bakımını başka bir ekibin de üstlenebilmesini kolaylaştırır. Sizi tek bir firmaya bağımlı kılmamak bizim için önemlidir. Veritabanını da kayıt ve kullanıcı sayısı arttığında yavaşlamayacak biçimde, ileride doğacak ihtiyaçları hesaba katarak kuruyoruz. Sistemin nerede barınacağı da bu aşamada netleşir. Bulut sunucu internetin olduğu her yerden erişim ve kolay yedekleme sunar; buna karşılık hizmet bedeli düzenli olarak ödenir. Yerel kurulumda ise veriler fiziksel olarak sizin kontrolünüzdedir, ancak donanım bakımı ve güvenli uzaktan erişim size kalır. Hangi yolun uygun olduğuna verinizin niteliğine ve bütçenize bakarak birlikte karar veriyoruz.

Kodlama ve sınama sırasında kalite kontrolü

Aşamalar ilerlerken kalite, işin sonuna bırakılmaz. Geliştirmeyi kısa çalışma dönemlerine bölüyor ve her dönemin sonunda tamamlanan ekranları size gösteriyoruz. Bu düzenli sunumlar sayesinde projenin nereye gittiğini yol boyunca görürsünüz. Yanlış anlaşılan bir nokta varsa erkenden düzeltilir. Yazılım ekibimiz her değişikliği sürüm kontrol sistemine kaydeder; ekip üyeleri birbirinin kodunu gözden geçirir. Böylece bir değişikliğin ne zaman ve neden yapıldığı her zaman izlenebilir. İkinci bir gözün kodu okuması, hataların kullanıcıya ulaşmadan yakalanmasına yardım eder. Fatura toplamı ya da stok hesabı gibi kritik hesaplamalar için otomatik testler yazıyoruz. Bu testler, yeni bir özellik eklenirken eski bir işlevin bozulmasını erkenden yakalar. Her yeni sürüm, yayına alınmadan önce bu testlerden geçer. Testler, sistem büyüdükçe elle yapılması zorlaşacak kontrolleri her yeni sürümde tekrarlar. Yeni özellikler önce canlı sistemden ayrı bir deneme ortamında çalıştırılır.
Siz de bu ortamda gerçek verilerinize dokunmadan deneme yapabilirsiniz. Deneme ortamındaki veriler, gerçek kayıtların kişisel bilgilerden arındırılmış bir kopyası olabilir. Onay verilen değişiklikler ancak bundan sonra canlı sisteme aktarılır. Sistemi yayına almadan önce, onu günlük işinde kullanacak çalışanlarınızla birlikte deniyoruz. Muhasebeden bir çalışan gün sonu kapanışını, depodan bir çalışan sevkiyat kaydını kendi alışkanlığıyla sınıyor. Masa başında gözden kaçan ayrıntılar bu kabul testlerinde ortaya çıkar. Kullanıcıya bir görev verip nasıl ilerlediğini sessizce izlemek, anlatılanlardan daha fazlasını gösterir. Testlerden gelen notları iki gruba ayırıyoruz: hatalar ve iyileştirme önerileri. Kritik hatalar yayından önce giderilir. Öneriler ise öncelik sırasına göre sonraki aşamaların planına eklenir, böylece hiçbir fikir kaybolmaz. Her notun kimden geldiğini ve hangi ekranla ilgili olduğunu da kaydediyoruz.
Eski kayıtların yeni sisteme aktarılması da ayrı bir kontrol gerektirir. Tablolardan ve eski programlardan gelen verileri aktarmadan önce temizliyor, tekrar eden ya da eksik kayıtları sizinle birlikte ayıklıyoruz. Aktarımdan sonra örnek kayıtları eski kaynaklarla karşılaştırarak doğruluğu sınıyoruz. Yayına geçişi de kontrollü yapıyoruz. Mümkün olduğunda sistemi önce küçük bir pilot grupla başlatıyor, ardından tüm ekibe açıyoruz. Geçiş döneminde eski yöntemle yeni sistemi bir süre yan yana yürütmek, riskleri belirgin biçimde azaltır. Geçiş için işlerin en sakin olduğu dönemi sizinle birlikte seçiyoruz. Kalite kontrolü, yazılı belgelerle tamamlanır. Kaynak kodun düzenli, açıklamalı ve belgelenmiş olmasına özen gösteriyoruz. Teknik belgeler ile kullanıcı kılavuzu, bilginin tek bir kişinin hafızasında kalmasını önler. Ekibinizde değişiklik olduğunda da sistemi anlatan yazılı bir kaynak elinizde bulunur.
Güvenlik ve kişisel verilerin korunması
Kalite kontrolünün en hassas parçalarından biri güvenliktir. Müşteri, personel ya da hasta bilgisi tutan her sistem, Kişisel Verilerin Korunması Kanunu açısından da ele alınmalıdır. Bu yüzden sistemin yalnızca gerçekten gereken veriyi toplamasını sağlıyor, saklama sürelerini ve silme kurallarını sizinle birlikte belirliyoruz. Her kullanıcı yalnızca işi için gereken ekranları ve kayıtları görür. Parolalar şifrelenerek saklanır, önemli işlemler kimin tarafından ve ne zaman yapıldığıyla birlikte kayda geçer. Böylece olası bir sorunda iz sürmek mümkün olur. Bir çalışanın görevi değiştiğinde yetkileri de tek bir ekrandan güncellenir. Sisteme dışarıdan erişim gerekiyorsa ek güvenlik adımları kullanıyoruz. Parolanın yanında telefona gelen bir doğrulama kodu istemek, çalınan bir parolanın tek başına işe yaramamasını sağlar. Uzun süre işlem yapılmayan oturumlar da kendiliğinden kapanır. Diğer programlarla kurulan bağlantılar da güvenlik açısından ele alınır.
Muhasebe programı, e-Fatura altyapısı, ödeme sistemi ya da kargo firması gibi hizmetlere uygulama arayüzleri üzerinden bağlanıyoruz. Bu bağlantılarda kullanılan erişim anahtarlarını kodun içinde değil, ayrı ve korunan bir yerde saklıyoruz. Böylece bir satış kaydı girildiğinde fatura ve stok bilgisi güvenli biçimde güncellenir. Kullanılan kütüphanelerin ve yazılım bileşenlerinin güvenlik güncellemelerini düzenli olarak takip ediyoruz. Bilinen bir açık duyurulduğunda sistemin etkilenip etkilenmediğini kontrol ediyor, gerekiyorsa güncellemeyi planlı biçimde uyguluyoruz. Güncellemeleri önce deneme ortamında sınıyor, ardından canlı sisteme aktarıyoruz. Veri güvenliğinin bir diğer ayağı yedeklemedir. Yedeklerin otomatik alınmasını, canlı sistemden ayrı bir yerde tutulmasını ve belirli aralıklarla geri yüklenerek sınanmasını sağlıyoruz. Hiç denenmemiş bir yedeğin ihtiyaç anında çalışıp çalışmayacağı belirsizdir. Yedekleme düzenini ve geri yükleme adımlarını yazılı olarak size de teslim ediyoruz.
Güvenlik, teslimle biten bir iş değil, sistemin ömrü boyunca süren bir sorumluluktur. Teslimden sonra da hataların giderilmesi, işletim sistemi ve tarayıcı güncellemelerine uyum ve güvenlik takibi destek kapsamında sürer. Destek koşullarını ve yanıt yöntemini sözleşmede açıkça tanımlıyoruz. Sistem devreye girdikten sonra belirli aralıklarla sizinle bir araya geliyoruz. Erişim kayıtlarını birlikte inceleyerek olağan dışı bir giriş denemesi olup olmadığına bakıyoruz. Artık kullanılmayan hesapları ve işten ayrılan çalışanların yetkilerini bu görüşmelerde kapatıyoruz. Bugün Amasya’daki tek bir ofisten yönetilen bir sistem, yarın farklı şubelerden ve sahadaki ekiplerden de kullanılabilir. Kullanıcı sayısı arttıkça yetki yapısını da buna göre genişletiyoruz. Doğru kurulmuş bir yetki düzeninde büyüme, güvenlikten ödün vermeyi gerektirmez.

Yazılım Geliştirme Sürecinde Sık Sorulan Sorular

Bir yazılım projesinde yeni fikirlerin ortaya çıkması doğaldır. Her değişiklik isteğini kapsam ve takvim üzerindeki etkisiyle birlikte değerlendiriyor, sonucu size yazılı olarak iletiyoruz. Onayınızla plan güncellenir; küçük düzeltmeler çoğu zaman mevcut aşamaya eklenebilir, büyük değişiklikler ise sonraki aşamaya alınır.
Çoğu durumda gerekmez. Tarayıcıdan açılan bir panel mevcut bilgisayarlarınızda, mobil uygulama ise yaygın telefon modellerinde çalışacak biçimde geliştirilir. Barkod okuyucu, etiket yazıcı ya da terazi gibi cihazlar gerekiyorsa, bunların sistemle uyumunu analiz aşamasında birlikte kontrol ediyoruz.
İzleyebilir. Satış, stok ya da iş emri gibi verileri özet ekranlarda ve grafiklerde toplayan raporlar hazırlıyoruz. Hangi göstergelerin takip edileceğini yöneticilerinizle birlikte belirliyoruz. Raporlar gerektiğinde tablo dosyası olarak dışa da aktarılabilir. Böylece raporları elle derleme ihtiyacı azalır.
İhtiyaca göre eklenebilir. Belgelerden bilgi okumak, gelen talepleri konusuna göre ayırmak ya da uzun kayıtları özetlemek bu özelliklere örnektir. Her kullanımın gerçekten zaman kazandırıp kazandırmadığını ve kişisel veriler açısından uygun olup olmadığını önceden birlikte değerlendiriyoruz.
İhtiyaca göre evet. Özellikle sahada kullanılan mobil uygulamalar, bağlantı yokken kayıtları cihazda tutup bağlantı geri geldiğinde merkeze gönderecek şekilde tasarlanabilir. Bu özelliğin gerekip gerekmediğine, çalışanlarınızın hangi koşullarda iş yaptığına bakarak analiz aşamasında karar veriyoruz.
Eğitimleri her kullanıcı grubunun kendi işine göre planlıyoruz. Örneğin satış ekibi kendi ekranlarına, yöneticiler ise raporlama bölümüne odaklanır. Kısa kılavuzlar ve pilot gruptaki deneyimli kullanıcılar, alışma dönemini hızlandıran en etkili desteklerdir.