Yazılım
- Anasayfa
- Yazılım
Yazılım Projesine İş Akışınızı Birlikte Çözümleyerek Başlıyoruz
Bir işletmenin özel bir programa ihtiyaç duyması çoğu zaman aynı noktadan doğar: işler büyümüştür ama takip hâlâ defterlerde, dağınık tablolarda ve telefon mesajlarında yürür. Böyle bir durumda yazılım projesine doğrudan kod yazarak başlamak, sorunu yalnızca başka bir yere taşımak olur. Biz önce iş akışınızı uçtan uca anlamaya çalışıyoruz. Bir siparişin, randevunun ya da iş emrinin sizin tarafınızda hangi adımlardan geçtiğini, bu adımlarda kimlerin çalıştığını ve bilginin nerede kaybolduğunu birlikte çiziyoruz. Bayburt’ta tek kişilik bir atölye ile birkaç şubesi olan bir işletmenin ihtiyacı aynı değildir; bu nedenle hazır bir şablonla gelmiyoruz. Çalışanlarınızla kısa görüşmeler yapıyor, gün içinde en çok zaman kaybettikleri işleri not ediyoruz. Bu aşamada henüz ekran ya da teknoloji konuşmuyor, yalnızca işin kendisini anlamaya odaklanıyoruz. Toplanan gözlemler, programın hangi ekranlara ve hangi otomatik işlemlere sahip olması gerektiğine dair ilk ipuçlarını verir.
Analiz sırasında dürüstçe sormamız gereken bir soru var: bu iş için gerçekten sıfırdan bir program gerekiyor mu? Muhasebe, stok ya da randevu takibi gibi alanlarda piyasada olgunlaşmış hazır çözümler bulunur. İhtiyacınız bunlardan biriyle büyük ölçüde karşılanıyorsa, lisans maliyetini, uyarlama imkânlarını ve uzun vadeli bağımlılık riskini karşılaştırarak bunu size açıkça söylüyoruz. Özel yazılım geliştirmek; iş akışınız standart kalıplara uymadığında, birden fazla sistemi birbirine bağlamanız gerektiğinde ya da süreciniz sizi rakiplerinizden ayıran bir avantaj taşıdığında anlam kazanır. Bazen doğru yol ikisinin birleşimidir. Hazır bir sistemi kullanmaya devam edip eksik kalan parçayı küçük bir ek modülle tamamlamak mümkündür. Bu değerlendirmeyi yazılı bir rapor halinde sunuyoruz. Raporda her seçeneğin avantajları, sınırları ve ileride doğurabileceği ek maliyetler yan yana yer alıyor. Kararı, bu bilgilere dayanarak siz veriyorsunuz. Böylece ihtiyaç duymadığınız bir geliştirme için bütçe ayırmanızın önüne geçiyoruz.
İhtiyaç analizinin çıktısı, herkesin aynı şeyi anladığından emin olmamızı sağlayan bir gereksinim belgesidir. Bu belgede programı kimlerin kullanacağını, her kullanıcı grubunun hangi bilgileri görebileceğini ve hangi işlemleri yapabileceğini tanımlıyoruz. Örneğin saha personeli yalnızca kendisine atanan işleri görürken yönetici tüm raporlara erişebilir. Hangi verilerin tutulacağını, bu verilerin nereden geleceğini ve hangi raporların üretileceğini de netleştiriyoruz. Her özellik için ölçülebilir bir kabul ölçütü yazıyoruz. Bir işlemin tamamlanmış sayılması için ekranda neyin görünmesi, kime hangi bildirimin gitmesi gerektiği bu ölçütlerde açıkça yer alır. Belgeyi teknik olmayan bir dille hazırlıyor, sizin ve çalışanlarınızın rahatça okuyabileceği biçimde teslim ediyoruz. Onaylanan belge, geliştirme boyunca ortaya çıkabilecek yanlış anlamaların önüne geçer. Sonradan eklenmek istenen özelliklerin takvime ve bütçeye etkisini tartmak için de ortak bir referans olur. Belgeyi proje ilerledikçe güncelliyor, her değişikliği tarihiyle birlikte kayda geçiriyoruz.
Kapsamı Daraltıp İlk Sürümü Erkenden Sahaya Çıkarıyoruz
Gereksinimler toplandığında ortaya genellikle uzun bir istek listesi çıkar. Hepsini tek seferde geliştirmeye çalışmak, projenin aylarca kullanıcıyla buluşmadan ilerlemesine ve sonunda gerçek ihtiyaçla örtüşmeyen bir ürün çıkmasına yol açabilir. Bu riski azaltmak için özellikleri sizinle birlikte önceliklendiriyoruz. Her isteğin işinize ne kadar zaman ya da gelir kazandıracağını tahmin etmek, bu sıralamayı kolaylaştırır. Olmazsa olmaz işlevleri, olsa faydalı olacakları ve ileride düşünülebilecek fikirleri ayrı gruplara ayırıyoruz. İlk sürüm, yalnızca birinci gruptaki işlevlerle ama eksiksiz çalışacak şekilde planlanıyor. Yani yarım bırakılmış çok sayıda ekran yerine az sayıda ama uçtan uca işleyen bir akış teslim ediyoruz. Bu yaklaşım bütçenizi de korur. İkinci ve üçüncü gruptaki özelliklerin gerçekten gerekli olup olmadığını, ilk sürümün kullanımından elde edilen gözlemlerle değerlendirme imkânı doğar. Kullanım başladıktan sonra bazı fikirlerin artık gerekmediği anlaşılır. Bu keşfin geliştirme maliyeti oluşmadan yapılması, doğrudan tasarruf demektir.
Kod yazmaya başlamadan önce ilk sürümün ekranlarını tıklanabilir bir prototip olarak hazırlıyoruz. Prototipte gerçek bir veritabanı yoktur. Ancak bir kullanıcının kayıt açma, arama yapma ya da rapor alma gibi temel işleri hangi sırayla yapacağı ekran ekran görünür. Bu taslağı sizinle ve programı her gün kullanacak çalışanlarınızla birlikte deniyoruz. Bir butonun yeri, bir formdaki alanların sırası ya da bir listenin nasıl filtreleneceği gibi ayrıntılar bu aşamada kolayca değiştirilebilir. Aynı değişikliği yazılım geliştirildikten sonra yapmak çok daha fazla emek ister. Prototip testlerinde özellikle bilgisayar kullanımına alışkın olmayan kullanıcıların nerede takıldığını gözlemliyoruz. Ekranlar sade, etiketler açık ve hata mesajları anlaşılır olduğunda eğitim ihtiyacı azalır ve program kısa sürede benimsenir. Prototipe gelen her yorumu not ediyor, hangisinin ilk sürüme gireceğine sizinle birlikte karar veriyoruz. Onaylanan prototip, geliştirme ekibi için de ayrıntılı bir yol haritasına dönüşür.
Teknoloji seçimini de ilk sürüm planının içinde yapıyoruz. Programın tarayıcıda çalışan bir web uygulaması mı, telefona yüklenen bir mobil uygulama mı yoksa ikisinin birleşimi mi olacağına kullanım senaryosuna bakarak karar veriyoruz. Sahada çalışan ve bağlantının zayıf olabileceği yerlere giden personel için çevrim dışı çalışabilen bir mobil arayüz gerekebilir. Ofis içindeki işler için ise çoğu zaman tarayıcı tabanlı bir panel yeterlidir. Programlama dili ve altyapı seçiminde geniş bir geliştirici topluluğu tarafından desteklenen, iyi belgelenmiş ve uzun ömürlü teknolojileri tercih ediyoruz. Seçimi yaparken yalnızca bugünkü ihtiyacı değil, önümüzdeki yıllardaki büyüme ihtimalini de hesaba katıyoruz. Böylece ileride projeye başka bir ekip dahil olduğunda kodu anlamakta zorlanmaz. Barındırma tarafında ihtiyaca göre ölçeklenebilen, yedekleme ve izleme imkânı sunan sunucu çözümleri öneriyoruz. Lisans, sunucu ve üçüncü taraf servis gibi süreklilik gerektiren maliyet kalemlerini de sizinle önceden paylaşıyoruz. Seçtiğimiz her teknolojinin gerekçesini sade bir dille açıklıyoruz.
Her Özelliği Test Ederek Mevcut Sistemlerinize Güvenle Bağlıyoruz
Geliştirme sürecini kısa döngülere bölüyoruz. Her döngünün sonunda tamamlanan özellikleri test ortamında size gösteriyor, geri bildiriminizi bir sonraki döngünün planına ekliyoruz. Böylece projenin gidişatını raporlardan değil, çalışan ekranlardan takip ediyorsunuz. Test ortamı canlı sistemden tamamen ayrı tutuluyor; yapılan denemeler gerçek verilerinize dokunmuyor. Kodun tamamını sürüm kontrol sisteminde tutuyor, her değişikliğin kim tarafından ve neden yapıldığını kayıt altına alıyoruz. Bir geliştiricinin yazdığı kod, ana dala eklenmeden önce başka bir geliştirici tarafından gözden geçiriliyor. Bu alışkanlık hataları erkenden yakalar ve kodun tutarlı kalmasını sağlar. Yazılım ekibimiz kritik hesaplamalar ve veri kayıtları için otomatik testler de yazıyor. Fatura toplamı, stok düşümü ya da yetki kontrolü gibi yanlış çalıştığında ciddi sonuç doğuracak işlevler, her yeni değişiklikte bu testlerden yeniden geçiyor. Otomatik testler, program büyüdükçe eski özelliklerin fark edilmeden bozulmasını önleyen bir güvenlik ağı görevi görür.
Yeni bir program nadiren tek başına çalışır. Muhasebe programınız, e-fatura sağlayıcınız, ödeme altyapınız, kargo firmanız ya da toplu mesaj servisiniz gibi mevcut sistemlerle veri alışverişi yapması gerekir. Entegrasyonları planlarken her sistemin sunduğu bağlantı arayüzlerini inceliyor, hangi verinin hangi yönde ve ne sıklıkla aktarılacağını belirliyoruz. Bu servislerin gerektirdiği erişim yetkilerini sizinle birlikte ilgili sağlayıcılardan talep ediyoruz. Bağlantı koptuğunda ya da karşı sistem hata döndürdüğünde verinin kaybolmaması için yeniden deneme ve uyarı mekanizmaları kuruyoruz. Geçiş sürecinde elinizdeki mevcut verileri de unutmuyoruz. Yıllardır tablolarda ya da eski bir programda biriken müşteri, ürün ve işlem kayıtlarını temizleyip yeni yapıya aktarıyoruz. Aktarım öncesinde örnek kayıtlar üzerinde deneme yapıyor, sonuçları sizinle birlikte kontrol ediyoruz. Eski ve yeni sistemin bir süre paralel çalışmasını öneriyoruz. Böylece geçiş döneminde işleriniz aksamadan devam ediyor, olası bir uyumsuzluk da müşterinize yansımadan fark ediliyor.
Güvenlik, programa sonradan eklenen bir özellik değil, tasarımın her katmanında düşünülen bir ilkedir. Kullanıcı şifrelerini geri çözülemeyecek biçimde saklıyor, isteğe bağlı olarak iki aşamalı doğrulama ekliyoruz. Her kullanıcının yalnızca işi için gereken verilere erişmesini sağlayan yetki kurallarını arayüzde değil, sunucu tarafında denetliyoruz. Veri iletimini şifreli bağlantı üzerinden yapıyor, formlardan gelen her girdiyi zararlı kod içerip içermediğine karşı kontrol ediyoruz. Sunucu ve veritabanı erişimlerini de yalnızca gerçekten ihtiyaç duyan kişilerle sınırlı tutuyoruz. Kişisel verilerin işlendiği projelerde Kişisel Verilerin Korunması Kanunu kapsamındaki yükümlülükleri göz önünde bulunduruyoruz. Hangi verinin ne amaçla ve ne kadar süre tutulacağını sizinle birlikte belirliyoruz. Kritik işlemler için ayrıntılı bir işlem kaydı tutuyoruz. Bir verinin kim tarafından ve ne zaman değiştirildiği, gerektiğinde geriye dönük olarak izlenebiliyor. Yayından önce bilinen açık türlerine karşı güvenlik testleri yapıyor, bulguları kapatmadan sistemi canlıya almıyoruz.
Canlıya Geçişten Sonra Destek Sürüyor, Kaynak Kod Sizde Kalıyor
Canlıya geçiş, takvimde önceden belirlenen planlı bir gündür. Geçişi işlerinizin en yoğun olduğu döneme denk getirmemeye özen gösteriyor, verilerin son halini aktardıktan sonra sistemi kullanıma açıyoruz. Geçiş günü ekibimiz sizinle birlikte hazırda bekliyor, ilk soruları gecikmeden yanıtlıyor. İlk günlerde kullanıcıların yanında olmak, programın benimsenmesi için en kritik adımdır. Bu nedenle her kullanıcı grubuna kendi ekranlarını anlatan kısa eğitimler veriyor, sık yapılan işlemler için ekran görüntülü bir kullanım kılavuzu hazırlıyoruz. Eğitimleri kayıt altına alıyor, yeni işe başlayan çalışanlarınızın da sonradan izleyebilmesini sağlıyoruz. Yazılım kullanılmaya başladığında gerçek hayatın, test ortamında öngörülemeyen durumlar ortaya çıkardığını biliyoruz. Bu dönemde gelen talepleri hızla sınıflandırıyor, hata olanları öncelikli olarak düzeltiyor, yeni istekleri ise bir sonraki geliştirme planına alıyoruz. Geçişten sonraki ilk haftalarda düzenli değerlendirme görüşmeleri yaparak kullanıcıların deneyimini yakından izliyoruz. Bu görüşmelerde toplanan önerileri önem sırasına koyuyor, hangilerinin hemen hayata geçeceğini sizinle birlikte planlıyoruz.
Bir program yayına alındıktan sonra da yaşamaya devam eder. İşletim sistemleri, tarayıcılar ve kullanılan kütüphaneler güncellendikçe uyumluluk kontrolleri gerekir. Güvenlik yamalarının zamanında uygulanması da bakımın temel parçasıdır. Bu işler aksatıldığında sorunlar genellikle en yoğun gününüzde kendini gösterir. Bakım anlaşmamız kapsamında sunucu ve uygulama sağlığını sürekli izliyor, beklenmedik bir yavaşlama ya da hata oluştuğunda uyarı alıp müdahale ediyoruz. Veritabanının düzenli yedeğini alıyor, yedeklerin gerçekten geri yüklenebildiğini belirli aralıklarla deniyoruz. Destek taleplerini bir kayıt sistemi üzerinden topluyor, her talebin durumunu sizin de görebileceğiniz şekilde takip ediyoruz. İşletmeniz büyüdükçe yeni ihtiyaçlar doğar: yeni bir şube, farklı bir ürün grubu ya da ek bir rapor gibi. Bu istekleri küçük geliştirme paketleri halinde planlıyor, mevcut yapıyı bozmadan sisteme ekliyoruz. Bakım anlaşması zorunlu değildir. Programı kendi ekibinizle sürdürmek isterseniz gerekli devir teslimi eksiksiz yapıyor, ekibinizin sorularını bir süre daha yanıtlamaya devam ediyoruz.
Sahiplik konusunu sözleşmenin ilk maddelerinden biri olarak ele alıyoruz. Size özel geliştirilen yazılım için kaynak kodunun tüm hakları işletmenize devrediliyor ve kod deposuna sizin adınıza tanımlı bir hesapla erişebiliyorsunuz. Kurulum adımlarını, veritabanı yapısını ve entegrasyon ayarlarını anlatan teknik belgeleri de teslim paketine ekliyoruz. Kodun içine, sonradan okuyacak geliştiricinin işini kolaylaştıran açıklamalar da yazıyoruz. Bu belgeler sayesinde, ileride başka bir ekiple çalışmak isterseniz proje sıfırdan öğrenilmeye gerek kalmadan devam edebilir. Verileriniz de yalnızca size aittir. Programa girdiğiniz tüm kayıtları istediğiniz an yaygın dosya biçimlerinde dışa aktarabilirsiniz; bunun için izin almanız ya da ek ücret ödemeniz gerekmez. Bayburt’taki bir işletmenin yıllar içinde biriktirdiği müşteri ve işlem geçmişi, sahip olduğu en değerli varlıklardan biridir. Bu varlığın tek bir tedarikçiye bağımlı kalmaması, sağlıklı bir iş ilişkisinin temelini oluşturur. Biz de sizinle, mecbur kaldığınız için değil, memnun kaldığınız için çalışmaya devam etmek istiyoruz.
Yazılım Hakkında Sık Sorulan Sorular
Özel yazılım hazır paketlerden hangi noktada ayrılır?
Ayrım, çoğunlukla işin kendine özgü kurallarında başlar. Hazır bir paket genel ihtiyaçlar için tasarlanır; sizin için geliştirilen bir çözüm ise sizin akışınıza, terimlerinize ve onay yollarınıza göre biçimlenir. Eldeki kaynakları, kullanım sıklığını ve ekipteki sorumluları birlikte değerlendirerek hangi yolun daha yerinde olduğuna karar veriyoruz.
İlk sürümde her özelliğin tamamlanması şart mı?
Genellikle şart değildir. İlk sürümde en çok kullanılan ve en çok değer üreten adımları öne alıyor, gerisini kullanım geri bildirimine göre sıralıyoruz. Böylece ekip sistemi erken tanır, geliştirme de gerçek ihtiyaca göre yön bulur. Kapsamı baştan kilitlemek yerine, adım adım büyümeyi tercih ediyoruz.
Eski kayıtlar yeni sisteme aktarılabilir mi?
Çoğu durumda aktarılabilir. Önce eski kayıtların hangi biçimde tutulduğuna bakıyor, tutarlı olanları yeni yapıya uyarlıyoruz. Eksik ya da çelişkili veriler varsa bunları aktarım öncesinde birlikte ayıklıyoruz. Amaç, geçmişi kaybetmeden temiz bir başlangıç kurmaktır.
Kullanıcı yetkileri sonradan değiştirilebilir mi?
Evet, yetkiler zamanla değişebilir. Bir çalışanın görevi değiştiğinde ya da ekip büyüdüğünde erişim düzeyleri buna göre güncellenebilir. Bunu baştan esnek kurduğumuz için, sonradan yapılan bir değişiklik yeni bir geliştirme gerektirmez; tanımlı yapı üzerinden yürür.
Her proje için ayrı bir mobil uygulama gerekir mi?
Her zaman gerekmez. Kimi iş yalnızca masaüstünde rahatça yürürken, saha ağırlıklı işlerde mobil kullanım öne çıkar. Kararı, işin nerede ve nasıl yapıldığına bakarak veriyoruz; gereksiz bir mobil katman hem maliyeti hem bakım yükünü boşuna artırır.
Bakım ile yeni geliştirme birbirinden nasıl ayrılır?
Bakım, çalışan bir düzenin sürmesini sağlar; yeni geliştirme ise sisteme daha önce olmayan bir yetenek ekler. İkisini baştan ayırıyor, hangi işin hangi başlık altında yürüdüğünü açıkça tanımlıyoruz. Böylece günlük destek ile yeni taleplerin planı birbirine karışmaz, ikisi de kendi temposunda ilerler.
