プリンキピア

第10章エンタープライズアーキテクチャーとソリューションアーキテクチャーの管理

THINK IT THROUGHじっくり考えよう
Architecture and Software Engineeringアーキテクチャとソフトウェア工学
Architecture activities and software engineering activities collaborate throughout the software development process. The architecture provides the blueprint for software engineers to follow, while software engineering activities provide feedback that helps architectural decisions.
アーキテクチャの活動とソフトウェア工学の活動は、開発プロセス全体を通じて協力する。アーキテクチャは、エンジニアが従う設計図を提供する。一方、ソフトウェア工学の活動は、アーキテクチャに関する判断を助けるフィードバックを提供する。
Given the fact that architecture is maintained at various levels of scope within the enterprise, how do architecture activities integrate with software engineering activities?
英語のヒント
企業内ではさまざまな適用範囲の水準でアーキテクチャを維持していることを踏まえると、アーキテクチャの活動は、ソフトウェア工学の活動とどう統合されるだろうか。
Figure 10.46 illustrates how enterprise architecture management activities typically integrate with the solution development life cycle within enterprises. The integration of enterprise architecture management activities with the solution development life cycle ensures that solutions are developed in alignment with the organization’s strategic objectives, architectural principles, and governance requirements. It helps optimize resource allocation, streamline development efforts, enhance interoperability, and improve the overall effectiveness of technology solutions within the enterprise.
英語のヒント
図10.46は、企業内でエンタープライズアーキテクチャ管理の活動が、ソリューション開発ライフサイクルと通常どう統合されるかを示す。この統合によって、組織の戦略目標、アーキテクチャ原則、統治の要求に整合した仕組みを開発できるようにする。また、資源の配分を最適化し、開発作業を効率化し、相互運用性を高め、企業内の技術的な仕組み全体の有効性を改善する助けになる。
Figure 10.46

attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license · CC BY 4.0 · Source出典

Figure 10.46 This illustrates how enterprise architecture management activities typically integrate with the solution development life cycle within enterprises. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license)
図10.46 企業内でエンタープライズアーキテクチャ管理の活動が、ソリューション開発ライフサイクルと通常どう統合されるかを示す。(帰属:Rice University、OpenStax著作権、CC BY 4.0ライセンス。)
Architectural and Design Patternsアーキテクチャパターンとデザインパターン
Design patterns are a representation of the previous test solutions to a specific problem, which is useful for solving future problems. When software designers think about applying patterns or start thinking in patterns, they first try to relate patterns to the requirements model, which communicates the big picture and the context in which the software to be built resides. After that, they extract the patterns that are present at that level of abstraction and begin their design with big-picture patterns that set a context or skeleton for further design work. They then work inward from the context, looking for patterns at lower levels of specialization that contribute to the design solution. The same steps of applying patterns are repeated until the complete design is fleshed out, and the design is refined by adapting each pattern to the specifics of the software being built. Per the approach, the various patterns mentioned earlier are applied to the big picture with their level of abstraction in mind.
英語のヒント
デザインパターンは、特定の問題に対して以前に試した解決策の表現であり、将来の問題解決に役立つ。設計者がパターンの適用を考えたり、パターンで考え始めたりするときには、まず、全体像と、これから作るソフトウェアが置かれる状況を伝える要求モデルへ、パターンを関連付けようとする。その後、その抽象度に存在するパターンを取り出し、以後の設計作業の状況や骨組みを定める、全体像のパターンから設計を始める。次に、その状況から内側へ進み、設計上の解決策に役立つ、より低い具体化の水準のパターンを探す。設計全体が具体的な形になるまで、同じ適用の手順を繰り返す。各パターンを、作っているソフトウェアに固有の事柄へ適応させ、設計を仕上げる。この手法では、先に挙げたさまざまなパターンを、その抽象度を念頭に置いて全体像へ適用する。
Remember that an architectural style is a set of characteristics that make a software system notable or identifiable; it is also a transformation that is imposed on the design of the entire software system. In any software system, there is a set of architectural constraints that restrict the roles/features of architectural elements. An architectural style corresponds to coordinated roles and allows relationships among the elements within any architecture that conforms to that style. An architectural pattern expresses a fundamental structural organization schema for the software system by predefining the subsystems, predefining the subsystems’ responsibilities, creating rules and guidelines for organizing the subsystems, and building relationships between subsystems. Finally, refining the subsystems or components of the software system, or the relationships between them, is the rule of a design pattern. This provides a scheme that describes a commonly recurring structure of communicating components and solves a general design problem within the particular context of the software system.
英語のヒント
アーキテクチャスタイルは、ソフトウェアシステムを特徴付け、識別できるようにする特性の集合であり、システム全体の設計に課す変換でもあることを思い出そう。どのシステムにも、アーキテクチャ要素の役割や機能を制限する、一連のアーキテクチャ上の制約がある。スタイルは、互いに調整された役割に対応し、そのスタイルに従うアーキテクチャ内の要素同士の関係を可能にする。アーキテクチャパターンは、サブシステムとその責任をあらかじめ定め、サブシステムを整理する規則と指針を作り、その間の関係を構築することで、システムの基本的な構造上の組織体系を表す。最後に、システムのサブシステムや部品、またはそれらの関係を詳細化するのが、デザインパターンの規則である。これにより、通信する部品のよく繰り返される構造を記述し、システム固有の状況の中で、一般的な設計問題を解決するための体系が得られる。
When delving into the architectural design of a software system, it typically becomes clear that the system cannot be designed outright by just applying patterns. Thinking in patterns does help relate patterns to a technology environment requirement model and typically reveals that software solutions should leverage characteristics from several architectural styles (e.g., cloud, P2P, and microservices). It may also help identify the need to leverage the EAM, BPM, and Intelligent Autonomous Agents architectural patterns as part of a software solution.
英語のヒント
ソフトウェアシステムのアーキテクチャ設計を掘り下げると、通常、パターンを適用するだけで一気に設計全体を完成できるわけではないことが明らかになる。パターンで考えることは、パターンを技術環境の要求モデルへ関連付ける助けにはなる。また通常、クラウド、P2P、マイクロサービスなど、複数のアーキテクチャスタイルの特性を活用すべきだと分かる。さらに、仕組みの一部として、EAM、BPM、知的自律エージェントのアーキテクチャパターンを活用する必要性も見いだせるかもしれない。
CONCEPTS IN PRACTICE概念を実際に使う
Enterprise Architecture and Land Developmentエンタープライズアーキテクチャと宅地開発
It is easy to think about a land development project as being focused on developing a number of home communities populated with custom homes. The land development company can be considered at the enterprise level. Each individual home community is developed by business units within the enterprise, and individual homes within each home community are created as individual projects. This can be compared to what is happening as enterprise architecture is applied to manage enterprise, portfolio, and project-level architectures. At the project level, managing software projects becomes the concern of the software engineer, but it is clear that enterprise architecture is required to ensure that the individual projects are implemented to follow the guidelines established at a higher level.
英語のヒント
宅地開発のプロジェクトを、注文住宅の並ぶ複数の住宅団地の開発に重点を置くものと考えると、理解しやすい。宅地開発会社は企業の水準に当たる。個々の団地は社内の事業部門が開発し、各団地内の住宅は、個別のプロジェクトとして建てる。これは、企業、ポートフォリオ、プロジェクトの各水準のアーキテクチャを管理するために、エンタープライズアーキテクチャを適用するときのことに例えられる。プロジェクトの水準では、ソフトウェアプロジェクトの管理はエンジニアの担当となる。しかし、個々のプロジェクトが上位の水準で定めた指針に従って実装されるようにするには、エンタープライズアーキテクチャが必要なのは明らかである。