⑥ 開発技術 Flashcards
システムは何と何でできている?
ハードウェア&ソフトウェア
★ソフトウェアはシステムの一部
システム開発とは?
必要なハードウェアを調達し、必要な機能を持ったソフトウェアを新たに作ること
ソフトウェアライフサイクルプロセス(SLCP)の5つのステップ?
(システム開発のステップ?)
企画
↓
要件定義
↓
開発
↓
運用
↓
保守
開発プロセスステップの中のステップ?5つ
これは何の開発モデルに当てはまる?
モデル:ウォーターフォールモデル
①システム要件定義
:システムで実現したいことを決める
②システム設計
: システム要件定義で決めたことを実現するために、ハードウェアトソフトウェアの動作を決める
③プログラミング
: 実際にソースコードを書く工程
④テスト
: システムが仕様通りに動くか確認する
⑤ソフトウェア受け入れ
: 完成したソフトウェアをお客さんに納品する
システム要件定義とは?
システムに必要な条件(システム要件)を決める工程
システム要件とは?
システムで現実する要件
(条件?)
★システムに必要な「機能」と「性能」
eg: 応答時間、運用時間
システム要件は2つに分類される?
①機能要件
:ユーザーとのヒヤリングで明らかになったシステムに必要な「機能」
②非機能要件
:ヒヤリングで出てこないが、システムに必要な「性能」
要件定義が「共有フレーム」本で3つに分類されている?
①要件定義プロセス
>業務要件を決める
>共有フレームの5つのステップの中の一つ
②システム要件定義
>5つのプロセスの中の「開発プロセス」のうちの一つ
③ソフトウェア要件定義
>開発プロセスのうちの一つ
>ソフトウェア要件を決める
品質特性?
品質特性は6つに分けている。それは?
ソフトウェアの品質を評価する基準
●機能性
●信頼性
●使用性
●効率性
●保守性
●移植性
システム要件定義書とは?
共同レビュー?
システム要件定義のプロセスで作成する文書
★これが完成したら発注者と開発側両方も誤りがないかチェックする
共同レビュー:このシステム要件定義書に誤りがないかチェックする作業
システム設計とは?
システム要件定義で決めたことをもとにして、システムの設計図を書くこと
システム設計のプロセスの中に4つのステップ?
①システム方式設計
②ソフトウェア要件定義
③ソフトウェア方式の設計
④ソフトウェア詳細設計
①と② → 外部
③と④ → 内部
システム方式設計?
目的?
システム要件定義プロセスで洗い出したシステム要件を「ハードウェア、ソフトウェア、手作業」に振り分けるプロセス
目的:システムに「何が」「いくつ」必要かどうか明確にできる
例:P211
ソフトウェア要件定義
ソフトウェアの要件「性能と機能」などを決める工程
システム方式設計で振り分けたシステム要件をここでより具体化する
代表的なソフトウェア要件2つ?
●インターフェースの要件
:画面、帳票、ファイル
●データの要件
:データの種類、データベースの要件
ソフトウェア方式設計?
ソフトウェア要件定義で決めたソフトウェア要件「性能と機能」をプログラムの単位まで分割する工程
ソフトウェア詳細設計?
この工程で分割されたプログラムをなんと呼ぶ?
ソフトウェア方式設計で「プログラムの単位まで」分割した要件をさらに「コーディングができる単位」まで分割する工程
★具体的にフローチャートにして表す
呼び方:ソフトウェアユニット
外部設計?
外部設計の2つの工程?
ユーザーから見える箇所の設計
(ユーザーの立場から見た業務機能を中心に設計する)
2つの工程:
①システム要件定義
②システム設計の「システム方式設計」
内部設計?
内部設計の2つの工程?
ユーザーから見えない箇所の設計
2つの工程:
①システム設計の「ソフトウェア要件定義」
②システム設計の「ソフトウェア方式設計」
P213
プログラミングとは?
プログラミング言語の文法に従って処理手順を書く工程
担当者は:プログラマ
コンピューターの0と1使った言語はなんと呼ぶ?
機械語
★これは人間が書くことができない
人間は機械語を使えないからプログラミングで使う2つの段階?
1.人間が読みやすいプログラム言語でプログラムを書く
2.それを機械語に変換してコンピューターに処理させる
人間が書いたプログラムを機械語に変換する作業はなんと言う?
その処理を行う機能?
変換すること:コンパイル
compile(編集する)
機能:コンパイラ
プログラミングは開発のどのタイミングでやる工程?
ソフトウェア詳細設計の後にやる工程
ソースコード?
人間が読みやすいプログラム言語で書かれたプログラム
★コンパイラが機械語に翻訳する前のプログラム
テスト?
作ったシステムが仕様通りに動くか確認する工程
+さらに、要件定義で明確にした「業務要件」がきちんと実現されているか確認する
単体テスト?
他の呼び方?
プログラミングに誤りがないかを検証する
ホワイトボックステスト
結合テスト?
他の呼び方?
単体テストが完了したプログラム同士を組み合わせて、データの受け渡しや連携がうまくいくか検証する
(インターフェースが合うかどうか)
ブラックボックステスト
システムテスト?
システム要件が仕様通りに動くかどうかを検証する
運用テスト?
本番環境と同じ条件でシステムを運用し、業務要件どおりにシステムが動作すること検証する
★このテストだけユーザーがやる!
インターフェースとは?
例?
あるモノとあるモノをつなぐ部分(接続)
例:ハードウェアとハードウェアのインターフェース
>PCを周辺のプリンターにつなげる
ユーザーインターフェース
>人間をコンピューターにつなげる部分 ‐ 操作画面
ソフトウェアインターフェース
>プログラムをプログラムにつなぐ
ホワイトボックステスト?
誰が行う?
プログラムの内部構造を分析して確認するテスト
★プログラムに記述されているすべての処理を実行し、動作を確認する
担当者:開発者(プログラマ)
ブラックボックステスト?
誰が行う?
入力ト出力だけに着目して、ある入力に対して仕様書どおりの出力が得られるかどうか確認する
★システムがどのようにそれを処理しているのか関係なく、結果が正しければOK
担当者:開発者+ユーザー
ブラックボックスとホワイトボックステストのメリット&デメリット?
●ホワイトボックス
メリット:すべての処理を検証できる
デメリット:プログラムの誤解による不具合は見つけられない
●ブラックボックス
メリット:仕様通りの動作をするか検証できる
デメリット:すべての処理をテストしないので、発生頻度が低い不具合が残る可能性がある
ソフトウェア受入れ?
開発者が作成したソフトウェアを発注者に納品する工程
ソフトウェア導入?
発注者側の本番環境にソフトウェアをインストールする工程
★古いシステムを新しいシステムに切り替えることを「移行」という
ソフトウェア受入れ支援?
発注者が「ソフトウェア受入れテスト」を行い、開発者がそのテストを手助けすること
ソフトウェア受入れテスト?
開発者が発注者にシステムを引き渡す際に行われるテスト
★システムが契約内容どおり完成しているかテストする
(発注者がやる)
利用者マニュアル?
Users manual
市捨てmを利用するユーザー向けに描かれたシステムの操作方法や障害時対応が書かれている説明書
運用プロセス?
完成したシステムを本番環境で動かす工程
保守プロセスとは?
稼働中に見つかったバグを修正したり、ソフトウェアに新機能を追加したりする工程
ファンクションポイント法?
システムが提供する機能に点数をつけて開発費用を見積もる方法
waterfall モデル?
メリットとデメリット?
ソフトウェア開発プロセスを上流工程から下流工程へ向かって一直線に順番に進めること
メリット:計画が立てやすい
デメリット:修正作業が大変
不具合があった工程まで戻ってやり直さなきゃいけない
アジャイル開発とは?
Agile (素早い)
waterfallモデルのデメリットを解決するために誕生したモノ
★短期間にソフトウェアの開発とリリースを繰り返し、ビジネス環境の変化やユーザーのニーズに対応するモデル
アジャイル開発の特徴?
事前に計画を立てずに、品質はたかくなくとも、製品をリリースする
waterfall modelとagileの違い?
●waterfall model
1.事前に計画を立てる
2.大きなプロジェクト
3.システムの変化に弱い
●アジャイル
1.計画の変化が前提
2.小さなプロジェクト
3.システムの変化に強い
DevOps?
開発担当者(Development)と運用担当者(Operations)が連携してシステムを開発する手法
XP?
eXtreme Programming
アジャイル開発の手法の一つで、19のプラクティスが定義された開発手法
XPの19のプラクティスの中のもっとも重要な3つ?
①テスト駆動開発
test driven development
②ペアプログラミング
③リファクタリング
refactoring
テスト駆動開発?
メリット?
XPの一つ
★通常プログラムを書いた後に行う単体テストを先に行い、このテストを通るようにプログラムを書くこと
メリット:プログラムが書き終わった段階で、既に単体テストを合格しているので不具合の少ない状態になる
ペアプログラミング?
メリット:
XPの一つ
★二人のプログラマが一つのPCを使ってソフトウェアを開発すること
:1人が書いているとき、もう1人がそれをチェックする
メリット:1.一人がやsンでいるときにもう1人が作業を進めること
2.OJTができる