記事一覧
はじめての設計をやり抜くための本【設計編】第4章内部設計の手法③ビジネスロジックプログラム設計
ビジネスロジックは、ユースケース記述やビジネスルールに書かれた業務に関するシステムの処理である。業務に関する処理という意味でドメインロジックとも呼ぶ。
ビジネスロジックのプログラミング方法にはいくつかのパターンがある。
[ビジネスロジックのパターン]
・TransactionScriptパターン
・DomainModelパターン
■TransactionScriptパターン
Transactio
はじめての設計をやり抜くための本【設計編】第4章内部設計の手法②画面プログラム設計
■Spring Bootでの開発
Model、View、Controllerの役割
[Model]
・ビジネスロジックとエンティティを合わせたもの。エンティティとはDBのデータをオブジェクトで表現したもの
[View]
・GUIの画面
・WebではJSPやThymeleafやHTML、HTMLを表示するWebブラウザがViewにあたる。ViewではModelの情報を表示する。
[Controll
はじめての設計をやり抜くための本【設計編】第4章内部設計の手法①内部設計とは
■内部設計の役割
システムの入力と出力、データベースへの格納の間で行うシステムの内部処理を設計する。また、具体的なソフトウェア内部のプログラムやデータの処理方法や管理方法、並列処理方法、トランザクション方法なども設計する。
さらにデータベース物理設計も行う。
その他、必要に応じてCRUD設計も行う。
■内部設計の目的を確認
ロバストネス分析
ユースケース記述や概念モデルといった要件定義の成果物
はじめての設計をやり抜くための本【設計編】第3章外部設計の手法⑫システムインフラ設計と配置設計
■システムインフラ設計
非機能要件定義の内容を踏まえ、システムインフラ設計を行う。システムインフラ設計はシステムを実現するためにネットワークやハードウェアを構成すること。
[インフラ設計で重要な点]
・セキュリティ
・信頼性
・効率(性能、パフォーマンス)
これらを踏まえ、ネットワーク設計やマシン構成を検討する。
■配置設計
システムを開発したら、サーバーマシンなどに配置する。システムをどのよう
はじめての設計をやり抜くための本【設計編】第3章外部設計の手法⑪非機能要件定義とシステム設計
■非機能要件とは
システムの利用者にとって機能要件を実現することがシステムを利用する目的である。非機能要件はシステム利用者がシステムを利用するために補助的に必要なシステムの品質や性能のこと。
・サービスレベルアグリーメント(SLA):サービスの提供事業者とその利用者の間で結ばれる、サービスのレベル(定義、範囲、内容、達成目標等)に関する合意サービス水準、サービス品質保証
・サービスレベルオブジェク
はじめての設計をやり抜くための本【設計編】第3章外部設計の手法⑩NoSQLデータベース設計
NoSQLデータベース
DB論理設計ではRDBを前提とした設計について記載した。RDB以外の選択肢としてNoSQLDBがある。
[NoSQLDBの特徴]
・RDB以外のDBを指すRDBは正規化された構造化データを格納するが、NoSQLでは半構造データや非構造データを格納することができる。
・スケーラビリティが高く、高性能
・トランザクション制御を省略してACIDを一部緩和している。ロックを使用すれ
はじめての設計をやり抜くための本【設計編】第3章外部設計の手法⑨データベース論理設計
DB論理設計の概要
概念モデルをもとにDB論理設計を行う。DB論理設計ではDBに作成するテーブルとテーブルのカラム、またそれらのカラムがテーブルにおいてキーであるかなどを設計する。
→論理ER図を作成する。(表記方法:IDEF 1X表記もしくはIE表記を使用)
本書籍ではIDEF 1X表記を採用
ER図はER図作成ツールを使用する。ツールはIDEF 1X表記 とIE表記の両方をサポートしているも
はじめての設計をやり抜くための本【設計編】第3章外部設計の手法⑦バッチ設計/⑧帳票設計
■バッチ設計
バッチはサーバープログラムのように常駐しておらず、時間になると手動での起動によって実行されるプログラム。サーバープログラムでリアルタイムに処理を行うのは時間や負荷がかかる処理を夜間など他の処理の負荷が低い時間帯に実行する。
多数のバッチプログラムを決まった順番と時間帯に実行する必要がある場合にはバッチを決められた順番と時間帯に応じて起動/実行するジョブスケジュール管理を導入すること
はじめての設計をやり抜くための本【設計編】第3章外部設計の手法⑥外部システムI/F設計
外部システムI/Fはネットワークやファイル交換により外部システムとデータを交換する部分のこと。開発しているシステムから、自社の期間システムに対して、あるいは他社の取引システムや決済システムに対して個別の方法で連携することを想定している。
外部システムI/Fの方式
同期か非同期に分かれる。
同期はリクエストと処理が同時に実行される。例:WebAPI
非同期とはリクエストされたタイミングから遅れて処
はじめての設計をやり抜くための本【設計編】第3章外部設計の手法⑤画面設計
画面設計の進め方
画面設計で作成するもの
・UIポリシー
・画面遷移図
・画面一覧
・画面モックアップ
・画面入力チェック仕様書
画面設計とデザイン
画面設計はシステム担当者が技術的な視点で設計するもので、機能要件で定義された機能をシステムが提供できるように設計する。システム担当者とデザイナーが行う業務は分ける(担当者の力量、時と場合によりさまざま)
どのようにわけるかは明確に合意する必要がある
はじめての設計をやり抜くための本【設計編】第3章外部設計の手法④概念モデリング
概念モデルとは
要件定義で作成されることがある。その後、設計のフェーズで画面設計などの外部仕様を整理するうちに、足りない概念が発見されることはよくある。
そのため、設計の中で更新される可能性が高い。設計者が概念モデルを更新するか、要件定義者が更新するのかは状況により異なる。
ユースケースがシステムの動的な振る舞いを表す。対して概念モデルはシステムの静的な構造を表す。ユースケースで記述した様々な概
はじめての設計をやり抜くための本【設計編】第3章外部設計の手法③ユースケース分析
ユースケース分析とは
※一般的には要件定義(主にユーザー企業)として行われる。設計者の仕事ではない。ただし、ユースケースから画面や外部システムI/Fなどの外部仕様を導き出すので「ユースケースは何で、どういうものか」という概要は知る必要がある。
・従来では要件定義書はWordで標準的な基準も規約もなく設計者の頭の中の構成が文章となって記載されているだけ。それをユースケースを使うことで、要件の粒度や表
はじめての設計をやり抜くための本【設計編】第3章外部設計の手法②必要な業務知識
要件定義や外部設計にはユーザー企業の業界に関する業務知識が必要。
業務知識とは、特定の分野の業務を行うために必要な知識のこと。
【例】
・会社ごとに違う原価計算方法や管理会計
・会計であれば簿記レベルの会計知識
・物流会社などで商品搬入後に商品明細が判明する
(入庫処理のタイミングが後)
要件定義や外部設計のような開発プロセスの上流工程では業務知識と経験が必要。その業界の業務知識を顧客の業務担当者
はじめての設計をやり抜くための本【設計編】第3章外部設計の手法①外部設計とは
◆外部設計とは
システムが具体的な外部仕様を決定する作業のことで、システムが利用者や外部システムに対して提供する機能やインターフェイスのこと。システムを外部から見た時のシステムの仕様を指す。
システムの設計では入力と出力を明確にすることが基本。システム全体の入力と出力を明確にすることが外部設計である。
外部設計の最も重要な目的はシステムの外部仕様を設計すること。
外部設計が要件定義と異なる場合、
はじめての設計をやり抜くための本【設計編】第2章設計の目的⑥設計のアプローチ
◆外部設計と内部設計
基本的に設計工程の分け方について統一した定義はない
【当該書籍での分け方】
・外部設計≒基本設計、機能設計、概要設計
・内部設計≒詳細設計、プログラム設計
◆外部設計、内部設計の定義
・外部設計
システムの具体的な外部仕様を設計する作業。外部仕様とは、システムがユーザーや外部システムに対して提供する機能やインターフェイスのこと。
システムの設計では、入力と出力を明確にするこ
はじめての設計をやり抜くための本【設計編】第2章設計の目的⑤良くない設計
良くない設計書の共通点は下記の3点が記載されていない。
・目的
・情報の関連
・情報の詳細化
→設計書は要件から論理的にブレイクダウンされていなければならない
要件を実現するにはシステムの利用者に対してどのような機能が必要でその機能を実装するにはどのようなプログラミングが必要か順番にブレイクダウンする。
設計書に記述する内容について情報間の関連を明確にする。
・この設計書に記載されている内容はど