ソフトウエア開発について

余り、なじみの無い人のために、良く聞かれる事を纏めてみました。

ソフトウエアとは?

コンピュータに目的の仕事をさせる為の、命令や情報の事です。
特に、命令の方は、「プログラム」と呼びます。
一般には、何らかの記憶媒体(CD-ROMなど)に記録されます。
コンピュータにさせる事が良く判っていないと、ソフトウエアを作っても、コンピュータは、 正しく動きません。

どんな種類が有りますか?

ソフトウエアの仕事によって分類します。
オペレーテイングシステム、デバイスドライバ、データベース、アンチウイルス、業務ソフト等と
様々に呼ばれるものが有りますが、厳密な分類では有りません。
人間世界の、政治家、社長、プログラマ、旋盤工、運転手、等の呼び方と同じです。

プログラマの仕事は?

ソフトウエアのうち、コンピュータの命令を作る事です。何をするプログラムかで、内容は様々です。
上級プログラマは、命令を作る為の(部下に渡す)命令書しか作らないかも知れません。
重要な事は、プログラマは、コンピュータが何をしたら良いかは、十分には知らない、という事です。
別の言い方をすると、コンピュータが何をしたら良いかを考える事は、プログラマに仕事を頼む人の仕事です。

システムエンジニヤの仕事は?

どんなソフトウエアを作るか決定し、開発作業を指揮監督する仕事です。
これも、内容は、様々で、厳格な分類は困難です。
一般には、プログラミングは本業では有りませんが、コンピュータやプログラムの事を良く知らなければ、
これを作るべき、と決めた事が的外れになってしまうので、難しい仕事では有ります。
ある程度は、コンピュータにさせようとする仕事(業務、と言いますが)の事を知らなければなりません。
例えば、鉄鋼プロセスの事を知らなければ、鉄鋼のシステムは作れません。
しかし、鉄鋼の事だけを知っていても、鉄鋼のシステムは作れません。

仕様書とは?

ソフトウエアは、通常、「お客様」の為に作成します。
どんなものを作るかと言う技術的な約束事を記述した文書なので、お客様が作成するのが普通ですが、依頼によって、開発者が作成して、お客様の承認を受けて仕様書にする場合も有ります。
普通の社会での契約書と言えます。時として、これが無いために大揉めになります。
しかし、仕事が進まないと判らない(契約時点では判らない)事が沢山有るのが普通です。
何をすれば良いか判らないものについて、どうやったら仕様書が作れるのかは、相変わらず謎です。
変な話ですが、大抵、正式な仕様書は、開発が完了して、実情を反映してから完成します。

設計書とは?

技術的な産物には、必ず設計書が有ります。
これは、何処がどうなっているかを、その物件について良く知らない人に、判り易く伝達する手段です。
従って、実物を作成する時の指針になり、担当する人への命令書にもなります。
内容、表現の2つの側面が有り、完璧なものは、めったに有りませが、本来は、完璧であるべきです。
一般の技術分野では、設計書の内容を考えた人を「設計者」と呼びます。
ちなみに、書く人は、昔は「トレーサ」と呼びました。
当り前ですが、これから作成しようとするものについて記述するのが本来の設計書です。

試験仕様とは?

ソフトウエアは、技術的な産物ですから、作成したものが、正しく(正しくとは、仕様書に記述された通りに、という意味です)動作する事を、作成者が保証しなければなりません。正しいか、誤っているかを判定する基準を記述したものが試験仕様書です。試験の内容が正しくなければ、せっかくの試験は無意味なので、試験仕様の作り方も、又、深遠な技術です。

試験成績書とは?

試験仕様書に基づいて動作を確認し、結果が正しかった、という事を保証する書面です。
自動車でも、電気製品でも、「検査合格印」というのが押してありますが、それです。

設計の方法は?

概念設計、概略設計、機能設計、システム設計、プログラム設計と進みます。外部設計、内部設計、構造設計、データ設計、論理設計、詳細設計、クラス設計、などという言葉も使われます。
設計は、機能・動作に注目して行う側面と、実装・実現方法に注目した側面があり、設計手法、表記方法には、様々なものが有ります。試験仕様書も、設計工程で作成します。

プログラミング言語とは?

コンピュータの命令(動作指令)の内容(=つまり、目的とする業務)によって、プログラミング言語を選択します。
プログラミング言語は、目的の仕事が実現できる範囲で、判り易さ、作り易さによって選択します。プラットフォーム、環境ソフト(OS等)、メンテナンス、も考慮すべき要素です。10年も使えるコンピュータは有りません。
特に、Microsoft Windowsの公称寿命は3年です。

業務知識とは?

ソフトウエアを作る為に必要な、対象業務に関連する知識です。これは、限りが有りません。
一生かかっても、これで十分と言う知識は身に付かないかも知れません。しかも、技術は日進月歩です。
結局、業務知識は、その業務の専門家の方々のお力に頼る事になるのです。

プロジェクト管理とは?

ソフトウエアを作る為に構成されたチームの管理です。
予定通りの日程で、予定通りの費用で、予定通りのソフトウエアを作り上げて、初めて、業としてのソフトウエア開発になりますが、これも又、中々に大変で、どうすれば良いかという事は、様々な側面を含みます。

1人月とは?

1人の技術者が、1月で作業する仕事量の事です。
当り前ですが、実際に担当する人間の技量によって変わるので、標準的な技量を持つと想定される仮想的な人物の仕事量として推定します。半人前の技術者が2ケ月で作業する分量を2人月とは言わないし、常人の2倍の技量を持った人が1ケ月で作業した分量を1人月とも言いません。