この質問は this one と同じですが、コードの品質についてではなく、ユーザーの観点から最終製品について話しています。時間と予算が限られていて、適切なソフトウェアから良質のソフトウェアに移行するためのソフトウェアの1つの属性(基本的な要件以外)しか保証できない場合、最も重要だと思うものは何ですか。
バグはできるだけ少ないですか?直感的なインターフェース?役に立つエラーメッセージ?優れた技術サポートとドキュメント?ソフトウェアをユーザーに安っぽく見せたくない場合は、何を含めることを常に忘れてはなりませんか?
直感的で魅力的なユーザーインターフェイス。陳腐なように見えるかもしれませんが、「美しいものの方がうまくいく」という言葉にはいくつかの真実があります。
2013年9月18日編集:
もう数年になりますが、以下のモートンの質問はずっと頭に残っています。はい、SQLサーバーはユーザーインターフェイスで判断します。 すべてにユーザーインターフェイスがあります。まあ、とにかくほとんどすべて。シェル、設定ファイル、コマンド、ログファイル、それらはすべてユーザーのためのインターフェースです。ほとんどのLinuxカーネルモジュールでも、一部のUIは/ sysおよび/ procのファイルとして公開されています。はい、それらはユーザーインターフェイスです。 graphicalではないからといって、それほど重要ではありません。
例:Postgresが優れたデータベースであることを知っています。悲しいですが、それ以上使用しないこともあります。 MySQLをより多く使用します。どうして?その一部は、シェルコマンドの方が使いやすいことです。 show databases;
それが何をするか、何をするかを言います。初めて見ました。二度としませんでした。 psqlを使用しているときは、ほとんど覚えていません。それは...ですか \dl
あるいは単に \l
?待つ必要はありません\dl
他に何かありますか?ええ、本当に欲しいですか\dn
?撃って、わかりました。助けを求めるコマンドは何ですか? \help
?いいえ、これはSQLコマンドのリストです。シェルコマンドのリストはどこにありますか?ああ。 \?
にリストがあります。なぜ\?
と違う \help
?
ええ、いつもそれを使っていたら、慣れるでしょう。それはポイントではありません。重要な点は、適切に設計されたソフトウェアは「慣れる」ことを要求してはならないということです。
これはばかげた例のように思えますが、効果があります。
その他の重要な機能は、ユーザビリティの単なる属性または貢献です(バグのない、機能性、魅力など)。
これは、ソフトウェアに価値があることを証明する最も重要な機能です。価値があれば儲かる。
ユーザーが簡単かつ迅速に実行するために必要なことを実行する必要があります。使いやすくなければなりません。
改善が容易になります。高品質のソフトウェアを構築すると、欠陥(UI /パフォーマンス/クラッシュなど)を安価に処理できるように構築されます。
どのソフトウェアにも欠陥があるので、品質の改善が簡単で低コストになるようにビルドしてください。
他のすべてはこれから続くでしょう。
最も重要な機能は、顧客が要求したことを実行できることです。つまり、これは基本的な要件を満たすだけでなく、顧客が理解できる方法で実現します。
それを「使いやすさ」と呼んで、それが答えになります。
外観や機能などの残り、およびバグ(理由あり)は後で改善できます。顧客が要求したことを実行できる場合は、通常、顧客も満足し、これらの改善を依頼する可能性が高くなります。
私の経験では、顧客が仕事をこなすのに役立つかわいらしいソフトウェアは、あなたにもっと仕事をさせるつもりはありません。
予測可能性
ソフトウェアは、ユーザーが要求したときに、ユーザーが期待する方法で、要求されたジョブを実行する必要があります。途中で予期せぬ事態が発生することはありません(予測できない動作や明らかでない動作、明確なフィードバックのない長い遅延、単純なクラッシュなど)は、その仕事で効果的で信頼性が高いだけです。
1つのことをうまく行うソフトウェアは、多くのインターフェイスオプションを提供するが予測できない動作やクラッシュを引き起こすソフトウェアよりもはるかに有用です。需要が高まるにつれ、いつでも新しい機能を構築できますが、ソフトウェアがユーザーの期待に沿う方法で期待される仕事を行わない限り、さらなる改善をもたらす基盤がありません。
IMO、プログラムを進化させるプラットフォームを提供することは、プログラムが持つことができる最高の機能です。 Firefoxはこの良い例です。彼らはまともな製品を提供し、バグが修正されると、ソフトウェアは自動的に更新されます。エンドユーザーは常に最新のビルドを持っているので、これは非常に役立ちます。予算と時間が増えると、新しい機能を簡単にプッシュできるため、これはあなたのケースでも役立ちます。
ソフトウェア製品のもう1つの最高の品質は、例外を処理し、例外的なシナリオに対応する方法です。ほとんどのプログラムはこれを適切に処理できません。それらは未処理の例外によって殺されるか、ユーザーを混乱させる無意味なエラーメッセージを生成します。
バグのないソフトウェアを作成することは簡単な仕事ではありません。それはプログラムが進化するときに最終的に起こります。しかし、問題をデバッグするために十分な情報が利用可能であることを確認することはプログラマの義務です。ユーザーに優れたエラーメッセージを生成する方法の1つの良い例は、 VirtualBox です。予期しないエラーが発生した場合は、詳細なログファイルを開発者に連絡してヘルプを表示するオプションを選択すると、エラーの原因がユーザーに通知されます。
あなたがビジネスソフトウェアについて話すなら、それはすべて管理のしやすさについてです。私の会社では、非常に多くの管理者を必要とするソフトウェアを取り除くために一生懸命働いています。
私にとってデスクトップソフトウェアの場合、それはすべて安定性についてです。クラッシュするソフトウェアが嫌いです。
私の心の質は、ソフトウェアによって対処される利害関係者の懸念の量の尺度です。
一般的に、私の定義はRUPの定義とうまく対応しています。
RUPは品質を次のように定義しています。