• 検索結果がありません。

ソフトウェアアーキテクチャ

N/A
N/A
Protected

Academic year: 2021

シェア "ソフトウェアアーキテクチャ"

Copied!
23
0
0

読み込み中.... (全文を見る)

全文

(1)

ソフトウェアアーキテクチャ

SOFTWARE ARCHITECTURE

12

Software Engineering

ソフトウェア工学

ソフトウェアの全体的な構造を設計するために

良く知られたアーキテクチャパターンを利用する

ことができる

(2)

ソフトウェア開発の流れ(復習)

要求定義 顧客の要求

設 計

実 装

テ ス ト 要求仕様書

設計書

プログラム 製品 上流工程

下流工程

プロジェクト管理

(3)

設計プロセスからの出力 設計プロセスへの入力

ソフトウェア設計のプロセス

プラットフォームの情報

設 計

コンポーネント インタフェース 設計

設計

データベース 設計

要求仕様 データの記述

システムアーキテクチャ インタフェースの仕様 コンポーネントの仕様 データベースの仕様 アーキテクチャ

設計

(4)

アーキテクチャとは

システムの全体的な構造のこと

システムの構成要素(コンポーネント=プログラム部品)は何か

それらが互いにどう関係しているか

多くの場合,アーキテクチャは図(ブロック図)で表現される

ソフトウェア設計のもっとも最初の段階でおこなう

アウトプット=互いに関連するコンポーネントからなるアーキテクチ ャ

アーキテクチャをいったん決めるとその後の修正は困難

■ アーキテクチャ設計

■ アーキテクチャ

architecture の本来の意味は「建 築」

(5)

アーキテクチャの例

【例】荷物梱包ロボット制御システムのアーキテクチャ(ブロック図)

システム画像処理

荷物認識 システム

コントローラアーム コントローラグリップ

システム梱包選択

システム梱包 コンベア

コントローラ

1. このシステムは,異なる種 類の荷物をロボットにより 自動で梱包するためのもの 2. システムは,コンベアに乗 って流れてくる荷物の画像 からその種類を認識し,適 切な梱包方法を選択する 3. システムはコンベアから荷

物を取り上げ,梱包し,別 のコンベア上に置く

(6)

ブロック図の長所と短所

詳細にまどわされずに,システムの全体像を俯瞰して把握

要求や設計について,ステークホルダー

(stake holder)

(関係 者)との議論・調整に有用

管理者は,開発すべきコンポーネントを認識でき

,

作業分担と 人員計画の策定に着手

ブロック図は非形式的

(informal)

(非数理的)で,表す内容にあいまい性がある

【長所】 システムの全体像がわかりやすい

【短所】 システムを厳密には理解できない

コンポーネントの詳細や相互の関連やインタフェースの詳細 が不明

 → 今後の詳細設計や実装の基礎として利用

(7)

アーキテクチャ設計で考えるべきこと

1.

テンプレート

(template)

となる一般的なアーキテクチャがあるか?

2.

多数のコアやプロセッサにわたり,どうシステムを分散

(distribute)

させるか?

3.

システムをどのように分解

(decompose)

し,構造化するか?

4.

コンポーネントの操作をどのように制御

(control)

するか?

5.

非機能的な要求

(non-functional requirements)

をどのように考慮するか?

6.

アーキテクチャ設計をどのように評価

(evaluate)

するか?

7.

アーキテクチャを説明するドキュメント

(document)

をどのように作成するか?

(8)

非機能的要求の考慮

【機 能 的 要 求

】 (functional requirements)

入力と出力の関係を規定する要 求 【非機能的要求】 それ以外の要求

1.

性能

(performance)

:   処理スピードが速い

   →性能上重要な機能は少数の要素内に局所化し,分散させない

2.

セキュリティ

(security)

: 悪意ある人やシステムから守る

   →システムを階層化し,重要な情報は外部から遠い最内層で保護

3. 安全性 (safety)

:     誤動作で人の健康や財産を損なわない

   →重要機能は少数個の要素に配備し,異常時にはシャットダウン

4. 可用性 (availability)

:   システムダウンしにくい

   →同一機能の要素を複数個配備した冗長システムにより信頼性向上

5. 保守性 (maintainability)

: システムを修正・改訂しやすい

   →独立性の高い小さな要素から構成し,保守時には要素ごと交換

(9)

アーキテクチャパターン

1. MVC アーキテクチャ 2. 階層アーキテクチャ

3. リポジトリアーキテクチャ

4. クライアントサーバアーキテクチャ 5. データフローアーキテクチャ

