アンチパターン
[Wikipedia|▼Menu]

ソフトウェア開発におけるアンチパターン (: anti-pattern) とは、必ず否定的な結果に導く、しかも一般的に良く見られる開発方式を記述する文献形式を言う[1]。その内容は、基本的には、否定的な開発方式の一般的な形、主原因、症状、重症化した時の結果、そしてその対策の記述からなる[2]

デザインパターンを補完・拡張する関係にあるもので、多くの開発者が繰り返すソフトウェア開発の錯誤を明確に定義することにより、開発や導入を阻害する一般的で再発性の高い障害要因の検知と克服を支援することが目的である[3][4]
概要

ある問題に対する、不適切な解決策を分類したものをアンチパターンと言う[5][6]。アンチパターンという呼び方は、アンドリュー・ケーニッヒ(英語版)が1995年に作り出したもので[7]、後に書籍The patterns handbook[8]で再掲された。

ギャング・オブ・フォーの書籍『オブジェクト指向における再利用のためのデザインパターン』からヒントを得て、書籍AntiPatternsが出版され、3年後には「アンチパターン」という単語はソフトウェアの設計から一般的な社会の相互作用についても広く用いられるようになった。AntiPatternsの著者によれば、アンチパターンと単なる悪癖、悪習などと区別するには二つの要素があるという。

動作やプロセス、構造についての繰り返されるパターンで、最初は有益だと思えるが、最終的に悪い結果をもたらすもので、

リファクタリングするための方法が存在し、文書化され、実例で証明されており、再現可能であること

数多く挙げられたアンチパターンは、矛盾した言葉侮蔑的に用いた新しい用語で呼ばれ、可能なら避けられるべき、単なる誤り、未解決の問題、悪習以上の意味を持っている。「落とし穴」や「暗黒のパターン」とも呼ばれる別の呼び方があるが、これは、悪い問題の解決策が再発明されることを指す。こうしたアンチパターンの候補は、公式にアンチパターンとは考えられない。

繰り返される間違いを記述することによって、繰り返しにつながる力学的な構造や、誤ったパターンを取り除くようリファクタリングする方法を学習することができる。
よく知られるアンチパターン
ソフトウェア開発のアンチパターン


肥満児(The Blob)
肥大化したオブジェクト
お邪魔妖怪(英語版) (poltergeist)
オブジェクトに情報を渡すことだけが目的のオブジェクト
溶岩流(lava flow)
除去することが非常に困難で、結果が予測できないために悪い(冗長で品質の低い)コードを維持する[9][10]
打出の小槌(golden hammer)
気に入った方法が、あらゆるところで利用できると思い込む(銀の弾丸も参照)
スパゲッティコード (spaghetti code)
構造がほとんど理解できないようなシステム、特にコードの構造が誤っているもの
切り貼りプログラミング(英語版)(copy and paste programming)
汎用的なコードを作らず、既存のコードをコピーし(改変して)使う
曖昧な視点(英語版)(ambiguous viewpoint)
(通例オブジェクト指向分析設計において)表現される視点を示さずに記述されたモデル
入力クラッジ(英語版)(input kludge)
正しくない入力の検出や扱いの失敗
暗室栽培(英語版)(mushroom management)
部下に情報を伝えなかったり、誤った情報を伝える(暗所で栽培する)
ソフトウェア基盤のアンチパターン
システムのおんぼろ煙突化
(英語版)(stovepipe system)
複雑に相互関連したコンポーネントからなる、メンテナンスが困難なシステム
砂上の楼閣 (vendor lock-in)
外部提供のコンポーネントに極度に依存したシステム[11]
組織硬直(英語版)(design by committee)
多数の人間が設計に関与しているが、統一された考え方がないこと
車輪の再発明 (reinventing the wheel)
すでに知られている適切な解決方法を採用しない
組織上のアンチパターン
ドル箱商品
(英語版)
収益が上がっている古い製品に満足して、新しい製品に無頓着になること
約束の拡大(英語版)
後で誤っていると判っても、決定を取り消せないこと
閻魔の組織管理(英語版)
異議を許さない、独裁的な組織管理方法
モラル・ハザード
意思決定者が、意思決定の結果から隔離されていること
縦割り(英語版)
上下方向の情報の流れが強く、組織間のつながりを禁じる組織構造
プロジェクト管理上のアンチパターン
分析地獄
(英語版)(analysis paralysis)
プロジェクトの分析段階に、不釣合いなほどの労力を費やすこと
デスマーチ (Death March)
プロジェクトが大失敗に終わることを CEO 以外全員が気づいているが、プロジェクトはデイ・ゼロ(ビッグバン)が来るまで無理やり存続させられる。あるいは、理解できない締め切りのため、従業員が深夜や休日まで勤務するよう強要される
集団思考 (Group Think)
集団の各メンバーが、同意が得られそうな領域以外の考え方を避ける
手品師 (ソフトウェア)(英語版)
未実装の機能を実装されているように見せる
ソフトウェアの肥大化 (Software Bloat)
システムの後続のバージョンに、より多くの人員が必要になる
スコープ・クリープ (Scope creep)
プロジェクトの開始後に、プロジェクトのスコープ(範囲)が継続的に変化または適切な管理無しで増大する
オブジェクト指向設計のアンチパターン


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:24 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef