Was sind die Merkmale oder Merkmale des Codes für die Produktionsqualität?

8

Dies ist das erste Mal, dass ich Code für ein freiberufliches Projekt (Web-App) bereitstelle. Da ich nicht viel Erfahrung mit Versandcode habe, fällt es mir schwer, zu entscheiden, ob mein Programm für die Bereitstellung bereit ist oder nicht.

Nach meinem Verständnis muss ein Code auf Produktionsebene die folgenden Merkmale aufweisen:

  • Fehlertoleranz : Fähigkeit, nicht erfasste Ausnahmen zu überleben
  • Datenredundanz : Verlieren Sie niemals Benutzerdaten
  • Skalierbarkeit : Für die Handhabung zusätzlicher Lasten sollte die App nicht neu geschrieben werden müssen
  • Testabdeckung : Eine "anständige" Menge an getestetem Code

Einige dieser Merkmale sind spezifisch für das Programm selbst, während andere eher umweltbezogen sind (unabhängig davon, ob mehrere Cluster verwendet werden). Selbst die umgebungsabhängigen Eigenschaften wirken sich jedoch auf die Art und Weise aus, wie das Programm entworfen wird.

Meine Frage lautet dann: Was sind die anderen Merkmale, die den Produktionscode so anders machen als den Code, der nicht für die Produktion bestimmt ist?

Um den Umfang der Frage zu verringern, konzentrieren Sie sich bitte nur auf Web-Apps .

Bearbeiten : Ich werde versuchen, den Umfang einzugrenzen, indem ich nach Merkmalen frage, die für meine Situation spezifisch sind. Als Freiberufler war ich für alles verantwortlich, vom Kauf eines VPS über die Konfiguration bis hin zum Schreiben des Codes und der Bereitstellung. Obwohl das Projekt und seine Einrichtung gut dokumentiert sind, kann der Kunde es nicht warten. Die App ist nicht komplex, hängt jedoch von vielen externen Komponenten ab, wodurch sie sehr anfällig für Schäden ist, wenn sich diese Komponenten ändern / verschwinden. Ziel ist es, einen Service einzurichten, der ohne Eingreifen des Kunden so lange wie möglich Bestand hat.

sehr badalloc
quelle
Skalierbarkeit kann sich auch auf die Fähigkeit eines Systems beziehen, Anforderungen zu skalieren. Manche nennen es Erweiterbarkeit. Vielleicht verdient das einen Punkt auf Ihrer Liste. Tatsache ist, wenn es nicht einfach zu erweitern ist, verschwenden Sie Zeit mit umfangreichen Umschreibungen, nur um eine Funktion hinzuzufügen. In einigen Fällen (nicht allen) können Sie diese zusätzliche Zeit nicht in Rechnung stellen.
Simon Whitehead
2
Es gibt entweder zu viele mögliche Antworten, oder gute Antworten wären für dieses Format zu lang. Bitte fügen Sie Details hinzu, um den Antwortsatz einzugrenzen oder ein Problem zu isolieren, das in einigen Absätzen beantwortet werden kann.
Mücke
Was ist der beabsichtigte Zweck Ihrer App? Spielt es Furzgeräusche? Kontrolliert es den Wiedereintritt eines Space Shuttles?
el.pescado

Antworten:

14

"Code in Produktionsqualität" ist alles, was ein anderer Benutzer, der nicht Sie ist, ...

  1. in der Lage, ohne oder mit minimaler Unterstützung zu verwenden. Wenn bei jeder Aktion ein Fehler auftritt, wird Ihre Software in den Papierkorb verschoben
  2. in der Lage zu verstehen, wie mit minimalem Support oder Dokumentation zu verwenden. Wenn Ihr Benutzer nicht versteht, wie Sie Ihre Software verwenden, wird sie in den Müll geworfen.
  3. bereit zu verwenden, weil es Mehrwert schafft. Wenn Ihre Software genug Wert hinzufügt, geben sie Ihnen vielleicht sogar Geld dafür. Wenn es nicht genug Wert bringt, um es kostenlos zu verschenken, wird Ihre Software in den Müll geworfen.

