高度午前対策 直前10点アップ講座(iTAC講義ノート(10/9))

最終更新日 2006/05/02
webmaster@tomnetwork.net

Tomのネットワーク勉強ノート
Homeに戻る
(Tomのネットワーク勉強ノート) 
サイトマップ
iTAC テクニカルエンジニア
(ネットワーク)塾講義ノート 
過去問題(午後)
  テクニカルエンジニア (ネットワーク) 
  情報セキュリティ アドミニストレータ 
  テクニカルエンジニア
(情報セキュリティ)(午前・午後)
  基本情報技術者(午前・午後)
ネットワーク関連試験対策ノート
情報セキュリティ関連験対策ノート
情報処理用語辞書
自宅で出来るネットワーク簡易実習 
私の勉強法 
情報処理試験勉強に役立った本たち
更新履歴 
リンク集  
プロフィール 
国内旅行の下調べ
---Tomのトラベルオンラインリンク
(新幹線、時刻表、金券ショップ、
格安航空券など)
   
  mail
ショッピング

    Powered By 楽天市場

 

スポンサー:
Yahoo!トラベル
ホテルリステル猪苗代
株式会社東栄住宅
競馬サーチ.com
ニフティ株式会社
ホームトレイン
有限会社ルーティ
キーマンズネット
楽天仕事市場 infoseek キャリア
e-learnインターネット通信講座
アークホテルネット
ブルックス
モビット

 他

 

Tomのネットワーク勉強ノート
 iTAC テクニカルエンジニア(ネットワーク)塾講義ノート 
   高度午前対策 直前10点アップ講座

iTAC塾講義ノート

コース名

テクニカルエンジニア(ネットワーク)塾Aコース(名古屋)

講師

mitsu先生

日時

2000年10月9日

9:30〜19:00

場所

名古屋市短歌会館

内容

ウイニングあいたっく
(高度午前対策 直前10点アップ講座)

(概要)

今回の講義は、

『ウイニングあいたっく (高度午前対策 直前10点アップ講座)』

として、午前分野の要点を中心に講義がありました。

以下にその内容をまとめます。

※過去3年(平成10年〜12年)の1種に出題された問題については、カリキュラムの横に、印をつけておきました。

例:(H12-1K-21・・・平成12年 1種 問21)


1.コンピュータの科学基礎

論理式

2進数

確率

2の補数

情報落ちとケタ落ち

2.コンピュータアーキテクチャ

デュアルシステムとデュプレックスシステム

マルチプロセッサ

パイプライン

スーパースカラ

パイプラインハザード

キャッシュメモリ

3.通信ネットワーク(テクニカルエンジニア(ネットワーク)サマースクールin大阪(テクニカルエンジニア(ネットワーク)午前対策) 8/17開催 参照)

4.基本ソフトウエア

性能評価尺度

プロセスの状態遷移

プロセスとスレッド

タスクスケジューリング

セマフォ

仮想記憶装置

フラグメンテーション

プログラム制御とシステムコール

5.データベース

ANSI/SPARCの3層スキーマ論

データベース構造のモデル

データベース言語

データベースの管理機能

排他制御(ロック)

トランザクション

障害対策

2相コミット

DBコピー(レプリケーション)

テーブルについて

正規化

6.ソフトウエア工学

プロセスモデル

RAD (Rapid Application Development)ツール

コストモデル

モデル図

モジュール設計

DOA(データ中心アプローチ)

オブジェクト指向

プログラムのテスト

ソフトウエアの品質管理

その他ソフトウエア関連でよく出る変な問題

7.システム構成技術


1.コンピュータの科学基礎

☆ 論理式(H11-1K-18)

        AND,OR,NOTは簡単に書けると思いますが、

・EOR 排他的論理和    AとBが同じなら0、異なったら1(H11-1K-3)

NAND                        NOT(A AND B)

NOR                          NOT(A OR B)

について、ちゃんと答えられるようにしておきましょう。

EOR

A

B

A EOR B

0

0

0

0

1

1

1

0

1

1

1

0

NAND

A

B

A NAND B

0

0

1

0

1

1

1

0

1

1

1

0

NOR

A

B

A NOR B

0

0

1

0

1

0

1

0

0

1

1

0

式の展開

式の展開でよく出てきるのが、

NOT( A AND B) → (NOT A) OR (NOT B)

NOT( A OR B) → (NOT A) AND (NOT B)

です。

覚えられなかったら図に書いてみましょう。

______
A OR B

_

_

NOT( A OR B) = (NOT A) AND (NOT B)

ですね

NOT(A AND NOT B)

この場合は実際に書いてみましょう。 地道にやってみて下さい。

 

 

 

 

NOT(A AND NOT B)

 

 

 

A AND NOT B

 

 

 

NOT B

 

 

A

B

 

 

 

0

0

1

0

1

0

1

0

0

1

1

0

1

1

0

1

1

0

0

1

あと、テクニックとして覚えておいた方がいいのが、

A AND (B OR C)

→ (A AND B) OR (A AND C)

