■ ソフトウェア開発の特性

【ソフトウェアとは】

人間と話す時には言葉を用いる。言葉にもいろいろある。日本語、英語、中国語..。単語一言で通じる場合もあるが、普通は単語を文法的につなげて文となる。文がつながって会話となり、またビジネス文書となり、詩となり、小説ともなる。

一方、コンピュータを動かすにはプログラミング言語というものを用いる。人間の言葉にもいろいろあるように、プログラミング言語にもいろいろある。古くは FORTRAN、COBOL、PL/I。それから後はC、C++。最近はJAVA、Ruby、Python。またこちらも一言では通じない。単語を並べて文を作る。文を並べてソフトウェアを作る。そしてワープロソフト、インターネット関係ソフト、経理処理のソフトとなる。

つまりソフトウェアとは、コンピュータを動かすために、プログラミング言語で命令を書き連ねたものだ。遊びや勉強で作成するソフトウェアは別だが、普通に業務で使うソフトウェアは、数万行、数十万行からなる文の羅列である。小説ならば少しくらい誤字があっても筋をとり違えることはないが、しかしソフトウェアは一行でも間違えると動作しない。これはなかなか厳しいことだ。

SEとかプログラマとか言う仕事は、このような膨大な文の羅列との格闘である。

【必要な技術と知識】

またソフトウェアの開発作業は、膨大な文の羅列との格闘と言う体力勝負だけではない。必要な技術や知識が非常に多岐に渡る。通信、データベース、画面表示など日進月歩の各種のコンピュータ技術を駆使しなければならない。取り残されないためには勉強が欠かせない。

さらにコンピュータと言うのは業務に応用して初めて意味がある。つまり在庫管理や販売管理あるいはまた建築の構造計算だったりする。当然これらの知識がなければ、開発はおぼつかない。

まだある。顧客特有の習慣・業務のやり方や計算の仕方があったりすると、これも理解して反映しなければならない。実は、この部分がけっこう大きかったりする。

【試行錯誤が必要】

このようにしてソフトウェアを開発していくわけだから、いろいろな障害がある。まず技術的に不明な部分が必ずある。私の経験から言っても開発途中で技術的な不明点にぶつからなかったことは一度もない。必ず何か技術的な問題にぶつかる。それを解決したり、また別の方法で実現したりして乗り越えていく。

技術的な問題点ばかりではない。いわゆる仕様変更だ。客先も、いったん仕様を決めた後で、「実はこちらの方が使い易い」などといろいろ考える。途中からの仕様変更はルール違反だが、客先から使いにくいなどと言われると対応せざるを得ない。

ということで、ソフトウェアの開発は、試行錯誤の連続であるとも言える。

【必ず修正・改良が発生】

ソフトウェアというのは、必ず修正・改良が発生する。まずはバグ。前述のようにソフトウェアと言うのは複雑なものだ。テストもするが、しかし見落としもある。使っていて問題が露見する。当然修正しなければならない。

もう一つは、使っていくうちに、「このようにしたら使い易い」、「こんな機能が欲しい」とか要求が出てくる。こちらは健全だ。このように改良要求が出てくるようであれば、よく利用されているということだ。また業務手順の変更などで、修正が必要となる場合もある。

【個人の能力差】

ソフトウェアは、御覧のように人間が作るものの中ではかなり複雑な部類に入る。そしてソフトウェアの開発というのは非常に個人の能力差が差が大きくでる。知識、論理的思考力、問題解決能力、気力、コミュニケーション能力、常識などで歴然とした差がつく。隣同士で机をならべていて同じような給料を貰っている同期入社同士が、(開発するソフトウェアの行数で換算すると)数倍の能力差があるというのは、ごく普通にあることだ。