Gleyzer両氏によって共同開発されました。2019で、同言語の発表を行いました。InfoQはPurdy氏に言語と、氏らが解決を目指した問題について聞きました。設計/アーキテクチャアジャイルマニュフェスト:ソフトウェアアーキテクトの視点ソフトウェアアーキテクトの役割と責任はアジャイルソフトウェア開発のためのマニフェストの価値と矛盾していると見えますが、優れたアーキテクトはアジャイル開発チームをサポートするテクニックを見つけています。Streamingは、ストリーミングデータのためのSQLライクなインターフェースを提供します。Streamsによって、Redisがストリーミングデータを複数のプロデューサとコンシューマの間で消費、保持、配信することができるようになります。ソフトウェア開発のマニフェストたゆまず息もつかずに市場に突進することで、会社を静かに消滅の崖っぷちへと追い込みます。それは設計してコードを書く方法を再考する時です。簡単さへの投資は、速さへの投資です。簡単さは知的財産の主鉱脈でもあります。競争上の優位性は、一度失ったら、もう一度手に入れることはほとんど不可能です。Buytaerts氏が過去10年間にわたって、企業がDevOps採用のハイプサイクルをくぐり抜け、変革に対する誤解を解消する過程を支援してきた経験について語ります。原文(投稿日:2018/07/09)へのリンク重要なポイントアジャイル方法論への移行の結果として、ソフトウェアに関する図を作成することは縮小されています。図を作成したとしても、混乱と不明瞭さをしばしば抱えています。C4モデルは、コンテキスト、コンテナ、コンポーネント、コードといった一連の階層的なソフトウェアアーキテクチャ図で構成されています。C4モデルの階層構造は、異なるレベルの抽象化を提供するとともに、それぞれが異なる関心の聞き手に直結しています。使用する表記法の凡例だけでなく十分な量のテキストを含めることで、図の曖昧さを回避できます。ソフトウェアアーキテクチャ図(ダイアグラム)は、ソフトウェアシステムを構築するための設計(事前設計)や既存ソフトウェアシステムの仕組み(ふりかえりの文書化や知見の共有、学び)を伝える手段として素晴らしいものです。あなたがこれまでに見てきた大多数のソフトウェアアーキテクチャ図は箱と線が乱雑で大変困惑したことでしょう。アジャイルソフトウェア開発宣言の不運で意図していない副作用は、多くのチームが(UMLの使用を含む)図解や文書化の取り組みをやめたり縮小してしまったことです。Visioのような汎用的なツールの併用に依存する傾向があります。Diagrams"を投稿しています。このなかでは、不可解な表記法や不明瞭なセマンティクスに関連した、いくつもの一般的な問題が解説されています。(画像をクリックして拡大)曖昧なソフトウェアアーキテクチャ図は誤った理解を招き、良いチームをも減速させます。我々の業界では、より良いソフトウェアアーキテクチャ図を作成しようと真摯に努めていくべきです。数年におよぶ私自身のソフトウェア開発経験と、世界中のチームとの協力によって、私は「C4モデル」を作りました。C4はコンテキスト(context)、コンテナ(containers)、コンポーネント(components)、コード(code)の略です。ソフトウェアアーキテクチャを様々な表示倍率で記述するための一連の階層図で、それぞれが(関心の)異なる聞き手に有用です。コードをGoogleマップと考えてみてください。(画像をクリックして拡大)これらのコードのマップを作成するには、ソフトウェアシステムの静的構造を記述するためにユビキタス言語を定義し、そのための共通の抽象セットが必要です。C4モデルはコンテナ(アプリケーション、データストア、マイクロサービスなど)やコンポーネント、コードの観点からソフトウェアアーキテクチャの静的構造に関心を払っています。構築するソフトウェアシステムを使う人々についても考慮しています。システムコンテキスト図レベル1のシステムコンテキスト図は、構築しようとしているソフトウェアシステムが、それを使用する人や関連する他システムとの相互作用の観点からどのような位置づけにあるのかを図示します。次の例では、これから構築するインターネットバンキングシステムを示しています。(画像をクリックして拡大)銀行の個人顧客は、銀行口座に関する情報を参照したり、支払いを行うためにインターネットバンキングシステムを利用します。インターネットバンキングシステムは、銀行が従来からもつメインフレームバンキングシステムを通してこれを処理し、そして電子メールシステムから顧客に電子メールを送信します。図中の色分けは、どれが既存のソフトウェアシステム(灰色の箱)で、どれが構築するソフトウェアシステム(青色の箱)かを示しています。コンテナ図レベル2のコンテナ図は、ソフトウェアシステムを拡大したもので、それを構成するコンテナ(アプリケーション、データストア、マイクロサービスなど)を図示します。技術的な決定事項もこの図の重要な一部です。以下は、インターネットバンキングシステムのコンテナ図の例です。インターネットバンキングシステム(破線の範囲)は、サーバーサイドのWebアプリケーション、クライアントサイドのシングルページアプリケーション、モバイルアプリケーション、サーバーサイドのAPIアプリケーション、データベースという5つのコンテナで構成されています。MVCアプリケーションです。シングルページアプリケーションは、顧客のWebブラウザ上で実行されるAngularアプリケーションであり、インターネットバンキングの全機能を提供します。クロスプラットフォームのXamarinモバイルアプリケーションを使用して、インターネットバンキングの機能サブセットにアクセスすることもできます。MVCアプリケーションが提供します。APIアプリケーションは、データベース(リレーショナルデータベーススキーマ)から顧客情報を取得します。その他、独自のXML/HTTPSインターフェースを使用して、既存のメインフレームバンキングシステムと通信し、銀行口座に関する情報を取得したり、トランザクションを作成したりします。APIアプリケーションは、顧客に電子メールを送信する必要がある場合は、既存の電子メールシステムも利用します。コンポーネント図レベル3のコンポーネント図は、個々のコンテナの内部コンポーネントにまで拡大したものです。これらのコンポーネントは、コードベースのなかの実際の抽象概念(たとえば、コードのグループ化など)にマップしなければいけません。APIアプリケーション内のコンポーネントの(すべてではなく)一部を次に例示します。APIのためのアクセスポイントを提供し、その後データベースやメインフレームバンキングシステムと通信するための他のコンポーネントを利用します。コード最後に、もしあなたが望むのであれば、個別のコンポーネントを拡大してどのように実装されているかまで図示できます。MainframeBankingSystemFacadeコンポーネントを構成する要素(インタフェースとクラス)を図示したUMLクラス図の例を示します。(画像をクリックして拡大)ここからコンポーネントが多くのクラスで構成されており、コードを直接反映した実装の詳細であることがわかります。ほとんどのIDEからオンデマンドに生成できる現代では、このレベルの詳細度で図を作成することはまずお勧めできません。表記法C4モデルは特別な表記法を規定していません。ここまでの例でみてきたようにホワイトボードや紙、付箋、インデックスカード、その他様々なツールで十分機能するシンプルな表記法です。パッケージ、コンポーネント、ステレオタイプを適切に用いて、表記法としてUMLを使うこともできます。System"、"Container"、"Component")、(適切であれば)技術選択、そして説明テキストを含めることを推奨します。図中に多くのテキストを含めることは珍しいかもしれませんが、この追加のテキストはソフトウェアアーキテクチャ図でよくある曖昧さを取り除きます。あなたにとって分かりきったことであっても、使用する表記法の凡例(key/legend)があることを確認してください。これは、色や形、略語、線のスタイル、罫線、サイズなどを含みます。その表記法は、理想的には詳細の各レベルにわたって一貫性を維持するべきです。先のコンテナ図の凡例を次に示します。(画像をクリックして拡大)最後に、図にタイトルを含めることを忘れないでください。それぞれの図の種別やスコープ(たとえば、「インターネットバンキングシステムのシステムコンテキスト図」)を明確に説明するために必要です。詳しい情報C4モデルは抽象度の異なるレベルでソフトウェアアーキテクチャを伝えるシンプルな方法です。異なる(レベルの)聞き手に適した説明を伝えることができます。それはまた、いくつかの厳密で軽量なモデリングをソフトウェア開発チームに導入(多くの場合、再導入)する方法でもあります。補足的な図(ランタイムとデプロイメント)や例、表記法のチェックリスト、FAQ、カンファレンスのビデオ、ツールオプションなど、C4モデルについてより詳しく知りたい場合はc4model.comを参照してください。Developers"(ソフトウェアアーキテクチャ、技術的リーダーシップ、アジリティとのバランスについて役立つ開発者向けガイド)の著者です。コードのマップを作成するシンプルなアプローチであるC4ソフトウェアアーキテクチャモデルの考案者です。氏は国際的なソフトウェア開発カンファレンスの常連講演者であり、ソフトウェアアーキテクチャを視覚化し文書化することで世界中の組織を支援しています。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見るあなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。登録するとさまざまなことができます。アカウント登録をしてInfoQをお楽しみください。あなたの意見をお聞かせください。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見る様々なイノベーターとアーリーアダプターがお送りするテクノロジーの概要を見る。自分がまだ知らないことに気づいていないと知るあなたが興味のあるトピックスをいつでも最新な情報に。あなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。よい世界へ私たちが暮らす世界を大切に思い、よりよいものにしたいと考えています。人のためのソフトウェア開発を加速し私たちのミッションを実現することで、この思いを成し遂げようとしています。私たちは利益の1%をさまざまな慈善団体に寄付しています。会社として、また従業員として、そうしたことの価値を強く信じているからです。with.プライバシーBTあなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。アドレス*Eメールを変更すると確認のメールが配信されます。会社名:現在の会社名をご入力ください。Other組織規模:現在の組織規模をご入力ください。2,501+国:現在の国を設定してください。Zimbabwe都道府県:現在の都道府県に設定してください。次の都道府県にアップデートする:ニュースレターを購読しますか?インダストリーメールを購読しますか?本Eメールに登録すると、以前より関心のあったトピックの関連情報をお送りする場合がございます。詳細はこちらのプライバシーポリシーをご覧ください。newsletter?新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。