Kod inceleme sürecinin etkinliği nasıl belirlenir?


14

Kuruluşumuzda bir kod inceleme süreci başlattık ve iyi çalışıyor gibi görünüyor. Ancak, zaman içinde sürecin etkinliğini ölçmek istiyorum, yani kod temiz olduğu için biz hataları bulamıyor muyuz ya da insanlar sadece hataları almak değil mi?

Şu anda etkin bir tam otomatik test sürecimiz yok. Öncelikle manuel test uyguladığımızdan, kod inceleme sürecinin çalıştığından emin olmak için bu aşamada bulunan kusurlara güvenemeyiz.

Bu sorunla daha önce karşılaşan biri var mı veya kod incelemelerini ölçmede neyin işe yaradığına dair düşünceleri var mı?


7
Hata bulmak, kod incelemelerinin tek amacı değildir. Ayrıca kodlama standartlarının güçlendirilmesi, çapraz eğitim, fikirlerin ve teknolojilerin çapraz tozlaştırılması vb. İçin de yararlıdırlar
Jason

Teşekkürler Jason & anladım, ancak bu durumda sürecin, hata önleme sürecine mümkün olan en erken zamanda temel hedefine ulaşmasını nasıl sağlamaya çalıştığımı anlamaya çalışıyorum

@ Johnv2020 Bu onun temel amacı değil ... Bir kod inceleme noktasını tamamen özlüyorsun. Bu, bir jet uçağı filosuna yeni bir güvenlik özelliği koymak, ardından kazaların sayısına göre etkinliğini yargılamaya çalışmak gibi olacaktır. Güvenlik özelliğinin, bir çarpışma meydana gelmeme olasılığını iyileştirdiğini iddia etmek için çok fazla değişken ve diğer faktörler vardır.
maple_shaft

@maple_shaft: Zayıf benzetme. Hata oranlarını ölçmeye çalışmak, kazalardan ölen insanlar için kullanılan tabutların sayısını ölçmeye çalışmak gibidir.
S.Lott

1
Katıldığım tüm kod incelemelerinde, birim ve üst düzey testlerde birçok hata düzeltildi. Yani, kod sadece derlendiği için incelenmeye hazır değildir.
Pete Wilson

Yanıtlar:


7

Kod incelemelerinden toplanabilecek, bazıları projenin yaşam döngüsü boyunca bile uzanan bir dizi metrik vardır.

Toplamayı tavsiye edeceğim ilk metrik, kusur giderme etkinliği (DRE) . Her hata için, hatanın hangi aşamada uygulandığını ve hangi aşamada kaldırıldığını tanımlarsınız. Kullandığınız çeşitli hata algılama tekniklerinin hepsi aynı anda değerlendirilir, bu nedenle gereksinimler incelemeleri, tasarım incelemeleri, kod incelemeleri, birim testleri için eşit olarak geçerlidir. , ve bunun gibi. Özellikle kod aşamasında yakalanan hataların sayısıyla ilgilenirsiniz, çünkü bu muhtemelen birim testlerinizi ve kod incelemelerini kapsayacaktır. Kod aşamasındaki birçok hata, entegrasyon test aşamasına veya hatta alana geçiyorsa, kodlama sonrası uygulamalarınızın değerlendirilmesi gerektiğini bilirsiniz.

Çeşitli toplantı metrikleri de alakalı olacaktır. Bunlar hazırlık zamanı, toplantı zamanı, okunan kod satırları, incelemede bulunan kusurlar vb. Bu verilerden bazı gözlemler yapılabilir. Örnek olarak, gözden geçirenleriniz, incelemeye hazırlanırken kodu okumak için çok fazla zaman harcıyorlar, ancak çok az sorun buluyorlardı. DRE verileriyle birleştiğinde, entegrasyon testinde veya sahada kusurlar test ediliyorsa, ekibinizin sorunları bulabilmek için inceleme tekniklerine odaklanması gerektiği sonucuna varabilirsiniz. Bir başka ilginç not, toplantıda okunan kod satırları (veya başka bir boyut ölçümü), toplantının zamanına kıyasla olacaktır. Araştırmalar, tipik bir kod incelemesinin hızının saatte 150 satır kod olduğunu bulmuştur.

Bu metriklerden herhangi birinde, süreç üzerindeki etkilerini anlamak önemlidir. Neden-çünkü , Beş Neden veya Ishikawa diyagramları gibi teknikler kullanılarak kök neden analizi, kod incelemelerinin (veya başka bir kalite geliştirme tekniğinin) neden etkili olduğunu belirlemek için kullanılabilir.

Ayrıca , Ganssle Grubu'nun denetimleri hakkında bu makaleyle ve Crosstalk'taki Capers Jones'un Arıza Potansiyeli ve DRE hakkında bir makalesi de ilginizi çekebilir .


2

Kod incelemesinin , testin yakalanabileceği veya yakalanmayabileceği oldukça gizli olan problemleri alacağı büyük ölçüde doğrudur . Ancak, bence gerçekten kararlı (neredeyse hatasız) bir koda sahip olabilirsiniz, ancak yine de son derece okunamaz veya oldukça bakımsız olacak şekilde yazılmıştır. O kod incelemesi kaynaklanıyor olabilir Yani DEĞİL kodunda aslında hiçbir gerçek sorunlar varsa hataları bulmak.

Söyledikten, gerçekten sormak istiyorum, neden bir kod inceleme yapmak istersiniz? Önemli olmasının basit nedeni, kodun daha okunabilir, bakımı kolay ve geliştirilebilir olması için geliştirilmesidir. Birçok kişi daha temiz kodları okuyabilmeli ve ondan anlam çıkarabilmelidir. Bu bağlamda, kod inceleme sürecinin en basit amacı temiz kod üretmektir. Etkililiğin ölçüsü, kodun ne kadar temiz olduğudur.