ANDを×、ORを+と考えると、A(B+C)=AB+AC ピンときますね。

同じようにこれも成り立ちます。

A OR (B AND C)

→ (A OR B) AND (A OR C)

☆ 2進数

整数は省略します。

小数についてたまに出題されますのでやってみましょう。

10進数

2進数

0.5

0.1

0.375

0.011

これを求める一つの方法は、、、

0.

 

|

|

|

|

|

 

1/2
=0.5

|
|

|
|

|
|

|
|

 

1/(2^2)
=0.25

|
|

|
|

|
|

 

1/(2^3)
=0.125

|
|

|
|

 

1/(2^4)
=0.0625

|
|

 

1/(2^5)
=0.03125

これを覚えてしまって、

0.5は1/2だなぁ・・・0.1(2)

0.375は0.25+0.125だなぁ・・・0.011(2)

とやります。

ちゃんとした方法は、2倍、2倍・・・していきます。

0.375

で、どこを見るかというと、、、

×

 2

掛けたあとの整数部

-

------

 

0.750

・・・・・・

0

×

2

ここに1が出てきたら

-

------

掛け算には使わない

1.500

・・・・・・

1

×

2

-

------

1.000

・・・・・・

1

答えがちょうど1になったら終わりです。

0.011

これに関連してよくあるのが、

有限10進数小数 を 2進小数 にする場合と、その逆の有限2進小数を10進数小数にする場合についてです。
(H12-1K-3,H10-1K-2)

有限10進数小数 を 2進小数 にするときは、

無限小数

}2つの場合があります。

有限小数

有限2進小数を10進数小数にするときは、

必ず、有限の10進数小数になります。

☆ 確率

・平成11年のシステム監査の問題

白い玉3個、黒い玉4個あります。

連続して3個取り出します。

このア〜エの中で、確率の一番ひくのはどれでしょう。

 

1回目

2回目

3回目

地道にやりましょう。

まず、最初に白を取り出す確率は3/7、黒を取り出す確率は4/7です。

最初に白を取り出した場合、次にさらに白を取り出す確率は2/6、黒を取り出す確率は4/6です。

アの場合は、4/7 × 3/6 × 2/5 = 0.114

今回の場合、ア〜エ全部において、絶対分母は7×6×5になりますので、分子だけ考えればいいでしょう。

 

確率の分子

4×3×2=24

4×3×3=36

4×3×3=36

3×4×3=36

答えは、アです。

・隔たりのあるサイコロ

サイコロAは2/5、サイコロBは3/8の確率で1の目が出ます。

袋に入れてサイコロを1つ取り出し、振ったら1の目が出ました。

Aのサイコロを取り出した確率は?

確率の基本は

              対象の数
確率 = -----------------
              全体の事象

暗黙のうちにこういうことを考えています。

今回は、

              Aから1が出る場合
確率 = ---------------------
              1が出る場合

A,Bを見ると、分母に5、8があります。

最小公倍数は、40ですが、40×2=80回サイコロを振ったと考えましょう。

Aのサイコロを40回、Bのサイコロを40回振りました。

Aのサイコロで、1の目が出るのは ・・・ 16回

Bのサイコロで、1の目が出るのは ・・・ 15回

ってことは、両方で、1の目が出るのは  31回、そのうちAは16回。

確率は16/31になります。

公式で考えると、

2/5

16

16

-------------------

=

--------

=

-----

1/2×2/5 + 1/2×3/8 

16+15

31

☆ 2の補数(H11-1K-18)

求め方と、理由(なぜ2の補数が必要なのか)を押さえておきましょう。

求め方・・・ビットを反転して +1

理由(なぜ2の補数が必要なのか) ・・・ 減算を加算として扱えるから

です。

やってみましょう。

10進数 4-3=1

  4-3                 
=4+(-3)
=0100 + 1101 ← -3 の2の補数・・・ 0011を反転して1100、1足して、1101。
=10001
(先頭ビット(キャリー)は無視)

=0001 ・・・ 1になります。

☆ 情報落ちとケタ落ち(H11-1K-18)

情報落ち・・・絶対値が大きく異なる正の数の足し算

 12345
+      0.00037261
------------------
  12345.00037261

となるんですが、コンピュータの有効ケタが5ケタの場合は、0.00037261が消えてしまいます。

ケタ落ち・・・絶対値がほぼ等しい正の数の引き算。

  12345
 -12344
---------
         1

有効ケタが5ケタから1ケタになりました。

情報落ちを起こさないようにするためには、

小さい順に並べて、小さい方から順に加えます。


2.コンピュータアーキテクチャ

☆ デュアルシステムとデュプレックスシステム

 

 

関連して、スタンバイ系
も覚えましょう。
(H12-1K-79)
(H11-1K-77)
(H10-1K-79)

デュアルシステム

同じ(オンライン)処理を2つのCPUで同時に実行する

ホットスタンバイ

デュプレックス

CPUは2つあるが、
1つはオンライン系として使用し、1個はバッチ系として使用する。

ウォームスタンバイ
コールドスタンバイ

☆ マルチプロセッサ(密結合と疎結合)(H11-1K-18)(H10-1K-77)

 

メモリ

OS

密結合

共有メモリ

単一のOS

疎結合

各プロセッサごとのメモリ

異なるOSも可

相対的に言うと、密結合は

・プロセッサの数に上限があります。(メモリなどを共有しているため)

・性能は、CPUの数に比例しません(一般的に√(CPU数)倍)

・キーワードは競合⇒ボトルネック

☆ RISC と CISC は省略

☆ パイプライン(H11-1K-11)

キーワードは、”ステージ””並列に動作”です。

☆ パイプラインを使う時と、使わない時ではどのくらい速度は違いますか? ☆

という問題が出されます。

(過去問より)

・各命令が5サイクル

・ストールなしで実行

・20命令で実行

で、パイプライン無しの時と比べて時間は?

[1]

[2]

[3]

[4]

[5]

[1]

[2]

[3]

[4]

[5]

・・・

・・・

・・・

[1]

[2]

[3]

[4]

[5]

で、完了。

|←ここから、勘定して、         ここまで→|

上のような絵で考えてみることをお勧めします。

・1回目は5単位。

・2回目は1単位足して、6単位。

こんな感じで、1ずらすのは20-1=19回。

つまり、5+1×19=24単位。

パイプラインを使わなかったら、

5×20=100単位。

24%に短縮されます。

この問題は出来るようにしておきましょう。

☆ スーパースカラ(H11-1K-18)

処理UNITが複数あります。

[1]

[2]

[3]

[4]

[5]

[1]

[2]

[3]

[4]

[5]

複数あるから、重ねられます。

☆ パイプラインハザード

パイプラインに関連して・・・

パイプラインハザード”という言葉があります。

きれいにプログラムが流れようとするけど、流れない状態のことを言います。

 +-

データハザード

・・・以前の命令の結果を使う

--

-+-

制御ハザード

・・・Jump命令

 +-

構造的ハザード

・・・リソースの競合

 

命令

命令の例

[1]

取り出し

[2]

解釈

[3]

・・・

[4]

・・・

[5]

・・・

[1](命令を取り出し)が終わったら、[2](解釈)してる間に次の人が[1](取り出せる)じゃない?

というのが、パイプラインの考えでした。

☆ データハザード〜以前の命令の結果〜

例えば、アセンブラの命令

ADD R1,R2、R3 ・・・ R2+R3をして、R1に入れる

SUB R4,R1、R5 ・・・ R1-R5をして、R4に入れる

を実行するとします。

ADD命令でR1にR2+R3の結果を入れるのは、[1]〜[5]の一番最後です。

逆に、SUB命令でR1を取り出すのは、ADD命令でR1に計算結果を入れる前です。

これで、うまくいかなければ、エラーが出ます。

☆ 制御ハザード〜Jump命令〜

例えば、3の命令で、8にジャンプするとしましょう。

3を読み終わって、パイプラインで次に4、5と読んでいるのに、

あとから8にジャンプすることが分かったら、4、5を読んだことが、

無駄になるし、流れが乱れてしまいます。

このように、パイプラインが止まることを、”パイプラインストール”とか、”インターロック”とか言います。

用語として覚えておいて下さい。

 

☆ キャッシュメモリ(キーワード集)(H11-1K-18)(H10-1K-16)

・NFP

・ヒット率

・ライトスルー/ライトバック

・セットアソシエイティブ

キャッシュメモリ1に対して、主メモリがあるセットで対応。

試験に良く出るのがこれ。

・フルアソシエイティブ

キャッシュメモリ1に対して、主メモリはどこを使っても良い。

若干スピードが遅い。

・ダイレクトアソシエイティブ

キャッシュメモリ1に対して、主メモリ1で対応。

柔軟性がないぶん、速い。

・メモリインタリーブ・・・主記憶をバンクに分ける(バンクといえば、インタリーブ!)

・DMA

CPUを介さずに、 

主記憶⇔入出力装置 

をアクセスすること。

・RAID0〜5(H12-1K-17)(H10-1K-18)

RAID 0

ストライピング

RAID 1

二重化

RAID 2

ハミングコード

}ほとんど使われていない

RAID 3

パリティ(バイト)

RAID 4

パリティ(ブロック)

RAID 5

パリティ+ストライピング

RAID 0(ストライピング)

ストライプ・・・帯です。

 

ディスク
A

ディスク
B

ディスク
C

 

『 

『 

『 

1

2

3

4

5

6

7

8

9

 

 』

 』

 』

バスに比べて、ディスクって遅いですよね?

1を読んでる間に、2を読みにいけば、少しでも早くなるでしょ?

RAIDというのは、冗長度を上げる(信頼性を上げる)ことです。

ストライプだけでは、例えば、”5”が無くなれば、全部だめになってしまいます。

→冗長性がありません。

RAID 2(ハミングコード)

”(7,4)ハミングコード”という書き方をします。

・4ビットのデータ、3ビットの冗長ビットがあります。

・7ビットでデータを保持します。

