ソフトウェアの寿命の意味

今日、ソフトウェア開発プロセスのアーキテクチャ、設計、組織化の手法は、ステロイドのウサギのように増えています。 フレームワーク、コンポーネント、およびライブラリはそれほど遅れていません。 多くの決定は、経験、直感、または一連の試行錯誤に基づいています。 システムが複雑になっているため、間違ったツールを選択するリスクは増大しています。 タスクに対するツールの妥当性を評価する方法の1つについて説明したいと思います。



誰もが自分にとって人生の意味を見つけます。 物理学者は、人生の意味はエントロピーとの戦いにあると言うことができます:カオスから秩序への変換。

この場合、ソフトウェアの意味は、注文の作成をより効果的で興味深いものにするためにルーチンを排除することです。


テキストは長くなります。 あなたが急いでいないし、椅子に慣れているなら、この声明を実証しよう。



ソフトウェアエンジニアリングでは、開発者は、コンポーネント、モジュール、サービス、またはコントロールで、インターフェイスの背後にある繰り返しのステップと操作の詳細を隠し、問題の解決の実装をその定式化/インターフェイスから分離します。



コンポーネントまたはプログラムがユーザーのタスクにどの程度適合するかは、プログラムが回避することを許可した些細なルーチン手順の数と、追加した新しい手順の数によって判断できます。 また、プラスは、ユーザーがタスクの詳細にどれだけの時間を費やさなければならないか、マイナス-プログラムを効果的に使用し、導入された技術的な問題を解決するためにプログラムを研究するためにどれだけ余分な労力をかける必要があるかです。



プログラムの設計における基本的な要素は、機能とその実装の分離です。 人生の他の多くのものと同様に、これは3つの大きな質問を提起します:

1.何をしたいですか?

2.これをどのように行いますか?

3.なぜこれをしたいのですか?



最初は、機能仕様に関する質問です。 2番目は、特定の機能の技術的な実装です。 しかし、最後の質問、なぜそれを行うのか、なぜそれを必要とするのかにより、より広範なタスクのフレームワーク内での一般的な方向が決まり、「何」と「どのように」の質問に対する可能な答えの中から選択を指示します。


ソフトウェアの設計では、細部にまで踏み込んだ場合でも、「何」や「どのように」という質問に対する質の高い回答が得られることがよくあります。

-このボタンにはどのような透明度がありますか?

-これらの2バイトをサーバーに送信する方法



それどころか、「なぜ」という質問に対する答えは、プログラム全体と機能またはアーキテクチャソリューションの大部分のレベルで与えられることが多いのですが、細かい点については、各決定を熟考し、正当化することは不必要になります。 したがって、タスク「C」の枠組みで「決定A」が「決定B」よりも優れている理由を正当化することは困難になります。



非最適なツールとソリューションの選択は非常に破壊的である可能性があり、設計者と開発者の注意がユーザーとの理想的な相互作用の組織から、選択したツールを既存のタスクに適応させる際の技術的問題との戦いに移行する際の連鎖反応の影響につながります。 このプロジェクトにはより多くの作業が必要であり、開発者の熱意が低下し、最終結果の品質が脅かされます。



そのようなソリューションの品質を評価する方法は? 良いオプションの1つは、繰り返しのステップ、退屈なタスク、補助的なタスク、機械的なタスク、創造的なイベント、興味深いイベント、重要なイベント、機能的なタスクの2つの部分に分けた後、ルーチンの手順を分析し、ソリューションを比較することです。



ルーチン識別ショー

-プログラムをどこでどのように改善できるか。

-適切なツールを使用して仕事をしていますか。

-プログラマーとエンドユーザーの両方の仕事において創造的な部分を増やすことができますか。



いくつかのシナリオを取り上げて、ルーチン分析を使用してプログラムとのユーザーインタラクションを改善する方法を見てみましょう。 説明のために、例はエンドユーザーとソフトウェアとの対話に基づいていますが、最終原則はコンポーネントまたはフレームワークに適用できます。 ユーザーとプログラマーの問題は、特にWTF /分で判断される場合、ほぼ同様です。
写真
画像








例1:MS Wordでファイルを保存する



ほとんどのユーザーはWordを使用しています。 ドキュメントを保存するためのダイアログは、特に初めて、真剣に困惑させる可能性があります。



-正しいファイルタイプを選択しましたか?

-すべてのタグに入力するか、名前とトピックを入力する必要がありますか、またはこれらのフィールドの一部のみを入力する必要がありますか?

-タイトルとテーマの違いは何ですか?

-エンコードを指定する必要がありますか? 以前は間違ったエンコーディングで問題があったことを覚えているので、これは重要なはずです。

-ファイルを保存する場所は? 共有ドライブ上の記事、マイドキュメント内のエントリ、ネットワークリソース上の企業ファイル、プロジェクトフォルダー内のプロジェクトドキュメントなどがあります。 ファイルを一時フォルダに保存して、後で決めるだけでしょうか?

-ファイルがテキストの最初の行で呼び出され、ウィンドウタイトルが「ドキュメント1」であった理由。 それはバグまたは機能ですか?



時間が経つにつれて、このダイアログに慣れてきて、入力するパラメーターと無視するパラメーターがわかります。 残っているのは、これらすべてのパラメーターが必要かどうかという問題です。



