設計
システム設計とソフトウェア設計の流れ、JIS X 25010の品質特性、構造化設計とオブジェクト指向設計、モジュール分割の手法を理解できるようになります。
ねらい
要件を実現する形に落とし込む設計の工程を学びます。このレッスンを終えると、システム設計からソフトウェア設計への流れ、品質特性のモデル、構造化設計とオブジェクト指向設計の考え方、モジュール分割の手法を説明できるようになります。
ストーリー
要件定義で「何を作るか」が決まりました。次は「どう作るか」です。どの仕事を機械に任せ、どれを人手に残すか。プログラムをどんな部品に分ければ、直しやすく再利用しやすいか。設計は、要件と実装の間に橋を架ける工程です。
システム設計
システム設計では、システム要件をハードウェア、ソフトウェア、サービス、手作業に振り分け、実現に必要なハードウェア構成品目とソフトウェア構成品目を決めます。機能分割は業務効率、作業負荷、作業コストの観点から検討し、利用者作業範囲を明確にします。
構成の決定では、信頼性や性能要件に基づいて冗長化やフォールトトレラント設計を検討し、IaaS・PaaS・SaaSといったクラウドの利用も選択肢に入れます。処理方式は、集中処理か分散処理か、Webシステムかクライアントサーバシステムかを選び、機能を小さな独立したサービスに分けるマイクロサービスアーキテクチャや、サーバの管理を持たないサーバレスアーキテクチャも現代の選択肢です。データベースはRDBを軸に、NoSQLデータベースやインメモリデータベースなどから業務に合う方式を選びます。
設計と並行して、システムが機能をすべて満たすかを確かめるシステム統合テストの設計(テスト要求事項の定義)も行います。決定したアーキテクチャは、要件との双方向の追跡可能性を保ちながら共同レビューで評価します。依存の向きを整理した設計の考え方としてクリーンアーキテクチャという用語も押さえておきましょう。
ソフトウェア設計と品質特性
ソフトウェア設計
ソフトウェア設計では、ソフトウェア要素をソフトウェアユニット(プログラム)まで分割し、各ユニットの機能と、ユニット間の処理の手順や関係を明確にします。部品化と再利用を意識した構造化が、生産性と品質を支えます。インタフェース設計では、操作性・応答性・視認性を考慮して、画面設計、帳票設計、伝票設計などの入出力詳細設計を行います。ここで、前に学んだリミットチェックやフォームオーバーレイが実際に設計へ組み込まれます。
テストの設計もこの段階で行います。ユニットのテストは内部構造に着目するホワイトボックステスト、ソフトウェア統合テストは仕様に着目するブラックボックステストを軸に、テスト範囲・計画・方式を定義して仕様書を作ります。
ソフトウェア品質(JIS X 25010)
品質特性の国際的なモデルがJIS X 25010です。2つのモデルからなります。
- 利用時の品質モデルは、有効性、効率性、満足性、リスク回避性、利用状況網羅性の5特性です。
- 製品品質モデルは、機能適合性、性能効率性、互換性、使用性、信頼性、セキュリティ、保守性、移植性の8特性です。
要件定義や設計の段階から、この特性を物差しとして品質を考慮します。
設計の手法
構造化設計
機能の洗い出しからデータフローの明確化、機能のグループ化、階層構造化と進める伝統的な手法が構造化設計です。大きな機能を段階的詳細化で細かくしていきます。表現には、流れ図、DFD、状態遷移図のほか、順次・選択・繰返しを入れ子の箱で表すNS図、階層と入力・処理・出力で整理するHIPOがあり、データ構造に着目するジャクソン法やワーニエ法という手法もあります。
モジュールへの分割手法には、データの流れに着目して入力・変換・出力に分けるSTS分割、トランザクションの種類で分けるTR分割、共通機能を切り出す共通機能分割があります。分割の善し悪しは、分かりやすさ、安全性、開発の生産性、運用性、処理能力、保守性、再利用性という基準で評価します。
オブジェクト指向設計とその発展
データと操作をクラスにまとめるオブジェクト指向設計は、プログラミングのレッスンで学んだ概念を設計に広げたものです。クラスとインスタンス、属性とメソッド、内部を隠すカプセル化、サブクラスへの継承(インヘリタンス)、同じ呼び出しでクラスごとに違う振る舞いをする多相性が土台です。クラスの関係は、一般化する汎化と具体化する特化、全体と部分を表す集約や分解で整理し、クラス図やパッケージで表します。良い設計の原則集としてソフトウェア設計原則(SOLID)が知られています。
このほか、データの構造を軸に設計するデータ中心設計(E-R図と正規化により、同じ事実を1か所にだけ持つ一事実一箇所を徹底する)、業務領域の言葉を軸に設計するドメイン駆動設計(DDD。ドメインモデルを作り、開発者と業務側が同じユビキタス言語で語る)という設計手法があります。
例題
次の問いに答えてください。
問1 オブジェクト指向で、データと操作をひとつにまとめて内部を外から隠すことを何といいますか。
問2 JIS X 25010の製品品質モデルの特性は、いくつに分類されていますか。
解答と解説
問1の答えはカプセル化です。内部の作りを隠すことで、部品の中身を変えても外への影響を抑えられます。
問2の答えは8つです。機能適合性、性能効率性、互換性、使用性、信頼性、セキュリティ、保守性、移植性です。利用時の品質モデルの5特性と区別して覚えましょう。
応用
本試験を意識した問題を解いてみましょう。
問 JIS X 25010の製品品質モデルのうち、ソフトウェアを別の環境へ移し替えやすい度合いを表す品質特性はどれでしょうか。次の中から選んでください。
- 移植性
- 保守性
- 互換性
- 使用性
解答と解説
答えは1の移植性です。別のOSやハードウェアなど、異なる環境への移し替えやすさを表します。2の保守性は、修正や改良のしやすさを表す特性で、移し替えではなく手直しの観点です。3の互換性は、他の製品と情報を交換したり同じ環境で共存したりできる度合いであり、自分が別環境へ移る移植性とは向きが異なります。4の使用性は、利用者にとっての使いやすさを表す特性です。
分からなかった点・気になった点
読み込み中です。