金曜日, 9月 28, 2007

Waterfallについて

mixiのマイミクさんから別件で、翔泳社さんの「開発の現場 Vol.9」を紹介してもらったのでパラパラと読んでいます。で、ちょっと気になったのが、特集「技術力アップの新常識」のコラムの一つです。というわけでご紹介。

ウォーターフォールは時代遅れ~ウォーターフォールは使い方次第
ウォーターフォールモデルの弊害はさまざまなところで指摘されています。しかし、このモデルが開発の現場でいまだに利用されているのはなぜでしょうか。それは、使い方次第で弊害を克服できるからです。本稿ではそうした、ウォーターフォールモデルを「いけるプロセス」に変身させるためのいくつかの工夫を紹介します。
翔泳社 開発の現場 Vol.9 より text:豆蔵 笠原規男
個人的には一部の分野(基幹系システムや、ミッションクリティカル度の極めて高いシステム開発)を除けばウォーターフォール型のシステム開発は不適切だと考えています。そう考える理由は2つです。
1つは現代に求められる(開発する)ITシステムが高度化し、人間系と密接に絡み合ったものとなったために最初の工程で全てを設計した上で開発する事が非常に高リスクとなった、という仮説です。取扱う問題が広い為に、少人数の担当者(エンドユーザ、システム担当者、開発者)が全てのシステムリスクを短期間につぶすことが困難であるため、段階的に開発せざるをえないと考えています。
もう1つはコストの問題です。ウォーターフォール型のシステム開発プロジェクトは、そのスケジュールの中で必要な要員スキルが大きく変化します。要件定義や設計フェーズでは「設計力」「ヒアリング力」などが要求されますが、開発実装フェーズでは「実装力」「技術力」、テストフェーズでは「テスト力」が要求されます。実際にそれぞれの局面で適切なスキルを持った要員を配置し、局面ごとに切替えていくのは非常に難しい。また、各局面の専門家どうしのコミュニケーションコストを考えただけでも頭がいたくなります。解決のためには要員体制を平準化する必要があるので、単純なウォーターフォール型開発は厳しいのではないかと。

というわけで自分のプロジェクトはだいたいフェーズ分割を行って段階的反復開発にしてしまうのですが、この本で書かれている「アーキテクチャ中心」アプローチは良さそう。ぜひいつか参考にしてみたいと思っています。

開発の現場 Vol.009
開発の現場 Vol.009
posted with amazlet on 07.09.28
SE編集部
翔泳社 (2007/07/12)
売り上げランキング: 46117

ところでこのエントリを書くに当たってWeb上でウォーターフォールに関していろいろと検索してみたのですが、面白かったのがこれ。

Waterfall 2006
(日本語)
2006年に行われたWaterfall型開発に関するカンファレンスのようです。って、良く見ると内容が怪しい。セッションテーマがこんな感じなんですが……
  • 超巨大プロジェクト: どのように遅らせるか - 決して完成しないだろうということを知られないために by Jutta Eckstein
  • コラボレーションの排除: 一人で作業しよう by Jean Tabaka
  • パターンからのアンファクタリング: 読みにくいコードで職を守る by Joshua Kerievsky
  • テスト: 重要な工程を最後に実施する by Lisa Crispin
良く見ると開催日が2006/4/1、開催地はナイアガラの滝です。つまりエイプリルフールネタのジョークページなんですね。知らなかった。

参考:
はてなブックマーク タグ「ウォーターフォール」を含む注目エントリー

水曜日, 9月 26, 2007

刀を抜かずに相手の心を斬る

イキナリなタイトルですが、ソフトウェアテストの権威である電気通信大学の西康晴先生の言葉です。プロジェクトがテスト局面に入ると、常にこの言葉を反芻しています。というわけで、ちょっとご紹介してみます。

テストの達人は開発の達人である
  • 達人は、間合いを掌握する
    • 網羅することで、抜けやモレ、思いこみによるバグを無くす
    • 品質とは何か、を広く考えてユーザの満足度を向上する
  • 達人は、一刀両断にする
    • バグの出やすい弱点を把握し、改善する
  • 達人は、道具の手入れを欠かさない
    • 開発の最初からツールを考慮し、骨の髄まで使いこなす
  • 達人は、型に始まり型を崩し型に戻る
    • 技法の原理原則を理解し、最大限の効果を発揮させる
    • きれいな設計・実装のソフトウェアは、テストも楽である:テスト容易性設計
  • 達人は、気配を感じ取る
    • バグやリスクが発生する前に予兆を検知し未然防止する
  • 達人は、鍛錬を欠かさない
    • 現状に満足せず、常に問題点を探し改善するとともに、勉強を欠かさない
  • 達人は、達人を知る
    • 自分からレビューをしてもらい、良いコードを読み、コミュニティに参加する
  • 達人は、刀を抜かずに相手の心を斬る
