25 Eylül 2012 Salı

Süreç Nedir?


Genel geçer tanım olarak aşağıdakileri bakabiliriz:

"Girdileri çıktılara çeviren iç içe geçmiş veya karşılıklı ilişkili etkinlikler dizini" (ISO 9001:2000)

"Birbirleri ile ilgili girdileri çıktılara dönüştüren bir takım etkinlikler" (IEEE 12207)

Her iki tanımda aşağı yukarı aynı anlama geldiğini ya da aynı gibi hissettirdiğini söyleyebiliriz, değil mi? En azından bana, aynı şeyi aynı kelimelerle söylememeye çalışılmış hissini veriyor. Ancak, aynı şey hep aynı şeydir. Tanımını da aşağı yukarı aynı verirsiniz ne kadar istesenizde farklı olmayı.

Evet, süreç bir takım girdileri bir takım çıktılara dönüştüren etkinlikler bütünüdür. Bununla birlikte süreci yerine getirilmesini sağlayacak kaynaklarınızın belirli olması gerekmektedir. Süreci işletirken kontrol noktalarında doğru işi yaptığınızdan emin olmak size hem zaman hem de kaynak tasarrufu yapmanızı fazlasıyla sağlar. Belirlenen ölçütler (metrikler) yardımı ile elde ettiğiniz ölçümler hem o andaki gidişatınızı hem de daha sonrasında sürecinizi iyileştirmenizi sağlar. 

Bunlar ışığında bir süreç tanımı yaparsak şöyle söyleyebiliriz :

Bir takım kaynakların kullanılarak girdileri çıktılara çevirmek için ilgili etkinliklerin gerçeklenmesi, bu sırada da belirlenmiş kontrol noktalarında ölçümler elde edilmesi etkinliklerinin bütününe süreç denir.

En klişe gösterimi de aşağıdadır: 



Şunu Bi Gözden Geçiriver Dilaver...


Çalıştığımız şirketlerde, özellikle yazılım şirketlerinde, modeller, standartlar kullanmaya başladıkça önümüze değişik değişik kavramlar çıkmaya başlar. Bunlardan birisi de gözden geçirme kavramıdır.

‘Ramazan Abi, şu rapora bi bakıver’

yerine

‘Ekteki Yıllık Gelişim Raporu’nu review ediniz. Commentlerinizi track change açarak dokümana giriniz. Şu gün şu saate kadar geri iletiniz, lütfen.’ diye e-postalar almaya başlarsınız.

‘Arkadaşım, şimdi Hasan Bey bu başlığı istemez, şu rengi beğenmez, şurayı biraz daha geniş anlar, şurayı kısa geç...’

şeklindeki konuşmaların yerini

‘Typo: rapro yerine rapor’,
‘Bu cümle açık değil, hangi user hangi task’ı yapıyor belli değil.’,
‘Bu çözüm bu performansı karşılamıyor, dakikada 160 çok fazla, ürün en fazla dakika 100 setting alıyor.’, ‘Bu kutuyı bir tık sağa alalım.’

Gibi yarı türkçe yarı ingilizce, zaman zaman ayrıntılı ve çoğumuza göre sıkıcı ve gereksiz cümleleri daha sık görmeye hatta yeri gelir yazmaya başlarsınız.

Her gözden geçirme işinde içinizden aşağıdaki cümle geçer, di mi:

‘Ya ne zaman işi yapacağız kardeşim ya. Bıraksalar da kodumuzu yazsak, işimize baksak.’

Şimdi ben size gözden geçirme sürecinin akış diyagramını çizebilirim, her noktanın detayını tek tek açıklayabilirim. Ancak yapmayacağım, sıkıcı olabilir. Benim bu sitedeki görevim okuyucuya hap çözüm sunmaktır.

Gözden geçirme, ingilizcesi review olan etkinlik çok ucuz bir etkinliktir. İhtiyacınız olan şeyler şunlardır: 

Yazdığınız materyali anlayan 1-3 kişi, gözden geçirme sonuçlarını işleyecek bir yer (araç, notepad, word/excel dosyası, defter), yeteri kadar zaman. Tüm bunlar ile çok ucuza yanlış, eksik,belirsiz gibi noktaları kolayca elde edebilirsiniz. Yani ilgili ürün müşteriye, bir başka departmana, kabul testine, test mühendisine vb. gitmeden önce kolayca skıntıları ortadan kaldırabilirsiniz. Statik test yöntemidir gözden geçirmek. Gözden geçirme etkinliğinde verdiğimiz yorumların (bulguların) başka bir kişi okuduğunda bize ihtiyaç duymadan anlaşılması etkinliğin verimliliğini arttıracak en önemli noktadır.

Şimdiye kadar anlattıklarımızı örnekleyelim:

Hazırladığınız ürünü 2 kişiye gözden geçirmesi için ilettik. Her biri 3 saat incelediler. 1’er saatte bulgularını dokümante ettiler. Bu sonuçları size geri ilettiler. Siz bulguları 1 saat incelediniz. Kabul ettiğininiz, etmediğiniz ve birbiri ile aynı olan bulguları belirleyip gözden geçiren kişilerle (özellikle kabul etmediğiniz) bulguları değerlendirmek için 1 saatlik bir toplantı yaptınız. Toplantıdan sonra kabul edilen bulgulara göre gerekli güncellemeleri 2 saatte yaparak ürününüzü son haline getirdiniz. Bulguları ürününüze uyguladığınızı belirten bir e-postayı gözden geçirenlere ilettiniz. Onlar da bulguların uygulanıp uygulanmadığını kontrol ederler. Böylelikle bir ürün için gözden geçirme süreci kapanmış olur.

