基本情報技術を初めて勉強してみた。

###ネットワーク
####LANとWAN
事業所など局地的な狭い範囲のネットワークを***LAN***という。
LAN同士をつなぐ広域ネットワークを***WAN***という。

####プロトコルとパケット
ネットワークを通じてコンピュータ同士のやり取りするための約束事を***プロトコル***という。
世界の標準のプロトコルはTCP/IPという。
通信データを小さく分割したひとかたまりを***パケット***という。
なぜ分割するかというと、流せるデータ量が決まっているから。

####ネットワークを構成する装置
ネットワークを構成するにはハブと言われる中継機がある。　
これを繋ぐことにとってたくさんのコンピュータと繋げることができる。
そのハブは種類がある。
・ゲートウェイ　プロトコルの差異を変換
・ルータ　IPアドレス情報を元にパケットを転送
・ブリッジ　MACアドレス情報を元にパケットを転送
・リピータ、LANケーブル、NIC　物理的に転送
が存在する。

####データの誤り制御
ノイズや歪みによって、***異なる値に化けてしまう***ことがある。
そのために誤りを訂正する手法がある。
・***パリティチェック***
・***水平垂直パリティチェック***
・***CRC(巡回冗長検査）***
がある。

####TCP/IPを使ったネットワーク
TCPとIPという２つのプロトコルの組み合わせがインターネットにおける***デファクトスタンダード***である。
デファクトスタンダードとは事実上の標準という意味。
こうしたインターネット技術を企業内LANなどに転用したネットワークを***イントラネット***という。
TCP/IPを構成するプロトコル
IP、TCP、UDP

####ネットワーク上のサービス
ブラウザを見たり、ダウンロード、アップロード、メール送受信、時刻のサービスはプロトコルごとに違う。
####WWW(World Wide Web)
WWWはインターネット上のドキュメント（文書、書類など）を表示、ドキュメント同士が繋がり、お互いに補完するという特徴がある。
このサービスはWebプラウザを使う。

####電子メール
メールアドレスを使ってメッセージをやり取りする。
メールアドレスは名前と住所で構成されている。
メールの宛先の種類
TO　宛先のメールアドレス
CC　第三者のメールアドレス（必要ない場合は書かなくてもよい）
BCC　他人に伏せてこっそり渡すメールアドレス

###セキュリティ
####ネットワークに潜む脅威
外部と繋がれているので様々な脅威が存在する。
・ネットワークに侵入
・データ・ファイルの破壊
・サーバの処理の能力をパンクさせる妨害
これらから守るために、***情報セキュリティ***が必要になる。
その要素としては
・***機密性***　漏洩しない
・***完全性***　書き換え不可
・***可用性***　必要な時に情報資産を使用できる

企業の情報セキュリティ姿勢を示すセキュリティポリシがある。
法律としては個人情報保護法がある

####ユーザ認証とアクセス管理
特定の人物しか利用できないようにするために***ユーザ認証***がある。
手法は
・ユーザID、パスワードによる認証
・バイオメトリクス認証　身体的特徴で識別
・ワンタイムパスワード　一度限りの有効の使い捨てのパスワードで識別
・コールバック　電話によるアクセス権の認証
ユーザ認証をパスし、利用可能状態となることを***ログイン***といい。
ログイン状態を打ち切ることを***ログアウト***と言う。

人の心理的不注意で盗み取られることを***ソーシャルエンジニアリング***と言う。
盗み見など。

####コンピュータウイルスの脅威
意図的に被害を及ぼす目的のプログラムを***ウィルス***と言う。
***自己伝染機能、潜伏機能、発病機能***の特徴を持つ。

それと対峙するために***ウィルス定義ファイル、ビヘイビア法***がある。

####ネットワークのセキュリティ対策
ウィルスを防ぐには壁を作る
・***ファイアウｫール*** LANの中と外を分ける
・***パケットフィルタリング***　ルールを作ってパケットに通過条件を設けた
・***アプリケーションゲートウェイ（プロキシサーバ）***　外部とのやりとりを代行する
・***ペネトレーションテスト***　セキュリティの脆弱性の有無を判断

####暗号化技術とディジタル署名
盗聴、改ざん、なりすまし　という危険がある。
対策として
・暗号化、復号　データの中身を第三者にはわからない形へ変換、その変換されたものを元に戻す
・（盗聴）共通鍵暗号方式　受け手と送り手だけに共通の鍵を用いる
・公開鍵暗号方式　一般に広く公開鍵をばらまくが、復号鍵は別
・ディジタル署名　途中で改竄されていないか、誰が送信したものを確認できる。

CA　認証局　第三者機関　なりすまし防止
　
がある。

###システム開発
####システムを開発する流れ
システム開発の発注を受け、開発できる。
システム開発の調達の流れ
***情報提供依頼、提案依頼書の制作と提出、提案書の受け取り、見積書の受け取り、システムベンダの選定***　がある。
開発の流れ
***基本計画、システム設計、プログラミング、テスト（仕様通りになっているかを検証）、導入・運用***　がある。
システムの役割が終わるまでの働き続けることを***ソフトウェアサイクル***と言う。

####システムの開発手法
・ウォーターフォールモデル　上記の開発の流れを順番に進める手法
・プロトタイピングモデル　開発初期の段階で試作品を作り、利用者に確認し、開発側との意識のずれを防ぐ手法
・スパイラルモデル　複数の開発過程を行う手法

開発工程の終了後振り返り作業を***レビュー***と言う。
統合CASEツールは上流、下流、保守の三段階になる。

####システムの様々な開発手法
上記の以外にもシステム開発手法がある。
・***RAD***　少人数でスピードを重視した手法
・***アジャイルとXP***　スパイラルモデルの反復を短くし、早く開発する手法
・***リバースエンジニアリング***　既存のソフトウェアを解析、それを元に上流の仕様を導き出す。　
・***マッシュアップ***　公開されているサービスを組み合わせて、新しいサービスを作り出す。

####業務のモデル化
業務をシステム化するには現状の分析を行う。
それにより業務プロセスを抽象化、視覚させることをモデル化と言う。それにより実現すべき機能を導き出す。
モデル化の手法
・DFD　データの流れを図であらわす。
・E-R図　実体（社員、部署）間の流れをあらわす。

####ユーザインターフェース
人の手にシステムがふれる部分を***ユーザーインターフェーズ***と言う。
文字で命令を***CUI***と言う。
アイコンやボタンで操作を***GUI***と言う。

####コード設計と入力のチェック
データベースのときの主キーに使われたコード（数字列）の設計のコツがある
・桁数は多すぎてもダメ、少なすぎてもダメ。
・コードにルールを決めて、誤入力を防ぐことを***チェックディジット***と言う。

####モジュールの分割
各プログラムをモジュールという単位に分割・階層化させることを***プログラムの構造化設計***と言う。
モジュールになっていると
・作業の分割
・再利用が容易
・修正が一部ですむ。

モジュールの分割には技法が３種類ある。
・STS分割法
・トランザクション分割法
・共通機能分割法

モジュールは独立性が高いほど良い。

####テスト
テストとは***バグ***を根絶させていく工程
バグとは記述ミス、欠陥のこと
どういったテストを行うのか？
***単体テスト、結合テスト、システムテスト***がある。

単体テスト
各モジュールに行う。
ブラックボックステスト、ホワイトボックステストと言う手法がある。

結合テスト
モジュール間で行う。
***トップダウンテスト、ボトムアップテストなど***がある。

プログラムの修正後に正常に動いた箇所に悪影響を確認することを***リグレッッションテスト***といいう。

プログラムの品質の指標として***バグ管理図***がある。

###システム周りの各種マネジメント
####プロジェクトマネジメント
１０個の範囲を元に作業の管理をする。これを***PMBOK***と言う。

作業範囲を把握するためにWBSを活用する
WBSは作業・仕事を分割して体系化すると言う意味

見積もりの手法
プログラムステップ法、ファンクションポイント法がある。

####スケジュール管理とアローダイアグラム
工程のスケジュールを***アローダイアグラム***と言う。
予定が狂っていることを***クリティカルパス***と言う。

スケジュール短縮のための手法
・クラッシング
・ファストトラッキング

####ITサービスマネジメント
サービスについて管理、運用規則、手法、プロセスにまとめられたガイドラインを***ITIL***と言う。
ITILは***サービスサポート、サービスデリバリー***の２つで構成されている。

サービス提供者とその利用者との間で取り決められたものを***SLA（サービスレベル合意書）***と言う。

サーバルームなどの設備に適切管理・改善する取り組みを***ファシリティマネジメント***と言う。

####システム監査
システム監査人がある部署を監査し、依頼者に報告、依頼者が改善命令をする。
監査の手順
・監査の計画の立案
・予備調査
・本調査
・評価・結論

経産省の定義しているITガバナンスがある。

###プログラムの作り方
####プログラミング言語とは
コンピュータに作業指示を伝えることのできる言葉
ソースコードを機械語に翻訳して伝わる。
その翻訳は２種類ある。
・インタプリンタ方式　動作を確認しながら作ることができる。
・コンパイラ方式　制作途中で確認のために動かすことができない。

####コンパイラ方式でのプログラム実行手順
ソースコードから実行には過程がある。
ソースコード、コンパイラ、***リンカ、ローダ***、実行の流れになる。
コンパイラ　機械語に翻訳
リンカ　自分で分割したモジュール、ライブラリ、関数、共通モジュールなどを***繋ぎ合わせる***。
　　　　実行に必要なファイルになる。
ローダ　そのファイルを***主記憶に読み込ませる***。

つなぎ合わせる作業を***リンク***と言う。
ロードモジュールを主記憶に読み込ませることを***ロード***と言う。

####構造化プログラミング
複雑なソースコードの書きにくい。
そのため各階層ごとに分けて書いていくことを***構造化プログラミング***と言う。

３つの制御構造を使ってプログラミングする。
・順次構造　上から順番に処理
・選択構造　何かの条件で分岐、処理する。
・繰り返し構造　ある条件が満たされるまで処理し続ける。

####変数は入れ物として使う箱
空の箱のようなもの　名前をつけることができる。

####アルゴリズムとフローチャート
処理手順を***アルゴリズム***と言う。
アルゴリズムをわかりやすく記述したのが***フローチャート***と言う。

####データの持ち方
データの配置する方法を***データ構造***と言う。
アルゴリズムの良し悪しはプログラムの特性にあったデータ構造になっているかで別れる。

***配列***
***データを並べて管理***をするのを配列と言う。
データ一つ一つには連続した番号がついていて***添字***と言う。

***リスト***
***データとデータを数珠繋ぎにして管理***するのがリストと言う
リストを扱うデータには,***ポインタ***と呼ばれる番号がセットになり、くっついている。
データの追加、挿入、削除が簡単にできる。

リストの種類
単方向リスト、双方向リスト、循環リスト

***キュー***
先に格納されたデータから順に処理していく。

***スタック***
最後に格納されたデータから順に処理していく。
####木（ツリー）構造
木構造は階層構造をもつデータ、データの探索、整列で使われるデータ構造
親と子の関係性を表している。

木構造の手法
・完全二分木
・２分探索木
がある。

####データを探索するアルゴリズム
探索とは基礎的で単純なアルゴリズムの一つである。
探索の手法
・線形探索法　先頭から順に探索していく手法
・２分探索法　探索対象を１／2ずつ削っていく手法（データが昇順、降順の場合に最適）
・ハッシュ法　ハッシュ関数（一定の計算式）を用いて探索（算出）していく手法

####データを整列させるアルゴリズム
整列も基礎的なアルゴリズムの一つである。
整列の手法
・基本交換法（バブルソート）　隣接するデータの大小を入れ替え整列させる手法
・基本選択法（選択ソート）　データの中から最小値を取り出すことを繰り返し整列させる手法
・基本挿入法（挿入ソート）　整列済み、未整列のデータに分け、未整列のデータを挿入し整列させる手法
また
これ以上に高度な整列アルゴリズムが存在する。

####オーダ記法
おおまかな処理効率を図る指標を***オーダ記法***と言う。

####オブジェクト指向プログラミング
***データ（属性）、メソッド（手続き）***を一つにまとめて構成するやり方を***オブジェクト指向***と言う。
オブジェクトの中身のデータを管理できる特徴***（カプセル化）***を持つ

データ（属性）とメソッド（手続き）と言うオブジェクトの性質を定義したものを***クラス***と言う。
またそこから生成されるものを***インスタンス***と言う。

####UML（Unified Modeling Language)
オブジェクト指向、設計モデルを共有してコミニュケーションを図るための標準的な記法を***UML***と言う。
UMLを大きく分けると
・***構造図*** システムの構造を表す。　例クラス図
・***振る舞い図***　システムの振る舞いを表す。　例ユースケース図、アクティビティ図、シーケンス図
過去の設計ノウハウを再利用したものを***デザインパターン***と言う。

###システム構成と故障対策
####コンピュータを働かせる形の話
コンピュータを働かせる形とは
ネットワークを介して複数のコンピュータが組み合わさって動く処理形態をいう。
処理形態の手法
・集中処理　サーバに頼るシンクライアントもがある。　
・分散処理　サーバに頼るピアツーピアもがある。
・クライアントサーバシステム　三層クライアントサーバシステムもある。

システムの稼働形態
・オンライントラザクション処理　リアルタイム（即時）に反映
・バッチ処理　リアルタイムには反映しない。

####システムの性能指標
・スループット 単位時間あたりに処理できる仕事（ジョブ）量
・レスポンスタイム　コンピュータに依頼して、処理が終わるまでの時間
・ターンアラウンドタイム　コンピュータに依頼から応答完了までの時間　例プリンタから神が出てくるまで。

処理性能を評価する手法を***ベンチマークテスト***

####システムを止めない工夫
企業内のシステムは動き続けることが重要である。
そのための工夫は
・デュアルシステム　2台とも同じ処理を行う。
・デュプレックスシステム　2台準備されているが、片方は待機している。

####システムの信頼性と稼働性
システムの信頼性を評価する概念が***RASIS（信頼性、可用性、保守性、保全性、安全性）***である。

素晴らしいシステムでも支障がありすぎると信頼性がない。
そのために稼働率が重要である。　大きく２つの指標がある。
・***平均故障間隔（MTBF)***　故障と故障の間隔　長いほど良い。
・***平均修理時間（MTTR)***　修理に必要な時間　短いほど良い。

これら２つを表したグラフを***バスタブ曲線***と言う。

システムの直列と並列では、並列の方が稼働率が高い。
それでも稼働率は１００％にならない。
そのため故障しても耐えると言う考え方を持たなければならない。これを***フォートラント***と言う。
・フェールセーフ
・フェールソフト
・フールプルーフ

####バックアップ
人為的なミスをでファイルを消してしまうことがある。
そのために
・定期的にバックアップを行う。
・バックアップする媒体は分ける。　
・業務処理中にバックアップしないこと。

バックアップの手法
・フルバックアップ　保存されているデータを全てバックアップする。
・差分バックアップ　フルバックアップの後、変更されたファイルのみバックアップする。
・増分バックアップ　バックアップの種類は関係ない、変更されたファイルのみバックアップする。

理解できていないことがたくさんあるので必要な時に編集して勉強したい。
木構造