ソフトウェア開発メモ

日々のソフトウェア設計、実装で考えている、気づいた事を書いています。それが真実か否かは保証しません。悪しからず。

責務駆動設計

オブジェクトの責務について

オブジェクト指向についてよく言われる責務について、Mac付属の英英辞典で調べると以下の意味がある。 the state or fact of having a duty to deal with something or of having control over someone: women bear children and take responsibility for ch…

単一責務とクラス分割〜分割と振る舞いのチューニング

クラス合成とタスク合成 - 概念構築メモ クラス合成とタスク合成 - 概念構築メモ のつづき 最近、クラスは可能な限り細かく分けるべき方向に変わって来た。所謂、スモールオブジェクトプログラミングとかいう奴ですな。 ただ当たり前だけど、それだと何処か…

オブジェクトデザイン 3.5 候補を記述するについて

引き続き読書、オブジェクトデザイン 3.5 候補を記述するについてです。 名前とロールの実際の役割の整合性について評価します。ステレオロールタイプを当ててクラス候補を性格づけてみます。ステレオロールタイプについてですが、厳密に従う必要性はなくあ…

責務駆動設計:オブジェクトの命名方法

引き続きオブジェクトデザインです。 クラス名は大事です。クラス名によってどういう知識と行動を持たせるべきかが理解できます。また、 クラス名を言葉につねに表現する事によってどういう役割を果たすべきか自覚するようになります。 ただ、これが難しい。…

責務駆動設計:オブジェクトの発見方法

オブジェクトデザインの第3章 オブジェクトを見つけるについてです。 設計ストーリー 以下の観点で設計ストーリーを書きます。 ユースケース、要求、アーキテクチャ、ユーザー、予算責任者等様々な視点 アプリケーションが行なうべき事。 アプケーションで…

制御型スタイルについて。集中型と委譲型のバランスを取る。締める時には締める管理職

「オブジェクトデザイン」の第6章、制御スタイルを読んだ感想です。 6.2制御スタイルの選択肢の記述、「実際は集中型、委譲型、分散型のスタイルを結ぶ何れかに解決策があります〜」について。 部下の管理とおなじで単に仕事を委譲させるだけでは緊急時等、…

制御スタイルのトレードオフ

引き続き書籍「オブジェクトデザイン」の制御スタイルについて読みました 集中型制御スタイル。 長所。 判断ロジックが制御役に集中するので制御ポリシーのロジックを変え易い。 オブジェクト間の同期を取るのが簡単 短所 状態変数を多く所持してしまう。 制…

制御スタイル

はじめに 書籍「オブジェクトデザイン」の制御スタイルについて読んだ結果をまとめました。こうして書いてようやく理解できた感じ。この本は他のそれと違って読んだだけでは頭に入りにくい。 集中制御型 該当するステレオロールタイプは制御役 状態変数の多…

クラスのインスタンス変数について、属性、状態、コラボレータの違い

状態とコラボレータの違い 状態は属性=バリューオブジェクトになるだろう。 コラボレータは状態とその配下のコラボレータを保持しているクラス、つまり制御的性質を持つクラスになると思う。 ただ、この区別は明確にには区別できないし、大体の傾向で区別す…

プロトコルについて

クラスを独自に分類してみました。 分類例 AVVideoCompositing:責務を表す? UITableViewDataSource:ロール、人工品? UITableViewDelegate:ロール、人工品? NSTextLayoutOrientationProvider:責務を表す? NSURLAuthenticationChallengeSender:責務を表す…

コラボレーションのシミュレーション

はじめに オブジェクトデザインの5.5章、「コラボレーションをシミュレートする」に読んで纏めました。 目的 単にコラボレーションを設計しただけでは抜けが有ります。そこでレビューをします。ただ、責務駆動設計ではチームメンバーを集めて各人がオブジェ…

HeathKit CRCカード(作成中)

HKBiologicalSexObject HKBloodTypeObject HKHealthStore HKObject HKSample HKCategorySample HKCorrelation HKQuantitySample HKWorkout HKObjectType HKCharacteristicType HKSampleType HKCategoryType HKCorrelationType HKQuantityType HKWorkoutType …

Game Kit CRCカード(作成中)

はじめに 単なる自分の勉強用です。Gameの勉強をする人は他のサイトでお願いします。 GKAchievement 達成度 情報把握責務 達成の識別子、達成したか否か、達成率を保持します。 実行責務 プレイヤー?へチャレンジを発行します。 協調クラス GKPlayer player…

コラボレーションを識別する戦略

オブジェクトデザイン 5.4 コラボレーションを識別する戦略」を読んでまとめてみました。 ユースケースや設計ストーリーをたたき台に、コラボレーションをくみ上げて行きます。実際には責務発見の作業と並行に行う事になると思います。 また、デザインパター…

