【FE】基礎知識を個人的にまとめた。

FEの学習の理解を深めるためにまとめる。
随時更新していく。

参考文献
◆きたみりゅうじ　「キタミ式イラストIT塾 基本情報技術者 令和03年」

##セキュリティ

【情報セキュリティ】
セキュリティマネジメントの三要素
①機密性：情報漏洩の防止（許可された人だけアクセスできる等）
②完全性：情報の完全状態の維持（書き換えられることがない）
③可用性：必要に応じた情報資産の使用が行える

【セキュリティポリシ】
企業の取り組みの明文化、社内への周知・徹底
構成要素は基本方針、対策基準、実施手順

【個人情報保護法】
個人情報を事業者が適切に取り扱うためのルール規定

【プライバシーマーク制度】
個人情報に関する認定制度
これにより個人情報の適切な保護体制が整っている事業者の証になる

【プライバシーバイデザイン】
個人情報の漏洩や目的外利用によるリスク回避のための予防機能をシステムに組み込むもの

【ユーザ認証】
不正アクセスの防止

①ユーザIDとパスワード　※ポピュラー
②バイオメトリクス認証（生体認証）：身体的特徴による識別方法（指紋、声紋、虹彩）
③ワンタイムパスワード：使い捨てパスワード
④コールバック：サーバ側から再発信することで、正確なアクセス権であることを確認する

【アクセス権】
許可された人のみが情報を閲覧できる権利（読み取り、修正、追加、削除）

【ログイン（ログオン）】
ユーザ認証をパスして使用可能状態にすること

【ログアウト（ログオフ）】
システムの利用を終了してログイン状態を解除すること

【ソーシャルエンジニアリング】
人の心理的不注意を逆手に情報資産を盗み出す行為
（受信者の業務に関係がありそうな内容等）

例）ショルダーハッキング（：盗み見）、スキャビンジング（：ゴミ箱を漁る）等
　　パスワードリスト攻撃：入手したID・パスワードで他サイトへのログインを行う
　　ブルートフォース攻撃（総当たり攻撃）：特定IDに対して、パスワードのあらゆる組み合わせを試す
　　リバースブルートフォース攻撃：IDのあらゆる組み合わせを試す
　　レインボー攻撃：ハッシュ値からパスワード文字列を解析する
　　SQLインジェクション：DBの不正取得や改ざんを行う
　　DNSキャッシュポイズニング：DNSキャッシュを悪用することで偽装Webサイトへ誘導する

【ルートキット（rootkit）】
コンピューターに潜伏し、リモート制御を可能にさせるソフトウェアの集合体
例）ログ改ざんツール、バックドアツール（：リモートからの侵入を容易にする）、改ざんされたシステムツール群等

【ウイルス（コンピューターウイルス）】
❶自己電線機能：自身のコピーを他コンピュータに移して感染拡大を行う
❷潜伏機能：対策遅延を狙って、時間を置いて動き出す
❸発病機能：プログラムやデータの破壊、予期せぬ動作を行う

「種類」
狭義のウイルス：他プログラムに寄生して、その機能を利用することで発病　※ポピュラー
マクロウイルス：ワープロソフトや表計算ソフトのデータファイルに寄生
ワーム：ネットワークを介して、コンピュータ間に感染
トロイの木馬：見せかけの有用プログラムを実行させ、その裏で不正処理を行う

【マルウェア（コンピュータウイルスを含めた悪意のあるソフトウェア）】
スパイウェア：目的は情報収集
　　　　　　　コンピュータ利用者の個人情報を収集して外部に送信
ボット：感染した第三者コンピュータをボット作成者の指示通りに動かす

【ウイルス対策ソフト】
コンピュータウイルスに対して効力を発揮
コンピュータに入ってきたデータを最初にスキャンして、データに問題がないかを確認する（予防、検査、修復）

【ウイルス定義ファイル（シグネチャファイル）】
既知ウイルスの特徴を記録したもの
ー既知のウイルスしか検出できない

【ビヘイビア法（動的ヒューリスティック法）】
実行プログラムの挙動を監視して、不審な処理がないか検査する

【アプリケーションゲートウェイ（プロキシサーバ＝代理サーバ）】
LANの中間に位置して外部とのやり取りを代行する
これにより打ちと外の通信を遮断できる

【WAF（Web Application Firewall）】
Webアプリケーションに対する外部からのアクセスを監視
通信データの中身までチェックできる

【ぺネストレーションテスト】
システムの脆弱性（セキュリティホールや設定ミス等）の有無を確認する

【DMZ（DeMilitarized Zone）】
内部ネットワークからは隔離された中間領域
アクセス可能な公開サーバ（Webサーバや社外向けメールサーバ等）を設置

【外部セグメント】
基本的にサーバ設置はされない

【内部セグメント】
不正アクセスから保護すべきサーバ（データベースサーバや社内向けメールサーバ）を設置

【暗号化】
データを第三者には分からないものに変換する

【復号】
暗号化されたデータを元の形に戻す

【デジタル署名】

※ネットワークに潜む危険3選
　❶盗聴：データのやり取りに問題はなし、ただ第三者に内容を知られる危険性
　❷改ざん：見かけ上は問題ないように見えるが、実際は第三者にデータを書き換えられている危険性
　❸なりすまし：第三者が当人になりすまし、データの送受信が行われる危険性

【鍵】
暗号化や復号を行うためのデータ

※平文：暗号化されていない元データ
　暗号文：暗号化済のデータ

【共通鍵暗号方式（秘密鍵暗号方式）】
送受側で同じ鍵を用いる

【公開鍵暗号方式】
秘密鍵（：受信側）と公開鍵（送信側）の1セット

※公開鍵：暗号化を行うための鍵
※秘密鍵：復号を行うための鍵
※逆もしかり

【ディジタル署名】
改ざんの有無や送信元の詳細を確認できる

【ハッシュ化】
データから「メッセージダイジェスト（：要約した短いデータ）」を作成

【認証局（CA：Certificate Authority）】
信用できる第三者によって公開鍵がその当人のものであることを証明する機構

【公開鍵基盤（PKI：Public Key Infrastructure）】
認証機関と公開鍵暗号技術を用いた通信の安全性を保証する仕組み


##システム開発

【ソフトウェアライフサイクル】
企画→要件定義→開発→運用→保守のループする5段階プロセス

※企画段階での検討項目
①スケジュール
②体制
③リスク分析
④費用対効果
⑤適用範囲

【調達】
システムベンダに対して発注をかける

⑴情報提供依頼：RFI（：Request For Information、情報提供依頼書）の提出
⑵提案依頼書の作成と提出：REP（Request For Proposal、提案依頼書）の提出
⑶提案書の受け取り：⑴、⑵を踏まえて、発注者側に渡す
⑷見積書の受け取り：発注者側に渡す
⑸システムベンダの選定


【要件定義（基本計画）】
作成するシステムに必要な機能洗い出し、要件定義書としてまとめる

【システム設計】
要件定義の内容を具体的なシステムの仕様に落とし込む

1⃣外部設計：利用者側目線（画面レイアウトやユーザーインターフェース等）
2⃣内部設計：開発者側目線（外部設計実現のための実装方法や物理データ設計等）
3⃣プログラム設計：プログラムをどう作るか（プログラムの構造化設計やモジュール同士のインターフェース仕様等）

【プログラミング】
システム設計に基づいて、プログラムをモジュール単位で作成する（プログラム言語を用いて）

①コンパイラ方式：すべて機械語に翻訳してから実行
②インタプリタ方式：逐次翻訳しながら実行

【テスト】
作成したプログラムにミスがないかを検証

1⃣単体テスト：モジュールレベルの動作確認
2⃣結合テスト：モジュールを結合した動作確認や入出力検査等
3⃣システムテスト：システム全体を稼働した際の動作確認や負荷試験等
4⃣運用テスト：実際の使用条件を踏まえた操作確認

【ウォータフォールモデル】　※ポピュラー
要件定義→システム設計→プログラミング→テストの各工程を順番に進める
＋管理がしやすい
ー最終段階でしか動作確認ができない、手戻りを想定していない

【プロトタイピングモデル】
開発初期段階で試作品を用い、確認しながら開発側との意識ズレを防ぐ
＋発注者側が早い段階で操作確認ができる
ー作成の手間がかかる

【スパイラルモデル】
システムを複数に分割して、各サブシステム毎に開発を行う
＋各サブシステムの声が反映されていくため、開発効率が上がる

【レビュー】
各工程完了時の振り返り作業
＋これにより後工程への問題持ち越しが起こらない

「種類」
①デザインレビュー：設計段階で作成した仕様書に対して、設計の妥当性を検証
②コードレビュー：作成したプログラムに対して、ソースコードの正確性を検証

「方法」
1⃣ウォークスルー：開発者ないし作成者が主体
2⃣インスペクション：第三者がモデレータとしてレビュー責任者
3⃣ラウンドロビン：参加者全員が持ち回りでレビュー責任者

【CASE（Computer Aided Software Engineering）ツール】
システム開発の自動化を支援するツール群

①上流CASEツール：DFDやE-R図
②下流CASEツール：プログラムの自動生成ツールやテスト支援ツール等
③保守CASEツール：リバースエンジニアリング（：既存プログラムを解析して元の設計仕様を探る）等

※開発に関する情報はリポジトリ（：データベース）で一元管理

[開発手法]
①RAD（Rapid Application Development）：短期間＋少人数体制
　　　　　　　　　　　　　　　　　　　　プロトタイプの作成と評価を繰り返すことで完成度を高める
　　　　　　　　　　　　　　　　　　　　そのため、タイムボックス（：開発期限）を設定する

②アジャイル：週単位開発手法の総称

【XP（eXetreme Programming）】
開発途中での変更を許容できる柔軟性を持つ
5つの価値と19のプラクティスがある

[開発のプラクティス]
1⃣テスト駆動開発：テスト前に設定してパスできるように実装を行う、自動でストが望ましい
2⃣ペアプログラミング：二人一組によるプログラミング、コード書き役とコード検証役
3⃣リファクタリング：内部コードを随時ブラシュアップ
4.ソースコードの共同所有：チーム内誰しもが修正可能であり、コードすべてに責任を持つ
5.継続的インテグレーション：単体テスト後のプログラムはすぐに結合して、結合テストを行う
6.YAGNI：「You Aren't Going Need It」の略、実装は優先度の高いシンプルな機能に留める

③リバースエンジニアリング：既存ソフトウェアの分析により、プログラムの仕様やソースコードを導き出す
＋新規開発や旧来システムの保守の手助け

④フォワードエンジニアリング：上記を基に新たなソフトウェアを開発
ーソフトウェア権利者の許可なく開発・販売を行うと知的財産権の侵害に抵触する

⑤マッシュアップ：公開済のサービスを複数組み合わせることで、新たなサービスを生み出す

[業務のモデル化]
【DFD（：Data Flow Diagram）】
業務プロセスをデータの流れに着目して明示化したもの

「記号」
○：プロセス（処理）/データの加工や変換
□：データの源泉と吸収/データ発生元や最終目的地
→：データフロー/データの流れ
＝：データストア/データの保存場所

【E-R図】
□：実体（Entity）
→：関連（Relationship）

【UML】

「4パターン」
多重度
 0..1　　0か1
 1..1　　1のみ
 0..*　　0を含む多
 1..*　　0を含まな多

【ユーザインタフェース（ヒューマンインタフェース）】
システムとユーザ間のやり取りを仲介

【CUI（Character User Interface）】
コマンド入力により、命令を出す

「主なパーツ」
ウィンドウ：アプリケーションの基本領域
　　　　　　ここにパーツを配置して操作画面になる
メニューバー：操作項目が並ぶ
プルダウンメニュー：クリックすると選択肢が下に連なって並ぶ
ラジオボタン：選択肢から1つだけを選ばせる
チェックボックス：選択肢の複数選択や特定項目のON/OFF
テキストボックス：文字入力欄

【GUI（Graphical User Interface）】　※ポピュラー
アイコンやボタンをマウス操作することにより、命令を出す

[コード設計]
効率的にデータを管理するための手段

【チェックディジット】
誤入力を判定するためにコードへ付加された数字

