2008年03月30日

試験駆動開発雑感

知人のblog記事ながら。

[TDD]id:t-wada先生のつぶやきメモ(ただぶろぐ)の内容に全面的に賛成。

TDDの是非はともかくとして。

TDDが好きな人は、テストを書きながら対象のクラス・メソッドの仕様を設計しているし、メソッドのインタフェース仕様(インプット・アウトプット)を決定している。
体感的には、テストを記述しているときにこそけっこうぐだぐだとテスト内容を見直したりテストの構成を変えたりと試行錯誤を繰り返すけれど、実コードはせいぜいリファクタリング程度で、あまり大きな見直しはそうそう起こらない。
だから、コードファーストで書くよりはコーディング時間は確かに長いが、本人の開発リズム感はけっこういいテンポになっている。リズム感の充実は快感に変わる。

TDDが嫌いな人は、TDDを押し付けられるとまずいつも通り頭の中で仕様を考えてしまう。
その後テストコード書きに移る律儀な人は、必ず「わかっている仕様を記述しているだけ」という退屈感を感じ、実コード書きにすぐにでも移りたくなる。これが開発者自身のリズム感をとにかく崩しまくる。リズム感の崩壊は苦痛に変わる。

開発者がまず第一に考慮しなきゃいけないのは、このコーディングリズム感であり、リズムが崩れるとコードが崩れる。
なので、TDD主義者ながらあえて、TDD脳を培うことのないTDD押し付けには反対したい。

続きを読む
【関連する記事】
posted by 未知夢 at 18:00| 東京 ☀| Comment(0) | TrackBack(0) | Agile応援団 | このブログの読者になる | 更新情報をチェックする

2008年03月26日

[クラス設計のアンチ・パターン]我は管理者

現象

クラス名の最後に、やたらManagerやController、Handler、Supervisorといった名詞が加わっている。

状況

で?このUserAuthorityManagerの役割はなんだって?
え?UserのAuthorityプロパティを見て、その値から判断してアクセスできるデータを選別してるんだって?
なんでそのAuthority自身が主体的に動いてないのさ?え?Authorityはintだって??

で、このUserManagerは?
え?Userを生成するときの構成を管理したり?Userが画面に遷移可能か管理したり?あとUserへのサービス構成の管理もやってるんだって??

…それ、ちゃんとクラス設計してる?

続きを読む
posted by 未知夢 at 01:00| 東京 ☀| Comment(0) | TrackBack(0) | アンチ・パターン | このブログの読者になる | 更新情報をチェックする

2008年03月21日

[Water fall 応援団]確実に設計せよ!

A氏「いやー、まいったまいった。今度のプロジェクトの前のシステムなんだけどさ」

B氏「先輩、どうかしたんっすか?」

A氏「いやもう、ひどいのなんの。アジャイルとかって今流行りのヤツでやっつけたらしいんだけどさ、無いんだよ」

B氏「無いって、コードが?」

A氏「コードはバッチリあったさ。無いのはドキュメント!もうね、客もなにも無いっつーし、ホントに無いんだろうな。おかげでこっちゃ何かにつけてコードと首っ引きさ」

B氏「そりゃキツイっすねー…(ヘタに首つっこまんどこ。くわばらくわばら)」

ウォーター・フォール開発とアジャイル開発の最大の違いは、きちんと設計というフェーズを経ているかどうかだ。これは過去RAD開発というものが出たときも最大の違いとされた点で、スパイラル開発方法論が息を吹き返すたびに繰り返している争点だ。

どうも、よっぽど設計というものが退屈きわまりなく、プログラマという連中はそれをないがしろにしたいらしい。

しかし設計をおろそかにすると、しっぺ返しが必ず返ってくるものだ。

  • 設計書をきちんと取り纏めないと、アーキテクチャの統一が疎かになる。
  • きちんと設計した設計書なしにプログラマにコードを書かせるのは、無謀に近い冒険だ。
  • なにか障害が起こった場合に設計書がないと、それが実装段階で入り込んだものなのか設計から入り込んだ障害なのか、はたまた要件から来ているのか、判別が難しくなる。(そしてそれは契約問題に発展しかねない)
  • システムを保守する段階で、また新しく作り直す段階で、設計書はシステムを正しく伝えるドキュメントとして威力を発揮する。

だからこそ、きちんと設計フェーズを設けているウォーター・フォール開発が有効なのだし、根強く人気があるんだ。

続きを読む
posted by 未知夢 at 00:00| 東京 ☔| Comment(4) | TrackBack(0) | Water fall 応援団 | このブログの読者になる | 更新情報をチェックする

2008年03月16日

