情報処理技術者試験対策のページ>午前対策 目次
テクノロジ系 開発技術 システム開発技術
システム要件定義
- システム要件定義
- システム開発の最初の工程で行う作業で現状の業務を分析し、システム要件を整理する
- システムの機能及び能力を決める工程
- 最も上流の工程であり、後続の工程をスムーズに進めるためには、この工程で十分な検討を行う必要がある
- 開発するシステムが何をするものなのかを決定する
- 開発する予定のソフトウェアに対する顧客の要求を、ある仕様記述に基づいてまとめ、決定する
- 対象業務の調査・分析を行い、業務要件の定義、データ分析、システム要求分析などを実施する
- 機能
- 能力
- 業務・組織及び利用者の要件
- 設計条件
- 適格性要件
- システム要件定義で実施する作業
-
応答時間の目標値の決定
例)現在5分程度掛かっている顧客検索を、時期システムでは1分以下で完了するようにしたい
- システム要件の評価
システム方式設計
- システムの最上位レベルでの方式を確立する
- ハードウェア
- ソフトウェア
- 手作業の機能分割
- ハードウェア方式設計
- ソフトウェア方式設計
- アプリケーション方式設計
- データベース方式設計
- システム方式設計において実施する作業
システムのハードウェア構成、ソフトウェア構成を明確にする
- システム方式の評価
ソフトウェア要件定義
- ソフトウェア要件の確立
- 機能
例:集計するデータ項目としてどのようなものが必要であるか
- 能力
- インタフェース
- ヒアリングなどにより要件を収集する
- ソフトウェア要件の評価
- アウトプット
- システム機能定義書
システムを構成する個々の機能について、目的、入力、出力、処理内容を記述した物
- プロトタイプ
- ユースケース
- DFD
- E-R図
- UML
- 機能階層図
-
システム全体または一部の機能を階層的に表現したもの
-
図の最上位に対象となる機能を置き、それをルート(根)にしたツリー図の形態でシステムの構造を記述する
ソフトウェア方式設計・ソフトウェア詳細設計
- ソフトウェア方式設計・基本設計 ( 外部設計 )
-
既に決定しているソフトウェア要件を、どのように実現させるかを決める
- システム構想書を受けて利用者の立場に立ち、システムをどのように実装するかを決定する作業
- システム要件定義の結果を受けてシステム化を進めるに当たって行う作業
- データ項目を洗い出して論理データ構造を決定する
- 論理データ設計:データ項目の洗い出しとデータ構造の決定
- ソフトウェア構造とコンポーネントの方式設計において、機能要求を実現するための各オブジェクトの作業分担を記述するのに適した図
コニュニケーション図
- 外部設計
- 主にユーザから見える範囲のシステム設計を行う
- 画面・帳票の設計やシステム機能設計、論理データ設計、外部システムとのインタフェース設計などを実施する
- 画面・帳票レイアウトの設計
- 出力帳票の設計方針
帳票に統一性をもたせるために、タイトルの位置、データ項目の配置などに関する設計上のルールを決めておく
- アプリケーションが表示するエラーメッセージを設計するときの留意事項
利用者が何をすべきかを、簡潔かつ正確に表示する
- ヒューマンインタフェース設計
メニュー設計、画面設計、帳票設計のこと
- コード設計
-
システムで使用するコードを洗い出し、その目的・用途を定義した上でコード体系を設定すること
- システムで使用するデータの識別や分類・配列を容易にするためのコードの設計
- システムの外部設計を完了させるとき、承認を受けるもの
画面レイアウト
- ソフトウェア詳細設計 ( 内部設計)
- ソフトウェアの動作ロジックを検討する
-
外部設計で決定した機能などをプログラム化するために必要なレベルまで詳細化する
- 物理データ構造、データの処理方式やチェック方式などを決定する
- 外部設計書を受けて、システム開発者の立場に立ち、システムをどのように実装するかを決定する作業のこと
-
システム機能の分割、分割した各機能の処理方式の決定、ファイル、データベースの設計などを実施する
- ソフトウェア詳細設計書に関する記述
ソフトウェア詳細設計書に基づいてプログラミングが実施される
- ソフトウェア構造とコンポーネントの設計
インタフェース設計
- モジュールの設計
ソフトウェアコード作成及びテスト
- ソフトウェアコード作成
内部設計に基づいて、実際にプログラムを作成する
- コーディング基準
- 変数の命名規則やコメントの書き方など、プログラムの標準的な記述方式を定める
- 目的:ソフトウェアコードの保守性を向上させること
- コードレビュー / デザインレビュー
- 実施の目的・ねらい
- 仕様の不備や設計の誤りなどを早期に発見し、手戻り工数の削減を図る
- 設計の工程ごとに設計品質の評価を行い、各工程が終了したかどうかを判断する
- 成果物の問題点の早期発見を行う
- 内部設計書のデザインレビューを実施する目的
外部設計書との一貫性の検証と要件定義の内容を満たしていることの確認
- 外部設計のデザインレビュー
要件定義の内容に関する妥当性の評価と外部設計指針の見直し
- 従来型レビュー
- 管理者主体のレビュー手法
- 目的
- プロジェクトの状況把握と関係者への徹底
- プロジェクトを完成させるための方策の検討
- プロジェクトの成果物に対する技術的評価
- 進め方
- ミーティング形式で進める
- 議論の進め方には制約がなく、発言は自由
- 問題点
- 問題点の検出だけでなく解決策まで及ぶため時間がかかる
- 声の大きな人の発言に支配されがちになる
- ウォークスルー
- 設計上の誤りを早期に発見することを目的として、各設計の終了時点で作成者と複数の関係者が設計書をレビューする方法
- 成果物に含まれている問題点やエラーの検出に焦点を絞り、開発者手動で実施するレビュー手法
- 目的
- 問題点の発見を主目的とする
- 解決策の検討を目的とせず、問題点の見逃しを防ぐ
- 進め方
- プログラマの主催によって複数の関係者が集まり、成果物(プログラムリストなど)をレビューする
- 管理者は原則として出席しない
- 検討資料を事前に配布する
- 入力データの値を仮定してコードを追跡するように、手続きをステップごとにシミュレーションすることによってレビューを行う
- レビューミーティングは1〜2時間程度で終わらせる
- レビューした成果物の品質は、参加者の連帯責任にする
- 問題点
- エラー訂正が成果物作成者の責任で行うため、エラー修正を忘れた場合、エラーが残ってしまう
- インスペクション
- 目的や進め方はウォークスルーと同じであるが、モデレータを選出し、結果データの収集とフィードバックを追加したレビュー手法
- 作業成果物の作成者以外の参加者がモデレータとして主導すること、及び公式な記録、分析を行うことが特徴のレビュー技法
- あらかじめ参加者の役割を決め、いくつかの選ばれた局面に注意を払い、迅速にレビュー対象を評価する
- モデレータ
- インスペクションの実施責任者であり、進行役
- 成果物を作成した開発者ではない第三者が担当する
- エラー訂正の完了を成果物作成者に確認し、未了の場合は訂正を督促する
- ラウンドロビン
- レビューに参加したメンバが持ち回りでレビューの責任者を務めながら、全体のレビューを遂行していく
- 参加者全員がそれぞれの分担について、レビュー責任者を務めながらレビューを行うので、参加者全員の参加意欲が高まる
- パスアラウンド ( pass around )
レビュー対象となる成果物を電子メールなどで複数のレビューアに配布・回覧し、フィードバックを求める方法
- デバッグ
- トレーサ
動的デバッグツールの一つ
プログラムの実行過程を時系列的にモニタリングするために、メモリやレジスタの内容を書き出す
プログラムの実行時に、呼び出されたプログラム名やある時点での変数の内容を表示するようなオブジェクトコードを生成する
- アサーションチェッカ
変数の間で論理的に成立すべき条件を、プログラムの適切な箇所に挿入し、実行時にその条件を満たしているかどうかを検査するツール
変数の間で理論的に成立すべき条件が満たされているか否かを検査するコードをプログラムの適切な箇所に挿入し、実行時に検査結果が確認できる支援ツール
- インスペクタ
デバッグ時にデータ構造の内容を確認するためのツール
プログラム実行時にデータの内容を表示する
- デバッガ
プログラムの実行中、必要に応じて変数やレジスタなどの内容を表示し、必要であればその内容を修正して、テストを継続する
- スナップショット
指定した命令が実行されるたびに、レジスタや主記憶の一部の内容を出力することによって、正しく処理が行われていることを確認する
- テスト
-
プログラムがシステム設計通りに動作すること、業務要件を満たしていることを確認するために、テスト計画を作成し、テストを実施する
- 問題が発見された場合は、そのレベルに応じて上流の工程に戻りプログラムや内部設計、外部設計を修正する
- テストの順序
システム開発におけるテストでは、小さな単位から大きな単位へテストを積み上げていく方法が採られることが多い
-
単体テスト
-
結合テスト
-
システムテスト ( 総合テスト )
-
運用テスト
- テスト準備
- テストケース作成
- 既に稼働中のシステムに機能を追加するために、プログラムの一部を変更した場合に、本番稼動してよいかどうかを判断するために、稼働中のシステムに影響を与えることなくテストを行う環境
本番環境と同等のテスト環境
- システム適格性確認テストを実施するとき、用意しておくべきテストデータ
実際に業務で使うデータや、業務上例外として処理されるデータ
- 実験計画法を利用したテストデータ作成方法
効率良くテストするために、直行表を用いてテストデータを作成する
- プログラムの動的テストに用いられるテスト支援ツール
カバレージモニタ
- 記号実行ツール
静的テストを行うツール
数値の代わりに記号を入力して実行をシミュレーションする
- 構文チェッカ
プログラムのソースコードの静的解析を行う
- コードオーディタ
プログラムのソースコードが、コーディング規約にのっとっているかどうかをチェックする静的解析を行う
- .テスト項目目標数
レビューやテストすべき項目の目標数
- テストの実施
テスト完了後のプログラムを修正した場合、修正部分を確認するテストデータを確認済みのテストデータに追加して再テストを行うほうがよい
- テスト結果の評価
- ソフトウェアのテスト工程において、バグ管理図を用いて、テストの進捗状況とソフトウェアの品質を判断したいときの考え方
テスト工程の消化の累積件数、バグ摘出の累積件数及び未解決バグの件数の推移がすべて横ばいになった場合は、解決困難なバグに直面しているかどうかを確認する必要がある
- テストの進捗管理に使用する指標
テスト項目の消化件数
- 品質の判断
- テスト消化率のグラフ
横軸:テスト項目消化件数
縦軸:累積バグ件数
テスト項目件数が増えるにつれて累積バグ件数は収束する
- バグ管理図
バグ管理図において、すべての線が横ばい状態になった状況から、解決困難なバグに直面しており、その後のテストが進んでいないことが推測できる
バグの発生状況を記載し、管理限界内に入っているかどうかを見るための図
QC七つ道具の一つである管理図の記載方法に準拠して作成する
- テストカバレッジ
あるテストデータがプログラムのどの経路を通ったのかを調べ、プログラム全体の経路のうち、何%をカバーしたかを求めること
- テストカバー率
システム開発プロジェクトにおいて、成果物の品質を評価するために使用する指標
- バグ原因分析表
発見されたバグが作りこまれた原因(仕様ミス、設計不良、プログラム誤り、テスト不足など)を分析し、表にまとめたもの
-
テストその他
-
外部設計および内部設計の誤りは、プログラムだけでなく、マニュアルなどにも影響を与えるので、コーディングの誤りに比べて修復コストは高い
- プログラムのテストでは、正常なケースで正しく動作するかどうかだけではなく、意図しなかった動きがあるかどうか、あるいは誤った入力があった場合にも意図した動作(エラー処理など)をするかどうかを調べる必要がある
- テストにおけるユーザ部門の役割
システム開発における成果物に対して、業務的観点から内容確認を行う
プログラムの詳細設計は開発部門に任せる
システムテストの段階で参加する
用意された運用マニュアルが適切であることを確認する(運用テスト時)
- プログラムの変更管理の実施
変更実施結果の評価基準として、変更作業工数の予測値、障害発生率の目標値を決める
障害発生率:ここでは変更したことによる新たな障害の発生率を示す
- テストの事例
- 本社に設置したサーバのデータを、本社及び各事業所内のLANと、本社各事業所とを接続する通信回線とから構成されている自社ネットワークを介して、全国の事業所に提供するアプリケーションを開発する場合、システムテストを本社内のLAN環境で行うとき、応答時間の検証は困難
ソフトウェア結合・ソフトウェア適格性確認テスト
- テスト計画
- テスト準備(テスト環境,テストデータほか)
- テストの実施
- テスト結果の評価
システム結合・システム適格性確認テスト
- テスト計画
- テスト準備(テスト環境,テストデータほか)
- テストの実施
- テスト結果の評価
- チューニング
ソフトウェア導入
- ソフトウェア導入計画の作成
ユーザテストが完了し検収が終わった後、本番運用に移行する
本番運用への移行をスムーズに実施するために、事前に移行方法を検討し、データ移行や要員訓練などを含む移行計画を作成する必要がある
- ソフトウェア導入の実施
- 新しい業務ソフトウェアの開発が完了し、実環境へ導入することになった時に、当該ソフトウェアの導入時に必要な作業として適切なもの
ディスク容量など、必要なハードウェア資源の確保
- 受託したシステムの新規開発において、ソフトウェアを本番環境に移行するための計画を顧客に説明する
ソフトウェア受け入れ
- 受入れレビューと受入れテスト
ソフトウェアの受入れ:受入れは、そのソフトウェアの取得者が行い、開発者は受入を支援する
- ソフトウェア製品の納入と受入れ
- 利用者マニュアル
- 教育訓練
- ソフトウェア受入れにおいて実施される事項
利用者マニュアルを整備し、利用者への教育訓練を実施する
ソフトウェア/プログラム保守
- ソフトウェア/プログラム保守の形態
- ソフトウェア/プログラム保守の意義