「チェック方法」
ニューメリックチェック：数値データに文字が入力されていないか
シーケンスチェック：対象データが一定順序で並んでいるか
リミットチェック：対象データが適切な範囲内にあるか
フォーマットチェック：対象データの形式　　　　　　　　　　　　　　　　　　　　　　　
照合チェック：入力されたコードが登録されているか
論理チェック：対象データに対して対となる項目に矛盾がないか
重複チェック：複数個登録されていないか　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　

[モジュール分割技法]

【プログラムの構造化設計】
各プログラムをモジュール（：単位）で分解、階層化する
＋作業の分担化
＋機能の再利用
＋修正の容易さ

「データの流れに着目」
❶STS分割法：プログラムを入力処理（Source）、変換処理（Transform）、出力処理（Sink）3つ分割
❷トランザクション分割法：プログラムを一連の処理単位で分割
❸共通機能分割法：プログラム内の共通機能をモジュール単位で分割　　　　　　　　　　　　

「データの構造に着目」
⑴ジャクソン法
⑵ワーニエ法

【モジュール強度】
どれだけ機能的に特化できているのか
高いほどモジュールの独立性が高くて好ましい

【モジュール結合度】
どんなデータのやり取りによって、他モジュールと結合するか
弱いほど、モジュールの独立性が高くて好ましい

データ結合：最弱、必要なデータ項目だけを引数として渡す　
内容結合：最強、1つのモジュールで多くの機能を実現する

「データの種類」
①単一
②データ構造（：複数データを一括りにしたもの）

「渡す手段」
①引数（：モジュールからモジュールへ）
②大域的データ（:共通領域を用いて）　　　

[テスト]
バグの洗い出しと改修

【単体テスト】
各モジュールでテストを行い、バグがないかを検証

　【ブラックボックステスト】
　　モジュールの内部構造は気にせず、入力に対する正しい出力結果かを検証

　　「ルール」
　　
　　【同値分割】
　　　データ範囲を種類毎にグループ分け、その中から代表値を抽出してテストデータに用いる

　　【限界値（境界値）分析】
　　　境目部分を重要視、境界前後値をテストデータに用いる

　【ホワイトボックステスト】
　　モジュールの内部構造が正しく構築されているかを検証

　　「網羅基準」
　　
　　【命令網羅】
　　　命令すべて1度は通すようにする

　　【判定条件網羅（分岐網羅）】
　　　分岐すべてを1度は通すようにする

　　【条件網羅】
　　　各条件が真偽値を1度は満たすようにする

　　【複数条件網羅】
　　　複数条件がありうる真偽値すべての組み合わせを網羅する　

【結合テスト】
複数モジュールを繋ぎ合わせて検証を行い、モジュール間のインタフェースにが正常かを検証

　【トップダウンテスト】
　　上位モジュールからテストを済ませていく　　
　　スタブ（：仮モジュールから呼び出される）を用いる

　【ボトムアップテスト】
　　下位モジュールからテストを済ませていく
　　ドライバ（：仮モジュールを呼び出す）を用いる

　「その他」
　折衷テスト（：トップダウンとボトムアップの組み合わせ）、ビックバンテスト（：モジュールすべてを一気に繋げる）

【システムテスト（総合テスト）】
システム全体の検証
例えば性能テスト（：処理能力は十分か）、機能テスト（要求された通りに動くか）、負荷テスト（負荷をかけても問題ないか）　

【リグレッションテスト（退行テスト）】
プログラムのバグ修正の際に、これまで正常動作をしていた範囲に新たなバグを誘発していないかを確認

【バグ管理図】
横軸でテスト項目の消化件数や時間、縦軸でバグの累積件数

　【信頼度成長曲線】
　　きちんとテストが行われて品質向上がされていれば、縦横軸ともに高い形状の線が出来上がる


[プロジェクトマネジメント]
【PMBOK（Project Management Body of Knowledge）】
マネジメント技法をまとめた国際的標準ルール

「10個の知識エリア」
①コストマネジメント：予算管理
②資源マネジメント：要員確保
③品質マネジメント：適合チェック
④リスクマネジメント：潜在リスクの識別管理
⑤スコープマネジメント：作業範囲の明確化
⑥スケジュールマネジメント：作業スケジュール管理
⑦コミュニケーションマネジメント：情報伝達・共有
⑧ステークホルダーマネジメント：利害関係者の特定・利害調整
⑨統合マネジメント：作業プロセス調整
⑩調達マネジメント：外部への発注対応・実施

　【WBS（Work Breakdown Structure）】
　　プロジェクトに必要な作業や成果物を階層化した図
　　スコープマネジメント

「見積り手法」
【プログラムステップ法】
ソースコードの行数により、開発コストを算出

【ファンクションポイント法】
機能の個数や難易度から開発コストを算出

「スケジュール管理」
【ガントチャート】
横軸に時系列、縦軸に作業計画

【アローダイアグラム】
作業の流れと日数を図にしたもの

「記号」
丸数字：結合点（：作業の終始を表す）
　　　　1つの結合点から開始できる作業は1つだけ
　　　　数字は優先順

矢印：上に作業名、下に作業日数

点線矢印：ダミー作業
　　　　　2つ以上の作業がある際に、新たな結合点を導き出す


「全体日数の見方」
①各作業に必要な作業日数を順に加算
②複数作業が並行する際は、より多く作業日数がかかる方を選択

　【最早結合点時刻】
　　対象の結合点で最も早く作業開始ができる日時

　【最遅結合点時刻】
　　対象の結合点がギリギリまで作業開始を伸ばせる日時

　【クリティカルパス】
　　作業が遅れた場合に全体スケジュールに影響を及ぼす要注意な経路
　　全体日数を表す最長ルートと同じ

「スケジュールの短縮手法」

【クラッシング】
資源の追加投入を行い、コストの増大を最小限に抑えながら
スケジュールの所要期間を短縮する

【ファストトラッキング】
アクティビティやフェーズを並行して遂行する
ー手戻りが発生する恐れがある

【ITサービスマネジメント】
顧客の要求を満たすITサービスを、効果的に提供すべく体系的に管理する手法

　【ITIL（Information Technology Infrastructure Library）】
　　イギリスがまとめたベストプラクティス（：成功事例）

　　【サービスサポート】
　　　ITサービスの日々の運用に関する情報をまとめたもの
　　　
　　　「1機能と5つの業務プロセス」
　　　　サービスデスク（ヘルプデスク）：サービスの提供者と利用者間の一元的窓口

　　　　　「組織構造」
　　　　　　1⃣ローカル・サービスデスク：ユーザの拠点内ないし物理的に近い場所
　　　　　　　　　　　　　　　　　　　＋現地で直接対応ができ、問題把握が容易

　　　　　　2⃣中央サービスデスク：1か所に窓口を集約
　　　　　　　　　　　　　　　　　＋コスト削減ができ、情報管理が容易

　　　　　　3⃣バーチャル・サービスデスク：通信技術により、1か所に集約しているように見せる
　　　　　　　　　　　　　　　　　　　　　＋柔軟な対応

　　　　　「その他」
　　　　　　フォロー・ザ・サン：時差地域
　　　　　　　　　　　　　　　　＋24時間対応
　　　　　
　　　　①インシデント管理：サービス運用の回復
　　　　②問題管理：抜本的な解決策を検討
　　　　③構成管理：随時新しいものに更新
　　　　④変更管理：適切な監視下で必要な変更を行う
　　　　⑤リリース管理：適切な時期に適切な場所へリリースする

　　【サービスデリバリ】
　　　長期的にITサービスの計画と改善を図る

　　　「5つの業務プロセス」
　　　❶SLM
　　　❷キャパシティ管理：将来想定される需要に対して、備える
　　　❸可用性管理：使いたい時に使える、当たり前の確保
　　　❹ITサービス継続性管理：災害時でも最小時間でサービス復旧
　　　❺ITサービス財務管理：費用対効果を確認

【SLA（Service Level Agreement）】
サービスの提供者と利用者間で、サービスに関して事前に取り決めて明文化したサービスレベル合意書

【SLM（Service Level Management）】
サービス水準の維持・向上に努める活動

【ファシリティマネジメント】
設備や施設を適切に管理・改善する取り組み

　【UPS（Uninterruptible Power Supply：無停電電源装置）】
　　接続機器に対して、一定時間電力を供給する

[システム監査]

【ITガバナンス】
ITシステムを適切に管理・運用するための体制や方法

【システム監査】
ITガバナンスが正しく機能しているかを確認

　「手順」
　　1⃣監査計画の立案：監査目的・監査対象・実施時期等を明確化
　　2⃣予備調査：事前の実態調査を行い、適切なコントロールがなされているかを確認、監査手続書を作成
　　3⃣本調査：監査証拠を収集、監査調書を作成
　　4⃣評価・結論：コントロールの妥当性を評価、監査報告書を作成

　【可監査性】
　　処理の正当性や内部統制の
　　監査や評価が行えるシステム設計・運用であること
　
　【監査証跡】
　　システムにおける事象発生から最終結果に至るまでの一連の流れを、時系列に沿った形で追跡できる仕組みや記録

　【監査証拠】
　　自らの監査意見を立証するための必要な事実

　　【保証意見】
　　　基準に適していることを保証する

　　【助言意見】
　　　欠陥の指摘と改善点の表明

　【システム監査人】
　　「求められる要素」
　　①外観上の独立性：客観的な実施を行うために、監査対象から独立していなければならない
　　②職業倫理と誠実性
　　③精神上の独立性：公正かつ客観的に監査判断を行わなければならない
　　④専内能力：専門的な知識と技能を保持しなければならない

　　【フォローアップ】
　　　システム監査人が行う改善指導
　　
　　　※独立した存在であるため、直接業務を変更する権限はない
　　　監査報告を受けて、監査の依頼組織もしくは被監査部門が行う


##プログラムの作り方

【プログラミング言語】
コンピュータに作業指示を伝えるための言葉

　「代表例」
　　C言語：OSやアプリケーション等、広範囲で用いられる
　　　　　 ＋柔軟性に優れる

　　BASIC：初心者向けとして使われている
　　　　　 インタプリタ方式
　　
　　COBOL：事務処理用として使われていた
　　　　　 現在は新規開発での使用はない

　　Java：Webサイトや大規模システムで使われる
　　　　　ガーベジコレクション機能（：参照されなくなったオブジェクトのメモリ領域を主記憶装置上から開放）を持つ（メモリ管理のため）
　　　　　＋特定機種に依存しない（Java仮想マシンにより）

　「翻訳手法」
　　①【インタプリタ】
　　　　ソースコードに書かれた命令を1つずつ機械語に翻訳しながら実行
　　　　＋動作確認をしながら作成ができる
　　　　ー実行速度が遅い
　　
　　②【コンパイラ】
　　　　ソースコードの内容を最初にすべて翻訳して、一気に実行
　　　　＋効率よく実行まで行える
　　　　ー作成途中で動作確認ができない

　　　　※コンパイル：コンパイラによる翻訳作業
　
　　　　「実行手順」
　　　　　【リンカ】
　　　　　　連係編集プログラム
　　　　　　
　　　　　　※リンク：モジュールを繋ぎ合わせること
　　　　　　※静的リンキング：あらかじめリンクさせておく手法
　　　　　　※動的リンキング：プログラム実行時に共有ライブラリやシステムライブラリをロードしてリンクさせる手法

　　　　　【ローダ】
　　　　　　ロードプログラム
　　　　　　
　　　　　　※ロード：ロードモジュールを主記憶装置に読み込ませる作業

【構造化プログラミング】
プログラムを機能単位の部品に分けて、その組み合わせによって全体を形作る考え方

　「制御構造3つルール」
　　1⃣順次構造：上から順に処理を実行
　　2⃣選択構造：条件によって分岐、いずれかの処理を実行
　　3⃣繰り返し構造：ある条件が満たされるまで、一定処理を繰り返す

【アルゴリズム】
どのように処理させるかの処理手順

【フローチャート（流れ図）】
アルゴリズムをわかりやすく記述するためのもの

楕円形：処理の終始
□：処理内容
矢印：処理の流れ
◇：判定処理
台形みたいなやつ：繰り返し処理の開始
上記の逆さま：繰り返し処理の終了

「データの持ち方」
【データ構造】
　データを配置する方法
　アルゴリズムの善し悪しは、プログラムの特性に適したデータ構造がなされているか否かに大きく左右される

