Project

General

Profile

応用情報技術者試験

応用情報技術者 合格教本
大滝 みや子

https://twitter.com/aretan/status/959309886029930496

第1章 基礎理論

数値変換とデータ表現

r進法

16進数はの桁上げ
2A.4(16) * 16 = 2A4(16)

ゼロ乗
160 = 1

マイナス乗
16-1 = 1 / 16
16-2 = 1 / 256

16進数を10進数に変換
2A.4(16) = 2 * 161 + A * 160 + 4 * 16-1
= 32 + 10 + 0.25
= 42.25(10)

10進数を8進数に変換 (整数)
125(10) = 175(8)
@ 125 / 8 = 15 ... 5
@ 15 / 8 = 1 ... 7
@ 1 / 8 = 0 ... 1

10進数を8進数に変換 (小数)
0.75(10) = 0.6(8)
@ 0.75 * 8 = 6
0.4375(10) = 0.34(8)
@ 0.4375 * 8 = 3.5
@ 0.5 * 8 = 4

正の整数の表現

8bitは28つまり0〜255を表現できる

2進数の桁数nと10進数の桁数dの関係は
d ≒ n * log102

負の表現

8bitある場合の2の補数の表現
-28-1 〜 28-1 - 1 = -128 〜 127
01111111 = 127
00000000 = 0
11111111 = -1
11111110 = -2
10000000 = -128

8bitある場合の1の補数の表現
-28-1 - 1 〜 28-1 - 1 = -127 〜 127
01111111 = 127
00000000 = 0
11111111 = -0
11111110 = -1
10000000 = -127

固定小数点数表現

0|1010000 = 0.625(10)
1|1010000 = -0.375(10)

0101|1010 = 5.625(10)
1101|1010 = -2.375(10)

浮動小数点数表現

4byte = 32bit = 符号 1bit + 指数 8bit + 仮数 23bit
仮数を1から始まるように正規化する

7.25(10)を4byteの浮動小数点表現
= 111.01(2)
= 23 * 0.11101
0|00000011|11101

仮数23bitで表現できる10進数の有効桁数は6桁
d ≒ 23 * log102 = 23 * 0.301 = 6.923

対数の重要公式
log102 = 0.301
log210 = 3.32
logaM = p ⇔ ap = M (対数の定義)
logaa = 1 (対数の性質)
loga1 = 0 (対数の性質)
logMk = k * logaM (累乗の対数)
logaM = logbM / logba (底の変換公式)
logaM/N = logaM - logaN (商の対数)
logaMN = logaM + logaN (積の対数)

IEEE単精度形式
E=0 → (-1)s2-126(0.M)
0<E<255 → (-1)s2E-127(1.M)
E=255 → M=0 (-1)s∞ (Divide By Zero)

普通の浮動小数点は0.MだけどIEEE単精度形式は1.Mってなってる
0|10000010|01 = (-1)0 * 210000010(2)-127 * 1.01(2)
= 2130-127 * 1.25
= 10.0

IEEE単精度形式の最大数値は約2128
0|11111110|11...1 = (-1)0 * 211111110(2)-127 * 1.11...1(2)
≒ 2127 * 2
= 2128

IEEE単精度形式の最小数値は2-126
0|00000001|0 = (-1)0 * 21-127 * 1.0(2)
= 2-126 * 1

BCD (2進化10進符号)
915 = 1001 0001 0101(2)

BCDを使ったパック10進数
+915 = 1101 0001 0101 1100(2)
-915 = 1101 0001 0101 1101(2)

誤差

丸め誤差 数値を有数ビット数で表現するため、最下位桁より小さい部分について四捨五入や切り上げ、切り捨てが行われることにより発生する誤差
情報落ち 絶対値の非常に大きな数と小さな数の下限算を行った時、指数部が小さいほうの数の仮数部の下位部分が計算結果に反映されないために発生する誤差
けた落ち 絶対値のほぼ等しい2つの数の差を求めたとき、有効けた数が大きく減るために発生する誤差
打切り誤差 浮動小数点数の計算処理を途中で打ち切ることによって発生する誤差

近似値 - 真値 = 絶対誤差
(近似値 - 真値) / 真値 = 相対誤差

近似値 - 真値 ≦ ε ⇒ ε = 誤差限界
誤差限界 / 真値 = 相対誤差の限界

集合と論理

集合論理

A∩B = AかつB
A∪B = AまたはB
A - B = 差集合 = A∩B
A Δ B = 対称差 = (A - B) ∪ (B - A)

集合の要素数
n(A∪B) = n(A) + n(B) - n(A∩B)
n(A∪B∪C) = n(A) + n(B) + n(C) - n(A∩B) - n(B∩C) - n(C∩A) + (A∩B∩C)

ド・モルガンの法則
AB = A∪B

n(A) = 66 | n(B) = 54 | ALL = 100 | OTHER = 6のときのn(A∩B)
n(AB) = 6
n(A∪B) = 100 - 6 = 94
94 = 66 + 54 - n(A∩B)
n(A∩B) = 120 - 94 = 26

論理演算

・∧ = ∩ = AND
+∨ = ∪ = OR
 ̄¬ =  ̄ = NOT

A・A = A (べき等則)
A+A = A (べき等則)
A・B = B・A (交換の法則)
A+B = B+A (交換の法則)
(A・B)・C = A・(B・C) (結合の法則)
(A+B)+C = A+(B+C) (結合の法則)
A・(B+C) = (A・B)+(A・C) (分配の法則)
A+(B・C) = (A+B)・(A+C) (分配の法則)
A+(A・B) = A (吸収の法則)
A・(A+B) = A (吸収の法則)
A・B = AB (ド・モルガンの法則)
A+B = AB (ド・モルガンの法則)

ABA・B+A・Bを簡略化
= (¬A・¬B)+(¬A・B)+(A・¬B)
= ¬A+¬B・B+(A・¬B) (分配の法則)
= ¬A+(A・¬B)
= ¬A+A・¬A+¬B (分配の法則)
= ¬A+¬B (ド・モルガンの法則)
= ¬(A・B)

情報理論と符号化

情報量

情報量I(J) = -log2P(J)
※ P(J) = Jの生起確率

コインを投げたときの情報量
P = 1 / 2
I = -log22-1 = 1bit

サイコロを投げたときの情報量
P = 1 / 6
I = -log26-1 ≒ 2.58 → 3bit

[a-z]{2}の情報量
P = 1 / 26 * 26 = 1 / 676
I = -log2676-1 ≒ 9.4 → 10bit
676通りの表現に10ビット必要となることがわかる

平均情報量

平均情報量はあいまいさの程度を表す
平均情報量が小さいほどあいまいさがなく予測しやすい

J1〜Jnの平均的な情報量 エントロピー
平均情報量H = [nΣk=1] {P(Jk) * I(Jk)}

K個の事象の最大平均情報量
log2K

60%で晴れ、40%で雨の場合の平均情報量
H = 0.6 * (-log20.6) + 0.4 * (-log20.4) ≒ 0.97
2パターンの最大平均情報量は1なので、かなり予測しにくい事がわかる

情報源符号化

通信路符号化 = 情報を正しく伝達する方法
情報源符号化 = 情報を小さくする方法

通信路符号化の例 = パリティチェック、CRC、ハミング符号
情報源符号化の例 = ハフマン符号化、ランレングス符号化

ハフマン符号化とは
出現度の高い文字は短いビット列、出現度の低い文字は長いビット列で符号化する事で圧縮する

ランレングス符号化とは
AAAAABCCCCCC → 4A0B5C (圧縮率50%)

ディジタル符号化

パルス符号変調(PCM) = アナログデータをディジタル符号に変換する方法
①標本化(サンプリング):アナログ信号を一定間隔で切り出す
②量子化:アナログ値をディジタル値に変換する
③符号化:ディジタル値を2進符号形式に変換する

サンプリング周波数 = 1秒間にサンプリングする回数
量子化ビット数 = 1回のサンプリングで生成されるビット数
標本化定理 = サンプリング周波数をアナログ信号の上限周波数の2倍以上にする
秒間デジタルデータ量 = サンプリング周波数 * 量子化ビット数
サンプリング周期 = 1 / サンプリング周波数

4kHzまでの音声信号を量子化ビット数8ビットで符号化した場合のディジタルデータ容量
4kHz * 2 = 8kHz (サンプリング周波数)
8kHz * 8ビット = 64kビット/秒

その時のサンプリング周期
1 / 8kHz = 0.125 * 10-3 = 125 * 10-6 = 125マイクロ秒

キロ秒 = 103
秒 = 100
ミリ秒 = 10-3
マイクロ秒 = 10-6

オートマトン

有限オートマトン
プッシュダウンオートマトン
チューリングマシン

形式言語

言語処理

文脈自由文法G = (N, T, P, S)
N = 書き換える非終端
T = 終端記号
P = 書き換え規則
S = 書き換えを開始する非終端