[クラス設計のアンチ・パターン]頭痛が痛いクラス名

現象

クラス名の最後にData、Info、Information等という余計なモノが付いている。

状況

俺達が日々とり扱っているモノはなんだ?「情報」だろ?「データ」だろ?
わざわざそんな分かり切っている事をクラス名に付けたがるその冗長性はなんだ?

なんでそのクラスだけデータだ情報だと特別扱いしなくちゃいけないのか、そこんとこからまず膝を割って考えてみようじゃないか。

続きを読む
posted by 未知夢 at 01:00| 東京 ☀| Comment(0) | TrackBack(0) | アンチ・パターン | このブログの読者になる | 更新情報をチェックする

2008年03月12日

"彼ら"と"我々"のチガイ(マネジメント編)

  • "彼ら"は契約とその履行を第一に行動する。
  • "彼ら"はプロジェクトを「自らの責任で失敗させたくない」と考える。
  • "彼ら"は理想からの乖離で全てを測る。
  • "彼ら"はプロジェクトメンバーを管理する。
  • "彼ら"はプロジェクトメンバーをも数で管理する。
  • "彼ら"は進捗をパーセンテージで知ろうとする。
  • "彼ら"は数値を溺愛する。
  • "彼ら"は未決事項をあいまいにして進めることを好む。
  • "彼ら"はチームメンバーを統率・監督する。
  • "彼ら"にとってモチベーションとは個々人の問題にすぎない。
  • "彼ら"のチームに対する静的な接し方は軋轢の元になる。
  • "彼ら"はチームメンバーが勝手な事をして予測不能性が高まる事を恐れる。
  • "彼ら"はKLOC等でプロジェクトを定量的に予測しようとし、結果を予測に合わせようとする。
  • "彼ら"は新しいものや概念を導入することを極端に嫌う。
  • "彼ら"にとってコスト意識とはいかに期限内に最小の人員・資源構成で完成させるかでしかない。
  • "彼ら"にとっての仕事とは、ほぼ100%デスクワークだ。

 

  • "我々"は顧客とその満足度を第一に行動する。
  • "我々"はプロジェクトを「何がなんでも成功させたい」と考える。
  • "我々"は現実で全てを測る。
  • "我々"はプロジェクト自身をマネジメントする。
  • "我々"はプロジェクトメンバーの状況・状態を常に気にする。
  • "我々"は進捗を実際の出来高で知る。
  • "我々"は数値を従える。
  • "我々"は未決事項をも含め、物事を確実にしながら進める。
  • "我々"自身もチームメンバーの欠かさざる一員である。
  • "我々"にとってチームの動機付けとはなによりも大切にすべき原動力だ。
  • "我々"はチームが求める事を常に考え、ファシリテーション・ゲーム・コーチング・インタビューと、必要だと感じたあらゆる事を実行する。
  • "我々"はチームメンバーの自発的なプロジェクトへの関与を歓迎し、奨励する。
  • "我々"は成果物の規模に関する予測値はどうやっても「予測」の域を出ない事を知っていて利用する。
  • "我々"はそれが古かろうが新しかろうが、チームにとって役立つなら躊躇無く導入する。
  • "我々"にとっては効果的で的確な開発を行い、顧客の利とする事でWin-Winの関係を築き上げ、常に次に繋げることこそがコスト意識だ。
  • "我々"はかなりの時間をかけてチームの中をフィールドワークし、その合間にデスクワークをこなす。
続きを読む
posted by 未知夢 at 00:44| 東京 ☀| Comment(0) | TrackBack(0) | システム開発 | このブログの読者になる | 更新情報をチェックする

2008年03月11日