　❶【配列】
　　メモリ上の連続した領域で、並べて管理
　　個々のデータはすべて同じサイズのため、添字（：配列内の何番目の箱かを指定する番号）を用いる
　　＋各データに直接アクセスができる
　　ーデータの挿入や削除が不得手
　　※デフォは一次元配列、多次元配列も存在する

　❷【リスト】
　　データ同士を数珠繋ぎして管理
　　ポインタ（：メモリ上の位置を示す番号）がある
　　＋データの追加・挿入・削除が容易
　　ー個々のデータに直接アクセスできない（常にポインタを辿らなければならないため）
　　※ポインタ利用の線形リストと同義
　　
　　1⃣単方向リスト：デフォ、先頭から辿らなければならない（一方通行のため）
　　2⃣双方向リスト：前後どちらのリストを辿ることが可能
　　3⃣循環リスト：全体が環状になっている、最後尾は先頭データのポインタを持つ

　❸【キュー（FIFO：First In First OUt）】

　　最初に格納したデータから順に処理を行う
　　例）プリンター

　❹【スタック（LIFO：Last In First OUt）】
　　最後に格納したデータから順に処理を行う
　　例）エレベーター

【木（ツリー）構造】
階層構造を効率よく管理できる構造
例）ハードディスク、ドメイン名

　「構成要素」
　　⑴根（ルート）：最上位の節点
　　⑵枝（ブランチ）：各節点を繋ぐ
　　⑶節（節点、ノード）：データそのもの
　　⑷葉（リーフ）：末端の節点
　　※親と子の関係とも呼ばれる
　　
　　【部分木】
　　　節からぶら下がる部分
　　　左部分木（：左側）、右部分木（：右側）に分かれる

　　　【2分木】
　　　　節から成る枝が2本以下のもの
　
　　【完全2分木】
　　　葉以外すべての節で2つの子を持ち、根から葉までの深さが一様に等しい2分木

　　【2分探索木】
　　　親に対する左部分木、右部分木の関係が「左の子＜親＜右の子」になる2分木
　　　＋データ探索が容易

　　「データ探索のアルゴリズム」
　　 ①【線形探索法】
　　　　先頭から順に探索していく方法
　　　　データが見つかるか、配列の添字範囲を超えたら繰り返し終了
       ーループ中に上記2つの判定が常に行われるため、効率が悪い
　　   ＋【番兵】
　　　　　　終了判定を容易にするため、末尾に付加したデータ
　　　　平均探索回数：（1+n）/2回

　　②【2分探索法】
　　　規則性を持つデータを探索していく方法
　　　平均探索回数：logs2n回
　　
　　③【ハッシュ法】
　　　ハッシュ関数（：一定の計算式）を用いた探索方法
　　　平均探索回数：1回
　　　※シノニム（：格納位置がバッティングしてしまう現象）の際は、
　　　　新たな格納先を求めなければならない

「データ整列のアルゴリズム」
　　　・基本型
　　　①【バブルソート（基本交換法）】
　　　　隣接データの大小比較、入れ替え

　　　②【選択ソート（基本選択法）】
　　　　最（大）小値データを取り出し、先頭データと交換を繰り返す

　　　③【挿入ソート（基本挿入法）】
　　　　未整列データを取り出し、整列済データの適切位置に挿入していく

　　　・応用型
　　　❶【シェルソート】
　　　　特定の一定間隔で取り出し、整列
　　　　さらに狭めた間隔で取り出し、整列
　　　　間隔が1になるまで繰り返す

　　　❷【クイックソート】
　　　　設定した基準値より大小それぞれで取り出し、整列
　　　　それぞれのグループ内で新たに基準値を求めて大小で取り出すを繰り返す

　　　❸【ヒープソート】
　　　　　未整列部分から、順序木（：親＞＝子、親＝＜子関係にある2分木）を作り、最小（大）値を取り出し、整列済列へ整列を繰り返す

【オーダ記法】
大まかな処理効率を図るための指標
O(式)で表す

　「各アルゴリズムのオーダ」
　　・探索アルゴリズム
　　　　◆線形探索法：O(n)
　　　　◆2分探索法：O(log2n)
　　　　◆ハッシュ法：O(1)

　　・整列アルゴリズム
　　　◆バブルソート：O(n2)
　　　◆選択ソート：上記に同じ
　　　◆挿入ソート：上記に同じ
　　　◆シェルソート：O(n1.2)
　　　◆クイックソート：O(nlog2n)
　　　◆ヒープソート：上記に同じ

★オブジェクト指向プログラミング
【オブジェクト指向】
　オブジェクトを用いて、処理対象を捉えてモジュール化

　【オブジェクト】※インスタンスとほぼ同義
　　データ（：属性）とメソッド（：手続き）を1つにまとめた概念
 
　　【抽象化】
　　　2以上のオブジェクトの中から共通しているメソッドやデータを抽出   
　　
　　【カプセル化】
　　　上記のオブジェクトの役割のこと
　　　＋情報隠蔽　※他オブジェクトにアクセスされる心配がない
　　　＋オブジェクト内に与える影響が少ない　※メソッドを追加しても問題なし

　　【クラス】
　　　オブジェクトが持つ性質を定義したもの＝設計図

　　　「階層構造」
　　　◆スーパークラス（基底クラス）：上位クラス
　　　◆サブクラス（派生クラス）：下位クラス
　　
　　　【継承（インヘリタンス）】
　　　　サブクラスがスーパークラスの特性を受け継ぐこと
　　　　
　　　【is a関係】
　　　　【汎化】
　　　　　下位クラスが持つ共通の性質を抽出して上位クラスとして定義
　　　　　例）車

　　　　【特化】
　　　　　抽象的な上位クラスをより具体的なクラスとして定義
　　　　　例）乗用車、バス、トラック

　　　【part of関係】
　　　　　継承関係のない上位クラスと下位クラスの関係
　　　　・下位クラスは上位クラスの性質を【分解】して定義
　　　　例）ハンドル、ボディ、タイヤ
　　　　・上位クラスは複数下位クラスを【集約】して定義
　　　　例）車

　　　【オーバーライド】
　　　　スーパークラスで定義したメソッドをサブクラスで再定義

　　【インスタンス】※オブジェクトとほぼ同義
　　　クラスに対して、具体的な属性値を与え、メモリ上に生成して実体化させたもの

　　【多態性（多相性、ポリモーフィズム）】
　　　同じメッセージを複数オブジェクトに送信した際に、
　　　それぞれが独立した固有の処理を行う
　　　例）三角クラス、丸クラス、四角クラス
　　　　　メソッド「Write」➡それぞれが三角、丸、四角を描く

【UML（Unified Modeling Language）】
　オブジェクト指向分析・設計において用いられる統一モデリング言語

　【デザインパターン】
　　過去の設計ノウハウを整理したものに名前を付けて、再利用可能にしたひな形
　
　【ダイアグラム】
　　規定されている図　※13種類
　　
　　◆構造図
　　　❶クラス図：クラス構造（クラス定義、関連付け等）
　　　❷オブジェクト図：インスタンス（オブジェクト）の具体的関係を表す
　　　❸パッケージ図：クラス等のグループ化の詳細を表す
　　　❹コンポーネント図：処理を行う複数クラスを1つにみなし、
　　　　　　　　　　　　　内部構造と相互関係を表す
　　　❺複合構造図：複数クラスを内包したクラスやコンポーネントの内部構造を表す
　　　❻配置図：システム構成をする物理的な構造を表す

　　◆振る舞い図
　　　①ユースケース図：利用者視点でシステムが要求に対しての振る舞いを表す
　　　②アクティビティ図：処理の流れや状態遷移を表す
　　　③状態マシン図：オブジェクトの状態遷移を表す
　　　④シーケンス図：オブジェクトのやり取りを時系列で表す
　　　⑤コミュニケーション図：オブジェクト間の関連と、メッセージのやり取りを表す
　　　⑥相互作用概要図：アクテビティ図の変形型
　　　　　　　　　　　ユースケース図やシーケンス図を構成要素として、
　　　　　　　　　　　　より大枠の処理の流れを表す
　　　⑦タイミング図：オブジェクトの状態遷移を時系列で表す

##システム構成と故障対策

「コンピュータを動かす仕組み」
【シンクライアント（Thin Cliant）】
クライアントサーバシステムにおいてサーバ側への依存度を重視したもの
クライアント側は入力や表示部分のみ
サーバ側が情報処理や保管
＋サーバ側でデータをまとめて管理可能、情報漏洩のリスク回避

【ピアツーピア（Pear to Pear）】
サーバの一元管理にされない完全な分散処理型システム
ネットワーク上で協調動作するコンピュータ同士が互いに対等な立場でやり取りする
例）IP電話やファイル交換ソフト
＋負荷の分散が可能

【3層クライアントシサーバシステム】
＋メリットは2層のすべて逆
例）ネットショッピング等

◆クライアント側
プレゼンテーション層：ユーザインタフェース部分の提供

◆サーバ側
ファンクション層（アプリケーション層）：ビズネスロジック（：業務実現するための処理）を提供
データ層：データベースを提供

※通常のクライアントシステムを2層クライアントサーバシステムと呼ぶ
ークライアントすべての修正が必要（ビジネスロックに変更が生じた際）
ー帯域を圧迫する（大量の処理データがネット上に流れるため）
ーデータベースのロックに時間を要する

【オンライントラザクション処理】
要求に対してリアルタイムで処理を行い、結果が反映されるもの
例）銀行ATMやチケット予約

【バッチ処理】
一定時間で処理が行われ、結果が反映されるもの
例）勤怠データや給与計算

【対話型処理】
コンピュータの指示通りに利用者が処理操作を行うもの

「性能指標」
【ベンチマークテスト】
性能測定用のソフトウェアを用いて、システムの各処理性能を数値化するもの
傾向を掴むひとつの目安

【スループット】
システムの仕事量
ー途中で処理待ちがあると、全体のスループットは低下

【レスポンスタイム】
コンピュータが依頼を受けてから応答を返すまでの所要時間

【ターンアラウンドタイム】
コンピュータが処理を依頼し始めてから、応答すべてが返されるまでの所要時間

「システムを稼働させ続けるためには」
【デュアルシステム】
同じシステムを2組用いて、互いの処理結果を確認・監視し合う
＋信頼性がある、片方が故障しても影響がない
ーコストがかかる

【デュプレックスシステム】
同じシステムを2組用意しておき、片方を主系（：メイン）、
もう片方を従系（：サブ、パッチ処理等を行う）で使う
主系が故障した際に、従系に切り替える
＋無駄がなくコスパが高い
ー対応に時間が掛かる（切り替えに時間を要するため）

　❶【ホットスタンバイ】
　　主系から従系へ瞬時に切り替えが行える待機方法

　❷【コールドスタンバイ】
　　必要時に切り替え対応が行われる待機方法
　　＋コストダウン
　　ー時間がかかる

「システムの信頼性と稼働率」
【稼働率】
トラブルなく使えていた期間を割合で表したもの
平均故障間隔（MTBF）や平均修理時間（MTTR）と同じ信頼性を示す指標

【RASIS（Reliability Availability Serviceability Integrity Secutity）】
システムの信頼性を評価する概念

　【平均故障間隔（Mean Time Between Failure）】
    正常に稼働できている時間

　【平均修理時間（Mean Time To Repair）】
    修理に必要な時間

【システムの稼働率】※100%に近いほど品質が高い
   MTBF / MTBF + MTTR

　「直接接続」
　　稼働率A x 稼働率B

  「並列接続」
　　1 - 故障率A x 故障率B　※故障率= 1-稼働率

【フォールトトレラント】
壊れても大丈夫な対策をはかる考え方

　【フェールセーフ】
　　故障時に安全性第一にする考え方
　　例）信号機、石油ストーブ

　【フェールソフト】
　　故障時に継続性を優先する考え方
　　例）ジェット機、パソコン

　【フールプルーフ】
　　意図しない使用方法でも故障しないようにする考え方
　　例）電子レンジ、電池ボックス、洗濯機

　【フォールトアボイダンス】
　　故障そのものを防止する考え方

　【バスタブ曲線】
　　故障の発生頻度と時間の関係をグラフにしたもの

　　◆初期故障期間；導入時は製造上の欠陥等によって故障率が高まる
　　　　　　　　　　 時間に比例して低下していく