ソフトウェアテスト技術 経営情報学会第三回情報システム工学研究部会 資料より (c)西康晴
コーディングテクニックや言語知識は、進歩が早い為にキャッチアップし続けるのはかなり難しい。しかし、テスト技術はそれよりももっと普遍的なものであると思っています(自動テストとかの話題は別)。テスト専門家でなくても、システム開発を行うPMやSEはぜひとも押さえて欲しい所。上記リンクの資料はまとまっているので、読んでみてもよいかもしれません。

金曜日, 9月 21, 2007

エンジニアの課題図書

私はシステム開発プロジェクトでは、もう最近はエンジニアというよりプロジェクトマネージャやリーダーといった役割を求められる事が多くプログラミングをすることは少ないです。しかし意思決定のためにも、またチームメンバとのコミュニケーションや指導教育のためにも、システム開発に関連する技術書やビジネス書は継続的に読むように意識しています。

そういう時にけっこう参考にしているのはJoel Spolsky選定のマネージメントトレーニング用課題読書リストです。まだ全て読了していませんが、かなりイイ選択をしているように思います。

それ以外には、世の中で話題の技術書も押さえるようにしています。
最近だと、

アート・オブ・プロジェクトマネジメント ―マイクロソフトで培われた実践手法 (THEORY/IN/PRACTICE)
Scott Berkun 村上 雅章
オライリー・ジャパン (2006/09/07)
売り上げランキング: 19692

ソフトウェア見積り―人月の暗黙知を解き明かす
スティーブ マコネル Steve McConnell 田沢 恵 溝口 真理子 久手堅 憲之
日経BPソフトプレス (2006/10)
売り上げランキング: 16075

JavaからRubyへ ―マネージャのための実践移行ガイド
Bruce A. Tate 角谷 信太郎
オライリー・ジャパン (2007/04/21)
売り上げランキング: 30599

が特に良かった。
ああ、あとはモチロンこれですね。

要求開発~価値ある要求を導き出すプロセスとモデリング
山岸 耕二 安井 昌男 萩本 順三 河野 正幸 野田 伊佐夫 平鍋 健児 細川 努 依田 智夫 [要求開発アライアンス]
日経BP社 (2006/03/02)
売り上げランキング: 130704

木曜日, 9月 20, 2007

米国と日本のシステム開発プロジェクトの違い

GoTheDistanceに書かれた「アメリカにはSIerなんて存在しない」というエントリへの反応です。要は米国では「企業がシステム開発から運用まで自分たちでやっている」という話です。

以前に要求開発アライアンスの合宿勉強会で、アーキテクタスの細川さんにも同じような事を説明していただいたのを思い出しました。「なぜシステム開発プロジェクトは失敗するのか」に関するディスカッションの中での説明です。

ここで説明された米国企業の特徴としては、

  • 自社内にCIO、アーキテクト、PMをきちんと要している。
  • また、専門技術者も自社内に体制として確保している。
  • ベンダーや専門家が、外部から製品提供や技術支援を行い、開発の一部を海外などの技術者にオフショア開発する。
というお話でした。これに比べて複雑な日本の(一般的な)システム開発プロジェクトでは、構造および責任体系が複雑であるために、いろいろな問題が起こるのでは? というようなお話でした。

今後の流れのひとつとしては、ユーザ企業による(少なくとも設計工程までの)内製化が進んでいくと考えています。協和発酵さんの事例などを見ても、ユーザ企業主導の開発プロジェクトは増えていくように思います。

とはいえ、自分の現在の立ち位置はSIerということもあるので、もっと異なるアプローチはないのか、日々考えています。

水曜日, 9月 19, 2007

バリューアップ手法

日経SYSTEMSを定期購読しているのですが、時折(というかしょっちゅう)様々な広告や小冊子が同梱されてきます。ほとんどは捨ててしまうのですが、たまたま保存していた「ソフトウェア開発のパラダイムシフト~Visual Studio Team Systemで実現するバリューアッププロセス」の冊子を読んだらけっこう面白かった。

冊子と同等の内容の文章は@ITのサイトでも読むことができるようです。

ここでは「バリューアッププロセス(またはバリューアップ手法)」と名づけているのですが、このネーミング自体が失敗のような気がします。要は、システム開発において計画ベース(プロジェクト開始時における仕様の実現をゴールとしてタスクを実施する)ではなく、システムの提供する価値ベースで行う反復開発のことを、バリューアッププロセス(バリューアップ手法)と呼びたいようです。

