it-swarm.dev

Was macht ein Projekt groß?

Nur aus Neugier, was ist der Unterschied zwischen einem kleinen, mittleren und großen Projekt? Wird es anhand von Codezeilen oder Komplexität gemessen oder was?

Ich baue ein Tauschhandelssystem und habe bisher ungefähr 1000 Codezeilen für die Anmeldung/Registrierung. Obwohl es viele LOC gibt, würde ich es nicht als großes Projekt betrachten, weil es nicht so komplex ist, obwohl dies mein erstes Projekt ist, also bin ich mir nicht sicher. Wie wird es gemessen?

32
Jonathan

Komplexität.

Je komplexer, desto schwieriger ist es, alles im Projekt zu lernen.

20
user1249

Ungefähr so, wie ich die Dinge vereinbaren würde - denken Sie daran, dass dies mehr oder weniger willkürlich ist. Die "Größe" des Projekts in einer Zusammenstellung anderer Faktoren wie Komplexität, Quellcodezeilen, Anzahl der Funktionen/Geschäftswert usw. Ein sehr kleines Produkt kann eine große Menge an Wert liefern usw. Davon abgesehen:

  • 2m + sloc ist ein großes bis großes Projekt. Diese sind im Allgemeinen so komplex, dass nur wenige, wenn überhaupt, das gesamte System „fließend“ beherrschen. Vielmehr ist die Verantwortung in der Regel entlang der Struktur des Codes modularisiert. Diese Projekte bieten oft einen enormen Geschäftswert und können geschäftskritisch sein. Sie sind auch manchmal einer starken Belastung durch technische Schulden und andere Altlasten ausgesetzt.

  • 100k - 2m sloc ist ein mittelgroßes Projekt. Dies ist mein Mittelweg: Das Projekt ist komplex genug, um Expertenwissen zu erfordern, und hat wahrscheinlich ein gewisses Maß an technischer Verschuldung angehäuft. Es liefert wahrscheinlich auch einen gewissen geschäftlichen Wert.

  • 10k - 100k ist ein kleines Projekt, aber nicht zu klein, um so komplex zu sein, dass Sie eine fachmännische Prüfung wünschen. Wenn Sie Open Source sind, sollten Sie erwägen, vertrauenswürdige Personen dazu zu bringen, Ihre Commits zu überprüfen.

  • Alles, was weniger als 10.000 Sloc ist, ist wirklich winzig. Das bedeutet nicht, dass es überhaupt keinen Wert liefern kann, und viele sehr interessante Projekte haben einen sehr kleinen Aufdruck (z. B. Camping, dessen Quelle ~ 2 ist kb (!)). Nicht-Experten können im Allgemeinen Wertprobleme lösen - Fehler beheben und Funktionen hinzufügen -, ohne zu viel über die Domain wissen zu müssen.

34
Joseph Weissman

Die Größe eines Projekts wird am Grad der Nichtwartbarkeit gemessen.

14
mojuba

Komplexität, die auf verschiedene Arten geschätzt werden kann:

  1. Budget. Ein Projekt mit einem Budget von über 10.000.000 USD unterscheidet sich wahrscheinlich erheblich von einem Projekt, das beispielsweise unter 10.000 USD liegt. Dies kann Arbeits-, Software-, Hardware- und andere Kosten umfassen, die bei der Durchführung eines Projekts anfallen.
  2. Arbeitsstunden, um das Projekt abzuschließen. Wird es eine Million Stunden dauern oder etwas anderes? Dies könnte auch als Zeitfaktor angesehen werden, bei dem einige Projekte Jahre dauern können, von denen ich sagen würde, dass sie groß sind, im Vergleich zu anderen, die weniger als eine Woche dauern. Beachten Sie, dass die Stunden der Person irreführend sein können, wie jemand denkt, indem er das Personal verdoppelt, sodass doppelt so viele an dem Projekt arbeiten, dass der Zeitplan in zwei Hälften geteilt werden kann, was meiner Meinung nach selten funktionieren würde.
  3. Menge an Hardware, anderen Systemen und Personen, die das verwenden, was das Projekt erstellt. Wenn etwas in 101 Systeme eingebunden ist, ist es wahrscheinlich komplizierter, als wenn es alleine steht und an nichts anderes gebunden ist.

Während Anforderungen wie eine gute Möglichkeit klingen können, dies zu messen, gibt es oft mehr Anforderungen, die gefunden werden, wenn ein Projekt unter der Annahme einer Nicht-Wasserfall-Methodik durchgeführt wird, glaube ich.

12
JB King

Eine Projektgröße lässt sich wahrscheinlich am besten an der Anzahl der Anforderungen des Systems messen, bei denen die Anforderungen nicht weiter reduziert werden können.

Natürlich bedeuten mehr Anforderungen meistens mehr Komplexität, aber das ist nicht immer der Fall.

11
David_001

Ich würde die Größe eines Projekts daran messen, wie schwierig es ist, das gesamte Projekt als ein einziges Gesamtbild zu sehen. Zum Beispiel habe ich eine Explorations-/Prototyping-Codebasis für ein Problem des maschinellen Lernens, an dem ich arbeite. Es sind nur 5.000 Codezeilen, aber es fühlt sich wie ein riesiges Projekt an. Es gibt unzählige Konfigurationsoptionen, die auf unvorhersehbare Weise interagieren. Sie können fast jedes Designmuster finden, das dem Menschen irgendwo in der Codebasis bekannt ist, um all diese Komplexität zu verwalten. Das Design ist oft nicht optimal, weil das Ding durch die Evolution stark gewachsen ist und nicht so oft überarbeitet wird, wie es sein sollte. Ich bin der einzige, der an dieser Codebasis arbeitet, aber ich bin oft überrascht, wie die Dinge interagieren.

