製品品質のコードの特徴または機能は何ですか?


8

フリーランスプロジェクト(webアプリ)のコードを配信するのはこれが初めてです。また、コードの配布の経験があまりないため、プログラムを展開する準備ができているかどうかを判断するのに苦労しています。

私の理解では、本番レベルのコードには次の特性が必要です。

  • フォールトトレランス:キャッチされない例外を乗り切る能力
  • データの冗長性:ユーザーデータを失うことはありません
  • スケーラビリティ:追加の負荷を処理するためにアプリを書き直す必要はありません
  • テストカバレッジテストされた「まともな」量のコード

これらの特性には、プログラム自体に固有のものもあれば、環境に関連するものもあります(複数のクラスターを使用しているかどうか)。ただし、環境に依存する特性でさえ、プログラムの設計方法に影響を与えます。

私の質問は次のとおりです。本番用コードを本番用ではないコードと大きく異なる他の特徴は何ですか?

質問の範囲を減らすために、ウェブアプリのみに焦点を当ててください。

編集:私は自分の状況に固有の特性を尋ねることで、範囲を絞り込もうとします。私はフリーランサーとして、VPSの購入から構成、コードの記述、デプロイまで、すべてを担当していました。プロジェクトとそのセットアップは十分に文書化されていますが、お客様はそれを維持することができません。アプリは複雑ではありませんが、多くの外部コンポーネントに依存しているため、これらのコンポーネントが変更/消失した場合、実際に壊れる傾向があります。目標は、顧客の介入なしで可能な限り長く続くことができるサービスをセットアップすることです。


スケーラビリティは、システムが要件を拡張する能力を指すこともあります。拡張性と呼ぶ人もいます。多分それはあなたのリストのポイントに値するでしょう。実際のところ、簡単に拡張できない場合は、機能を追加するためだけに大規模な書き換えを行うことに時間を費やします。場合によっては(すべてではありません)、その余分な時間を請求することはできません。
Simon Whitehead

2
考えられる回答が多すぎるか、この形式では適切な回答が長すぎる可能性があります。詳細を追加して、回答セットを絞り込むか、数段落で回答できる問題を特定してください。
gnat 2013

アプリの目的は何ですか?おならの音を鳴らしていますか?スペースシャトルの再突入を制御していますか?
el.pescado 2017年

回答:


14

「プロダクション品質のコード」とは、あなたではない別のユーザーが...

  1. サポートなしまたは最小限のサポートで使用できます。すべてのアクションがバグに遭遇した場合、ソフトウェアはゴミに入れられます
  2. 最小限のサポートまたはドキュメントで使用方法を理解できる。ユーザーがソフトウェアの使用方法を理解できない場合は、ゴミになってしまいます。
  3. それは価値を加えるので、喜んで使用します。あなたのソフトウェアが十分な価値を追加するなら、多分彼らはあなたにそれのためにお金を与えるでしょう。無償で提供できるほどの価値がない場合、ソフトウェアがゴミになってしまいます。

それだ。

絶対的なフォールトトレランスが必要な人もいます。クラッシュが発生したときに一部のデータが失われたとしても、それほど気にしない人もいます。ハードセットの品質や要件はありません。また、テストカバレッジを気にしないお客様もいません。気になるのは、上記の3つのポイントです。テストカバレッジは、そこに到達するために使用できるツール(多くのツールの1つ)ですが、ソフトウェアの多くは手動テストのみで構築されています。

どのようなソフトウェアを構築する場合でも、要件はあなたと顧客の間であり、一般消費向けのソフトウェアを構築する場合は、1つまたはいくつかのターゲットグループを選択し、すべての人にとってすべてになることを試みないでください。ある種の一般的なカビを考え出そうとすることは、私にはかなりばかげているようです。

代わりに、ソフトウェアが本番環境に対応する時期を予測または推測するのではなく、顧客と協力してみませんか?彼らにプレビューを与えますが、それは生産準備ができていないことを説明します。それを自分のサーバーに公開し、使用するように依頼し、ぶらぶらして、フィードバックを提供します。彼らがあなたが彼らに与えたものに満足するまで彼らと一緒に働き続ける。言い換えれば、彼らはそれが生産準備ができているときあなたに教えてくれます。


6
生産品質のコードとは、顧客の要件を満たすコードでありそれだけです。
Robert Harvey

@RobertHarvey:この3ポイントのリストは、「顧客の要件を満たす」というもう少し複雑なバージョンを提供するための試みでした。明らかに、これはあまり成功した試みではありませんでしたが、ええと...それはそれだけです
DXM

1
@DXM顧客との「生産準備」を定義するアイデアが好きです。私の間違いは、要件の一部としてそうすることに失敗したことだと思います。デモできない要素(たとえば、障害からの回復)についてはどうですか?
verybadalloc 2013

@verybadalloc私はこれらの定義は要件ではなく契約またはSoWにあるべきだと言いますが、はい、できる限り早期に「完了」したことを定義します
jk。

@verybadalloc:残念ながら、契約の一部として実際に話し合うべきでした。「完全なフォールトトレランスが必要ですか」と尋ねると、もちろん答えは「はい」になります。計算してください:P =製品がクラッシュする可能性; L =クラッシュするとき、データを失う可能性; C =そのようなデータの損失は実際にどれくらいの費用がかかりますか?(つまり、DB全体を話しているのか、それともトランザクションの最後の5分間を話しているのか、違いがあります)。P x L x C =現在の設計の負の値。このマイナスはあなたが提供しているすべてのプラスを相殺しますか?はいの場合は、修正する必要があります。あなたがあなたの顧客だと思ったら...
DXM
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.