どのような構造になっているのか理解しましょう

最近、建築とは何か、といった建築における最も基本的な問題について考えています。アーキテクチャの品質を評価するにはどうすればよいでしょうか? アーキテクチャ設計の指針となる一般的な基本ルールはありますか? オブジェクト指向設計では、単一責任、リスコフ置換、依存性反転、インターフェース分離、ディミッター、オープンクローズ原則などの基本原則がありますが、アーキテクチャ設計にも同様の基本原則はあるのでしょうか。この記事では、まず最初の質問について説明します。

建築とは何か

建築とは何かについて、業界ではこれまで統一された定義がありませんでした。Martin Fowler は、「エンタープライズ アプリケーション アーキテクチャ パターン」では定義していませんが、統合できるものが 2 つあると述べました。

  1. 最高レベルのシステム分解。
  2. システム内の決定は簡単には変更できません。

『ソフトウェア アーキテクチャ デザイン』という本では、アーキテクチャの定義を構成と意思決定に要約しています。

  • 構成主義者: アーキテクチャ = コンポーネント + インタラクション: ソフトウェア システムのアーキテクチャは、システムをコンピューティング コンポーネントとそれらの間のインタラクションとして記述します。
  • 意思決定派: アーキテクチャ = 重要な意思決定セット: ソフトウェア アーキテクチャは、いくつかの重要な側面で行われた意思決定の集合です。

建築という概念はもともと建築から来ているので、この問題を建築の観点から考えてみたいと思います。Wikipedia では、建築、すなわち Architecture の定義は次のようになっている。

建築は、建物やその他の物理的構造物を計画、設計、建設するプロセスであり、またその成果でもあります。

簡単に翻訳すると、「建築とは、建物やその他の物理的構造物を計画、設計、建設するプロセスと結果です。」

上記の定義から、まず第一に、建築の最終目標は建物やその他の物理的構造物を生産することであることがわかります。構造物には、単なる家、ビル、住宅地、商業地、さらには建物なども含まれます。都市です。構造が大きくなるほど、その構造はより複雑になる必要があります。

次に、建物を作る前に、計画、設計、建設という 3 つの段階を経る必要があります。これら 3 つの段階が実際にはアーキテクチャの中核です。例えば、開発業者が住宅コミュニティを建設したい場合、まず用地選定、建設規模、建設内容、投資見積り、工期など、コミュニティ全体の計画を立てる必要があります。そして、コミュニティ全体のデザインを行う必要があり、その最上位はコミュニティ全体の配置設計であり、分離すると各不動産の設計、緑化設計、各種補助施設の設計となる。ダウンは、さまざまなタイプのアパートのデザイン、不動産やコミュニティ内のさまざまな歩道のデザインなどです。最後に、建設段階は建設段階であり、これまでのすべてのアイデアを実際の建物に変える段階です。

最後に、アーキテクチャには上記のプロセスと結果が含まれます。つまり、コミュニティ全体の計画のプロセスが構造であり、計画の結果も構造である コミュニティ全体の配置の設計、不動産の設計、デザインのすべてのプロセスマンションタイプなどの建物も構造であり、各プロセスのアウトプットも構造であり、設計計画も建築であり、建設段階の施工図も建築であると言えます。建物が作られる過程とその結果が建築です。

次に、建物をソフトウェアに置き換えると、ソフトウェア アーキテクチャの定義になります。ソフトウェア アーキテクチャは、ソフトウェアの計画、設計、構築のプロセスと結果です。

同様に、ソフトウェア アーキテクチャの最終目標は、SaaS、PaaS、BaaS などのアプリやプラットフォーム、さらにはスマート シティなどの巨大なエコシステムとなるソフトウェアを作成することです。システムが大きく複雑になるほど、アーキテクチャは難しくなります。計画段階では、ビジネス機能要件や信頼性、拡張性、保守性などの技術的非機能要件を含むソフトウェア要件がさらに考慮され、この段階のアーキテクチャは一般にシステム アーキテクチャです。設計段階の作業は、さまざまなニーズを満たすためにさらに細分化および洗練され、この段階のアーキテクチャは一般に論理アーキテクチャになります。構築フェーズは主にソフトウェアの実装と展開であり、この段階のアーキテクチャは通常、物理アーキテクチャです。

最後に書きます

実際、「ソフトウェア アーキテクチャ デザイン」という本にも書かれているように、アーキテクチャのすべての定義に間違いはありません。ただ、人それぞれが異なる視点からそれを捉えているだけです。また、上記の定義からわかるように、アーキテクチャはソフトウェア開発のあらゆる側面をカバーしており、誰もがそのすべてを理解するのは難しく、ほとんどのアーキテクトはその一部しか理解していません。高層ビルは一人の力では完成しません。

建築とは何かを考えたら、次は建築をどうするか?この問題は今後の検討課題となります。

おすすめ

転載: blog.csdn.net/m0_65038841/article/details/128797909