ユーザーが必要とするのは、「テキストの名前を設定し、次にそれを使用したいときに見つけられるようにすること」です。 このタスクには、ファイルを保存するフォルダーの決定や正しいエンコードの選択は含まれません。 実際、ファイルを保存することも含まれていません。ユーザーが望んでいるのは、次回テキストを見つけて、それを使って何かを実行できることを確認することです:印刷、作業を続行、またはメールで誰かに送信します。



ファイルを別の方法で保存できますか? たとえば、Gmailレターのドラフト草案を使用して、簡単なフォーマットのテキストを準備して喜んでいる人もいます。 Gmailは、いつ、どのようにドキュメントを保存するかについての質問でユーザーを悩ませません-これは自動的に行われます。 トピックを入力できますが、これもオプションです。



GMailがどのようにすべての日常的なアクションを削除し、ユーザーに対してドキュメントの保存を完全に透過的にするかを見ると、MS Wordでも同じことができますか? もちろん:



-新しいドキュメントを保存するための標準の場所を定義する

-ドキュメントに名前を付けて自動的に保存する

-ユーザーがドキュメントの名前を変更して移動できるようにします



その結果、ユーザーは技術的な詳細に気を取られなくなりました。



-ユーザーは、アプリケーションが必要とするときではなく、必要なときにファイルに名前を付けます。

-ファイルをメモリからハードドライブにコピーするタイミングを決定する必要はありません。

-保存ダイアログボックスに関連付けられた技術パラメーターは、削除するか、あまり使用されないエクスポートダイアログに転送できるため、ユーザーはアプリケーションを日常的に使用するためにそれらを学習する必要がなくなります。



無関係なことに気を取られることなく仕事に集中できるのは素晴らしいことです。



もちろん、Wordは自分でカスタマイズできる大きく複雑なプログラムです。 VBAスクリプトを記述して、「Gmailで保存」することもできます。 しかし、このためには、小説を書いている著者や彼のレシピを準備している料理人にとって全く興味のない技術的な詳細を研究し、検討するために時間を費やす必要があります。 はい、プログラマー...あなたのことは知りませんが、たとえば、定期的にCtrl + Sを押すという反射神経は、Wordでの自動保存について学ぶよりもずっと早く解決しました。



2番目の例:雨の日



雨が降る場合は傘を忘れないでください。iGoogleページの天気予報ガジェットを使用します。



手順は次のとおりです。



1.午前中にiGoogleをチェックインします

2.リンクをクリックして詳細な予報を表示し、雨が降ると予想される時間を確認します

3.その日の計画と比較し、傘を取るかどうかを決定します。

4.外出するときは傘を忘れないでください



各ステップには時間がかかり、少し注意が必要であり、間違いを犯す機会があります。 早朝に雨が降ったが、晴れて傘が必要なくなった場合、午後6時以降に再び雨が降ることに気付かないかもしれません。 朝食に気を取られて天気情報を確認したり、必要に応じてすべてを確認したり、傘が必要であると判断したり、30分後に家を出て忘れたりすることができます。



タスクは文字通り「傘を忘れないで、雨が降る機会があれば家を出る」という立場なので、理想に近いのは、時間ごとの予報を確認するプログラムを備えた安価なタブレットを内側のドアに掛けて、スケジュールと比較して言うことですたとえば、「午後6時以降に外出する場合は傘を取ります。」



現在の天気をタヒチの平均年間統計と比較する機能を備えたクールなアプリケーションは必要ありませんが、「今日はバケツのように注ぎます」という通知だけが必要な場合にのみ必要です。 もちろん、妻やガールフレンドに同じことを強制することもできますが、これは解決策ではなく、不正行為なので、タブレットで解決策に戻ります。



すべてのリスクは1ステップで残ります。家を出る前にタブレットを見てください。



タブレットがない場合は、スマートフォンを使用できます。 違いは、リマインダーをオンにするタイミングを決定することです。 理想的な時間は「家を出る直前」ですが、私の場合は「充電器がオフになっているとき」にも適しています。



興味深いことに、不必要な手順とリスクを取り除くことで、開発者として、ユーザーの生活を楽にするだけでなく、機能のさらなる改善にもっと集中できます。



おわりに



上記の例を使用して、「セキュリティの質問」を作成し、プログラムの使いやすさを評価できます。



-プログラムによって導入されたすべての技術要素を排除する場合、ユーザーの実際のタスクは何ですか?

-タスクに繰り返しステップがありますか? 完全にまたは部分的に自動化されましたか?

-プログラムによって導入された純粋に技術的なステップはありますか? それらをユーザーから隠すことはできますか?

-ユーザーの注意をそらすオプションの手順はありますか?

-プログラムは、ユーザーのタスクに直接関連しない決定を必要としますか?

-ユーザーが意思決定に必要な情報を持っていない場合、プログラムは「コンテキスト外」で意思決定を行う必要がありますか?

-ユーザーは、長い期間で区切られた関連する決定を行う必要がありますか?



このような質問はそれ自体で役立ちますが、1つの基本的な質問に基づいています。



-作業のどの部分(プログラムを使用する場合)が反復的で、退屈で、オプションであり、機械的であると特徴づけられ、どの部分が創造的で、興味深く、重要なままですか?



より良い用語がない場合、最初の部分を「ルーチン」と呼びます。 「ルーチン」とは、自動化、削除、または非表示にできる作業の一部です。



これの残りは、実際には、本当の仕事です-その重要なおよび/または創造的なコンポーネント。 これは、ユーザーがすべての退屈なルーチン要素を削除するために必要な決定とソフトウェアのタスクを行うことをユーザーに要求する部分です。



All Articles