it-swarm.dev

Bir projeyi büyük yapan nedir?

Sadece meraktan küçük, orta ve büyük boyutlu bir proje arasındaki fark nedir? Kod satırları veya karmaşıklık ile ölçülüyor mu?

Im bir takas sistemi inşa ve şimdiye kadar giriş/kayıt için kod yaklaşık 1000 satır var. LOC bir sürü olmasına rağmen ben bu büyük bir proje olarak düşünün olmaz çünkü bu benim ilk proje olmasına rağmen bu kadar karmaşık değil bu yüzden emin değilim. Nasıl ölçülür?

32
Jonathan

Karmaşıklık.

Ne kadar karmaşık olursa, projedeki her şeyi öğrenmek o kadar zor olur.

20
user1249

Kabaca nasıl bir şeyleri kabul ettiğimi - bunun az çok keyfi olduğunu unutmayın. Projenin karmaşıklık, kaynak kod satırları, özellik sayısı/iş değeri vb. Gibi diğer faktörlerin bir bileşimindeki "boyutu" Çok küçük bir ürün büyük miktarda değer, vb. Sağlayabilir.

  • 2m + sloc büyükten deve bir projedir. Bunlar genellikle o kadar karmaşıktır ki, eğer tüm sistemde herhangi bir insan 'akıcı' ise azdır; daha ziyade sorumluluk, kodun yapısı boyunca modülerleştirilme eğilimindedir. Bu projeler genellikle muazzam iş değeri sağlar ve kritik görev olabilir. Ayrıca bazen ağır bir teknik borç ve diğer miras endişeleri altındadırlar.

  • 100k - 2m sloc orta büyüklükte bir projedir. Bu benim orta yolum: proje, uzman bilgisi gerektirecek kadar karmaşık ve muhtemelen bir dereceye kadar teknik borç tahakkuk etmiş; muhtemelen bir dereceye kadar iş değeri de sağlıyor.

  • 10k - 100k küçük bir projedir, ancak uzman değerlendirmesi isteyecek kadar karmaşıklığa sahip olmak için çok küçük değildir; açık kaynaksanız, güvendiğiniz kişilere taahhütlerinizi gözden geçirmelerini sağlayın.

  • 10k sloc'tan daha az olan her şey gerçekten küçüktür. Bu, hiç bir değer veremeyeceği anlamına gelmez ve birçok ilginç projenin çok küçük bir baskısı vardır (örneğin, kaynağı ~ 2 olan Kamping) kb (!)). Uzman olmayanlar genellikle alan adı hakkında çok fazla bilgi sahibi olmaksızın değer kaygılarını giderebilir - hataları düzeltebilir ve özellikler ekleyebilir.

34
Joseph Weissman

Bir projenin büyüklüğü, sürdürülemezlik derecesi ile ölçülür.

14
mojuba

Birkaç şekilde tahmin edilebilecek karmaşıklık:

  1. Bütçe. Bütçesi 10.000.000 $ + olan bir proje, örneğin 10.000 $ 'ın altında olan bir projeden oldukça farklıdır. Bu, işgücü, yazılım, donanım ve bir proje yaparken ortaya çıkan diğer maliyetleri içerebilir.
  2. Projeyi tamamlamak için kişi çalışma saatleri. Milyon saat mi sürecek yoksa başka bir şey mi? Bu aynı zamanda bazı projelerin yıllarca sürebileceği ve bir haftadan kısa süren diğerlerine kıyasla büyük olduğunu söyleyebileceğim bir zaman çizgisi faktörü olarak da görülebilir. Biri personeli iki katına çıkararak düşünebileceği gibi kişi saatlerinin yanıltıcı olabileceğine dikkat edin, bu yüzden proje üzerinde iki kat daha fazla çalışma var, o zaman program nadiren aklıma gelecek şekilde yarıya bölünebilir.
  3. Projenin inşa ettiklerini kullanan donanım, diğer sistemler ve kişiler. 101 sisteme bir şey bağlanıyorsa, tek başına durur ve başka bir şeye bağlanmazsa, daha karmaşık olması muhtemeldir.

Gereksinimler bunu ölçmek için güzel bir yol gibi görünse de, genellikle Şelale olmayan bir metodoloji olduğunu düşündüğüm bir proje yapılırken bulunacak daha fazla gereksinim vardır.

12
JB King

Bir proje büyüklüğü muhtemelen en iyi, gereksinimlerin daha da azaltılamadığı sistemin sahip olduğu gereksinimlerin sayısıyla ölçülür.

Tabii ki, daha fazla gereksinim çoğunlukla daha fazla karmaşıklık anlamına gelir, ancak her zaman böyle değildir.

11
David_001

Bir projenin büyüklüğünü, tüm projeyi tek bir büyük resim olarak görmenin ne kadar zor olduğuna göre ölçerdim. Örneğin, üzerinde çalıştığım bir makine öğrenme problemi için bir keşif/prototip kod tabanım var. Sadece 5k kod satırı, ancak büyük bir proje gibi geliyor. Öngörülemeyen şekillerde etkileşime giren tonlarca yapılandırma seçeneği vardır. Tüm bu karmaşıklığı yönetmek için kod tabanında bir yerde insan tarafından bilinen hemen hemen her tasarım desenini bulabilirsiniz. Tasarım genellikle yetersizdir, çünkü şey evrim tarafından çok büyüdü ve olması gerektiği kadar yeniden düzenlenmedi. Ben bu kod tabanında çalışan tek kişi benim, ama ben sık sık şeyler nasıl etkileşim şaşırıyorum.

Öte yandan, hobi projelerimden birinde yaklaşık 3-4x kod var ve yine de çok daha küçük hissediyor çünkü temelde birbirine dik olan matematiksel fonksiyonların bir kütüphanesi. İşler karmaşık şekillerde etkileşime girmez ve her işlevi tek başına anlamak güzeldir. Büyük resmi bir tane olduğu ölçüde görmek kolaydır, çünkü görülecek çok fazla şey yoktur.

4
dsimcha

Keyfi cevap: Proje olay kaynağı ve SOA başlangıçtan itibaren ne kadar yapmasını istediğinizdir. Veya sistem yazarları Evan'ın kitabını "DDD: Mücadele Yazılımın Kalbinde Karmaşıklık ";)

3
Henrik

Sıkıntı ve Kapsam

Karmaşıklık ve Kapsam Bir projenin ne kadar büyük olduğunu belirleyen şey olduğuna inanıyorum. Bununla birlikte, bir projenin boyutunu da etkileyebilecek çeşitli maddi olmayan varlıklar vardır.

Gereksinimler

Karşılaştığım en büyük düşüş, gereksinim eksikliğiydi. Benim özel durumumda satış müdürü gereksinimleri belirliyordu. Odak noktası satıştaydı ... satışı almalıyız. Zihninde müşterinin istediği şey bu kadar karmaşık görünmüyordu çünkü benzer bir şey inşa ettik. Belirsiz gereklilikler, düşük fiyatlı işlere ve aşırı beklentilere yol açar.

CCMU eksikliği

CCMU buna "Coo Ca Moo" (Tam Karşılıklı Anlayışı Temizle) diyorum. Müşterinizle birlikte bir CCMU'nuz olması gerekir.

CCMU'nun zayıf olduğu küçük bir projeniz varsa, projeyi 2,3,4 veya daha fazla kez yapabilirsiniz. Böylece, 20 saatlik basit bir iş, stresli bir personel ve çok memnun olmayan bir müşteriyle 60 saatlik bir projeye dönüşür.

Kapsam Sünme

Bu düşündüğünüzden daha sık oluyor. Müşteri zaten A, B & C yaptığınız için D ve hatta F eklemenin o kadar zor olmaması gerektiğine karar verir. Bu davranış kontrol edilmezse küçük bir projeyi orta ölçekli bir projeye dönüştürebilir. Satış yöneticisinin işi nasıl sattığına bağlı olarak, bu kapsamda sürünme beklentileri müşteriye "ÜCRETSİZ" gibi görünebilir.

Tuhaf, bu cevapların çoğunu okurken bir projenin büyüklüğünü çok farklı görüyorum. Belki de büyük bir şirkette çalışıyorum ama bir projenin büyüklüğünü müşterileri için görünürlüğünün/arzu edilebilirliğinin bir ölçüsü olarak görme eğilimindeyim (çalışma alanınıza bağlı olarak bunlar iş arkadaşları veya gerçek ödeme yapan müşteriler olabilir).

1
Kavet Kerek

Karmaşıklık doğru cevaptır, ancak nasıl tahmin edilir?

Faktörler:

  1. Uzatma noktaları sayısı
  2. Modül katmanları sayımı (fonksiyonlar, sınıflar, sınıf sistemleri, kütüphaneler, paylaşılan kütüphaneler, uygulamalar, ağ uygulamaları vb.)
  3. Bağımlılık sayısı (platformlar dahil)
  4. Etkileşim sayısı içerir.
  5. Gerekli kod dışı kaynaklar (grafikler/sanatlar, sürüş komut dosyaları - seviye tasarım komut dosyaları gibi - ve uygulamanın bir sürümünü tamamlamak için gerekli diğer kaynaklar dahil).

Bunlara ne kadar çok sahipseniz, proje o kadar karmaşık olur.

1
Klaim

LOC birçok ölçüm için kötü bir şekilde yanlış, ama gerçekten ölçmek için doğru bir yol olmayan bir şeyi ölçmeye çalıştığınızı düşünüyorum. Belki bir alternatif siklomatik karmaşıklık olabilir.

Sonuçta, bence bir projenin "büyüklüğünün" ölçülmesi zor. Neredeyse bir köpeğin büyük olup olmadığını nasıl belirlediğinizi sormak gibidir. Bunu ölçmenin birden fazla yolu (kütle, hacim vb.) Değil, kişisel olarak da çok kullanışlı bulmuyorum. Gerçek şu ki, kriterlerim muhtemelen "Karanlık bir sokakta görürsem bu köpekden kaçma ihtimalim var" gibi bir şey olacak.

Ve kayıt için, genellikle 1k kod satırının çok fazla olduğunu düşünmezdim. Büyük bir kod yığını olurdu, ama şeylerin büyük düzeninde that olmaz. Tabii ki, sanırım dile bağlı. Örneğin, 1k kod satırı, C gibi bir dilde Pyhon gibi bir dilde olduğundan much daha az koddur.

0
Jason Baker