Programlama verimliliği - Programming productivity

Programlama üretkenliği ( yazılım üretkenliği veya geliştirme üretkenliği olarak da adlandırılır ), programcıların veya geliştirme ekiplerinin yazılım sistemlerini oluşturma ve geliştirme becerisinin derecesini tanımlar. Verimlilik, geleneksel olarak üretilen yazılım miktarı ile bunun için harcanan maliyet arasındaki oranı ifade eder. Burada incelik, yazılım miktarını tanımlamanın makul bir yolunu bulmakta yatmaktadır.

Terminoloji

Üretkenlik, üretim, örgütsel psikoloji, endüstri mühendisliği, stratejik yönetim, finans, muhasebe, pazarlama ve ekonomi gibi çeşitli disiplinlerde araştırılan önemli bir konudur. Analiz seviyeleri, birey, grup, bölümsel, organizasyonel ve ulusal seviyeleri içerir [5]. Bu çeşitlilik nedeniyle, bir asırdan fazla bir süredir araştırma yapılmasına rağmen, üretkenliğin ve onu etkileyen faktörlerin net bir tanımı yoktur. Yazılım mühendisliğinde olduğu gibi, üretkenliği gerçekte neyin oluşturduğuna dair bu ortak anlaşma eksikliği, kanıtlanmış bir üretkenlik tartışmasının önünde büyük bir engel olarak algılanmaktadır. Aşağıdaki tanımlar terminoloji üzerindeki en iyi fikir birliğini tanımlamaktadır.

Üretkenlik

Üretkenliğin tanımı üzerinde ortak bir mutabakat olmasa da, üretkenliğin çıktı ve girdi arasındaki oranı tanımladığına dair bir anlaşma var gibi görünüyor:

Verimlilik = Çıktı / Girdi

Bununla birlikte, çeşitli disiplinlerde farklı kavramlar ve özellikle girdi ve çıktı için farklı ölçüm birimleri bulunabilir. İmalat sanayi tipik olarak üretilen birim sayısı ile tüketilen birim sayısı arasında doğrudan bir ilişki kullanır. İmalat dışı endüstriler, çıktılar ve girdiler arasında karşılaştırma yapılmasını sağlamak için genellikle çalışma saatleri veya benzer birimler kullanır.

Temel bir anlaşma, üretkenliğin anlamı ve onu ölçme araçlarının hangi bağlamın değerlendirildiğine bağlı olarak değişmesidir. Bir imalat şirketinde olası bağlamlar şunlardır:

  • bireysel makine veya üretim sistemi;
  • imalat işlevi, örneğin montaj;
  • tek bir ürün veya ilgili ürünler grubu için üretim süreci;
  • fabrika; ve
  • şirketin tüm fabrika sistemi

Klasik üretim süreçleri basit bir üretkenlik ölçütü olarak kabul edildiğinde basittir: Belirli kalitede bir ürünün kaç birimi hangi maliyetlerle üretilir. Entelektüel çalışma için üretkenlik çok daha zordur. Yazarların, bilim adamlarının veya mühendislerin üretkenliğini nasıl ölçebiliriz? Bilgi çalışmasının artan önemi nedeniyle (manuel çalışmanın aksine), birçok araştırmacı üretim dışı bir bağlamda uygulanabilecek üretkenlik ölçüm araçları geliştirmeye çalıştı. Bilgi çalışmasının doğasının temelde manuel çalışmadan farklı olduğu ve bu nedenle basit çıktı / girdi oranının yanı sıra faktörlerin de dikkate alınması gerektiği, örneğin kalite, zamanındalık, özerklik, proje başarısı, müşteri memnuniyeti ve yenilikçilik gibi genel kabul görmektedir. Bununla birlikte, her iki disiplindeki araştırma toplulukları, henüz üretkenlik ölçümü için geniş çapta uygulanabilir ve kabul edilmiş araçlar oluşturabilmiş değil. Aynı şey, daha spesifik programlama üretkenliği alanı için de geçerlidir.

Karlılık

Karlılık ve performans birbiriyle yakından bağlantılıdır ve aslında çoğu zaman karıştırılır. Bununla birlikte, karlılık genellikle gelir ve maliyet arasındaki oran olarak tanımlanır.

Karlılık = Gelir / Maliyet

Performanstan daha geniş bir kapsamı vardır, yani karlılığı etkileyen faktörlerin sayısı, verimliliği etkileyen faktörlerin sayısından daha fazladır. Özellikle karlılık, verimlilikte herhangi bir değişiklik olmaksızın değişebilir, örneğin maliyet veya fiyat enflasyonu gibi dış koşullar nedeniyle. Bunun yanı sıra, üretkenlik ve karlılık arasındaki karşılıklı bağımlılık genellikle ertelenir, yani üretkenlikteki kazançlar nadiren anlık karlılık kazanımlarının uzun vadede gerçekleşmesi ile yansıtılır.

