bir mühendisin sürecini analiz etmenin zarif bir yolu var mı?


12

Taahhütlerin ölçülmesinin uygun olmadığı konusunda birçok düşünce mevcuttur .

Taahhütlerden daha fazla kaynak çekmeye çalışan herhangi bir çalışma yapıldı mı - örneğin:

  • tarama kalıpları
  • IDE çalışması (ön taahhüt)
  • boşta kalma süresi
  • çoklu görev

Bu önlemleri almanın kolay bir yolunu düşünemiyorum, ama herhangi bir çalışma yapılıp yapılmadığını merak ediyorum.


Kişisel bir notta, birinin performans ölçütleri için bunları kullanmaksızın (veya yokluğunda) kendi 'metrikleri' üzerine düşünmenin değerli olabileceğine inanıyorum. IE alışkanlıklarınızı yansıtmak için önyargısız bir yol. Ancak bu soru-cevap ötesinde bir tartışma konusudur.

Yanıtlar:


6

Zarif düşünüp düşünmeyeceğinizden emin değilim, ancak Watts Humphrey tamamen kendi üretkenliğinizi ölçmekle ilgili Kişisel Yazılım Süreci adlı bir kitap yazdı. Masanızda geçirilen süre ve kesintiler, çeşitli yazılım yaşam döngüsü etkinlikleri üzerinde harcanan zaman, kod miktarı başına hata gibi girdilere ilişkin metrikleri özetledi. Kısa versiyonu veren teknik bir rapor var:

http://www.sei.cmu.edu/library/abstracts/reports/00tr022.cfm

Bir geliştirici kodunun kalitesi gibi bir şeye bakmak istiyorsanız, Chidamber ve Kemerer nesne yönelimli kod için çeşitli metrikler önerdi.

Nesneye yönelik kod için metrikler

  • kalıtım ağacının derinliği,
  • ağırlıklı yöntem sayısı,
  • üye işlevlerinin sayısı,
  • çocuk sayısı ve
  • nesneler arasında bağlantı.

Bir kod tabanı kullanarak, bu metrikleri kovaryant analiz kullanarak hata yoğunluğu ve bakım çabasıyla ilişkilendirmeye çalıştılar. Daha sonraki çalışmalar, CK Metriklerine ve daha sonra önerilen bazı ek metriklere göre özelliklerini belirlemek için yüzlerce Source Forge Java projesinde benzer analizler yaptı.

Kod İncelemeleri bağlamında ortaya çıkan metrikler

Kusurlar birçok kritere göre kategorize edilebilir:

  • şiddeti: (büyük, küçük, kozmetik, araştırın / bilinmeyen),
  • tip (mantık, yazım hatası, yazım, standart ihlali kodlama vb.),
  • başlangıç ​​/ aşama sınırlaması (gereksinimler, tasarım, kod vb.).

Ayrıca hazırlık ve inceleme oranları (gözden geçiren başına süre, kod satırı başına süre) ve kusur yoğunlukları ( KLOC (bin kod satırı) başına, müfettiş / denetçi zamanı başına dakika) vardır.

Bu değerlerin kontrol grafiklerine göre çizilmesi bize süreç için sınırlar içinde olup olmadığımızı gösterebilir (örneğin, KLOC başına ortalama yirmi beş kusur bulunan bir grupta hiçbir kusur bulamayan 200 kod satırını inceleyen bir ekip arızalı olabilir).

Diğer metrikler

Aşağıdakilere yardımcı olabilecek diğer metrikler

Analiz Sınırlamaları

Metriklerin değeri üzerinde muazzam sınırlar var. Geliştirici başına düzeltilen hatalar hemen hemen her şey anlamına gelebilir ve bu ölçümde cezalandırmaya veya ödüllendirmeye başladığınızda, bahis hatalarının daha fazla ve granüler hale geleceğine ve sabit zor olan kolay hataların karışımı da ekip kirazının en iyi şekilde yarışmak.

Ayrıca müdahaleci ölçümle gelebilecek belirli bir dikkat dağıtıcı ve potansiyel olarak odak ve zevk kaybı da vardır. Wordsworth gibi bir göl şairinden daha zarif (ve duygusal olarak yüklenmiş) olamazsınız ,

      Sweet is the lore which Nature brings;
      Our meddling intellect
      Mis-shapes the beauteous forms of things:--
      We murder to dissect.

