

ソフトウェア機能とは、Kangら[ 1 ]の定義によれば、「ソフトウェアシステムまたは複数のシステムの、ユーザーから見える顕著または特徴的な側面、品質、または特性」である。実装レベルでは、Apelら[ 2 ]の定義によれば、「利害関係者の要求を満たし、設計上の決定を実装およびカプセル化し、構成オプションを提供するために、特定のソフトウェアの構造を拡張および変更する構造」である。
「機能」という用語は、ソフトウェアにおいてもあらゆる種類のシステムにおいても同じ意味を持ちます。例えば、イギリス海軍のHMSドレッドノート(1906年)は、ドレッドノート以前の戦艦には存在しなかった先進的な機能を備えていたため、海軍技術における重要なマイルストーンとみなされていました。[ 3 ]
この特徴はコンピュータのハードウェアにも当てはまります。コンピュータの初期の歴史では、Digital Equipment CorporationのPDP-7ミニコンピュータ(1964年開発)などのデバイスは、ワイヤラップを使用したPDPミニコンピュータシリーズの最初のバージョンであることや、同年発明された独自のDEC Flip-Chipモジュールを使用した最初のバージョンであることなど、豊富な機能を備えていることで注目されました。 [ 4 ] [ 5 ]
この特徴は、プログラミング言語などの概念にも当てはまります。Pythonプログラミング言語は、コードの異なるブロックを示すために中括弧の代わりに空白文字(スペースとタブ)を使用するという特徴でよく知られています。[ 6 ]
もう一つの類似した高水準オブジェクト指向プログラミング言語であるRubyは、異なる変数スコープを強調するために「@」と「$」という記号を使用していることで注目に値し、開発者はこれによりコードの可読性が向上すると主張している。また、開発者は、その重要な特徴の一つとして高い柔軟性を挙げている。[ 7 ]
電気電子学会(IEEE)は、ソフトウェアテストドキュメントの(廃止された)規格IEEE 829において、機能を「ソフトウェアアイテムの識別特性(パフォーマンス、移植性、機能性など)」と定義している。[ 8 ]
機能という言葉は通常、ソフトウェアシステムの肯定的な側面を指すのに使われるが、ソフトウェアのバグもまた機能の一種ではあるが、その価値は否定的である。
端末エミュレータxtermには、 X Window Systemとの互換性、ANSI カラーで VT220 および VT320 [ 9 ]端末をエミュレートする機能、コンピュータ マウスなどのデバイスを使用してエスケープ シーケンスを入力する機能、複数の異なるUnix ライクなオペレーティングシステム ( Linux、AIX、BSD、HP-UXなど)で動作する機能など、多くの注目すべき機能があります。[ 10 ]
機能豊富とは、ソフトウェアシステムが多くのオプションと機能を備えていることを指します。
機能豊富なソフトウェアをユーザーに導入するメカニズムの1つは、段階的開示の概念です。これは、多くの機能を一度に表示することによって生じる可能性のある混乱を軽減するために、必要に応じて機能を段階的に導入する手法です。[ 11 ]
機能が豊富であることは、時に否定的な属性とみなされる。機能過剰、ソフトウェア肥大化、機能過多症といった用語は、機能が過剰に豊富なソフトウェアを指す。 [ 12 ]このような機能の過剰な組み込みは、場合によっては委員会による設計の結果である。[ 13 ]
ソフトウェア開発者が不要な機能を追加しがちな傾向に対抗するため、1970年代にベル研究所のケン・トンプソンやデニス・リッチーといったUnixオペレーティングシステムの開発に携わった従業員によってUnix哲学が開発されました。この哲学は、ソフトウェアプログラムは一般的に1つの主要なタスクのみを完了すべきであり、「小さいことは美しい」と要約できます。[ 14 ] [ 15 ]
{{cite book}}: CS1 メンテナンス: その他 (リンク)