.net column
.NET開発者のためのブログメディア

ソフトウェア開発ってどんな仕事?仕事の流れやおすすめの書籍を紹介

2020年04月23日
SE
ソフトウェア開発とは、どういったことをするのですか?
PM
プログラムの開発や設計はもちろん、システムの企画と提案など多岐にわたります。

ソフトウェア開発ってどんな仕事?


ソフトウェア開発とは、プログラムの開発と同義であり、ソフトウェアをユーザーが使えるような状態で納めるまでの作業になります。ソフトウェア開発では、どのようにソフトウェアを動作させるのか設計し、プログラミングを行い、動作確認までを行います。

ソフトウェア開発の特徴

ソフトウェア開発の手法は、大きく2つに分けられます。古くから世界中で活用されてきたウォーターフォール型開発と、ウォーターフォール型開発における問題を解決し、開発から市場投入までの期間短縮を目的としたアジャイル型開発です。

この項目では、その2つの手法の特徴について、ご紹介します。

ウォーターフォール型

ウォーターフォール型開発とは、システム開発の各工程を1つずつ完了させ、順番に進行する方法です。工程ごとに成果物を作り、それぞれの工程での品質確保を重視するという特徴があり、工程が水が流れるように進み元に戻らない性質であることから、ウォーターフォールとよばれています。

例えば、「計画、外部の設計、内部の設計、プログラム自体の設計、プログラミング、テスト」などの工程に分け、それぞれの工程が終わるまで次には進まず、また前の工程にも戻らないといった開発手法です。

アジャイル型

アジャイル型開発とは、仕様や設定の変更が当然あるという前提に立ち、最初から厳密な仕様は決めずおおよその仕様だけで細かい反復開発を開始し、小単位で「実装→テスト実行」を繰り返し、少しずつ開発を進めていく手法です。アジャイルとは「俊敏な」という意味を持ちます。

ウォーターフォール型開発の場合は、テストで不具合が発覚した場合手戻り工数が大きいなどの欠点があります。しかし、アジャイル型開発の場合、細かく「実装→テスト実行」を繰り返しながら進めるため、不具合が発覚したとしても手戻り工数を少量に抑えることができます。

ソフトウェア開発の種類

ソフトウェアとは、パソコンや周辺機器などのように物理的な物体としての機器をハードウェアと呼ぶのに対し、目で見ることのできない機械上で動くシステムのことを指します。そんなソフトウェアは、大きく3つのカテゴリーに分けられます。

この項目では、3つのソフトウェア開発の種類について、ご紹介します。

Webシステムソフトウェア

webシステムソフトウェアとは、ブラウザ上で動くソフトウェアのことです。例えば、Googleがリリースするメールツールである「G-Mail」や、データ共有に広く使われる「Dropbox」などを指します。パソコンやスマートフォンなどの影響を受けず、インターネット環境があれば利用することができます。

アプリケーションソフトウェア

アプリケーションソフトウェアとは、特定の目的に応じてプログラムを作成したソフトウェアを指します。例として、表計算や画像編集、メール、プレゼンテーションなど、作業をスムーズに実行することに特化したソフトウェアです。

組込みシステム

組込みシステムとは、家電や市販の機器などに搭載されて動作するシステムのことを指します。例えば、デジタルカメラやテレビ、温度計、電子レンジなどのような特定用途向けの機器に組み込まれているソフトウェアです。

ソフトウェア開発とシステム開発との違い

システム開発とは、業務の仕組み全体を見渡し、業務改善も含めて仕組みを構築していく作業です。システム開発には、業務フローを考えたり、ハードウェアを検討したりといった作業も含まれます。ソフトウェア開発は、システム開発の中の一部です。すでにシステムとしての業務の仕組みが決まっており、その中で使用するソフトウェアの仕様を考え、構築する部分だけをピックアップした作業がソフトウェア開発ということになります。

ソフトウェア開発と関わりを持つ職種4選


ソフトウェア開発は、いくつかの職種が関わり合って成り立っています。この項目では、ソフトウェア開発と関わりを持つ4つの職種について、ご紹介します。

1:営業

ソフトウェア開発は、顧客の依頼に応じて開発をする受託開発のケースが多く、そのため顧客のニーズを聞き出して仕事の流れを作る営業職が必須になってきます。仕様変更の頻発など交渉も多くあるので、可能な限り専門の営業職を育てる必要性も出てきます。

2:システムエンジニア

システムエンジニアとはSEとも呼ばれ、ソフトウェア開発における上流工程を担う職種です。具体的には、要求分析や要求定義、基本設計、詳細設計といった、プログラマがシステムを作るための前段階の業務がメインであり、ソフトウェア開発には欠かせない職種です。

3:プログラマー

プログラマーは、システムエンジニアが作成した資料に基づいて、プログラミング開発を行う職種です。多くの開発企業では、プログラマーとして経験を積んだ後、上流工程を担うシステムエンジニアを目指す流れも見受けられ、システムエンジニアとプログラマーには密接な繋がりがあります。

4:プロジェクトリーダー・マネージャー

プロジェクトリーダーとは、開発などのプロジェクトを遂行する際の現場責任者のことを指し、現場に携わるプロジェクトリーダーに対して、プロジェクトマネージャーとは、クライアントなどの社外関係全般の業務を担います。会社の規模によっては、プロジェクトリーダーとプロジェクトマネージャーを兼務する現場もあります。

ソフトウェア開発の流れ10個


ソフトウェア開発という作業は、どのような種類の業務で成り立っているのでしょう。システム開発の一部としてのソフトウェア開発作業なのか、単独の製品としてのソフトウェア開発を行うかによっても必要となる業務は異なります。ここでは、ソフトウェア開発に含まれる10種類の仕事内容を紹介します。各仕事内容を参照して、ソフトウェア開発の内容を理解しましょう。

1:営業

システムの一部となるソフトウェア開発の仕事を受注するためには、まずは営業をすることが必要になります。営業は顧客のニーズを把握し、現行のソフトウェアでニーズが満たされるのか、現行のソフトウェアを改修すべきなのか、新たなソフトウェア開発が必要なのかを検討します。顧客のニーズによっては、ソフトウェア開発だけでは実現できず、システムの見直しが必要になる可能性もあります。

受託開発営業

営業と言えば、一般的には自社の商品やサービスを紹介するというイメージがありますが、依頼に応じてシステム開発をするという受託開発での営業職も存在します。システムに関するニーズや交渉など、専門的な知識も必要になってくるため、可能な限り専門の営業職を育てる必要性もでてきます。

SES営業

SESとは、システムエンジニアリングサービスの略称で、システムエンジニアの能力を契約対象とした契約のことを言います。企業とエンジニアをマッチングさせる、いわば橋渡しのような役目を担うのがSES営業と言えます。

パッケージ営業

パッケージ営業とは、自社商品となるパッケージソフトを販売するための営業のことを指します。商品を売り込むという点では一般の営業とも共通する部分は多く、営業としての行動力やトークスキルなどが必要になります。

2:顧客へのヒアリング

営業によって顧客のニーズを把握し、ソフトウェア開発の可能性が見えてきたら、顧客のニーズを掘り下げてシステム化を検討するためのヒアリングを実施します。ソフトウェア開発における顧客ヒアリングは、要求分析とも呼ばれ、営業担当よりもエンジニアが中心となって行われます。顧客のニーズを分析し、ソフトウェア開発につなげる検討は、プログラマではなく、アナリストやシステムエンジニアが行います。

3:システムの企画と提案

ヒアリングによって顧客ニーズを深掘りして把握した後は、ニーズをシステム的にどう実現させるかの検討を行います。検討結果を「企画」としてまとめ、顧客にソフトウェア開発の「提案」をします。システムの企画と提案では、顧客から語られた業務改善に向けた想いを、ソフトウェア開発によりいかに実現させられるかを提案書としてまとめます。システムによる実現性を、顧客が理解しやすい形で提案する必要があります。

4:契約と見積り

提案したソフトウェア開発の企画が、顧客に受け入れられれば、契約に向けて見積りを行うことになります。一般的に、顧客との契約手続きは営業担当が行いますが、ソフトウェア開発の基礎見積りはシステムエンジニアなどのソフトウェア開発技術者が行います。ソフトウェア開発の企画が顧客に認められても、開発費用として提示した見積額が顧客の予算と見合わない場合は、受注につながらないこともあります。

5:要件定義

ソフトウェア開発を受注し、開発に取りかかって最初にすべき工程が「要件定義」です。企画提案の際に、顧客のニーズから「要求分析」という形で、実現すべき機能を分析していますが、そこには顧客の過剰な想いが含まれていることもあります。顧客ニーズをソフトウェアで実現するときに、必須となる機能や性能を「要件」という形で明確に洗い出します。

6:設計

要件定義により、ソフトウェアで対応すべき要件が明確になったら、設計作業に入ります。ソフトウェア設計には、外部設計と内部設計があります。外部設計は、ソフトウェアの動きを、ユーザーが使う目線で確認できる内容とします。内部設計はプログラマへの指示書にあたり、外部設計に記載されたように動作するためには、プログラムをどう記述すべきかを記載します。

基本設計

基本設計とは、ソフトウェア実行中の動きを外から見た際にどういう動き方をするのか、といった設計をする作業です。何をしたいのか、といった「What」を定義する工程であり、それを説明した資料を仕様書と言います。

詳細設計

詳細設計とは、基本設計で決められた動きをどうやって実現するか、といった設計をする作業です。どうやって行うか、といった「How」にあたる工程で、それを説明する資料を設計書と言います。

7:プログラムの開発

プログラムの開発は「実装」とも呼ばれます。設計書で指示された内容を、コンピューターが理解できる言語である「プログラミング言語」で記述します。内部設計書が詳細に記載されていれば、設計書の記述をプログラミング言語に置き換えてプログラムを作成します。プログラム開発を容易にするためには、きめ細やかな設計が求められます。

8:テスト

ソフトウェア開発におけるテストの工程は複数回あります。それぞれでテストの観点が異なります。プログラマがプログラミング終了時に行うテストは、工程としてはプログラム開発に含まれます。内部設計書通りに実装されていることを確認するテストです。最終的には「運用テスト」という形で、実際のユーザーデータを使い、運用に沿った形で業務が進められるかも含めて確認します。

単体テスト

単体テストとは、ユニットテストともよばれ、プログラムを構成する比較的小さな単位が個々の機能を正しく果たしているかどうかを検証するテストです。コーディング時などの早い段階で、エンジニアによって実施されることが多いのが特徴の1つです。

統合テスト

小さな単位での確認である単体テストとは反対に、プログラムが全体的に正しく動作しているかを検証する作業のことを、統合テストといいます。開発全体の比較的後の段階で、OAチームなどによって行われます。

システムテスト

システムテストは総合テストともよばれ、構築したシステムが予定通りの機能を果たしているか、また機能や性能が仕様書通りに構築できているかを検証することです。単体テスト、統合テストの実行後に、本番とほぼ同じ環境で実施されます。

運用テスト

運用テストとは、利用する側の視点でシステムの動作をチェックするという、全工程において最後に実施される工程です。受け入れるための検収の際に実行されることから、受け入れテストとも言います。

9:納品

テストまでクリアしたら、顧客への納品を行います。納品の際は、実際に動作するソフトウェア環境のほか、プログラムソース、各種設計書、運用マニュアルなどが納品物になります。かつての納品物は大量の印刷物でしたが、近年は電子媒体として納品されます。顧客が対応すべき保守作業などがあれば、納品とは別にトレーニング期間を設けることもあります。

10:運用・保守

納品が完了すれば、ソフトウェア開発も基本的に完了状態となります。ただし、ソフトウェアの不具合などの瑕疵が発生した場合は、修正対応が必要になります。多くの場合は保守契約を結び、実運用の中でユーザーにとって使い勝手が悪いと感じられる機能や、要求分析や要件定義時に漏れていた機能を改修・追加作成するなどの対応を行います。