Verim

Performans terimi, üretkenlik ve karlılıktan bile daha geniştir ve bir şirketin başarısını etkileyen çok sayıda faktörü kapsar. Bu nedenle, Dengeli Sonuç Kartı gibi iyi bilinen performans kontrol araçları , üretkenliği merkezi ancak benzersiz olmayan bir faktör olarak içerir. Diğer ilgili faktörler, örneğin müşterilerin veya paydaşların şirket hakkındaki algısıdır.

Verimlilik ve Etkinlik

Verimlilik ve etkililik, kendileri sıklıkla karıştırıldıklarından ve ek olarak, verimlilikle çoğu zaman üretkenlikle karıştırıldığından daha fazla kafa karışıklığı sağlayan terimlerdir. Verimlilik ve etkililik arasındaki fark genellikle gayri resmi olarak açıklanır, çünkü verimlilik işleri doğru yapmaktır ve etkililik doğru şeyleri yapmaktır . Çok sayıda başka tanım olsa da, verimliliğin kaynakların kullanımına atıfta bulunduğu ve esas olarak verimlilik oranının gerekli girdisini etkilediği konusunda belirli bir anlaşma vardır. Öte yandan etkinlik, genellikle müşteri için doğrudan sonuçlara yol açtığından, esas olarak verimlilik oranının çıktısını etkiler. Etkinlik, "istenen çıktıya ulaşma yeteneği" olarak tanımlanabilir.

Genel olarak, verimliliğin, örneğin kullanım oranları ile, etkililikten önemli ölçüde daha kolay ölçülebileceği varsayılır.

Kalite

Tangen şöyle diyor: "Hatasız ürünlerin çıktı seviyelerine katkıda bulunması dışında, kalitedeki gelişmeler, verimlilik kavramına dahil edilmemelidir." Bununla birlikte, yazılım dışı disiplinlerdeki klasik literatürün çoğu, özellikle üretim alanında, üretkenlik oranındaki çıktı kalitesinin rolünü açıkça tartışmaz. İmalat dışı disiplinlerden daha yeni çalışmalar, bilgi, ofis veya beyaz yakalı işlere daha güçlü bir şekilde odaklanır ve bu nedenle kaliteye göre kalitenin rolünü giderek daha fazla tartışır.

Drucker, bilgi çalışanı üretkenliğinin değerlendirilmesi için kalitenin önemini vurguluyor: "Bu nedenle, bilgi çalışmasının üretkenliği, öncelikle kaliteyi elde etmeyi hedeflemelidir - ve minimum kaliteyi değil, maksimum kaliteyi değilse optimum kaliteyi elde etmeyi amaçlamalıdır. Ancak o zaman kişi şu soruyu sorabilir:" Hacim nedir? , iş miktarı? ""

Saari, üretkenlik için genişletilmiş formülüyle kalitenin önemini yakalıyor:

Toplam verimlilik = (Çıktı kalitesi ve miktarı) / (Girdi kalitesi ve miktarı)

Ancak, kalitenin üretkenlik tespitine dahil edilmesine yönelik bu çabaların henüz operasyonel hale getirilebilir bir konsepte yol açmadığı görülmektedir. Şu anda, oranı hesaplamayı bırakın, belirsiz terimlerin "Çıktı kalitesi ve miktarı" ile "Girdi kalitesi ve miktarı" nı nasıl ölçüleceği belirsizliğini koruyor.

Programlama Verimliliğinde Son Teknoloji

Yazılım geliştirmede işler, malların üretiminden daha karmaşıktır. Yazılım geliştirme bir mühendislik sürecidir.

COCOMO II

Boehm, yazılım üretkenliği alanına sistematik olarak yaklaşan ilk araştırmacılardan biriydi. Maliyet tahmin modeli COCOMO - şimdi COCOMO II - standart yazılım mühendisliği bilgisidir. Bu modelde, analistlerin gerekli güvenilirliği veya kapasitesi gibi üretkenliği etkileyen bir dizi faktör tanımlar. Bu faktörler, diğer benzer üretkenlik yaklaşımlarında yaygın olarak yeniden kullanılmıştır. Modelin geri kalanı, işlev noktalarına ve son olarak kodun kaynak satırlarına (LOC) dayanmaktadır . Bir üretkenlik ölçüsü olarak LOC'nin sınırlamaları iyi bilinmektedir.

Jones'un Yazılım Üretkenliği

Jones, yazılım üretkenliği üzerine bir dizi kitabın yazarıdır. Birkaç teorik düşüncenin yanı sıra, ana katkısı, verimlilik analizleriyle ilgili büyük miktarda verinin sistematik olarak sağlanması ve entegrasyonudur. Kitaplarından en az ikisinde bir dizi üretkenlik faktörü verir, ancak aynı zamanda her proje için farklı bir dizi faktörün etkili olduğuna işaret eder. Bu faktörler, üretkenlik değerlendirmeleri ve endüstriyel ortalamalarla karşılaştırma için bir temel oluşturabilir.

Bu böyle bir liste:

Yazılım projeleri üzerindeki nicel etkileri tarihsel verilerden belirlenen 20 faktör şunlardır:

  • Kullanılan programlama dili
  • Program boyutu
  • Programcıların ve tasarım personelinin deneyimi
  • Gereksinimlerin yeniliği
  • Programın karmaşıklığı ve verileri
  • Yapılandırılmış programlama yöntemlerinin kullanımı
  • Program sınıfı veya dağıtım yöntemi
  • Uygulama alanının program türü
  • Araçlar ve çevre koşulları
  • Mevcut programları veya sistemleri geliştirmek
  • Mevcut programları veya sistemleri korumak
  • Mevcut modülleri ve standart tasarımları yeniden kullanmak
  • Program oluşturucular
  • Dördüncü nesil diller
  • Geliştirme yerlerinin coğrafi ayrımı
  • Kusur potansiyelleri ve giderme yöntemleri
  • (Mevcut) Belgeler
  • Ana geliştirme başlamadan önce prototipleme
  • Proje ekipleri ve organizasyon yapıları
  • Personelin morali ve tazminatı

İşlev Puanları

Fonksiyon noktaları , 1977'de Albrecht tarafından yazılım için LOC'den daha iyi bir boyut ölçüsü olarak önerildi. Yazılımın teknik özelliklerine dayalıdır ve bu nedenle kodun kendisinden ziyade işlevselliğinin boyutunu ölçmeyi amaçlamaktadır. Bunun nedeni, kodun boyutunun yalnızca işlevselliğin boyutuna değil, aynı zamanda programcının yeteneğine de bağlı olmasıdır: daha iyi programcılar, aynı işlev için daha az kod üretecektir. İşlev noktaları, yıllar boyunca, esas olarak Uluslararası İşlev Noktası Kullanıcı Grubu (IFPUG) tarafından yönlendirilen çeşitli yeniden tasarımlardan geçmiştir. Bu grup, 1200'den fazla şirketin üye olduğu büyüktür ve bu önlemin oldukça güçlü bir şekilde kabul edildiğini göstermektedir. Bununla birlikte, çoğu alanda pratik uygulamadan yoksundur çünkü genellikle sadece iş bilgi sistemlerine uygulanabilir olarak düşünülmektedir.

Değer Bazlı Yazılım Mühendisliği

Bazı araştırmacılar, gelecekteki yazılım mühendisliği araştırmalarında önemli bir paradigma olarak ekonomik odaklı veya değere dayalı yazılım mühendisliğini önerdi. Boehm ve Huang, sadece bir yazılım projesindeki maliyetleri değil, aynı zamanda gerçek kazanılan değeri, yani müşteri için değeri izlemenin de önemli olduğuna işaret ediyor. Yazılım iş senaryosu oluşturmanın ve onu güncel tutmanın önemli olduğunu açıklarlar. Temelde, değere dayalı yazılım mühendisliği, esas olarak parasal birimlerle ölçülen müşteri değerine odaklanır.

Peopleware

De Marco ve Lister'in ünlü kitabı Peopleware: Productive Projects and Teams , insanlarla ilgili faktörlerin önemini daha geniş bir kitlenin dikkatine sundu. Ekibin üretkenliği üzerinde etkisi olan iyi ve kötü yönetim uygulamaları ile birçok yazılım projesi deneyimini topladılar. Onlar ve diğerleri, bunların yazılım mühendisliğinde belirleyici konular olduğunu, ancak bunları yalnızca anekdot olarak tanımlayabildiklerini gösterdiler.

Programlama üretkenliğini etkileyen faktörler

Bireylerin ve ekiplerin programlama üretkenliğini etkileyen muhtemelen çok sayıda faktör vardır. Örneğin, kullanılan yazılım geliştirme süreci muhtemelen bir ekibin etkinliğini ve verimliliğini etkiler.

Kişilikleri yazılım programcıları da, programcılar verimliliğini etkileyen, kullanılan kodlama stilleri etkiler.

Referanslar

daha fazla okuma