デザイン工程では、再利用性を確保するためのコードの記述方法、使用環境におけるアプリケーションの動作、アプリケーションによるアプリケーションリソースへのアクセスをはじめとした多くの基本的な決定を行います。アプリケーションのディレクトリ構造など、開発と展開の環境についても、デザイン工程中に定義します。
使用環境におけるアプリケーションの動作を指定するこれらのデザイン上の決定以外に、アーキテクチャ上の問題についての決定も必要です。例えば、MVC(Model-View-Controller)など特定のデザインパターンに基づきアプリケーションを開発する場合が考えられます。
デザイン工程の最初の作業としてよく行われるのが、アプリケーションに適したデザインパターンの特定です。デザインパターンは、プログラミング時に起こりがちな問題とその解決策や、典型的なシナリオをまとめたものです。デザインパターンからは、アプリケーションデザインにどのように取り組むかについて見識を得られることがあります。ただし、必ずしもそのためのコード記述方法が定義されているとは限りません。
各種のデザインパターンは、カタログ化され、書籍などにまとめられています。例えば、機能上のデザインパターンは、アプリケーションの各モジュールがそれぞれ 1 つのアクションを実行するように指定します。このとき、アプリケーション内の他のモジュールには、マイナスの副次作用はほとんど、またはまったくありません。デザインパターンは、モジュール自体は指定しませんが、通常はクラスやメソッドには対応しています。
MVC(Model-View-Controller)アーキテクチャの目標は、well-defined かつ有限のスコープが設定されたアプリケーションコンポーネントを作成することで、コンポーネントの再利用性とシステム全体の保守性の両方を高めることにあります。MVC アーキテクチャを使用すると、システムを次の 3 つのコンポーネントカテゴリに分割できます。
モデルコンポーネント
データと、アプリケーションに処理されるデータに関連する動作をカプセル化します。モデルコンポーネントは、アドレス、ショッピングカートの内容、製品の説明などを表すことができます。
ビューコンポーネント
アプリケーションのユーザーインターフェイス、およびユーザーに表示されるアプリケーションデータのビューを定義します。ビューコンポーネントには、アドレス入力用のフォームや、ショッピングカートの内容を表示するための DataGrid コントロール、製品の画像などを含めることできます。
コントローラコンポーネント
アプリケーション内のデータの相互接続を処理します。コントローラコンポーネントは、アプリケーション管理とアプリケーションのビジネスロジックを提供します。コントローラコンポーネントには、必ずしも、ビューコンポーネントやモデルコンポーネントについての知識は必要ありません。
例えば、MVC デザインを使用して、3 つの異なる部分から構成されるデータ入力フォームを作成できます。
MVC アーキテクチャでは、well-defined かつ有限のスコープが設定されたアプリケーションコンポーネントを作成することで、コンポーネントの再利用性とシステム全体の保守性の両方を高めることができます。さらに、システム全体に影響を及ぼすことなく、コンポーネントを変更できます。
Flex アプリケーションは分散 MVC アーキテクチャにおけるビューコンポーネントの一部と考えることもできますが、Flex を使用して、クライアント上に MVC アーキテクチャ全体を実装することもできます。Flex アプリケーションには、ユーザーインターフェイスを定義するビューコンポーネント、データを表現するモデルコンポーネント、およびバックエンドシステムとの通信を行うコントローラコンポーネントとして、それぞれ専用のコンポーネントが用意されます。
Struts はオープンソースフレームワークであり、Java サーブレットやその他の関連技術を用いた Web アプリケーションの開発に有用です。Struts は、これらのアプリケーションを構築するときに開発者が直面する一般的な問題の多くに対するソリューションを提供します。このため、Struts は、小規模なプロジェクトから大規模なエンタープライズアプリケーションまで、様々な開発現場で広く採用されています。
Struts は MVC(Model-View-Controller)アーキテクチャに基づいており、特に MVC アーキテクチャのコントローラ部分が重視されています。また、JSP タグライブラリが用意されているので、従来の JSP/HTML 環境でのビューコンポーネントの作成に役立ちます。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート