マネジメント

はじめての「ソフトウェア開発」入門

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

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


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

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

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

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

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

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

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

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

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

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

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

1)ニーズ

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

2)時間

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

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

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

3)お金

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

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

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

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

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

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

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

■ まとめ

ソフトウェア開発に関わっていると、「何をしているのか、まったくわからない」と言われることがあります。

はたから見ると、一日中、ただパソコンに向かって座って、資料ばかり書いていたり、一日に何通ものメールをやりとりしていたり、長々と電話で話していたり、会議ばかり参加していたりと、コツコツと機器や道具を使いながら作業をするモノづくりとは全く異なるので、仕方のないことです。

ソフトウェア開発で考えることになるソフトウェアの仕様、プログラムの構造、必要となるロジックなど、すべて妄想であり、実際、完成したソフトウェアが動作したとしても、何か物理的に変化するわけでもありません。
ソフトウェアは、所詮、コンピュータの中で、新しいデータを生成したり、変化させることしかできません。

しかし、それによって、何等かの作業時間を短縮できたり、あるいは、いままで知らなかったことを知ることができたりすることができます。
例えば、Googleの検索エンジンは、その検索ロジックによって、一瞬で、通常では知り得ない情報を提供してくれます。それに付加価値を与えられれば、人々からお金を集めることができます。

ソフトウェア開発は、現代の「錬金術」といってもいいでしょう。

インプットは、自分でやりさえすればお金や人は不要で、時間だけで済みます。そのアウトプットとして作り出されるソフトウェアは、時に、無尽蔵のお金を生み出すことになります。

ただし、そのためには、卓越したアイデアと、ソフトウェア開発という苦しい知識労働に従事することが求められます。


ソフトウェア開発・システム開発業務/セキュリティ関連業務/ネットワーク関連業務/最新技術に関する業務など、「学習力×発想力×達成力×熱意」で技術開発の実現をサポート。お気軽にお問合せ下さい

-マネジメント

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

名著「人月の神話」から知る「人月の逸話」

人月。それは、一人のITエンジニアが1カ月働いたときの労働量を「1」としたときの総量であり、ITビジネスにおいて、原価を推し測るために使われます。 ■ 名著「人月の神話」とは ソフトウェア開発の生産性 …

はじめての「プロジェクトマネジメント」入門

プロジェクトを任されると、誰でも、その責任の重大さに膝が震えます。そして、いざ、プロジェクトの中に入ると、混乱と混沌、四方八方から投げ込まれる多種多様な情報・・・脅しではなく、このような状況に置かれま …

再考。プロジェクトマネジメント

ソフトウェア開発に必要なものには、技術力とマネジメント力の2つだと言われます。技術力は、プレイヤーとして働くための個人の能力のことを言い、マネジメント力はプロジェクトというチームを動かすための能力のこ …

ITエンジニアのための「問題解決」入門

ITエンジニアとって、設計スキルやプログラミングなどのソフトウェア開発作業に直結にする「ハードスキル」だけではなく、問題解決力、思考法、コミュニケーション能力などの「ソフトスキル」も必要とされます。「 …

初受験のための「PMP」試験入門

プロジェクトマネジメントについて、最新の体系を学ぶために、PMP(Project Management Professional)を取得しました。取得の動機は、これまで、主にQ(品質)・C(コスト)・ …

Chinese (Simplified)Chinese (Traditional)EnglishFilipinoFrenchGermanHindiJapaneseKoreanMalayThaiVietnamese