解法パターン一覧

解法パターン名 概要
Architecture

開発対象を複数のビューで図表化して、ビジネスとテクノロジをつなぐものです。

BOSS-STS構造

上位モジュール(BOSS)が、源泉モジュール(S)、変換モジュール(T)、吸収モジュール(S)に指示を出す設計構造です。

Design

分析や設計という上流工程の思考を記載します。

Module

関心事を分離して、識別できる単位にすることです。

STS分割

源泉モジュール(S)、変換モジュール(T)、吸収モジュール(S)に分割することです。

Task

動的ビューの設計原則です。並行性やパフォーマンスを改善します。

WhatとHowの分離

何をするのか(What)と、どのように動くのか(How)を切り分けて考える。

イベント駆動の原則

イベントは一箇所で受け取り、アクションは走り切る。

インタフェースと実装の分離

外部から利用される手続きと、内部の実装を分離することです。

カプセル化

変数を隠蔽し、サービス関数を提供することです。

キー変数

問題ドメインの特徴を持つ変数。状態変数やモード変数がキーとなることが多い。

コンポーネント構造図

全体を俯瞰する構造図。アーキテクチャ設計では静的構造図とも呼びます。

シンプルで厳密

良い設計は、シンプル厳密を両立させたものです。

スコーピング

開発の適用範囲を決めること。

セマンティックシフト

異なる問題ドメイン間で、使う用語の意味が変わること。

タスク構造図

動的ビューの構造図です。タスクや割込みという実行要素を構図化して表現します。

ドメイン分割

意味論の異なる問題ドメインの単位に分割することです。

ビューの原則

複数ビューで図表化することで、アーキテクチャを定義します。

ビューポイント特定

視座(ビューポイント)を決めて図表化することです。

フレームワーク

固定部から変動部を呼び出す構造。固定部がフレームワーク。

プラットフォーム化

レイヤー単位で提供インタフェースを開示して、それを利用してアプリケーション開発を行う。

プロダクトライン開発

複数機種のスコープで変動点を定義して、コンポーネントにマッピングする。

モデル化の原則

本質にフォーカスして図表化します。

ライブラリ

変動部から固定部を呼び出す構造。固定部がライブラリ。

レベル化

上位が下位のサービスを利用するという依存性を形成すること。

ロールバック設計

戻る単位をあらかじめ設計していくこと。

上位スケジューラ

タイミング合わせは上位で行う。処理内部のdelayでアナログ的な調整をしない。

並行性の原則

周期ごとに処理を分割します。

例外の原則

正常シナリオ実行中のエラーや例外発生時のリカバリ処理。

分析の原則

WhatとHowを意識して、問題ドメインの本質を探索する思考です。

創発ビューポイント

ビジネスを創発し、テクノロジとつなぐための5つのビューです。

動的ビュー

並行性のビューです。タスク構造図で図面化します。

単一責務

ひとつの箱(モジュール)がひとつの目的を持つように関心事を分離します。

単方向依存

上位が下位のサービスを利用するモジュール形状です。

名前付け

Whatの名称を付ける。

垂直パーティション化

横断的関心や異なるドメインを分離することです。

変動点マネジメント

機種ごとの変動点を明確にして、アーキテクチャとマッピングします。

変数スコープの限定

変数の利用範囲を狭くして、グローバル変数を使わないこと。

実装ビュー

ソースコードの構成や設計実装ルールを表現するビューです。

形状の原則

全体を水平分割垂直分割して、そのルールでコンポーネントを配置する。

情報隠蔽

モジュール内の情報はそのモジュールだけで取り扱うことです。利用のためのインタフェースを公開します。

抽象化と概念化

問題ドメインの本質を見つけて、それに名称を付けて、言語化することです。

捨象

抽象化では本質に着目し、枝葉を捨てます。枝葉を捨てることを「捨象(しゃしょう)」と呼びます。

方針ビュー

設計方針のビューです。アーキテクチャのビジネス視点の一つ。

概念ビュー

製品の価値や差別化のビューです。アーキテクチャのビジネス視点の一つ。

横断的関心

初期化やエラーなど、正常系の設計構造を横断して実現することです。

横断的関心の分離

初期化やエラー処理などをアプリ処理と直交化することです。

水平レイヤー化

正常系処理をアプリ層ーミドル層ードライバ層でレイヤー化する

求心・遠心

求心とは物理値が、徐々に意味づけされ、上位に伝わること。遠心とは、論理値が、徐々に物理値になり、下位へ伝わること。

状態連動

複数の状態遷移が連動して、全体の動きになる設計です。

状態遷移図

イベントと状態の組み合わせで、次の状態とアクションを決定します。

異ドメインの分離

異なる問題ドメインの言葉を混在させないことです。

疎結合

モジュール間の結合を弱くする。

箱の原則

モジュールに「何をするのか」というWhatの名称を付けて、単一目的にする。

線の原則

要素間の利用関係を線で表現します。関数呼出しや変数アクセスが構造図の線になります。

複数ビューポイント

ビューポイントとは視座のことです。複数の視座で観察し図表化することで、製品やシステムのアーキテクチャを表現します。

設計の定石格言

ソフトウェア設計の教訓(Lessons Learned)を列挙しています。

資産化の原則

ソフトウェアを資産として活用する方法です。

走り切り

制御スレッドの入口だけでイベント待ちを行い、制御スレッドの途中で待たずに、入口に戻ること。

部品化

インタフェース定義を有し、置換可能なプログラム。

部品化再利用

コンポーネント単位やレイヤー単位で提供インタフェースを開示して、それを利用してアプリケーション開発を行う。

配置の原則

全体領域を水平垂直分割してコンポーネントを配置します。

静動分離

静的な論理モジュールと動的な実行モジュールの両面で設計し、一貫性が取れていること。

静的ビュー

静的に機能全体を表現するビューです。コンポーネント構造図で図面化します。

高凝集

ひとつのモジュールは単一目的であること。