Home / ソフトウェア / ソフトウェアとは?サービス事例や開発工程を紹介!

ソフトウェアとは?サービス事例や開発工程を紹介!

今やソフトウェアは我々の生活には欠かせません。パソコンやスマートフォンが普及しており、スマート家電と呼ばれる新しい家電製品も広がりつつあります。それに伴い、ソフトウェアによるサービスに注力する企業が増えてきました。人的なサービスを行うと人件費がかかりますし、物理的なサービスを行うと原材料費などがかかってしまいます。

それに対してソフトウェアで行うと、コストを最小限に抑えることが可能です。

この記事ではソフトウェアとは何か、その活用事例、そしてソフトウェアの開発工程について紹介していきたいと思います。我々の生活に不可欠なソフトウェアがどのように開発され、どのように使われているのかを網羅的に載せています。この記事を読んだ方がソフトウェアに興味を抱き、更には開発に踏み切るための後押しとなれば幸いです。

スポンサードリンク

ソフトウェアとは

ソフトウェアという言葉は現代では日常的に使われるようになってきています。1979年にNEC社より発売された初のパーソナルコンピューターであるPC-8000シリーズ以降、パソコンは徐々に日常生活に溶け込み今では仕事でも生活でも欠かす事のできない物になっていますがパソコンに限らずコンピュータ機器は全てハードウェアとソフトウェアの2つで成立しており、ハードウェアは別名「金物」と呼ばれ機械部分を指します。

それに対しソフトウェアはハードウェアを動作させる命令部分を指します。よく「アプリ」と呼ばれるスマホのプログラムもソフトウェアです。

ソフトウェアとは

ソフトウェアとは簡単に言うとプログラムの事です。

プログラムというのはコンピュータの脳であるCPUに命令を送る物でそれによりコンピュータは動作をしています。ですのでプログラムは人間が目的に合わせて作る物、という事になります。実際にCPUに送られるのはマシンコードと呼ばれる2進数値で表される物ですが、それを人間が直接に作成するのは非常に大変ですのでプログラムを作る時には、より人間にとって使いやすいプログラム言語という物で作り、それをマシンコードに変換する事により作成します。

このプログラム言語にもレベルが有り、よりマシンコードに近い物ほど専門的な知識が必要になり作成難易度が上がります。最もマシンコードに近い言語を「低級言語」といいアセンブラ言語がこれに相当します。それに対し専門的な知識が無くてもプログラムが書けるように難易度を下げた言語もあり古くはCOBOL、C言語、ベーシック、現在ではJava、C++などがこれにあたり、これらを「高級言語」と呼びます。

こういったプログラム言語は作成後にコンパイル(高級言語をマシンコードにする)またはアセンブル(アセンブル言語をマシンコードにする)という作業を行ってから実際に動作をさせる、という手順になりますがベーシックを始め逐次翻訳型のプログラム言語もありインタープリタ型と言います。これらはコンパイルもアセンブルも必要ありませんが翻訳に時間がかかるので動作速度は遅くなるという弱点も持っています。

こう書きますと一見「アセンブラ言語ができれば最強」と思われるかもしれませんがアセンブラ言語はCPUによって変わってしまいますので汎用性が無く一般的なソフトを作成する際には、むしろ高級言語を使用した方が汎用性があり将来、マシン本体であるハードウェアが変わっても対応が出来る、という大きな利点があります。ですので業務や生活に使うパソコン用のソフト等は高級言語で作成した方が良いのです。

アセンブラ言語は「機械制御」を目的としたシステムを作成する制御系エンジニアであればやむをえませんが一般的な用途では使用しない方が賢明です。

ソフトウェアの活用事例

たとえば、以前は担当者をって行っていた空調の管理なども、今ではソフトウェアによる自動制御が可能になりつつあります。これまでは温度が高いと感じたら、担当者がマニュアル操作で温度を下げるのが一般的でした。快適性を保つという意味でも重要ですが、電気料金を節約する意味においてもその存在は欠かせないものでした。

しかしいくら電気代を節約するためとはいえ、専用に担当者を雇っていては人件費がかかってしまいます。自動制御を行えるソフトを導入すれば、そのような人材を雇う必要はなくなり、大きくコストカットを実現できるのです。

人がいなくなることに不安を感じるケースもあるでしょう。その場合はインターネットを使用して、遠隔監視を行える環境を構築しておくと良いです。24時間監視をするようにすれば、信頼性を大きくできるでしょう。機器に異常が発生した場合は、遠隔監視行っているセンターに自動で通知が行く仕組みにしておくと安心です。

以前はソフトウェアで行うサービスは、スタンドアローンの形態で行われるのが一般的でした。インターネットの回線に不安がある状況では、リアルタイムで多くのことを行わせるのは難しかったためです。通信速度が遅くて実用的といえないものも少なくありませんでした。しかし今では光回線などのブロードバンドの普及によって、クラウドなどを使用してオンラインで行われることが増えています。

たとえば地図ソフトのサービスでも、大いにインターネットが活用されています。基本的に地図のデータは端末に持っておらず、検索したい地域のデータをその都度ダウンロードする仕組みになっています。昔の地図ソフトはメディアに入ったデータをインストールして使用するのが一般的でした。そのため地図が古くなると、新しいメディアを入手して再インストールする必要があったのです。

またデータを保存する記憶領域を確保する必要もありました。現在の地図ソフトはそのような手間や領域は不要ですし、常に最新のデータを利用できるというメリットがあります。またダウンロードだけでなく、アップロードする仕組みを備えているケースもあります。自分が撮影した写真をアップロードすることで、その付近の地図を検索している人が写真を閲覧できるのです。

このように、インターネットを活用したスタイルは日々進歩しています。消費者だけでなく、企業自体も多くのソフトウェアを活用しています。

