3回目の今回は設計から開発まで考えていきたいと思います。
前回で要件定義が完了していますので、それを具体的なソフトウェアとして構築していく作業です。
設計段階ではどのような作業を行うのでしょうか?
弊社の場合だいたい以下のような流れで進んでいきます。
(1) 概要設計(おおまかにシステム全体を決めていきます。)
(2) 詳細設計&画面設計(機能面での細かい動き、画面遷移などを決めていきます。)
(3) NW設計&システム設計(NW構成やサーバースペック、OSなど非機能面について決めていきます。)
(4) 運用設計&監視設計(運用時の作業内容やシステム監視の閾値を決めていきます。)
(5) テスト設計(開発完了時のテスト内容を決めていきます。)
並べると結構ありますね。特に(3)、(4)は非機能的要件を設計としてまとめていく部分であり、少し難しい部分もでてきます。
また、これらを作成しながらお客様と随時確認を行い、要件定義の段階での「認識のずれ」を修正していきます。(実はこの「認識のずれ」を修正するのが一番大事だったりします。)
設計が完了するとそれをもとにして開発に入ります。
弊社の優秀なプログラム職人があらゆる言語(PHP、JAVA、C#、・・・など)を駆使して設計通りのものを構築していくのですが、実際にものができあがるまでは不安な日々を過ごすのです。
少しづつ目に見える形として出来上がってくるのですが、いざ作成してみるとしつこいくらいに「認識のずれ」を修正してきたにもかかわらず、お客様が想像していたものと動きが違うという部分がでてきます。
そして、どんなに優秀なプログラマであっても人間が作業する以上、かならず「バグ」がはいるのです。
それらを早めに発見し修正するというのをお客様・プログラマ双方に嫌な顔をされながら進めていきます。
そんな苦労を続けながら「開発⇔修正」を繰り返しやっと完成にこぎつけます。
このころになるとデジタルな言葉の羅列でしかないプログラムにも愛着がわき、人格が発生し、「いい子だからちゃんと動いてよ」なんてことを呟いているのです。
設計~開発まで書きましたが、この段階で最も重要なのはお客様、プログラマに正しい情報を伝えるための「コミュニケーション力」だと常々思います。
そもそも目に見えないものを想像し、それをうまく伝えるというのは難しいものです。
次回は「テスト~納品」です。だいぶ終わりに近づいてきたなぁ。
waka