Programlama paradigmaları ve bakım geliştiricisi [kapalı]


9

Bakım bölümü olan Yazılım Mühendisliği'nin Gerçekleri ve Yanlışları'nı okuyordum. Yıllardır bakım geliştiricisi olduğum için sunulan çok ilginç gerçeklerdeydim. İşte üç.

  • Gerçek 41: Bakım genellikle yazılım maliyetlerinin yüzde 40 ila 80'ini (ortalama, yüzde 60) tüketir. Bu nedenle, muhtemelen yazılımın en önemli yaşam döngüsü aşamasıdır.
  • Gerçek 42: Geliştirme, yazılım bakım maliyetlerinin yaklaşık yüzde 60'ından sorumludur. Hata düzeltme yaklaşık yüzde 17'dir. Bu nedenle, yazılım bakımı büyük ölçüde eski yazılıma yeni bir yetenek eklemek değil, düzeltmekle ilgilidir.
  • Gerçek 45: Daha iyi yazılım mühendisliği gelişimi, daha az değil, daha fazla bakım sağlar.

Bu sezgiseldi, iyi yazılımın daha fazla bakım gerektirdiği ortaya çıkıyor, çünkü değiştirilmesi kolay. Bu nedenle, kullanımda daha uzun süre kalır ve evet, daha fazla değişikliğe yol açar.

Hangi paradigma (işlevsel, nesne yönelimli, prosedürel gibi) en iyi korunabilirliğe sahiptir ve bunu desteklemek için herhangi bir araştırma var mı?


Gerçeklerin ve Yanlışların bir kopyasına sahibim ve her bir gerçek (ve yanlış) için, onu destekleyen çeşitli yayınlar için alıntılar var. Kullanışlı bir kopyam yok, ancak bu alıntılardan herhangi biri paradigmanın bakım üzerindeki etkisini tartışıyor mu?
Thomas Owens

Kitap 2003 yılında yazıldı, sonuçların çoğu bugün hala geçerli. İnsanların belirli paradigmalar hakkında yeni çalışmaları olup olmadığını merak ettim. Bakım, tartışmanın gözden kaçan bir parçası gibi görünüyor.
KaizenSoze

Gerçekler ve Yanlışlıklar'da belirtilen çalışmalardan veya yayınlardan herhangi biri belirli bir paradigmanın sürdürülebilirliği ile ilgiliyse, seçeneklerden biri IEEE veya ACM veritabanlarını bu makaleden alıntı yapan diğer makale ve makaleler için aramak olacaktır. IEEE veya ACM veritabanlarına erişiminiz yoksa, eve geldiğimde kitabın kopyasına bakabilir ve böyle bir arama yapıp yapamayacağımı görebilirim. Ne yazık ki, size sadece diğer kağıtların isimlerini alabiliyordum, kağıtların kendileri değil.
Thomas Owens

Yanıtlar:


12

İşlevsel, OO ve prosedür gibi paradigmaların muhtemelen yazılımın sürdürülebilirliği ile anlamlı bir şekilde bağdaşmadığını göreceksiniz.

Aşağıdakileri bulabileceğiniz, yazılımın sürdürülebilirliği ile çok daha net bir şekilde bağlantılıdır:

  • İhtiyaç toplama ve ihtiyaç mühendisliği seviyesi

  • İyi geliştirme uygulamaları: (Gevşek bağlantı, Yüksek Uyum, Birim testi, YAGNI ...)

  • Nitelikli ve kalifiye yazılım mühendisleri (Bir morondan 10 kat daha değerlidir)

  • Kalifiye ve organize teknik KG ekibi

  • Yetkili proje yöneticileri tarafından yönetilen iyi proje yönetimi (Nitelikli yazılım geliştiricileri IMHO'dan daha zor bulmak)

  • İyi Ürün Sahipleri veya uygulama yöneticileri, güçlü liderlik, iyi uzun vadeli yön, proje ekiplerine iyi geribildirim, genel vizyon.


+1 Listeye iyi belgeler eklemek istiyorum
treecoder

+1 "Değer Odaklı" Süreci listeye ekleyin. Süreç, yapılan ve yapılmayan şeyleri tanımlar ve yönlendirir. Sürecin ölçtüğü şey önemlidir ve sürecin ölçmediği önemsizdir. Özellikle İK adamları koltukları "moronlar" ile doldurmaya başladığında doğrudur.
mattnz

2

Bu sezgiseldi, iyi yazılımın daha fazla bakım gerektirdiği ortaya çıkıyor, çünkü değiştirilmesi kolay. Bu nedenle, kullanımda daha uzun süre kalır ve evet, daha fazla değişikliğe yol açar.

Bunu maliyetin yüzdesinden değil bakım miktarından görüyorsunuz. Daha fazla özelliği olan iyi yazılımlar sadece daha fazla miktarda yazılımdır. Bakım yüzdesi sabitse (iyi bir yazılım olduğu ve ek özelliklerin iyi bir yazılım olarak eklendiğini varsaydığımız için), miktar artacaktır. Aynı sayıda dilim içeren daha büyük bir pasta parçası.

Ne istediğine bağlı olarak, "iyi" yazılımın yazılıp yazılmadığı önemlidir: işlevsel, OOP veya yordamsal kod. Eğer kişi nasıl ölçüleceğini bilmiyorsa, birisine lazer güdümlü bir testere vermek ahşaptan tasarruf sağlar mı?

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.