2017-10-09 1 views
0

私はこの種の質問をここで行うことができるかどうかわからないので、以前は謝罪しています。データベースがうまく設計されていない

私は多くの依存関係と設計が不適切なデータベースを持つシステムで動作します。今私は決断を下さなければならず、あなたの人々の事例を聞きたいと思います。

それはそうです:ソフトウェアのいくつかの部分は、すべての使用例を考えずに作られたものです。今日私は、データベース上の新しい関係を作成し、すべてのクラスとメソッドをリファクタリングするような厳しい変更を行う必要があります。それは理論が言っていることですが、それは多くの日数がかかるでしょう、バージョンとスケジュール全体を遅らせるでしょう。私はガンビアラ(悪いコードが動作する)を保ち、新しいニーズを満たすわずかな変更だけを行うという選択肢があります。

私はそれぞれのケースが異なることを知っていますので、あなたが何をしたいのか聞いてみたいと思います。

+1

手作業でシステムを使用できる方法をすべて知っているソフトウェアは作成できません –

答えて

0

少し詳しく説明するのは難しいですが、質問する内容がタイムリーでコストがかかることをステークホルダーに認識させる必要があると思います。

これはすべての作業を実行可能な変更のセットに分割しようとしています(私は既にユーザーのことがわかっています)。これらを段階的に提供し、優先順位をつけて、ステークホルダーがすぐに価値を得るようにします。

ワークショップを実行して、ワークショップを実行して、ワークショップを実行して、そのワークフローを最も重要なものとして理解し、実装の労力とリスクから見積もることは、すべてのユーザーを同じページに整列させる良い方法です。

幸い、あなたがそれを必要としているように聞こえます。

0

これは非常に一般的な状況です。あなたは具体的な詳細を提供していないので、一般的な言葉以外では答えにくいです。

仕事をやり遂げることと、未来を心配することと技術的な負債との間には常にトレードオフがあります。

将来の心配 - 将来のリリースで必要と思われる機能 - は夢中です。 「今のところこれを入れてから、次のリリースをもっと簡単にする」 - 毎回、「ちょっとした場合には」ちょっとしたコードが愛と関心を必要とし、毎回、それは全くではない時間が来たら右に。だから、将来のユースケースのサポートを構築することはお勧めしません。それはあなたを減速させ、あなたは後で必要とするものについて間違っていると推測する傾向があります。アジャイルでは、YAGNI頭字語「あなたはそれを必要としません」を使用します。非常に具体的にあなたの質問に答えて - 私は将来のユースケースをサポートしていないコードやデザインは "悪い"とは考えていません。

しかし、本当に技術的な負債について心配する必要があります。あなたのコードはモジュラーで、まともなテストケースでカバーされていますか?品質の1つの側面は「これをいかに簡単に拡張するのか」です。これは非常に異なる質問です。コードを拡張するのは難しいです。

あなたがこのような状況に陥った場合は、technical debtのコンセプトにあなたの会社を紹介することができます。時には、技術的な負債を取ることは良い決断です。私は決してこれを持っていないプロジェクトに取り組んだことはありません。しかし、それはビジネス上の問題であり、技術的な問題ではありません。この機能を維持したり拡張したりするのにどれくらいの将来のお金を使いたいのですか?これが最後のリリースであれば、その答えはおそらく「たくさん」です。これが長時間リリース計画の最初のものであれば、その答えはおそらく「それほど多くない」でしょう。

関連する問題