======ソフトウェアとソフトウェア工学====== {{page>adsense:ads_content_header&nouser&nodate&nomdate&noeditbtn}} =====ソフトウェア===== ====ソフトウェアとは==== コンピュータを構成する回路や装置などの物理的実体をハードウェア(Hardware)と呼ぶのに対し、ソフトウェア(Software)とは、そのハードウェアの上で動作して何らかの処理を行うプログラムのことです。 ====ソフトウェアの分類==== ソフトウェアにはさまざまな分類方法があります。 **(1)レイヤから分類** *基本ソフトウェア \\ ハードウェアの基本的な制御を行い、ハードウェアの資源を有効活用するとともに、多くのソフトウェアが共通して利用する基本的な機能などを実装してシステム全体を管理するソフトウェアです、主にOSのことを指しており、例えば、Windows、Unix、Linux、Android、iOSなどがあります。 *ミドルウェア \\ 基本ソフトウェアと応用ソフトウェアの中間に位置し、OSの上に動作して応用ソフトウェアに対してOSよりも高度で具体的な機能を提供します。データベース管理システム`(Oracle、SQLServer...)、アプリケーションサーバ(Websphere、Webogic...)などがあります。 *応用ソフトウェア \\ ユーザの利用目的に応じて作られたソフトウェアであり、アプリケーションソフトウェアとも呼ばれます、Officeや会計ソフト、グループウエアなどがあります。 **(2)役割にようる分類** *基盤ソフトウェア \\ 企業などのソフトウェアシステムをサポートするために必要な共通機能を提供するものです、例えば、OS、データベース、メールサーバ、ネットワーク管理、セキュリティ管理などがあります。 *ユーティリティーソフトウェア \\ コンピュータ上で機能する、補助的な機能を提供するソフトウェアであり、ツールソフトウェアや単にユーティリティーとも呼ばれます。 ファイルエディタや圧縮ツール、画像編集ツールなどがあります。 *情報処理ソフトウェア \\ 情報システムを構成するソフトウェアです。 *組込ソフトウェア \\ 産業機器や家電製品などに内蔵され、特定の機能を実現するための組み込みシステムで動作するソフトウェアです。 *ゲームソフトウェア \\ コンピュータゲームのソフトウェアのことです。 *... **(3)ビジネスによる分類** *市販ソフトウェア \\ ソフトウェア開発に携わっている企業および会社が有料で販売しているソフトウェアです。一般販売しているため、OSやOfficeといった、広く利用できる汎用的なものが多い。 \\ 販売形態については、昔から主流だったパッケージ販売(量販店などの店頭で、記憶メディアに記録され、包装されたパッケージの状態で販売する)や、インターネットが普及してからのダウンロード販売、SaaS・クラウドが発展してからのサービス販売などがあります。 *自社開発ソフトウェア \\ 自社が使用するソフトウェアを自社で開発することです。 *オーダー生産ソフトウェア \\ 自社が使用するソフトウェアの開発をベンダに委託することです。 *フリーソフトウェア \\ 無料で提供されるソフトウェアであり、オンラインで配布されることが多い *シェアソフトウェア \\ 無料な試用期間を設けて、試用期間後でも継続的な使用する場合は有償になるソフトウェアであり、フリーソフトウェアと同じ、オンラインで配布されることが多い ==== ソフトウェアのライフサイクル ==== 全てのソフトウェアにはライフサイクルがあります。ほとんどの場合、ソフトウェアは、「企画」→「開発」→「運用」→「廃棄」からなるライフサイクルをたどると考えれ、ソフトウェア工学の研究対象は主にそのなかの「開発」になります。 ソフトウェアにはリニュアルやバージョンアップがよくあるものですが、ライフサイクルからみれば、新旧バージョンを別々のソフトウェアととらえることができます。 ====ソフトウェアの品質==== ソフトウェアの品質特性は大きく6つに分類され、それぞれの英語の頭文字をとってFRUEMP特性とも呼ばれています。 * 機能性とは、必要な機能を満たしているかということです。 * 信頼性とは、指定された条件の下で正しく動くかということです。 * 使用性とは、使いやすさを表します。 * 効率性とは、スピードとサイズに関する性能です。 * 保守性とは、修正のしやすさです。 * 移植性とは、実行する環境の移行のしやすさを表します。 =====工学===== ==== 工学とは ==== 工学(Engineering)とは、主に数学、化学、物理をベースとする自然科学などの知識を応用して、実用的な技術発見や製品開発などを研究対象とする学問の総称です。 工学と対照的には、理学(Science)、医学(Medicine)、農学(Agriculture)などの分類があります。 ==== 工学の分類 ==== 工学には様々な分類がありますが、以下はその代表的な一部です。 * 建築工学 * 機械工学 * システム工学 * 情報工学 * 電子工学 * 鉄道工学 * コンピュータ工学 ==== 工学の共通点 ==== 工学の共通点としては、以下のような作業を共有していることです。 * モデリング \\ なにが問題で,どんなものを作るべきかを明確にするため、対象領域を分析して,モデル化する技術が重要です * 仕様 \\ 工学はきちんとした仕様を明確しなければなりません * 成果物 \\ 工学はなんらかの成果物を作成しています * 設計 \\ 工学の核は設計技術です。 * 検証 \\ 成果物が仕様に満たしているかどうかを検証しなければなりません =====ソフトウェア工学===== ====ソフトウェア工学とは==== ソフトウェア工学(Software Engineering)とは、ソフトウェア開発を研究対象とする工学で、ソフトウェアを効率的に設計、開発するための手法に関する学問、もしくはそのための技術のことをいいます。 ====情報システムの位置づけ==== ソフトウェア業界の仕事は、情報システム開発が大半を占めているため、ここで情報システムのことを特別に取り上げて説明します。 情報システム(Information System)とは、情報を適切に保存・管理・流通するための仕組みやシステムのことです。言葉の意味からすれば、コンピュータを使わなければならないことはないですが、現代ではほとんどの場合、情報システムは「コンピュータ情報システム」の略として用いられています。 情報システムは、ハードウェア、ネットワーク、ソフトウェアを組み合わせて構成されたシステムであるため、ソフトウェアを含めているイメージですが、情報システム構築時は、構成要素のハードウェアは調達するものであり、開発する必要なのはソフトウェア部分のみですので、情報システムの開発=情報システムにおけるソフトウェアシステム開発として、ソフトウェア工学の最も重要な一大分野になっております。 ==== ソフトウェアプロジェクト管理の位置づけ ==== ソフトウェアプロジェクト管理 (Software Project Management) は、ソフトウェアプロジェクトを計画し導く技術です。 プロジェクト管理の一分野として、ソフトウェアを開発するための組織、チーム、個人のあり方、つまり人間の問題を取り扱うため、「もの」が取り扱う対象のソフトウェア工学の分野には分類されません。 {{page>adsense:ads_content_footer&nouser&nodate&nomdate&noeditbtn}}