第4章 ソフトウェアの基礎知識
本章では、ソフトウェアの役割、特徴、その分類、ソフトウェア ライフ サイクル 、ソフトウェア開発の課題などの内容を述べます。
1.1 ソフトウェアとその役割、構成、分類
1. ソフトウェアとその分類
コンピュータシステムは、ハードウェアとソフトウェアの組み合わせで実現されます。ソフトウェアとは、ハードウェアをうまく動(うご)かしで有意義な仕事をさせるための命令の集(あつ)まりのことです。その中でも、OS(オペレーティング システム)と呼ばれるものは、コンピュータを作動させるために、必須となる基本ソフトウェアです。WINDOWSなどがそれに当たりです。
ソフトウェアは「データ処理システムを機能させるための、ポログラム、手順、規制、関連文書なと含む知的な創作」と定義されています。
ソフトウェアという言葉は、ハードウェアの対義語として発生した造語です。コンピュータ発展段階では、ソフトウェアはハードウェアに対する補助的なものとして見られできました。今や、システムというソフトウェアと等しいかのようにいわれることが多いです。これは、ソフトウェアによって、同じ汎用のハードウェアをさまざまに使い分けることで、種々のシステムが実現できるようになったためです。
1980年代前半までは、コンピュータシステムは企業での業務や製造ラインの制御、学術機関での研究に使われることが多く、個人での使用はまれでした。この時代は、ハードウェアの価格や役割はに比較ぢてソフトウェアの比重は非常に小ささかったです。
しかし、この状況は、マイクロ プロセッサの出現とネットワークの進展によって大きく変化しました。マイクロ プロセッサは、自動車、家電、産業用ロボット、通信機器、ゲーム機等の幅広い分野の製品に使われ、さらにパーソナル コンピュータの普及を可能にし、コンピュータは身近なものなった。コンピュータシステムのアーキテクチャは、大型コンピュータを中心とする形態から複数のコンピュータをネットワークに接続し、ソフトウェアを組み合わせて使う時代になり、今やネットワークによって世界中のコンピュータ同時が更新可能となるインターネット時代となりました。
このように、今やソフトウェアは産業と情報社会発展の担いてとして重要な役割を持つ様になってきています。しかし、それに伴って、ソフトウェアの複雑化と大規模化が進み、ビジネス競争が激化する中で、多くの開発プロジェクトが、スケジュール遅延、コスト割れに追い込まれるようになりました。また、ソフトウェアが実社会に密接かつ重要な役割を果たすほど、その不具合による重大な社会的経済的損失の発生が問題になりました。
ソフトウェア開発には、次の課題があります。
市場のニーズに対応するソフトウェアをいかにタイミングよく効率的に開発しますか。
コンピュータシステムが広く社会で使われるようになってきた現在、ソフトウェアの不具合が社会的問題を引き起こしかねません。このようなソフトウェアの品質をいかに向上させますか。
ソフトウェアの改修や仕様の変更いかに安全かつ効率よく行いますか。
このような課題に対して、体系的な開発方法、技法、管理技術が必要にたっています。
2. ソフトウェアの構成
ソフトウェアは、プログラム、手順技法、ドキュメントから構成されます。
プログラマは、データ処理や計算をコンピュータに指令する命令群からなります。また、プログラムの形態には、処理を言語で記述したソースプログラムと、ハードウェアで実行可能な形態に変換されたオブジェクトプログラムがあります。
手順技法は、プログラムを開発していく概念と手順を示し、技法はそれぞれの手順における作成方法やツールです。
ドキュメントは、ソフトウェア開発の計画書、設計仕様書、テスト仕様書、操作説明書、保守説明書などで、ソフトウェア開発段階の仕様書確認及び開発後の保守作業に必要なものです。
3. ソフトウェアの分類
ソフトウェアの分類法には、種々の方法がありますが、ハードウェアの関係及び利用範囲で分類ですことが多いです。すなわち、基本ソフトウェア、応用ソフトウェア及びこれらの中間の機能を持つミドルウェアに分類されます。
この他、データ入力機能から処理機能、結果の出力機能までの一連の処理内容の全てを含んだソフトウェアパッケージがあり、その種類もシステムソフトウェアから応用ソフトウェアまで広範囲にわたって存在しています。
基本ソフトウェアは、オプレーティングシステムが主体で、ハードウェアの機能を生かして、プログラムの実行、データ管理や操作上のインタフェースを取り扱います。サービスプログラムは、プログラムの作成や運用を支援するためのソフトウェアです。下記の通りです。
基本ソフトウェア(講義のOS)
制御プログラム
汎用言語プロセッサ
サービスプログラム
ミドルウェア(基本ソフトウェアと応用ソフトウェアの中間)
DBMS(データベース ネージメントシステム)
通信管理システム
第四世代言語
GUI
ワードプロセッサ
グラフィック
運用管理ツール
応用ソフトウェア
応用ソフトウェアは、業種別ソフトウェア、業務別ソフトウェアと共通応用ソフトウェアなどに分けられます。業種別ソフトウェアは、金融、製造、サービスなどの業種に対応して個別に作成されるソフトウェアです。業務別ソフトウェアは、多くの業種に含まれるか各種の業務、すなわち販売、人事、経理などのソフトウェアです。共通応用ソフトウェアは、各種の業種や業務において共通に使われる表計算、CAD、Web作成ツールなどです。多くのソフトウェアが市販されています。下記の通ります。
共通応用ソフトウェア
CAD
CAIオーサリングシステム
エキスパートシステムシェル
機械翻訳
OR、統計処理
科学技術計算ライブラリー
特殊問題向き言語
個別応用ソフトウェア
ミドルウェア
ミドルウェアは、応用ソフトウェアと基本ソフトウェアの中間にあって、各種の応用ソフトウェアで共通に使われる機能を抜き出して共通なソフトウェアとしたものです。
さらにその他に、機器に組み込まれるソフトウェアがらります。これは、現代電話、カーナビのような情報機器、ロボットやエンジン制御のような制御機器、洗濯機や電子レンジのような家電回路のハードウェアで実現されていた機能がマイクロプロセッサの高性能化にようってソフトウェアで実現可能の範囲が広がり、組み込みソフトウェアの開発量増加しつつありまる。
1. 2ソフトウェアの特徴
ソフトウェアは、物理的形状を持つハードウェアと異なったを持っています。
1. 2ソフトウェアの特徴
ソフトウェアは、物理的な形状を持つハードウェアと異なった特徴を持っています。ハードウェアの製造過程で行われる分析、設計、製造、テストは、最終的に物理な形に変換されますが、ソフトウェアは物理的ではなく論理的な構造物です。そのため、ソフトウェア開発は次のような特徴を持っています。
実態がつかみにくいです。
ソフトウェアは人間の知的な作業の産物で、その作業は、開発者の頭の中で行われます。ドキュメントがソフトウェアの実態の一部を公開する手段が、開発工程がどこまで進んでいるか、仕様どおりのものができつつさるのかはつかみにくいです。
開発工程に作業が集中します。
ハードウェアを作る場合、作業は開発と製造に大別され、品質問題コストともに両方の段階で発生しますが、ソフトウェアは開発の工程が大部分を占、品質問題もコストもここに集中します。
運用保守期間が長いです。
ソフトウェア開発には、計画、実際の開発、完成したソフトウェアを実際に運用し一部の機能性能の改良を行う運用保守に大別されます。一般に、この運用保守期間は開発に要した期間よりはるかに長いです。
再利用がしようないです。
ハードウェア開発にあたって設計者は、通常、既存の部品を使うことを前提とし、既存のものでは仕様を満足しない特定の部品に対してのみ該当部品の開発を行います。いわば、部品の再利用が定着しています。ソフトウェアの開発においては、実用的なソフトウェア部品のカタログはほとんどなく、流通した部品として再利用できるような段階に至っていないです。
1. 3ソフトウェアのライフサイクル
ソフトウェアのライフサイクルとは、ソフトウェアが誕生してから、破棄されるまでの過程のことです。すなわち、発生―>運用―>運用―>破棄までの一連の過程のことです。
ソフトウェア開発においては、まず開発計画が設定され、それから実際のソフトウェア開発に入ります。ソフトウェア開発には、要求分析、外部設計、内部設計、プログラミング、テストの段階があり、この段階を経て運用保守の段階に移ります。この段階では、運用して始めて検知される不具合の修正が行われます。また、業務内容の一部変更に応じて、ソフトウェアの小規模の改良や機能追加も行われます。
一般に、運用保守の期間は開発の時間に長く、数倍になるケース量があげるケースもらります。運用してから長期間経つと、業務内容やデータ量が変化してきてソフトウェアの部分的な改良では対処できない時期が来ます。この時点で、それまでのソフトウェアの役目は終了し、新しいソフトウェア開発が必要となります。
このように、計画、開発、運用保守までをソフトウェアライフサイクルと呼びます。
4.4ソフトウェア開発現場における課題
ソフトウェア開発の現場には、いろいろ課題がありますが、以下に主な課題を述べます。
要求仕様決定の困難性
要求仕様は、とかく顧客の願望仕様的なもので、そのまま開発していくことは開発工数、費用の限度を超え、さらに技術的実現性が不確実になる場合があります。要求仕様の決定においては、工数費用の妥当性と技術的実現性が得られなければなりません。
再利用の困難性
ソフトウェア開発工程は予定どおりの進捗なのかどうか把握しにくい、大幅な工程遅延が突然判明して、回復困難な状態になってしまう可能性があります。特に、開発プロジェクトの設計段階、プロジェクト段階、テスト段階で、トラブル現象の例:大幅な工程遅れの発覚、技術的な実現不可能事項の発覚、プログラム間インタフェースの具体性欠如の発覚、大幅な工数、費用オーバー見通しの顕在化、不具合収束せず、開発工程の再設定見通し立たず、プロジェクトメンバのモラル、連帯性の欠如など。これは、トラブルの原因が積み重なった結果の現れです。
ソフトウェア開発規模工数見積もりの誤り
開発計画の段階で規模工数の見積もりを誤ると、開発工程の遅延、費用のオーバーを招きます。