　　◆偶発故障期間：故障率が一定で起こる
                   操作ミス等による突発的な故障が発生する程度

　　◆摩耗故障期間：ライフサイクル末期の製品寿命が近い状態
                   時間に比例して増大していく

【TCO（Total Cost of Ownership）】
◆初期コスト：ハードやソフトの購入費用等
◆運用コスト：電気代、メンテナンス代等

【バックアップ】
万が一に備えて別の記憶媒体にデータをコピーしておくこと

「注意」
①定期的に行う
②バックアップする媒体は分ける
③業務処理中には行わない

◆フルバックアップ
　保存されているデータすべてをバックアップ
　＋直前のバックアップで元通り
　ー処理に時間を要する（データ量が大きくなるため）

◆差分バックアップ
　前回のフルバックアップ以降に作成、変更したファイルのみをバックアップ
　＋直近のフルバックアップと差分バックアップで元通り
　＋データ量・処理時間ともに少なくて済む

◆増分バックアップ
　種類関係なしに前回バックアップ以降に作成、変更したファイルのみをバックアップ
　直近のフルバックアップ以降のバックアップすべてが必要
　バックアップ以降に増えた分
　＋データ量や処理時間は一番最小

[企業活動と関連法規]

「組織形態」
　❶職能別組織：仕事の種類・職能によって部門分け
　❷事業部制組織：独立性を持つ事業部分け
　❸プロジェクト組織：必要時に各部門から選抜したチーム分け
　❹マトリックス組織：2系統の所属をマス目状で組み合わせたもの
　　　　　　　　　　　ー混乱を招きやすい（命令元が複数になるため）

【CEO（Cheif Executive Officer、最高経営責任者）】
企業戦略の策定や経営方針の決定

【CIO（Cheif Information Officer、最高情報責任者）】
情報システム戦略の策定
ビジネス価値を最大化させるITサービス活用の促進

【EC（Electronic Commerce、電子商取引）】

「取引形態」
◆BtoB（Business to Business）：企業間
◆BtoC（Business to Consumer）：企業と個人間　例）オンラインショッピング
◆CtoC（Consumer to Consumer）：個人間　例）ネットオークション
◆BtoE（Business to Employee）：企業と社員間　例）社内に向けたサービス
◆GtoB（Government to Business）：政府・自治体と企業間　例）電子調達・入札
◆GtoC（Government to Consumer）：政府・自治体と個人間　例）行政サービスの電子申請

【EDI（Electronic Data Interchang）】
交換されるデータの形式統一化と機密保持

「4つのルール」　※レベル順
★情報伝達規約：コンピュータ間の通信手順に係わるもの
★★情報表現規約：データ記述方法に係わるもの
★★★業務運用規約：EDIの運用方法に係わるもの
★★★★取引基本規約；EDIを用いた取引に係わる基本的な契約

【電子メール】
SMTP：送信プロトコル（転送も含む）
POP：受信プロトコル　※現在はよく使わているのはPOP3
IMAP：受信プロトコル 
　　　★送受信データをサーバー上で管理するため、どの端末からも同データを参照可能　
      ※現在はよく使わているのはIMAP4

MIME：拡張規格(文字やファイルの添付を可能にする)　※本来はASCII文字のみ
S/MIME：暗号化や電子署名機能を追加

※機種依存文字の使用には要注意


[セキュリティ]

【情報セキュリティ】
セキュリティマネジメントの三要素
①機密性：情報漏洩の防止（許可された人だけアクセスできる等）
②完全性：情報の完全状態の維持（書き換えられることがない）
③可用性：必要に応じた情報資産の使用が行える

【セキュリティポリシ】
企業の取り組みの明文化、社内への周知・徹底
構成要素は基本方針、対策基準、実施手順

【個人情報保護法】
個人情報を事業者が適切に取り扱うためのルール規定

【プライバシーマーク制度】
個人情報に関する認定制度
これにより個人情報の適切な保護体制が整っている事業者の証になる

【プライバシーバイデザイン】
個人情報の漏洩や目的外利用によるリスク回避のための予防機能をシステムに組み込むもの

【ユーザ認証】
不正アクセスの防止

①ユーザIDとパスワード　※ポピュラー
②バイオメトリクス認証（生体認証）：身体的特徴による識別方法（指紋、声紋、虹彩）
③ワンタイムパスワード：使い捨てパスワード
④コールバック：サーバ側から再発信することで、正確なアクセス権であることを確認する

【アクセス権】
許可された人のみが情報を閲覧できる権利（読み取り、修正、追加、削除）

【ログイン（ログオン）】
ユーザ認証をパスして使用可能状態にすること

【ログアウト（ログオフ）】
システムの利用を終了してログイン状態を解除すること

【ソーシャルエンジニアリング】
人の心理的不注意を逆手に情報資産を盗み出す行為
（受信者の業務に関係がありそうな内容等）

例）ショルダーハッキング（：盗み見）、スキャビンジング（：ゴミ箱を漁る）等
　　パスワードリスト攻撃：入手したID・パスワードで他サイトへのログインを行う
　　ブルートフォース攻撃（総当たり攻撃）：特定IDに対して、パスワードのあらゆる組み合わせを試す
　　リバースブルートフォース攻撃：IDのあらゆる組み合わせを試す
　　レインボー攻撃：ハッシュ値からパスワード文字列を解析する
　　SQLインジェクション：DBの不正取得や改ざんを行う
　　DNSキャッシュポイズニング：DNSキャッシュを悪用することで偽装Webサイトへ誘導する

【ルートキット（rootkit）】
コンピューターに潜伏し、リモート制御を可能にさせるソフトウェアの集合体
例）ログ改ざんツール、バックドアツール（：リモートからの侵入を容易にする）、改ざんされたシステムツール群等

【ウイルス（コンピューターウイルス）】
❶自己電線機能：自身のコピーを他コンピュータに移して感染拡大を行う
❷潜伏機能：対策遅延を狙って、時間を置いて動き出す
❸発病機能：プログラムやデータの破壊、予期せぬ動作を行う

「種類」
狭義のウイルス：他プログラムに寄生して、その機能を利用することで発病　※ポピュラー
マクロウイルス：ワープロソフトや表計算ソフトのデータファイルに寄生
ワーム：ネットワークを介して、コンピュータ間に感染
トロイの木馬：見せかけの有用プログラムを実行させ、その裏で不正処理を行う

【マルウェア（コンピュータウイルスを含めた悪意のあるソフトウェア）】
スパイウェア：目的は情報収集
　　　　　　　コンピュータ利用者の個人情報を収集して外部に送信
ボット：感染した第三者コンピュータをボット作成者の指示通りに動かす

【ウイルス対策ソフト】
コンピュータウイルスに対して効力を発揮
コンピュータに入ってきたデータを最初にスキャンして、データに問題がないかを確認する（予防、検査、修復）

【ウイルス定義ファイル（シグネチャファイル）】
既知ウイルスの特徴を記録したもの
ー既知のウイルスしか検出できない

【ビヘイビア法（動的ヒューリスティック法）】
実行プログラムの挙動を監視して、不審な処理がないか検査する

【アプリケーションゲートウェイ（プロキシサーバ＝代理サーバ）】
LANの中間に位置して外部とのやり取りを代行する
これにより打ちと外の通信を遮断できる

【WAF（Web Application Firewall）】
Webアプリケーションに対する外部からのアクセスを監視
通信データの中身までチェックできる

【ぺネストレーションテスト】
システムの脆弱性（セキュリティホールや設定ミス等）の有無を確認する

【DMZ（DeMilitarized Zone）】
内部ネットワークからは隔離された中間領域
アクセス可能な公開サーバ（Webサーバや社外向けメールサーバ等）を設置

【外部セグメント】
基本的にサーバ設置はされない

【内部セグメント】
不正アクセスから保護すべきサーバ（データベースサーバや社内向けメールサーバ）を設置

【暗号化】
データを第三者には分からないものに変換する

【復号】
暗号化されたデータを元の形に戻す

【デジタル署名】

※ネットワークに潜む危険3選
　❶盗聴：データのやり取りに問題はなし、ただ第三者に内容を知られる危険性
　❷改ざん：見かけ上は問題ないように見えるが、実際は第三者にデータを書き換えられている危険性
　❸なりすまし：第三者が当人になりすまし、データの送受信が行われる危険性

【鍵】
暗号化や復号を行うためのデータ

※平文：暗号化されていない元データ
　暗号文：暗号化済のデータ

【共通鍵暗号方式（秘密鍵暗号方式）】
送受側で同じ鍵を用いる

【公開鍵暗号方式】
秘密鍵（：受信側）と公開鍵（送信側）の1セット

※公開鍵：暗号化を行うための鍵
※秘密鍵：復号を行うための鍵
※逆もしかり

【ディジタル署名】
改ざんの有無や送信元の詳細を確認できる

【ハッシュ化】
データから「メッセージダイジェスト（：要約した短いデータ）」を作成

【認証局（CA：Certificate Authority）】
信用できる第三者によって公開鍵がその当人のものであることを証明する機構

【公開鍵基盤（PKI：Public Key Infrastructure）】
認証機関と公開鍵暗号技術を用いた通信の安全性を保証する仕組み


[システム開発]

【ソフトウェアライフサイクル】
企画→要件定義→開発→運用→保守のループする5段階プロセス

※企画段階での検討項目
①スケジュール
②体制
③リスク分析
④費用対効果
⑤適用範囲

【調達】
システムベンダに対して発注をかける

⑴情報提供依頼：RFI（：Request For Information、情報提供依頼書）の提出
⑵提案依頼書の作成と提出：REP（Request For Proposal、提案依頼書）の提出
⑶提案書の受け取り：⑴、⑵を踏まえて、発注者側に渡す
⑷見積書の受け取り：発注者側に渡す
⑸システムベンダの選定


【要件定義（基本計画）】
作成するシステムに必要な機能洗い出し、要件定義書としてまとめる

【システム設計】
要件定義の内容を具体的なシステムの仕様に落とし込む

1⃣外部設計：利用者側目線（画面レイアウトやユーザーインターフェース等）
2⃣内部設計：開発者側目線（外部設計実現のための実装方法や物理データ設計等）
3⃣プログラム設計：プログラムをどう作るか（プログラムの構造化設計やモジュール同士のインターフェース仕様等）

【プログラミング】
システム設計に基づいて、プログラムをモジュール単位で作成する（プログラム言語を用いて）

①コンパイラ方式：すべて機械語に翻訳してから実行
②インタプリタ方式：逐次翻訳しながら実行

【テスト】
作成したプログラムにミスがないかを検証

1⃣単体テスト：モジュールレベルの動作確認
2⃣結合テスト：モジュールを結合した動作確認や入出力検査等
3⃣システムテスト：システム全体を稼働した際の動作確認や負荷試験等
4⃣運用テスト：実際の使用条件を踏まえた操作確認

【ウォータフォールモデル】　※ポピュラー
要件定義→システム設計→プログラミング→テストの各工程を順番に進める
＋管理がしやすい
ー最終段階でしか動作確認ができない、手戻りを想定していない

【プロトタイピングモデル】
開発初期段階で試作品を用い、確認しながら開発側との意識ズレを防ぐ
＋発注者側が早い段階で操作確認ができる
ー作成の手間がかかる

【スパイラルモデル】
システムを複数に分割して、各サブシステム毎に開発を行う
＋各サブシステムの声が反映されていくため、開発効率が上がる

【レビュー】
各工程完了時の振り返り作業
＋これにより後工程への問題持ち越しが起こらない

「種類」
①デザインレビュー：設計段階で作成した仕様書に対して、設計の妥当性を検証
②コードレビュー：作成したプログラムに対して、ソースコードの正確性を検証

「方法」
1⃣ウォークスルー：開発者ないし作成者が主体
2⃣インスペクション：第三者がモデレータとしてレビュー責任者
3⃣ラウンドロビン：参加者全員が持ち回りでレビュー責任者

【CASE（Computer Aided Software Engineering）ツール】
システム開発の自動化を支援するツール群

①上流CASEツール：DFDやE-R図
②下流CASEツール：プログラムの自動生成ツールやテスト支援ツール等
③保守CASEツール：リバースエンジニアリング（：既存プログラムを解析して元の設計仕様を探る）等

