« 2005年5月22日 - 2005年5月28日 | トップページ | 2005年6月12日 - 2005年6月18日 »

SWEBOKを選ぶ理由

この業界でメシを食べさせてもらって幾年月、いわゆる下を育てる立場になった。そこで、ソフトウェア開発にあたる素養というか基礎的な考え方を養うテクストを探しているのだが、なかなか見あたらない。

書店にはいわゆるHowToや資格対策本が溢れているが、いらない。新人さんが何語を知っていようとも(あるいは知らなくとも)無問題。言語は重要だが後で「実践で」身につけてもらえばよし。むしろ、考え方の枠組みや基礎的な用語とそれを支える思想など、これから一緒に仕事をする上で最低限必要な勉強をしてもらうために、何を渡せばいのか?

   SWEBOKをきちんと読んでみようという動機は、ここにある[注1]。

ふりかえって、自分がどのように学んできたかを思い出すと、「盗んだ」のがほとんど。当時はまとめ本なんてなかった。合間をぬって質問したり、ソースをもって帰ったり(今は厳禁)、関係ないレビューの「議事録役」を買って出たりして積み重ねてきた。

その結果、知識としてモレヌケがあったり、俺流な書き方になっている。また、実践的でないもの、すぐに役に立ちそうでないものを見下したりしていた。いわゆるアカデミックなものや教条主義的なやつだ(たとえばSWEBOKのような!)。体系だった勉強をせず、「いますぐ」「使える」「便利」をキーワードとして刹那的な知識を追い求めた結果がこれだ。

   SWEBOKをきちんと読んでみようという動機は、ここに「も」ある。

たとえばテストの種類を挙げてみる。よく使うのは受入れ検査や性能試験なのだが、SWEBOKではこれだけ紹介されている。ちなみに単体テストや統合テストは、テストの"レベル"なので、"種類"とは別に紹介されている。

  • 受入れテスト(受入れ検査)
  • インストールテスト
  • アルファ/ベータ版テスト
  • 適合テスト/機能テスト/精度検査
  • 信頼度検査
  • 回帰テスト
  • パフォーマンステスト(性能試験)
  • ストレステスト
  • Back-to-back テスト(同一製品の前バージョンと同じ結果が得られること)
  • リカバリーテスト
  • コンフィギュレーションテスト
  • ユーザビリティテスト
  • テスト駆動開発によるテスト
(SWEBOK2004 Objectives of Testing より翻訳)

こうやって書き出すとあるある知ってる~なのだが、テストプランを立てるときに、いくつかは一顧だにしなかった。受入れ検査に含めればいいや、と楽をしようとしたからだ。その結果、必要な観点が抜けたまま実行フェーズに至り、「あれも必要、これも抜けてる」とテストケースを追加するハメになったものだ(んで、テスト期間がズルズル延びたり、徹夜テスト、リリース「後」のこっそり追いかけテストになったりする)。

アカデミズム・権威主義を嫌い、実践ありきのつもりが、結局SWEBOKに戻ってくるという皮肉。ガルシア・マルケス「百年の孤独」に、二次方程式の解法を独力で編み出した男のエピソードが出てくるが、もう嘲笑(わら)えなくなった。perlしか知らないのに「perl以外なんてぶっちゃけありえない」と恥ずかしげもなく言い切る人を、もう嘲笑(わら)えなくなった[注2]。

学而不思則罔
思而不学則殆

--

[注1] うろうろしてたらakonさんのエントリー[参照]に出会えた。たくさんの気付きをいただき、感謝多謝。SWEBOKを読むと(まだナナメ読みだが)私の基礎にはかなり穴があり、そこにはハッタリで埋めてあることが分かった

[注2] 断っておくが、perlを貶めたいわけではない。perlは素晴らしい言語だが、少し前までは「いろいろな言語をやってきたが、perl がいちばん性に合う」人がほとんど。今じゃ他言語を知らないくせに(知ろうとすらしないくせに)「perl 以外ありえな~い」と言い張る人が出てきた。ハンマーを持つと全てが釘に見える典型だと笑っていたが、私もたいして変わらない

| | コメント (0) | トラックバック (0)

SWEBOKを読む前に

もとはといえば燃えるプロジェクトをなんとかしようという動機で始めたPMBOK。理解に2年、普及に1年かかったが、今その果実(?)を得ているところ。既に上長を巻き込んだので、次は全社に風を起こしてみようかと。ちなみにいまだにPMPは受験していないorz。

その過程で知ってはいたが食指が動かなかったSWEBOK(ソフトウェアエンジニアリング知識体系(Software Engineering Body of Knowledge)について、akonさんが非常に興味深いエントリをしている[参照]。これは「ソフトウェア開発へのSWEBOKの適用」の書籍の紹介なのだが、SWEBOKを理解するのになかなか良いとのこと。2004改訂版が出るまでのウォームアップとして読んでみようかと。

SWEBOKとは何か。その概説(overview)をまとめるとこんなカンジ[SWEBOK overview]

世の中には、「ソフトウェア専門家」がごまんといる。あるいは「ソフトウェア専門家」を育成する機関がこれまたごまんとある。にもかかわらず、ソフトウェア工学は正当な教育機関や職業のステータスにまで達していない。なぜなら「ソフトウェア専門家=プロフェッショナル」のための一般的な知識をまとめたカリキュラムが存在しないから。
「これだけやればプロフェッショナル」ではなく、「プロと名乗るなら、せめてこれぐらいは知っておけ」という知識体系が求められている。それはソフトウェア工学に限らず、一般的な知識や、知識にとどまらずそれを適用する方法論なども対象とする。

こうした背景をふまえ、SWEBOKは以下の目的でまとめられている。

  • ソフトウェア工学の各知識分野を特徴づける
  • ソフトウェア工学の今日的な話題を提供する
  • ソフトウェア工学での一貫した視座を促進する
  • ソフトウェア工学の位置づけを明確化する(コンピュータサイエンス、プロジェクトマネジメント、コンピュータ・エンジニアリング、数学との関係)

SWEBOKは以下の人を対象としている

  • ソフトウェア工学の教育機関(大学、専門学校、職能訓練校)
  • ソフトウェアの職能・業績評価を行う機関
  • ソフトウェア工学の学生
  • ソフトウェアエンジニア

SWEBOKプロジェクトのための原則は以下の2つ

  • 透明性:SWEBOKプロジェクトそのもののプロセスは、完全にドキュメント化され、公表される
  • 一貫性:ソフトウェア工学を実際に用いる開発者や研究者の中でSWEBOKは構築され、各界でのコンセンサスを得ることで一貫性が保たれるようにする

公開されている2004年版[SWEBOK official]をナナメ読みする限り、教条主義的なにおいがして、アカデミックな雰囲気なり。上の翻訳にあたり、"Software engineering"を「ソフトウェア工学」としたが、この「ソフトウェア工学」という言葉はずいぶんとビミョーな語になりつつあるようだが、これまた別の話。


| | コメント (2) | トラックバック (0)

« 2005年5月22日 - 2005年5月28日 | トップページ | 2005年6月12日 - 2005年6月18日 »