SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(SPREAD)(AD)

実践WPF業務アプリケーションのアーキテクチャ【概要編】 ~ マイクロソフト公式サンプルデータベースAdventureWorksを題材に

  • このエントリーをはてなブックマークに追加

システム化の対象範囲

 本システムはAdventureWorks基幹システムで利用するデータベース上の次のマスター管理を提供します。トランザクションデータに関しては、異なるサブシステム上で管理します。

 本システムで管理対象となるマスターテーブルは次のとおりです。

  • Person.BusinessEntity
  • Person.Person
  • HumanResources.Employee
  • HumanResources.Gender
  • HumanResources.MaritalStatus
  • ...

 なお本システムのスコープに入るテーブルですが、次のテーブルに関しては変更頻度が極端に低いことが想定されるため、システムとして提供は行わず定期的なメンテナンスにて直接データベースを更新するものとします。

  • HumanResources.Gender
  • HumanResources.MaritalStatus
  • ...

AdventureWorks従業員管理システムのアーキテクチャ設計

 それではさっそく、本システムを構築するためのアーキテクチャについて説明していきましょう。

 システムを構築するための重要な決定事項(アーキテクチャ)と、その決定理由について解説し、必要と思われる個所では実際のコードを例にとって解説します。

 本稿でアーキテクチャを記載するにあたり、Rational Unified Process(RUP)にて提唱された4+1ビューを用いて記載・説明していきます。

4+1ビュー
4+1ビュー

 まずユースケースビューで、システム全体のユースケースから、アーキテクチャを決定するために重要となるユースケースを抽出します。

 続いて、システム全体の論理構成を論理ビューで決定し、それを物理的にどう配置するか配置ビューで決定します。

 その後、論理ビュー・配置ビューの決定事項に従い、抽出されたアーキテクチャ上重要なユースケースの実現方法を、実装ビューにて説明します。

 最後にプロセスビューでは、並行性やパフォーマンス要件で特に重要と考えられる事項について検討しますが、本稿では非機能要求を規定することは難しいため、対象外といたします。

ユースケースビュー

 本節では、システムのアーキテクチャを決定するために重要となるユースケースを選定します。

 ユースケースとは、利用者にとってシステムを利用する価値を表し、一つ以上の機能の組み合わせによって提供されます。

 ユースケースと機能は明確に異なります。例えばユーザーを登録する際に、性別をプルダウンで選択するとします。これは明確に「機能」ですが、性別をプルダウンで選択すること自体は、利用者の最終的な価値になりません。ユースケースとはあくまでも利用者に価値を提供するための、一つ以上の機能の集合を表すものとします。

 本稿では、次のユースケースを対象にアーキテクチャを決定することとします。

ユースケースビュー
ユースケースビュー

 アーキテクチャを決定する上で重要なユースケースは次の三つです。

  1. ログインする
  2. 従業員を閲覧する
  3. 従業員を編集する

ログインする

 厳密に言うと「ログイン」はユースケースではありません。ユースケースを実行するための前提条件となる機能です。ログインは他のユースケースを利用するための前提条件であり、他のユースケースを構成する一つの機能に過ぎません。

 しかしログインを他のユースケースの一部とした場合、すべてのユースケースで重複した記述(仕様や設計など)が発生してしまいます。また、ユースケースは機能ではありますが、アーキテクチャ上特別に重要な機能でもあります。

 仕様書や設計書を記述していく上でユースケース駆動を採用した場合、本来はユースケースではないものでも、ユースケースとして管理したほうがプロジェクト全体で都合の良いものもあります。

 このため、あえてユースケースとして定義し、必要となるアーキテクチャを検討するものとします。

 ログインにおける認証には、統合Windows認証を利用します。本稿では認可については検討対象としません。

従業員を閲覧する

 本システムの主となる機能で、従業員の一覧の表示、絞り込み、ソートといった機能を提供します。

 管理対象とする社員は多くないため(現時点で290名)、すべての社員をグリッド上に表示し、その上でフィルターによる絞り込みや、ソートなどをExcelライクな操作感で提供することを望まれています。

従業員を編集する

 「従業員を閲覧する」ユースケースを拡張し、グリッド上で表示している従業員の編集および新規追加を行います。

 本ユースケースは、ユーザー インターフェースからデータベースまでの相互作用としては「従業員を閲覧する」と大きく異なりません。しかし、ユーザー インターフェースの実現にあたり、検討すべき課題が多くあるため、検討・記載することとします。

次のページ
論理ビュー

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(SPREAD)連載記事一覧

もっと読む

この記事の著者

中村 充志(リコージャパン株式会社)(ナカムラ アツシ)

 Microsoft MVP for Visual Studio and Development Technologies リコージャパン株式会社 金融事業部 金融ソリューション開発部所属。 エンタープライズ領域での業務システム開発におけるアプリケーション アーキテクト・プログラマおよび中間管理職。 業務ではWPFおよびASP.NETを用いた業務システム開発が中心。 SI案件において、テスト・保守容易性を担保した、アーキテクチャ構築を得意としている。 GitHub:https://github.com/nuitsjp Twitter:@nuits_jp 著書 『Essential Xamarin ネイティブからクロスプラットフォームまで モバイル.NETの世界』(共著) 『Extensive Xamarin ─ひろがるXamarinの世界─』(共著)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10727 2018/04/10 16:28

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング