Yazılım
- Anasayfa
- Yazılım
Ekranlar çizilmeden önce süreci netleştirmek
Bir işletmenin günlük işleyişi yeterince anlaşılmadan arayüze geçmek, ilerleyen haftalarda tekrar tekrar bozup düzeltilen ekranlar doğurur. Özel yazılım geliştirmeye başlarken ilk işimiz; hangi bilginin nereden doğduğunu, kimin hangi adımda karar verdiğini ve işin nerede beklemeye takıldığını birlikte çıkarmaktır. Arayüzle ilgili kararlar ancak bu zemin oturduktan sonra geliyor.
İki işletme dışarıdan benzese de kuralların ayrıntısı ve istisnaları hiçbir zaman birebir aynı olmuyor. Bu yüzden mevcut kayıtları, ekibin gündelik beklentilerini ve sıra dışı durumların şimdiye dek nasıl çözüldüğünü önce yerinde inceliyoruz. Geliştirmeye, ancak bu ayrıntılar açık biçimde ortaya konduktan sonra başlıyoruz.
Yayına almadan önce içeriğin doğruluğunu, farklı cihazlardaki davranışı ve yönetim tarafındaki günlük görevleri gerçek örnekler üzerinden deniyoruz. Böylece ortaya çıkan kurgu, Iğdır merkezli bir ekibin elinde günlük tempoyu aksatmadan çalışıyor ve zamanla yeni ihtiyaçlar eklendiğinde de düzenini koruyabiliyor.
Yetkileri gerçek görev tanımına göre daraltmak
Yetki dağıtımı gevşek bırakıldığında, bir çalışanın yanlışlıkla dokunduğu tek bir alan koca bir kaydı bozabiliyor. Her rolün yalnızca kendi işini ilgilendiren bölümlere erişmesini sağlamak, olası hataların yayılma alanını daraltıyor ve bir sorun çıktığında nereye bakılacağını en baştan belli ediyor.
Rolleri kurarken unvan yerine kişinin gerçekte yürüttüğü işi esas alıyoruz; çünkü aynı unvanı taşıyan iki kişi çoğu zaman farklı görevler üstlenir. Erişimi fiilen yapılan işe göre biçimlendirmek, ne eksik yetkiden doğan tıkanmayı ne de gereğinden geniş yetkinin getirdiği riski geride bırakıyor.
Kimi işlerde yetki kalıcı değil geçicidir; bir çalışan izne ayrıldığında yerine bakan kişinin sınırlı ve süreli bir erişimle devreye girmesi gerekir. Bu tür devirleri baştan tanımlamak, acele durumlarda apar topar şifre paylaşmanın önüne geçiyor ve iş biter bitmez o erişimin kendiliğinden kapanmasını sağlıyor.
Alan adlarını ortak bir tanım listesinde birleştirmek
Bir kurumda aynı bilgi ekipten ekibe farklı adlarla tutulduğunda, rapor toplama vakti geldiğinde sayılar birbirini tutmuyor. Özel yazılım geliştirirken bunun önüne geçmek için ortak bir tanım listesi oluşturuyor; bir durumun, bir ölçünün ya da bir kısaltmanın hangi kelimeyle ve hangi biçimde kaydedileceğini en baştan tek bir karşılığa bağlıyoruz.
Bir alanın serbest metinle mi yoksa hazır bir seçenek kümesinden mi doldurulacağı, sonradan yapılacak her aramayı ve gruplamayı doğrudan etkiliyor. Sık tekrar eden değerleri önceden tanımlı bir listeye bağlamak, aynı şeyin onlarca farklı yazımıyla birikmesini engelliyor ve kayıtların birbiriyle eşleşmesini güvenilir kılıyor.
Ortak tanım listesi durağan değildir; yeni bir alan eklendiğinde onu da aynı mantığa oturtmak gerekir. Bu listeyi yaşayan bir belge gibi tutmak, sonradan gelen her eklemenin var olan düzene uymasını sağlıyor ve yıllar geçtikçe kaydın anlamını yitirmeden okunabilir kalmasına yardımcı oluyor.
Onay adımlarını herkesin görebileceği yere taşımak
Onayların sözlü olarak, telefonda ya da koridorda alındığı yerlerde hiç kimse işin gerçekte nerede durduğunu bilemiyor. Adımları sistemin içine taşıyıp her birinin durumunu görünür kılmak, bu bende değildi türünden kopuklukları ortadan kaldırıyor ve bekleyen işin o an kimin önünde olduğunu net biçimde gösteriyor.
Bir talebin reddedilmesi çoğu zaman kabul edilmesinden daha fazla bilgi taşır. Geri çevrilen işin hangi eksikle ve neden geri döndüğünü kaydın yanında tutmak, aynı talebin ikinci kez aynı hatayla gelmesini önlüyor ve düzeltmenin doğrudan gereken yere yapılmasına imkân veriyor.
Her onayın tek sıra hâlinde ilerlemesi de gerekmez; birbirini beklemeyen adımlar aynı anda yürüdüğünde toplam süre belirgin biçimde kısalır. Belirli bir eşiğin altındaki rutin işleri ayrıca onaya sokmadan geçirmek ise ekibin dikkatini gerçekten karar gerektiren noktalara ayırmasına olanak tanıyor.
Uyarıyı yalnızca ilgili kişiye ulaştırmak
Bir uyarı ekibin tamamına gittiğinde herkes nasılsa başkası ilgilenir diye düşünür ve iş çoğu zaman kimsenin üstünde kalmaz. Haberin doğrudan o işi yürütecek kişiye ulaşması, hem sorumluluğu netleştiriyor hem de kritik bir adımın gözden kaçma ihtimalini gözle görülür biçimde azaltıyor.
Bir bildirimin yerine ulaşıp ulaşmadığının belli olması, en az gönderilmiş olması kadar önemlidir. Önemli bir uyarının açılıp görülene dek takipte kalması, gün sonunda benim haberim yoktu denen durumları ortadan kaldırıyor ve gerçekten okunduğunda ilgili adımın kapanmasını sağlıyor.
Bir uyarının işe yaraması için tek başına bir şey olduğunu söylemesi yetmez; hangi kaydı, neden ilgilendirdiğini de taşımalı ve tek dokunuşla doğru ekrana götürmelidir. Bağlamı yanında gelen bir bildirim, kişinin ayrıca arama yapmadan işe koyulmasını sağlıyor ve gereksiz ileri geri gidişi ortadan kaldırıyor.
Saha kullanımını mobil koşullara göre kurmak
Sahadaki bir çalışan çoğu zaman ayaküstü, tek eliyle ve kimi zaman güneş altında ekrana bakar; masabaşı için düşünülmüş sık ve küçük alanlar bu koşulda işe yaramaz. Ekranı geniş dokunma hedefleri ve az sayıda zorunlu alanla kurmak, kaydın olay yerinde, sonraya ertelenmeden girilmesini mümkün kılıyor.
İki kişinin aynı kaydı, biri sahada biri ofiste, farklı anlarda güncellemesi mobil çalışmanın en sinsi sorunudur. Hangi değişikliğin geçerli sayılacağını ve bir çakışma olduğunda kimin uyarılacağını baştan kurala bağlamak, bağlantı geri geldiğinde verinin sessizce bozulmasını değil, düzgün biçimde birleşmesini sağlıyor.
Sahadaki kişi uzun bir form doldurmak yerine çoğu zaman bir fotoğraf, bir kod okutması ya da bir konum bırakmak ister. Bilgiyi doğduğu anda, elle yazmaya en az yer bırakacak biçimde toplamak; hem kaydı hızlandırıyor hem de yazım kaynaklı hataların baştan önüne geçiyor.
Dış bağlantıları denetimli biçimde açmak
Bir sistemi dışarıdaki başka bir servise bağlamak, o servisin her değişiminden etkilenmeyi de göze almak demektir. Özel yazılım kurarken bağlantıyı, karşı taraf yarın biçim değiştirse bile kendi işleyişimizi bozmayacak bir ara katman üzerinden kuruyor; hangi verinin hangi yöne ve ne sıklıkla akacağını da bu katmanda tek yerde tanımlıyoruz.
Dışarıdaki bir servisin yanıt vermediği anlar önceden hesaba katılmadığında, tek bir aksama bütün işi durdurabiliyor. Başarısız kalan bir isteğin bir süre sonra yeniden denenmesi, ama aynı işlemin yanlışlıkla iki kez yürümemesi için işaretlenmesi; iki taraftaki kaydın birbirinden kopmadan aynı noktada kalmasını sağlıyor.
Dışarıyla kurulan her bağlantı, zamanla unutulan bir açık kapıya dönüşmemelidir. Karşı tarafa verilen erişimin neyi kapsadığını ve ne zaman kullanıldığını kayıt altında tutmak, gerektiğinde de tek bir yerden kapatabilmek; paylaşımı sürdürürken kurumun kendi verisi üzerindeki denetimini elden bırakmamasını sağlıyor.
Hata kayıtlarını okunur ve izlenebilir bırakmak
Bir hatanın yalnızca kendisi değil, çevresindeki koşullar da kayda geçmelidir; aynı işlem bir kullanıcıda sorunsuz yürürken başkasında duruyorsa fark çoğu zaman o çevrede saklıdır. Kaydın yanına hangi sürümde, hangi ekranda ve hangi veriyle karşılaşıldığını yazmak, aynı durumu yeniden kurmaya uğraşmadan kaynağa gitmeyi kolaylaştırıyor.
Her hata aynı ağırlıkta değildir; kullanıcının bir alanı eksik bırakması ile sistemin beklenmedik biçimde durması bambaşka şeylerdir. Bu ikisini baştan ayırmak, sıradan uyarıların yığın içinde gerçek arızayı gölgelemesini önlüyor ve ekibin dikkatini gerçekten müdahale isteyen olaya yönlendiriyor.
Tek tük görülen bir hata çoğu zaman göze batmaz; oysa aynı noktanın kısa aralıklarla yinelenmesi, büyümekte olan bir sorunun ilk işareti olabilir. Hataların nerede ve ne sıklıkla toplandığını bir arada izleyebilmek, dağınık bakıldığında kaçan bu yığılmayı erkenden görüp henüz küçükken ele almayı mümkün kılıyor.
Oturum ve erişim güvenliğini senaryolarla sınamak
Güvenliğin gerçekten işlediğini görmenin yolu, onu yalnızca kurmak değil, kötüye kullanılabileceği durumları önceden canlandırmaktır. Bir yetkinin sınırını aşmayı deneyen ya da başkasının oturumunu ele geçirmeye çalışan durumları baştan kurgulayıp sınamak, açıkların gerçek kullanımda değil, henüz denemedeyken ortaya çıkmasını sağlıyor.
Bir hesabın aynı anda birden çok yerden açık kalması ya da bırakılmış bir oturumun başkasınca sürdürülmesi, çoğu ihlalin sessiz başlangıcıdır. Oturumun makul bir süre sonra kapanması, olağan dışı bir girişte yeniden doğrulama istenmesi ve açık oturumların görülebilmesi, bu tür sessiz girişleri belirgin biçimde zorlaştırıyor.
Güvenlik önlemleri, meşru kullanıcıyı kapı dışında bırakacak kadar katı olduğunda çoğu zaman etrafından dolaşılır ve asıl amacını boşa çıkarır. Şifre sıfırlama ya da kilitlenmiş bir hesabı açma gibi yolların da baştan denenip pürüzsüz çalıştığından emin olmak; korumayı sıkı tutarken günlük işi tıkamamayı mümkün kılıyor.
Yedekleme ve geri dönüşü baştan planlamak
Bir yedeğin var olması tek başına güven vermez; asıl soru, gerektiğinde ne kadar sürede ve ne kadar eksiksiz geri dönülebildiğidir. Hiç denenmemiş bir yedek çoğu zaman tam ihtiyaç anında beklenen kaydı vermediğinden, geri yükleme adımını önceden gerçek bir provayla sınıyor ve ne kadar zaman aldığını da ölçüyoruz.
Geri dönüşte yalnızca veriyi düşünmek çoğu zaman yetmez; sistemin çalıştığı ayarlar, tanımlar ve bağlantılar da aynı anda yerine gelmelidir. Yalnızca kayıtları değil, sistemi bir bütün olarak ayağa kaldıracak her parçayı yedeğin kapsamına almak, dönüşün yarım kalıp yeni bir soruna yol açmasını önlüyor.
Yedeğin ne kadar geriye gittiği, en az ne sıklıkla alındığı kadar önemlidir; bugünkü kopya, fark edilmesi günler süren bir bozulmayı çoktan içine almış olabilir. Farklı zamanlara ait birkaç kopyayı, üzerine sonradan dokunulamayacak biçimde ve asıl ortamdan ayrı bir yerde tutmak, tek bir arızanın hem veriyi hem yedeğini birden götürmesini engelliyor.
Sürüm geçişlerini ölçülü adımlarla yürütmek
Bir güncellemeyi yayına almanın en zor yanı, sistemin o sırada gerçek işin ortasında olmasıdır; kimse gününü yarıda kesen bir değişiklik istemez. Özel yazılım üzerindeki her değişikliği önce ayrı bir ortamda sınıyor, ardından yükün düşük olduğu bir zaman diliminde ve küçük bir kesime açarak ilerliyoruz; beklenmedik bir durumda hızla eski hâline dönebiliyoruz.
Bir güncellemenin neyi değiştirdiği yazılı kalmadığında, sonradan çıkan bir sorunun hangi adımdan geldiğini bulmak neredeyse imkânsızlaşır. Her sürümü, getirdiği değişiklikle birlikte kısa notlarla işaretlemek; bir davranışın tam olarak ne zaman ve neyle birlikte ortaya çıktığını geriye doğru izlemeyi ve gerektiğinde yalnızca o adımı geri almayı mümkün kılıyor.
İyi düşünülmüş bir yenilik bile, kullanıcı ona hazırlıksız yakalandığında önce tereddütle karşılanır. Değişikliği yayına almadan önce kısa ve sade bir bilgilendirme yapmak, eski akışı da bir süre daha çalışır bırakmak; insanların yeni düzene kendi temposunda geçmesine ve verimin geçiş sırasında düşmemesine yardımcı oluyor.
Eğitim ve devir kayıtlarını eksiksiz bırakmak
Bir sistem, onu her gün kullanacak kişiye anlatılmadan teslim edildiğinde, en özenli kurgu bile kısa sürede eski alışkanlıklara yenik düşer. Eğitimi soyut bir tanıtım gibi değil, ekibin gerçekten yaptığı işler üzerinden kurmak; öğrenilenin ertesi gün masabaşında doğrudan karşılık bulmasını sağlıyor.
Bir bilgiye ihtiyaç duyulduğu an ayrı bir kılavuz aramak zorunda kalmak, çoğu zaman o bilginin hiç kullanılmaması demektir. Yardımı sistemin içine, ilgili ekranın hemen yanına yerleştirmek; Iğdır’daki ekibin bir işi yaparken takıldığı noktada cevabı yerinde bulmasını ve akışı bölmeden sürdürmesini sağlıyor.
Bir işin bittiğini söylemek yetmez; hangi hesapların, erişimlerin ve kaynakların artık işletmenin sorumluluğuna geçtiği tek tek belli olmalıdır. Devri, üzerinde uzlaşılmış bir kontrol listesiyle kapatmak; teslimden sonra şu erişim kimde kaldı sorusuna yer bırakmıyor ve iki tarafın da işi aynı noktada bitmiş saymasını sağlıyor.
Yazılım Sürecine Dair Sık Sorulanlar
Özel yazılım hangi durumlarda gerçekten gerekli olur?
Hazır bir araç, işin akışını kendi kalıbına sığdırmayı zorunlu kıldığında ilk pürüzler baş gösterir. Kendi kurallarınıza uymayan bir onay sırası, dışarıdaki bir sisteme bağlanma ya da hazır raporların vermediği bir kesit gerektiğinde özel yazılım anlamlı bir seçenek hâline gelir. Ölçüt çoğu zaman şudur: aracı işinize mi, yoksa işinizi araca mı uyduruyorsunuz.
Bir projenin ne kadar süreceği baştan nasıl kestirilir?
Süre, işin kapsamı görünür hâle gelmeden sağlıklı biçimde söylenemez. Önce roller, ekranlar, iş kuralları, dışarıyla kurulacak bağlantılar ve sınanacak durumlar tek tek çıkarılır; ardından bunlar önceliğe göre aşamalara bölünür. Böylece takvim tek bir söz olmaktan çıkıp, üzerinde ilerledikçe netleşen bir plana dayanır.
Hâlihazırda kullandığımız programlarla bağlantı kurulabilir mi?
Belgelenmiş ve güvenli bir erişim yolu sunan sistemlerle bağlantı çoğu zaman kurulabilir. Bu noktada verinin hangi yöne akacağı, bir aksama olduğunda ne yapılacağı ve karşı tarafın hangi yetkiyle sınırlı kalacağı en baştan yazılır. Erişimi belgelenmemiş sistemlerde ise önce bu zeminin oluşturulması gerekir.
Kaynak kod ve hesapların sahipliği kimde kalır?
Bunun nasıl olacağı sözleşmede açıkça belirtilir ve proje başlamadan konuşulması en sağlıklısıdır. İşletmenin kullanacağı hesapların, erişimlerin ve üretilen kaynakların kime ait olacağı baştan netleştiğinde, ilerleyen aşamada sahiplikle ilgili bir belirsizlik kalmaz. Bu konuyu sona bırakmak çoğu zaman gereksiz anlaşmazlık doğurur.
Yayına alındıktan sonra bakım nasıl ilerler?
Yayın, işin bitişi değil sürekliliğin başlangıcıdır. Ortaya çıkan hataların giderilmesi, güvenlik güncellemelerinin zamanında uygulanması ve sistemin sessizce izlenmesi bir arada yürütülür; yeni yetenek ekleme ise bunlardan ayrı, kendi planı olan bir iş olarak ele alınır. Bu ikisini karıştırmamak, sürmekte olan işi öngörülebilir kılıyor.
Kullanıcı sayısı arttıkça sistem buna ayak uydurabilir mi?
Sistemin iç yapısı, bugünkü değil beklenen kullanıma ve veri büyüklüğüne göre kurulduğunda artan yük sorun olmaktan çıkar. Nerede yavaşlama başladığını gösteren ölçümleri baştan yerine koymak, büyüme kararlarını tahmine değil somut verilere dayandırmayı sağlar. Böylece kapasite, ihtiyaç doğduğunda telaşsız biçimde genişletilebilir.