"彼ら"と"我々"とのチガイ

  • "彼ら"にとってはプログラムはマシンへの命令そのものだ。
  • "彼ら"はプログラムをマシンへの命令の組み合わせのように書く。
  • "彼ら"のコードは良くてコメントだらけ、悪いとわけのわからない呪文になる。
  • "彼ら"は条件分岐やループが大好きで、まるで魔術師のようにそれを操る。
  • "彼ら"はモジュール/クラスをつくる事を厭う。
  • "彼ら"はシステムの表層を考えるだけに終わらせたがる。
  • "彼ら"はひとのコードを読まない。
  • "彼ら"は書いているコードを他人に見せたがらない。
  • "彼ら"は仕事だから言語を覚える。
  • "彼ら"は言語の新しい仕様を暗記すべきめんどくさいものと捉える。
  • "彼ら"は仕事だからプログラムを組む。
  • "彼ら"は自らをSEと呼んだりSIerと呼んだりなにかと差別化を図りたがる。

 

  • "我々"にとってはプログラムこそがソフトの最終的な設計書だ。
  • "我々"はプログラムを文章のように書き、マシンへ行わせたい事が明確にわかるように書く。
  • "我々"のコードはコメントが最低限あればよく通じ、文書のように読める。
  • "我々"は条件分岐やループをなるべく減らそうと親の敵のように平坦にする。
  • "我々"は適度に細分化された状態のモジュール/クラスが好きだ。
  • "我々"にはシステムの仕組みを考える事がまたいい刺激になる。
  • "我々"は悪文も最良のコードも同じように読みこなし、最良のコードに感動する。
  • "我々"は常に隣人の・向かいの・そして未来の他人の目を感じながらコードを書く。
  • "我々"は好奇心に心をふるわせて言語を覚える。
  • "我々"は言語の新しい仕様が出てくるとその背景に想いを馳せる。
  • "我々"はプログラムを組む事自体がまた楽しい。
  • "我々"はプログラマであると胸を張って言える。
続きを読む
posted by 未知夢 at 01:09| 東京 ☀| Comment(0) | TrackBack(0) | システム開発 | このブログの読者になる | 更新情報をチェックする

2008年03月09日

[Water fall 応援団]開発のリズムとサイクル

とあるアジャイル開発に参加するA氏は、プロジェクトから外してもらうよう、上司のC氏と交渉していた。

「とにかく疲れたんです、毎日毎日やっている事はまったく変わりない。要件聞いて、設計して、実装して、テストして、納品。要件聞いて、設計して、実装して、テスト。そしてまた要件聞いて、設計して、実装して、テスト。ずーーーっと、この繰り返しだけですよ。なんの変化もなく。なんの進展感もなく。疲れるのは当たり前でしょ?」

A氏の言い分をじっと聞いていた上司のC氏。

「あのプロジェクトはとても上手くいっていると聞いていたが…。ではキミは、従来的な開発を行っているプロジェクトに移りたいんだね?」

「ええ。あの、期限までにフェーズを終わらせるという緊張感、そしてフェーズが終了した時の達成感が、私は今たまらなく恋しいんです。」

アジャイル開発では、とかく速いサイクルでイテレーションをまわす。ひとつのイテレーション中では様々なことを行うが、イテレーションごとの変化というものはじつはそんなに無い。
これはじつのところごく当たり前の話で、旨くいっていればいっているほど、イテレーション毎の工程は安定せざるをえないのだ。だからこそつまらなくなっていく。

それに比較して従来型と言われるウォーター・フォール開発では、一つひとつの工程(フェーズ)を丁寧にこなしていく。ひとつのフェーズが完了してから次の工程に移る。
このシンプルなスッキリ感とそれによるリズム感と完全性こそが、今でもウォーター・フォール開発が好まれ支持される理由だ。
参考までに、フェーズは基本的に次のように流れる。

  1. 要件定義
  2. 基本設計
  3. 機能設計
  4. 詳細設計
  5. 実装
  6. 単体テスト
  7. 結合テスト
  8. 統合テスト
  9. 納品

※現場によってフェーズの呼び方が違っていたり、フェーズに若干の食い違いがある。

続きを読む
posted by 未知夢 at 01:30| 東京 ☀| Comment(9) | TrackBack(0) | Water fall 応援団 | このブログの読者になる | 更新情報をチェックする

2008年03月08日

ウォーター・フォール 応援団をはじめるにあたって

最近とみに、アジャイル?などという軽薄な開発方法論が若い層を中心にもてはやされ、大手を振っているようだ。
しかし、「新しいから良いもの」などという認識では幼稚にも程があるだろう。

せっかくの機会だから、従来型ウォーター・フォール開発について見つめ直してみたらいいんじゃないか、などと帰宅する電車のなかで考え出したら、これがなかなか面白くなりそうなのだ。
善は急げ、さっそくやってみる事にする。

posted by 未知夢 at 23:20| 東京 ☀| Comment(0) | TrackBack(0) | Water fall 応援団 | このブログの読者になる | 更新情報をチェックする

えーと(汗)

そ、そろそろまたボチボチと復活の気配(汗)

す、ストレス溜まってくるとネタが増える傾向にあるな〜

…書く時間の方が全然足らなくてどうしようもないんだけどね。

posted by 未知夢 at 23:01| 東京 ☀| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2007年07月10日

未知夢で(BlogPet)

未知夢で、究極にマッチしたの?


*このエントリは、ブログペットの「BIT」が書きました。
posted by 未知夢 at 11:11| 東京 ☔| Comment(1) | TrackBack(0) | ブロぺ | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。