しかし、時々、次の四半期の締め切りの
最悪の事態は、そのようなシステムが発売日に近づくにつれて始まります。 設計中に行われた最小のエラーと脱落により、水が深さ5000メートルで金切り声を通してワードルームに流れ始めます。
そのようなプロジェクトを時間通りに獲得してリリースする方法に関する既製のレシピはありません-記事にあります。 しかし、要件の流れに関連して頻繁に発生するリスクを分析し、勝つ可能性を高める方法に関する推奨事項を示します。
チェーンについては、技術的な実装から要件に至るまで、非標準的なものからボトムアップで説明します。逆もまた同様です。
役割-開発者
開発者は自分のコードに対して重い責任を負います-新しい行ごとに増加します。 したがって、彼はプログラムを作成し、確率と論理的スライムなしで、プロジェクトの問題を正確かつ正確に解決したいと考えています。 結局、生成されたコードは、電気モーターを備えたヒンジ上の機械加工された金属構造、数学アルゴリズムの結晶化です。 柔軟なコード、カスタマイズ可能なデザインパターン、リファクタリング、10,500のユニットテストに関する異端-破損したマネージャーが思い付きました:-)
プログラマにとって、RBツリー内のファイル内の文字列を並べ替えるアルゴリズムを理解して実装すること、非同期ネットワークtcpサーバーのソケットの可能性のある状態を追跡すること、または認証フォームからのデータを処理することも同様に困難で重要です。 細心の注意を払って、すべての詳細をまだ調査する必要があります。 しかし、開発者が仕事をうまくこなすには、「ネクロモーフには目がいくつあるか、吸血鬼に刺さる矢印がいくつあるか」など、特定の正式な質問に正確に答えることができる誰かが必要です。 開発者に自分でサブジェクトエリアを理解させ、夜に墓地を歩き回って答えを求めて墓地を歩き回る場合-誰がいつ作業コードを書くのか?
なぜなら 開発者は、実装されたプログラムコードの責任を負い、彼にとってのすべてのミスは、心臓の痛みとカルマの成長(プログラミング中のあいまいさ、濁り、水、および混乱)によって与えられます。これらは、できるだけ最小限に抑える必要がある同じ愚かで不必要なリスクです。 最も重要なことは、それらを減らすことができることです!
デバッグ、テスト、なめられたとき、プログラムコードに後で深刻な変更を加えることはわかっています(はい、プログラミングパターンについて知っていますが、それらは全能ではありません)-Webプロジェクトの実装の期間を無期限にシフトするだけでなく、とらえどころのないエラーをシステムに吹き込みます。
最後に、壁紙を塗って貼り付けた後、監督者に依頼して、壁の配線をより厚い銅線に置き換えます...彼の費用で-監督者はそれを気にして、要件を変更するこのシナリオを予測する必要がありますか? :-)それは愚かです-しかし、開発中、これは残念なことに頻繁なケースです。
チェーンを上に移動します。
役割-マネージャー
会社の管理の一部として、ウェブプロジェクトマネージャーはプロジェクトの成功を担当します。 プロジェクトのリスクを特定して削減することにより-つまり 彼は自分で答えを出すか、開発者に主題分野で生じる質問に正確に答える誰かを見つけなければなりません。
たとえば、プロジェクトチームにアナリスト、エキスパート、または顧客の知的代表者を含めることができます。顧客は設計されたシステムのすべての微妙さとロジックを詳細に明らかにするまで夜眠りません。 または、マネージャーはプロジェクト、サブジェクトエリアに没頭して、この作業を自分で行う必要があります。
マネージャーが社内の無限の再帰で「矢印を翻訳」し始めた場合、地球の軌道の高さからプロジェクトの詳細を無視し、「霧」を逃がすために質問から逃げるか、質問に答えてください-この混乱は生産に漏れ、生気のないコードとして乾燥します役に立たないテストで覆われ、この悪夢はクライアントへの機能の次のデモンストレーションで開きます。 それは残っています-すべてを書き換えて、期限と予算を壊します...またはそれを爆破します。
要件の「水」のわずかな欠落部分でさえ、特に基本的なことに関しては、作成されたシステムの安定性を大きく損ないます。 はい、あなたのチームが非常に経験豊富な戦闘機を持っている場合-彼らはほとんどの場合、「水」をローカライズし、それを隔離し、完了するまで対象エリアの不正確さと濁りについて叫ぶでしょう。 しかし、通常、問題は発売の前日に明らかになります。
ツール
要件がある場合、マネージャー(専門家、アナリスト)は...えー...袖をまくり上げて作業する必要があります。 次の便利なツールをお勧めします。
-用語集
-ユースケースまたはユースケース
-用語集エンティティ間の関係(1対多、N対Mなど)
-活動図または通常の学校のフローチャート
要件を明確にするプロセスで、システムエンティティとそのプロパティ、およびエンティティ間の相互作用が明確になります。
例は次のとおりです。「顧客は割引を受ける顧客のグループに属している場合があります。」
質問、開発を開始する前に明確にすべき答え:
-バイヤーは複数のグループに参加できますか?
-この場合の割引はどのように計算されますか? 数式が必要です。
-バイヤーはどのくらいの期間グループに含まれますか?
-購入者をグループから削除して通知する場合 電子メールまたはSMSで?
などなど
すべての質問に正確かつ正式な回答をする必要があります。開発者を非難しないでください。「プログラマーはどういうわけか、彼は賢く、どうしたらいいかわかりません。」
リスクを軽減する方法
1)マネージャー、アナリストからプログラマーへの要件形成の連鎖を確認します。 人々は自分がしていることを理解していますが、これはどのように詳細に機能しますか?
2)対象分野の専門家として、クライアントが設計プロセスと要件の仕様にどの程度関与しているか。 それとも、彼は待っていて空想にふけっているのでしょうか? :-)
3)Webプロジェクトマネージャーに、対象地域の詳細を明らかにするいくつかの質問をし、それに応じて水がこぼれた場合...緊急の動機付けのための対策を講じる:-)
4)開発者と話し合う-主題分野に関する質問に誰がどのように答え、どの程度明確かつ一貫しているか? 彼らはすべてを理解していますか?
5)要求の詳細はどのくらいの頻度で変更され、サブジェクトエリアはプロジェクトマネージャーの詳細が「理解されていない」ことと、期限前に「理解されていること」が原因で「移動」しますか。 目から出血する前に対象領域の精緻化が不足しているため、起動前日にコードを変更しなければならない頻度と、その理由(および夜間にバグを修正するために2週間)。
上から下への要件の流れを改善するためのリストされた対策の遵守-Webプロジェクトが成功する可能性を劇的に増加させます!
皆さん、頑張ってください。