※開発に関する情報はリポジトリ（：データベース）で一元管理

[開発手法]
①RAD（Rapid Application Development）：短期間＋少人数体制
　　　　　　　　　　　　　　　　　　　　プロトタイプの作成と評価を繰り返すことで完成度を高める
　　　　　　　　　　　　　　　　　　　　そのため、タイムボックス（：開発期限）を設定する

②アジャイル：週単位開発手法の総称

【XP（eXetreme Programming）】
開発途中での変更を許容できる柔軟性を持つ
5つの価値と19のプラクティスがある

[開発のプラクティス]
1⃣テスト駆動開発：テスト前に設定してパスできるように実装を行う、自動でストが望ましい
2⃣ペアプログラミング：二人一組によるプログラミング、コード書き役とコード検証役
3⃣リファクタリング：内部コードを随時ブラシュアップ
4.ソースコードの共同所有：チーム内誰しもが修正可能であり、コードすべてに責任を持つ
5.継続的インテグレーション：単体テスト後のプログラムはすぐに結合して、結合テストを行う
6.YAGNI：「You Aren't Going Need It」の略、実装は優先度の高いシンプルな機能に留める

③リバースエンジニアリング：既存ソフトウェアの分析により、プログラムの仕様やソースコードを導き出す
＋新規開発や旧来システムの保守の手助け

④フォワードエンジニアリング：上記を基に新たなソフトウェアを開発
ーソフトウェア権利者の許可なく開発・販売を行うと知的財産権の侵害に抵触する

⑤マッシュアップ：公開済のサービスを複数組み合わせることで、新たなサービスを生み出す

[業務のモデル化]
【DFD（：Data Flow Diagram）】
業務プロセスをデータの流れに着目して明示化したもの

「記号」
○：プロセス（処理）/データの加工や変換
□：データの源泉と吸収/データ発生元や最終目的地
→：データフロー/データの流れ
＝：データストア/データの保存場所

【E-R図】
□：実体（Entity）
→：関連（Relationship）

【UML】

「4パターン」
多重度
 0..1　　0か1
 1..1　　1のみ
 0..*　　0を含む多
 1..*　　0を含まな多

【ユーザインタフェース（ヒューマンインタフェース）】
システムとユーザ間のやり取りを仲介

【CUI（Character User Interface）】
コマンド入力により、命令を出す

「主なパーツ」
ウィンドウ：アプリケーションの基本領域
　　　　　　ここにパーツを配置して操作画面になる
メニューバー：操作項目が並ぶ
プルダウンメニュー：クリックすると選択肢が下に連なって並ぶ
ラジオボタン：選択肢から1つだけを選ばせる
チェックボックス：選択肢の複数選択や特定項目のON/OFF
テキストボックス：文字入力欄

【GUI（Graphical User Interface）】　※ポピュラー
アイコンやボタンをマウス操作することにより、命令を出す

[コード設計]
効率的にデータを管理するための手段

【チェックディジット】
誤入力を判定するためにコードへ付加された数字

「チェック方法」
ニューメリックチェック：数値データに文字が入力されていないか
シーケンスチェック：対象データが一定順序で並んでいるか
リミットチェック：対象データが適切な範囲内にあるか
フォーマットチェック：対象データの形式　　　　　　　　　　　　　　　　　　　　　　　
照合チェック：入力されたコードが登録されているか
論理チェック：対象データに対して対となる項目に矛盾がないか
重複チェック：複数個登録されていないか　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　

[モジュール分割技法]

【プログラムの構造化設計】
各プログラムをモジュール（：単位）で分解、階層化する
＋作業の分担化
＋機能の再利用
＋修正の容易さ

「データの流れに着目」
❶STS分割法：プログラムを入力処理（Source）、変換処理（Transform）、出力処理（Sink）3つ分割
❷トランザクション分割法：プログラムを一連の処理単位で分割
❸共通機能分割法：プログラム内の共通機能をモジュール単位で分割　　　　　　　　　　　　

「データの構造に着目」
⑴ジャクソン法
⑵ワーニエ法

【モジュール強度】
どれだけ機能的に特化できているのか
高いほどモジュールの独立性が高くて好ましい

【モジュール結合度】
どんなデータのやり取りによって、他モジュールと結合するか
弱いほど、モジュールの独立性が高くて好ましい

データ結合：最弱、必要なデータ項目だけを引数として渡す　
内容結合：最強、1つのモジュールで多くの機能を実現する

「データの種類」
①単一
②データ構造（：複数データを一括りにしたもの）

「渡す手段」
①引数（：モジュールからモジュールへ）
②大域的データ（:共通領域を用いて）　　　

[テスト]
バグの洗い出しと改修

【単体テスト】
各モジュールでテストを行い、バグがないかを検証

　【ブラックボックステスト】
　　モジュールの内部構造は気にせず、入力に対する正しい出力結果かを検証

　　「ルール」
　　
　　【同値分割】
　　　データ範囲を種類毎にグループ分け、その中から代表値を抽出してテストデータに用いる

　　【限界値（境界値）分析】
　　　境目部分を重要視、境界前後値をテストデータに用いる

　【ホワイトボックステスト】
　　モジュールの内部構造が正しく構築されているかを検証

　　「網羅基準」
　　
　　【命令網羅】
　　　命令すべて1度は通すようにする

　　【判定条件網羅（分岐網羅）】
　　　分岐すべてを1度は通すようにする

　　【条件網羅】
　　　各条件が真偽値を1度は満たすようにする

　　【複数条件網羅】
　　　複数条件がありうる真偽値すべての組み合わせを網羅する　

【結合テスト】
複数モジュールを繋ぎ合わせて検証を行い、モジュール間のインタフェースにが正常かを検証

　【トップダウンテスト】
　　上位モジュールからテストを済ませていく　　
　　スタブ（：仮モジュールから呼び出される）を用いる

　【ボトムアップテスト】
　　下位モジュールからテストを済ませていく
　　ドライバ（：仮モジュールを呼び出す）を用いる

　「その他」
　折衷テスト（：トップダウンとボトムアップの組み合わせ）、ビックバンテスト（：モジュールすべてを一気に繋げる）

【システムテスト（総合テスト）】
システム全体の検証
例えば性能テスト（：処理能力は十分か）、機能テスト（要求された通りに動くか）、負荷テスト（負荷をかけても問題ないか）　

【リグレッションテスト（退行テスト）】
プログラムのバグ修正の際に、これまで正常動作をしていた範囲に新たなバグを誘発していないかを確認

【バグ管理図】
横軸でテスト項目の消化件数や時間、縦軸でバグの累積件数

　【信頼度成長曲線】
　　きちんとテストが行われて品質向上がされていれば、縦横軸ともに高い形状の線が出来上がる


[プロジェクトマネジメント]
【PMBOK（Project Management Body of Knowledge）】
マネジメント技法をまとめた国際的標準ルール

「10個の知識エリア」
①コストマネジメント：予算管理
②資源マネジメント：要員確保
③品質マネジメント：適合チェック
④リスクマネジメント：潜在リスクの識別管理
⑤スコープマネジメント：作業範囲の明確化
⑥スケジュールマネジメント：作業スケジュール管理
⑦コミュニケーションマネジメント：情報伝達・共有
⑧ステークホルダーマネジメント：利害関係者の特定・利害調整
⑨統合マネジメント：作業プロセス調整
⑩調達マネジメント：外部への発注対応・実施

　【WBS（Work Breakdown Structure）】
　　プロジェクトに必要な作業や成果物を階層化した図
　　スコープマネジメント

「見積り手法」
【プログラムステップ法】
ソースコードの行数により、開発コストを算出

【ファンクションポイント法】
機能の個数や難易度から開発コストを算出

「スケジュール管理」
【ガントチャート】
横軸に時系列、縦軸に作業計画

【アローダイアグラム】
作業の流れと日数を図にしたもの

「記号」
丸数字：結合点（：作業の終始を表す）
　　　　1つの結合点から開始できる作業は1つだけ
　　　　数字は優先順

矢印：上に作業名、下に作業日数

点線矢印：ダミー作業
　　　　　2つ以上の作業がある際に、新たな結合点を導き出す


「全体日数の見方」
①各作業に必要な作業日数を順に加算
②複数作業が並行する際は、より多く作業日数がかかる方を選択

　【最早結合点時刻】
　　対象の結合点で最も早く作業開始ができる日時

　【最遅結合点時刻】
　　対象の結合点がギリギリまで作業開始を伸ばせる日時

　【クリティカルパス】
　　作業が遅れた場合に全体スケジュールに影響を及ぼす要注意な経路
　　全体日数を表す最長ルートと同じ

「スケジュールの短縮手法」

【クラッシング】
資源の追加投入を行い、コストの増大を最小限に抑えながら
スケジュールの所要期間を短縮する

【ファストトラッキング】
アクティビティやフェーズを並行して遂行する
ー手戻りが発生する恐れがある

【ITサービスマネジメント】
顧客の要求を満たすITサービスを、効果的に提供すべく体系的に管理する手法

　【ITIL（Information Technology Infrastructure Library）】
　　イギリスがまとめたベストプラクティス（：成功事例）

　　【サービスサポート】
　　　ITサービスの日々の運用に関する情報をまとめたもの
　　　
　　　「1機能と5つの業務プロセス」
　　　　サービスデスク（ヘルプデスク）：サービスの提供者と利用者間の一元的窓口

　　　　　「組織構造」
　　　　　　1⃣ローカル・サービスデスク：ユーザの拠点内ないし物理的に近い場所
　　　　　　　　　　　　　　　　　　　＋現地で直接対応ができ、問題把握が容易

　　　　　　2⃣中央サービスデスク：1か所に窓口を集約
　　　　　　　　　　　　　　　　　＋コスト削減ができ、情報管理が容易

　　　　　　3⃣バーチャル・サービスデスク：通信技術により、1か所に集約しているように見せる
　　　　　　　　　　　　　　　　　　　　　＋柔軟な対応

　　　　　「その他」
　　　　　　フォロー・ザ・サン：時差地域
　　　　　　　　　　　　　　　　＋24時間対応
　　　　　
　　　　①インシデント管理：サービス運用の回復
　　　　②問題管理：抜本的な解決策を検討
　　　　③構成管理：随時新しいものに更新
　　　　④変更管理：適切な監視下で必要な変更を行う
　　　　⑤リリース管理：適切な時期に適切な場所へリリースする

　　【サービスデリバリ】
　　　長期的にITサービスの計画と改善を図る

　　　「5つの業務プロセス」
　　　❶SLM
　　　❷キャパシティ管理：将来想定される需要に対して、備える
　　　❸可用性管理：使いたい時に使える、当たり前の確保
　　　❹ITサービス継続性管理：災害時でも最小時間でサービス復旧
　　　❺ITサービス財務管理：費用対効果を確認

【SLA（Service Level Agreement）】
サービスの提供者と利用者間で、サービスに関して事前に取り決めて明文化したサービスレベル合意書

【SLM（Service Level Management）】
サービス水準の維持・向上に努める活動

【ファシリティマネジメント】
設備や施設を適切に管理・改善する取り組み

　【UPS（Uninterruptible Power Supply：無停電電源装置）】
　　接続機器に対して、一定時間電力を供給する

[システム監査]

【ITガバナンス】
ITシステムを適切に管理・運用するための体制や方法

【システム監査】
ITガバナンスが正しく機能しているかを確認

　「手順」
　　1⃣監査計画の立案：監査目的・監査対象・実施時期等を明確化
　　2⃣予備調査：事前の実態調査を行い、適切なコントロールがなされているかを確認、監査手続書を作成
　　3⃣本調査：監査証拠を収集、監査調書を作成
　　4⃣評価・結論：コントロールの妥当性を評価、監査報告書を作成

　【可監査性】
　　処理の正当性や内部統制の
　　監査や評価が行えるシステム設計・運用であること
　
　【監査証跡】
　　システムにおける事象発生から最終結果に至るまでの一連の流れを、時系列に沿った形で追跡できる仕組みや記録

　【監査証拠】
　　自らの監査意見を立証するための必要な事実

　　【保証意見】
　　　基準に適していることを保証する

　　【助言意見】
　　　欠陥の指摘と改善点の表明

