Architecture

スクラムによるドメイン駆動設計

ビジネスとソフトウェアの統合という観点から、スクラムとドメイン駆動設計の関係をとらえなおす。 導入 ここ数ヶ月は日本のスクラムにとって、おそらく非常に有意義な期間だったのではないかと思います。12月にJim Coplien氏による認定スクラムマスター研修…

ドメイン特化言語とモデル駆動エンジニアリング - Johan den Haan

この記事はJohan den Haan氏の記事「DSL and MDE, necessary assets for Model-Driven approaches - by Johan Den Haan」を、氏の許可を得て翻訳したものです。(原文公開日:2008年8月11日) 私はこれまで、モデル駆動エンジニアリング(MDE)について、多…

アーキテクチャを支える言語

FowlerDSL本のAlternative Computational Modelを足がかりとして、ソフトウェアアーキテクチャにおけるDSLの役割について考察する。 導入 Martin Fowler氏はWeb版DSL本の中で、「DSLにおいて重要なのは、言語それ自体ではなく、DSLによって構築される意味モ…

モデル・ビュー・コントローラ - Trygve Reenskaug

この記事はTrygve Reenskaug氏の記事「MODELS - VIEWS - CONTROLLERS」を、氏の許可を得て翻訳したものです。(原文公開日:1979年12月10日) モデル モデルは知識の表象です。モデルは1つのオブジェクトであるかもしれませし(あまり面白くはありませんが…

レイヤとデータからみるDCIアーキテクチャの実装

DCIアーキテクチャに従ってCRUDアプリケーションを実装する際のポイントを整理する。 導入 Trygve Reenskaug氏によって提唱され、主にJames O. Coplien氏によって理論的な確立と普及が進められているDCIアーキテクチャですが、まだ実装事例はそれほど多くあ…

Greg Young流CQRS - Mark Nijhof

この記事はMark Nijhof氏のブログ記事「CQRS à la Greg Young」を氏の許可を得て翻訳したものです。(原文公開日:2009/11/11) この記事は以前のブログである"blog.fohjin.com"にて公開していたものです。 以前、2日間の講習を受けた時に、ビールを飲みなが…

DCIによるWebアプリケーション - 3:Cassandra

Cassandraを使用して割り勘アプリケーションの永続化レイヤを実装する。 導入 割り勘アプリケーション実装の第2部では、WebフレームワークとしてWicketを使用し、傾斜つきの割り勘計算がとりあえず行える所までを実装しました。しかし、データはメモリ上で…

DCIによるWebアプリケーション - 2:アーキテクチャ

前回ドメインレイヤを実装した「割り勘アプリケーション」のプレゼンテーションレイヤを実装し、全体的なアーキテクチャについて考察する。 導入 前回のエントリでは、DCIアーキテクチャの概念に従って「割り勘アプリケーション」のドメインレイヤを実装しま…

DCIアーキテクチャによるWebアプリケーションの実装:ドメインレイヤ

DCIアーキテクチャを用いて、割り勘の計算を行うWebアプリケーションを実装する。 導入 前回のエントリでは、DCIアーキテクチャの思想に基づき、試験的にドメインレイヤを実装しました。今回からはその発展編として、DCIアーキテクチャによるWebアプリケーシ…

ScalaによるDCIアーキテクチャ:ローンシンジケート再考

GroovyによるDCIアーキテクチャのサンプル実装で明らかになった2つの問題点をScalaによって解決する。 導入 前回のエントリでは、DCIアーキテクチャの構想に従った実装を示しつつ、言語的な制約から来る問題点を2つ提示しました。以下に再掲します。 ミッ…

DCIアーキテクチャの実装:ローンシンジケート

DCIアーキテクチャの概要を整理した上で、DDDに登場するローンシンジケートを用いたサンプル実装を示す。 DCIアーキテクチャの概要 Trygve Reenskaug氏とJames O. Coplien氏によるDCIアーキテクチャの構想は、「DCIアーキテクチャ - Trygve Reenskaug and Ja…

モデルレイヤと言語レイヤ

Martin FowlerのDSL Bookで紹介されている内部DSLの基本的なアーキテクチャについて、サンプルコードと合わせて考察する。 導入 内部DSL("Internal DSL")とは、ホスト言語を使って構築されるDSLを指します。外部DSL("External DSL")がXMLなどを用いてホ…

構造とふるまい

ソフトウェアの表現に用いられる概念として「構造」と「ふるまい」を対比させた上で、両者に対する考察を試みる。 導入 もうだいぶ前になりますが、Greg Young氏がBDDに向けて批判的な論考を書いたことがあります。批判の内容について言及することはここでの…

モデルが息づく場所

"Domain-Driven Design"におけるドメインモデルの性質について簡単にふりかえった上で、そのドメインモデルが位置づけられる領域について整理する。 導入:ドメインモデルとは DDDにおける主要な主張は、ソフトウェアが対象とする領域(ドメイン)についての…

DCIアーキテクチャ - Trygve Reenskaug and James O. Coplien

この記事はartima developerに掲載されている、Trygve Reenskaug氏とJames O. Coplien氏による記事「The DCI Architecture: A New Vision of Object-Oriented Programming」を、著作権者であるBill Bennrs氏の許可を得て翻訳したものです。本文内の図の著作…

記事:アーキテクチャについてプレゼンする際の10のコツ

developer.comよりJeff Ryan氏の記事について、要約とコメント 要約 アーキテクチャについてプレゼンする際の10のコツ Developer.com: Your Home for Java and Open Source Development Knowledge - Developer.com かつて、幹部にアーキテクチャの説明をし…

記事:エンタープライズ・アーキテクチャの10の落とし穴

ガートナーの記事からエンタープライズ・アーキテクチャを構築する上での注意点と、それに対する若干のコメント。 要約 エンタープライズ・アーキテクチャの10の落とし穴 http://www.gartner.com/it/page.jsp?id=1159617 適切でないアーキテクトリーダ 技術…

ビジネス的関心とシステム的関心

エンタープライズ・アプリケーションを実装する上で、明確に区別しておくべき2つの概念に関する私見の整理。 導入 ソフトウェアを作る上で最も重要な概念の1つに、「抽象」あるいは「レイヤ化」といったものがあると思います。どのようなレイヤを設定する…

戦略的デザインに関する意思決定のための6つのエッセンス

Eric Evans氏の名著"Domain-Driven Design"第17章より、戦略的デザイン("Strategic Design")のためのエッセンスをまとめた部分について要約とコメント。 Six Essentials for Strategic Design Decision Making 決定はチーム全体に行き渡らなければならない…

時間的な結合度とふるまいにおける結合度 - Ian Robinson

この記事はIan Robinson氏の記事「http://iansrobinson.com/2009/04/27/temporal-and-behavioural-coupling/」の全文を、氏の許可を得て翻訳したものです。 私はこれまでに幾度となく開発者やアーキテクトの人たちと仕事をし、分散システム設計時の選択に関…

関心の分離とプラグマティズム

大規模開発におけるソフトウェア・アーキテクチャ策定時のジレンマに関する私見。 問題提起 まずは、JavaWorldに掲載されているAdam Bien氏の記事紹介から: Lean service architectures with Java EE 6 | JavaWorld こちらはEJB3.1の仕様とSOAにおけるビジ…

共通基盤チーム

「共通基盤チーム」と呼ばれるチームの役割に関する私見と、その共通基盤チームの方のための文献紹介。 共通基盤チーム 共通基盤、他には「インフラ」や「フレームワーク」「アーキ」など文化によって色々な呼び方をされていると思いますが、要するにアプリ…

MVCモデル

「モデル駆動アーキテクチャ」の理想とは裏腹に大規模開発における現実解として定着しつつある元祖「MVCモデル」。それから、クライアントにおけるもう一つの動向としての「リッチクライアント」に関する所感。 POJO志向 オブジェクト指向に興味があった…