・2ビットの誤り検出、1ビットの誤り自動修正が出来ます。

RAID 3,4(パリティ)

ディスク
A

ディスク
B

ディスク
C

データ管理

データ管理

パリティ管理

このように、パリティ管理専用のディスクがあります。

この場合、ディスクCはパリティなので、アクセスが集中します。

RAID 5(パリティ+ストライピング)(H11-1K-16)

 

ディスク
A

ディスク
B

ディスク
C

 

『 

『 

『 

1

パリティ

2

パリティ

3

4

5

6

パリティ

 

 』

 』

 』

RAID 3、4の対策がRAID 5です。

それぞれに、パリティが散りばめられています。

RAIDのメインの目的は冗長性です。

RAID 0は冗長性がありません。目的は性能UPです。


4.基本ソフトウエア

☆ 性能評価尺度

この違いを言えるようにしておきましょう。

用語

説明

ターンアラウンドタイム

仕事を依頼してから、結果を得られるまでの時間(バッチ処理のイメージ)

レスポンスタイム
(応答時間)

『送信』キーを押下して、画面が次の1行目が表示されるまでの時間
(オンライン処理のイメージ)

スループット

一定時間に行える仕事量

☆ プロセスの状態遷移(H11-1K-18)

”○”の中の状態と矢印の意味が書けるようにしておきましょう。

『@のイベント(Run→Ready)が発生する理由を2つ書きなさい。』という問題が出されたら?

  ・タイムスライスを使い切った(自分の持ち時間で終わらなかった)

  ・自分より優先順位の高いタスクがReady状態になった。

これに関連して、覚えておいた方がいいのが、

  『最優先のタスクは「    」状態にとどまることが無い』です。

「  」には何が入るでしょう?

  一瞬「Ready」状態になりますが、すぐにRun状態になります。

☆ プロセスとスレッド(H11-1K-18)

プロセスもスレッドもプログラムを実行する単位です。

 

プロセス

スレッド
(軽量プロセス)

メモリ

共有

 

スレッドを切り替える
オーバヘッドが大きい


 ↓

同一メモリなら、それほど
オーバヘッドは大きくない

 

 

マルチスレッドは一般的
になっています。

☆ タスクスケジューリング(H11-1K-18)(H10-1K-23,24)(H10-1K-78)

タスクスケジューリングとは、たくさんの仕事をどういう風にやるか?です。

スケジュール名

説明

ラウンドロビン

一定時間おきに、チェンジ

到着順

タスクの到着順(世の中一般)

優先順

タスクに付けられた優先順

イベントドリブン

イベント(マウス押下、外線から着信)がトリガ(引き金)になってタスクが動く

多重待ち行列方式

例えば、 優先度 大、中、小に分けて、それぞれ待ち行列を作りましょうってイメージ

 

A

CPU

I/O

CPU

I/O

B

 CPU 

 I/O 

こういう過去問がよく出題されています。やっておきましょう。(H12-1K-21)(H11-1K-24)

以下のことに気をつけましょう。

☆優先順がついています。

☆I/Oについては、専用、共有の場合があります。

☆何を問われているのか?

☆図は丁寧に書きましょう。

☆ セマフォ

キーワードは排他制御

P操作・・・資源を使う。

V操作・・・資源を戻す。

電話ボックスをイメージしてください。だれかが使っていれば使えません。

(共有)

A

[電話BOX]

B

係数セマフォというメモリがあって、P操作で-1、V操作で+1します。

それで、係数セマフォの値が0になると、資源が使えないことを意味します。

☆ 仮想記憶装置

主記憶装置 ≪ 補助記憶装置 なので、補助記憶装置を主記憶装置に見立てて使いましょう!ということです。

補助記憶装置から主記憶装置にロードする単位は3つありました。

単位

サイズ

 

プログラム単位

可変

ロールイン、ロールアウト

セグメント単位
(オーバレイ方式)

可変

 

ページ単位

固定

ページイン、ページアウト

ページイン、ページアウトを合わせて、”ページング”といいます。

そのページングにCPUの能力が削がれて、処理能力が上がらないことを”スラッシング”と言います。

主記憶にページが無いことを、”ページフォールト”と言います。無いから、ページインします。

一般論として、サイズの大きさは

プログラム > セグメント > ページ(固定)

です。主記憶にロードしてくる時に、空きが無ければページアウトします。

そのアルゴリズムが

FIFO・・・先入れ先出し

LRU・・・最も遅くに使用したページをページアウトします。

です。この手の問題が出題されても、図はていねいに書くことを心がけましょう。

このバッファ(メモリ)のやりとりについて。

オーバーヘッドは可変長の方が、固定長(ページ)よりも大きくなります。

☆ フラグメンテーション(H11-1K-18)

可変長のときに使います。

すき間

///////

\\\\\\\
\\\\\\\

すき間

///////

図 メモリ分布

これらのすき間を集めて(カーベジコレクション)、メモリを確保します。

ロードされているプログラムの場所を変えることを”再配置”といいました。

☆ プログラム制御とシステムコール