　【システム監査人】
　　「求められる要素」
　　①外観上の独立性：客観的な実施を行うために、監査対象から独立していなければならない
　　②職業倫理と誠実性
　　③精神上の独立性：公正かつ客観的に監査判断を行わなければならない
　　④専内能力：専門的な知識と技能を保持しなければならない

　　【フォローアップ】
　　　システム監査人が行う改善指導
　　
　　　※独立した存在であるため、直接業務を変更する権限はない
　　　監査報告を受けて、監査の依頼組織もしくは被監査部門が行う


[プログラムの作り方]

【プログラミング言語】
コンピュータに作業指示を伝えるための言葉

　「代表例」
　　C言語：OSやアプリケーション等、広範囲で用いられる
　　　　　 ＋柔軟性に優れる

　　BASIC：初心者向けとして使われている
　　　　　 インタプリタ方式
　　
　　COBOL：事務処理用として使われていた
　　　　　 現在は新規開発での使用はない

　　Java：Webサイトや大規模システムで使われる
　　　　　ガーベジコレクション機能（：参照されなくなったオブジェクトのメモリ領域を主記憶装置上から開放）を持つ（メモリ管理のため）
　　　　　＋特定機種に依存しない（Java仮想マシンにより）

　「翻訳手法」
　　①【インタプリタ】
　　　　ソースコードに書かれた命令を1つずつ機械語に翻訳しながら実行
　　　　＋動作確認をしながら作成ができる
　　　　ー実行速度が遅い
　　
　　②【コンパイラ】
　　　　ソースコードの内容を最初にすべて翻訳して、一気に実行
　　　　＋効率よく実行まで行える
　　　　ー作成途中で動作確認ができない

　　　　※コンパイル：コンパイラによる翻訳作業
　
　　　　「実行手順」
　　　　　【リンカ】
　　　　　　連係編集プログラム
　　　　　　
　　　　　　※リンク：モジュールを繋ぎ合わせること
　　　　　　※静的リンキング：あらかじめリンクさせておく手法
　　　　　　※動的リンキング：プログラム実行時に共有ライブラリやシステムライブラリをロードしてリンクさせる手法

　　　　　【ローダ】
　　　　　　ロードプログラム
　　　　　　
　　　　　　※ロード：ロードモジュールを主記憶装置に読み込ませる作業

【構造化プログラミング】
プログラムを機能単位の部品に分けて、その組み合わせによって全体を形作る考え方

　「制御構造3つルール」
　　1⃣順次構造：上から順に処理を実行
　　2⃣選択構造：条件によって分岐、いずれかの処理を実行
　　3⃣繰り返し構造：ある条件が満たされるまで、一定処理を繰り返す

【アルゴリズム】
どのように処理させるかの処理手順

【フローチャート（流れ図）】
アルゴリズムをわかりやすく記述するためのもの

楕円形：処理の終始
□：処理内容
矢印：処理の流れ
◇：判定処理
台形みたいなやつ：繰り返し処理の開始
上記の逆さま：繰り返し処理の終了

「データの持ち方」
【データ構造】
　データを配置する方法
　アルゴリズムの善し悪しは、プログラムの特性に適したデータ構造がなされているか否かに大きく左右される

　❶【配列】
　　メモリ上の連続した領域で、並べて管理
　　個々のデータはすべて同じサイズのため、添字（：配列内の何番目の箱かを指定する番号）を用いる
　　＋各データに直接アクセスができる
　　ーデータの挿入や削除が不得手

------------------------------------------------
わからなかった用語 

 

【CPUのスペック計算】 

1GHzは10の9乗/秒のクロック発生 

実行力は平均0.8クロック1/命令 

1秒あたりの実行回数は、10の9乗÷0.8クロック＝125,000万回 

 

【管理図】 

工程の状態、品質を時系列に表した図 

工程が安定した状態にあるかどうか判断 

 

【静止画像データの圧縮方式】 

◆可逆符号化（＝ロスレス圧縮）：圧縮前の画像復元が可能 

　　　　　　　　　　　　　　　　圧縮率は低い 

◆不可逆符号化：圧縮前の画像復元が不可能　 

　　　　　　　　圧縮率の高さから、場面に応じた圧縮ができる 

 

【インデックス】 

データの格納位置への効率的なアクセスが可能となり、検索速度の向上が期待できる 

 

 

【スタック】 

関数や手続の呼び出し時に戻り番地や処理途中のデータを一時保存するのに適したデータ構造 

 

【実体関連アーキテクチャ】 

データ体系を策定する場合の成果物 

 

【文書の内容を秘匿して送受信する場合の公開鍵暗号方式における鍵と暗号化アルゴリズムの取扱い】 

暗号化鍵と暗号化アルゴリズムは公開、復号鍵が非公開 

 

【文字符号】 

ASCⅡ符号：アルファベット、数字、特殊文字、制御文字から成る、漢字規定なし 

 

【動的リンキング】 

プログラム実行時に行うモジュール結合の方式 

 

【ストライピング】 

データを細分化、複数台の磁気ディスクに格納すること 

 

【ICタグ（RFID）】 

汚れに強く、記録された情報を梱包外から解読できる 

 

【CAPTCHA】 

人間以外による自動入力を排除する技術 

 

【情報漏洩対策】 

ランダムなビット列で、磁気ディスクの全領域を複数回上書きする 

 

【BI(Business Intellogence)】 

業績の評価や経営戦略の策定のため、業務システム等に蓄積された膨大なデータを分析 

 

【フォールトトレラントシステム】 

システムを1台のコンピュータではなく、複数台のコンピュータで多重化 

システムが部分的に故障しても、システム全体として必要な機能を維持できる 

 

【マルチコアプロセッサ】 

消費電力を抑えながら、プロセッサ全体の処理性能を高められる 

 

【HEMS】 

複数の家電製品をネットワークに接続、電力の可視化および電力消費の最適制御 

 

【BPR】 

顧客視点から業務プロセスの再設計、情報技術を用いて企業の体質や構造を抜本的に変革すること 

 

【依存関係】 

FF関係（Finish-to-Finish） 

FS関係（Finish-to-Start） 

SF関係（Start-to-Finish） 

SS関係（Start-to-Start） 

 

【ライセンス違反】 

OSSの入手、改変、販売すべてを自社で行なっていること 

 

【CIO（Cheif Information Officer）】 

経営戦略に沿った情報戦略やIT投資計画に関する責任を持つ役職である最高情報責任者 

CEO（最高経営責任者）とCOO（最高執行責任者）の補佐役 

ビジネス価値を最大化するためのITサービス活用の促進 
 

【メッセージダイジェスト】 

メッセージの改ざんがないかを確認 

 

【E-R図】 

対象とする世界を実体と関連の2つの概念で表現する図 

 

【ロングテール】 

インターネットショッピングにおける売り上げ全体の対して、売れない商品の売り上げがその中で無視できない割合になっていることを指すもの 

 

【ドロップシッピング】 

在庫を持たず、注文に応じてメーカーや卸売業者から直送させる運営方法 

 

【アフェリエイト】 

企業広告を個人ないし企業所有のHPに掲載することで、そのリンクから売り上げに繋がった場合に、HPの主に報酬を支払う仕組み 

 

【オプトイン】 

ユーザーが広告メールの受け取り承諾をすること 

 

 

【スループット】 

システムで単位時間あたりに処理される仕事量 

 

★「スプーリング（：CPUに即時処理をさせるための予備動作）」はスループットを向上させる 

 

【運用テスト】 

完成したシステムのテスト、不具合が発生しないかの検証するためのテスト 

ユーザ部門が主導 

 

【ROE（；Return on Equity=自己資本利益率）】 

ある企業が1年間の企業活動を通じて、株主の投資額に比してどれだけ効率的に利益を獲得したか、を測るための指標」 

 
【アクチェーター】 
入力された電気信号を力学的な運動に変換する駆動機構 

機器の中で実際に物理的な動作する部分 

【DHCP】
LANに接続されたPCに対して，そのIPアドレスをPCの起動時などに自動設定するために用いるプロトコル

j【伝送速度】
1Mバイト＝8ビット

【パンくずリスト】
利用者が現在閲覧しているWebページに表示する，Webサイトのトップページからそのページまでの経路情報
 
【フェールセーフ】
システムを構成している機器が故障したときは，システムが安全に停止するようにして，被害を最小限に抑える

～平成27年春期～

・IPv6アドレスは128ビット
・ダミー作業は作業日数0日として考える
・運用テストは「決められた業務手順通りに、システムが稼働するか」の確認
・2分探索法のオーダ式は「log n」

【eマーケットプレイス】
　　Webサイトを通じた中間流通業者を介さない売り手買い手による直接取引

【ディジタル署名】
　　「発信者の正当性」「改ざんの有無」を確認

・ハッシュはディジタル署名や完全性検査に利用される処理法

【ストアドプロシージャ】
　　データベースに対する一連の処理をまとめた手続きにして、データベース管理システムに保存したもの
　　クライアント－サーバ間のネットワーク負荷の軽減が期待できる

【AES(Advanced Encryption Standard)】
　アメリカ合衆国の次世代暗号方式として規格化された共通鍵暗号方式
　暗号化と復号に同じ鍵を使用

【スプーリング】
　プリンタ等の低速な入出力装置に対するデータの転送を磁気ディスク装置などを介して実行する機能

【スラッシング】
　ページング処理の多発やシステムのオーバーヘッドの増加によるアプリケーションのCPU使用率が極端に下がる現象

【ワークシェアリング】
　従業員1人当たりの勤務時間を減らして社会全体の雇用維持や雇用機会増加を図る仕組み

【CGM(Consumer Generated Media)】
　インターネットを利用した消費者やユーザがその内容を生成する形態のメディア
　例）ブログ、SNS、口コミサイト、Q&Aコミュニティ、写真共有サイト、動画共有サイト等

【企画プロセス】
　経営事業の目的、目標を達成するために必要なシステムに関係する要求事項の集合とシステム化の方針、及びシステムを実現するための実施計画を得ること

【JavaBeans】
　プログラムの再利用を目的としてJava言語で記述されたソフトウェア部品

【インシデント及びサービス要求管理】
　手順の最初は「記録」

・日本産業標準調査会(Japanese Industrial Standards Committee：JISC)は、産業標準化法に基づいて設置され、日本産業規格(JIS)の制定・改正・確認・廃止に関する審議などを行う機関

【システムの稼働率】
　1－(1－R)n

【キーロガー(Keylogger)】
PCへのキーボードやマウス入力を逐一監視し、それを記録するソフトウェアまたはハードウェア

・平均回転待ち時間は、ディスクが1回転に要する時間の1／2
　「平均位置決め時間＋平均回転待ち時間」

【MTBF(Mean Time Between Failure)】
　システムが修理され正常に稼働し始めてから、次回故障するまでの平均故障間隔

【MTTR(Mean Time To Repair)】
　システムの故障を修理するために要した平均修復時間
　
　稼働率＝MTBF／(MTBF＋MTTR)
　予防保守によって，システムのMTBFは長くなる　※定例文

【LRU(Least Recently Used)方式】
　ページアウト要求があった際に管理している中で「最後に参照された時刻が最も昔であるページ」を置換え対象とするアルゴリズム

【TCO(Total Cost of Ownership)】
　ある設備・システムなどにかかわる、購入から廃棄までに必要な時間と支出を総計した金額

【IPv4アドレス】
　[クラスA]
　　10.0.0.0 ～ 10.255.255.255 (10.0.0.0/8)

　[クラスB]
　　172.16.0.0 ～ 172.31.255.255 (172.16.0.0/12)

　[クラスC]
　　192.168.0.0 ～ 192.168.255.255 (192.168.0.0/16)

　[上記範囲外]
　　グローバルアドレスに割り当てられる

　※ローカル・ループバック・アドレス
　　先頭のバイトが「127」、自身のマシンを指す特別なアドレス

【MIME(Multipurpose Internet Mail Extension)】
　ASCII文字しか使用できないSMTPを利用したメール
　日本語の2バイトコードや画像データを送信するための仕組み

【S/MIME(Secure MIME)】
　MIMEに暗号化とディジタル署名の機能を付け電子メールの機密性と完全性を高めたもの

【再入可能(リエントラント)プログラム】
　複数タスクからの同時呼び出しに対して、それぞれに正確な値を返すことできるプログラム構造