Toplam olarak harcanan süreye şöyle bakalım:

2 kişi * 3 saat inceleme
2 kişi * 1 saat bulgu dokümantasyonu
1 kişi * 1 saat bulguların incelemesi
3 kişi * 1 saat bulguların değerlendirmesi
1 kişi * 2 saat ürün güncelleme  
Toplam = 14 saat

Sadece 14 saat harcayarak daha sonra karşılacağınız belki de büyüyecek olan problemleri daha hazırlama aşamasında çözmüş oldunuz.

Her bir bulgunun özelliğini de tutabilirseniz sizden iyisi olmaz. Ancak bu konuyu daha sonraya bırakalım.

Etkin ve verimli gözden geçirmeler.                 

19 Eylül 2012 Çarşamba

Nedir Şu İzlenebilirlik Denen Şey?


Yazılım sektöründe hangi kademe çalışanı olursanız olun duyarsınız şu ‘izlenebilirlik’ lafını. Söyleyene içtenlikle katılırsınız sohbetinize:

-         ‘Hmm, evet evet, X Hanım, çok haklısınız. İzlenebilirliğe bu projede daha çok dikkat edelim’. (der dışından)
‘İyi de nedir bu izlenebilirlik? Bugüne kadar yapmıyordum, bir sıkıntısını da görmedim. Bundan sonra yapsam ne geçecek elime?’ (düşünür içinden)

Ben şahsen yukarıda hem dış sesine hem iç sesine kulak verdiğim kişiyi her iki söylemi için de haklı buluyorum hatta önemli 2 konuya –içgüdüsel olarak- parmak bastığı için de tebrik ediyorum. Konulardan birincisi şudur; izlenebilirlik sağlandığında bu bir son değil başlangıçtır ve her projede iyileşmelidir, gelişmelidir. İkinci önemli konu ise izlenebilirliğin sağlanması için harcanan çabanın yapılan çalışmaya katacağı değerin farkında olunmasıdır ki her iki konuda birbirine sıkı sıkıya bağlıdır.

(İzlenebilirlik kavramını ele almak istiyorum yazının bu kısmından sonra. Kitap tanımı vermeyeceğim. IEEE yazılım mühendisliği sözlüğünde açıklamasına bakabilir teknik ayrıntı meraklıları, ki bizim izleyici kitlemiz hap çözüm meraklılarıdır. İlgili kaynak için bkz: 610.12-1990 - IEEEStandard Glossary of Software Engineering Terminology)

İzlenebilirlik sözcüğü traceability sözcüğünün tirkçeleştirilmişs halidir bildiğiniz gibi. Sanırım köken olarak trace yani iz, izlemek sözcüğünü temel aldıklarını düşünebiliriz. Ben de izlemek sözcüğünden yola çıkarak konuya yaklaşacağım.
İzlemek deyince benim aklıma kötü amerikan filmlerindeki ‘öndeki arabayı izle’ repliği geliyor maalesef (ben de kendime üzülüyorum!). Öndeki araba eninde sonunda bir yere ulaşır. Aracı arkadan izleyen kişi bir haritaya ya da kendi bilgisine dayanarak izlediği kişinin vardığı yeri söyler. Örneğin 720 Fifth Avenue, New York.

Peki, varsayalım ki öndeki aracı izleyen kişi New York’un yerlisi değil, San Francisco’lu. Elinde haritada da yok. Üstelik bindiği arabayı kullanan taksi şoförü de ingilizce konuşamıyor (etnik köken vererek ayrımcılık yapmayacağım, ingiliz aksanı ile konuşan kişileri de anlamak biraz zor). Peki şimdi ne olacak? San Francisco’lu kardeşimizin öndeki arabayı izlerken geçtiği önemli yerlere ir çentik atmalı. Bir takım sorulara yanıt vermeli izleme işi bittiğinde: aracı tam olarak nerede izlemeye başladı, izlerken dikkat çekici yerlerden geçti mi, bir yerlerde özellikle durdu mu, kimse ile konuştu mu, varılan yer neresi, varılan yerden geriye doğru başlangıca gidebilir mi vb gibi.

İşte benim yazılım projelerinde önem verilmesini önerdiğim izleme işi aşağı yukarı böyle bir şey. Müşteri gereksinimlerinin tüm proje yaşam döngüsü boyunca izlenmesi. Yani analiz, tasarım, kodlama, test, kurulum, bakım gibi aşamalarda  dönüşüme uğradığı yerler, başına gelen değişiklikler, son durakta hallerinin ne olduğunun izlenmesi, kayıt altına alınması. Hatta herhangi bir noktada geriye dönülerek gereksinimlere ulaşılabilmesidir izlenebilirlik. Bu işin yapılması da izlenebilirliğin sağlanmasıdır.

Bu noktada, benim örneğime bağlı olarak şunu da karşı tez olarak sunulabilir:

-         ‘Ama X Hanım, biz bu projenin yerlisiyiz. Sonunda nereye gideceğimizi biliyoruz. (der dışından)
‘Hah, çık bakalım şimdi işin içinden, hehe’ (diye kıs kıs güler içinden)

Haklıdır da. Gidilecek yönü işi yapandan daha iyi bilen yoktur. İşini çok iyi bilen kişiye izlenebilirlik daha da faydası dokunur. Örneğin ana gereksinimlerin alt gereksinimlerine ayrıştırılması sırasında hiçbir noktanın eksik kalmadığından emin olmasını sağlar. Test sürecine daha hazırlıklı girilmesinde önemli bir dayanak noktası olur.

Kıssadan hisse, faydalıdır bu izlenebilirlik. Deneyiniz.

Hepinize kolay gelsin...