Ölçülebilir bir etkinliğe sahip olmak istediğiniz için - işte önereceğim şey:

  1. Yeniden çalışma miktarıyla ilgili metrik - Belirli bir modül / nesne / iş öğesinde yeniden çalışmanın uygulanma süresi, kodun sürdürülebilirlik açısından ne kadar zayıf olduğunun bir ölçüsüdür . Etkili kod incelemesi uygulandığında, aynı modülde yeniden çalışma talebini ne sıklıkta azaltabiliriz?

  2. Her değişiklik talebinin gerçekleştirdiği değişiklik miktarıyla ilgili metrik. Bir değişiklik isteği her gerçekleştiğinde - zayıf faktörlü bir kod her zaman daha fazla sayıda modülün etkilenmesini sağlar. Bir önlem muhtemelen bir kod incelemesinden sonra - a geçmişte benzer bir değişiklik talebi için bu tür bir değişiklik yayılmasının azalması olduğunu gösterecektir ?

  3. Bir değişiklik isteğinin yanıtlanabileceği ortalama hızla ilgili metrik. Kod daha temiz olduğunda - daha hızlı ve daha iyi, gerekli değişikliklere cevap vermektir. Kod inceleme sürecinde temizlendikten sonra, benzer boyut talebini yanıtlamada herhangi bir hız bulduk.

Kesin ölçü birimleri koymuyorum - muhtemelen bu yaklaşımdan bu konuda daha doğru önlemler alabilirsiniz. Yukarıdaki yaklaşımlarda bu konuda daha fazla uzatma formalizmi olabilir.

Temel olarak, benim açımdan kod inceleme sürecinin tanımladığı hata sayısına bakmak yerine; etkinliği, kod incelemesinin kodu daha temiz, daha yalın ve bakımı kolay bir duruma getirip getiremeyeceği açısından ölçmeliyiz; Dolayısıyla, gelecekte benzer değişiklik taleplerinin yanıtlanmasının daha verimli hale geldiğini görürsek, bu etkinliği ölçebiliriz.


1
Bir "hata" olmamasına rağmen, okunabilirlik, bakım kolaylığı veya evrilebilirlik eksikliği kodda bir kusurdur ve bu şekilde ele alınmalıdır. Bunların, işlevdeki gerçek hatalarla birlikte bir kusur izleyicide izlenememelerinin bir nedeni yoktur. Bunu yaparak, kodlama aşamasında kusurla ilgili bir dizi diğer metriği izleme yeteneğini de açabilirsiniz.
Thomas Owens

1
Bir geliştirici olarak temiz kod görmek istiyorum. Ancak, kod incelemeleri çok maliyetlidir. Bu nedenle, bir projeyi finanse eden bir yönetici olarak, temiz kod, geliştirme bütçeme% 5-10 maliyet ve zaman eklemek için gerçekten zorlayıcı bir neden değildir. Özellikle (yönetici olarak) bonusum / incelemem mevcut projeyi zamanında / bütçede tamamlamaya bağlı olduğunda. Bu yüzden kod değerlendirmeleri için ana nedeni temiz kod almak için herhangi bir iyi yönetici ROI buna değer olmadığını söyleyecek olduğunu düşünüyorum. Uzun vadeli getiriler hakkında tartışabilirsiniz, ancak o zamana kadar / bütçeye uygun olarak yöneten yönetici, bu sorundan uzaklaşacak
Dunk

...sorun. Kod incelemelerini tanıtan yönetici başarılı bakım projelerine sahip olacak, ancak orijinal projeyi zamanında / bütçede tamamlamayan yöneticiler gibi tamamlamamış olacak. OTOH, eğer kod incelemeleri, gözden geçirme eksikliğinin olmadığı ve kod inceleme yöneticisinin projesini daha zamanında / bütçede tamamlamasına izin veren hataları bulmaya yardımcı olduysa, o zaman farklı bir hikaye. Satılması gereken hikaye bu. Bu da temiz kodun kod incelemelerinin nedeni olamayacağı anlamına gelir.
Smaç

@Dunk Bir kod incelemesinin maliyeti, kod incelemesinin türüne bağlıdır. 3-5 okuyucu ile resmi bir inceleme, bir moderatör ve yazarın varlığı (bir odada 5-7 kişi) pahalıdır. 10-15 dakika boyunca kod üzerinde başka bir geliştiriciden oluşan bir masa kontrolü de bir kod incelemesi, ancak çok daha az resmi ve çok daha ucuz. Çift programlama bile bir tür "kod inceleme" tekniği olarak düşünülebilir. Uygun teknik, kodun kritikliğini, istenen hata oranını ve yatırılacak zaman / para miktarını içeren (ancak bunlarla sınırlı olmayan) faktörlerle belirlenir.
Thomas Owens

@Dunk - Sanırım "kod yazmamız gerekir" kararını proje yöneticisinin elinden almak ve uzun vadede yazılım platformu için sorumluluğu olan yöneticinin eline vermek için bir tartışma yaptınız. IMO, genel anlamda, iyi kod incelemeleri için geliştirmeye% 5-10 daha fazla harcama yapmak, geliştirilmekte olan sistemin uzun ömürlülüğü açısından değerli bir yatırımdır. Ama muhtemelen mevcut projenin bütçesi ve zaman çizelgesi açısından değil.
Dawood, Monica
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.