TOP > IT講座 > 基本ソフトウェアの知識 > 第2回 システム設計技法

■ 第2回 システム設計技法

ソフトウェア設計技法
分析技法

システムに要求される機能を分析し、システムを設計する技法について、以下に詳細を記述します。
分析の中心となる対象によって、様々な技法があります。

DFD(データフローダイアグラム)
システムで扱うデータと、それを扱う処理(プロセス)との関係を整理する手法です。
この時、分析はトップダウン的に行い、順次DFDを階層化していきます。
最上位のDFDは、大規模なシステムでも単一の処理として記述します(コンテキストダイアグラム)。
次に、対象業務の中の主要な処理を1つのダイアグラムで表現し、各処理で入出力する主要なデータフローを記述します(レベル0)。さらに、各処理を詳細に記述したDFDを順次作成して行きます(レベル1〜)
    DFDの例

(1)(4)は、システムの外部に存在する、データの発生元/行き先を示す。
(2)はデータの加工・変換など、入力データを用いて行う処理をしめす。
(1)〜(4)を結ぶ矢印は、情報の内容と、その流れを示す。
HIPO(Hiearchy plusInput ProcessOutput)

システム機能を階層的に表現する技法です。
システム−サブシステム−モジュールの分析、設計や機能の記述に用いられます。
この技法は、図式目次・総括IPO図・詳細IPO図から構成されます。
図式目次は、機能の上下関係を階層的に表現する。
IPO図では、入力・処理・出力に分けて図式化する。

※IPO図の例

入力

処理

出力


(1)情報 →


(2)入力情報を用いた処理の内容を記述
 





→ (3)情報
→ (4)情報

状態遷移図

時間経過や状態変化に基づいて、システムの動作を表現する技法です。
通信系ソフトウェアの分析、設計などの場合によく用いられます。
状態遷移図では、ある時点での状態を円や楕円で表現し、特定の事象の発生による状態の遷移を矢印で表します。

 

※状態遷移図の例

<OSのタスク管理>
(1) タスク開始
(2) タスク切り替え
(3) 割当て時間切れ
(4) 入出力要求など
(5) 入出力終了など
(6) タスク終了

E−Rモデル
システムの中で扱う情報に着目します。これらを抽象化し、実体(エンティティ)とします。
実体が持っている特性を属性(アトリビュート)としてとらえ、実体間の関係(リレーションシップ)を
ER図を用いて分析していく技法です。
現実世界をモデル化する手段として理解しやすいという特徴があります。
ペトリネットモデル
システムの中にある事象に着目し、事象が発生した場合、それにともなう処理を同時に表現します。
並行的に動作する機能間の同期の様子をモデル化でき、制御系のシステムでの事象応答分析などに用いられます。
デシジョンテーブル
ある処理において起こりうるすべての条件と、それに対して実行するべき動作とを組み合わせた表であり、
条件と動作の因果関係を明確に表現することができます。
プログラム設計の記述などに用いられます。


構造化設計技法
構造化設計は、詳細設計〜プログラム設計のフェーズで主に用いられる技法です。
システムを構成している機能に着目し、それらを抽象的なところから、具体的な機能・処理内容に分割します。
機能の詳細を整理し、単純化して、階層構造で表現します。
複雑なシステムを、単純な機能の集合体とすることで、全体を把握することができ、
開発および保守がしやすいシステムを設計できます。
構造化設計の手順(詳細設計フェーズ)

詳細機能の洗い出し

外部設計書の記述を基に、システム(あるいはサブシステム)に求められる機能を洗い出す。特に、開発者の立場でプログラムを意識し、それらの機能を整理する。

データフローの抽出

システム内での入力データ、出力データを洗い出す。またこのデータが変換されていく過程と、関連する機能の流れを明確にする。

機能のグループ化

洗い出した機能を、処理内容に応じてグループ化する。

階層構造化

システムをプログラム単位に分割する。この際、階層を用いる。階層化は段階的に行うが、深くなりすぎないようにする。また、並列するプログラムの数の多さにも注意する。

プログラム機能の決定

分割されたプログラムの入力データ・処理内容・出力データを決定する。

