ノート:粒度

ページのコンテンツが他言語でサポートされていません。

外部リンク[編集]

普段使っている意味を頭の中でまとめて粒度の項を作ったのですが、使用例は見つけられても、これといって定義といえるソースが見つかりません。検証可能性が必要だろうと思うので定義を探しています。兎山帰郎 2006年11月11日 (土) 07:55 (UTC)[返信]

検証可能性のために

サービス 粒度
機能 粒度


本文から自主削除したもの[編集]

== 概説 ==
粒度は、プログラム(ソースコード)について、プログラマーの頭の中で問題となる箇所(用途と関連のある箇所)をピックアップしやすい状態に保守し続けることを意図する文脈の用語である。
コンピューター・プログラミングでは、利用者は用件に合わせて その達成方法(それは関数であったり、オブジェクトであったり、メッセージであったり、スクリプトであったり様々である)を選ぶ、または 用意されている各種機能(これも様々である)の中からいくつかを選んで組み合わせて用いることになる。この際、1つの用件に合わせて1つの達成方法をピックアップしやすかったり、または各種機能の選び方、組み立て方が(例え複雑であっても全用途の組み合わせ的に見て)ピックアップしやすく厳選されている場合、粒度が高いという。
逆に粒度が低いとは、1つの手続きで済むことを2つにも3つにも分けていたり、または1つの機能を実施すると要求していない作業も一緒に行ってしまうことをいう。また変わった例としては、1用件1機能を満たしている機能を作り続けたにも関わらず、全体的に見ると各種機能の数量が手に負えないほど増えてしまって、整理分類が細分化した結果 数の中に埋もれその機能を選びにくくなると、結局 粒度は低いといえる。
粒度を高める方法として、一粒(ひとつぶ)のようにまとめ、一粒(ひとつぶ)のように分離する目安がある。
*機能をまとめること …凝集度を高める
*関連を分離すること …結合度を低める(結合を疎にする)
その用途からみて過剰にデータや機能が分割、分配されて細々(こまごま)になっていると、粉々であり一粒としての粒度は低くなる。
データや機能は用途に合わせて、1つの用件だけを済ます単位に分割する。
データや機能は過剰に分割せず、粉々ではないある程度の大きさ(一粒)に束ねる。
また粒度は、基本的に機能の分割に対して使われるが、汎用的に用いることもできる概念である。凡そ分割を行い単位を作る事柄には、分割が度を過ぎて行われたり、行う余地がある際に 粒度という性質が問題となることがある。例えばオブジェクト指向プログラミングでは クラスを分割する粒度を意識することもできる。
== 対象 ==
=== モジュール ===
モジュール(Module)も分割し単位にされる。モジュールの単位とは、要素となる各ステップ(手続きの手順1、手順2、...といったもの)を集めた1目的分の1ステップをさす。この例のように分割されていれば粒度は高い。
次に例を挙げるが、粒度の決定は各利用者の主観的な判定であるので、あくまで事実の定義ではなく、粒度という用語の定義の使用例に過ぎない。
;例 銀行のATMでの通帳残高照会の場合
:利用者の用件は通帳の残高を調べたいことだから、1手続きで通帳の残高を調べることだけを行える場合は粒度が高い。細かすぎず粗すぎない。
;例 数学のsin、cosの場合
:利用者の用件は座標x、yのどちらかに角度と長さを当てて、対となるもう片方のx、y座標を調べることである。1行で記述できるので粒度は高い。細かすぎず粗すぎない。
=== オブジェクト ===
オブジェクト(Object)は分割された単位である。オブジェクトは、オブジェクト指向プログラミングにとってはそれ自体が単位である。オブジェクトの粒度の高さは、少なくともそのオブジェクトが案件の内容寄りの抽象的なものなのか、あるいはユーティリティーなど具体的な部品寄りなのかによって判定が異なる。
;例 ファイルチューザー(コンピューター内のファイルを選ぶダイアログボックス; file chooser)の場合
:利用者の用件は、主にコンピューター内のどこかにあるファイルを見つけ出し選ぶことである。ファイルチューザーの場合、利用者自らフォルダーを開いて階層を辿っていくという手法を取る。その手法が用件を満たす最善の方法とは限らないが、少なくとも用件は満たせ、用件以外の機能は(あまり)ないので粒度は低くない。
== 関連項目 ==
* 結合度 …粒度が高い対象(粒)は、基本的に 内部の要素は結合度が高く結集し、他の関連のない対象(粒)との間の結合度は低い。
* 凝集度 …粒度が高い対象は、基本的に 内部の各要素は凝集度が高い。

兎山帰郎 2006年11月11日 (土) 08:20 (UTC)[返信]

プログラミングの項は別項目に[編集]

プログラミングの話が濃いので、「例えば」ではなく別項目にしたほうが良いと思われるのですが、いかがでしょうか。ページの履歴の継承ができないので、どなたかできる方よろしくおねがいします。--180.38.232.18 2012年2月10日 (金) 15:24 (UTC)[返信]