「設計」における目標
システム及び/又はソフトウェア設計の考え方,手順,手法,留意事項を修得し,適用する。
2.1. システム設計のタスク
システム設計では,システム設計,利用者文書(暫定版)の作成,システム設計の評価,システム設計の共同レビューを実施することを理解する。
2.2. システム設計
2.2.1. システム設計の目的
システム設計では,システム要件をハードウェア,ソフトウェア,手作業に振り分け,それらを実現するために必要なシステムの構成品目を決定すること,システム要求仕様が実現できるか,リスクなどを考慮した選択肢の提案は可能か,効率的な運用及び保守ができるかなど,システムを設計する際に考慮すべき点を理解する。
ハードウェア構成品目,ソフトウェア構成品目,サービス,手作業,機能要件,非機能要件
2.2.2. ハードウェア・ソフトウェア・サービス・手作業の機能分割
ハードウェア,ソフトウェア,サービス,手作業の機能分割を,業務効率,作業負荷,作業コストなどの観点から検討し,決定することを理解する。
利用者作業範囲
2.2.3. ハードウェア構成の決定
信頼性や性能要件に基づいて,冗長化やフォールトトレラント設計,サーバの機能配分,信頼性配分などを検討し,ハードウェア構成を決定することを理解する。
アーキテクチャ,ハードウェア要素,IaaS,PaaS,SaaS
2.2.4. ソフトウェア構成の決定
システムの供給者が自社で全て開発するか,ソフトウェアパッケージなどを利用するかなどの方針,使用するミドルウェアの選択などを検討し,ソフトウェア構成を決定することを理解する。
アーキテクチャ,ソフトウェアシステム要素,ソフトウェア要素
2.2.5. システム処理方式の決定
業務に応じて集中処理,分散処理を選択すること,Web システム,クライアントサーバシステムなど,システムの処理方式を検討し,決定することを理解する。
集中処理,分散処理,Web システム,クライアントサーバシステム,プロトタイプ,データモデル,擬似コード,E-R 図,ユースケース,利用者の役割及び特権のマトリックス,インタフェース仕様,サービス記述,手順
2.2.6. データベース方式の決定
システムで使用するデータベースの種類,信頼性を考慮して冗長化したレプリケーションなどを検討し,決定することを理解する。
関係データベース,NDB(Network Database:網型データベース),OODB(Object Oriented Database:オブジェクト指向データベース),XML データベース,MDB(Memory Database),分散データベース,NoSQL
2.3. システム統合テストの設計
システム設計に対し,システム統合テストの範囲,テスト計画,テスト手順などの方針を検討し,システムが機能を全て満たしているかどうかを確認するシステム統合テスト仕様書を作成することを理解する。
テスト要求事項
2.4. アーキテクチャ及びシステム要素の評価及びレビュー
決定したアーキテクチャ及びシステム要素がシステム要件に合致しているか,実現可能かなど,システム要素を評価する際の基準を作成し,システムの取得者及び供給者が共同でレビューを行うことを理解する。
双方向の追跡可能性(双方向のトレーサビリティ),一貫性,設計標準や方法の適切性,ソフトウェア要素の実現可能性,運用及び保守の実現可能性,レビュー参加者,レビュー方式
2.5. ソフトウェア設計のタスク
ソフトウェア設計では,ソフトウェア設計,利用者文書(暫定版)の作成,ソフトウェア設計の評価,ソフトウェア設計の共同レビューを実施することを理解する。
2.6. ソフトウェア設計
2.6.1. ソフトウェア設計
ソフトウェア設計では,ソフトウェア要件定義書を基に,開発側の視点からソフトウェアの構造とソフトウェア要素の設計を行うこと,ソフトウェア要素をソフトウェアユニット(プログラム)まで分割し,各ソフトウェアユニットの機能,ソフトウェアユニット間の処理の手順や関係を明確にすること,ソフトウェア設計書作成の構成,記述上の留意事項を理解する。
構造化,ソフトウェア要素,ソフトウェアユニット,ソフトウェアユニット分割,ソフトウェアユニット機能仕様決定,ソフトウェアユニット間インタフェース設計,ソフトウェア統合のためのテスト要件,基本機能,部品,入出力設計,物理データ設計,部品化,再利用
2.6.2. インターフェース設計
インタフェース設計では,ソフトウェア要件定義書を基に,操作性,応答性,視認性,ハードウェア及びソフトウェアの機能,処理方法を考慮して,入出力装置を介して取り扱われるデータに関する物理設計を行うことを理解する。
入出力詳細設計,GUI,画面設計,帳票設計,伝票設計,レイアウト設計,インタフェース設計基準,タイミング設計,インタフェース条件,ソフトウェアユニット間インタフェース,インタフェース項目,ヒューマンインタフェース,画面構成,フォームオーバーレイ,リミットチェック,IoT
2.6.3. ソフトウェアユニットのテストの設計
ソフトウェアユニット機能仕様書で提示された要件を全て満たしているかどうかを確認するために,テストの範囲,テスト計画,テスト方式を定義し,ソフトウェアユニットのテスト仕様書を作成することを理解する。
テスト要件,チェックリスト,ホワイトボックステスト
2.6.4. ソフトウェア統合テストの設計
ソフトウェア設計書で提示された要件を全て満たしているかどうかを確認するために,テストの範囲,テスト計画,テスト方式を定義し,ソフトウェア統合テスト仕様書を作成することを理解する。
ソフトウェア統合テスト仕様,テスト要件,チェックリスト,ブラックボックステスト
2.7. ソフトウェア要素の評価及びレビュー
ソフトウェア要素がソフトウェア要件に合致していること,ソフトウェア要素間やソフトウェアユニット間の内部一貫性などのソフトウェア要素を評価する際の基準を理解する。また,ソフトウェア設計書について,作成後にレビューを行うことを理解する。
双方向の追跡可能性(双方向のトレーサビリティ),外部一貫性,内部一貫性,設計方法や作業標準の適切性,テストの実現可能性,運用及び保守の実現可能性,レビュー参加者,レビュー方式
2.8. ソフトウェア品質
JIS X 25010 で規定されているシステム及びソフトウェア製品の品質特性を理解し,要件 定義や設計の際には品質特性を考慮することを理解する。
JIS X 25010,ISO 9000
2.8.1. 利用時の品質モデル
システムとの対話による成果に関係する五つの特性である,利用時の品質モデルを理解する。
有効性,効率性,満足性,リスク回避性,利用状況網羅性
2.8.2. 製品品質モデル
システム及び/又はソフトウェア製品の品質特徴(品質に関係する測定可能な特徴とそれに伴う品質測定量)を八つに分類した製品品質モデルを理解する。また,各特性は関連する副特性の集合から構成されていることを理解する。
機能適合性,性能効率性,互換性,使用性(習得性,運用操作性,アクセシビリティほか),信頼性(可用性,回復性ほか),セキュリティ,保守性(解析性,試験性ほか),移植性
2.9. ソフトウェア設計手法
2.9.1. プロセス中心設計
プロセス中心設計手法によるソフトウェア設計の考え方と手順を理解する。
2.9.2. データ中心設計
データ中心設計手法によるソフトウェア設計の考え方と手順を理解する。
DOA(Data Oriented Approach:データ中心アプローチ),E-R 図,実体,関連,正規化,一事実一箇所
2.9.3. 構造化設計
2.9.3.1. 機能分割と構造化
機能分割と構造化の手順(機能の洗い出し,データフローの明確化,機能のグループ化,階層構造化,プログラム機能の決定,機能仕様の文書化),構造化設計による機能分割の利点,留意事項を理解する。
階層,段階的詳細化,複合設計
2.9.3.2. 構造化設計の手法
構造化設計で用いられる手法として,流れ図,DFD,構造化チャート,状態遷移図などがあることを理解する。
順次,選択,繰返し,NS(Nassi-Shneiderman:ナッシシュナイダマン)図,HIPO(Hierarchy plus Input Process Output),ブロック図,バブルチャート,階層構造図,イベントトレース図,ジャクソン法,ワーニエ法
2.9.3.3. プログラムの構造化設計
プログラムの構造化設計の目的,基本的な考え方,手順を理解する。
品質特性,モジュール分割
2.9.4. オブジェクト指向設計
オブジェクト指向設計の考え方,手順,手法を理解する。
クラス,抽象クラス,スーパークラス,インスタンス,属性,メソッド,カプセル化,サブクラス,継承(インヘリタンス),部品化,再利用,クラス図,多相性,パッケージ,関連,派生関連,派生属性,コレクション,汎化,特化,分解,集約
2.10. ソフトウェア要素の設計
2.10.1. ソフトウェア要素分割の考え方
ソフトウェア要素を分割する際の基準には,処理パターン適用,処理タイミングの違い,処理効率の違い,同時使用可能資源,入出力装置の特徴などがあることを理解する。また,基準ごとの特徴を理解する。
ファイルの統合,ファイルの分割,レコード処理,処理の周期
2.10.2. プログラム分割基準
プログラム分割の基準を理解する。
分かりやすさ,安全性,開発の生産性,運用性,処理能力,保守性,再利用性
2.11. モジュールの設計
2.11.1. 分割手法
分割手法には,データの流れに着目した手法とデータ構造に着目した手法があり,内部処理の形態に応じて複数の分割手法を組み合わせること,分割手法の種類,特徴を理解する。
STS(Source Transform Sink)分割,TR(Transaction:トランザクション)分割,共通機能分割,論理設計,領域設計,サブルーチン,再帰プログラム
2.11.2. 分割基準
モジュールの独立性の評価基準として,モジュールの結束性(強度),結合度,それらと独立性との関係,分割量の評価基準,部品化と再利用のための評価基準を理解する。
モジュールの制御領域,モジュールの影響領域,分割量,モジュール再分割,従属モジュール,機能的結束性,情報的結束性,データ結合,制御結合
2.11.3. モジュール仕様の作成
各モジュール仕様の作成の考え方,手順,モジュール仕様の作成に用いられる手法を理解する。
流れ図,PSD(Program Structure Diagram),DSD(Design Structure Diagram),SPD ( Structured Programming Diagrams ), HCP ( Hierarchical and Compact description)チャート,PAD(Problem Analysis Diagram),決定表(デシジョンテーブル),ワーニエ法,ジャクソン法,NS 図,論理構造図,プログラミングテーブル
2.12. 部品化と再利用
ソフトウェアの部品化と再利用の必要性,部品の種類と特徴,部品設計の留意事項,ソフトウェアパッケージの利用法を理解する。
コンポーネントウェア,ホワイトボックス型,ブラックボックス型,クラスライブラリ,デザインパターン,レガシーラッピング
2.13. アーキテクチャパターン
アーキテクチャパターンはソフトウェア構造のパターンであることなどの特徴を踏まえて,アーキテクチャパターンを利用する利点,留意事項を理解する。
MVC モデル
2.14. デザインパターン
デザインパターンは主にオブジェクト指向設計に用いられ,生成に関するパターン,構造に関するパターン,振る舞いに関するパターンの3 種類に分類されることなどの特徴を踏まえて,デザインパターンを利用する利点,留意事項を理解する。
生成,構造,振舞い
2.15. レビュー
2.15.1. レビューの目的と手順
プロジェクト活動の状況や成果物を適宜評価するためのレビューの目的を理解する。また,レビューは文書の作成,レビューの実施(レビュー方式の決定,レビューの評価基準の決定,レビュー参加者の選出),レビュー結果の文書への反映作業という手順で行われることを理解する。
2.15.2. レビューの対象と種類
レビューの対象,実施タイミング,種類を理解する。
コードレビュー,テスト仕様レビュー,利用者マニュアルレビュー,ピアレビュー,デザインレビュー,インスペクション,モデレーター,文書化手法,ウォークスルー,共同レビュー
2.15.3. 妥当性評価の項目
レビューで確認する妥当性評価の項目を理解する。
機能,性能,容量・能力,信頼性,操作性,安定性,運用の容易性,技術的整合性,合目的性,実現可能性,開発の合理性,経済性,投資効果
2.15.4. その他の妥当性評価手法
測定器やテストプログラムの利用によるデータ実測,利用者の意見や感想の収集など,レビュー以外の妥当性評価の手法を理解する。
ヒアリング,アンケート,チェックリスト