ホームページ >バックエンド開発 >PHPチュートリアル >プログラマの生産性向上への道 - ステップ 1: 要件分析

プログラマの生産性向上への道 - ステップ 1: 要件分析

WBOY
WBOYオリジナル
2016-07-25 08:47:191267ブラウズ
プログラマーの生産性を向上させる方法。
午前 9 時、あなたの上司が突然オフィスに乱入し、「市場は当社の Web サイトに新しい豪華なログイン ボックスを求めています。ユーザー名とパスワードのフィールドだけを提供できますか? 回復リンクも追加するかもしれません。」と言いました。ああ、行かなければならない、急いでください!
このような状況では、通常、人々は瞬時に暴れる皇帝になりますが、今回は冷静でいられます。なぜなら、あなたは解体する方法を学んだからです。 PHP。
脱構築とは何ですか?
分解とは、要件を可能な限り小さな断片に分解し、次にこれらの断片を整理して精緻化し、最終的にあなた (プログラマー) と上司/顧客の間で合意を形成することです。
誰かが既成の仕様書を与えても問題ありません。すべては解体から始まります!
すでにコーディングしているのに、なぜ分解する必要があるのですか?
はい、おそらく、AngularJS を使用してログイン フォームを ng-submit() する方法をすでにいじっているかもしれません。最初に Struts 1 で段階的に実行するよりも、はるかに簡単に感じます。いや、急いで崖から引き下がってください!
最初に行う必要があるのは、要件の堅牢性を確認することです。壊す。 「ユーザーがボックスからログインできるようにしたい」という要件は適切ではありません。
とても簡単そうに思えますよね?つまり、ほんの数分でできますよね?さて、次に進みましょう…
実際の例はありますか?
これは真実です。私の経験から言えば、この実際の例は 2011 年 2 月にドイツの自動車メーカーから新しいウェブサイトの作成を依頼されたときに起こりました。
下の写真の左下隅を見てください。ログインボックスにご注意ください。とても小さくてシンプルに見えますが、実際は非常に複雑です。その理由を見てみましょう…
まず、解体方法について?
テクノロジー主導の人々やビジネス主導の人々と協力して働く必要があります。したがって、より多くのインプットを得るために上司を説得する必要があります。
ああ、ちなみに、必要に応じてさらに人を追加できます。ただし、私の過去の経験に基づくと、チーム全体で解体作業を行うのは、時間、お金、エネルギーの多大な無駄になりますが、それはまた別の話です。
次に、お気に入りの筆記ツールを開いて、いくつかの「子供っぽい」質問を始めてください。そして答えを一つ一つ書き出して整理していきます。この「子供っぽい」質問とは何でしょうか? ——「それは何ですか?」「何が原因ですか?」「なぜ必要ですか?」「他に部品はありますか?」。
どのくらいの期間ですか?あなたが質問を終えるか、他の人に嫌われるでしょう
例について?
上記の例に戻ってください:「ログイン ボックスが必要です」。まずそれを詳しく見てみましょう: [1] 必要なものは [2] ログイン [3] ボックスです。その時に[1]が与えられたとすると、[2]から始めることができます。
[ログイン]部分についての質問
あなた:「ログインって何ですか?」
ビジネスパーソン:「そうですね、ログインするにはユーザー名とパスワードで十分です。」
あなた:「ユーザー名またはメールアドレス?」ビジネススタッフ: 「わかりました!」
あなた: 「ちょっと待って、ユーザーは誰ですか?」
ビジネススタッフ: 「クビにしてほしいなんてバカなんですか? 彼らはユーザーです。」
あなた: 「それは皆さんもそうなんですか?」
営業担当者「そうですね。ただし、経営陣はすでにBMW車を購入しているユーザーであればパスできると言っています。顧客番号はウェブサイトにログインします」ゲスト アカウントを自動的に取得します。 "
あなた: "それでは、これらの顧客のフォームをどのように取得すればよいでしょうか? "
ビジネス スタッフ: "ああ、ちなみに、いくつかの異なるユーザー データベースがあります。 CRM システムについて説明する必要があります。「
あなた: 「えっと、パスワードを送ってください。それとも、すでにパスワードを持っていてログインするだけですか?」「CRM システムが利用できない場合はどうすればよいですか?」自動ゲスト アカウントとは何ですか?突然ログインできるようになったのはなぜでしょうか? ……ヘルプ!
=>質問を続けます
最初に会議を一時停止し、[ボックス]の部分を見てください
あなた:「ボックスは何ですか?」
営業スタッフ:「ほぼすべてがデザインされています。ユーザー名/パスワード欄、ログインボタン 他に難しいことはありますか?
あなた: 「ボックスはホームページに表示するだけです」
ビジネス担当者: 「いいえ、いくつかのアクティビティ ページなど、複数の Web ページに表示する必要があります。そのため、CMS システムのコンポーネントに作成する必要があります。」
あなた: 「コンポーネントですか? ああ、そうしますね。」 HTTP/HTTPS の違いを知っていますか? 私たちの Web サイトは HTTP で動作しますが、これは少し注意が必要です (http ページに https のインライン フレームを置くと頭が爆発してしまいます)... うーん... それを確認する必要がありますか?ユーザーはデータを安全に転送します。「
ビジネス スタッフ: 「はい、そうです。セキュリティについて言えば、私もユーザーを禁止する必要があります。」 そうしないと、対応するレイヤーにログインできなくなります。もう一度電話します。」
あなた: 「ユーザーを禁止しますか? レイヤーはインライン フレームに埋め込まれていますか? それとも親ページのレイヤーに配置されていますか?」
=>質問を続けてください。まだ始まったばかりです!
まだ取り上げていない内容がたくさんあります。たとえば、インフラストラクチャ、SSL ロードバランサー、パスワードを忘れた場合のワークフロー、エラー/情報メッセージなどです。そして一体誰が「ログインボックスが必要だ」と言ったのでしょう?クライアント?では、本当の顧客とは誰なのでしょうか?
HTTP/HTTPS の問題については、要件を策定する前に技術担当者とビジネス担当者が一緒に座って議論する必要があります。双方向のコミュニケーションがなければ、本当に夢の中で生きているだけになってしまいます。
最後になりましたが、この例はまだ完全には分解されていません。それどころか、これは氷山の一角にすぎません。
森、森、森、木がなければ森はどこにあるでしょうか?
一連の質問をした後、まずこれらの質問を整理して詳しく説明する必要があります。整理して説明しないと計画や見積もりはできません。そうでないと、わずかな違いが大きな違いを生む可能性があります。
もちろん、これらの手順を完了する前にコードを入力するのは間違いなく正しくありません。まず、金を採掘するのと同じように、虚偽を捨てて真実を維持するように、これらの質問を洗練させてみましょう。
次のステップ: はい、まだ完了には程遠いです。これは脱構築の始まりにすぎません。
今後の記事でも、解体とその後のステップについて書いていきますので、お楽しみに。異なる意見がある場合は、修正していただければ幸いです。
LAMP BrothersオリジナルPHPチュートリアルCD/「Essential PHP in Detail」を無料でプレゼント 詳細は公式サイトカスタマーサービスまでお問い合わせください: http://www.lampbrother.net

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。