【テクスチャマッピング（Texture Mapping）】
　多数のポリゴン(多角形)の組合せで構成させる3DCG表面に壁紙のようなものを貼り付け、擬似的な凹凸や表面模様などを付加することで質感の向上をもたらす技法

・1バイト＝8ビット

【3層スキーマ構造(ANSI/SPARCモデル)】
　3つのグループに分けてデータ定義を行うデータベースモデル

　◆概念スキーマ
　　データベース化対象の業務とデータの内容を論理的な構造として表現したもの。
　　例）テーブルの正規化やCREATE TABLEによる表定義

　◆外部スキーマ
　　データの利用者からの見方を表現したもの。
　　例）SQLのビュー
　
　◆内部スキーマ
　　データを記憶装置上にどのような形式で格納するかを表現したもの。
　　例）ファイル編成やインデックスの設定
　
　【スキーマ】
　　データベースの論理的・物理的なデータ構造が変更されたときの影響をユーザやアプリケーションに与えないようにする＝プログラムからの独立性を保証する

#～分からなかった用語～

【リピータ】
物理層に接続して、データの伝送可能距離を延長させる装置

【ゲートウェイ】
トランスポート層に接続して、プロトコルの異なるネットワーク同士を接続させる装置

【ルータ】
ネットワーク層に接続して、パケットを最適な経路に中継させる装置

【ブリッジ】
データリンク層に接続して、認識したパケットのMACアドレスから中継するかを判断する装置

【キャッシュメモリ】
CPUと主記憶の速度差を埋めるための装置

【ディスクキャッシュ】
主記憶と補助記憶の速度差を埋めるための装置

【トップダウンテスト】
上位モジュールから下位モジュールの順に結合テストを行う
　
　【スタブ】
　未完成の下位モジュールの代用　

【ボトムアップテスト】
下位モジュールから上位モジュールの順に結合テストを行う
　
　【ドライバ】
　未完成の上位モジュールの代用

【メモリリーク】
コンピュータの動作中に使用可能な主記憶容量が減少していく状態
OSやアプリケーションのバグ等で発生

【オーバーレイ方式】
実行時のプログラム領域に制限がある場合、必要なモジュールを主記憶に取り込むこと

【スラッシング】
主記憶装置の容量不足により、処理時間がページングに費やされることで、スループットの極端な低下を招くこと

【フラグメンテーション】
領域が不連続で散在しているため、大きなプログラムをロードするための領域が確保できないこと　

【トランザクションの原子性】
処理すべてが実行されるか、まったく実行されないかのどちらかの状態で終了しなければならない
正常に終了しなかった場合、トランザクション開始直前の状態にロールバックされる

【特性要因図】
特性（結果）と要因（原因）の関係を体系的に表したもの
形からフィッシュボーンダイアグラムとも呼ばれる

【アサーション】
プログラム実行中に使用されている変数間で論理的に成立する条件

　【アサーションチェック】
　プログラムの正当性を検証する

【コード追跡】
プログラム実行後のメモリやレジスタの内容を逐一確認する

【テストカバレッジ分析】
テストの網羅率を測定・分析する
プログラム品質を定量的に把握するため

【スナップショットダンプ】
プログラムの特定の命令実行されるたびに、メモリやレジスタの内容を出力するテスト支援ツール

【EDI（Electronic Data Interchange）】
異なる組織の端末間で、通信回線を介して取引メッセージやデータを交換する仕組み

【EOB（Electronic Oredering Book）】
データエントリ端末に入力・本部や仕入れ先に送信することで、発注を行うシステム

【MHS（Message Handing System）】
電子メールを定めた標準規格

【VAN（Value Added Network）】
付加価値を加えた通信サービス　※データの蓄積やフォーマットの変換等

【アカウンタビリティ】
株主や利害関係者に対して、経営活動の内容や実績の説明責任

【コンプライアンス経営】
企業倫理に基づくルール・マニュアル・チェックシステム等の整備して、法令遵守に則る経営を行う

【ディスクロージャ】
投資家やアナリストに対して、投資判断に不可欠の正確な情報を適時提供する

【環境報告書】
企業の環境保全に向けた費用と効果を定量化・財務情報として定期的に公表

【汎化】
下位クラスに共通する特性を抜き出した上位クラスの定義または下位クラスとの関係

【パケットフィルタリング】
パケット通過の可否を判断
→パケットのヘッダ情報内のIPアドレス・ポート番号から

【アブレット】
クライアントのWebブラウザ上で動作するコンパイル済プログラム
利用者が知らない間にダウンロード・実行される特徴を持つ

【スレッド】
タスクの細分化したCPUの処理単位

【サーブレット】
サーバ上でデータ処理やWebページの動的生成等を行うプログラム

【スクリプト】
処理手順をテキストで記述する簡易的なプログラム全般を指す言葉

【関係データベース】
データ構造を2次元表によって定義
最も利用されているデータベースモデル

【パケットフィルタリング】
許可したパケットのみをネットワーク内外に通過させるセキュリティ機能
→パケットのヘッダにある送信元/宛先IPアドレスや送信元/宛先ポート番号や通信方向等の情報をもとに

【キャパシティ管理】
システムに必要なリソースを管理

【構成管理】
構成情報の提供
→IT資産すべての明確化

【サービスレベル管理】
SLAの締結と維持管理

【変更管理】
変更の決定や変更スケジュールの作成

【インスペクション】　※スタンダード
モデレータが全体コーディネートを行い、チェックリストを用いたコメントによる正式な記録を残すレビュー技法

【バスアラウンド】
レビュー対象の成果物をレビュアに配布して、コメントさせるレビュー技法

【ウォークスルー】
レビュー対象の成果物を作成者が説明して、参加者に質問やコメントさせるレビュー技法

【ラウンドロビン】
参加者が順番に司会者とレビュアになるレビュー技法

【CGM（Consumer Generated Media）】
インターネットを利用した消費者やユーザが内容を生成するメディア
例）ブログ・SNS・口コミサイト・写真動画共有サイト

【減価償却】
固定資産の取得に要した費用を、耐用年数に分割して費用化する手続き

【定額法】
毎年一定額を計上する方法
（取得価格ー残存価額）/耐用年数

【バランススコアカード】
財務・顧客・内部ビジネスプロセス・学習と成長から業績を評価、分析する手法

【オブジェクト指向】
システム構成をオブジェクト同士のやり取り関係としてとらえる考え方
基本概念として、抽象化・具体化・カプセル化・継承・クラス・多様性

【スケールアウト】
サーバ全体の処理能力や可用性の向上
同等の性能アップであれば、スケールアップより低コスト

【スケールアップ】
サーバ1つあたりの処理能力の向上
並列実行による負荷分散が困難なシステムに適す

【インシデント管理】
サービスの中断時間を最小限に抑えて速やかな回復を目指すプロセス

【ライトスルー方式】
キャッシュメモリと同時に主記憶にも書き込む
データの整合性＋
処理速度ー

【ライトパック方式】
キャッシュメモリのみに書き込み
処理速度の速さ＋
データの一貫性ー

◆音声データのデジタル化
【標本化】
音の信号を一定周期でアナログ値のまま切り出す処理
↓
【量子化】
アナログ値を整数値に近似する処理
↓
【符号化】
数値を2進数に変換する処理

【RAID1】
同じデータを2台の補助記憶装置に記録して信頼性を高める構成（ミラーリングとも）

【ゴンペルツ曲線】
バグ件数とテスト消化件数の関係から、品質が安定しているS字曲線

【可用性】
必要時に合意済機能を実行できる能力

【外部設計】
システム機能を確定する作業工程

【内部設計】
外部設計を組み込むための詳細設計の作成工程

【ソートマージ結合法】
整列した値を先頭から順に結合していく手法

【入れ子ループ法（ネストループ法）】
片方列の値を順に読み出し、もう一方と結合

【SMTP-AUTH】
ユーザ認証機能を追加したSMTP
送信側メールサーバで送信者を認証、認証ユーザ以外からの不正送信要求を遮断できる

【APOP】
メール受信時における平文の認証情報の漏洩を防止

【S/MIME】
改ざん検出や暗号化機能を電子メールソフトに提供

【POP3S】
TLSの通信路上でメールソフトからメールサーバー間のPOP通信を行うプロトコル

【2分探索法】
探索対象の集合が値の昇順（降順）に整列に対して有効なアルゴリズム

【サイバーセキュリティ経営ガイドライン】
サイバー攻撃から企業を守るために必要な項目をまとめたもの
例）自社のサプライチェーンのビジネスパートナーが行うセキュリティ対策
　　　ステークホルダーとの適切なコミュニケーション

【ファシリデータ】
中立的な立場から議事の進行をコーディネートする役割

【宛先IPアドレス】
ルータがパケット経路の決定に用いる情報

【トレンドチャート】
進捗と消費を関連付けた折れ線グラフ

【責任分担表】
作業に対しての関わり具合と責任をマトリックス状にしたもの

【ガントチャート】
計画と実績を対比させた帯状のもの

【アローダイアグラム、プレシデンスダイアグラム】
作業順序や相互関係をネットワーク状にしたもの

【USB3.0】
スーパースピード（:5Gpsの転送モード）搭載のシリアルインターフェイス

【USB3.1】
スーパースピードプラス（:10Gpsの転送モード）にパワーアップ

【ゲートウェイ】
OSI基本参照モデルのトランスポート層以上の異なるLANシステム相互間でプロトコル変換を行う機器

【ブリッジ】
データリンク層で通過パケットのMACアドレスから適切な送出ポートを判断する装置

【リピータ】
物理層でデータの伝送可能距離を延長するLAN間接続装置

【ルータ】
ネットワーク層で通過パケットのIPアドレスから最適経路に中継する通信装置

【DNSキャッシュポイズニング】
DNSサーバに偽キャッシュ情報を登録、汚染されたDNS利用者を別サイトに誘導させる攻撃手法

【パケットフィルタリング】
パケットのヘッダ情報内のIPアドレスおよびポート番号を基準にパケット通過の可否を行う

【ポート番号】
通信時に宛先のプログラムを特定するための番号
HTTP:TCP/80、FTP:20,21/TCP、SMTP:25/TCP

【回転速度】
1Mビット/秒 = 125kバイト/秒

【要件定義】
利害関係者要求の明確化と制約事項の定義に関わる作業を実施するプロセス

【NAPT（IPマスカレード）】
NAT（プライベートIPアドレスとグローバルIPアドレスを相互変換）にポート番号を組み込んだ技術
IPアドレスに加えて、ポート番号も一緒に変換
→1つのグローバルIPアドレスでプライベートネットワーク内の複数ノードが同時接続可能

【DHCP】
TCP/IPで、ネットワークに接続するノードへのIPアドレスの割り当てを自動的に行うプロトコル

【PPPoE】
PPPプロトコルをEthernet上で利用するためのプロトコル

【パケットフィルタリング】
通過パケットのヘッダ情報を検査、許可パケットのみをネットワーク内外へ通過させる機能
ファイアウォールやルータに整備

【IPv4におけるIPアドレスクラス】
Aクラス：0～127
Bクラス：128～191
Cクラス：192～223
Dクラス：224～239

【キャッシュフロー計算書】
営業活動：商品販売による収入、仕入や管理による支出
投資活動：固定資産の取得、売却、有価証券の取得売却
財務活動：株式や社債の発行、自己株式の取得、社債の償還および借入金の返済、支払利息

【RSA】
公開鍵暗号方式の暗号アルゴリズム

【KCipher-2】
共同開発（九州大学とKDDI研究所）された共通鍵暗号方式

【AES】
アメリカの次世代暗号方式

【SHA-256】
入力データから256ビットのハッシュ値を入力するハッシュ関数

【エンタープライズアーキテクチャ】
業務およびシステムのモデル化、改善を目的とした設計・管理手法

【2組コミット】
コミットを2段階に分けることで、トランザクションの原子性・一貫性を保証する仕組み

　第1フェーズ：他サイトに更新可能かの確認を行う
　第2フェーズ：全サイトからの合意次第で更新を確定する

【ロールフォワード】
更新後ログを用いて、今までの処理済トランザクションを再現
システム障害直前までデータベース情報を復帰させる処理

【ロールバック】
更新後ログを用いて、データベースをトランザクション開始直前の状態に戻す処理

