Yazılım
- Anasayfa
- Yazılım
Yazılım Projesine Kod Yazmadan Önce İşinizi Tanıyarak Başlıyoruz
Özel bir yazılım fikri çoğu zaman gündelik bir sıkıntıdan doğar. Siparişler birden fazla tabloda takip edilir, aynı bilgi farklı yerlere elle yazılır ya da ekip işin hangi aşamada olduğunu telefonla sorarak öğrenir. Mevcut durumu anlamadan kod yazmaya başlamak, yanlış soruya doğru cevap aramaya benzer. Bu yüzden işe ekranları çizerek değil, bugün işinizi nasıl yürüttüğünüzü adım adım izleyerek başlıyoruz. Siparişin, talebin ya da başvurunun sizde hangi yolu izlediğini, kimin neyi onayladığını ve bilginin nerede kaybolduğunu birlikte haritalıyoruz. Bu aşamada işi fiilen yapan çalışanlarınızla da konuşuyoruz, çünkü sorunların ayrıntısı çoğu zaman yöneticinin masasında değil, işin yapıldığı yerde görünür. Batman’da ister tek şubeli bir işletme ister sahada ekibi olan bir firma yönetin, ilk sorumuz aynıdır: Hangi iş bugün gereğinden fazla zaman alıyor? Bu sorunun cevabı, geliştirilecek sistemin önceliklerini belirleyen en sağlam veridir.
Mevcut akışı çıkardıktan sonra ihtiyaçları yazılı hale getiriyoruz. Sistemi kimlerin kullanacağını, her kullanıcının hangi bilgileri görmesi ve hangilerini değiştirebilmesi gerektiğini rollere ayırarak tanımlıyoruz. Hangi verilerin tutulacağını, bu verilerin nereden geleceğini ve hangi raporlara dönüşeceğini de bu belgede netleştiriyoruz. Ekranlarda hangi alanların zorunlu olacağı, hangi durumda kime bildirim gideceği gibi küçük görünen kurallar da bu belgeye giriyor. Belgeyi teknik bir dille değil, sizin iş dilinizle yazıyoruz; böylece okuduğunuzda eksik ya da yanlış anlaşılan bir noktayı kolayca fark edersiniz. Her ihtiyacın yanına onun neden gerekli olduğunu ve hangi sorunu çözdüğünü not ediyoruz. Geliştirme sırasında yeni bir istek geldiğinde bu gerekçeler, isteğin gerçekten gerekli olup olmadığını tartışmak için ortak bir zemin sağlar. Kapsam netleşmeden verilen süre ve maliyet tahminleri ileride iki taraf için de sorun çıkardığından, net rakamları analiz belgesi onaylandıktan sonra konuşuyoruz.
Her ihtiyaç için sıfırdan geliştirme yapmak doğru değildir ve bunu size açıkça söylüyoruz. Muhasebe, e-fatura ya da stok takibi gibi alanlarda piyasada olgunlaşmış hazır çözümler vardır; bunları işinize uyarlamak çoğu zaman daha hızlı ve ekonomik olur. Hazır bir yazılım iş akışınızın büyük kısmını karşılıyorsa, eksik kalan parçayı tamamlayan küçük bir modül ya da iki sistemi konuşturan bir bağlantı geliştirmeyi öneriyoruz. Özel geliştirme, iş yapış şeklinizin rakiplerinizden ayrıştığı ve hazır ürünlerin sizi kendi kalıbına zorladığı noktalarda anlam kazanır. Bazen bir sorunun cevabı hiç kod gerektirmez; mevcut bir aracın doğru ayarlanması ya da iş akışında küçük bir değişiklik yeterli olabilir. Bu kararı verirken yalnızca ilk maliyete değil, lisans ücretlerine, kullanıcı sayısı arttığında doğacak giderlere ve ileride yapılacak değişikliklerin kolaylığına da bakıyoruz. Analiz sonunda elinizde, hangi yolun neden önerildiğini anlatan ve başka bir ekiple de kullanılabilecek bir yol haritası kalır.
Kapsamı Daraltıp İlk Sürümü Gerçek Kullanıcılarla Deniyoruz
İhtiyaç listesi çıktığında genellikle akla gelen her özelliğin ilk günden hazır olması istenir. Oysa her şeyi tek seferde yapmaya çalışan projeler uzar, bütçeyi aşar ve kullanıcıların gerçekte neye ihtiyaç duyduğunu öğrenme fırsatını kaçırır. Bu yüzden özellikleri sizinle birlikte üç gruba ayırıyoruz: olmadan sistemin çalışmayacağı işler, işi belirgin şekilde kolaylaştıran eklemeler ve ileride düşünülebilecek fikirler. Hangi özelliğin hangi gruba gireceğine karar verirken iş hacminizi ve o özelliğin kaç kişinin işini kolaylaştıracağını ölçü alıyoruz. İlk sürüm yalnızca birinci gruptaki işleri eksiksiz yapan, sade ama gerçekten kullanılabilir bir yazılım olur. Örneğin bir servis firmasında ilk sürüm iş emri açma, teknisyene atama ve işi kapatma adımlarından ibaret olabilir; raporlar sonraki aşamaya kalır. Bu yaklaşım, yatırımınızın ilk karşılığını daha erken görmenizi ve sonraki adımları varsayımlarla değil gerçek kullanım verisiyle planlamamızı sağlar. İkinci ve üçüncü gruptaki fikirler kaybolmaz; bir sonraki sürüm planında sıralarını bekler.
Kod yazmaya başlamadan önce ana ekranların tıklanabilir bir taslağını hazırlıyoruz. Bu taslak üzerinde bir siparişin girilmesinden raporda görünmesine kadar olan yolu, sistemi kullanacak kişilerle birlikte deniyoruz. Kâğıt üzerinde mantıklı görünen pek çok akış, gerçek bir kullanıcı ekranın başına oturduğunda eksik ya da gereksiz çıkar. Bir alanın yerini değiştirmek bu aşamada dakikalar sürerken, geliştirme bittikten sonra aynı değişiklik günler alabilir. Taslakları özellikle sahada, tezgâhta ya da depoda çalışan kişilerle test etmeyi önemsiyoruz; masa başında tasarlanan ekranlar telefonda, eldivenle ya da acele içinde kullanıldığında farklı davranır. Ekran sayısını ve her ekrandaki alan sayısını olabildiğince azaltmak, yeni çalışanların sisteme alışma süresini de kısaltır. Taslak aşaması, sistemin son halini önceden somut olarak görmenizi ve bütçenin doğru yere harcandığından emin olmanızı sağlar. Bu turlardan gelen notları önceliklendirip taslağa işliyor ve onayınızla geliştirmeye geçiyoruz.
İlk sürümü yayına aldığımızda işimiz bitmiş olmuyor, aksine en öğretici dönem başlıyor. Sistemi önce küçük bir kullanıcı grubuyla ya da tek bir birimde devreye alıyor, eski yöntemle birlikte kısa bir süre paralel çalıştırmayı öneriyoruz. Bu sayede olası bir hata iş akışınızı durdurmadan fark edilir ve çalışanlarınız yeni düzene adım adım alışır. Kullanıcılara kısa eğitimler veriyor, sık yapılan işlemleri anlatan basit bir kullanım kılavuzu hazırlıyoruz. Kullanıcıların nerede takıldığını, hangi ekranda gereğinden fazla zaman harcadığını ve hangi özelliği hiç kullanmadığını gözlemliyoruz. Değişime direnç gösteren çalışanlar olursa, onların itirazlarını dikkatle dinliyoruz; çoğu zaman bu itirazlar gözden kaçmış gerçek bir sorunu işaret eder. Eski kayıtlarınızın yeni sisteme aktarılmasını da bu dönemde planlıyor, aktarılan verileri örnekler üzerinden sizinle birlikte kontrol ediyoruz. Toplanan geri bildirimler bir sonraki sürümün önceliklerini belirler; böylece bütçe tahminlere değil, gerçekten ihtiyaç duyulan geliştirmelere harcanır.
Geliştirme, Test, Entegrasyon Adımlarında Güvenliği Baştan Hesaba Katıyoruz
Geliştirme aşamasını kısa ve ölçülebilir dönemlere bölüyoruz. Her dönemin sonunda tamamlanan bölümleri çalışan haliyle size gösteriyor, yorumlarınızı bir sonraki döneme taşıyoruz. Böylece aylar sonra karşınıza beklemediğiniz bir ürün çıkmaz; yazılım sizin gözünüzün önünde, parça parça şekillenir. Dönem sonlarındaki bu kısa toplantılar, önceliklerin değişmesi gerektiğinde yönü erkenden düzeltmemize de imkân verir. Teknoloji seçiminde moda olan araçlara değil, projenin ihtiyacına, bakımının kolaylığına ve ileride başka geliştiricilerin de kodu rahatça devralabilmesine bakıyoruz. Kodu anlaşılır bir düzende yazıyor, kritik bölümleri açıklamalarla belgeliyor ve tüm değişiklikleri sürüm kontrol sisteminde kayıt altında tutuyoruz. Bu kayıtlar, hangi değişikliğin ne zaman ve neden yapıldığını geriye dönük olarak izlemeyi mümkün kılar. Kodun kalitesini korumak için her önemli değişikliği ekipte ikinci bir geliştiriciye inceletiyoruz. Geliştirme, test ve canlı ortamlarını birbirinden ayırıyoruz; yeni bir özellik, gerçek verilerinize dokunmadan önce ayrı bir ortamda denenir.
Test, geliştirmenin sonuna bırakılan bir adım değildir. Her yeni bölümü yazarken otomatik testlerini de hazırlıyor, sonraki değişikliklerin eski işlevleri bozmadığını bu testlerle sürekli kontrol ediyoruz. Otomatik testlerin yakalayamadığı durumlar için gerçek iş senaryolarından oluşan bir listeyle elle test yapıyoruz. İptal edilen bir sipariş, yarım bırakılan bir form ya da aynı kaydı aynı anda düzenleyen iki kullanıcı bu listede mutlaka yer alır. Yayından önce sistemi, gerçekçi veri hacmiyle yük altında da deniyoruz. Entegrasyonlar da bu aşamanın önemli bir parçasıdır. Muhasebe programınız, e-fatura sağlayıcınız, ödeme altyapınız, kargo firmanız ya da pazaryeri hesaplarınızla veri alışverişi gerekiyorsa, bu bağlantıları resmi arayüzleri üzerinden kuruyoruz. Karşı taraftaki sistem yanıt vermediğinde verinin kaybolmaması ve işlemin sonradan tamamlanabilmesi için yedek senaryolar tasarlıyoruz. Her entegrasyonun hangi veriyi, ne sıklıkla ve hangi yönde aktardığını belgeliyoruz; böylece bir sorun çıktığında nereye bakılacağı bellidir.
Güvenliği geliştirmenin sonunda eklenen bir katman olarak değil, ilk satırdan itibaren tasarımın parçası olarak ele alıyoruz. Her kullanıcı yalnızca işi için gereken ekranları ve verileri görür; yetkiler rollere göre tanımlanır ve kritik işlemler kayıt altına alınır. Bir çalışanınız ayrıldığında hesabının tek tıkla kapatılabilmesi gibi gündelik ihtiyaçları da güvenlik planına dahil ediyoruz. Şifreleri geri çözülemeyecek biçimde saklıyor, veri alışverişini şifreli bağlantılar üzerinden yapıyor ve yönetim ekranları için iki adımlı doğrulama öneriyoruz. Kişisel verileri işleyen sistemlerde KVKK yükümlülüklerini hesaba katarak hangi verinin neden tutulduğunu, ne kadar süre saklanacağını ve kimlerin erişebileceğini baştan belirliyoruz. Veritabanının düzenli yedeklerini farklı bir konumda tutuyor ve bu yedeklerden geri dönüşün gerçekten çalıştığını belirli aralıklarla deniyoruz. Kullanılan kütüphanelerin güvenlik güncellemelerini takip ediyor, yayına almadan önce bilinen açık türlerine karşı kontrollerimizi yapıyoruz. Olası bir güvenlik olayında ne yapılacağını, kimin haberdar edileceğini ve sistemin nasıl geri getirileceğini anlatan kısa bir plan da hazırlıyoruz.
Kaynak Kod Sizde Kalıyor, Sistem İşinizle Birlikte Büyüyor
Bir yazılım projesinde en çok göz ardı edilen konulardan biri sahipliktir. Projeye başlamadan önce kaynak kodunun, veritabanının ve tüm tasarım dosyalarının teslimden sonra size ait olacağını sözleşmede açıkça yazıyoruz. Kod deposunu sizin hesabınızda açıyor ya da proje sonunda eksiksiz olarak size devrediyoruz. Teslim paketinde kurulum adımlarını, kullanılan kütüphanelerin listesini ve sistemin genel mimarisini anlatan teknik belgeler de yer alır. Sunucu, alan adı ve üçüncü taraf servis hesaplarını da mümkün olduğunca işletmeniz adına açıyor, erişim bilgilerini güvenli bir şekilde teslim ediyoruz. Lisans gerektiren bileşenler kullanılacaksa bunları önceden bildiriyor, lisansları da işletmeniz adına düzenliyoruz. Verileriniz hiçbir zaman bizim kontrolümüzdeki bir sisteme hapsolmaz; istediğiniz an tüm kayıtlarınızı yaygın biçimlerde dışa aktarabilirsiniz. Böylece ileride farklı bir ekiple çalışmaya karar verirseniz, işinizi durdurmadan ve sıfırdan başlamadan devam edebilirsiniz.
Canlıya alınan her sistem zamanla bakıma ihtiyaç duyar. İşletim sistemi ve tarayıcı güncellemeleri, bağlı olduğunuz servislerin değişen kuralları ya da artan kullanıcı sayısı, dün sorunsuz çalışan bir ekranı bugün yavaşlatabilir. Bu nedenle teslimden sonra kapsamı yazılı olarak belirlenmiş bir bakım ve destek dönemi öneriyoruz. Bu dönemde güvenlik güncellemelerini uyguluyor, sunucu kaynaklarını ve hata kayıtlarını izliyor, bildirdiğiniz sorunlara öncelik sırasına göre dönüş yapıyoruz. Sistemin performansını düzenli aralıklarla ölçüyor, veri büyüdükçe yavaşlayan sorguları önceden tespit edip düzeltiyoruz. Acil bir sorunla sıradan bir değişiklik isteğinin nasıl ayrılacağını ve hangisine ne zaman yanıt verileceğini baştan tanımlıyoruz. Destek taleplerini yazılı bir kayıt sisteminde topluyoruz; böylece Batman’daki ekibinizle aramızda hiçbir istek kaybolmaz ve her talebin durumu izlenebilir. Bakım anlaşması yapmamayı tercih ederseniz de belgeler ve kod elinizde olduğu için sistemi dilediğiniz ekiple sürdürebilirsiniz.
İşiniz büyüdükçe sistemden beklentileriniz de değişir. Yeni bir şube, yeni bir ürün grubu ya da farklı bir satış kanalı, mevcut yapıya eklenecek yeni modüller anlamına gelebilir. İlk günden bu büyümeyi hesaba katan bir mimari kurduğumuz için yeni ihtiyaçları mevcut yapıyı yıkmadan ekleyebiliyoruz. Mobil uygulama, müşteri paneli ya da bayi ekranı gibi yeni arayüzler de aynı veri yapısının üzerine kurulabilir. Belirli aralıklarla sizinle oturup sistemin nasıl kullanıldığını, hangi raporlara bakıldığını ve nerede zaman kaybedildiğini birlikte değerlendiriyoruz. Bu görüşmelerden çıkan fikirleri maliyet ve fayda açısından sıralıyor, hangisinin önce yapılması gerektiğine birlikte karar veriyoruz. Bazen en doğru karar yeni bir özellik eklemek değil, kullanılmayan bir özelliği kaldırıp ekranları sadeleştirmektir. Sizinle kurduğumuz bu düzenli iletişim, sistemin işletmenizin gerçek ihtiyaçlarından kopmamasını sağlar. Doğru kurgulanmış bir yazılım, işinizin gereksinimleriyle birlikte büyüyen ve her yeni ihtiyaçta baştan yazılmak zorunda kalmayan bir yatırım olur.
Yazılım Hakkında Sık Sorulan Sorular
Hazır bir paketle bu tür bir çalışma arasındaki fark nerede başlar?
Hazır bir paket, ihtiyacın standart olduğu yerde işi hızlıca görür; ayrım, işleyişin kalıba sığmadığı noktada başlar. Böyle bir çalışmada eldeki kaynaklar, kullanım sıklığı ve ekibin sorumluluğu birlikte tartılır, çözüm işin kendi akışına göre biçimlenir. Bu nedenle bir özel yazılım kararı, hazır seçenekler yetersiz kaldığında anlam kazanır.
İlk sürümde her özelliğin hazır olması şart mı?
Genellikle değildir; en çok işe yarayan çekirdeği önce ayağa kaldırmak hem geri bildirimi erken almayı hem de yanlış varsayımlarla büyük emek harcamamayı sağlar. Hangi özelliğin ilk turda gireceğine kullanım sıklığına ve ekibin önceliğine bakarak karar verilir. Sonraki adımlar, ilk sürümün gerçek kullanımından öğrenilenlerle şekillenir.
Eski kayıtlar yeni düzene taşınabilir mi?
Çoğu durumda taşınabilir; ancak taşımadan önce eski kayıtların ne kadarının hâlâ kullanıldığı ve hangi biçimde tutulduğu incelenir. Kaynağın durumu, verinin miktarı ve sorumlu ekibin ayıracağı zaman birlikte değerlendirilerek bir aktarım yolu belirlenir. Amaç geçmişi olduğu gibi yığmak değil, işe yarayanı düzenli biçimde yeni yapıya almaktır.
Kullanıcı yetkileri sonradan değiştirilebilir mi?
Evet; yetkiler kalıcı bir kalıp değildir, ekip büyüdükçe ya da görevler değiştikçe yeniden düzenlenebilir. Yeni bir yetki tanımlandığında ilgili kullanım durumunda denenir, beklendiği gibi çalıştığı görüldükten sonra devreye alınır. Bu esneklik, düzenin zamanla işe ayak uydurmasını sağlar.
Her dijital çalışma mutlaka mobil uygulama gerektirir mi?
Hayır; mobil bir uygulamanın gerekli olup olmadığı işin nerede ve nasıl yürüdüğüne bağlıdır. İşlem çoğunlukla masabaşında yapılıyorsa tarayıcı üzerinden çalışan bir çözüm çoğu zaman yeterlidir. Sahada, hareket hâlinde kayıt giriliyorsa mobil taraf öne çıkar; bu karar ihtiyaç görülerek verilir, baştan dayatılmaz.
Bakım ile yeni geliştirme birbirinden nasıl ayrılır?
Bakım, çalışan bir düzenin sağlıklı kalmasını; yeni geliştirme ise o düzene daha önce olmayan bir yetenek eklemeyi anlatır. İkisini ayrı tutmak hangi işin sürekli, hangisinin talebe bağlı yürüdüğünü netleştirir. Bu ayrım baştan konuşulduğunda ekip neyin rutin, neyin ayrı bir çalışma olduğunu önceden bilir.
