ソフトウェア設計原則の拡張

I.はじめに

ソフトウェア設計の 7 つの古典的な原則

オープンクローズ原則 (OCP)
依存反転原則 (DIP)
単一責任原則 (SRP)
インターフェース分離原則 (ISP)
デメテルの法則 (LoD)、別名: 最小知識原則 (LKP)
リスコフ置換原則 (LSP)
複合/集約再利用原則 (CARP)

これはプログラミングの古典的な原則です。これらの原則は 23 のデザイン パターンに進化しました。

作成パターン: ファクトリ メソッド パターン、抽象ファクトリ パターン、シングルトン パターン、ビルダー パターン、プロトタイプ パターン。

構造パターン: アダプター パターン、デコレーター パターン、プロキシ パターン、外観パターン、ブリッジ パターン、組み合わせパターン、フライウェイト パターン。

行動パターン: 戦略パターン、テンプレートメソッドパターン、オブザーバーパターン、反復サブパターン、責任連鎖パターン、コマンドパターン、メモパターン、状態パターン、訪問者パターン、調停者パターン、通訳者パターン。

実際、これは進化のプロセスです。7 大原則の設計は初期プログラミングを目的としており、23 の設計パターンは特に設計フレームワークに使用されます。しかし今では、単純なプログラムや一部のコンポーネントやプラグインだけでなく、複雑なシステムを構築することがよくあります。大規模システムの設計原則も必要です。7 つの原則と 23 のデザイン パターンに基づいています。

2. 複雑なシステム設計の原則

1. 普遍性の原則

汎用性とは、システム設計が再利用可能であり、業界標準に準拠していることを指します。

2. 絶縁原理

分離とは、システムに別個の呼び出しプロセスと別個のデータベースがあることを意味します。

3. 許可制御の原則

アクセス許可制御の原則は、システム関数を呼び出すときにアクセス許可を設計する必要があることを意味します。

4. 安全原則

セキュリティ原則とは、システムを設計する際にネットワーク セキュリティと運用セキュリティを十分に考慮する必要があることを指します。

5. スケーラビリティの原則

スケーラビリティの原則は、システムが拡張可能であること、および拡張時に古い機能の動作が影響を受けないようにすることです。

6. 設定可能な原理

構成可能性の原則は、システム設計ではシステム パラメーターの構成可能性を考慮する必要があることを意味します。

7. 開閉原理

オープニングとクローズの原則はプログラミングの原則と同じで、変更に対して閉じられ、拡張に対してオープンである必要があります。

8. 互換性の原則

互換性の原則は、システムの新しいバージョンがシステムの古いバージョンと互換性がある必要があることを意味します。

9. 簡単な開発と簡単な導入の原則

簡単な開発と簡単な展開の原則は、開発システムが開発とオンライン展開を促進するためにチームの支援を考慮する必要があることを意味します。

3. 設計原則の拡張

1. モジュール化: ソフトウェアを小さなモジュールに分割し、変更やメンテナンスを容易にするために、各モジュールはできる限り独立し、再利用可能である必要があります。これにより、ソフトウェアの拡張性と保守性が向上します。

2. 疎結合: モジュール間の依存関係を減らし、結合を減らすことで、各モジュールの独立性が高まり、保守とテストが容易になります。

3. 高い凝集性: 同じ機能を持つコードをまとめて整理することで、コードの重複と冗長性を減らし、コードの可読性と保守性を向上させます。

4. スケーラビリティ: ソフトウェアのスケーラビリティは、設計段階で考慮する必要があります。つまり、将来のニーズの変更や拡張に対応できるかどうかです。

5. 信頼性: ソフトウェアは信頼性と堅牢性が高く、さまざまな状況下でも正常に動作し、攻撃に対して脆弱ではない必要があります。

6. パフォーマンス: システムは優れたパフォーマンスを備え、大量のデータとユーザー要求を処理でき、応答時間が速い必要があります。

7. シンプルさ: アーキテクチャとコードは簡潔かつ明確で、読みやすく理解しやすく、過剰な設計を避ける必要があります。