たとえば、離れている地域の社員同士で会議を行うときは、TV会議用のアプリケーションを用いることになります。また、自席にいながら会議を行うためのチャットツールを導入している企業も珍しくありません。どれも一昔前は夢物語であったような内容ですが、今ではソフトによって実現されているサービスが数多く存在するのです。

ソフトウェアを開発するには

ソフトウェアの開発を業務として行う場合、以下の2通りがあります。

1.企業が業務に使用するためのシステム開発
2.機械に組み込んで使用するためのシステム開発

前者を「業務系」、後者を「制御系」を称します。制御系はハードウェアに関する内容も含む専門知識が必要となり内容と担当する技術者のレベルで作業工程は大きく変わります。業務系は注文主の企業が業務系ソフトウェア開発会社に発注し開発する物で使用するハードウェアは決定しており、それに対するソフトウェアを作成する作業であり作業工程は規定化されていますので順番に内容を説明します。

ソフトウェアの開発工程

1・要件定義

最初に行うのが「要件定義」です。注文主の企業が求める内容を規定し明確化する工程です。

この工程における顧客側担当者はトップマネジメントです。社長、専務といった役員が出てきます。顧客側の公認会計士やシステム担当責任者等が出て来る事もあります。

ここでは、「これから作るシステムの目的」を明確にします。例えば以下のような内容です。

・顧客からの注文をインターネットを介して受けられるようにして欲しい。
・新しい子会社が出来るので連結決算が出来るようにして欲しい。
・自動化できる所はできるだけ自動化し人員削減につなげたい。

ここでは「トップの目線から見た目標」が示されます。それに対しシステムでどう対応するか、を考えて提案するのがシステムエンジニアの仕事です。この工程における成果物は「要件定義書」です。成果物というのは「作業をした結果、出来上がる物」の事でこれを明確にしておく事は重要な事です。

成果物を注文側、受注側の両者が確認し了承して、その工程は終了となりますが、その終了期限が「納期」です。納期は成果物が有って初めて成立する物です。成果物が何か? は要件定義の段階で決められる事もあるし各工程の開始時に決められる事もあります。

2.全体設計

ここからはシステムエンジニア(以後、SE)の仕事です。要件定義書に従って、どういうシステムを作ったら良いか?という全体図を作ります。システムというのは、いわば「入口と出口が有る大きな箱」で「何を入れたら中でどういう加工が行われ何が出て来るのか?」を考える訳です。

この工程では「現在の業務現場の確認」や「使用している帳票類」などを調査する事も必要になります。場合によっては、この段階で「論理データベース設計」という最も基本形となるデータベース設計が行われる事もあります。この工程の成果物は「全体設計書」で内容としては要求されているシステムの機能を明確化した物になります。場合によっては「論理データベース設計書」が付けられる事もあります。

3.詳細設計

次に全体設計書に従い必要なプログラムが何か?を洗い出し整理しプログラム一覧表を作成します。そして各プログラムの詳細仕様書を作成します。そして各プログラムの詳細設計の作成と平行してデーベースの物理設計を行います。

この工程の成果物は以下の通りです。
・プログラム一覧表
・各プログラムの詳細仕様書
・データベース一覧表
・各データベースの詳細設計書

4.プログラム作成

詳細設計書に従ってプログラムを作成しプログラム単体でのテストをする工程です。この工程はプログラマーが担当しSEが管理を行う事がほとんどです。詳細仕様書で不明点があればSEに確認します。

この工程の成果物は以下の通りです。
・プログラム本体及びテスト結果
・データベース本体

5.システムテスト

出来上がったプログラムを連動させ全体として求められている機能を実現できるかどうかを確認する試験です。実際の業務に添ったシナリオを用意し、それが設計通りに処理されるかどうかを確認します。

この工程の成果物は以下の通りです。
・システムテスト結果報告書

6.納品テスト

出来上がったシステムを顧客に納品し確認してもらう作業です。全ての確認が終わったら全作業は終了です。

全体フローの把握が大切

ソフトウェアを作成するには、プログラム言語を覚える事も必要ですが動作手順を事前に明確に設計してから作成する方が確実です。初心の方はフローチャートの作成を行ってから着手されて下さい。

通常、最初から100%うまく動作する事は無く、何等かの問題が発生するのが当たり前でそれを直しながら進めていきます。プログラムで問題を起こす場所をバグと言い、これを取り去る作業をデバッグと言います。デバッグを繰り返しながら、徐々に完成させていく、という事になりますが「最終完成形」がどういう物であるか? を事前にちゃんと明確にしておかないと本当に完成したのかどうかは分かりません。その為にも事前にちゃんと設計を行ってから着手して下さい。

プログラムをイメージとして表現すると「ある物を入れると、何かが出て来る箱」と言えます。例えば「ABC」と入れると、それを画面に「ABC」と表示してくれる、という具合です。プログラムは、この入力と出力を明確にする事が非常に重要なのです。

まとめ

いかがだったでしょうか。ソフトウェアは今や我々の生活とは切っても切れない存在となっています。そしてその活躍の幅はこれからも益々広がっていくことでしょう。

契約内容によっては保守やアップグレードを行う必要がありますが、基本的には開発が済んでしまえば、新たなコストが大きく生じることはありません。多くの人材を確保する必要はありませんし、原材料を調達しなくても大丈夫です。パソコンやインターネットなどITの環境さえ整っていれば、事業として成立させる事は難しくありません。

これを機にソフトウェアの開発に踏み切ってみるのもいかがでしょうか。


スポンサーリンク

Check Also

オフィス2010のインストール方法及びワード2010、エクセル2010の特徴を徹底解説!

Microsoftのオフィス製 …