【排他制御】
1つのタスクがトランザクション実行中の場合は、その処理が終わるまで他タスクからのトランザクション要求を待機させる方法

【ひずみゲージ】
物体のひずみを測定するセンサ

【ジャイロ】
角速度を検出するセンサ

【サーミスタ】
温度測定に使用される電子部品

【ホール素子】
磁界の検出に使用される素子

【タイムスタンプサービス】
時刻情報を含んだ電子データ
→付与時点での存在性とその時刻以降の完全性を証明できる情報

【NTP】
日時情報の改ざんを防ぐ通知サービス

【分解能】
器械装置がアナログ信号をどの程度細かく表現できるかの性能を表すもの

【データマイニング】
大量のデータから新たな傾向・パターンを見つけ出すプロセス

【データウェアハウス】
効果的な戦略的意思決定を支援するための過去から現在までのさまざまなデータベースを統合したデータベース

【データディクショナリ】
データに関する情報定義を保存するための辞書

【メタデータ】
本来のデータに付随する情報
例）テーブル名やフィールド属性（データベースに対しての）

【不正競争防止法】
不正競争の定義や罰則についての法律
→事業者間の公正な競争および国際約束の的確な実施を確保するため

【プロトタイピング】
提供予定のソフトウェアの試作品を早期作成して、利用者からのフィードバックを得る

【ページング方式】
仮想記憶空間と実記憶空間を固定長で区切り、対応付けて管理する方式

【ブロック化】
補助記憶装置に、複数レコードをまとめて読み書きする方式

【メモリインタリーブ】
主記憶装置を同時並行で読み書き可能な複数領域に分ける方式

【稼働率R】
直列：R2乗
並列：1-(1-R)2乗

【ベンチマークテスト】
使用目的に沿ったプログラムを用いて処理性能を測定する性能評価手法
例）SPECやTPC

【著作権の保護対象】
プログラム、OS

【OpenFlow】
既存のネットワーク機器が持つ制御処理と転送処理を分離したアーキテクチャ
従来と比べて、設定範囲以上の柔軟な制御機能の実現が可能

【SDN】
OpenFlow上でソフトウェア制御による動的で柔軟なネットワークを作り上げる技術全般

【UML】
業績分析と可視化ソフトウェアの技術
→業務プロセスの問題点の発見・改善のため

【CDN】
ネットワーク上のサーバ最適配置手法

【EPCglobalネットワークアーキテクチャ】
物流ネットワークの最適化するためのソフトウェアアーキテクチャ

【判定条件網羅】
「プログラム中の判定条件で結果が真となる場合、偽となる場合を少なくとも1回は実行する」アプローチ

【ポートスキャナ】
サービスの稼働状態を外部から調査するツール
例）Nmap
その行為を【ポートスキャン】と呼ぶ

【株主資本等変動計算書】
株主資本を示す純資産がどのように変動したかを表す財務諸表

【キャッシュフロー計算書】
収入・支出を活動（営業・投資・財務）ごとに区分して表す財務諸表

【損益計算書】
収益と費用を明らかにした経営成績を表す財務諸表

【サブネットマスク】
IPアドレスをネットワークアドレスとホストアドレスに分割した32ビット列（IPv4）
あるIPアドレスがどのネットワークに属しているかは、IPアドレスとサブネットマスクをAND演算することで求められる

【スタック】
後入れ先出し（LIFO）のデータ構造
スタックに先に入れたデータは、後から入れたデータよりも前に取り出すことができない

【RAID】
複数台の磁気ディスクを組み合わせ、仮想的な1台の記憶装置として運用
全体的に高い性能を得る技術
0～5レベル段階があり、本来のデータとエラー訂正用データの書き込み方によって定義

【デュアルシステム】
同処理を2組のコンピュータシステムで行い、その結果を照合機でチェックしながら処理を進行していく信頼化設計の1つ
障害発生時には対象を切り離すだけ

【デュプレックスシステム】
待機系を主系に切り替えて処理を実行する

【NAT】
プライベートIPアドレスとグローバルIPアドレスを相互変換する機能

【ACID特性】
トランザクションに不可欠な4つの性質
　【Atomicity：原子性】
　　処理がすべて実行されるか、または実行されないかを保証する性質

　【Consistency：一貫性】
　　データの矛盾がなく、常時データベースの整合性が保たれていること

　【Isolation：独立性】
　　同時実行した場合と順番に実行した場合で結果が変わらないこと

　【Durability：永続性】
　　すでに終了した結果が障害等で失われないこと

【アクチュエータ】
コンピュータが出力した電気信号を力学的な運動に変化させる駆動機構

【DRAM】
コンデンサに蓄えた電荷の有無で情報を記憶するメモリ

　【SDRAM】
　　同期式のDRAM
　　現在PCの主記憶として一般的に使用

【C＆Cサーバ】
遠隔操作が可能なマルウェアに、情報収集および攻撃活動を指示する役割

【再帰呼出し】
関数の処理中に自身を呼び出すこと

【フィードバック制御】
出力結果と目標値を比較して、一致するよう制御を行う方式

【フィードフォワード制御】
外乱の影響が出力に現れる前に制御を行う方式　※外乱：制御する値に影響する外的な作用

【UML】
オブジェクト指向開発で用いられる標準表記法群
オブジェクト間の関連や動作・構成を表現する13種の図表

　【シーケンス図】
　　オブジェクト間のメッセージの流れを時系列で表す

【コンポーネント図】
インターフェースを介したコンポーネント同士の関係やコンポ―ネントの内容を表現する内容

【アクティビティ図】
システム等のフローを記述する図

【状態遷移図】
時間経過や状態変化に応じて、変化するシステムの振る舞い記述に適した図式化手法

【ページフォールト】
プログラム実行の際に必要なページが主記憶に存在していない場合に発生する割込み

【ビットシフト】
2進数

　　　　　　左シフト　　右シフト
1ビット　　　2倍　　　　1/2倍
2ビット　　　4倍　　　　1/4倍
3ビット　　　8倍　　　　1/8倍
4ビット　　 16倍       1/16倍
5ビット　　 32倍       1/32倍

【リスクアセスメント】
リスクの特定、リスク分析、リスク評価を行うプロセス

【ペネトレーションテスト】
侵入テスト
コンピュータやネットワークのセキュリティ上の脆弱性を測るために、実際に侵入を試みる手法

【リグレッションテスト】
進行テスト/回帰テスト
システム変更時にこれまで正常に動いていた機能に不具合や影響が出ていないかを検証する手法

【ウォークスルー】
エラーの早期発見を目的とした、プログラムのステップごとにシミュレーションを行いながら確認するレビュー手法

【ソフトウェアインスペクション】
ソフトウェアを動かさずに、仕様書やプログラムを目視で検証するレビュー手法

【RSA暗号】
桁数が大きい合成数の素因数分解が困難であることを安全性の根拠とした公開暗号鍵の1つ

【DH】
事前の秘密情報の共有なしに暗号化鍵の共有を安全に行える鍵交換方式

【DSA】
ディジタル署名方式の1つ

【AES】
アメリカ開発の共通暗号方式

【メモリリーク】
コンピュータ作動中に使用可能な主記憶容量が徐々に減少していく状態

【スラッシング】
主記憶容量の不足により、処理時間のほとんどがページングに費やされ、スループットの極端な低下を招くこと

【フラグメンテーション】
利用可能な空き容量があるにもかかわらず、主記憶内で不連続に散在しているため、
大きなプログラムをロードできないこと

【オーバーレイ方式】
実効プログラムの大きさに制限があるとき、必要になったモジュールを主記憶に取り込む手法

【モジュール結合度】
モジュール同士の関連性の強さを示す概念
　
　弱）データ結合→スタンプ結合→制御結合→外部結合→共通結合→内容結合　（強

【ディープラーニング】
深層学習
人工知能分野における要素技術の1つ
アルゴリズムに十分なデータを与えることで、自動的に特徴やパターンを学習させること

【サービスレベル管理】
顧客とサービス提供者間でSLAを締結
合意したサービスレベルを維持管理する一連の活動

【BI（Business Intelligence）】
組織のあらゆる情報を蓄積・加工・分析することで、経営における意思決定に役立てる手法

【BPM（Busines Process Management）】
企業内の業務の流れを可視化
業務改善サイクルの運用によって、継続的な業務改善を図る手法

【EAI（Enterprise Application Intergration）】
企業内の異なるシステム同士を連結
データやプロセスの統合によって、システム全体の効率化利用を図る手法

【BPR（Business Process Reengineering）】
企業内の慣行にとらわれず、業務プロセスを抜本的に再構築することでコスト・品質・サービスの改善を図る手法

【隠線消去・隠面消去】
ある視点から見た際に、物体の裏側や陰に位置する線および面を描画しない処理

【レイトレーシング】
半透明の表現技法

【シェーディング】
光源の位置と対象物体への光の当たり具合を解析
どのような色・明るさで見えるのかを決定する

【クリッピング】
生成された画像を表示画面に収まる部分だけ表示させる

【HEMS】
電力の可視化および電力消費の最適制御を行うシステム

【ビット/バイトの計算】
8ビット/kビット＝kバイト
1Mバイト＝1000kバイト

【MRP（Materials Requirements Planning）】
製品の資材所要量計画を基に、部品の手記数量を算出

【カンバン方式】
作業指示票を用いて作業指示、運搬指示を行う

【BTO（Build to Order）】
受注生産

【コンカレントエンジニアリング】
製品の開発・設計・生産準備を同時並行で行う

【稼働率】
MTBF/（MTBF + MTTR）= p
そして直列接続の稼働率はpの2乗

【サプライチェーンマネジメント】
購買・生産・販売・物流の業務を企業内・企業間で全体最適の視点から見直すことで、納期短縮や在庫削減を図る経営手法

【ナレッジマネジメント】
個人が持つノウハウや経験を組織全体で共有
創造的な仕事に繋げていく

【HRM（Human Resource Management）】
社員のスキルや行動特性を把握
人事戦略の観点から適切な人員配置・評価を行う

【CRM（Customs Relantionship Management）】
多様なチャネルを通じて収集された顧客情報の一元化
活用することによって、顧客との関係を密接にしていく

【Perl】
UNIXやWindows等多くのプラットフォーム上で動作するインタプリタ言語

【ストアドプロシージャ】
データベースに対する処理をひとまとめにして、データベース管理システムに保存したもの
クライアントサーバ間ネットワークの負荷軽減が期待できる

【SOA（Sarvice Oriented Architecture）】
従来ソフトウェアに実現されていた機能や部品を独立したサービスとして公開
組み合わせることでシステムを構築していく考え方
→システムの統合や再利用がしやすい

【ERP（Enterprise Resource Planning）】
基幹業務を総合的に管理するための業務システム
→企業の経営資源を有効活用によって、経営の効率向上を図るため

【SLA（Service Level Agreement）】
発注者とITアウトソーシングサービス提供者間で結ぶ、サービスの品質についての合意文書

【ボーリング制御】
CPUが各情報を一定時間ごとに収集
ソフトウェアの状態を判断・監視・処理を行う制御方式

【スイッチングハブ】
データリンク層で接続
ハードウェアで宛先制御を行う（高速に動作する）
受信パケットを宛先MACアドレスが存在するLANポートだけに転送する装置

【ブリッジ】
データリンク層で接続
ソフトウェアで宛先制御を行う

【MIPS】
1秒間に実行可能な命令数を100万単位で表したもの

【CSIRT】
企業や組織内に設置される情報セキュリティインシデントの対応チーム
組織内CSIRTはじめ、6種類に分類

【ハクティビスト】
目的達成のために情報技術を利用する宗教または政治団体

【IETF】
インターネットに関する技術文書の作成・検討を行う組織

【ICANN】
IPアドレスの割り当て・DNSルートサーバの運用監視・調整を行う組織

【参照制約】
FOREIGN KEY 列リスト REFERENCES 親テーブル(列リスト)

【CRC方式】
生成多項式を用いた誤り検査方式

【ワーム】
ネットワークを媒介に自ら感染源になるマルウェア

【トロイの木馬】
表向きは正常動作しているように見せかけ、秘密裏に悪意ある動作が仕組まれたマルウェア

【先入先出法】
先に仕入れたものから先に払い出す在庫商品の評価額