代表的なアーキテクチャを抽象化し,再利用できるようにカタログ化したも の 【例】

 

今回すべてを紹介

(10)

MVC アーキテクチャ (1/3)

Controller

イベント駆動により  モデル更新

View の選択

View

Model の状態表示

ユーザ入力を

  Controller に通知

Model

状態保持/状態変更

状態変化を View に通知

View

の選 択 

イベント 

状態の参照 状態の変更通知  

状態の変更指示

【一般的な

MVC

アーキテクチャ】

  システム状態を表すデータの管理部

(Model)

ユーザとの相互作用の管理部 (View)

分離して制御

(Control)

(11)

MVC アーキテクチャ (2/3)

名    前 MVC (Model-View-Controller)

概    要 - システム状態を表すデータの管理部とユーザとの相互作用の管理部を 分離して制御

- システムは互いに関連するつぎの3つのコンポーネントからなる (1) Model:    データの保持・変更の管理

(2) View:    データの表示/入力の方法の管理

(3) Controller: ユーザとの相互作用の管理, Modelや Viewの制御

シ ス テ ム 例 - Webアプリケーション

使 用 す る 時 - データの表示/入力の方法が複数あり,適宜切り替えたいとき - データの表示/入力の方法の将来の変更を容易にしたいとき

長    所 - データの表示/入力の具体的方法と独立にデータを管理可能

- データと表示の一貫性:データを変更すると,自動的に表示が変更

短    所 - Modelや Viewが単純なとき,余分なコードとなる

(12)

MVC アーキテクチャ (3/3)

Controller HTTPリクエスト処理

アプリケーションロジック データの検証

View 動的なページ生成 入力フォームの管理

Model ビジネスロジック データベース

フォームの表示  

ユーザ入力  

表示のリフレッシュ要求 状態変更の通知  

状態変更の指示

Web

アプリケーションの

例】

ブラウザー

(13)

階層アーキテクチャ (1/3)

プレゼンテーション層

                 

ユーザインタフェース

ビジネスロジック層

     

アプリケーション

データ層

     

データベース

【三層モデル】

 

(14)

階層アーキテクチャ (2/3)

名    前 Layered architecture

概    要 - システムを互いに関連する機能をもつ複数の層 (layer)に分離 - 層には上下関係があり,各層はそのすぐ上の層にサービスを提供 - 最下層はシステム全体で使われる核 (core)となるサービスを担当

シ ス テ ム 例 - 図書館ネットワークシステム

使 用 す る 時 - 既存システムの上に新機能を構築するとき

- 開発を複数のチームでおこない,層ごとに開発分担をおこなうとき - 複数の層からなるセキュリティの要求があるとき

長    所 - 層の間のインタフェースを維持する限り,層を置換可能

- 層のインタフェースを変えても,影響を与える範囲は隣接した層のみ - マルチプラットフォームへの実装が容易(最下層のみ再実装)

- 各層に認証のような冗長な機能の追加が容易

       

- 複数の層にきれいに分離することは困難なことも

- サービス要求が各層を通過して最下層まで届くので,性能が問題

(15)

階層アーキテクチャ (3/3)

Web

ブラウザーインタフェース

図書索引

DB1 DB2 DB3 DB4 DBn

【図書館ネットワークシステムの例】

ログイン フォーム・クエリ管

理 印刷管理

分散検索 文書検索 権利管理 課金処理

(16)

リポジトリ アーキテクチャ (1/3)

リポジトリ

(共有データ格納庫)

UML エディタ コード生成器

Java エディタ

Python エディ タ

設計変換器

設計解析器 報告書生成器

【ソフトウェア統合開発環境】

(17)

リポジトリ アーキテクチャ (2/3)

名    前 Repository

概    要 - システムの全データをリポジトリ(共有データ格納庫)が管理

- コンポーネントはリポジトリに直接アクセスできるが,コンポーネント どうしは直接の相互作用はない

シ ス テ ム 例 - ソフトウェア統合開発環境 (IDE: Integrated Development Environment) 使 用 す る 時 - 大量のデータが生成され,それを長期間保持する必要があるとき

- リポジトリへのデータの書き込みを引き金 (trigger)としてアクションや ツールが起動するデータ駆動 (data-driven)のシステムにしたいとき

長    所 - コンポーネントは互いに独立(互いの存在を知らなくてよい)

- あるコンポーネントによるデータの変更を全コンポーネントに伝播可能 - 全データが1カ所に集中するのでデータの一貫性があり,バックアップ

も容易

短    所 - レポジトリは単一障害点 (Single Point of Failure): この単一箇所が働か ないと,システム全体が障害となる

