本当に悪いシステムの改善をどのように始めますか?
単体テストの作成とリファクタリングを推奨する前に、私が何を意味するのか説明させてください。これらのテクニックを使用することもできますが、この場合は無意味です。
実際、システムは非常に壊れており、必要なことを行っていません。
たとえば、システムは送信するメッセージの数をカウントする必要があります。ほとんどの場合は機能しますが、場合によっては、メッセージ カウンターの値を増やすことを「忘れる」ことがあります。問題は、独自の回避策を持つ他の多くのモジュールがこのカウンターに基づいて構築されているため、カウンターを修正すると、システム全体が現在よりも悪化することです。解決策は、すべてのモジュールを変更し、独自の修正を削除することですが、150 以上のモジュールを使用すると、非常に多くの調整が必要になるため、余裕がありません。
さらに悪いことに、システム自体ではなく、人々の頭の中に回避策がある問題がいくつかあります。たとえば、システムは 1 つのメッセージ グループで 4 つを超える関連メッセージを表すことはできません。一部のサービスでは、グループ化された 5 つのメッセージが必要になります。会計部門はこの制限を認識しており、これらのサービスのメッセージをカウントするたびに、メッセージ グループをカウントし、それに 5/4 を掛けて正しいメッセージ数を取得します。これらの逸脱に関する文書はまったくなく、現在システムにそのようなものがいくつ存在するかは誰にもわかりません。
では、このシステムの改善にどのように取り組み始めますか? どのような戦略に従いますか?
いくつかの追加事項:私はこれに取り組んでいる一人の軍隊であるため、十分な数の男性を雇ってシステムを再設計/リファクタリングすることは受け入れられる答えではありません. そして、数週間または数か月で、目に見える進歩を実際に示す必要があるため、数年で自分でリファクタリングを行うという選択肢はありません.
技術的な詳細: システムは Java と PHP で書かれていますが、それはあまり重要ではないと思います。その背後には、Oracle と PostgreSQL の 2 つのデータベースがあります。コード自体が臭いという前に述べた欠陥に加えて、それは本当にひどく書かれ、文書化されています。
追加情報:
カウンターの問題は、同期の問題ではありません。counter++ ステートメントは、一部のモジュールに追加され、他の一部のモジュールには追加されません。手っ取り早い修正方法は、不足している場所に追加することです。長い解決策は、それを必要とするモジュールの側面のようなものにして、後で忘れないようにすることです。このような問題を修正することには問題はありませんが、この変更を行うと、他の 10 個のモジュールが壊れてしまいます。
アップデート:
グレッグ D の回答を受け入れました。アダム・ベレアのほうが好きだとしても、何を知るのが理想的かを知っても何の役にも立ちません。答えてくれてありがとう。