January 24, 2014

実践ソフトウェアエンジニアリング

キーワード:
 ロジャーS.プレスマン、ソフトウェア工学、教科書、SE、必読書
ソフトウェアエンジニアリングの世界的権威による、ソフトウェアエンジニアリングについて網羅的に示されている教科書。

目次は内容が多くて、ググっても出版社のページにも詳細なものが全然出てこない・・・。技術書の目次は特に重要な部分なので、仕方なく部、章、節のレベルまでをすべて自分で2時間近くもかかって打ち込んだ・・・(Amazonなどネット書店はともかく、せめて出版社は詳細な目次をすべて示すべきだ。それで買うかどうかの大きな判断基準になるのに、目次が示されていないのは大きな機会損失になっているはず)。目次をみると分かるように全5部構成の32章となる。かなりソフトソフトウェアエンジニアリングの内容について網羅的にカバーされているのが分かると思う。ページ数は649ページと分厚く、値段も税込で7,980円と技術本でもかなり高額の部類。それでも、すべてのソフトウェアエンジニアリングに関わる人は絶対買って読むべき!!な1冊。

著者はソフトウェアエンジニアリング分野のコンサルティングと教育の企業の社長もやっているが、本業は大学教授である。初版が30年ほど前に出版され、時代の技術トレンドなどを反映して改定を重ね、本書の第6版が2005年に出版されている。

本書はソフトウェアエンジニアリングを学ぶ学部3〜4年生、もしくは大学院1年生のための総合的な入門書であることを意図している。また、学生だけではなく、実際にソフトウェア開発に関わる現役の技術者にも使えるような内容となっている。

僕は一応大学ではソフトウェア工学を学部4年だけだけど、割としっかり学んだほうで、そのままSEになった。大学で学んだことがすごく役に立っているなと実感する一方、実際に仕事でシステムの品質、プロジェクトベースでの仕事の進め方、設計、テスト方法などは大学で学んだことだけではどうしても足りないなと思った。要は大学で学ぶことは座学がどうしてもメインになりがちで、最低限知っているけど、自分がそれを使いこなすまでの知識の深さと網羅性が足りないと思った。

そのギャップを埋める助けになるのが本書。確かに一見教科書的な内容と体裁なのだけど、かなり仕事などでソフトウェアの作成、システム開発のプロジェクトで必要、意識しなくてはいけない、気を付けるべきことなどが実践的に示されている。例えば『プラクティス―一般的な考え方』の「5.3プラクティス」で以下のように示されている。
  • 原則1:プロジェクトのスコープを理解する.
  • 原則2:計画活動に顧客を参加させる.
  • 原則3:計画は反復的であることを認識する.
  • 原則4:わかっていることから見積もる.
  • 原則5:計画するにあたってリスクを考慮する.
  • 原則6:現実的であれ.
  • 原則7:計画するにあたって粒度を調整する.
  • 原則8:どのように品質を保証するかを決める.
  • 原則9:どのように変更に対応するかを決める.
  • 原則10:頻繁に計画を追跡し、必要に応じて調整する.
    (pp.80-81)
こんなのはまず大学の講義では学ばないし、たとえ産学連携のプロジェクトをやっていたとしても、こういうのはまず教えてはくれないだろう。実際に仕事をするうえでも、ヒントになる部分、勉強になる部分がかなりある。

本書は32章、650ページもあり、大型本でもあるので読み進めるのが割と大変。僕は2011年にこれを技術力の根本からの強化を目指して、アマぞったのだけど、実際に読み始めたのは2012年で、仕事が忙しかったり他の本を読んでいたりして結局その年には読み終われず、2013年は全く読まず、最近有給で時間ができたので残りのページを読了した。

理想は1日1章のペースで読み進めるのがよいのだけど、さすがに日々の仕事などでそれも難しいかもしれない。なので現実的には3ヵ月から半年の期間で読了することを推奨。逆にそれ以上時間をかけすぎると、内容がすっかり忘れてしまって学習効率が落ちる。しかし、別に全部通読しなくては理解できない構成とはなっていない。全部読むことを推奨するが、日々の業務で特に必要そうな部分を重点的に読んでいくというのもよい。

また、一つプロジェクトが終わって、自分が関わったフェースの反省として該当箇所を読み込むのもよいし、次に始まるプロジェクトで必要そうな技術を予習しておく使い方もよい。

