変更された要件は、ソフトウェア開発プロセスでは悪いことです。要件が変更された場合、ソフトウェアの構造を変更する必要があります。この問題を解決するために、どのようにフレキシブルコアモジュールを設計しますか?変化する要件に対処するための他のテクニックはありますか?変更要件をサポートするアプリケーションを設計するにはどうすればよいですか?
答えて
要件が頻繁に変化する場合は、ソフトウェア開発のライフサイクルに異なるモデルを使用することを検討してください。アジャイルなアプローチが適しているかもしれません。プロセスにある程度の構造を必要とする場合は、DSDMのような方法論を使用することを検討してください。特定の程度の要件収集と設計を前提にしていますが、開発プロセス全体を通して変化を受け入れます。あなたが見たいかもしれない他のアプローチは、進化的または段階的な送達であろう。 Googleはこれらの用語のいずれかを使用して、より多くの情報を見つけることができます。しかし、あなたのためにはうまくいかないことは、滝のようなBDUF(前面の大きなデザイン)方法論です。
これは絶対的な解決策がない一般的な問題です。
初期のソリューションを設計する場合、将来の要件についてはわからず、推測する必要があります。あなたの推測がある点では良いかもしれないが、あなたは他の多くの点を欠場するだろう。あなたの推測がひどく間違っていたので、将来の変更をより困難にする方法でコードを設計することさえできます。
私は'You Ain't Gonna Need It'の原則に固執し、コードモジュラーを維持し、seperation of concernsを維持することを推奨し、変更を管理しやすいようにインターフェイスを広範に使用しますが、将来の要件についてはあまり前提にしないでください。あなたは本当にそれらを知っています。
私は完全に要件の点でcpitisに同意します。多くのプロジェクトでは、設計やコードに影響を与える要件、環境、またはその他の要因の高価な定義が欠けています。これは完全な仕様の明確な指標であるため、何をすべきかについてほとんど疑う余地はありません。
可能な限り要件を明確にするようにしてください。おそらく最も重要なことは、「システムが果たさなければならないニーズは何か」です。ニーズを明確にすることで、要件の大部分が明確になります。
もちろん、これで問題は完全には解決されませんが、状況が改善される可能性があります。
次に、私は、アジャイルなアプローチ、または少なくとも短い反復を試み、イタレーションの終わりに何かを一貫させ、ユーザーがシステムで見て「遊ぶ」ことを可能にし、彼が本当に必要です。演奏の結果、次の反復(またはそれ以上の反復)の範囲を明確にすることができます。
これまで、私は固定価格/サイズプロジェクトについて話していないと仮定していました。その場合...それは非常に異なる話です。
要件を決定するために設計してください!
すでに述べたように、アジャイルメソッドとYAGNIを使用します。アプリケーションを別々の部分に分割し、最も基本的な/重要な部分から始めることもできます。さらに、クライアントをループに入れて、要件に関する誤解をすばやく排除するようにしてください。また、(必ずしもリテラルでなくても)要件と変更を文書化することで、要件を要求したり変更したりする前にクライアントが二度考えられるようになります。
要件の変更は問題ではありません。最も実用的で成熟したソフトウェアを作成するのに役立つその現実。
最小限の設計で段階的に変更することをお勧めするアジャイル方式を採用してください。プロジェクトのある時間が過ぎると、デザインを変更する必要があると感じるかもしれません。その時には、後でそれを変更する計画を立てることができます。
変更を避けてはいけません。
回避策を書くことで時間の変化を避けると、変更のコストが後で増え、後で変更するのが難しくなります。
プラグインベースのデザインは、最も変更が容易です。ここでは、製品/ソフトウェアのビジョンに基づいてコアデザインを作成し、ほとんどの機能をコアにプラグインとして開発しています。
- 1. フィールドを含むクエリでグループをサポートするようにスキーマ設計を変更するにはどうすればよいですか?
- 2. アプリケーション言語を変更するにはどうすればよいですか?
- 3. アプリケーションのパスワードハッシュを変更するにはどうすればよいですか?
- 4. 要件を変更せずにゲームセンターにゲームセンターを追加するにはどうすればよいですか?
- 5. Android N(Nougat)API 24(マルチウィンドウデザイン)をサポートするページを設計するにはどうすればよいですか?
- 6. DOM要素を変更するにはどうすればよいですか?
- 7. Google APIのAndroidプロジェクト要件を変更するにはどうすればよいですか?
- 8. Laravelのログイン要件を変更するにはどうすればよいですか?
- 9. xmlのフィールド要件を変更するにはどうすればよいですか?
- 10. 変更を変更するにはどうすればよいですか?
- 11. ピップ要件をインストールするにはどうすればよいですか?
- 12. 変更可能なイテレータをサポートするコンテナを実装するにはどうすればよいですか?
- 13. 角2ユニットテストをサポートするようにテステムを設定するにはどうすればいいですか?
- 14. WindowsコンピュータでXamarinアプリケーション用のVisual Studioでユーザーインターフェイスを設計するにはどうすればよいですか?
- 15. アプリケーションをプログラムで更新するにはどうすればよいですか?
- 16. アプリケーションのメニューを設定するにはどうすればよいですか?
- 17. Heroku CLIアプリケーションを設定するにはどうすればよいですか?
- 18. AndroidフレーバーをサポートするようFirebaseを設定するにはどうすればいいですか?
- 19. SwingアプリケーションでUser Preferencesモジュールを設計するにはどうすればよいですか?
- 20. EFでASP.Net MVCアプリケーションを設計するにはどうすればよいですか?
- 21. アプリケーションの設計時に適切なエラースタックを取得するにはどうすればよいですか?
- 22. ビルド設定でMacアプリケーションの名前を変更するにはどうすればいいですか?
- 23. 実行時にiphoneアプリケーションの設定を変更するにはどうすればいいですか?
- 24. チェーンストアをサポートするようにDBを設計するにはどうしたらいいですか?
- 25. 変形スティックを変更するにはどうすればよいですか?
- 26. ドキュメントルートを変更できないときにアプリケーションをセットアップするにはどうすればよいですか?
- 27. web.configファイルを変更してSQL Server 2016をサポートするにはどうすればよいですか?
- 28. QItemDelegateを変更してテキスト形式をサポートするにはどうすればよいですか?
- 29. MS Access SQL - 条件をすべて条件に設定するにはどうすればよいですか?
- 30. リフレッシュトークン要求でネットワークレイヤを設計するにはどうすればよいですか?