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

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

 「Software Test & Quality Advent Calendar 2011」 への 12月6日 エントリです。 

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

今回のキーワードは「品質モデル」
 

 
品質とは何か

ソフトの世界にいると「品質は良いのは当たり前」、「バグはゼロに!」といったことがよく口にされます。
でも、品質が『よい』『わるい』と言うけれど、それはいったい、なにとくらべて、どれくらい良いことをいうのでしょう?

「日本車は品質が良い」というのは世界的に認められていることですが、具体的に挙げると

 
 
故障しにくい
デザインがいい
低燃費
衝突しても壊れにくい
 
などでしょうか。
実はこれらは「比べられる」という点に気がついてますか?

 
 
故障しにくい
→ メーカーは「無償」保障期間で品質を担保。1年間だったり、3年間だったり

デザインがいい
→ 決められたサイズ内の居住空間などを計測できるので比べられる

低燃費
→ 達成目標が明確化されている。リッター○○キロ走る!

衝突しても壊れにくい
→ 耐久性が数値化されている。時速○○Kmでの衝撃吸収率とか。

 

こうやってみると「品質」というのは何らかの指標で「比較可能」であることに気付けます。

ところが、なぜかソフトウェアの開発になると、上記のような指標が曖昧なまま品質が語られてしまいます。
ソフトウェアに求められる品質が「開発者」に正しく伝わらないと、まったく製品価値がないものを世に送り出すことになりかねません。
 
例えば、機能ばかりに着目しがちなエンジニアはこんな事を想います・・・

 

ソフトウェア開発エンジニアのAさん:
 「この処理、多少時間がかかるけど、精密な結果をだすためには仕方がないよな」

商品企画部でプロダクトリーダーのBさん:
 「なんだよ、これ時間がかかるなぁ…でもこの結果がでるなら我慢できるかな。」

 


こんな想いを経て、どうにか世に出たソフトウェアが、

 
 
エンドユーザのCさん:
  「・・・はぁ?なにこれ、処理にこんなに時間がかかるのwwww 使ってらんね、別のソフトを買おう♪」
 

 ソフトウェアは完成し、リリースも出来たのに、いつの間にか「製品価値」を失っていたようです。悲しいかな、このようなケースはすごく沢山ある気がしてます。

ところで、ソフトウェアの品質は表現不可能なのでしょうか?
冒頭の例では、車に於ける品質は、なんらかの指標で比べられるという話をしました。
 
そう、「品質」は定義(仕様化)することが出来るのです。…ピンと来ないかもしれませんが「品質モデル」という考え方があります。これは先人の知恵の結晶、品質を定義するためのモデルです。しかも国際標準。

 
 
国際標準規格
『ISO/IEC9126-1:2001 ソフトウェア製品の品質-第1部:品質モデル』
 
 
これ、今まで聞いたことあります?
となりの先輩知ってます?
会社で教わったことあります?

無いというあなた。
 
本来はここで中身について解説すべきところですが、すでにインターネット上にはたくさんの解説があります。
書籍もたくさん出ています。 
ありがたいことです。 
なので、ぜひ自分で調べてみてください。

検索キーワードは

  •  ソフトウェア品質モデル
  •  ソフトウェア品質特性
  •  ISO/IEC 9126-1:2001
  •  JIS X 0129-1

です。
 
ソフトウェア品質向上への手がかりが、たくさんありますよ。
勉強してくださいね☆

では、後日また別のキーワードを紹介したいと想います。 

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

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

×

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