Auf der anderen Seite hat eines meiner Hobbyprojekte ungefähr 3-4x so viel Code, und dennoch fühlt es sich viel kleiner an, weil es im Grunde eine Bibliothek mathematischer Funktionen ist, die meistens orthogonal zueinander sind. Die Dinge interagieren nicht auf komplexe Weise, und es ist schön, jede Funktion isoliert zu verstehen. Es ist leicht, das Gesamtbild in dem Maße zu sehen, in dem es eines gibt, weil es nicht viel von einem zu sehen gibt.

4
dsimcha

Willkürliche Antwort: Wie groß das Projekt ist, wie viel Sie sich von Anfang an mit Event-Sourcing und SOA) gewünscht haben. Oder dass die Autoren des Systems Evans Buch "DDD: Tackling" gelesen haben Komplexität im Herzen von Software ";)

3
Henrik

Compexity & Scope

Komplexität und Umfang bestimmen meiner Meinung nach, wie groß ein Projekt wirklich ist. Es gibt jedoch mehrere immaterielle Werte, die sich auch auf die Größe eines Projekts auswirken können.

Bedarf

Der größte Nachteil war der Mangel an Anforderungen. In meiner besonderen Situation bestimmte der Verkaufsleiter die Anforderungen. Sein Fokus lag auf dem Verkauf ... muss den Verkauf bekommen. In seinen Gedanken schien das, wonach der Kunde fragte, nicht allzu kompliziert zu sein, weil wir etwas Ähnliches gebaut hatten. Vage Anforderungen führen zu unterteuerten Arbeitsplätzen und zu hohen Erwartungen.

Fehlen einer CCMU

CCMU ist das, was ich "Coo Ca Moo" nenne (Clear Complete Mutual Understanding). Sie benötigen eine CCMU mit Ihrem Kunden.

Wenn Sie ein kleines Projekt mit einer schlechten CCMU haben, können Sie das Projekt mindestens 2,3,4 Mal ausführen. So wird aus einem einfachen 20-Stunden-Job ein 60-Stunden-Projekt mit gestressten Mitarbeitern und einem sehr unzufriedenen Kunden.

Scope Creep

Das passiert öfter als Sie denken. Der Kunde entscheidet, dass es nicht so schwierig sein sollte, D oder sogar F hinzuzufügen, da Sie bereits A, B & C ausführen. Wenn dieses Verhalten nicht überprüft wird, kann aus einem kleinen Projekt auch ein mittelgroßes Projekt werden. Und je nachdem, wie der Vertriebsleiter den Auftrag verkauft hat, scheinen diese Erwartungen an den Kundenkreis ( "KOSTENLOS" dem Kunden.

Es ist seltsam, viele dieser Antworten zu lesen. Ich finde, dass ich die Größe eines Projekts sehr unterschiedlich sehe. Vielleicht ist es meine Arbeit in einem großen Unternehmen, aber ich neige dazu, die Größe eines Projekts eher als Maßstab für seine Sichtbarkeit/Wünschbarkeit für seine Kunden zu betrachten (abhängig von Ihrem Arbeitsbereich können dies Mitarbeiter oder tatsächlich zahlende Kunden sein).

1
Kavet Kerek

Komplexität ist die richtige Antwort, aber wie kann man sie abschätzen?

Faktoren sind:

  1. Verlängerungspunkte zählen
  2. Anzahl der Modulebenen (Funktionen, Klassen, Klassensysteme, Bibliotheken, gemeinsam genutzte Bibliotheken, Anwendungen, Netzwerkanwendungen usw.)
  3. Abhängigkeiten zählen (Plattformen enthalten)
  4. Mit Interdependenz.
  5. Erforderliche Nicht-Code-Ressourcen (einschließlich Grafik/Kunst, Fahrskripte - wie Level-Design-Skripte - und andere Ressourcen, die zum Ausfüllen einer Version der Anwendung erforderlich sind).

Je mehr Sie davon haben, desto komplexer ist das Projekt.

1
Klaim

LOC ist für viele Messungen notorisch ungenau, aber ich denke, Sie versuchen, etwas zu messen, das wirklich nicht genau gemessen werden kann. Vielleicht könnte eine Alternative zyklomatische Komplexität sein.

Letztendlich denke ich jedoch, dass die "Größe" eines Projekts schwer zu quantifizieren ist. Es ist fast so, als würde man fragen, wie man feststellt, ob ein Hund groß ist oder nicht. Es gibt nicht nur mehrere Möglichkeiten, es zu messen (Masse, Volumen usw.), sondern ich persönlich finde es nicht sehr nützlich. Die Realität ist, dass meine Kriterien wahrscheinlich so etwas wie "Wie wahrscheinlich ist es, dass ich vor diesem Hund davonlaufe, wenn ich ihn in einer dunklen Gasse sehe?"

Und für die Aufzeichnung würde ich 1k Codezeilen im Allgemeinen nicht als viel betrachten. Es wäre ein beträchtlicher Teil des Codes, aber es wäre nicht so viel im großen Schema der Dinge. Natürlich denke ich, dass es von der Sprache abhängt. Zum Beispiel sind 1k Codezeilen viel weniger Code in einer Sprache wie C als in einer Sprache wie Pyhon.

0
Jason Baker