対象読者は学部3年生からとなっているけど、これを学部生で読んでも実践経験が少ないのでちょっとピンとこない部分があるかもしれない。それでも余裕があれ読んでおこう。また、新人SE、特に文系卒だったり理系だけどソフトウェア工学全般を学んできていない人は、遅くとも3年目以内にこれを読了することを推奨する。他にもソフトウェア開発の流れに沿った入門書などが出ており、それをきっかけにソフトウェアエンジニアリングを学び始めるのもよいが、それらだけではどう考えても足りない。いろいろその分野の本をそれなりに読んできたが、網羅性と内容に関してはこれが断然よい。

また、システムエンジニア、プログラマーのどの職位の人でも必ず役に立つ内容と思われる。新人のテスターの場合は、何を意識してテストをすればよいか分かるし、プログラマーであれば、コーディング時に気をつけなくてはいけないことが役に立つし、基本設計から詳細設計をする人も、より上流のプロマネ的な立場にある人も必ず役に立つ内容が示されている。

さらに、SIer的な立場にある人だけではなく、Web系の人にも役立つ内容が示されている。特に第3部がまるまるWebエンジニアリングの内容となっており、アジャイル的な内容も示されているので、そこだけでも読む価値あり。

網羅的な内容となっている反面、それぞれのトピックに対する深さはどうしても足りない。そんなときは各章ごとに論文、有益な本などが示されているので、より詳細に学びたい場合はそちらをあたるのがよい。

ソフトウェア工学、ソフトウェアエンジニアリングを理解せずにシステム開発、ソフトウェア開発を実践することほど不毛なことはない。一見それらを体系的に学ばなくてもうまくいっているようには見える。しかし、顧客の要求がよく分からず、スケジュールは遅れ気味になり、それをカバーするためにデスマ的な働き方をせざるを得ず、実際に出来上がったと思われるシステムはバグだらけで品質に問題があり、しかも顧客の求めていた内容とは違っていた!!なんてことは割とよくある話である。

ソフトウェア、システム開発プロジェクトで生産性が常に高く、スケジュールも遅れなく、バグが全くないような特効薬、つまり『銀の弾丸』は存在しないとしても、それらの仕事に関わる一人ひとりがソフトウェアエンジニアリングをしっかり身につけ、少しでもよりよいものを作れるようになるべきだと強く思う。

最後に第1章に示されているソフトウェアエンジニアリングを学ぶ意義が示されているところを引用しておこう。
 ソフトウェアが重要になるにつれて,素早く,安く,高品質なプログラムを簡単に作成・保守できるような技術も次から次へと生み出されている.Webアプリケーション開発やオブジェクト指向開発,アスペクト指向プログラミング(aspect-oriented programming)のような特定の領域の技術もあれば,Linuxのように多くの領域で活用される技術までさまざまである.われわれソフトウェア開発者は,実現までの時間がかかるかもしれないが,最高の技術を生み出すべく努力を続けなくてはならない.人々は今のところ,仕事を,最適さを,安全を,息抜きを,意思決定を,いやまさに生活そのものをソフトウェアに委ねるという賭けを行っているにすぎないのだ.分の悪い賭けではないことを祈ろう.
 本書は,ソフトウェアを開発する際に駆使すべき技術―ソフトウェアエンジニアリング―の概要について解説している.技術論だけでなく,仕事の進め方(プロセス)も扱う.人々が賭けに勝つために,われわれソフトウェア開発者はソフトウェアエンジニアリングをきちんと修得しなければならないのだ.
(pp.1)
すべてのソフトウェア開発に関わる人はぜひこれを買って読もう。投資した分だけ、必ず勉強になるし、将来的に大きなリターンとなるはず。

少なくともプログラマー、SEとして第一線で活躍していきたいなら、これは絶対買って読め!!!!




読むべき人:
  • ソフトウェア工学を学んでいる学生
  • ソフトウェアエンジニアリングを学んだことがない人
  • ソフトウェア開発に関わるすべての人
Amazon.co.jpで『ソフトウェアエンジニアリング』の他の本を見る

bana1 ソフトウェアエンジニアリングクリック☆  にほんブログ村 本ブログへ



トラックバックURL

コメントする

名前:
URL:
  情報を記憶: 評価:  顔   星