DAS IST ES.

Manche Menschen brauchen absolute Fehlertoleranz. Anderen macht es nicht so viel aus, wenn einige Daten bei einem Absturz verloren gehen ... vorausgesetzt, sie sehen Abstürze sehr selten. Es gibt keine festen Eigenschaften oder Anforderungen. Und kein Kunde kümmert sich um die Testabdeckung. Was ihn interessiert, sind die drei oben genannten Punkte. Die Testabdeckung ist ein Tool (eines von vielen), das Sie verwenden können, um dorthin zu gelangen, aber es wurde eine Menge Software, von denen einige sogar gut sind, nur mit manuellen Tests erstellt.

Unabhängig davon, welche Software Sie erstellen, die Anforderungen liegen zwischen Ihnen und Ihrem Kunden. Wenn Sie Software für den allgemeinen Verbrauch erstellen, wählen Sie eine oder wenige Zielgruppen aus und versuchen Sie nicht, für alle alles zu sein. Der Versuch, eine Art generischen Schimmel zu entwickeln, kommt mir ziemlich albern vor.

Warum arbeiten Sie nicht mit Ihrem Kunden zusammen, anstatt vorherzusagen oder zu erraten, wann Ihre Software produktionsbereit sein wird? Geben Sie ihnen eine Vorschau, aber erklären Sie, dass es nicht produktionsbereit ist. Veröffentlichen Sie es auf Ihrem eigenen Server und bitten Sie sie, es zu verwenden, herumzustöbern und Ihnen Feedback zu geben. Arbeiten Sie weiter mit ihnen, bis sie mit dem, was Sie ihnen gegeben haben, zufrieden sind. Mit anderen Worten, sie werden Ihnen sagen, wann es produktionsbereit ist.

DXM
quelle
6
Produktionsqualitätscode ist der Code, der die Anforderungen des Kunden erfüllt, und das ist es.
Robert Harvey
@ RobertHarvey: Diese 3-Punkte-Liste war ein Versuch, eine etwas ausgefeiltere Version von "Befriedigt die Anforderungen des Kunden" zu geben. Dies war eindeutig kein sehr erfolgreicher Versuch, aber ja ... das war's auch schon
DXM
1
@DXM Ich mag die Idee, "Produktionsbereitschaft" mit dem Kunden zu definieren. Ich denke, mein Fehler war, dies als Teil der Anforderungen nicht zu tun. Was ist mit Elementen, die nicht vorgeführt werden können (z. B. Wiederherstellung nach einem Fehler)?
Verybadalloc
@verybadalloc Ich würde sagen, diese Definitionen sollten eigentlich eher im Vertrag oder in der SoW als in den Anforderungen enthalten sein, aber ja, definieren Sie so früh wie möglich, was Sie als "erledigt" meinen
jk.
@verybadalloc: das hättest du leider eigentlich als teil des vertrags besprechen sollen. Wenn Sie sie nun fragen: "Möchten Sie volle Fehlertoleranz?", Lautet die Antwort natürlich "Ja". Rechnen Sie nach: P = Wie wahrscheinlich ist es, dass Ihr Produkt abstürzt? L = Wenn es abstürzt, wie wahrscheinlich ist es, dass Daten verloren gehen. C = Wie viel würde ein solcher Datenverlust realistisch kosten? (dh sprechen wir über die gesamte Datenbank oder die letzten 5 Minuten von Transaktionen? macht einen Unterschied). P x L x C = negativer Wert in Ihrem aktuellen Design. Würde dieses Negativ alle von Ihnen angebotenen Positiven ausgleichen? Wenn ja, müssen Sie das Problem beheben. Wenn Sie denken, Ihr Kunde ...
DXM