オブジェクトが行う判断

オブジェクトの責務の一つに判断責務が有ります。何頭のメソッドが呼ばれた、あるいはイベントを受けた時に自身の状態(状態変数)、他のコラボレータの状態を見て、自身がアクションを起こしたり、他のコラボレータに指示を出す。

オブジェクトへ責務の割り付ける為ために

「オブジェクトデザイン 4.3章 責務を割り合てるための戦略」を読んでまとめてみました。こうして見ると、GRASPの責務割当指針、 レイヤー化の指針(関心事の分離)を擬人化した視点で行うようですね。 CRCカード等に割り当てた責務を記録する そうしないと訳…

ステレオロールタイプについての解説

書籍「オブジェクトデザイン」でいうステレオロールタイプについて自分なりの補足解説です。話半分に。 情報保持役 言うまでも有りませんね。エンティテイクラスとか当てはまると思います。 構造化役 親子関係を持つクラス。UIViewが有名ですね。 後、〜Sess…

責務の見つけ方

はじめに 書籍「オブジェクトデザイン」の4.2章、「責務はどこから見つかるか」の所を見直して再解釈しました。あくまで自分流の解釈になるので書籍を読む事をお勧めします。実際はシーケンス図やコミュニケーション図と併用する、追加クラスの発見と併用す…

〜Request系(要求)クラスと〜Response系(メッセージ)クラスが分かれている訳

Web系言語でネットワーク、サーバープログラミングをガンガンやっていた人は周知の事実で今更感が有るけど、自分のためにソフトウェア設計の見地からおさらいしておきます。ちなみに〜Request(系)クラスが自ら送信する責務を持っている前提で話します。持…

オブジェクトの責務について

オブジェクト(クラス)の責務は以下の順番から考えると腹にうまく落ちて行く感じ。 情報(インスタンス変数、プリミティブ型やValue Object)を把握する責務。 協力者(関連オブジェクト)に仕事を指示する責務。 直接の協力者、あるいは外部のオブジェクトから…

iOSクラス探訪 〜Store/〜Library系クラス編

前回に引き続き、色々調べてみる。 ドメイン駆動設計でいうリポジトリクラス?。名の通りエンティティ系オブジェクトを貯蔵し、各問い合わせに応じて取り出し、保存を行うタスクを持つクラスが多い。この名前を持つクラスも外部に提供するサービスがクラスに…

SKPaymentQueueクラスの責務について考察

SKPaymentQueueには支払い行列管理の他にダウンロード商品のダウンロードを開始、一時停止、再開、中止するメソッドがある。いわば2つの顔がある。 クラスの責務が超過気味じゃないか?、SKPaymentQueueとSKDownloadQueueの2つに分けるべきじゃないと思う…

Store Kit CRCカード

はじめに 書いて見た。実際に文章に起こすと難しい。 SKDownload 商品ダウンロード ロールステレオタイプ 情報提供役? 情報把握責務 App Storeからダウンロード可能な商品を表現します。 その商品のダウンロードの進捗状況、ダウンロード先のファイルパスを…

責務駆動設計について(責務駆動設計≠責務駆動分析)

はじめに 上記について、再度、本を読んだり調べたりした結果、責務からクラスを抽出するものと勘違いしていました。設計という名前の通り、責務を本格的に考えるのは設計フェーズのようです。他の手法同様、分析工程ではまずクラスを抽出します。 そこでど…

ロール名(役割)とクラス名の違い

よく忘れるので本やネットで調べた事を箇条書きにしてみる。というか頭の中を整理 ロール名とクラス名は同じでもよい。ただしクラスが別のロールを兼務する場合があるので注意する。 ロール名は責務を表すことがある。 ロール名はインターフェース名になる場…

Game Kitのクラス概念について

Gameプログラミングはやった事がなく。昔、Xevilというlinuxのオープンソースを勉強がてらに読んだのと、つい最近、仕事が暇だったのでSprite Kitを使ってブロックくずし(のようなものを)作ったぐらい。んで、Game Kitを構成するクラス概念は調査すると面…

機能と責務

オブジェクト指向によく出てくる(クラス、オブジェクトの)責務という用語について、よくよく考えたら曖昧な用語だと思う。 なぜ今迄気づかなかっただろうか? クラスのリファレンスマニュアルを見ても大抵「この責務とは〜」とは書いてないし、単にメソッ…

間違って広まったオブジェクト指向。オブジェクト指向=かぶりものコント

もやもやが晴れたようにわかる 。 実行中のプログラムから作成したオブジェクト図とコミュニケーション図で学ぶオブジェクト指向 - Qiita にも書いたけど、大学入学から20年経って、それなりに実務経験と設計力がついた今となってはオブジェクト指向は誤っ…