マイクロソフトでは、このバリューアッププロセスをMSF(Microsoft Solutions Framework)にて実現しているということ。MSFには、ライトウェイトのfor Agile Software Developmentと、CMMIレベル3に対応した for CMMI Process Improvementの二種類が用意されているようです。
フレームワークの詳細までは確認していないのですが、フレームワーク自体はMicorosoft製品を利用する前提となっているわけではないようです。もちろん、バリューアッププロセスを最適化するための各種メトリクスなどは、VisualStudioTeamSystemを用いれば取得できるようですが、方法論とツールはきちんと分離されています。
古典的なプロジェクトマネジメント アプローチおよび 「ウォーターフォール」ソリューション提供プロセス モデルは、IT プロジェクトにおいては一般的ではない、他の産業のような水準の予測可能性を前提としています。しばしば、プロジェクトの結果も提供手段もよく理解されておらず、探査がプロジェクトの一部となってしまいます。組織はIT 投資のビジネスへの影響を最大化しようとすればするほど、新しい領域への冒険を行います。この新しい領域は本質的に不確実であり、新しいニーズや方法における探査や実験の結果によって変化します。不確実性が存在するにもかかわらず確実性を要求したり望むことは、少なくとも非現実的であり、
せいぜい機能不全です。
俊敏であり続け、変化を予期する:Microsoft Solutions Framework WhitePaper v3

現在私が担当しているプロジェクトは、.NET開発でもないですし、VisualStudioも利用していないのですが、ちょっとMSFを勉強してみようかなぁ、と思いました。

Visual Studio Team Systemで実践する―成功する開発プロジェクト運営のために
Sam Guckenheimer Juan J.Perez トップスタジオ
日経BPソフトプレス (2007/02)
売り上げランキング: 217632

日曜日, 9月 16, 2007

夏休み、断食ならぬ断ネットワーク

またもや更新間隔が空いてしまいました。
じつは先週から、遅ればせながらの夏休みをいただいていました。気がつくと6ヶ月間無欠勤。普段はプロジェクトの緊張感から体調を崩す事があまりないので、風邪で休んだりもありません。というわけで、土日をあわせて8日一気に休んで、かなりリフレッシュしました。

ちょっと意識したのは「オフライン」になる事。プロジェクトの状況にもよりますが、PCを持って行ったり旅先でのメールチェックは極力やめるのが今回のテーマです。というわけで、非常手段の携帯電話は持って行きますが、PCもニンテンドーDSも持って行かない、非デジの夏休みでした。

今回はちょっと業務が混じった催しで行くのですが、それでなくても一年に一回は必ず登山や温泉という形で絶対にネットに触れない連続した日々を持つようにしています。これがもつ効能は実にすばらしいものがあるので、誰にでもお勧めです。今日はそんな「メディア断ちした旅」の話題を。
Lifehacking.jp:メディア断ちの旅:携帯、ネット、テレビ、新聞を禁止して出発


私はここまでは徹底していないので旅先で現地のTVや新聞は少し見ていましたが、ネットには接続しないようにしていました。
(実際には、携帯電話しかデバイスが無いのでしかたないという見方もありますが)

で、行き先はハワイです。米国初上陸でもあります。これが非常に楽しかった。また行きたい!
というわけで、以下雑感です。
  • 行き帰りはノースウェスト航空のエアバスA330。エコノミー全席にマルチメディアモニタ装備。オンデマンドで映画や音楽が視聴できるので快適すぎます。映画は日本語吹き替えも選べるのでまったく問題なし。
  • 今回は初ハワイということもあるので、ずっとホノルルステイ。ハワイはJTBが強いというのを事前に聞いていたのでJTBツアーで行ったのですが、驚いた。ホノルル市街はJTB専用バス(トロリー)が10分間隔で走っているとですよ。
  • ホノルルではビーチが全て公営です。つまり、ホテルのプライベートビーチというものがないのが、ちょっと不思議な感覚でした。これまでに行った事のあるビーチリゾートは、だいたいホテルのビーチを利用するパターンが多かったので。あとビーチは禁酒禁煙なので非常にクリーンでした。
  • メシの量はとにかく多い。人によってはハワイの食事は×な事も多いようですが、私は全然平気です。大好きなコーラがどこでも売ってます。
  • ノンデジタルな旅を標榜していたのですが、ついApple Storeに行ってiPhoneを触ってしまいました(ちなみにこの時点ではiPod Touchの発売は知らず)
  • 数独(パズルの一種)が流行ってます。ビーチでも街中でもみんな数独やってます。試しにホテルサービスの新聞のおまけの問題を解いてみたのですが、これがメチャクチャに難しい。日本の新聞だと誰でも必ず解ける難易度の問題がついているものですが……
  • 全般的には大満足。また行きたい!

なお、帰って来たら未読メール500通(SPAMフィルター後)、未読RSS1400件でした。これをなんとかできるといいんですけどねー。