タグ

ブックマーク / blogs.itmedia.co.jp/hiranabe (7)

  • 神様ルートクラスを嫌い、POJOを好む:An Agile Way:オルタナティブ・ブログ

    ぼくがオブジェクト指向言語を勉強しはじめた90年ころは、「継承」という概念がとても流行っていて、継承によって「差分プログラミング」ができることがオブジェクト指向設計の再利用性の典型例のように言われていた。もちろん、こういう誤解は95年くらいには、みんなウソだと分かってきていた。 しかし、それでもときどき、 すべてのクラスの頂点のような「神様クラス」を作ってしまうことがある。 例えば、90年代の多くのC++オブジェクト指向データベースは、Persistenceのようなクラスを継承することで永続オブジェクトとなるクラスをマーキングしたり、あるベンダーのコレションクラスは、Objectというクラスを継承したクラスのオブジェクトのみがコレクションの要素となることができたり、という具合に。また、EJBも最近まではEntityBeanを継承することでEntityBeanの資格が得られるし、Servel

    神様ルートクラスを嫌い、POJOを好む:An Agile Way:オルタナティブ・ブログ
  • KPTを使ったプロセス改善:An Agile Way:オルタナティブ・ブログ

    ソフトウェア開発の繰り返し単位(イテレーション)ごとに、そのタイムボックスで行なったことを反省し、未来に生かせるように口に出してみる、という活動を行なう。これは、反省会、回顧、Retropective、Reflection、などと呼ばれる(ぼくは「ふりかえり」という言葉が好きだ)。 アジャイル開発ではこの「ふりかえり」が「KAIZEN加速装置」となる。 これを行なうときに使うフォーマットを写真に示した。ぼくはこれをKPT(ケプト)と呼ぶ(Keep/Problem/Try)。Alistair Cockburnから教えてもらったもので、ぼくはこのフォーマットのヘビーユーザー。 ホワイトボードが3つのセクションに分かれており、Keep(このまま続けること)、Problem(問題点)、Try(次に試してみたいこと)と名前が付けられている。全員参加のふりかえりミーティングを開き、そこで、今回のイテレ

    KPTを使ったプロセス改善:An Agile Way:オルタナティブ・ブログ
  • ナチュラルなコードとは?:An Agile Way:オルタナティブ・ブログ

    題名は、音楽の話に聞こえるかもしれませんが、ソフトウェア開発の話です。 以前、咳さんが体験談として >「お前のコードはナチュラルでエレガントだ」 >と言われた時は うれしかったなあ と語ってくださったことから、ちょっと思い起こしてみました。「ナチュラルなコード」とはなんだろうか、ということを考えてみたい。ぼくは、何かのかインタビューで読んだ、Ward Cunningham の言葉がとても強く印象に残っています。 ...(要約するとこんな感じ)... そのコードは、すばらしいコードだった。ソースリストをプリンタに出力すると、 それは、「どこからでも読み始めることができ、意図が明確だった」 ............................ 「どこからでも読み始めることができる」(!)というのは、オブジェクト指向のよいコードの特徴じゃないだろうか。 (以前、oosquare-ml だっ

    ナチュラルなコードとは?:An Agile Way:オルタナティブ・ブログ
  • テストの役割=進捗管理+設計戦略:An Agile Way:オルタナティブ・ブログ

    「EoM=EoC+EoT」を鍵概念として、良い設計とは何か、よいプロセスとは何か、を再定義しようとしている。今回は、テストの役割について再考する。 テストは設計とプロセスの両方の基単位だ。まず、テストと進捗管理の話をしたい(テストとドキュメントの話、テストとコミュニケーションの話、テストと開発リズムの話、などと続く予定)。 みなさんは、進捗指標として何を使っているだろうか?「工程ごとに違うが、成果物の完成に対する到達度だ」という答えが一般的だと思う。しかし、「設計書90%完成という報告が2週間続いている」というような進捗会議に参加したことはない? (きっとあるはずだ。) ぼくが考える進捗管理の基は、 の3点だ。先に述べた「設計書のページ数」という単位は、3つの条件をどれも満たしていない。すべての設計書を否定するつもりはないが、設計書は内部の中間生産物であることが多いし、100%終了とい

    テストの役割=進捗管理+設計戦略:An Agile Way:オルタナティブ・ブログ
  • 「保守しやすい」ことが、良い設計(EoM = Ease of Maintenance):An Agile Way:オルタナティブ・ブログ

    前2回で、オブジェクト指向を「テスト容易性」と「変更容易性」を中心に再定義したい、という話をした。 従来オブジェクト指向の説明に使われている概念、およびそこから得られる(といわれている)再利用性という品質からではなく、 テスト容易性: EoT = Ease of Testing 変更容易性: EoC = Ease of Changing という2つの概念からが、(現代的な)オブジェクト指向設計の焦点であることを主張してきた。最後、なぜこの2つが必要なのか、というと、それは、メンテナンスのしやすさ(EoM=Ease of Maintenance)を高めるからだ。そして、このEoMこそが、2005年のソフトウェア開発の根品質だ、と言い切ってまとめたい。 EoMの高い設計が、よいオブジェクト指向設計である。 ということである。今回は、前回書いた、EoT/EoCそして、このEoMについて、ソフト

    「保守しやすい」ことが、良い設計(EoM = Ease of Maintenance):An Agile Way:オルタナティブ・ブログ
  • 「変更しやすい」ことが、良い設計 (EoC=Ease of Changing) - An Agile Way [ITmedia オルタナティブ・ブログ]

    前回は、EoT(Ease of Testing: テスト容易性)によってよいオブジェクト指向設計を再定義したい、という表明をした。今回は、二目のナイフを抜きたい。キーワードは、EoC(*1)(Ease of Changing)、変更容易性だ。 この記事では、 EoCの高い設計が、よいオブジェクト指向設計である。 と主張したい。設計品質の中で、「変更容易性(EoC)」を最上位と見る。 ここ10年のオブジェクト指向の最大の失敗は、「再利用性」をその最大の価値、として説明しようとしてきたこと。そして分かったことは、再利用がその努力コストに見合う効果がでることは極めて稀であること、また、テクノロジではなくソーシャルな活動が再利用に効くこと、さらに、コードの再利用ではなく、ナレッジの再利用(例えばパターン)の方が、まだ可能性があるということ(少なくとも2005年のコンテクストでは)。 再利用性では

    「変更しやすい」ことが、良い設計 (EoC=Ease of Changing) - An Agile Way [ITmedia オルタナティブ・ブログ]
  • 「テストしやすい」ことが、良い設計(EoT=Ease of Testing) - An Agile Way [ITmedia オルタナティブ・ブログ]

    良い設計とはなにか、と問われて、凝集度と結合度に関する議論を思いつく人も多いだろう。しかし、この定義によりもっと具体性がある設計方針として、テストを考える。テストの視点によってオブジェクト指向を再定義したい。キーワードは、Eon(Ease of Testing)、テスト容易性だ。 ぼくは、 EoT(*1)の高い設計が、よいオブジェクト指向設計である。 と主張する。設計品質の中で「テスト容易性(EoT)」を最上位と見るのだ。オブジェクト指向のさまざまな機構、用語、考え方は、すべて EoT のため、と捕らえられる。例えば、

    「テストしやすい」ことが、良い設計(EoT=Ease of Testing) - An Agile Way [ITmedia オルタナティブ・ブログ]
  • 1