- コンポーネント間通信のすべてをリポジトリ経由にするのは非効率 - リポジトリを複数のコンピュータに分散配置するのは困難

(18)

リポジトリ アーキテクチャ (3/3)

【黒板モデル】

黒板階層 知 識

 

    源 文

句 単語列

単語 音節 セグメント

入力波形

リポジトリ

(黒板)

知識源9 知識源

8 知識源

7 知識源 知識源 3

知識源 2 1

知識源4 知識源C

知識源A 知識源

B 知識源

5 知識源6

1 2 3 4 5

6

7 8 9

A B

C

音声認識システム

 

(19)

クライアントサーバ アーキテクチャ (1/2)

【動画ライブラリ】

インターネット

カタロ サーバ

カタログDB

ビデオサーバ

動画DB

ピクチャサーバ

静止画DB

Web サーバ

各種情報

クライアント 1 クライアント 2 クライアント 3 クライアント 4

検索/販売 圧縮/伸張 高品質画像

Webブラウ

Webブラウ

Webブラウ

Webブラウ

(20)

クライアントサーバ アーキテクチャ (2/2)

名    前 Client-server

概    要 - 複数のサーバが,システムの機能をサービスとして提供

- 複数のクライアントが,サーバにアクセスしてこれらのサービスを利用

シ ス テ ム 例 - 動画ライブラリ

使 用 す る 時 - 共有データベース内のデータが,多数の場所からアクセスされるとき - システムの負荷が可変で,必要に応じてサーバを複製したいとき

長    所 - クライアントとサーバをネットワークにわたって分散可能

- 各サービスを1サーバのみで提供すれば,全クライアントが利用可 - コンポーネントは互いに独立(他のコンポーネントに影響を与えずにサ

ーバを置換/修正可能)

短    所 - サーバは単一障害点なので, DoS (Denial of Service)攻撃や故障に弱い - 性能は,ネットワークにも依存するので予測しにくい

- サーバが異なる複数の組織に所有されるときは管理上の問題がある

(21)

データフロー アーキテクチャ (1/2)

【請求・入金管理システム】

読み取り請 求 入金確認

領収書 発行

入金期限確認 入金リマイ ンダー作成 請 求データ 入 金

データ

領収書

リマインダー

フィルター 中間データ

入力データ フィルター 出力データ

パイプ

(22)

データフロー アーキテクチャ (2/2)

名    前 Dataflow (Pipe and filter)

概    要 - 各コンポーネント(フィルタ)は,独立してある種のデータ変換を実行 - 1つのコンポーネントから別のコンポーネントに(パイプのように)

データが流れる

シ ス テ ム 例 - 請求・入金管理システム

使 用 す る 時 - ビジネスのデータ処理において,入力を幾つかの段階を経て処理し,出 力を生成するとき

長    所 - 理解が容易で,データ変換コンポーネントは再利用可能

- ワークフローの形式が,多くのビジネスプロセスの構造に良く適合 - 新規のデータ変換コンポーネントを追加したソフトウェア進化が容易 - 逐次システムとしても並行システムとしても実装可能

短    所 - データ変換間のデータの書式の統一/変換が必要

- そのためシステムオーバヘッドが増加したり,互換性のない書式をもつ データ変換機能の再利用が困難になり得る

- GUIなどをもつインタラクティブシステムには向かない

(23)

演習問題 12

あなたが将来設計したいと思う比較的簡単なソフトウェアシステムを 1つ想定し,そのアーキテクチャの概略を,今回紹介した5つのパタ ーンのいずれかを利用して設計しなさい.

つぎのことについて1ページ以内で記述すること.

1) そのソフトウェアシステムの機能の要点

2) アーキテクチャのブロック図(ブロック数はあまり多くしない)

参照

関連したドキュメント

7:00 13:00 16:00 23:00 翌日 7:00 7:00 10:00 17:00 23:00

翻って︑再交渉義務違反の効果については︑契約調整︵契約

越欠損金額を合併法人の所得の金額の計算上︑損金の額に算入

【①宛名 ②購入金額 ③但し書き ④購入年月日

(郵便発送) 入学手続納付金納入締切日 入学手続Ⅰ 入学手続Ⅱ

 本資料作成データは、 平成24年上半期の輸出「確報値」、輸入「9桁速報値」を使用

 本資料作成データは、 平成26年上半期の輸出「確報値」、輸入「9桁速報値」を使用

 本資料作成データは、 平成29年上半期の輸出「確報値」、輸入「9桁速報値」を使用