再配置といえば、定番の『再○○』4つを復習しましょう。

再配置

リロケータブル

ロードされているプログラムの場所を変えること

再入

リエントラント

実行中に別タスクが同一プログラムを実行

再使用

リユーザブル

実行終了後、もう一度使用する

再帰

リカーシブル

自分自身をCALL


5.データベース

☆ ANSI/SPARCの3層スキーマ論(H11-1K-18)

論理データモデル
(それだけの相手
に見せますか?)

抽象化

抽象世界

----→

概念データモデル
(これは、架空のモデルです)

物理データモデル
(コンピュータに格納する
方法は?)

これを、ドキュメント化することをスキーマといいます。

ANSI・SPARCの
3層スキーマ

論理データモデル

・・・外部スキーマ
     (Viewはこれです)
   プログラムを組んだりします。
   人が使います。

概念データモデル

・・・概念スキーマ
     (DBMSに依存しません)

物理データモデル

・・・内部スキーマ

それぞれのスキーマは互いに独立しあっています。
(コンピュータに格納する方法が変わっても、Viewは変わらないし、その逆もない。)

これをそれぞれ、論理データ独立、物理データ独立と言います。

☆ データベース構造のモデル

データ構造モデルとして、次の3つとその特徴を覚えておきましょう。

階層モデル

親子関係

1:n

ネットワークモデル

n:n

関係モデル

 

 

 

☆ データベース言語

SQLの利用形態

SQLはデータ定義文(DDL)データ操作文(DML)で構成される。

データ操作文(DML)(H11-1K-45)(H10-1K-46)

構文

意味

内容

別の言い方

selection

選択

行を選ぶ

タプル、row

projection

射影

列を選ぶ

アトリビュート、カラム

join

結合

 

 

操作の順番として、

@自然結合(join)

AB 選択(selection)、射影(projection)

で行います。

データ定義文(DDL)

これは、DDLの言葉だけ覚えておきましょう。

プログラム方式

埋め込み型言語・・・親言語(ホスト)がいて、その中にモジュールを埋め込む。
            そして、モジュールごと呼ぶ(CALL ○○)

独立言語 ・・・ データベース独自が持っている言語(NAFRAL、T-SQL、PL/SQL)

☆ データベースの管理機能

データベースには次の管理機能を持っています。

再構成・・・構成を変更する

再編成・・・入出力を繰り返すうちに、データの物理的な並び方が乱れてきます。

      すると、効率が悪くなるので、きれいに並びなおしてあげます。(H12-1K-48)

☆ 排他制御(ロック)

キーワードは”ロックする”です。

占有ロックと共有ロックの関係はこんなんでした。(H8-1K-54)

 

共有

占有

共有

×

占有

×

×

ロックの単位(これを粒度といいます)は、

これも覚えておきましょう

ロックの単位

粒度

同時実行性

オーバヘッド

排他待ち

DB全体

テーブル単位





ページ単位

レコード単位

デッドロック(H12-1K-26)(H11-1K-21)(H11-1K-18)

X

Y

資源a

|

×

|

資源b

タスクXが資源aを確保し、タスクYが資源bを確保した後に、
タスクYが資源bを要求し、タスクYが資源bを要求すると、デッドロックが発生します。

対策としては、

ロックする順序を決めておきましょう。 (Xの後にYをロックするなど。)

デッドロックが起きてしまったら、DBMSが適切に対処します(一方をキャンセルします)

2相ロック

排他制御のところで、時々”2相ロック”という言葉が出てきます。

2相ロックとは、

・.データにアクセスする前にロックしなければならない。
・.トランザクション内で1度でもアンロック操作を行った場合、それ以降ロック操作は行わない。
  (アンロックのみ)

です。

2相というのは、ロック獲得相と、アンロック相があるということです。

(2相コミットとは別の話です)

☆ トランザクション

1つの不可分な処理のかたまり。

例えば、

A・・・出荷する。

B・・・出荷した分、在庫を減らす。

このA,Bを合わせて、トランザクションといいます。

A,B,CのJOBがあって、A、Bは実行、Cは未実行・・・これはあってはなりません。

トランザクションはALL OR NOTHING です。

これをトランザクションの原子性(Atomicity)と言います。

トランザクションの性質として、ACIDを言う言葉がありました。(H11-1K-18)

A

Atomicity

原子性

All or Nothing。 これ以上分けられないこと

C

Concurrency

一貫性、同時性

矛盾の無いこと

I

Isolation

独立性、隔離性

どんな順序でも、同じ結果になること

D

Durability

耐久性

完結したトランザクションはDB障害で失われないこと

これでよく出てくるのが(A)です。

---@OK---AOK---BOK---コミット発行-→完了

@が終了、Aが終了、Bが終了でコミットを発行して完了します。

---@OK---AOK---Bをしようと思ったけど、無理だった。

途中までで終わるということはありえないので、これは、なかったことにします。

←----------------

これをロールバックと言います。

☆ 障害対策(H11-1K-18)(H10-1K-49,50)

Backup

Check
 Point

