59日後にITパスポートを受けるFラン私大文系既卒(6日目)

# システム開発
* システム開発とは?
 * ハードウェアを調達し、ソフトウェアを作ること

# システム要件定義
* システム要件定義とは?
 * システムでしたいことを決める工程

# システム設計
* システム設計とは?
 * ハードウェアとソフトウェア仕様や動作を決める工程

# プログラミング
* プログラミングとは?
 * 実際にソースコードを書く工程

# テスト
* テストとは?
 * システムが仕様どうりに動くかどうか確認する工程

# ソフトウェア受け入れ
* ソフトウェア受け入れとは?
 * 完成したソフトウェアをお客さんに納品する工程

# システム要件定義
* システム要件定義とは?
 * システムに必要な条件(システム要件)を決める工程

# システム要件
* システム要件とは?
 * システムの機能や性能
* 具体的な2つの要件
 * 機能要件
 * 非機能要件

# 機能要件
* 機能要件とは?
 * ユーザも把握している、システムに必要な機能

# 非機能要件
* 非機能要件とは?
 * ユーザが把握しきれていない、システムに必要な性能

# 品質特性
* 品質特性とは?
 * ソフトウェアの品質を評価する基準
* 6つの品質特性
 * 機能性
 * 信頼性
 * 使用性
 * 効率性
 * 保守性
 * 移植性

# 共同レビュー
* 共同レビューとは?
 * システム要件定義書を発注側と受注側で内容を確認すること

# システム設計
* システム設計とは?
 * システムの設計書を書く工程
* システム設計の4つの工程
 * システム方式設計
 * ソフトウェア要件定義
 * ソフトウェア方式設計
 * ソフトウェア詳細設計
* システム設計2つの分け方
 * 外部設計
 * 内部設計

# システム方式設計
* システム方式設計とは?
 * システム要件を「ハードウェア」、「ソフトウェア」、「手作業」をいずれかに振り分ける工程
* メリット
 * 「何」が「いくつ」必要なのかが明確になる

# ソフトウェア要件定義
* ソフトウェア要件定義とは?
 * ソフトウェアの要件(機能や性能)を決める工程
 * インターフェースとデータを決める

# ソフトウェア方式設計
* ソフトウェア方式設計とは?
 * ソフトウェアの要件をプログラム単位まで分割する工程

# ソフトウェア詳細設計
* ソフトウェア詳細設計とは?
 * コーディングできる単位まで分割する工程
 * フローチャート(流れ図)にして表す

　# ソフトウェアユニット(ソフトウェア単体)
* ソフトウェアユニットとは?
 * システム詳細設計で分割されたプログラム

# 外部設計
* 外部設計とは?
 * ユーザから見える箇所の設計
* 外部設計の2つの工程
 * システム要件定義
 * システム設計の「システム方式設計」

# 内部設計
* 内部設計とは?
 * ユーザから見えない箇所の設計
* 内部設計の2つの工程
 * システム設計の「ソフトウェア要件定義」
 * システム設計の「ソフトウェア方式設計」

# プログラミング
* プログラミングとは?
 * 処置手順を書く工程

# コンパイル(compile：編集する)
* コンパイルとは?
 * 人間が書いたプログラムを機械語に変換すること

# ソースコード
* ソースコードとは?
 * 機械語に翻訳する前のプログラム

# 単体テスト
* 単体テストとは?
 * 内部設計の内容のプログラムに誤りがないかを検証するテスト
 * ホワイトボックステストと呼ばれるテスト手法で行う
 * 担当は開発者

# 結合テスト
* 結合テストとは?
 * プログラム同士のインターフェースが合うかを確認するテスト
 * ブラックボックステストと呼ばれるテスト手法で行う
 * 担当は開発者

# システムテスト
* システムテストとは?
 * システム要件が使用通りに動作するかを検証する
 * 担当は開発者

# 運用テスト
* 運用テストとは?
 * 本番環境と同じ条件下でシステムを運用し、業務要件どうりにシステムが動くかを検証するテスト

# ソフトウェアインターフェース
* ソフトウェアインターフェースとは?
 * プログラムとプログラムを結ぶもの

# ホワイトボックステスト
* ホワイトボックステストとは?
 * プログラムの内部構造を分析して確認するテスト手法
 * 箱の中身(具体的な処理内容)を見ながらテストするイメージに近いからこのように呼ばれる
* メリット
 * 全ての処理が検証できる
* デメリット
 * プログラマーの誤解によるバグは見つけられない 

# ブラックボックステスト
* ホワイトボックステストとは?
 * 入力と出力だけに注目し、結果が仕様書どうりになっているかを確認するテスト
 * このテストは発注者側も行う
 * 結合テストとシステムテストに使われる
* メリット
 * 仕様どうり動作するかを検証できる
* デメリット
 * 全ての処理テストを行わないので、バグが残る可能性がある

# 回帰テスト(regression　test：リグレッションテスト)
* 回帰テストとは?
 * 新しい機能を実装したときに、別のところでバグが発生していないかを検証するテスト

# ソフトウェア導入
* ソフトウェア導入とは?
 * 発注者側の本番環境にソフトウェアをインストールすること

# ソフトウェア受け入れ支援
* ソフトウェア受け入れ支援とは?
 * ソフトウェア受け入れテストを開発者が支援すること

# ソフトウェア受け入れテスト
* ソフトウェア受け入れテストとは?
 * 開発者が発注者にシステムを引き渡すときに行われるテスト
 * システムが契約どうりにできているかを確かめるテスト
 * 発注者が行うテスト
 * ここで問題がなければ納品となる 

# 運用プロセス
* 運用プロセスとは?
 * 完成したシステムを本番環境で動かす工程

# 保守プロセス
* 保守プロセスとは?
 * 稼働中に見つかったバグを修正する工程
 * ソフトウェアに新機能をつけたりする工程 

# ソフトウェア保守
* ソフトウェア保守とは?
 * 本番稼働中のソフトウェアを修正・改良すること

# ファンクションポイント法
* ファンクションポイント法とは?
 * システムが提供する機能に点数をつけて開発費用を見積もる方法

# ウォータフォールモデル
* ウォータフォールモデルとは?
 * ソフトウェアの開発プロセスを上流工程から下流工程に向かって一直線に順番に進める手法
* メリット
 * 計画が立てやすい
* デメリット
 * 修正作業が大変

# アジャイル開発(Agile：アジャイル)
* アジャイル開発とは?
 * 短期間にソフトウェアの開発とリリースを繰り返し、ビジネス環境の変化やユーザのニーズに柔軟に対応する開発モデル
* アジャイル開発が求められるようになった背景
 * 従来以上により高品質で、より速く開発することが求められたから
 * 顧客のニーズが　変化することがあるから
* アジャイル開発の特徴
 * 綿密な計画は立てない
 * 品質は高くない
 * リリースが素早い
* デメリット
 * 大規模な開発には向いてない。最初の段階で見積もることが難しいから

# DevOps(Development + Operations)
* DevOpsとは?
 * 開発者と運用担当者が連携してシステム開発をすること

# XP(eXtreme Programming)
* XPとは?
 * 19のプラクティス(実戦)が定義された開発手法

# テスト駆動開発
* テスト駆動開発とは?
 * プログラムを書いた後にテストをするのではなく、テストを通過できるようにプログラムを書く開発手法
* メリット
 * テストに向けてプログラムを書くため、プログラムの目的が明確になる
 * 書き終わった段階でテストを通過しているため、不具合が少ない状態になる

# ペアプログラミング
* ペアプログラミングとは?
 * 二人のプログラマが、１つのパソコンを使ってソフトウェア開発する手法
* メリット
 * 一人が休んでも、もう一人が作業を進めることができる
 * 熟練者と初心者が組んだ場合OJTになる

# リファクタリング
* リファクタリングとは?
 * 機能使用を変えずに、内部の構造を変えること

# EUC(End User Computing)
* ECUとは?
 * システムを利用する部門(エンドユーザ)が主体的にシステム開発や運用に関わること

# RAD(Rapid Application Development)
* RAD
 * 少人数のチームでプロトタイピングを繰り返し、短い期間で開発するモデル  

# リバースエンジニアリング
* リバースエンジニアリングとは
 * 既存のプログラムを解析して、そのプログラムの仕様や設計の情報を取り出す技術

# スクラム
* スクラムとは?
 * アジャイル開発の一つ
 * 開発チームが一致団結するためにはどうしたら良いかに着目したソフトウェア開発方法