ソフ開 直前攻略 大公開!!

|

 明後日は情報処理技術者試験ですね。
来年から改正が行われると言う事で明後日の試験には全力で挑戦して欲しいです。私は、基本情報には一発で合格したのですが、ソフ開には何回も苦しみました。そこで私が合格するのに貢献した直前攻略を大公開します。説明は、ソフ開合格用の為説明が違うのではないかと思われるかもしれません。その点はご勘弁下さい。

 ソフ開の得点源に繋がる箇所は、以下の点と思われます。
1.待ち行列
2.稼働率
3.SQL
4.埋め込みSQL
5.暗号方式
6.OSI基本参照モデル

 以前に作成した情報ですので、古い情報等があると思いますがお役に立てれば幸いです。

★OSI基本参照モデル

 アプリケーション層で、アプリケーションを決める。例えば、FTP及びHTTP等。
 プレゼンテーション層で、文字コードを決める。インターネットがJISな為WinからUNIXに送る場合は、シフトJISからJISに変え、JISからEUCに変換する。これがプレゼンテーション層の役割。それから通信データを暗号化する機能もある。
 セッション層で、コネクションを確立し、通信方式を決める。通信方式は半二重通信又は全二重通信に決める。
 トランスポート層で、パケットを分割(送信側)及び復元(受信側)する。パケットが紛失した場合は、再送し、信頼を高める。
 ネットワーク層で、相手までの通信経路を決定する。
 データリンク層で、フレームのシーケンス制御や誤り制御、フレームに誤りが発生した際の再送制御などを行う。
 物理層で、電気信号として、やり取りする。そのためにデジタル信号を電気信号に、電気信号をデジタル信号に変換する。

★待ち行列

 ラムダ=平均到着率(件/秒)
 ミュー=平均サービス率(件/秒)
 平均到着間隔=1/ラムダ(秒/件)
 平均サービス時間=1/ミュー(秒/件)

 p=ラムダ/ミュー=ラムダ×平均サービス時間

 Wq=p/(1-p)×平均サービス時間
 Ww=Wq+平均サービス時間

 平均サービス時間は、大体問題に示されているので忘れた場合はそこから導きます。平均サービス時間は、時間という言葉から秒/件と理解する。つまり、ラムダ、ミューは、その逆の件/秒になると覚えれば間違えない。
 p(ロー)は、利用率を求めるのだから、1秒間に来る、例えば人なら、人数をサービスする時間で割る事によって求まる。それが利用率又は使用率(利用率よりも使用している割合と覚えても大丈夫)。
 p/(1-p)は、待っている人の数です。Wq(平均待ち時間)は、待っている人の数に平均のサービス時間をかけることによって求めます。平均サービス時間を待っている人にかけるということは、すべて待っている人がサービスを終えた時間ということになる。
 Ww(平均応答時間)は、それに自分もサービスしてもらった時間を足せば良い。


★稼働率

 稼働率=MTBF/(MTBF+MTTR)

 (1)直列システム
   稼働率=X1×X2・・・・Xn
 (2)並列システム
   稼働率=1-(1-Xn)ⁿ
 (3)並列システム(m out of Nシステム)
   N個の部品のうち、m個が正常なら稼動するシステム。

   4 out of Nシステムの場合。
   1.すべてが故障している確率
     =(1-X)⁴
   2.4台のうち3台が故障している確率
     =₄C₁(1-X)³ ×X=4(1-X)³X
    よって、1-{(1-X)⁴+4(1-X)³X}
     =3X⁴-8X³+6X²


★SQLキーワード一覧

番号 コマンド 読み方 説明
1 ALTER オールト 表,定義域を変更する。
2 ANY エニー  
3 ASC   昇順
4 AUTHORIZATION オーソリゼーション 認可職別子,許可職別子。
5 BETWEEN ビットウィーン データ値の範囲の指定をする。
6 CHECK チェック 検査制約。
7 CLOSE クローズ カーソル操作を終了する。
8 COMMIT コミット データベースに対して行った更新操作を確定する。
9 CREATE クリエイト スキーマ,表,ビュー,定義域を定義する。
10 DECLARE デクレア 操作対象とする表を設定し,カーソルを割り当てる。
11 DEFAULT デフォルト 規定定義。
12 DELETE デリート 表に行を削除する。
13 DESC   降順
14 DISTINCT デシティンクト 重複を指定しない。
15 DROP ドロップ スキーマ,表,ビュー,定義域を削除する。
16 EXISTS EXISTS データ値の存在(不存在)の,検査の指定する。
17 FETCH フェッチ カーソルの位置にある行の値を取り出し,次の行に進める。
18 FOREIGN KEY フォーリンキー 外部キー制約。
19 GRANT グラント 表に対する操作権限を定義する。
20 GROUP BY グループ バイ グループ化にする
21 HAVING ハビング グループ化した後の条件
22 INSERT インサート 表に行を追加する。
23 LIKE ライク 文字列のパターン照合の指定をする。
24 OPEN オープン カーソル操作を開始し,カーソルを1行目に位置付ける。
25 ORDER BY オーダー バイ 並び替え
26 PRIMARY KEY プライマリーキー 主キー制約
27 REFERENCES リファレンス 参照
28 REVOKE リボック 表に対する操作権限を削除する。
29 ROLLBACK ロールバック データベースに対して行った更新操作を取り消す。
30 SELECT セレクト 表より,行,列のデータを抽出する。
31 SOME サム ANYと同じ
32 UNIQUE ユニーク 一意性制約。
33 UPDATE アップデート 表に行を変更する。
34 WHERE ウェアー 条件
35 WITH CHECK OPTION ウジ チェック ポットオン ビュー表の定義時に、拒否を指定する。

 