モジュール分割技法
プログラム設計時、プログラムを機能、処理内容などで細分化し階層的に整理し、モジュールに分割します。
この時に用いられる分割の技法として、以下のものがあります。

STS分割

プログラムが扱うデータの流れより、プログラムの構造を「源泉」(入力処理)、「変換」(変換・加工処理)、「吸収」(出力処理)の3つの部分に分割する技法である。
DFDやバブルチャートが活用できる。

データの流れに着目した分割技法
トランザクション処理が中心のシステムに適している

トランザクション分割

入力トランザクションごとにモジュール分割し、各モジュールがまとまった機能をもつようにする。この技法は、STS分割の「変換」部分を更に細かく分割する場合などに用いられる。

ジャクソン法

入力データの構造と出力データの構造とを対応させてプログラム構造を設計する技法。

データの構造に着目した分割技法
ファイルのバッチ処理に適している

ワーニエ法

入力データの構造からプログラム構造を導き出すというアプローチを用いる。データを集合ととらえ、それが「どこで、いつ、何回」使われたかを明確にする。


システム構成と信頼性
システム構成
システム構成を検討する場合、処理能力・コスト・信頼性など様々な要素を考える必要がありますが、以下では、主に信頼性の面からみたシステム構成の種類を詳述します。

シンプレックスシステム

システムの構成要素(CPUなど)がすべて単一で構成され、それらが論理的に直列に接続されている形をとる。
システム構成要素の一部が故障しても、システムが停止してしまうので、個々の構成要素の信頼性を高めないとシステム全体の信頼性が高く保てないという欠点がある。

デュアルシステム

シンプルレックスの構成を複数系統持つ形をとる。
複数系で同じ処理を行うことで、ひとつの系が故障した場合などでも処理が続行可能であ。
また、実行結果を比較した結果で処理の正当性を決定するといった処理で、信頼性を高めている。

デュプレックスシステム

故障等に備え、シンプレックスシステムの構成を複数系統持つ形をとる。
待機系の状態と再立ち上げ時の方式の観点から、以下の種類がある。
<コールドスタンバイ>
待機系は、通常他の用途(開発・バッチ処理など)に使用されている。
障害発生後にシステム起動処理を行い、切り替える。
<ウォームスタンバイ>
待機系は、システム起動処理までをある程度まで行った状態で待機している。
障害発生後に、切り替える。
<ホットスタンバイ>
待機系は、直ちに稼動可能な状態にしておく。
障害発生を自動検知し、システム切り替えも自動に短時間で行う。

マルチプロセッサシステム

複数のCPUや入出力チャネルを同時に使用できる形をとる。
処理を分散して実行することにより、単一のCPUだけでは得られないような処理性能を実現したりあるCPUに障害が発生しても、他のCPUでその処理を受け継いで実行することが可能となる。
<緊密結合多重プロセッサ>
1つのシステム内で、主記憶装置を共有することにより
各プロセッサの役割が完全に対称で、対等になっている形態のシステム
<疎結合多重プロセッサ>
複数のCPU間を特殊な結合装置で結ぶことで、CPU間で多重処理を可能にしているシステム

システムの信頼性

システムの信頼性指標として、一般的に以下のものが挙げられます。以下に詳細を記述します。

信頼性

R(reliability)

システムの「壊れにくさ」を指す。
具体的には、前回の故障から、次の故障まで連続稼動する時間の平均で表す。これをMTBF(平均故障間隔)と呼ぶ。大きいほど信頼性が高い。
機器の耐久性を表わす指標ともなり、特にハードディスクなど、摩耗などの径年変化を受ける部品を利用したデバイスで使われることも多い。

可用性

A(availability)

システムを利用可能な確立で表す。これを稼働率と呼ぶ。

保守性

S(Serviceability)

システムの「直しやすさ」を指す。
具体的には、障害が発生した場合の、システム復旧時間の平均で表す。これをMTTR(平均修理時間)と呼ぶ。
小さいほど保全性が高い、つまり短ければ短いほど迅速なサービスが期待できる。

公式
稼動率 = MTBF / MTBF + MTTR
故障率 = 1 − 稼働率 = MTTR / MTBF + MTTR
複数システムの稼動率
システムを論理的構成で考えた場合、単純化すると、以下の2つの構成になります。
これらの稼働率の考え方について、以下に詳述します。

