全般

ソフトウェア開発

投稿日:2021年7月6日 更新日:

ITプロジェクトは、「ソフトウェア開発」を実行するという特徴を持ったプロジェクトです。ソフトウェア開発という特殊なスキルを持った人を決まった予算内でできるだけ多く集め、全力で作業をこなし、納期に向かって全速で邁進していくためのプロジェクトです。

■「ソフトウェア開発」とは何か?

ソフトウェア開発とは、コンピュータサイエンスとソフトウェアエンジニアリングを駆使する実務のことです。逆に言えば、コンピュータサイエンスとソフトウェアエンジニアリングを知らなければ、ソフトウェア開発を実行できません。

コンピュータサイエンスは、コンピュータを使って情報を扱うための知識と技術を集約したものです。ソフトウェアエンジニアリングは、ソフトウェアをモノとして見た「モノづくり」のための方法論です。

これらは、日々、新しいアイデアが考え出される度に、アップデートされていきます。そういう意味では、しっかり体系化されているとは言い難く、ITエンジニアのスキルと裁量によって、ソフトウェア開発のやり方が変わってきます。

コンピュータサイエンスは、原則、個人の独学によって身につけることができます。一方、ソフトウェアエンジニアリングは、知識として知っているだけでは意味がなく、ソフトウェア開発を実施するプロジェクトや組織を通した経験に意味があります。このように、スキルの質が異なる2つのベースを組み合わせることで、ソフトウェア開発が成り立っています。

ソフトウェア開発の主役は、コンピュータサイエンスであり、ソフトウェアエンジニアリングはそれを補強するわき役です。ソフトウェア開発で必要とされる割合で言えば、コンピュータサイエンスが7に対して、ソフトウェアエンジニアリングが3といったところです。

ソフトウェア開発に必要なコンピュータサイエンスを使う時期を、ソフトウェアエンジニアリングによって計画します。さらに、ソフトウェアの品質(Q)、コスト(C)、納期(D)を確保するため、その結果をソフトウェアエンジニアリングによって確認し、対策を実施します。これが、ソフトウェア開発のマネジメントです。

ビジネスの収益をあげ、業務を効率化する目的で、ITエンジニアに金を払い、ソフトウェアを作らせます。ソフトウェア開発は、ボトムアップでITエンジニアたちが自発的に考えて行われるよりも、組織や会社などのトップダウンによる命令によってつくられることの方が圧倒的に多いです。

ボトムアップでITエンジニアにビジネススキルを身に着けさせるよりも、ビジネスマンがソフトウェア開発について知っておくほうが、これからビジネスをする上で有益であることは間違いないでしょう。

■ソフトウェア開発のインプットとアウトプット

ソフトウェア開発に必要なインプットは、以下の3つです。

1)ニーズ

ソフトウェアが必要な理由であり、「何をつくればいいのか?」という問いの答えです。詳細はわからなくても、売上を上げたい、コストを下げたい、集客をしたい、新しいWebサービスをつくりたいなど、願望がないとソフトウェアは作る意味がありません。

2)時間

何かをつくるには、時間が必要です。特に、作業を人が行う場合、もっとも必要なものは時間です。特に、ソフトウェアをつくるのは人だけなので、常に、時間が足りてないという感覚があります。

時間を短くすればするほど、指数的にソフトウェア開発の難易度が跳ね上がることになります。ソフトウェア開発の難易度を左右するのは、技術的な側面よりも、時間的な制限によるもののほうがずっと大きいと言えます。

ソフトウェア開発に必要十分な時間を与えることで、ソフトウェア開発のリスクを大きく減らすことができます。

3)お金

人を動かすには、お金がいります。たとえエンジニアやプログラマーが毎日、椅子に座って、息をしているだけにしか見えなくとも、昼飯代とは比べものにならないほど高額な費用を支払わなければならなりません。

ソフトウェア開発は、何百万、何千万の単位で湯水のごとくお金を使うことになります。それこそ、金額としては高級車の比ではないでしょう。

そういう意味では、ソフトウェアは高級品です。インターネットにのっているHPを見ながらちょっとプログラミングを勉強する程度ならタダでできます。しかし、業務用にソフトウェアをつくろうと思ったら、一人だけでは到底無理で、たくさんのエンジニアを集めないとできません。そうなると、少なくとも数百万~数千万円の予算が必要になります。

また、ソフトウェア開発のアウトプットとしては、実行モジュール、ソースコード、ドキュメントが作られることになります。ソフトウェアの実態である実行モジュールやソースコードは、データサイズとしては大した量ではありません。一方で、ドキュメントは、設計資料、テスト結果、テストデータなど膨大な量がつくられることになります。

これほどまでにドキュメントをつくる理由は、目に見えないソフトウェアのカタチを文章として言語化するためと、開発したエンジニア以外のエンジニアにもソフトウェア内部の動きがわかるようにするためです。いわば、ソフトウェアの取扱説明書(マニュアル)です。

一度、完成したソフトウェアは、随時、メンテナンス(保守)が必要になります。運用している内に改善すべき点や不具合が見つかるからです。そのような場合、ドキュメントを頼りに、ソフトウェアを修正します。
ソフトウェアが完成するとエンジニアはみな離れ、他の仕事へと移っていきます。開発のノウハウを詳細に記録したドキュメントがないと、誰もソースコードを修正することができません。

ソフトウェア開発において、質の高い有用なドキュメントを作ることは、ソフトウェアの品質を維持することに貢献します。逆に言えば、無用なドキュメントをできるだけなくすことが、予算や納期を守ることにつながります。

-全般

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

ITエンジニア教育論

ITエンジニアを育成するのは、容易なことではありません。特に、ITベンダーでは、せっかく採用した人材が使い者にならないと、雇い続ける限り、コストを生み出すだけのお荷物となり下がります。ITベンダーは、 …

ITプロジェクト

ITプロジェクトは、「ソフトウェア開発」を実行するという特徴を持ったプロジェクトです。ソフトウェア開発という特殊なスキルを持った人を決まった予算内でできるだけ多く集め、納期に向かって、全速で邁進してい …

ネットワーク

ITインフラを支えるのは、ネットワークです。ネットワークがなければ、コンピュータを使う意味がないと言ってもいいでしょう。 ■ネットワークの基本概念 国際標準化機構 (ISO)が提唱したOSI(Open …

IoTデバイスのプロトタイプを使う

電気機器、機械、部品などをインターネットにつなげるためには、IoTデバイスとして、超小型の「通信ボード」を使います。通信ボードには、CPU、RAM、ROM(またはフラッシュメモリ)、通信チップ、センサ …

ソフトウェア開発と年齢

一般的に言えば、エンジニアは、通常、働いた年月ともに、自然と知識と知恵が積みあがっていく職業です。しかし、IT業界で働くITエンジニアに関しては、そうとは一概に言えません。個人差が極端に大きく、何年や …