So-net無料ブログ作成
検索選択
メッセージを送る

モテる!品質とプロセス(2) [ソフトウェア]

ソフトウェア開発の世界に飛び込んで数年の「こんな仕事のやり方で大丈夫かな?」と、少し疑問に思い始めた若手に送るキーワード。ブレークスルーのキッカケをつかんで欲しいデス。

今回のキーワードは「プロセス」
 

 
ソフトウェア開発とはなにか?

若手エンジニアにとっては所属する会社(もしくは常駐先)の「やり方」が全てであり、それがベストルールなのか悪しき慣例なのか?また、そもそも計画的なのか行き当たりばったりなのか…なんだかよくわからないことが多いかと思います。
 
でも、うまい「やり方」が出来ているかどうかは別にして、モノづくりにはかならずプロセスがあり、プロセスを経て「最終成果物=動くプログラム」が作られるはずです。
あっ…作っても動かないときは動かないけどね(爆)

さて、普段はこんなこと意識しないと思いますがソフトウェア開発活動は、大きく2つの面から成り立っていると言えます。
ソフトウェア・サイエンスの面と、ソフトウェア・エンジニアリングの面です。
 
 
 
ソフトウェア・サイエンスの面
 
アルゴリズム、データ構造、ソフトウェア・ロジック技術、フレームワーク技術、コーディング技術
 
ソフトウェア・エンジニアリングの面
 
・開発戦略、品質管理、プロセス管理技術、リスク管理、コスト管理、スケジュール管理、要求開発技術、設計技術、テスト技術
 
  
ソフトウェア・サイエンスとソフトウェア・エンジニアリングの2つが両立して、初めてソフトウェア開発が成功すると言っても過言ではありません。
 
では、この2つの違いはなんでしょう。

 
 
ソフトウェア・サイエンス
 
・動作の速い、コンパクトなコーディングをする
・拡張性に富んだ斬新なアークテクチャの考案
・効率の良いDB検索ロジックの開発
…etc

 
このようにソフトウェア・サイエンスは、ソフトウェア開発作業に直接的に関係するので分かりやすい部分です。テクニックが身に付き始めた若手エンジニアが得意になってくる部分です(笑)
 
他方、ソフトウェア・エンジニアリングは

 
 
ソフトウェア・エンジニアリング
 
・開発手順、開発方法論、ソフトウェアプロセス、ソフトウェアの品質保証、ソフトウェアの構成管理、ソフトウェアメトリクス、部品化と再利用、プロジェクトマネジメント、開発ツール、ピープルウェア…etc
 
 
こういった、過去のソフトウェア開発経験から生まれた理論、技法、考え方を体系化したものです。良いソフトウェアを生み出してきた経験則からのベストプラクティスとも言えます。
経験がまだ浅い若手には知識が少なく、苦手な部分と言えるでしょう。
 
このソフトウェア・エンジニアリングの重要な要素のひとつに、プロセスがあるのです。
さて、最近の若手エンジニアは、プロセスと聞いて何を思い浮かべるのでしょう?
 
まず「アジャイル」でしょうか。今回の 「Software Test & Quality Advent Calendar 2011」でも「アジャイル」というキーワードを含むエントリがたくさん見受けられます。またその対局として語られる「ウォーターフォール」。古くて誰でも知っていてもっぱら悪者扱いされることが多いのに、現場によっては未だ現役バリバリだったりするこのプロセス。
最近は「非」とか付けられて語られることがあり、ちょっと可哀想…(笑)

その他にも、

 
 
CMM、CMMI
→米国、カーネギーメロン大学にあるSEI ( Software Engineering Institute )で研究・開発されている開発Process モデル
 
アジャイルプロセス(XP、クリスタル、スクラム、FDD、リーン、etc…)
→良いものを手早く無駄なく作る。ケント・ベック氏提唱のXP、ジェフ・サザーランド博士たちのスクラムが有名
 
Unified Process (派生にRUP)
→スリー・アミーゴの中でも、特にヤコブソンが提唱したUMLを用いた汎用開発プロセス
 
TSP、PSP
→SEIで研究・開発されている、チーム、個人レベルでの開発プロセス。「ポストモーテム」というプラクティスが有名。(PSPはゲーム機じゃないよ) 
 
 
これは、ほんの一例ね。

「ツールとセット売り」とか「コンサルティングとセット売り」のプロセスを含めると、もっともっとた~くさんあります…ここでは、これらひとつひとつを解説するつもりはありません。
 
若手エンジニア諸君には「えー!プロセスってこんなに種類あるんだぁー!」と認識してくれればそれで良いです。

まずは、これだけの多種多様のプロセスが提唱されている「現実」を認識しましょう。
そして、どのプロセスが優秀でどのプロセスが劣るといった、単純な比較でプロセスを捉えないようにしてください。

賛同者が多い、少ないのような一元的比較や、流行っているから…といった捉え方も微妙です。なぜなら、特定のプロセス教育を生業とするコンサルタント業者などの戦略かもしれないからです。(どんな業界でもこういった話しはありますよね)
 
むしろ、これだけのプロセスがあるということは、それだけ多種多様なソフトウェア開発現場がある…と理解すべきでしょう。そして、それぞれのプロセスは日々の改善を前提にしなければ上手くまわりません。

少なくとも「ウォーターフォール=悪!」みたいな見方は、自信の視野を狭くすると思いますよ( ̄ー ̄)ニヤリ

正解は一つではない。
勉強してください。ソフトウェア品質向上への手がかりが、たくさんあります。
そして、本質を見極める目を養ってください。
 
では、後日また別のキーワードを紹介したいと想います。


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:blog

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この記事のトラックバックURL:
※言及リンクのないトラックバックは受信されません。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

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