ソフトウェア開発を学ぶおすすめの書籍5選


ソフトウェア開発について、もっと詳細な内容を知りたいという人は、市販本を探してみてはいかがでしょうか。ソフトウェア開発の学習書には、いろいろなレベルの市販本があり、初心者でも、すでにソフトウェア開発に携わっている技術者でも知識を広げることができます。ここでは、ソフトウェア開発を学べるおすすめの5冊を紹介します。

1:アジャイルな見積りと計画づくり ~価値あるソフトウェアを育てる概念と技法~

こちらの書籍では、クライアントに対してどういった見積りを提案するかなど、スケジュールに関する質問に対してのノウハウが溜まった書籍です。また、なぜアジャイル開発が必要なのかそれに対して答えを出してくるといった内容になっています。アジャイルという言葉は知っているけど、どういったことなのかよくわからないといった初心者にも打って付けの書籍です。

アジャイル、スクラム、リーン、エクストリームプログラミングなど、新しいソフトウェア開発には様々なツールや呼び名が存在しているが、その根底にある考え方は共通である。本書は、なぜアジャイル開発を行わなければならないのか、という本質的な問いに真っ向から答えてくれる。アジャイルという言葉は知っているけど、よくわからない、分かった気になっているだけの人にとっては必読書となるだろう。https://www.amazon.co.jp/gp/customer-reviews/R704635LS12M…

2:ソフトウェア開発入門: シミュレーションソフト設計理論からプロジェクト管理まで

本書はソフトウェア開発の中でも、シミュレーションソフトに特化して、設計とプロジェクト管理について解説されています。シミュレーションソフトの開発に携わる人は、一般的なソフトウェア開発の工程に加え、計算に関する基礎知識も解説があるので、一読してみることをおすすめします。

3:SOFT SKILLS ソフトウェア開発者の人生マニュアル

本書は「ソフトウェア開発」に関する解説書ではなく、ソフトウェア開発者に向けた人生の指南書です。ソフトウェア開発者として、どのように技術を身につけ、どのように仕事を得るかといったノウハウが提示されています。ソフトウェア開発者向けに書かれた本ですが、技術的な話ではないので、一般的なビジネス書として読んでみるのもおすすめです。

SEでライフハック好きの私は今まで多くのノウハウを学び実践してきましたが、この本にはそのほぼすべてが一冊でカバーされていました。まさに「惜しげもなく」という言葉がぴったりと思います。特に私にとって参考になったのはブランディングの部分で、実践し、実績を残した著者だから書ける内容だと思いました。業界の構造が違いますが日本IT技術者に是非読んで欲しい本と思いました。https://www.amazon.co.jp/gp/customer-reviews/RX91WIPIFDCI…

4:Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門

本書は「webアプリケーション開発」について、実際にwebサーバを作りながら学ぶことができる解説書です。webアプリ開発での幅広い知識と多様な技術を、自分で試して納得することで確実に身に着けることができます。

5:図解でわかるソフトウェア開発のすべて

本書は「ソフトウェア開発の技術的側面」を中心にしており、ソフトウェア開発の知識を幅広く理解できるよう工夫された1冊です。できるだけ難解な言葉を避け、平易な表現と豊富な図解によって説明されているので、非常にわかりやすく、入門書として最適です。

SE
ソフトウェア開発は、さまざまなお仕事をするのですね。
PM
そうですね。おすすめの本を読み、スキルを磨いていきましょう!

将来性の高いソフトウェア開発の仕事にチャレンジしよう!


多くの仕事に定型の流れがあるように、ソフトウェア開発にも定番の工程があります。流れをつかんでいれば、今やっている仕事にどのような意味があるのか、次に何をすべきかなどを理解しやすくなります。ソフトウェア開発の流れを理解し、効率的に作業を進めていけるように努めましょう。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags

Jobs