文字 > 字句 > 文 > 言語
字句規則 = 文字から字句を構成するための規則
構文規則 = 字句の正しい並べ方の規則

字句解析 = 正規表現(有限オートマトン)を用いて表すことができる
構文解析 = 文脈自由文法を用いて表すことができる

BNF表記 = 文脈自由文法の代表的な表記法
①「::=」右辺で左辺を定義する
②「|」ORを意味する
③非終端記号は「<>」でくくる
④a, b, cや0, 1, 2を終端記号という

再帰的定義
<式> ::= <項> | <式><加減演算子><項>

グラフ理論

サイクリックグラフ

サイクリックグラフは閉路を持つ
①→②→③→④→②

非サイクリックグラフはトポロジカル順序を持つ
①→②→③→④|②→④なら①ー②ー③ー④

小道と経路

歩道 = 連続した点と辺を結んだもの
小道 = すべての辺が異なる ①ー②ー③ー④ー②
経路 = すべての点が異なる ①ー②ー③ー④

グラフの種類

単純グラフ = ループや多重辺が無い
完全グラフ = すべての点が結ばれている
2部グラフ = 全ての辺が点の集合V1ーV2で接続
オイラーグラフ = 始点と終点が等しく、全ての辺を1回だけ通る
ハミルトングラフ = 始点と終点が等しく、全ての点を1回だけ通る
正則グラフ = 各点の価数(辺の本数)が等しい

確率と統計

原因の確率

A社 50% 不良率 1%
B社 30% 不良率 3%
C社 20% 不良率 3%
不良品がA社から購入した確率

PA / (PA + PB + PC) = A社の不良品の確率 / 不良品の確率
= 0.5 * 0.01 / (0.5 * 0.01 + 0.3 * 0.03 + 0.2 * 0.03) = 0.25

マルコフ過程

晴 → 晴(40) 曇(40) 雨(20)
曇 → 晴(30) 曇(40) 雨(30)
雨 → 晴(30) 曇(50) 雨(20)
の時の雨の二日後が晴れる確率
雨 -> 雨(20) -> 晴(30) = 0.06
雨 -> 曇(50) -> 晴(30) = 0.15
雨 -> 晴(30) -> 晴(40) = 0.12
0.06 + 0.15 + 0.12 = 0.33

確率分布

平均値とは = 値を全部足して、数で割った値
中央値とは = 奇数(n/2)+1番目の値 偶数(n/2)と(n/2)+1の平均
最頻値とは = (モード値)データの中で最も出現度の多い値

第2章 アルゴリズムとプログラミング

スタックとキュー

スタック = LIFO 後入れ先出し PUSH&POP
キュー = FIFO 先入れ先出し ENQ&DEQ

PUSH(x) & ENQ(x)
top ← top + 1
S[top] ← x

POP()
top ← top - 1
return S[top]

DEQ()
return S[bottom]
bottom ← bottom + 1

木の深さ = H
完全2分木の葉の個数 = 2H
完全2分木の葉以外の節の個数 = 2H - 1
o-oo-oooo → 葉 = 4 | 節 = 3

⑩ー⑧⑫ー②⑨◯⑮
幅優先探索 = ⑩⑧⑫②⑨⑮
深さ優先探索(先行順) = ⑩⑧②⑨⑫⑮
深さ優先探索(中間順) = ②⑧⑨⑩⑫⑮ (昇順)
深さ優先探索(後行順) = ②⑨⑧⑮⑫⑩ (逆ポーランド)

2分探索木の節の削除
節が葉の場合 = 削除
左右どちらかしか持たない場合 = 削除する節を子で置き換える
左右どちらも持つ場合 = 左最大値の節か、右最小値の節で置き換える

探索アルゴリズム

線形探索法とは = データの先頭から順に検索
2分探索法とは = 中央の値と比較していく検索
ハッシュ法とは = キー値でアドレスを直接計算する検索

平均比較回数と最大比較回数
線形探索法 = (N+1)/2 | N
2分探索法 = log2N | log2N + 1
ハッシュ法 = 1 | N / M

1000個の配列から検索する時の平均比較回数と最大比較回数
線形探索法 = (1000+1)/2 | 1000 = 500 | 1000
2分探索法 = log21000 | log21000 + 1 ≒ 9.966 | 10.966

整列アルゴリズム

隣接交換法 = 隣り合う値を交換していく (バブルソート)
単純選択法 = 最も小さい値を前から交換していく
単純挿入法 = 先頭から正しい位置に挿入していく
クイックソート = 基準値を決め大小に分ける事を繰り返す
マージソート = データを分割していった後に併合していく
ヒープソート = 親≦子の順序木から、根を取り出していく
二分挿入法 = 単純挿入法で挿入に2分探索法を使う

各アルゴリズムの計算量
バブルソート O(n2) (逐次添加法)
単純選択法 O(n2) (逐次添加法)
単純挿入法 平均及び最悪O(n2)〜最良O(n) (逐次添加法)
クイックソート 最悪O(n2)〜平均O(nlog2n) (分割統治法)
マージソート O(nlog2n) (分割統治法)
ヒープソート O(nlog2n) (データ構造の利用)
二分挿入法 O(nlog2n) (データ構造の利用)

単純挿入法:元々正しい順に並んでいる時に最良O(n)
クイックソート:元々正しい順で最大値か最小値を基準とした時に最悪O(n2)

再帰法

F(x, y)で
・y=0のときx
・y>0のときF(y, x mod y)
F(231, 15)の値は?

F(15, 231 mod 15)
= F(15, 6)
= F(6, 15 mod 6)
= F(6, 3)
= F(3, 6 mod 3)
= F(3, 0)
= 3

プログラム言語

再入可能(リエントラント)プログラム = 複数のタスクから同時に呼び出されても動く
再帰(リカーシブ)プログラム = 自分自身を呼び出しても動く、実装にスタック(LIFO)処理が必要
再使用可能(リユーザブル)プログラム = 使い終わったプログラムを再ロードしなくても動く
再配置可能(リロケータブル)プログラム = プログラムがどのアドレスに配置されても動く

ヒープ = 動的割り当てのための領域

手続き型プログラム言語 = C, COBOL, Fortran
関数型プログラム言語 = Lisp, APL
論理型プログラム言語 = Prolog
オブジェクト指向型プログラム言語 = C++, JAVA, Smalltalk

第3章 ハードウェアとコンピュータ構成要素

ハードウェア

組み合わせ論理回路

論理積素子 = A・B (AND)
否定論理積素子 = A・B (NAND)
論理和素子 = A+B (OR)
否定論理和素子 = A+B (NOR)
排他的論理和素子 = A⊕B (XOR) = A・B+A・B = (A+B)・A・B
論理否定器 = A (NOT)

論理回路の設計
真理値表の作成→論理式を求める→論理回路の設計

半加算器
AとBの和の1桁目をS、桁上げをCとする
S = A・B+A・B
C = A・B
よってAND*3 OR*1 NOT*2で作れる
SはA⊕BなのでAND*1 XOR*1でも作れる

否定論理積(NAND)
すべての論理演算はANDとORとNOTで表現できる。
そしてANDとORとNOTはNANDで表現できる。 (MA法)
X・Y = (X NAND Y) NAND (X NAND Y)
X+Y = (X NAND X) NAND (Y NAND Y)
X = X NAND X

順序論理回路

RSフリップフロップ
r = リセット、1でリセット
s = セット、1でセット
s, r = 0, 0 = 前の状態
s, r = 0, 1 = yは0
s, r = 1, 0 = yは1
s, r = 1, 1 = 入力禁止

x = 0, y = 1からx = 1, y = 0に変える方法
s, r = 0, 1

FPGAを用いた論理回路設計

ダイナミック電力の低減
マルチVDD = 遅い回路ブロックに低い電圧を使う
DVS = プロセッサの電圧を動的に変える (Dynamic Voltage Scaling)
DVFS = プロセッサの電圧と周波数を動的に変える (Dynamic Voltage and Frequency Scaling)

スタティック電圧の低減
パワーゲーティング = 使ってない回路ブロックへの電源を遮断する
メモリの消費電力削減 = 未使用のメモリセグメントを停止
スタンバイ時の電源制御 = 不要なモジュールの電源を遮断
LPWA = 低消費電力で遠距離通信を実現する通信方式 (Low Power Wide Area)

データコンバータ

分解能 = 入力電圧のレンジ / 出力ビット数

0〜5Vの電圧をA/D変換する際の分解能
3ビット = 5 / 23 = 0.625V (0〜4.375V)
8ビット = 5 / 28 ≒ 0.0195V (0〜4.9805V)

LSBが1/2048Vで負の値を2の補数表現で「-1024V〜1024-(1/2048)V」の最小ビット数はいくらか
Nビットは負の値を補数表現で「-2N-1〜2N-1-1」である
-2N-1 * (1/2048) = -1024
(2N-1-1) * (1/2048) = 1024 - (1/2048)
上の式は-2N-1 * 2-11 = -210でN=22となる

プロセッサーアーキテクチャ

プロセッサの種類

MPU = CPUの機能を1つのLSIに実装したもの(マイクロプロセッシングユニット)
マルチコアプロセッサ = 同時に別の処理を実行して性能を高めれる
DSP = 積和演算を高速に実行できる(ディジタルシグナルプロセッサ)
GPU = 3次元グラフィックスの画像処理など

CISC = 複雑で多機能な長い機械語命令を実行できる
RISC = 極力単純で短い機械語命令だけを実装する

プロセッサの構成と動作

プログラムカウンタ = 次に読み出す命令の格納アドレスをもつ
命令レジスタ = 主記憶から読み出した命令を格納する
汎用レジスタ = データの一時的な保持や演算結果の格納など使い方が自由
スタックポインタ = スタックの先頭アドレスを保持
グローバルポインタ = 静的領域の先頭アドレスを格納する
インデックスレジスタ = アドレス修飾に使われる
ベースレジスタ = プログラムの先頭アドレスを保持

プロセッサの高速化技術

パイプライン処理 = 各ステージを並列にして処理する
制御ハザード = 先読み実行が無駄になること (分岐ハザード)
データハザード = データ読み書きの待ち合わせ
構造ハザード = ハードウェア資産の競合

D = パイプラインの深さ
P = パイプラインのピッチ(秒)
N = 命令数
パイプライン処理時間 = (D + N - 1) * P

パイプラインピッチが1ナノ秒
パイプラインの深さが3
実行している命令数が2
パイプライン処理時間 = (3 + 2 - 1) * 1 = 4ナノ秒

スーパースカラ = 同じステージを並列に実行する
VLIW = NOP命令を混ぜてパイプラインの乱れを抑制する
並列処理 = 複数のプロセッサを協調させて動作させる

並列処理のアーキテクチャ
SISD = Single Instruction stream Single Data stream 1命令で1つのデータ
SIMD = Single Instruction stream Multiple Data stream 1命令で複数のデータ ベクトル型スーパコンピュータ
MISD = Multiple Instruction stream Single Data stream 複数の命令で1つのデータ
MIMD = Multiple Instruction stream Multiple Data stream 複数の命令で複数のデータ MPP超並列コンピュータ

マルチプロセッサ = 複数のプロセッサを並列に動作させる

アムダールの法則
高速化率E = 1 / (1 - r + (r / n))
r = 高速化が可能な部分の割合
n = プロセッサの数

命令実行時間 = クロックサイクル時間 * CPI = クロック周波数の逆数 * CPI
1命令5クロック、クロック周波数が1GHz
クロックサイクル時間 = 1 / 109 = 10-9
命令実行時間 = 10-9 * 5秒 = 5ナノ秒

メモリアーキテクチャ

SRAM = 容量が小さいけどリフレッシュが不要で高速
DRAM = 容量が大きいけどリフレッシュが必要で低速

EEPROM = ブロック単位で操作できる不揮発性メモリ (フラッシュメモリ)
FeRAM = フラッシュメモリの次として期待されてるメモリ (強誘電体メモリ)

レジスタ → キャッシュメモリ → 主記憶装置 → ディスクキャッシュ → 補助記憶装置

時間の局所性 = アクセスされたデータが再びアクセスされる可能性が高い
空間の局所性 = 連続してアクセスされるデータは隣接したアドレスにある可能性が高い

TE = メモリの実効アクセス時間
TC = キャッシュメモリのアクセス時間
TM = 主記憶のアクセス時間
P = ヒット率
TE = TC * P + TM * (1 - P)

主記憶A = アクセス時間50
主記憶B = アクセス時間70 + キャッシュアクセス時間10 + ヒット率80%
メモリの実効アクセス時間 = 10 * 0.8 + 70 * 0.2 = 22

ライトスルー方式 = 書き込み命令でキャッシュと主記憶同時に書き込む 一貫性(コヒーレンシ)を保持できる
ライトバック方式 = メモリだけ書き込み、キャッシュから消える時に主記憶に書き込む 一貫性が保持できない

LRU = Least Recently Used 最も長く使われていないものを追い出す
LFU = Least Frequently Used 最も使用頻度の低いものを追い出す
FIFO、LIFO = First In First Out、Last In First Out

スヌープ方式 = バスを介して主記憶が変更されたかを監視してデータを最新に保つ

ダイレクトマッピング方式 = 主記憶のブロック番号 mod キャッシュメモリの総ブロック数 = キャッシュメモリのブロック番号
フルアソシアティブ方式 = 主記憶のブロックがどのキャッシュブロックにも対応づけられる
セットアソシアティブ方式 = 主記憶のブロック番号 mod 総セット数 = セット番号

入出力アーキテクチャ

プログラム制御方式 = CPUが入出力制御をする
DMA制御方式 = 外部装置と主記憶装置で直接データをやりとりする
チャネル制御方式 = チャネルを介してデータをやりとりする

シリアルインターフェース = 1本の信号線で1ビットづつ直列に伝送
パラレルインターフェース = 複数の信号線で同時に複数ビットを並列に伝送

USB = シリアルインタフェース規格 プラグアンドプレイやホットプラグが特徴

USB転送方式
アイソクナロス転送 = リアルタイム性、音声や映像などのデータ転送
バルク転送 = 大量のデータを一括転送
インタラプト転送 = 一定周期で少量のデータを転送
コントロール転送 = デバイスの設定・制御のための方式

第4章 システム構成要素

システムの処理形態

ハイパフォーマンスコンピューティング (HPC)
グリッドコンピューティング = ネットワーク上にある色々なコンピュータで並列処理
クラスタリング = 相互接続して高い信頼性や高い処理能力を持つシステムを構築する

クライアントサーバシステム

二層クライアントサーバシステム = プレゼンテーション層、データベースアクセス
三層クライアントサーバシステム = プレゼンテーション層、ファンクション層、データベースアクセス

システムの構成方式

デュアルシステム = 同じ処理を2台で実行し照合する
デュプレックスシステム = 主系と待機系で構成する

ホットスタンバイ方式 = 障害で直ちに待機系に切り替える
ウォームスタンバイ方式 = OSは起動、データだけバックアップ、切り替えに時間を要する
コールドスタンバイ方式 = 別に使ってるサーバで主系で行っていたシステムを起動する

フォールトトレランス = 故障しても大丈夫なようにする
フォールトアボイダンス = 故障しにくいものを選ぶ

フェールソフト = 障害時にシステム全体を停止させずに機能を維持させる
フォールバック = 障害装置を切り離し機能低下した状態で続行する
フェールオーバ = 障害時に他のシステムに引き継ぎ切り替わる
フェールバック = 代替システムから元に戻す
フェールセーフ = 障害時に影響を最小限にとどめ安全側に制御する
フォールトマスキング = 障害時に影響が外部にでないようにする
フールプルーフ = 意図しない操作でも誤動作が起こりにくいようにする

RAID0 = 複数のディスクに分散して配置するストライピングで入出力速度の向上を図る
RAID1 = 複数のディスクに同じデータを書き込む (ミラーリング)
RAID2 = RAID0にハミング符号用の複数のディスクを追加
RAID3 = RAID0にパリティディスクを追加バイト単位でストライピング
RAID4 = RAID0にパリティディスクを追加ブロック単位でストライピング
RAID5 = RAID4でデータとパリティを分散して高速化
RAID01 = ストライピングしたディスクを1つの単位としてミラーリングする
RAID10 = ミラーリングしたディスクを1つの単位としてストライピングする

システムの性能

システムの性能指標

MIPS = 1秒間に実行可能な命令数を1,000,000(106)単位で表したもの
FLOPS = 1秒間に実行可能な浮動小数点演算回数

システムの性能計算

1件80万ステップ、20MIPSでCPU使用率80%のときの処理能力
20,000,000 * 0.8 = 16,000,000
16,000,000 / 800,000 = 20件/秒

1件80,000ステップ、1ステップ1マイクロ秒で処理できる、毎秒30件処理したい、CPU使用率80%
0.000,001 * 80,000 * 100 / 80 = 0.1
1 / 0.1 = 10
30 / 10 = 3倍

命令ミックス = よく使われる各命令の実行速度と出現率で表した性能評価技法
コマーシャルミックス = 事務計算向けの命令ミックス
ギプソンミックス = 科学技術計算向けの命令ミックス

加減算 0.3ms 45%
乗除算 1.1ms 25%
比較 1.5ms 20%
分岐命令 4.5ms 10%
命令ミックス値 = 0.3 * 0.45 + 1.1 * 0.25 + 1.5 * 0.20 + 4.5 * 0.10 = 1.16 * 10-6
MIPS値 = 1 / (1.16 * 10-6) ≒ 0.86MIPS

システムの性能評価の技法

Dhrystone = SPECintが制定される前業界標準だった整数演算性能を評価
Whetstone = SPECfpが制定される前業界標準だった浮動小数点演算性能を評価
TPC-C = トランザクション処理やデータベースに関する性能を評価
TPC-E = 複雑なデータベースを基にトランザクション処理の性能を評価
TPC-App = APサーバとWebサービスの性能を評価
TPC-H = 意思決定支援システムの性能を評価

システムの性能設計

スケールアップとは = サーバの処理能力を向上させる
スケールアウトとは = サーバの台数を増やし負荷分散させる

待ち行列理論の適用

待ち行列理論とは

1分間に5人の客がレジに到着する時の平均到着間隔
平均到着率(λ) = 5人/分
平均到着間隔 = 1分/5人 = 12秒

平均滞留数とは = サービス中のトランザクションを含めた数
平均待ち行列長とは = サービス中のトランザクションを除いた数
平均応答時間とは = サービス中の時間を含めた待ち時間
平均待ち時間とは = サービス中の時間を除いた待ち時間

1分間に4人の客に順にサービス可能な時の平均サービス時間
平均サービス率(μ) = 4人/分
平均サービス時間 = 1分/4 = 15秒

5分ごとに客が到着し、1人の客に3分でサービスする時の利用率
利用率(ρ) = 平均到着率(λ) / 平均サービス率(μ) = 3 / 5 = 0.6

平均要求回数は毎分1回、平均15秒で処理する、その時の利用率
利用率(ρ) = (1/60) / (1/15) = 15 / 60 = 0.25

平均待ち時間と平均応答時間

平均待ち時間(Wq) = ρ / (1 - ρ) * 平均サービス時間
平均応答時間(Ww) = 平均待ち時間(Wq) + 平均サービス時間

2件/sでくるのを0.3秒/件で処理するM/M/1の時の平均応答時間は何ミリ秒か
ρ = 2 / (1 / 0.3) = 0.6
Ww = 0.6 / (1 - 0.6) * 0.3 + 0.3 = 0.75s = 750ms

ネットワーク評価への適用

平均回線待ち時間W、平均伝送時間T、平均回線利用率ρの関係がM/M/1の待ち行列モデルのとき
平均回線待ち時間Wを平均伝送時間Tの3倍以下にしたい、平均回線利用率ρを最大何%にすべきか
W ≦ 3 * T | W = ρ / (1 - ρ) * T
ρ / (1 - ρ) * T ≦ 3 * T
ρ ≦ 3 * (1 - ρ)
4ρ ≦ 3
ρ ≦ 0.75

システムの信頼性

システムの信頼性評価指標

信頼性を評価する概念の頭文字 = RASIS
信頼性(Reliability) = 平均故障間隔(MTBF)が指標
可用性(Availability) = 稼働率(MTBF/(MTBF+MTTR))が指標
保守性(Serviceability) = 平均故障時間(MTTR)が指標
完全性(Integrity) = 記録されているデータの不整合の起こりにくさ
安全性(Security) = 災害障害犯罪などに対する耐性

システムの信頼性計算

MTBF = 平均故障間隔、稼働時間をすべて足して故障回数で割る
MTTR = 平均修理時間、修理時間をすべて足して故障回数で割る
故障率 = 1 / MTBF (故障発生数とも言う)

周辺装置のMTBFが2000時間、処理装置は1時間に故障する確率が10-8が20万個で構成、全体のMTBFは何時間か
周辺装置の故障率 = 1 / 2000
処理装置の故障率 = 10-8 * 2 * 105 = 4 / 2000
システム全体の故障率 = 1 / 2000 + 4 / 2000 = 1 / 400
MTBF = 400

複数システムの稼働率

R = 稼働率
P = 不稼働率
R + P = 1
直列接続の稼働率 = R * R
並列接続の稼働率 = 1 - (1 - R) * (1 - R) = 1 - P * P
2 out of 3システムの稼働率 = 3R2 - 2R3

第5章 ソフトウェア

OSの構成と機能

基本ソフトウェア = 制御プログラム言語プロセッササービスプログラムからなる (広義のOS)
制御プログラム = カーネルデバイスドライバファイルシステムからなる (狭義のOS)
カーネル = ジョブ管理、タスク管理、記憶管理、割り込み処理などの処理を主記憶に常駐し制御する

タスク(プロセス)管理

ディスパッチング = CPU割当てされ、実行状態に移る
プリエンプション = タイマ割込みなどで、実行可能状態へ移される
TCB = Task Control Block タスクIDやタスクの優先度やPSWの情報が登録される場所
PSW = Program Status Word プログラムの実行状態を保持するレジスタ

スケジューリング方式
イベントドリブン方式 = 環境の変化をトリガとしてスケジューリングする
タイムスライス方式 = タイムクウォンタムごとにスケジューリングする
到着順方式 = 優先度がなく実行可能状態になった順で実行する (ノンプリエンプション方式)
静的優先度順方式 = 優先度の最も高いタスクから実行する (プリエンプション方式)
動的優先度順方式 = 待ち時間が長くなったタスクの優先度を上げスタベーションを回避する (エージング方式)
ラウンドロビン方式 = 先頭からタイムクウォンタムを割り当て実行していく
多重待ち行列方式 = ラウンドロビン+優先順位、順次優先順位を下げタイムクウォンタムを長くしていく
処理時間順方式 = 処理時間の短いタスクに高い優先順位を与え実行する (SPT方式)

排他制御
TSL命令 = 共有メモリ内の1ビットを利用してロック/アンロックのロジックを実現するハードウェア命令
2値セマフォ = P操作(1で実行して0に、0で待機)、V操作(1にして待機を実行)
ゼネラルセマフォ = N個のタスクを実行可能なときに使う
ENQ/DEQ命令 = ENQがP操作、DEQがV操作に相当

デッドロック対策
静的防止法 = あらかじめ割当と開放の順を決めておく方法
動的防止法 = 資源の割当状況に応じてデッドロックが生じないように動的に割り当てる方法

記憶管理

実記憶管理

単一連続割当方式 = 主記憶を1つのタスクだけに割り当てる方式
固定区画方式 = あらかじめ分割した区画にタスクを割り当てる方式 (パーティション方式)
可変区画方式 = タスクの大きさに合わせて区画を作り割り当てる方式
オーバレイ方式 = プログラムをセグメント分割しておき、順次実行に必要な分をロードして実行

内部フラグメンテーション = 固定区画方式によって区画内に未使用領域が発生すること
外部フラグメンテーション = 可変区画方式によって区画外に未使用領域が発生すること
メモリコンパクション = 実行中のプログラムを動的再配置して未使用領域をまとめること

メモリ割り当て方式
最初適合アルゴリズム = First-Fit 最初に見つかったものを割り当てる
最良適合アルゴリズム = Best-Fit 必要以上で最も小さいものを割り当てる
最悪適合アルゴリズム = Worst-Fit 必要以上で最も大きなものを割り当てる

仮想記憶管理

DAT = Dynamic Address Translator 動的アドレス変換
MMU = Memory Management Unit 仮想アドレスを実アドレスに対応させる機能などのメモリ管理機能を持つ装置

仮想記憶方式
ページング方式 = 仮想アドレス空間をページ分割し、ページ単位でアドレス変換をする
セグメント方式 = プログラムをセグメントで分割し、セグメント単位でアドレス変換をする

ページング方式

ページテーブル = 仮想アドレスと実アドレスの対応表
ページフォールトビット = ページテーブル上の主記憶にあるかないかのビット
TLB = Translation Look-aside Buffer 主記憶のページテーブルを毎度使ってると遅いのでキャッシュするしくみ
プリページング = 実行に必要なページをあらかじめ予測して用意する方法
デマンドページング = ページフォールト発生するたびにページインする方法
スラッシング = ページング処理が多くなるとCPU使用率が下がる減少

開発ツール

静的解析ツール
構文チェッカ = プログラムが構文に従って記述されているかを検査するツール
コードオーディタ = プログラミング規約に違反していないかを検査するツール
モジュールインタフェースチェックツール = モジュール間のインタフェース不一致を検出するツール

動的解析ツール
トレーサ = 命令単位や指定した範囲で実行し、実行直後の情報が逐次得られるツール
テストカバレージツール = ホワイトボックステストのカバレージを測定するツール
アサーションチェッカ = プログラムの実行時に条件を満たしているか検査するツール
プロファイラ =_ プログラムの性能を分析するツール
テスト支援ツール = _テストベッド
ツールやテストデータ生成ツールなど

CASEツール
CASE = Computer Aided Software Engineering 開発の効率化を支援するツール
上流CASE = DFDやE-R図などのダイアグラム作成を行うツールがある
下流CASE = コード生成ツールやデバッグ用ツールがある
保守CASE = 保守工程における作業を支援する

リポジトリ = 各開発工程での成果物をメタ情報として管理するデータベース
構成管理 = バージョン管理、更新履歴管理、チェックイン/チェックアウト機能など

UNIX系OS

ファイルの種類
通常ファイル = テキスト、画像データなどを格納するファイル
ディレクトリ = ディレクトリ内にあるファイルの名前とiノード番号が保持されているファイル
特殊ファイル = 磁気ディスクなどの入出力装置にアクセスするためのファイル

第6章 データベース

データベースの基礎

データベースの種類
階層型データベース = 木構造でデータの構造を表現するDB
網型データベース = 親と子が多対多の関係を表現したDB ネットワーク型データベース
関係データベース = データを二次元の表で表現したDB リレーショナルデータベース

3層スキーマ
概念スキーマ = データベースの論理的構造とその内容を定義する
外部スキーマ = 利用者やプログラムから見たデータの定義をする
内部スキーマ = 外部記憶装置にどのような形式や編成で記憶するか

カーディナリティ = 1体1、1対多、多対多のような対応関係のこと
連関エンティティ = 多対多の真ん中のテーブル
依存エンティティ = 依存するエンティティが無いと存在できないエンティティ
独立エンティティ = 連関エンティティに自分のIDを作った依存しないエンティティ

関係データベース

構造
次数 = 表のの数 変わることがない
基数 = 表のの数 行を追加削除したら増減する

キー
スーパキー = 表中の行を一意に特定できる属性や属性の組
候補キー = スーパキーの中で余分な属性を含まないキー、一意性制約が設定される
主キー = 候補キーの中から任意に選んだキー、主キー制約が設定される
代理キー = 主キーに選ばれなかった候補キー
外部キー = 1対多の1側の候補キーを参照する属性をもたせる 参照制約が設定される

正規化

第1正規化 = 繰り返し部分を排除する操作
第2正規化 = すべての非キー属性を別の表に分解する操作
第3正規化 = すべての非キー属性を候補キーに直接関数従属する状態にする操作

第1正規化におけるデータ操作での不具合
修正時異常 = データを変更したい時、該当行をすべて同時に変更しなければならない
挿入時異常 = 主キーをなすデータがないと登録できない
削除時異常 = 主キーをなすデータも削除してしまう

関係データベースの演算

A表1,2 B表2,3
UNION = 1,2,3 (A∪B)
UNION ALL = 1,2,2,3 (A∪B)
INTERSECT = 2 (A∩B)
EXCEPT = 1 (A-B)
FROM A,B = 1:2,1:3,2:2,2:3 (A*B)
INNER JOIN = 2:2 (内結合)
LEFT OUTER JOIN = 1:N,2:2 (左外結合)
RIGHT OUTER JOIN = 2:2,N:3 (右外結合)
FULL OUTER JOIN = 1:N,2:2,N:3 (完全外結合)

SQL

DISTINCT = 重複行を除いた結果を得る
HAVING = GROUP BYのグループに対して条件を指定する
ANY = サブクエリの結果のうち1つでも条件に合えばTRUE
SOME = ANYのエイリアス
ALL = サブクエリの結果全てが条件に合えばTRUE
IN = = ANYと同じだけど、サブクエリだけでなく式リストも使える
NOT IN = <> ALLのエイリアス
NO ACTION = 参照制約があれば失敗 (デフォルト)
RESTRICT = NO ACTIONと同じ
CASCADE = 参照先も更新する
SET DEFAULT = 参照先をDEFAULT値で更新する
SET NULL = 参照先をNULLで更新する

データベース管理システム

原子性 = Atomicity すべての処理が完了しているか、まったく実行されていないかのどちらかで終了する
一貫性 = Consistency データベース内のデータが常に整合性が保たれる
隔離性 = Isolation 複数のトランザクションを同時に実行しても処理が正しく動作する (独立性)
耐久性 = Durability トランザクションの結果は障害が発生しても消失しない

ロストアップデート = 更新したはずのデータが後勝ちでなかったことになる
ダーティリード = まだコミットされていないデータを読み込む
アンリピータブルリード = 再読込するとデータが変更されている
ファントムリード = 再読込するとデータが増えてる

媒体障害からの回復 = バックアップファイルから戻して、ロールフォワード処理をする
トランザクション障害からの復旧 = ロールバック処理をする
システム障害からの復旧 = T2前はロールフォワード処理をする、T2後はロールバック処理をする

データベース応用

データウェアハウス = 散在するデータを有効活用するため統合したDB
ETL = Extract/Transform/Load 基幹DBデータ抽出、変換、データウェアハウスへのロード
データマート = データウェアハウスのデータの一部を特定の目的で切り出したDB
データクレンジング = データ属性やコード体系を統一する処理

OLAP = Online Analytical Processing 多次元データを様々な視点から分析する
スライス = 属性項目の値を指定して水平で切り出す
ドリルダウン = データをより深いレベルのデータに詳細化する
ロールアップ = ドリルダウンの逆
ダイス = 立体面を回転させる
MOLAP = Multi-dimentional OLAP 多次元のまま管理するOLAP
ROLAP = Relational OLAP スタースキーマ構造で管理するOLAP
ファクトテーブル = 中央に置かれる分析対象のデータ (売上データなど)
ディメンションテーブル = ファクトテーブルから外部キーで関連付いた分析の切り口 (地域、製品、時間など)

第7章 ネットワーク

通信プロトコルの標準化

OSI基本参照モデル
アプリケーション層 = HTTPやSMTPなどのアプリケーションに特化したプロトコル
プレゼンテーション層 = データの表現形式管理 文字コードや圧縮の種類
セッション層 = データの送受信管理 コネクション確率、データ転送のタイミングなど
トランスポート層 = データ転送の制御で通信の品質を保証 TCP/UDPなど
ネットワーク層 = エンドツーエンドのやり取りを規定 IPなど
データリンク層 = 隣接ノード間での通信について規定 MACフレームの規格など
物理層 = 物理的、電気的な性質を規定 電圧やケーブルの抵抗やコネクタの形状など

ネットワーク接続装置と関連技術

物理層
リピータ = ネットワーク上で流れる電流の増幅や整流をする装置
マルチポートリピータ = 複数のノードを接続できるリピータ (ハブ)

データリンク層
ブリッジ = データリンク層でMACアドレスを認識して通信を中継する装置
コリジョンドメイン = ポートに接続されているMACアドレスのセグメント
スイッチングハブ = ブリッジと同じ機能を持つ (L2スイッチ)
スパニングツリープロトコル = ブロードキャストストームを防ぐプロトコル (STP)
リンクアグリゲーション = 複数の物理ポートを1つの論理ポートとして扱う技術

ネットワーク層
ルータ = 宛先IPをみてパケットの送り先を決めて通信を制御する装置
ブロードキャストドメイン = ルータで分けられたネットワークの単位
ディスタンスベクタ型ルーティングプロトコル = ホップ数が最小になる経路を選択する (RIP)
リンクステート型ルーティングプロトコル = 回線速度をコストとして経路選択の要素に取り入れる (OSPF)
VRRP = Virtual Router Redundancy Protocol 複数のルータを1台のルータとして見る
L3スイッチ = ルータとは違いハードウェアで処理しているので早い

トランスポート層以上
ゲートウェイ = プロトコルコンバータ ファイアウォールやプロキシなど
L4スイッチ = ゲートウェイの1つ、ポート番号なども経路制御判断の情報とする
L7スイッチ = アプリケーション層までの情報を使って通信制御をする

データリンク層の制御とプロトコル

コリジョン = 複数のデータを1つのケーブルで送受する時のデータの衝突
MAC = Media Access Control コリジョンを回避するための制御
CSMA/CD方式 = イーサネット 使用されていない時にデータの送信をする、衝突した時は再送する
トークンパッシング方式 = 光ファイバ フリートークンを獲得したノードがデータを送信する
TDMA方式 = Time Division Multiple Access 時間を細かく区切ってデータを送信する
CSMA/CA方式 = 無線LAN 衝突回避のため利用していない周波帯域を使って送信する
RTS/CTS = Request To Send/Clear To Send 隠れ端末問題を解決するためのネゴシエーション方法

ネットワーク層のプロトコルと技術

IPアドレス
ネットワークアドレス部 = クラスA先頭8ビット クラスB先頭16ビット クラスC先頭24ビット
ホストアドレス部 = クラスA残り24ビット クラスB残り16ビット クラスC残り8ビット
クラスD = 1110から始まるマルチキャスト用アドレス (224.0.0.0/4)

ネットワークアドレス = ホストアドレス部がすべて0 (192.168.0.0)
ブロードキャストアドレス = ホストアドレス部がすべて1 (192.168.255.255)
ループバックアドレス = 自分自身を表すIPアドレス (127.0.0.1)
ローカルIPアドレス = 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16

ユニキャスト = 単一の送信先を指定して行う通信
ブロードキャスト = ネットワークの全ノードに対して行う通信
マルチキャスト = 指定した複数の送信先に対して同一データを送る通信
エニーキャスト = IPv6でのみ使える発信元に最も近い1つのノードだけ受信する通信

NAT = グローバルIPとプライベートIPを1対1で相互に変換するアドレス変換技術
NAPT = NATにポート番号を組み合わせたもの、1つのグローバルIPで複数のノードが接続できる (IPマスカレード)

ICMP = Internet Control Message Protocol IPパケットの送信処理における制御プロトコル
ping = エコー要求やエコー応答などのICMPメッセージを利用したコマンド

トランスポート層のプロトコル

ポート番号を元に宛先のアプリケーション層にデータを渡す層
TCP = HTTPFTPなどに使われるコネクション型プロトコル
UDP = DHCPNTPなどに使われるコネクションレス型プロトコル

アプリケーション層のプロトコル

SMTP-AUTH = サブミッションポート587を使用して認証する機能を追加したSMTP
POP before SMTP = POP3の認証をしたユーザーにSMTPを許可する
MIME = 画像などをSMTPで扱えるようにBase64などを用いて拡張した規格
S/MIME = MIMEに暗号化と署名の機能を追加した規格
PGP = S/MIMEと同じ、認証局は使わず相互認証をする

SNMP = TCP/IPに属するネットワーク管理用のプロトコル
PDU = Protocol Data Unit SNMP間でやり取りされる管理情報
MIB = Management Information Base 故障情報やトラフィック情報などが蓄積される
Get-Request, Get-Next-Request = エージェントから情報を引き出す
Set-Request = 管理オブジェクトの既定値を変更する
Get-Response = マネージャからの要求に返答する
Trap = エージェントから情報を送信する

伝送技術

誤り制御
パリティチェック = データの最後に1の数が偶数や奇数になるように0か1を挿入する
CRC = Cyclic Redundancy Check 生成多項式で誤り検出用のデータを作成する
ハミング符号 = 検査ビットを付与して2ビットの誤り検出と1ビットの誤り自動訂正機能をもつ
水平垂直パリティチェック = パリティチェックを水平垂直にして1ビットの誤り自動修正ができる

同期制御
キャラクタ同期方式 = SYNコードを2個続けて送信して同期を取る
フラグ同期方式 = 送信したいデータの前後にフラグ0111110を挿入して同期を取る (フレーム同期方式)
調歩同期方式 = 固定長ブロックの前後にスタートビット0とストップビット1をつけ送信して同期を取る (非同期方式)

伝送制御
HDLC = Hight-level Data Link Control 効率と信頼性を追求したフラグ同期方式を採用した伝送制御手順
FCS = Frame Check Sequence HDLC内のデータについてCRC方式で誤りチェック情報を付与する

交換方式

パケット交換方式 = 回線交換方式とは違いパケットに分割して蓄積して順次送信する
パケット交換方式のメリット = 耐障害性パケット多重異機種間接続性
パケット交換方式のデメリット = 蓄積交換処理による遅延パケット到着順序の不整合
ATM交換方式 = Asynchronous Transfer Mode セルの長さを統一し高速な処理を実現した

フレームリレー = パケット交換方式の一種でフロー制御や再送制御などを簡略化した方式
DLCI = Data Link Connection Identifier フレームリレーで使う仮想回線の通信相手の識別子
CIR = Committed Information Rate ネットワークが輻輳状態に陥っても最低限保証する通信速度

第8章 セキュリティ

暗号化

共通鍵暗号方式 = DESAESなど
公開鍵暗号方式 = RSAElGamal楕円曲線暗号など

無線LANの暗号

WPAとWPA2の違い = TKIPではなくAESによる暗号化
WPA-PSK = Pre-Shared Key パーソナルモードで使用される方式

認証

PPP = 電話回線で二点間の通信を行うためのデータリンク層のプロトコル
NCP = PPPのIPやIPXなどのネットワーク層のプロトコル設定をネゴシエーション
LCP = PPPの認証や暗号化の有無などを相手ノードとネゴシエーションする
PAP = Password Authentication Protocol 平文で認証データを送信するPPP認証
CHAP = Challenge Handshake Authentication Protocol チャレンジレスポンス認証を使うPPP認証

RADIUS認証システム = Remote Authentication Dial-In User Service 認証サーバとアクセスサーバを分離した
IEEE802.1X = RADIUSを採用したイーサネットや無線LANにおけるユーザ認証の規格
EAP = Extended Authenication Protocol PPPを拡張したIEEE802.1Xの認証プロトコル

ディジタル署名とPKI

ディジタル署名 = 改ざんなりすましを防ぐと同時に、否認防止にもなる。
PKI = Public Key Infrastructure 公開鍵暗号方式を利用した認証および盗聴防止基盤
PKIの特徴 = 認証局がディジタル証明書を発行し、公開鍵が正当な送信者のものであることを保証する

情報セキュリティ対策

コンピュータウィルスの機能 = 自己伝染機能潜伏機能発病機能
コンピュータウィルスの感染経路 = セキュリティホールバックドアマクロ
ビヘイビア法 = 検査対象プログラムをサンドボックスで実行して挙動を監視してウィルス検知する方法
ポリモーフィック型ウィルス = 感染するごとに鍵を変えて暗号化しパターン検知されないようにするウィルス

ファイアウォールの種類
パケットフィルタリング型 = パケットのIPとポートをチェックしてフィルタリングをする
サーキットレベルゲートウェイ型 = セグメントレベルのフィルタリングをする (トランスポートゲートウェイ型)
アプリケーションゲートウェイ型 = アプリケーションプロトコルレベルのフィルタリングをする

セキュリティ対策機器
NIDS = ネットワーク型IDS ネットワークを監視して不正パケットを検知して通知
HIDS = ホスト型IDS ホストのパケットやシグネチャのパターンマッチングを失敗させる攻撃も検知
IPS = Intrusion Prevention System 侵入防止システム パケット監視だけでなく通信を遮断などもする

不正検知方法
シグネチャ方式 = データベース化された既知の攻撃パターンと通信パケットのパターンマッチングで検出
アノマリー方式 = 正常パターン以外を全て異常と検知する
False Positive = 誤検知 正常なものを不正と誤認知すること
False Negative = 検知漏れ 不正を正常だと判断してしまうこと

VPNのプロトコル
IPsec = ネットワーク層で暗号化や認証を行う
IPsecの追加フィールド = 認証AH(Authentication Header)、認証と暗号化ESP(Encapsulating Security Payload)
PPTP = Point to Point Tunneling Protocol データリンク層で暗号化や認証を行う
IKE = Internet Key Exchange IPsecで暗号化方式の決定と鍵交換をするフェーズ

情報セキュリティの脅威と攻撃手法

ペネトレーションテスト = 実際の攻撃方法と同じ手段で攻撃して脆弱性をチェックする疑似攻撃テスト

情報セキュリティ管理

デジタルフォレンジックス = 不正アクセスなどの証拠性をあきらかにするためのデータ保全収集分析する技法
純粋リスク = 単にデメリットしか生まないリスク
投機リスク = そのリスクが利益を生む可能性に隣接するリスク
定量的評価 = 想定損害額 * 発生確率でリスク値を計算
定性的評価 = 情報資産の価値、脅威、脆弱性の相対的評価値でリスク値を評価
リスクコントロール = リスク回避、リスク最適化、リスク移転、リスク保有
リスクファイナンス = リスク移転、リスク保有
ISMS = 組織のセキュリティ運用体制を規定するISO/IEC 27001などの情報セキュリティマネジメントシステム
情報セキュリティポリシ = 情報セキュリティ基本方針、情報セキュリティ対策基準

第9章 システム開発技術

開発プロセス・手法

コンカレントエンジニアリング = 複数の工程を平行してすすめる開発
コデザイン = コンカレント開発でHWとSWを同時に設計する方法
コベリフィケーション = シミュレータでHWとSWの検証を同時に行う

リバースエンジニアリング = ソースの静的解析でプログラム仕様を調べ設計仕様や要求仕様を作る技術
フォワードエンジニアリング = 新規システムの仕様から新規ソフトウェアを構築する
リエンジニアリング = リバースエンジニアリングしてそれをフォワードエンジニアリングすること

CMMI = Capability Maturity Model Integration SW開発保守する組織のプロセスのありかたを示したモデル
SPA = Software Process Assessment CMMIなどの成熟度モデルを用いて評価したり、それを行うための手法

分析・設計手法

構造化分析法 = デマルコによって提唱されたシステム機能間のデータの流れから仕様化する技法
DFD = Data Flow Diagram データの流れと処理の関係を図式表現する手法
構造化設計 = DFDの各プロセスをトップダウンアプローチによりモジュール分割していく手法
モデル化のDFD作成順 = 現物理モデル→現論理モデル→新論理モデル→新物理モデル
ミニスペック = 最下位のDFDの機能仕様書
データディクショナリ = DFDのデータとデータストアを構成するデータの内容の定義

ペトリネット図 = 並列動作する機能どうしの同期を表現する図式化技法
トランジション = 事象
プレース = 状態
トークン =

オブジェクト指向設計

インヘリタンス = 継承のこと
is-a関係 = 汎化ー特化関係 〜は…である関係
part-of関係 = 集約ー分解関係 〜は…の一部である関係
ポリモーフィズム = 同じメッセージを送っても受け取るオブジェクトによって異なる動作をする特性

UML = Unified Modeling Language オブジェクト指向分析・設計で用いられるモデリング言語

クラス図
□ーー□ = 関連:AとBには関係がある
□◁ー□ = 汎化:BはAの一種であり、継承している
□◇ー□ = 集約:BはAの部品であるが、他のクラスの部品にもなれる
□◆ー□ = コンポジション:集約より強い関係、Aを消すとBも消える
□←ー□ = 依存:BはAに依存している、BはAの変更の影響を受ける

シーケンス図 = オブジェクト間の相互作用を時間軸に沿って表す図
アクティベーション = □の部分 活性区間
ライフライン = アクタやクラスから伸びる棒 生存期間

ユースケース図 = ユースケースとアクタとの相互作用を表す図
ステートマシン図 = オブジェクトが受け取ったイベントとそれに伴う状態の遷移を表す図
アクティビティ図 = フローチャート システムやユースケースの処理の流れを表す図

モジュール設計

STS分割 = データの流れに着目した分割技法で、源泉変換吸収の3つのモジュールに分割する
最大抽象入力点 = 入力とはいえない点まで抽象化された
最大抽象出力点 = はじめての出力データといえる形を表す

TR分割 = トランザクションの種類により実行する処理が異なる場合に有効な分割技法
共通機能分割 = STS分割TR分割したモジュールの共通機能を共通モジュールとして独立させる方法
ジャクソン法 = JSP 基本、連続、繰り返し、選択の4つの要素を組み合わせて表現する構造化設計技法
ワーニエ法 = 集合論に基づいて入力データ構造をもとにした構造化設計技法

モジュール結合度 = モジュール間の関連性の強さを示すもの
内容結合 = 相手モジュールに直接分岐する
共通結合 = 共通領域に定義されたデータを参照する
外部結合 = 外部宣言して他のモジュールからの参照を許可し共有する
制御結合 = 引数を渡しモジュール内の機能や実行を制御する
スタンプ結合 = 構造体データすべてを引数で相手モジュールに渡す
データ結合 = ブラックボックスにして必要なデータだけを引数で渡す

モジュール強度 = モジュール内の構成要素間の関連性の強さを示すもの
暗号的強度 = 単純に分割しただけで機能を定義できない
論理的強度 = 関連した複数の機能をもち引数でモジュール内の機能を選択実行する
時間的強度 = 特定の時期に実行する機能をまとめたモジュール
手順的強度 = 複数の逐次的に実行する機能をまとめたモジュール
連絡的強度 = 手順的強度のうちモジュール内の機能間にデータの関連性があるモジュール
情報的強度 = 同一のデータ構造や資源を扱う機能を一つにまとめたモジュール
機能的強度 = 1つの機能だけからなるモジュール

領域評価 = モジュールの制御領域と影響領域を評価すること

テスト

ブラックボックステスト = 同値分割などの外部仕様に基づくテストケースでテスト
ホワイトボックステスト = 命令網羅などのプログラムの内部論理の正当性のテスト

命令網羅 = 命令を1回実行すればいいだけなので全経路の確認はできない
判定条件網羅 = 分岐網羅 判定条件の真偽を網羅する全経路の確認ができる
条件網羅 = 条件の真偽を網羅すればいいが全経路の確認はできない
複数条件網羅 = 条件と判定条件を網羅する

ボトムアップテスト = 結合テストで下位モジュールからテストしていく方法 ドライバが必要
トップダウンテスト = 結合テストで上位モジュールからテストしていく方法 スタブが必要

テスト管理手法

信頼度成長曲線が左寄りの時の理由 = プログラムの質が悪い設計段階でのミスがあり、見直しを行う必要がある
信頼度成長曲線が右寄りの時の理由 = テストの質が悪い解決困難なバグに直面したテスト状況を分析する必要がある

バグ埋め込み法の方程式 = 発見された埋め込みバグ数 / 埋め込みバグ数 = 発見された潜在バグ数 / 潜在バグ数
2段階エディット法の方程式 = N = (NA * NB) / NAB | NAB / N = NA / N * NB / N

レビュー

レビューの種類
机上チェック = 作成者自身が一人で行うレビュー
ピアレビュー = 同じプロジェクトの同僚や専門家仲間と行うレビュー
IV&V = Independent Varification and Validation 独立した組織の指導と管理に基いて行うレビュー

レビューの手法
ウォークスルー = 成果物の作成者が説明者になり行われるレビュー
インスペクション = 成果物の作成者以外がモデレータとして仕切るレビュー、レビューの焦点が絞られる
パスアラウンド = 成果物を複数のレビューアに個別にレビューしてもらう方法

第10章 マネジメント

プロジェクトマネジメント

プロジェクト統合マネジメント = プロジェクト憲章プロジェクトマネジメント計画書プロジェクト作業の指揮や監視・コントロール統合変更管理など
スコープマネジメント = スコープ計画要求事項収集スコープ定義WBS作成スコープ検証スコープコントロールなど
タイムマネジメント = WBSのワークパッケージをアクティビティに分解し所要時間や見積もりをしてコントロールする
コストマネジメント = コスト見積もりコストコントロールなど
品質マネジメント = 品質計画品質保証品質コントロールなど
リスクマネジメント = 好機を高め、脅威を軽減することを目的に行われる活動

ローリングウェーブ計画法 = 詳細が明確になってから詳細なWBSを作成していく計画法
コンティンジェンシー予備 = 想定外の事象に対処するために予備時間や予備費を盛り込む事
コンティンジェンシー計画 = リスクが顕在化しても成功できるように策定しておく対策や手続き

タイムマネジメントで用いる手法

REPT = 各作業の先行後続関係をアローダイアグラムを用いて表現する技法
クリティカルパス = 余裕のない作業を結んだ経路であり、事実上プロジェクトの所要期間を決めている作業を連ねた経路
フィーディングバッファ = CPでない工程がCPに合流する部分に設ける予備時間
ファストトラッキング = 順番に行うべき作業を並行して行うことにより所要期間を短縮する方法
クラッシング = CP上の作業に追加資源を投入する事で所要期間を短縮する方法

プレシデンスダイアグラム法 = 順序をFS, FF, SS, SFの関係で定義する
リード = 後続作業を前倒しに早める期間
ラグ = 後続作業の開始を遅らせる期間

進捗率 = Σ(作業完了率 * 工数比率)
テストデータ設計 工数比率20% プログラム100/100
テストデータ作成 工数比率20% プログラム100/100
テスト実施 工数比率20% プログラム70/100
テスト結果検証 工数比率40% プログラム50/100
の進捗率 = 1.0 * 0.2 + 1.0 * 0.2 + 0.7 * 0.2 + 0.5 * 0.4 = 0.74

コストマネジメントで用いる手法

標準タスク法 = 作業項目を単位作業まで分解し、ボトムアップ的に積み上げて全体の工数を見積もる方法
3点見積法 = 標準工数 = (悲観値 + 4 * 最頻値 + 楽観値) / 6

COCOMO = ソフトウェアの規模を入力変数として、コスト誘因とそれに対する係数を考慮し見積もる方法
開発工数P = a * (KDSI)b * 努力係数
開発期間D = 2.5 * Pc

ファンクションポイント法 = システムがユーザに提供する機能を規定の方法により定量化し見積もる方法
IFPUG法 = データファンクションとトランザクションファンクションに分けるFP法
類推見積法 = 過去に開発した類似システムの実績から類推して見積もる方法、デルファイ法を使う
デルファイ法 = 多数の専門家がほかの専門家の意見を相互に参照しつつ、繰り返し意見を出し合い収束させる方法
プログラムステップ法 = LOC(Line Of Code)法 全ステップ数をもとに開発規模を見積もる方法

EVM = Earned Value Management 進捗やパフォーマンスを出来高の価値によって定量化し状況を評価する管理手法
PV = Planned Value 計画時の出来高
EV = Earned Value 完了した作業の出来高
AC = Actual Cost 実際に費やしたコスト
BAC = Budget At Completion 完成時総予算

システム運用

バッテリバックアップ = 予備電源のこと
AVR = Automatic Voltage Regulator 電圧を安定させるための装置
CVCF = Constant-Voltage Constant-Frequency AVRの機能に加えて周波数も安定させる装置
逓減課金方式 = 使用量が増えるほど単価が下がっていく方式
TCO = Total Cost of Ownership 情報システムの導入から維持や管理までの費用を総合的に捉える

サービスマネジメント