★SQLの例

1.SQL-DDL(Data Description Language)

(1)表定義
 CREATE TABLE 社員 (
  社員番号 CHAR(5) NOT NULL,
  社員名   NCHAR(10) NOT NULL,
  性別    NCHAR(1) CHECK(性別 IN( '男', '女' ) ),
  所属番号 CHAR(3),
  PRIMARY KEY(社員番号),
  FOREIGN KEY(所属番号) REFERENCES 所属(所属番号)
 )
(2)ビュー表定義
 CREATE VIEW 表名( 列名 [, 列名...] )
 AS SELECT 列名 [,  列名...] )
 FROM 表名
 [GROUP BY 列名]
 [HAVING 条件]
 [ORDER BY 列名 [ASC] [DESC] ]

2.SQL-DML(Data Manipulate Language)

(1)挿入
 INSERT INTO 会員住所
  VALUES ( 1234,  'A市' )
*CHARなら列名に''をつける。
(2)更新
 UPDATE 会員住所
  SET 住所 = 'A市' 
 WHERE 会員番号 = 1234
(3)削除
 DELETE FROM 会員住所
 WHERE 利用者番号 = 1234


★SQL(埋め込みSQL)

(1)カーソル宣言
DECLARE カーソル名 CURSOR FOR SELECT文

(2)カーソルを開く
OPEN カーソル名

(3)1行の取り出し
FETCH カーソル名 INTO ホスト変数

(4)カーソルを閉じる
CLOSE カーソル名

非カーソルによる操作
(1)検索
SELECT 属性名 [, 属性名・・・]
 INTO ホスト変数
FROM 表名
[WHERE 条件]

EXEC SQL・・・始まり
END-EXEC・・・終わり


★セキュリティ(暗号方式等)

秘密かぎ暗号方式(共通かぎ暗号方式)は、DESが代表。
公開かぎ暗号方式
 受信者の公開かぎで暗号化し、受信者の秘密かぎで復号化する。
メッセージ認証
 改ざんを検出する。メッセージ認証子(MAC)は、秘密かぎ暗号に基づく、ハッシュ関数で生成される。
ハッシュ関数
 ハッシュ関数の特徴
 1.入力データの長さに関係なく出力データは固定。
  (例1)30 % 4 = 2
  (例2)(5 + 6 × 2) % 4 = 1
 2.出力データから入力データを求めることが困難
  (例)X % 4 = 0の場合。
   4の倍数のどれかとなるため困難。
 3.出力データが同じとなる入力データを見つけることが困難

 ハッシュ関数の利用例
 1.送信者側は、ハッシュ関数を使って、MD(メッセージダイジェスト)を作る。
 2.受信側も同じくMDを作る。
 3.送信側がMDを送信し、受信者側がそれを比較する。比較した結果、同じならば改ざんされていない。

 

 SQL文も固有のベンダーではない為、中途半端間が漂いますが、合格当時からの情報なのでこれだけ覚えればSQL関連の問題で満点を取る事も可能です。

最後に私が問題を行った順番をご紹介します。参考になるか分かりませんが、問題1から順々に行う必要が無い事が分かります。試験当日は、どのような内容になるか分かりませんが私が受けた時の問題を参考にします。

問6 データベース
問5 アルゴリズム関連
ここで、約1時間を想定します。最悪の場合は、1時間半かけても頑張って全部解きましょう。
次に自分の得な問題に挑戦しましょう。
私の場合は、セキュリティでした。
残り3問は、適当に解ける問題だけ解きましょう。
私の考えでは、問5及び問6で約6割。得な問題(複数あればなお良い)で出来れば100%。それに応じて残り3問を全部で半分くらい取れれば合格できます。
明日、1日ありますので頑張ってください。

参考URL
ソフトウェア開発技術者試験受験者の為の総合支援ページ