System
 障害発生

|

@-->

Commit

|

D--->

Commit

|

|

A--->

Commit

|

F----

---

---×

|

B--->

Commit

|

|

|

C----

------

--+->

Commit

|

|

E----

--+--

------

------

---

---×

|

|

|

定期的(例えば毎週金曜日19:00)に、
磁気ディスクなどにコピーする

Check Pointで、バッファ(メモリ)中の
情報をDBに書き出す

@、A、Bはちゃんとトランザクションがコミットされていて、ハードディスクに書かれた状態です。

なので、何もする必要はありません。

それ以外の復旧方法

DBがダウンすると、ウォームスタートします。

チェックポイントまで戻って、そこから動き出します。

DBには、必ずDB以外にログというものがあります。

ログには更新履歴があります。それには、2つありましたね?

更新前情報と、更新後情報です。

Cはコミットが終わっています。でも、チェックポイント後なので、その情報はなくなっています。

しかし、トランザクションは終了してるわけですから、それは、死守しないといけません。(ACIDのD)

対策)

一回実行前の状態に戻して(更新前情報でロールバック)、再度実行します。(更新後情報を使ってロールフォワード

Dは単にロールフォワードします。

Eはロールバックして、必要なら再実行(Rerun)します。

FはRerunします。

☆ 2相コミット

    主サイト

      |

DB-A
○--
完了

 commit |
<-------|
      |

      | commit
      |-------->
         ↓

DB-B
---○
NG

分散DBでコミットしようと思ってAはOKだけど、Bはダメ・・・これは都合が悪いです。

だから、プレコミットをあらかじめ出して、全てからOKが来たら本格的にコミットを出します。

これを2相コミットと言います。

しかし、2相コミットだからといってかならずOKというわけではありません。

(プレコミットの後にDBが壊れることもあります。)

・「プレコミットOK」から実際にコミットが来るまでを”セキュア状態”と言います。

・プレコミット時、1つでもNGのDBサイトがあれば、ロールバックします。


☆ DBコピー(レプリケーション)(H11-1K-18)

東京から大阪にDBをコピーすることがよくあります。

DB1サイトが更新されました。

一定時間後(非同期に)DB2サイトにコピーします。

これをレプリケーションと言います。

☆ テーブルについて

候補キー  ・・・ 候補キーにされた列の値を決めると、行がユニークに定まります。

主キー   ・・・ 候補キーの中から、1つ選択したもの。

外部キー  ・・・ どこかの別のテーブルの主キー。

  外部キー ←

--→

(どこかのテーブルの)
主キー

 

 

 "     "

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  "  "

 

 

    

 

 

    

 

 

 

 

 

 

 

 

よくあるのが

  外部キー ←

--→

(どこかのテーブルの)
主キー

 

 

商品コード

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

商品コード

商品

単価

    

 

 

    

 

 

 

 

 

 

 

 

参照制約(H11-1K-18)

外部キーといえば、参照制約というのがあります。

売上表

 

商品コード

 

 

001

 

-追加NG->

004

 

 

 

 

     

商品マスタ

商品コード

商品名

単価

001

 

 

002

 

 

003

 

 

商品マスタに004がないのに、売上表に追加することは出来ません。

逆に、売上表に001がいるのに、商品マスタの001を消してもいけません。

☆ 正規化(H11-1K-18)(H11-1K-44)(H10-1K-47)

定義

第1正規形にする ・・・ 1つのセル(箱)には1つのデータ。

               同じ行の無いこと。

第2正規形にする ・・・ 部分関数従属の排除

第3正規形にする ・・・ 推移的関数従属の排除

なぜ、正規化をするのか?

 → 冗長性の排除です。

名前

塾コース

塾コース略称

KIKI

ネットワーク

NSP

Harry.

ネットワーク

NSP

真夏

ネットワーク

NSP

上表では、ネットワーク-NSPと同じデータが3つあります。

ここで、NSPをTE(NW)に変える時も変え忘れが起こる時があります。

練習問題1(正規化)

社員コード

社員名

所属コード

所属名

資格コード

資格名

上表が第1正規形になっているものとして、最終的に第3正規形にして下さい。

(仮定)・複数の部署に所属することは無い。

    ・資格はいくつ持っててもかまいません

@主キーを探す。

主キー ・・・ 1つ決まれば、行全体が決まります。

→ 社員コードと資格コードが決まれば、この長い列全てが決まりますよね。

社員コード

社員名

所属コード

所属名

資格コード

資格名

A部分関数従属の排除

部分関数 ・・・ 1つ決まれば相手が決まる関係。(xが決まればyが決まる感じ)

部分とは、主キーのことです。

今回の主キーは社員コードと資格コードです。

それが決まれば、決まるものがあります。

社員コード → 社員名、所属コード、所属名

資格コード → 資格名

社員コード

資格コード

社員コード

社員名

所属コード

所属名

資格コード

資格名

B推移的関数従属の排除

推移的関数 ・・・ xが決まればyが決まる

           yが決まればzが決まる ・・・この推移のこと。

社員コードが決まれば、所属コードが決まります。所属コードが決まれば、所属名が決まります。

所属コード

所属名

最終的には、、、

社員コード

資格コード

社員コード

社員名

所属コード

資格コード

資格名

所属コード

所属名

練習問題2(自己結合)

T1

No.

Name

Age

Leader

1

田中

40

2

2

鈴木

30

2

SELECT X.Name 

  FROM T1 X , T1 Y

  WHERE X.Leader = Y.No AND X.Age > Y.Age

何が答えでしょう?

自分同士ひっつけるので、見分けがつかないので片方をX、もう片方をYとしましょう。

X.NO1に対して、Y.NO1とY.NO2、X.NO2に対して、Y.NO1とY.NO2があります。

とりあえず引っ付けてみましょう。

 

X.No.

X.Name

X.Age

X.Leader

 

Y.No.

Y.Name

Y.Age

Y.Leader

(A)

1

田中

40

2

 

1

田中

40

2

(B)

1

田中

40

2

 

2

鈴木

30

2

(C)

2

鈴木

30

2

 

1

田中

40

2

(D)

2

鈴木

30

2

 

2

鈴木

30

2

 これの作業を自然結合といいます。

そのあとに、選択、射影です(と書きました →ジャンプ

X.Nameを選択します。

まず、

X.Leader = Y.No ・・・ (B)と(D)です。(射影1)

X.Age > Y.Age  ・・・ (B) です   (射影2)

→ 田中さんですね。


6.ソフトウエア工学

☆ プロセスモデル(H11-1K-18)(H10-1K-60)

プロセスモデルプログラムを作っていく時の話でした。

「分析」→「計画」→「設計」→「開発」→「テスト」・・・・

そのモデルには次のようなものがありました。

・ウォータフォールモデル

・成長モデル

・スパイラルモデル

・プロトタイプモデル

それぞれの特長は

・ウォータフォールモデル

・後戻りなし(後工程ほど、後戻り工数が大きい)

・フェーズ(段階)に分けて開発

・次のフェーズに入る前にチェックする

・大規模向け

・工数が管理しやすい

・成長モデル

・分析、開発、チェック・・・・を繰り返す手法

・仕様変更、改良向け

・スパイラルモデル

・独立性の高いサブシステムに分割、開発。

(成長モデルと、スパイラルモデルの住み分けが難しい)

・プロトタイプモデル

・試作品を作って、外部仕様を決定する。

・手戻り作業の防止

☆ RAD (Rapid Application Development)ツール

専門のツールを使って、短期間で作ってしまいましょう!というものです。

キーワードは、

・タイムボックス(限られた時間の中で)

・ツールを使う

・少数精鋭

・短期間

☆ コストモデル

ソフトウエア工学で、プロセスモデルともう一つのモデルといえば、コストモデルです。

コストモデルはこの2つを覚えておきましょう。

・ファンクションポイント(FP)法(H11-1K-18)

入出力インターフェース、画素数、ファイル数、帳票数 × 複雑さの度合い(係数)

・COCOMO(コンストラクションコストモデル)法(H11-1K-18)

いわゆる工数(○○人月で△△円)

開発ステップ数、難易度も要因となります。

個人の能力に左右されます。

・開発規模と工数の関係

開発規模と、工数の関係は比例ではありません。

規模が大きくなると、管理なども複雑になって、

リニアにはいかないです。

☆ モデル図(H11-1K-18)(H11-1K-64)

・E-R図(H11-1K-18)

・DFD

・ペトリネット図

あと、状態遷移図もあります。

☆モジュール設計

これでプログラム設計が終わったので、次はモジュール設計をします。

モジュール分割(H10-1K-62)

その分割方法にも種類があります。

@STS分割 Source(源泉) 、 Transform(変換) 、 Sink(吸収)

入力
データ

変換
データ1

変換
データ2

出力
データ

------>

(機能1)

------->

(機能2)

-------->

(機能3)

----->

最大抽象
入力点

最大抽象
出力点

<------

源泉(S)

--->|<---

変換(T)

--->|<---

吸収(S)

----->

元の形があるところ

変換途中のところ

アウトプットの形が
見えてきたところ

ATR分割 (トランザクション分割)

ほとんどが、STSでうまく分かれません。

トランザクションごとに分けてみましょうという方法です。

B共通機能分割

共通の機能だけ分けてみましょうという方法です。

Cデータ構造からの分割

ジャクソン法・・・入出力データ

ワーニエ法・・・出力データ

どっちが入出力データで、どっちが出力データだけだったか覚えておきましょう。

モジュール強度とモジュール結合度(H11-1K-63)

モジュール分割と言えば定番の問題が、これでした。

試験対策としては、強い方がいいのか?弱い方がいいのか?と、

その両端を覚えておきましょう。

モジュール強度(強い方がいい)(H10-1K-63)









機能的強度

情報的強度

連絡的強度

手順的強度

時間的強度

論理的強度

暗号的強度

(昨日の常連ってチロリアン)

機能的強度のキーワード・・・単機能、1モジュール、1ステップ

モジュール結合度(弱いほどいい)









データ結合

スタンプ結合

制御結合

外部結合

共有結合

内部結合

(出たスター選手が今日いない)

データ結合のキーワード・・・構造をもたない、引数でモジュール間のデータを引渡しする。

☆DOA(データ中心アプローチ)

要はデータ中心に考えるのです。

特長

・データは変わりにくい

その変わりにくいデータを中心に考えて物事を処理しましょう。

・プロセスは変わりやすい。

・データの重複を防ぐ

プロセスの重複も当然防ぎます。

☆オブジェクト指向(H11-1K-18)(H11-1K-62)(H10-1K-61)

カプセル化(データ+手続き(メソッド))

”このデータを使うには、この手続きをしないといけないですよ”ということです。

例えば、年齢というデータで考えてみましょう。

年齢という数字に、自由な整数が入っても困ります。

まず、0以上で150以下の数字ならOK!

という手続きをふみます。

インスタンス(実体)

(オブジェクト) <---メッセージ--- (オブジェクト)

オブジェクト間はメッセージでやりとりします。

インヘリタンス(継承)

ヒトというクラスがあるとします。(属性:年齢)

ポリスはヒトですから、ヒトクラスを使ってポリスクラスを定義します。(属性:年齢、階級)

年齢の属性は継承されます。

ヒト(スーパクラス)

属性:年齢

     |インヘリタンス

ポリス(サブクラス)

属性:年齢、階級

集約と分解 (part-of関係)

(パソコン)

親クラス(スーパクラス)

(CRT)

(CPU)

(KB)

子クラス(サブクラス

汎化と特化 (is-a関係)(H11-1K-43)

(車)

親クラス(スーパクラス)

(トラック)

(バス)

(RV)

子クラス(サブクラス

☆プログラムのテスト

コーディングのあとに、テストをします。

・追加型テスト

トップダウンテスト・・・スタブが必要です。

ボトムアップテスト・・・ドライバが必要です。

ブラックボックステスト・・・同値分割(結果が同じになるグループに分けて、テストデータに投入)
(functionに注目)     限界値分析(仕様に基づいて入力データの限界値をテストデータに投入)
(H12-1K-65)(H11-1K-65)(H10-1K-65,66)

ホワイトボックステスト・・・○○網羅(自分が作った命令がテストでどれくらい実行されたか?)
(Codeに注目)

非増加型テスト(一気にボン!)

一斉テスト

ビックバンテスト(単体テストのみ済み)

☆ソフトウエアの品質管理

レビュー方式

資料を事前に配布しておきましょう

ウォークスルー(ローカルチェック)(H10-1K-67)

非公式

管理職NG

持ち回り(プログラム開発者が座長)

インスペクション(大掛かりなやつ)

公式

ドキュメント化

フォローアップあり

モデレータ(司会者)

信頼性予測方式

信頼性成長曲線モデル(H11-1K-68)

時間を進めると、テストを消化し、発見したバグが増えていきます。

結果、@前工程の品質悪いし、

    Aバグつぶしに時間が掛かっている

※このモデルを使った出題では、”OKなので、どんどん行きましょう!”というのは、

ありません。

☆その他ソフトウエア関連でよく出る変な問題

ISO 9000-3(キーワードのみ)

・ソフトウエア品質保証

・作る側、買う側の契約(シュリンクラップ製品は除く)

・設計〜保守・付帯サービスまで

・管理的な側面を重視(ドキュメント)

・プロセスモデル非依存

開発したソフトウエアの著作権(H12-1K-73,74)(H11-1K-72)

キーワードは派遣か、請負か?

 

著作権

派遣

派遣先

請負

受託側

特許

 

著作権

特許

出願

不要

有効期限

著作者の死後50年

出願から20年


7.システム構成技術(H11-1K-18)(H11-1K-59)(H10-1K-56,57,58)

MTBF・・・平均故障間隔(H11-1K-18)

MTTR・・・平均修理間隔(H11-1K-18)

稼働率=MTBF / (MTBF+MTTR)

|-------

-----

--

----

--------|

|<------

MTBF

--

>|<

-MTTR->|

不稼働率=1-稼働率

      =MTTR / (MTBF+MTTR)

故障率=1/MTBF

※近似式

故障率が十分に小さな部品が直列につながって動いている時、

全体の故障率=Σ(個々の部品の故障率)

問題1

システムの故障に直接結びつく装置10台

システム全体のMTBFが10^5時間の時、

装置1台の故障率は?

解)

全体の故障率=1/(10^5) = 10^(-5)

個々の故障率=10^(-5) / 10 = 10^(-6) = 10^3(FIT) 

1FIT = 10^9時間に1回故障

問題2

10,000FITのシステムのMTBFは何年か?

解)

10,000FITは10^(-5) ・・・ これが故障率

10^5(時間) /(24*365) = 11.4年

 

 

    資格試験関連書
『ネットワークスペシャリスト』
 
セキュリティ・ウイルス対策関連書

秋に向けて!

送料無料!