直列システム

稼働率 = システムA1の稼働率 × システムA2の稼働率

並列システム

稼働率 = 1 − (1 − システムA1の稼働率) × (1 − システムA2の稼働率)

※直列・並列の表

高信頼性の指標
システムの信頼性を高めるための考え方として、以下のような内容があります。以下に詳述します。

フォールトトレラント

システムの一部に何らかの障害が発生した場合でも、システムを停止せずに継続処理できるようにすること。システムの冗長性を高める。具体的には、システムの構成に待機系を設けたり、全二重化すること等で実現する。

フォールイントレラント

システム構成要素(部品)に耐故障性を高める。具体的には、電源ユニット、ハードディスクなど、万一障害が発生するとシステムの運用に重大な支障をきたす可能性が高いデバイスを二重化しておく、ハードディスクやメモリエラーなどを検出し、エラー訂正技術などによって自動的にこれを訂正する機能を組み込む、などがある。

フェールソフト

システム障害時、ある程度の性能低下はあるにしても、必要最低限の機能は継続する(フォールバック)ように仕組んでおくこと。

フェールセーフ

システム障害時は、システムを安全に停止する方針、またその仕組み。

フールプルーフ

安全設計上の概念で、誰にとっても安全な仕組みにすること。
<fool proof(ミスよけ)>
フールプルーフ本来の意味で使われる場合で、人はミスをするもの、それ故にミスをしても安全を確保する、といった設計仕様のことです。
<tamper proof(いたずらよけ)>
フールプルーフよりも確実に危険を抑え込む設計のことです。tamperとは「いたずら者」の意味です。
<honest proof(正直者よけ)>
使い方に馴れていない正直者の安全を確保することです。知識に乏しい新人などがうっかり誤使用、誤作動するのを防止します。


システムの性能評価
システムの性能指標
システムの性能を把握する場合、主に以下の2つの指標を軸に考えます。以下に詳述します。

応答時間

処理の依頼完了から、処理の終了完了までの時間を指す。
同一コストの場合、値が小さいほど性能がよい。

クライアント/サーバ構成の場合、クライアントの性能、ネットワークの性能、サーバの性能、データベースの性能といった形で、システムの構成要素すべての総合として
考える必要がある。

スループット

単位時間当たりに、可能な処理(トランザクション)の量を指す。
同一コストの場合、値が大きいほど性能がよい。

オンライン処理の場合は、トランザクションの数、バッチ処理の場合は、バッチジョブの数といった内容で計られる。


サーバの性能評価
システムの性能の要となるのは、やはりサーバ(CPU・メモリ・ディスクなどの総体)の性能です。
サーバの性能は、アプリケーションプログラムを実行だけでなく、OSの様々なサービス時間も含めてとらえ、評価する必要があります。

CPUの性能指標

MIPS

Million Instruction Per Second

CPUが1秒間に実行できる命令数を100万の単位で示す指標

MFLOPS

Mega Floating Point Operations Per Second

CPUが1秒間に実行できる、浮動小数点数値演算命令数を100万の単位で示す指標

ベンチマーク
複数のハードウェア上で、CPUやコンピュータシステムの性能評価用プログラムを実行させ、その実行時間の比較で性能を評価する手法です。
以下に、様々なハードウェアメーカが参画し、業界標準とされているベンチマークについて詳述します。
TPC

指標(ベンチマーク)にはTPC-A,B,C,Dの4種類がある。、A,Bの2種類は現在ではほとんど利用されておらず、Cが主に利用されている。
<TPC-C>
卸売り会社のトランザクション処理システムをシミュレートして性能を評価する。結果は1分間に処理できるトランザクション数tpmCで表す。データベースシステムの性能評価に広く使われている。

SPEC

UNIXシステム上で動作する各種のベンチマークプログラムを開発、販売し、各社のコンピュータの性能評価も行っている。整数演算の性能を評価するSPECintや、浮動小数点数演算の性能を評価するSPECfpなどは、CPUの性能を表す指標として広く用いられている。



 Previous Next    IT講座トップへ 



基本ソフトウェアの知識