あなたはソフトウェア工学の聖杯を求めていますが、この質問に対する「その」答えはまだありません。
不可欠なのは、作成しているエラーの種類を追跡し、それらのエラーの分析を行って、共通の傾向があるかどうかを判断することです。根本原因分析は、このタイプの内観の正式な名前であり、それに関する多くの資料がウェブ上にあります。
専門家はバグ追跡システムを使用して、(1)何を修正する必要があるかを知るだけでなく、(2)事後に修正する必要があるものを分析することもできます。あなたはそれほど正式である必要はありません-ノートブックに集計を保持するだけでいいかもしれません。
設計段階の欠陥
ほとんどのエラーが問題ステートメントの誤解に起因している場合、または問題を解決するために間違ったアルゴリズムまたはパスを選択し続けていることに気付いた場合、設計段階で問題が発生します。
プロジェクトの最初により多くの時間をかけ、何をする必要があり、どのようにそれを行うべきかを正確に書き出すことは、あなたにとって重要なことです。この作業を慎重に検討し、元の問題を再検討して、本当に正しい方法で取り組んでいるかどうかを判断してください。開始時に1時間または3時間余分に時間をかけると、道を何時間も節約できます。
コーディングエラー
デザインがしっかりしているが、コーディングしている言語と常に戦っている場合は、コードを分析して、間違いを犯していることを早期に警告するツールを入手してください。
Cでプログラミングしている場合は、すべてのコンパイラ警告をオンにしlint
、などのセマンティックチェッカーを使用し、同様のツールを使用して、valgrind
一般的なダイナミックメモリ関連の問題をキャッチします。
Perlをプログラミングしている場合は、電源を入れてstrict
、warnings
それが言っていることに注意してください。
使用している言語に関係なく、デバッグ段階に到達するずっと前に、よくある間違いを見つけるのに役立つ多くのツールが存在する可能性があります。
統合段階の欠陥
優れたモジュール方式のプラクティスに従ってコードを開発するとき、別々の部分を一緒に接着し始める必要があります。たとえば、コードのさまざまなセクションは、ユーザー入力、データベースインタラクション、データ表示、アルゴリズム/ロジックに関連している可能性があり、これらはそれぞれ比較的独立して構築されています(つまり、手元のセクションに集中する傾向があります)他のすべてとの統合を心配するのではなく)。
ここで、テスト駆動開発(TDD)が非常に役立ちます。コードの各モジュールには、それらが設計された方法に従って機能することを検証するテストを含めることができます。これらのテストは、プロセスの最初または非常に早い段階で作成する必要があります。これにより、正直な状態を保つための一連の "ヘルパー"を確保できます。すべてを連携させ始め、これまたは別のサブシステムとの実装または相互作用の方法を変更する必要がある場合、テストにフォールバックして、作成したことを確認できますすべて一緒に機能しても、コードの正確性が損なわれることはありません。
等々...
ソフトウェアエンジニアリングと実用的なコーディングテクニックに関する本をいくつか取り上げれば、開発の混乱を減らし、信頼性を高めるさまざまな方法を学ぶことができます。また、単純な古い経験-ハードノックの学校で学位を取得-があなたを形にすることにも気付くでしょう。
ほとんどすべてが要約すると、少しの時間と作業を前もって行うことで、開発/リリースプロセスの後半で莫大な利益が得られます。
キャリアの早い段階でこれらの問題に気付いたという事実は、あなたの将来にとって良いことであり、幸運を祈ります。