8. 移植性: ソフトウェアは、さまざまな環境で実行できるクロスプラットフォームおよびクロスシステム機能を備えている必要があります。

9. テスト容易性: ソフトウェアの品質と安定性を確保するために、システムは単体テスト、統合テスト、システム テストなどを含むテストが容易である必要があります。

10. 使いやすさ: ソフトウェアは、ユーザーの満足度を高めるために、優れたユーザー エクスペリエンスと使いやすいインターフェイスを備えている必要があります。理解しやすい、学びやすいなどの必要があります。

11. セキュリティ: ソフトウェアは優れたセキュリティを備え、不法侵入、データ漏洩、その他のセキュリティ問題を防止できる必要があります。ユーザーデータとプライバシーのセキュリティを確保し、ハッカー攻撃やマルウェアの侵入を回避します。

12. コードの保守性: ソフトウェアは、保守コストを削減し、コードの品質を向上させるために、コードの読みやすさ、理解しやすさ、拡張性を含め、保守と修復が容易である必要があります。

13. 信頼性: ソフトウェアは高度な信頼性を備えている必要があります。つまり、ソフトウェアは通常の動作下では正確性と正確性を保証でき、異常な状況が発生した場合には効果的に処理して回復できます。

14. スケーラビリティ: ユーザー数とデータ量が増加し続ける場合でも、ソフトウェアはパフォーマンスと安定性を維持するために、優れたスケーラビリティとスケーラビリティを備えている必要があります。

15. 再利用性: ソフトウェアは再利用性が高くなければなりません。つまり、ソフトウェア内のモジュールとコンポーネントを他のプロジェクトで再利用して、開発効率とコードの品質を向上させることができます。

16. トレーサビリティ: ソフトウェアには高度なトレーサビリティが必要です。つまり、レビュー、監査、追跡を容易にするために、ソフトウェア内のすべてのアクションが明確に記録される必要があります。

17. 構成可能性: ソフトウェアは、さまざまな環境やニーズに適応できるように、簡単に構成および管理できる必要があります。

18. 移植性: ソフトウェアは簡単に移植でき、さまざまなオペレーティング システム、プラットフォーム、デバイスに移植できる必要があります。

19. スケーラビリティ: ソフトウェアは、さまざまなビジネス ニーズや機能要件に適応するために、簡単に拡張およびアップグレードできる必要があります。

20. 信頼性: ソフトウェアは高い信頼性を備えている必要があります。つまり、安定して実行でき、エラーが発生しにくく、例外やエラー状態を効果的に処理できる必要があります。

21. アクセシビリティ: ソフトウェアは、さまざまなグループや能力のユーザーが使用できるように、アクセスして使用するのが簡単である必要があります。

22. インストール性: メンテナンスコストを削減し、コードの品質を向上させるために、ソフトウェアは導入、保守、管理が簡単である必要があります。

23. カスタマイズ性: ソフトウェアは、ユーザーが自分のニーズに合わせて設定をカスタマイズして個別のニーズを満たすことができる、優れたカスタマイズ性を備えている必要があります。

24. 信頼性: ソフトウェアには高度な信頼性が必要です。つまり、ユーザーは、ユーザーのニーズを満たすソフトウェアの正確性、信頼性、安定性を信頼できます。

25. ドキュメントとコメント: ソフトウェア開発プロセスでは、開発者とユーザーがソフトウェアの機能と使用法を理解できるように、関連するドキュメントとコメントを作成する必要があります。

26. チームコラボレーション: ソフトウェア開発プロセスでは、タスクの割り当て、コード共有、コミュニケーションなどを含むチームコラボレーションが必要です。チームのコラボレーションと開発が容易になるようにソフトウェア アーキテクチャを設計します。

27. テクノロジーの選択: ソフトウェア開発プロセスでは、効率的な開発とソフトウェアの優れた品質を確保するために、適切なテクノロジー スタックとツールを選択する必要があります。

おすすめ

転載: blog.csdn.net/dongjing991/article/details/133126902