Yazılım tam olarak Doğa olmasa da, bana enlem ver, çünkü lise İngiliz Edebiyatı sınıfından hiçbir şey kullanamayacağımı düşündüm.

Çevik, merkezi, büyük sürece tepki olarak düşünülebilir. Bazen bu çalışma modu o kadar çok analitik çaba gerektirebilir ki, hepsi yazılım dışında yazılım oluştururken akışa erişme yeteneği ortadan kalktı.


Başka birisinin daha iyi bilgi ile gelip gelmeyeceğine bakılmaksızın bu yanıtı beğendim - bu yüzden bölümsel içerik için düzenledim.
Yeni İskenderiye

"Çevikliğe geçiş yapmayan geliştiriciler" için kazanılan değer hakkındaki yorumunuzu anlamıyorum. Sadece "çevik olarak kazanılan değer" ve "çevik kazanılan değer" araması çevik ortamlara geleneksel EVM tekniklerini uygulayan birçok kişiyi ortaya çıkarır ...
Thomas Owens

Kazanılan değer, tahmin açısından iyi bir uyarlanabilir teknik gibi görünmektedir. Çevik tahminin esas olarak noktalarla ilgili kendi yaklaşımları olduğunu düşündüm. Bir şeyleri kapsayıcı olarak yeniden yazıp yazamayacağımı göreceğim.
DeveloperDon

Çevik tahmin üzerine tüm kitaplar var, bu yüzden oldukça kapsamlı. Ancak, raporlama ve doğası gereği EVMS'nin uygulanmasını gerektiren çevik ortamlarda çalıştım.
Thomas Owens

2

Gerektiğinde adapte edebileceğimiz temel araçlardan çalmak amacıyla standart yazılım mühendisliği pratiğinden başka bir alana işaret eden alternatif bir cevap eklemek istiyorum. Kalite güvencesi, tıpkı yazılım geliştiricileri gibi üretim, verim ve kusur tespiti ve önlenmesi ile ilgilidir.

http://en.wikipedia.org/wiki/Seven_Basic_Tools_of_Quality

Kontrol tablosunu seviyorum.

http://en.wikipedia.org/wiki/Control_chart

Bir etkinlik yapın, bir metrik çizin, başka bir işlem yapın, metrikini çizin, vb. Örneğin, günlük arsa taahhütleri. Grafik, minimum ile maksimum arasında değişen verileri dağıtır. Belki daha sonra, değeri düşük olduğunda, bir şeyin ilerlemeyi engellediğini ve çok yüksek olduğunda, işin hızlı ama özensiz bir şekilde başladığını belirlemek için sonuçları karakterize edebilirsiniz. Çalışanları hızlandırmaya veya yavaşlamaya nasıl teşvik ettiğiniz size bırakılmıştır.

Kişisel metrikler, "Kendimi en verimli bulduğumda ..." gibi bir sorudan başlayarak kendinizle ilişkilendirebileceğiniz bir şey olabilir.

  • Kodlamaya başlamadan önce eksiksiz bir kullanım durumu yazın.
  • Birim testlerimi kodumdan önce yazın.
  • Gereksinimlerin değişmediğinden emin olmak için paydaşlarla sık sık görüşün ve eski bir plana yönelik çalışmalar üzerinde büyük yeniden çalışma yaratın.
  • Mümkün olduğunca çok kodu değiştirin.
  • Değişiklik yapmalarını istediğim parçalar konusunda en uzman ekip üyelerine iyi tanımlanmış değişiklikler delege edin.
    • Ekibime tam bir genel bakış sunun, ancak önceliklerle mevcut sprint'te bitirebiliriz.
    • Yeniden düzenleme geçişimi değiştireceğim dizinlerin, dosyaların, sınıfların, yöntemlerin, denklemlerin, değişkenlerin, belgelerin vb. Hiyerarşik bir listesi ile başla.
    • Daha iyi bir çözüm elde etmek için gereken kapsamı ve önemli gelişmeleri tahmin ederek önceki teknik çözümleri bulmak için üst düzey bir sorunu araştırın.

Ölçtüğümüz eski şey, ne yapıldığının sizi sınırlayıcı faktör olarak belirlediğiniz soruna dayalı olarak probleme saldırmanıza neden olabileceğini gördü

veya bir Pareto diyagramına göre öncelik sırasına göre birden fazla faktör.

http://en.wikipedia.org/wiki/Pareto_chart

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.