SLM = Service Level Management 顧客とサービス提供者の間でSLAを締結し合意したサービスレベルを達成する
BCP = Business Continuity Plan 事業継続計画
BCM = Business Continuity Management 事業継続管理
コンティンジェンシープラン = 災害などの最悪の事態に焦点を置いた計画 緊急時対応計画
ワークアラウンド = インシデントに対する完全な解決策が存在しないときの暫定処置
問題 = 一つ以上のインシデントの根本原因 未知の解決すべき事象
RFC = Request For Change インシデントや問題の根本原因を正すための変更要求
DSL = Definitive Software Library 確定版ソフトウェアの保管庫のこと リリース承認を受けたマスタコピー
DHS = Definitive Hardware Store 確定版ハードウェアの保管庫のこと 予備やテスト環境にも使う
CMDB = Configuration Management Database 構成管理データベース

ITIL = Information Technology Infrastructure Library ITサービスマネジメントのフレームワーク
フォロー・ザ・サン = 異なるタイムゾーンに2つ以上のサービスデスクを組み合わせて24時間体制を敷く
SMART = S Speciic 具体的、M Measurable 測定可能、A Achievable 達成可能、R Relevant 適切、T Timebound 適時

システム監査

システム監査 = システム管理基準を監査上の判断の尺度として用いシステム監査基準に準拠して実施する
システム監査基準 = 監査人の行動規範 一般基準、実施基準、報告基準から構成される
システム管理基準 = 効果的な情報システム投資のためのコントロールを適切に整備運用するための実践規範

外観上の独立性 = 監査対象から独立しており、密接な利害関係を有してならない
精神上の独立性 = 偏向を排し、公正かつ客観的に監査判断を行わなければならない

保証意見 = 有効に機能しているなどの監査意見
助言意見 = 助言型の監査報告書には改善勧告の記載が必要

第11章 ストラテジ

システム戦略

情報資源3要素 = データ資源情報基盤情報化リテラシ
情報基盤 = ハードウェア、ソフトウェア、データベースなど
情報化リテラシ = 情報活用能力、ノウハウやスキル

情報戦略 = 経営戦略を実現するための情報資源を活用していく方針や計画
業務モデル = 経営目標の達成に必要な業務機能とデータを明確化した情報システムのあるべき姿
フィットギャップ分析 = ERPパッケージなどがどれだけ適合剥離しているかを調査分析評価すること

エンタープライズアーキテクチャ = 組織全体の業務と情報システムの設計管理手法
As-Isモデル = 現状のアーキテクチャモデル
To-Beモデル = 目標のあるべき姿のモデル
ビジネスアーキテクチャの成果物 = 業務説明書、機能構成図、機能情報関連図、業務流れ図
データアーキテクチャの成果物 = 情報体系整理図、実体関連ダイアグラム、データ定義表
アプリケーションアーキテクチャの成果物 = 情報システム関連図、情報システム機能構成図
テクノロジアーキテクチャの成果物 = ネットワーク構成図、ソフトウェア構成図、ハードウェア構成図

BPR = Business Process Reengineering リエンジニアリング 組織やルールを見直して再構築すること
BPM = Business Process Management PDCAで継続的なBPRを遂行する考え方
BPO = Business Process Outsourcing コアビジネス以外の業務の一部か全部を外部に委託すること

ハウジングサービス = サーバ施設を提供するサービス
ホスティングサービス = サーバを貸し出すサービス

ハイプサイクル = 技術に対する期待感が時間経過とともにどう推移するか表したもの
コモディティ化 = 他社製品との差別化が価格以外で困難になること
技術のSカーブ = 技術進歩の過程を表すもの 導入期、成長期、衰退期

経営戦略

SWOT分析 = Strengths Weaknesses Opportunities Threats 自社を分析評価する手法
CSF分析 = Critical Success Factors 主要成功要因を明らかにする手法

PPM = Products Portfilio Management 成長率と市場の割合の表で現状を分析評価する
問題児 = 資金投下を行えば将来の資金供給源になる可能性がある事業である
花形 = 大きな資金の流入をもたらしているが、同時に市場の成長に合わせた継続的な資金投下を必要とする事業である
金のなる木 = 資金の主たる供給源の役割を果たしており、大きな追加投資の必要がない事業である
負け犬 = 資金投下の必要は低く、将来的には撤退を考えざるを得ない事業である

PLC戦略 = Product Life Cycle グラフに当てはめ減衰期に収穫戦略をとったりできる戦略

コストリーダシップ戦略 = コストダウンにより競争優位を図る
差別化戦略 = コスト以外での差別化により競争優位を図る
集中戦略 = 特定のセグメントに的を絞って経営資源を集中する

リーダ戦略 = 市場シェアの確保を目標に全方位戦略をとる
チャレンジャ戦略 = 市場シェアを奪うことを目標に差別化戦略をとる
フォロワ戦略 = 目標とする企業を模倣し市場での存続を図る
ニッチ戦略 = 他社が参入しにくい市場に限定して競争優位を図る

バリューチェーン分析 = 主活動と支援活動にわけどこで価値が生み出されているかを分析する手法
マーケティングミックス = マーケティングツールの組み合わせ
マーケティングの4P = Product Price Place Promotion
マーケティングの4C = Costomer value Customer cost Convenience Communication
AIDMAの法則 = 広告を見てから購入にいたるまでの顧客の購買心理プロセス
オムニチャネル = 実店舗やオンラインストアやカタログ通販など様々なチャネルからも購入できる
RFM分析 = Recency Frequency Monetaryの指標からセグメンテーションして施策をする
FSP = Frequent Shoppers Program 会員カードで優良顧客の維持拡大を図る仕組み

顧客ロイヤルティ = 顧客の信頼度や愛着度
CRM = Customer Relationship Management 顧客や市場のデータを一元化し収益の拡大を図る手法
LTV = Life Time Value 一人の顧客が取引している間にどれだけの利益をもたらすかの長期的価値
サービスプロフィットチェーン = SPC 従業員満足度、サービス、顧客満足度、売上の関係を表したモデル
SCM = Supply Chain Management 生産流通販売の流れを最適化してコスト削減を目指す経営手法
SFA = Sales Force Automation 営業情報を一元管理し共有することで営業活動の促進を図る手法
ERP = Enterprise Resource Planning 企業資産計画 基幹業務を統合管理するERPパッケージなど

経営工学

ゲーム理論
マクシミン原理 = 最悪でも最低限の利益を確保しようとする保守的な選択
マクシマックス原理 = 各戦略の最大利得の最大のものを選ぶ楽観的な選択
期待値原理 = 各戦略ごとに期待値をだし最大期待利得となる戦略を選ぶ

ワークサンプリング法 = 適当な時間に瞬間的な観測を何回も行い作業時間を把握する
PTS法 = Predetermined Time Standard 作業に基準時間値を設定し作業時間を算出する
ストップウォッチ法 = ストップウォッチで作業時間を測定する

QC七つ道具 = パレート図散布図管理図特性要因図ヒストグラム層別管理チェックシート
パレート図 = 出現頻度の高い順に棒グラフにして折れ線グラフで描いたもの、主要な問題点を絞り込める
管理図 = 異常原因の除去や再発防止に役立てるための折れ線グラフ
管理図の異常判断 = 限界線の外連続3点中2点が限界線近く7点を超えて上か下7点連続で上昇か下降周期性がある
新QC七つ道具 = 連関図法系統図法PDPC法親和図法アローダイアグラム法マトリックス図法マトリックスデータ解析法

抜取検査 = ロットの中から大きさnのサンプルを抜き取り、不良個数が合格判定個数c以下のときロットを合格とする
サンプル数n = ロット数から決める
合格判定個数c = サンプル数nと合格品質水準から決める
OC曲線 = Operating Characteristic curve 検査特性曲線 不良率に対する合格する確率
生産者危機 = 合格となるべきロットが不合格となる確率
消費者危機 = 不合格となるべきロットが合格となる確率

企業会計

ROE = Return On Equity 自己資本利益率 自己資本に対する当期純利益の割合
ROI = Return On Investment 投資利益率 個々の投資額に対する利益の割合
総資本 = 負債 + 純資産
バランスシート = 貸借対照表 資産、負債、純資産を表示した財政状態を明らかにする財務諸表

損益分岐点 = 営業利益がゼロの点
利益 = 売上高から変動費および固定費を引いた値
限界利益 = 売上高から変動費のみ引いた値

標準化と関連法規

RFP = Request For Proposal 提案依頼書 調達対象システム、提案依頼事項、調達条件などが示されたもの
RFI = Request For Information 情報提供依頼書 RFPを作成するのに必要な情報の提供 利用可能な技術など

WCAG = Web Content Accessibility Guidelines アクセシブルなWebコンテンツを作成するためのガイドライン
WAI = Web Accessibility Initiative W3C内に設けられたアクセシビリティ関連の活動をする
アクセシビリティ = 高齢者や障害者を含む誰もが利用可能であること、またその度合い

CORBA = Common Object Request Broker Architecture 分散システム環境でオブジェクトどうしが通信するための仕様

BABOK = Business Analysis Body of Knowledge
PMBOK = Project Management Body of Knowledge
SQuBOK = Software Quality Body of Knowledge
SWEBOK = SofWare Engineering Body of Knowledge