仕事を完了する期限を正しく決定する方法を学ぶ方法について専門家が答えます。 プロセス自体の時間を計算するアルゴリズム リアルタイム システムでのスケジューリング

これまでのいくつかのセクションで説明した内容はすべて、プロセス自体の時間の問題に関するさらなる研究に向けたものであり、実際の応用についてはそれほどではありませんでした。 このギャップを埋めるために、プロセスの進化に関する統計データに基づいてプロセスの適切な時間を計算する方法の 1 つを紹介します。

状態が実変数 x によって特徴付けられる 1 次元プロセスを考えてみましょう。 プロセスのダイナミクスの観測が天文学的時間 t で実行されると仮定します。そのため、t = t k および x = x k、k =1、...、n は観測の固定瞬間であり、対応する値はプロセスは次のように述べています。 点 (t k, Xk) を通過する曲線、または点への「最良のアプローチ」を作成することを可能にするさまざまな数学的手法が多数あります。 このようにして得られた関数 x = x(t) は、検討中のプロセスが天体の機械的運動に依存しており、したがってその状態が天文学的時間 t によって表現されているという印象を私たちの心にもたらします。 この結論は考慮に入れることができます。 プロセスのさらなる経過を予測しようとするときに、継続的な困難が発生しなかった場合。 天体の機械的運動に直接関係しない多数の異なるプロセスについては、観測間隔外で関数 x = x(t) を使用して得られた理論的予測は、その後の実験データから大きく乖離し始めます。 彼らは通常、理論と実験の矛盾の理由を、失敗した処理方法の選択によって説明しようとしますが、それは問題の本質ではない可能性があります。

私たちが興味を持っているあらゆるプロセスは宇宙で発生します。 彼は確かに天体の動きの影響を「感じている」。 ただし、この影響は「非固定的」で決定的ではないことが判明する可能性があります。 これは、特に、天文学的な時間の一定の間隔でプロセスの状態が変化しないという事実として現れます。 これに関連して、外界から隔離された閉じられた空の部屋の前述の例を思い出してみましょう。 ライブを一匹だけ部屋に飛ばしてみましょう。 部屋の状態の変化は予想できないため、数日間にわたる「ルームフライ」システムの状態の変化はハエの動きに依存します。 同時に、ハエの行動が天文学的な時間の流れと厳密に関係しているとは想像しにくいです。

余談が長くなりましたが、プロセス自体の時間を計算するアルゴリズムの説明に移りましょう。

このアルゴリズムでは、極大値を計算するための単位が時間の自然な尺度として選択されます。 さらに、プロセスの定常状態の考えられるセクションが考慮されます。前述したように、このセクションでは適切な時間が停止します。 2 つの状態の同一性は測定精度の範囲内でのみ言えるため、以下では、許容される測定誤差である特定の正の数 e が使用されます。

したがって、アルゴリズムの入力データは、自然数 n、正の数 8、配列 (tk) および (x k)、k = 1, ..., n です。プログラミングを容易にするために、アルゴリズムは次の形式で示されます。 4 つの連続して実行されるモジュール。

モジュール1、一般的な場合、データ p、e、t k)、(x k) を使用すると、新しい配列 7 = (7+ X = (X t) と、非常に特殊な付随配列 P = (?) (1 = 1) が形成されます。 ...、t、そしてt<Сп. Основное назначение этого модуля -- выявление в массиве x k) последовательностей идентичных состояний процесса, сохранение первых элементов в таких последовательностях и удаление всех остальных и, наконец, уменьшение по определенному, правилу исходного интервала наблюдения от t до на сумму тех промежутков времени, в которых процесс протекает стационарно.

モジュール 1 には次の手順が含まれます。

p: = 1、t: = 0、k: = 1。

pp. 特定の初期値を持つ 1、2 カウンターが導入されています。

pp. 3、4でカウンター値が1ずつ増加します。

条件k^nを確認してください。 完了した場合は手順 6 に進み、完了していない場合は手順 11 に進みます。

不等式 x k --x k = e を確認します。成立する場合はステップ 7 に進み、そうでない場合はステップ 9 に進みます。

7. tii = ti - (tkl - tk)、i = k1、.​​..、p。

この手順は、Xk と Xk 1 の値が誤差内で区別できない場合、tk から始まるすべての時点が tki-tk だけ減らされることを意味します。

r = r。 ポイント 4 に戻ります。

テレビ = t k ; X v:=x k ; p = p v = v+l、つまり 配列 T、X、P の要素が形成され、次の値 v が割り当てられます。

  • 10. (t k, ..., t n AND (Xk, - X n) を次元 n--k 1 + 1 の元の配列として取得し、ステップ 2 に戻ります。
  • 11. m、(T)、(X、)、および (P、) を出力します。ここで、i = l, ..., t は終了です。

付属の配列 P の要素の意味を説明しましょう。前のテキストから、pk の値は、直接続く配列 (xk) の要素の数に等しく、x pi+ ... とは異なることがわかります。 +, + が e より小さいことにも注意してください。pi+ ... +p m = n です。

例 1. 与えられた場合: n = 20、(/*) = (2、4、7、10、12、13、15、17、20、22、24、25、

  • 27、30、32、33、34、35、36) および (x、)= (4、4、6、6、6、3、2、4、3、3、3、2、2、4、5 、5、
  • 5、4、3)、図を参照。 9、a.

モジュール 1 を実行した結果、m = 11 が得られます。

(G) = (2, 3, 4, 6, 8, 11, 1-2, 15, 17, 18, 19); (X,) = (4, 6, 3, 2, 4, 3, 2, 4,5,4,3)

i(d.) = (2, 4, 1, 1, 1.3, 2, 1.3, 1, 1)、図を参照。 9、b.

モジュール2。その入力データは自然数 m と配列 (7+ (XL), = 1, ..., m) です。配列内のこのモジュール (TJ は時刻 [TM a], 1 = 1 を識別します) m(ml

例 2. 値 m, (Ть) および (X,] は前の例から借用したものです。モジュール 2 を完了すると、ml = 3, m2 = 8, (Ш,) = (3, 8, 17) が得られます。 )、(Т*) = (3、4、6、8、11、12、15、17)、図 9 の b も参照してください。

モジュール3。入力データ ml、m2、(TM n)、1 = 1、...、ml、(G*)、/2 = 1、...、gn2。

このモジュールは、次の式を使用して配列 (t(-r) を構築するように設計されています)

TV 6 [TMp、TMn+i] はどこですか

変数 t は、変数 x の変化によって生成される固有の時刻です。 その自然測度は、極大値を計算するための単位です。

例 3. T 2) の初期データは、例 2 の ml、m2 ITM の値と同じです。 適切な計算の後、Н = (0; 0.2; 0.6; 1; 1,33; 1,78; 2).

モジュール4。 m の値と配列 (xk) の要素 x の間の対応を確立することにより、結果の出力を生成します。

例 4. 例 2 および 3 のデータに基づいて、次の結果が生成されます (図を参照)。 9、で:

t:0; 0.2; 0.6; 1; 1.33; 1.44;

×:6; 3; 2; 4; 3T02;

したがって、検討されたアルゴリズムにより、天文学的な時間スケールで記録されたプロセスの状態の変化に関する情報に基づいて、プロセス自体の時間の概念を開発することができます。 たとえば、極小値のシーケンスや極大値と極小値の混合シーケンスの計算に基づいて、他のアルゴリズムを使用できることは明らかです。 実験データを処理するときは、おそらくさまざまなオプションをテストする必要があります。 何らかの理由で実験者が特定の適切な時刻の 1 つを選択し、配列 (t4 および (xk)) を受け取った場合、次の段階で、実験者はいくつかの数学的手法を使用して、実験点 (t*, x) を近似世界線で近似する必要があります。プロセス x = x(t) の最初の観察期間を超えてこの線を外挿することにより、プロセスのさらなる経過を予測できます。

提案されたアルゴリズムの使用の見通しを評価することを目的とした計算実験について言及することは興味深いです。 実験材料として、年間の河川流量のデータを選択した。 ヴァクシュ (タジキスタン) 過去 40 年間。 同じ期間に、太陽活動の最も一般的に使用される積分指標であるウルフ数のダイナミクスに関する情報が収集されました。 後者は、太陽活動プロセスの適切な時間を開発するための基礎となりました。 現代までに、河川支出に関する情報は変わりました。 Vakhsh の研究により、観測期間中に水流の理論的な依存性が太陽活動の適切な時間の関数として与えられました。 結果として得られるグラフの特徴は、支出の最大値と最小値がほぼ周期的に変化することです。 ただし、コストは一定ではありません。

以前のアルゴリズムの切り替えバージョンは、残りの実行時間が最も短いアルゴリズムです。 このアルゴリズムに従って、スケジューラは毎回残り実行時間が最も短いプロセスを選択します。 この場合、タスクの完了時間を事前に把握しておく必要もあります。 新しいタスクが到着すると、その合計実行時間が現在のタスクの残りの実行時間と比較されます。 新しいタスクの実行時間が短い場合、現在のプロセスは一時停止され、制御が新しいタスクに移されます。 このスキームにより、短いリクエストに迅速に対応できます。

3 つのレベルの計画

バッチ処理システムでは、図に示すように 3 レベルのスケジューリングが可能です。 新しいタスクがシステムに到着すると、それらはまずディスク上に保存されているキューに入れられます。 入口 アクセススケジューラ タスクを選択してシステムに転送します。 残りのタスクはキュー内に残ります。

ジョブがシステムに入力されるとすぐに、対応するプロセスが作成され、プロセッサへのアクセスを求めてすぐに競合を開始できます。 ただし、プロセスが多すぎてすべてがメモリに収まらない可能性があり、その場合、プロセスの一部がディスクにページアウトされます。 スケジューリングの 2 番目のレベルは、どのプロセスをメモリに保存できるか、どのプロセスをディスクに保存できるかを決定します。 これが彼のやっていることです メモリスケジューラ .

メモリ スケジューラはディスク上のプロセスを定期的に調べて、どのプロセスをメモリに移動するかを決定します。 スケジューラによって使用される基準には次のようなものがあります。

1. プロセスがディスクにスワップされたか、ディスクからロードされてからどれくらい時間が経過しましたか?

2. プロセスが CPU を使用している時間はどのくらいですか?

3. プロセスのサイズはどれくらいですか (小さなプロセスは干渉しません)。

4. プロセスの重要性は何ですか?

3 番目のスケジューリング レベルは、準備完了状態のプロセスがプロセッサにアクセスできるようにする役割を果たします。 「スケジューラー」について話すとき、通常は次のことを意味します。 CPUスケジューラ 。 このスケジューラは、中断の有無にかかわらず、状況に適したアルゴリズムを使用します。 これらのアルゴリズムのいくつかについてはすでに説明しましたが、他のアルゴリズムについては後ほど説明します。

インタラクティブなシステムでの計画。

循環計画。

最も古く、最も単純で、最も公平で、最も頻繁に使用されているアルゴリズムの 1 つは、循環スケジューリング アルゴリズムです。 各プロセスには、一定量のプロセッサ時間、いわゆるタイム スライスが与えられます。 タイム スライスの終了時点でプロセスがまだ実行中の場合、そのプロセスは終了され、制御が別のプロセスに移されます。 もちろん、プロセスがブロックされたり、早期に終了した場合は、この時点で制御遷移が発生します。 ラウンドロビン スケジューリングの実装は簡単です。 スケジューラは、準備完了状態のプロセスのリストを維持することだけが必要です。 プロセスが制限時間に達すると、リストの最後に送られます。

このアルゴリズムの唯一の興味深い点は、量子の長さです。 あるプロセスから別のプロセスに切り替えるには時間がかかります。レジスタやメモリ マップの保存とロード、テーブルとリストの更新、メモリ キャッシュの保存と再ロードなどが必要です。結論は次のように定式化できます。量子が小さすぎると、プロセスの切り替えが頻繁で効率が低いため、クォンタムが大きすぎると、短い対話型リクエストに対する応答が遅くなる可能性があります。 多くの場合、約 2 0 ~ 5 0 ミリ秒の量子値が妥当な妥協点となります。

優先計画。

ラウンドロビン スケジューリングには、すべてのプロセスが同等であるという重要な前提があります。 多数のユーザーがいるコンピューターの状況では、これは当てはまらない場合があります。 たとえば、大学では、最初に学部長が奉仕され、次に教授、秘書、清掃員、そして最後に学生が奉仕されるべきです。 このような外部要因を考慮する必要があるため、計画の優先順位が決まります。 基本的な考え方は単純です。各プロセスに優先順位が割り当てられ、最も高い優先順位を持つ準備完了のプロセスに制御が移されます。

いくつかの行列。

最優先のスケジューラの 1 つは CTSS システム (互換性のある時分割システム) に実装されました。CTSS システムの主な問題は、IBM 7094 コンピュータがメモリ内に 1 つのプロセスしか保持できないため、プロセスの切り替えが遅すぎることでした。 各スイッチは、現在のプロセスをディスクにオフロードすることを意味します。

そしてディスクから新しいプロセスを読み取ります。 CTSS の開発者は、プロセッサーに制限されたプロセスに小さなタイム スライスを与えるよりも、より大きなタイム スライスを与えた方が効率が向上することにすぐに気づきました。 これにより、一方ではメモリからディスクへの転送回数が減少しますが、他方では、すでに見たように応答時間の低下につながります。

その結果、優先クラスを備えたソリューションが開発されました。 最も優先度の高いクラスのプロセスには 1 クォンタムが割り当てられ、次のクラスのプロセスには 2 クォンタムが割り当てられ、次のクラスのプロセスには 4 クォンタムが割り当てられます。プロセスが割り当てられた時間をすべて使用すると、プロセスはより低い優先順位のプロセスに移動されました。クラス。

例として、100 を超える量子を計算する必要があるプロセスを考えてみましょう。 まず、1 つの量子が与えられ、それからディスクに送り出されます。 次に 2 つのクォンタを取得すると、4、8、16、32、64 になりますが、64 のうち 37 だけを使用します。この場合、必要な転送は 100 回ではなく、7 回だけ (初期ロードを含む) になります。ラウンドロビンアルゴリズムを使用する必要があります。 さらに、プロセスが優先キューの奥深くに入るにつれて、プロセスが開始される頻度が減り、プロセッサに短いプロセスが割り当てられます。

「最短のプロセスは次のプロセスだ」

Shortest Task First アルゴリズムはバッチ処理システムの平均所要時間を最小限に抑えるため、対話型システムでも同様に使用したいと考えられます。 ある程度まではそれが可能です。 対話型プロセスは、ほとんどの場合、「コマンドの待機、コマンドの実行、コマンドの待機、コマンドの実行...」というパターンに従います。各コマンドの実行を個別のタスクとして扱うと、全体の平均応答を最小限に抑えることができます。最短のタスクを最初に実行することで時間を短縮します。 唯一の問題は

待機しているプロセスの中でどれが最も短いかを理解することです。

1 つの方法は、プロセスの以前の動作に基づいてプロセスの長さを推定することに基づいています。 この場合、推定時間が最も短いプロセスが起動されます。 コマンドの予想実行時間が T 0 で、次の実行の予想時間が T 1 であると仮定します。 これらの時間の加重和 aT 0 + (1 - a)T 1 を取得することで、時間推定を改善することができます。 a に適切な値を選択することで、推定アルゴリズムが以前の実行をすぐに忘れたり、逆に長期間記憶したりすることができます。 a = 1/2 をとると、一連の推定値が得られます。

T 0、T 0/2 + T 1/2、T 0/4 + T 1/4 + T 2/2、T 0/8 + T 1/8 + T 2/4 + T 3/2。

3 回の実行後、推定値における T 0 の重みは 1/8 に減少します。

前の値と前の推定値の加重平均を通じて一連の次の値を推定する方法は、エージングと呼ばれることがよくあります。 この方法は、以前の値からの推定が必要な多くの状況に適用できます。 エージングを実装する最も簡単な方法は、a = 1/2 に設定することです。 あらゆるステップで必要なことだけを

現在の推定値に新しい値を追加し、合計を半分に分割します (1 ビットずつ右にシフトします)。

保証されたプランニング。

計画に対する根本的に異なるアプローチは、ユーザーに実際の約束をし、それを実行することです。 言うのは簡単で、守りやすい約束が 1 つあります。プロセッサを n 人のユーザーと共有すると、プロセッサの能力の 1/n が与えられます。

また、1 人のユーザーと n 個のプロセッサーが実行されているシステムでは、それぞれのプロセッサー サイクルは 1/n になります。

この約束を果たすために、システムは、各プロセスが作成された瞬間からプロセス間の CPU 割り当てを追跡する必要があります。 次にシステムは、プロセスが使用できる CPU リソースの量 (作成後の時間を n で割った値など) を計算します。 これで、プロセスに与えられた時間とプロセスに与えられた時間の比率を計算できるようになりました。 結果の値 0.5 は、プロセスが割り当てられた量の半分しか受け取らなかったことを意味し、2.0 はプロセスが想定されていた量の 2 倍を受け取ったことを意味します。 次に、比率が最も小さいプロセスが開始されるまで、

最も近いものよりも大きくなることはありません。

抽選企画。

このアルゴリズムは、プロセッサを含むさまざまなリソースにアクセスするためのプロセスに宝くじを配布することに基づいています。 プランナーが決定を下す必要がある場合、宝くじがランダムに選択され、その所有者がリソースにアクセスできるようになります。 CPU アクセスに関しては、「抽選」は 1 秒あたり 50 回行われ、勝者には 20 ミリ秒の CPU 時間が与えられます。

より重要なプロセスには、勝利の可能性を高めるために追加のチケットを与えることができます。 チケットが 100 個しかなく、そのうちの 20 個が 1 つのプロセス内にある場合、プロセッサ時間の 20% が使用されます。 たとえば優先度 40 が何を意味するかを評価するのが非常に難しい優先度スケジューラとは異なり、宝くじのスケジュールではすべてが明らかです。 各プロセスは、保有するチケットの割合とほぼ同じ割合のリソースを受け取ります。

宝くじ計画にはいくつかの興味深い特性があります。 たとえば、作成中にプロセスが複数のチケットを受け取った場合、次の宝くじで当選する可能性はチケットの数に比例します。

通信プロセスは、必要に応じてチケットを交換できます。 したがって、クライアント プロセスがサーバー プロセスにメッセージを送信してブロックした場合、クライアント プロセスはすべてのチケットをサーバー プロセスに渡して、サーバーが起動する可能性を高めることができます。 サーバープロセスが完了すると、すべてのチケットを返すことができます。

フェアな企画。

これまで、各プロセスはその所有者とは無関係に制御されると想定してきました。 したがって、ユーザー 1 が 9 つのプロセスを作成し、ユーザー 2 - 1 のプロセスを作成した場合、ラウンドロビン スケジューリングを使用するか、優先順位が等しい場合、ユーザー 1 はプロセッサの 90% を取得し、ユーザー 2 は 10 のみを取得します。

このような状況を回避するために、一部のシステムでは、スケジュールを設定する前にプロセスの所有者に注意を払います。 このモデルでは、各ユーザーはプロセッサの一定のシェアを取得し、スケジューラはこの事実に従ってプロセスを選択します。 この例では、各ユーザーが

プロセッサの 50% を約束した場合、プロセスの数に関係なく、プロセッサの 50% を取得することになります。

リアルタイム システムでの計画。

リアルタイム システムでは、時間が重要な役割を果たします。 ほとんどの場合、1 つまたは複数の外部物理デバイスが入力信号を生成し、コンピューターは所定の時間内に入力信号に適切に応答する必要があります。

リアルタイム システムは次のように分類されます。 ハードリアルタイムシステム これは、各タスクに厳格な期限が存在することを意味します(期限は必ず守らなければなりません)。 柔軟なリアルタイム システム 、タイムスケジュールの違反は望ましくありませんが、許容されます。 どちらの場合も、プログラムは複数のプロセスに分割されており、それぞれのプロセスは予測可能です。 ほとんどの場合、これらのプロセスは短く、作業は 1 秒以内に完了します。 外部からの信号が発生した場合、スケジュールが確実に維持されるようにするのはプランナーです。

システムが応答する必要がある外部イベントは、次のように分類できます。 定期的な(定期的に発生) そして 不定期(予期せずに発生します)。 システムが処理しなければならないイベントの定期的なストリームがいくつか存在する場合があります。 各イベントの処理にかかる時間によっては、システムがすべてのイベントを適時に処理できない場合があります。


関連情報。


導入

生産組織に関するワークショップの目的は、理論的知識を拡大し深め、生産の組織と計画に関して実際に最も頻繁に遭遇する問題を解決するために必要なスキルを植え付けることです。

ワークショップには、コースの主要セクションのタスクが含まれています。 各トピックの冒頭では、簡単な方法論と理論情報、解決策を伴う典型的な問題と独立した解決策の問題が提示されます。

各トピックには方法論的な説明と簡単な理論的情報が含まれているため、このワークショップを遠隔学習に使用できます。


生産サイクル期間の計算

生産サイクルの期間は、生産プロセスの効率の指標として機能します。

生産サイクル– 原材料が発売された瞬間から完成品がリリースされる瞬間までの、生産プロセスにおける労働対象の滞在期間。

生産サイクルは次のもので構成されます。 労働時間、その間、労働力が費やされ、 休憩時間。 休憩は、その原因に応じて次のように分類できます。

1) オン 自然または技術的 - それらは製品の性質によって決まります。

2) 組織的な(シフト間の休憩)。

生産サイクルの期間は次の要素で構成されます。

Tサイクル = tそれら + t+を食べる t tr+ t k.k. + tもー + t m.ts.

どこ tそれらの– 技術的操作の時間。

食べます -自然プロセス(乾燥、冷却など)の時間。

ttr –労働物の輸送時間。

t k.k. –品質管理時間。

もー術中のケア時間。

t m.c. –店舗間倉庫での保管時間。

(t三つ t k.k. と組み合わせることができます tも)。

生産サイクル タイムの計算は、生産の種類によって異なります。 大量生産では、生産サイクルの期間は製品が生産される時間によって決まります。

Tサイクル = t Mでは、

どこ t V– リリースストローク。

M– ジョブの数。

リリースストロークある製造製品がリリースされてから次の製品がリリースされるまでの時間間隔を理解する必要があります。

リリースストロークは次の式で決まります。

t in = Teff /V、

どこ テフ– 請求期間(シフト、日、年)の労働者の時間の有効資金。

– 同じ期間の生産量(自然単位)。

例: T cm = 8 時間 = 480 分。 T per = 30 分。 → テフ = 480 – – 30 = 450 分

B = 225 個; → tインチ = 450/225 = 2 分

処理がバッチで実行される連続生産では、技術サイクルの期間は製品単位ごとではなく、バッチ全体で決定されます。 さらに、バッチを本番環境に起動する方法に応じて、異なるサイクルタイムが得られます。 生産で製品を移動するには、順次、並列、混合 (直並列) の 3 つの方法があります。


。 で 一連パーツを移動する場合、後続の各操作は、前の操作が完了した後でのみ開始されます。 パーツの連続移動のサイクル期間は次のようになります。

どこ n – 処理されているバッチの部分の数。

t個- 操作にかかる時間の出来高率。

C i– あたりのジョブ数 回目の操作。

メートル– 技術的なプロセス操作の数。

5個からなる製品のバッチが与えられます。 バッチは 4 つの操作を順番に通過します。 最初の操作の継続時間は 10 分、2 回目は 20 分、3 回目は 10 分、4 回目は 30 分です (図 1)。

図1

Tサイクル = T最後 = 5 · (10+20+10+30) = 350 分

部品を順次移動させる方法には、ダウンタイムなしで装置が確実に動作するという利点があります。 ただし、この場合の生産サイクルの期間が最も長くなるという欠点があります。 さらに、作業現場では大量の部品の在庫が発生し、追加の生産スペースが必要になります。

。 で 平行バッチの移動中、個々の部品はワークステーションに保持されず、バッチ全体の処理が完了するのを待たずに、すぐに次の作業に個別に転送されます。 このように、部品のバッチを並行して移動させることにより、各作業場では、同じバッチの異なる部品に対してさまざまな作業が同時に実行されます。

製品の並行移動によるバッチの処理時間が大幅に短縮されます。

ダウンロード .

どこ ん、ん– 部品の数 転送バッチ(輸送バッチ)、つまり ある作業から別の作業に同時に移送される製品の数。

長さ – 最長の動作サイクル。

製品のバッチを並行して発売する場合、バッチ全体の一部は、短い操作の後に長い操作が続く職場でのみ継続的に処理されます。 長い操作の後に短い操作が続く場合、つまり より長く (この例では 3 番目の操作)、これらの操作は不連続に実行されます。 機器がアイドル状態です。 ここでは、前の (長い) 操作ではこれが許可されていないため、パーツのバッチを遅延なく即座に処理することはできません。

私たちの例では: n= 5, t 1 = 10; t 2 = 20; t 3 = 10; t 4 = 30; = 1.

Tスチーム = 1・(10+20+10+30)+(5-1)・30=70+120 = 190分

部品の平行移動の図を考えてみましょう (図 2)。

図2

。 すべての操作でバッチの個々の部分の処理の中断を排除するには、次を使用します。 パラレルシリアルまたは 混合されたどの職場でも作業の実行が中断されないように、(加工後の)部品を 1 つずつ、または「輸送」バッチ(複数個)の形で次の作業に移す立ち上げ方法。 混合方式では、逐次方式から処理の連続性を、並列方式から処理直後の動作から動作への遷移を取り入れています。 実稼働環境への立ち上げの混合方法では、サイクル期間は次の式で決定されます。

コア .

コルはどこにありますか? – 最短の動作サイクル(隣接する動作の各ペアから)

メートル-1組み合わせの数。

後続の操作が前の操作よりも時間が長いか同じである場合、この操作は前の操作の最初の部分を処理した直後に個別に開始されます。 逆に、次の操作が前の操作よりも短い場合は、ピースの転送中にここで中断が発生します。 これらを防ぐためには、次の操業での作業を確保できる量の輸送予備量を蓄積しておく必要がある。 実際にグラフ上でこの点を見つけるには、バッチの最後の部分を転送し、その実行時間を右に移動する必要があります。 バッチ内の他のすべての部分の処理時間は、グラフの左側にプロットされます。 最初の部分の処理の開始は、前の操作からの移送バックログをこの操作に転送する必要がある時点を示します。

隣接する操作の継続時間が同じ場合、そのうちの 1 つだけが短いまたは長いとみなされます (図 3)。

図3

T最後のペア = 5・(10+20+10+30)-(5-1)・(10+10+10) = 350-120 = 230 分。

生産サイクル時間を短縮する主な方法は次のとおりです。

1) 製造設計の製造可能性を向上させ、コンピューターを使用し、高度な技術プロセスを導入することにより、製品製造の労働集約性を軽減します。

2) 労働プロセスの合理的な組織化、専門化と協力に基づく職場の配置と維持、生産の大幅な機械化と自動化。

3) 生産プロセスの科学的組織化の原則の合理的な使用に基づいて、職場でのさまざまな計画的および計画外の休憩を削減します。

4) 圧力、温度の上昇、連続プロセスへの移行などによる反応の加速。

5) 輸送、保管、管理のプロセスを改善し、それらを加工および組立プロセスに合わせて組み合わせる。

生産サイクルの期間を短縮することは、生産を組織する上での重要なタスクの 1 つです。 運転資本の回転率、人件費の削減、保管スペースの削減、輸送の必要性などに影響を与えます。

タスク

1 生産プロセスにおける順次、並列、および直列並列タイプの移動による 50 個の部品の処理サイクルの期間を決定します。 部品を処理するプロセスは 5 つの操作で構成され、その所要時間はそれぞれ min です。 t 1 =2; t 2 =3; t 3 =4; t 4 =1; t 5 = 3。 2 番目の操作は 2 台のマシンで実行され、他の操作はそれぞれ 1 台のマシンで実行されます。 転送ロットのサイズは4個です。

2 生産プロセスにおける順次、並列、および直並列タイプの移動による 50 個の部品の処理サイクルの期間を決定します。 部品を処理するプロセスは 4 つの操作で構成され、それぞれの所要時間は min です。 t 1 =1; t 2 =4; t 3 =2; t 4 = 6。 4 番目の操作は 2 台のマシンで実行され、他の操作はそれぞれ 1 台のマシンで実行されます。 転送ロットのサイズは5個です。

3 生産プロセスでは、200 個の部品のバッチが並列順次動作で処理されます。 部品を処理するプロセスは 6 つの操作で構成され、その所要時間はそれぞれ min です。 t 1 =8; t 2 =3; t 3 =27; t 4 =6; t 5 =4; t 6 = 20。 3 番目の操作は 3 台のマシンで実行され、6 番目の操作は 2 台のマシンで実行され、残りの操作はそれぞれ 1 台のマシンで実行されます。 生産における動作のパラレルシーケンシャル バージョンがパラレル バージョンに置き換えられた場合に、部品のバッチの処理サイクルの期間がどのように変化するかを判断します。 転送ロットのサイズは20個です。

4 生産プロセスでは、300 個の部品のバッチが並列順次動作で処理されます。 部品を処理するプロセスは 7 つの操作で構成され、その所要時間はそれぞれ min です。 t 1 =4; t 2 =5; t 3 =7; t 4 =3; t 5 =4; t 6 =5; t 7 = 6。 各操作は 1 台のマシンで実行されます。 転送ロット – 30 個。 生産技術の改善の結果、3回目の作業時間は3分短縮され、7回目は2分短縮されました。 部品のバッチの処理サイクルがどのように変化するかを判断します。

5 5 個のブランクが与えられます。 バッチは 4 つの操作を実行します。最初の操作時間は 10 分、2 つ目は 20 分、3 つ目は 10 分、4 つ目は 30 分です。 連続動作による分析的およびグラフィカルな方法によってサイクル期間を決定します。

6 4 つの部分からなるブランクのバッチが与えられます。 バッチは 4 つの操作を実行します。最初の操作の所要時間は 5 分、2 つ目は 10 分、3 つ目は 5 分、4 つ目は 15 分です。 平行移動による分析的およびグラフィカルな方法によってサイクル期間を決定します。

7 5 個のブランクが与えられます。 バッチは 4 つの操作を実行します。最初の操作時間は 10 分、2 つ目は 20 分、3 つ目は 10 分、4 つ目は 30 分です。 直列-並列動作の解析的およびグラフィカルな方法によってサイクル期間を決定します。

8 180 個の製品のバッチを処理するための技術サイクルの期間を決定します。 動きの平行および連続のバリエーションを備えています。 処理プロセスのグラフを構築します。 転送ロットサイズは30個です。 時間基準と稼働ジョブ数は以下のとおりです。

(作業からの時間は、定期的なアクティビティの場合は作業が完了するまで、または対話型アクティビティの場合はシステムが応答して最初のユーザー出口を渡すまでの時間が含まれます)。 または最大化 正義(各プロセスの等しい量の CPU 時間、またはより一般的には各プロセスの優先度とワークロードに応じた対応する時間)。 実際には、これらの目標は矛盾することが多いため (スループットとレイテンシなど)、スケジューラは適切なトレードオフを行います。 好みは、ユーザーのニーズと目的に応じて、上記の問題のいずれかによって測定されます。

OS/360 とその後継

AIX

AIX バージョン 4 では、スレッド スケジューリング ポリシーに次の 3 つの設定が可能です。

  • まず、先出し: このポリシーを持つスレッドがスケジュールされると、ブロックされたり、自発的にプロセッサの制御を放棄したり、より優先度の高いスレッドがディスパッチ可能になったりしない限り、スレッドは完了するまで実行されます。 FIFO スケジューリング ポリシーを持つことができるのは、固定優先度のスレッドのみです。
  • ラウンド ロビン: これは、10 ミリ秒のタイム スライスに基づいて循環する AIX バージョン 3 回線スケジューラに似ています。 PP スレッドがタイムスロットの終わりに制御権を持っている場合、PP スレッドは同じ優先順位を持つスレッドのキューの最後尾に移動します。 固定優先スレッドのみがラウンド ロビン スケジューリング ポリシーを持つことができます。
  • OTHER: このポリシーは、POSIX1003.4a によって実装定義されています。 AIX バージョン 4 では、このポリシーは、非固定優先順位のスレッドに適用される点を除き、RR と同等のものとして定義されています。 割り込みごとに実行中のスレッドの優先順位値を再計算するということは、スレッドの優先順位値が別のスレッドよりも高くなったために、スレッドが制御を失う可能性があることを意味します。 これは AIX バージョン 3 の動作です。

スレッドは、現在複数の非同期プロセスで構成されているアプリケーションにとって主に重要です。 これらのアプリケーションをマルチスレッド構造に変換すると、システムに軽い負荷がかかる可能性があります。

AIX 5 は、FIFO、ラウンドロビン、および公平なラウンドロビンのスケジューリング ポリシーを実装します。 FIFO ポリシーは、FIFO、FIFO2、FIFO3 の 3 つの異なる実装で構成されます。 AIX では、ロビンのラウンドロビン ポリシーは SCHED_RR と呼ばれ、公平なラウンドロビン ポリシーは SCHED_OTHER と呼ばれます。

Linux

Linux 2.4

Brain Fun Scheduler (BFS) も Kolivas によって作成され、CFS の代替品です。

FreeBSD

FreeBSD は、0 ~ 255 の範囲の優先順位を持つマルチレベルのフィードバック キューを使用します。 0 ~ 63 は割り込み用、64 ~ 127 はカーネルの上半分用、128 ~ 159 はリアルタイム ユーザー スレッド用、160 ~ 223 はタイムシェアリング ユーザー スレッド用、224 ~ 255 はアイドル ユーザー スレッド用に予約されています。 また、Linux と同様に、アクティブ キュー セットアップを使用しますが、アイドル キューもあります。

多くの場合、開発者、特に経験の浅い開発者は、タスクを完了する期限を設定するように求められると混乱します。 しかし、計画を立てる能力は、仕事だけでなく人生においても役立つ、とても便利で必要なスキルです。 私たちは、正しく計画を立て、予定通りにプロジェクトを遂行する方法を学ぶ方法を専門家に尋ねることにしました。

簡単な結論は記事の最後に記載されています。

開発者は通常、タスクの完了にかかる時間を見積もるために、いくつかのパラメータを一度に考慮する必要があります。

  1. このようなタスクを実行し、このテクノロジー スタックを使用した経験。 根本的に新しいことをしなければならない場合、評価には特に注意する必要があります。
  2. このクライアントと仕事をした経験。 顧客を知ることで、追加の要件と変更の範囲を大まかに予測できます。
  3. 作業するコードの品質。 これが最も影響力のある要因であるため、すべての作業に長い時間がかかり、通常は計画どおりに進まない可能性があります。 プロジェクトにテストがあり、どこにでも明示的な依存関係のみがあり、機能が適切に分離されている場合は、すべてがそれほど怖いものではありません。 テストのないレガシー コードや、暗黙的な依存関係でオーバーロードされたコードを扱っている場合は、さらに状況が悪くなります。 「マジック関数」(コードから最終的な呼び出しスタックを確認するのが難しい場合)やコードの重複(一部の機能を変更するために複数の独立したセクションを編集する必要がある場合)なども問題を複雑にする可能性があります。

仕事の期限を適切に見積もる方法を学ぶには、常に練習する必要があります。 仕事を始めた当初、私はまさにこれを実行しました。誰も必要としていない場合でも、受信したタスクを完了するまでの時間を見積もり、その見積もりをどれだけ正確に計算できるかを調べました。 タスクを完了する際、どのアクションに時間がかかったのかに注目しました。 何かが期間を大幅に延長した場合は、その瞬間を思い出し、次の評価で考慮に入れました。

純粋に作業に必要な時間を客観的に評価するには、不可抗力の状況をカバーするためにわずかなマージンを追加する必要があります。 多くの場合、主要なタスクの完了率として評価されますが、人によって異なります。20% の時間を追加する人もいれば、10% の時間を追加する人も、50% の時間を追加する人もいます。

重大な期限違反が発生するたびに、期限を守れなかった理由を分析することも役立ちます。 資格がない場合は、弱点を克服する必要があります。 問題が組織的なものである場合は、正常な動作を妨げている原因を理解します。

昇格 降格

, 革新的なテクノロジーとソリューションのセンター「Jet Infosystems」テクニカルディレクター

作業期間や個々のタスクなど、プロジェクトの労働強度を評価する方法について多くの記事が取り上げられています。 しかし、それでもプロジェクト チーム内と顧客とのコミュニケーションの両方で衝突が発生します。

評価において主に役立つのは経験です。 新しいタスクをすでに完了したタスクと何らかの方法で比較してみてください。 レポートを作成している場合は、過去に同様のレポートにどれくらいの時間がかかったかを確認してください。 何か新しいことをしている場合は、それを既知の部分に分割して評価してみてください。 タスクがまったく新しい場合は、勉強する時間を確保します (さらに良いのは、この時間をタスクを設定する人と調整することです)。

それに付随する段階に注意してください。サービスを開発する必要がある場合、評価には単体テスト (単体テストだけではない可能性もあります) も含まれる必要があります。テスト データの準備には時間がかかります。 他のサービスとの統合などを検討する必要があります。見つけた欠陥を自分で、またはテスターの助けを借りて修正する時間を確保してください。 「目に見えない」タスクに多くの時間が浪費される可能性があります。 たとえば、開発用の評価とテスト用の評価がありますが、テスト用の成果物の転送にはスタンドの展開が含まれる場合があります。 したがって、何も見逃さないように、プロセス全体を頭の中で視覚化することが重要です。

複雑さを判断したら、並行して進行する他のタスクやアクティビティを忘れずに、新しい作業をカレンダーに含める必要があります。

そして、計画は役に立たないが、計画は非常に貴重であることを忘れないでください。 期限を過ぎても驚くことがないよう、計画をタイムリーに調整し、関係者全員に情報を提供し、タイムリーにエスカレーションする方法を学びましょう。

昇格 降格

短い形式では答えられない質問。 それが単純であれば、締め切りを守れないという問題は存在しないでしょう。

開発期限をより予測しやすくするには、まずプログラマーが常に間違いを犯す理由を理解する必要があります。

1 つ目の理由は、プログラマーが行うタスクのほとんどが程度の差はあれ独自のものであるということです。 つまり、プログラマは同様のタスクを初めて実行する可能性が高くなります。 彼はこの作業にどれくらい時間がかかるかよくわかりません。 これが確かな経験を持つプログラマーで、同様のタスクを実行する必要があった場合、彼の評価は現実に近づくでしょう。

簡単なたとえを使ってみましょう。溝を掘ったことがない場合、幅 30 cm、深さ 60 cm、長さ 20 メートルの溝を掘るのにどれくらい時間がかかるかを正確に言うことはできません。 以前に掘ったことがある場合、作業時間の見積もりは実際の作業時間にかなり近くなります。

2 番目の理由は、プログラマーは本質的に楽観主義者であるということです。 つまり、開発者は、タスクを検討し、その実装オプションを選択し、改善を評価するときに、すべてが期待どおりに機能することを期待します。 そして、途中で遭遇するであろう問題については考えていません。 多くの場合、彼はそれらを予測できません。 たとえば、プログラマがサードパーティのオープンソース ソフトウェア ライブラリを使用して実装できるタスクがあります。 評価の段階で、彼はインターネットでそれを見つけ、その説明を読みました - それは彼に適しています。 さらに、このライブラリを使用して構築するために必要な作業量も正確に見積もっていました。 しかし、彼は自分のソフトウェア製品の環境でこのライブラリにエラーが発生することをまったく予想していませんでした。

開発者は、ライブラリの使用をコードに組み込むだけでなく、ライブラリ自体のバグも修正する必要があります。 そして多くの場合、開発者は自分の間違いを修正する時間を提供しません。 統計によると、テストとエラーの修正は、コーディングに費やされる時間の約 50% を占める可能性があります。 この数字は、開発者の資格、環境、および使用される開発手法によって異なります (たとえば、単体テストによってこの時間が大幅に短縮され、開発タスクの最終的な期間/労力が軽減されます)。

掘削機の例えに戻ると、掘削機はシャベルが壊れて、新しい切り口を探すのに 2 時間も費やさなければならないとは予想していませんでした。

3 番目の理由は、予期しない要件です。 顧客がソフトウェア開発とこれほど好んで比較するマテリアル生産の他の分野では、これほど新しい要件の流れは存在しません。 20メートルのうち19メートルを掘った掘削機が、溝を真っ直ぐにではなく、腕の長さ97センチメートルの蛇に沿って走らせてほしいという顧客の願いを聞いたところを想像してみてください。

これらすべてにどのように対処し、このような不確実な状況でどのように生きるべきでしょうか? 不確実性を軽減し、時間の余裕を築きます。

期待を現実に近づける最も簡単な方法は、遊び心のある円周率の経験則を使用することです。 開発者から (時間または労働集約度の観点から) 見積もりを受け取ったら、それに Pi (= 3.14159) を掛ける必要があります。 経験豊富な開発者が評価を行うほど、この比率は低くなる可能性があります。

元の問題を 4 時間以内の小さなタスクに分解する習慣が必須です。 分解が詳細であればあるほど、推定値が実際の複雑さ/期間に近づく可能性が高くなります。
予備時間の割り当てに戻ると、この時間はプロジェクトの終了時に割り当てられる必要があります。 タスクごとに予備を作成し、それを含めるのは悪い習慣です。 「仕事は割り当てられた時間をすべて満たす」というパーキンソンの法則が厳密に遵守されています。

簡単にまとめると、仕事を完了する期限を正確に決定するには、次のアクションが役立ちます。

  • 作業分解を実行し、タスクをできるだけ詳細なステップに分割します。
  • プロトタイピングを実行する。
  • 以前は予期していなかった要件の実装を制限します。 これは、これらの要件を実行すべきではないという意味ではありませんが、これらの要件を強調し、実装のタイミングとコストの変更について顧客と合意することをお勧めします。
  • 溶液を安定させるために必要な時間を考慮に入れます。
  • 単体テストの作成など、コードの品質を向上させるためのプラクティスを使用します。
  • 一般予備金を積み立てます。

事実が予測を 30% 上回っていれば、これは非常に良い結果であることを覚えておいてください。

昇格 降格

最も正確な評価を行うには、実際の開発、特に特定の分野での経験が必要です。 しかし、顧客に仕事を納品する際の計画上の間違いや問題を回避するのに役立つ一般的なルールもあります。 これらのルールを次のように説明します。

まず、問題を理解する必要があります。 これは明白なようで、タイミング推定には直接関係しませんが、実際には重要なポイントです。 本格的な大規模プロジェクトであっても、失敗や遅延の主な要因の 1 つは要件定義の問題です。 残念ながら、初心者の開発者にとって、これは深刻な問題です。彼らは技術仕様を読まないか、非常に選択的に読んで理解します(10 点のうち、5 点を覚えて完了し、結果を送信するときに残りを覚えていました)。 誤解されたタスクを時間通りに正しく実行できないことは明らかです。

次に、開発時間そのものを見積もることです。 プログラミングの特徴は、完全に同一のタスクが存在しないことです。 これにより、私たちの仕事はより興味深いものになりますが、期限の見積もりはより困難になります。 ここでは分解がうまく機能します。 複雑で独特な問題を、一連の小さなよく知られたサブタスクに分割すること。 そして、それぞれの評価はすでに数時間で十分に行うことができます。 サブタスクの見積もりを合計して、タスク全体の見積もりを取得しましょう。

原則として、そのような見積もりにはコーディング自体のコストのみが含まれます。 もちろん、これは開発の最も重要な部分ですが、唯一の部分ではありません (そして、多くの場合、最もボリュームのある部分ではありません)。 タスクの完全な完了には、仕様の読解と明確化、同僚または顧客とのミーティング、デバッグとテスト、ドキュメントの作成、結果の提供 (顧客へのデモンストレーションと顧客のコメントに基づく可能な修正) も含まれます。 これらのアクションを完了するのにどれくらいの時間がかかるかを正確に知るには、経験のみが必要です。 最初は、少なくとも計算時にそれらを考慮することを忘れないことが重要です。経験豊富な同僚におおよその時間を尋ねることができます。

したがって、コーディングの人件費を見積もり、追加作業のコストの見積もりを追加して、タスクを完了するのに必要な時間の見積もりを取得します。 しかしそれだけではありません! タスクの完了予定日を指定する必要があります。 単純に人件費 (時間単位) を 8 時間で割って現在の日付に加算するのは間違いです。 実際には、開発者が 1 つの特定のタスクに 100% 取り組むことはありません (もちろん、ほとんどありません)。 重要ではありますが、メインの仕事とは直接関係のない他の仕事に時間を費やすことになります。 たとえば、同僚の手助け、トレーニング、レポートの作成などです。 通常、計画を立てる際には、作業時間の 60 ~ 70% が現在のプロジェクトに直接取り組むことに費やされると考えられています。 さらに、タスクの継続的な作業を妨げる可能性のある遅延を考慮する必要があります。 たとえば、そのために他の人 (同僚、顧客) とやり取りする必要がある場合は、その人の可用性、作業スケジュールなどを考慮に入れます。

私の意見では、開発者が見積もりや期限を守る際の問題を回避するのに役立つ基本的なルールを以下に示します。 また、業務の実施と評価の両方で自分自身の経験を積むことが重要です。 たとえば、タスクを完了した後、最初の見積もりと実際の期限を比較し、将来の結論を導き出すのに非常に役立ちます。 そしてもちろん、他の人の経験を研究する価値があります。 このテーマに関する本は、S. マコネル著『ソフトウェア プロジェクトのコストはいくらですか』と S. アルヒペンコフ『ソフトウェア プロジェクト管理に関する講義』をお勧めします。

昇格 降格

期限を見積もって計画するときは、次のことを行う必要があります。

  1. タスクを小さな機能部分に分解し、そのような各部分の開発にどれくらいの時間がかかるかを明確に理解できるようにします。
  2. 分解と並行して、問題文に記載されていない機能に関して追加の疑問が必ず生じます。 これは作業の範囲、したがってタイミングに直接関係するため、このような質問に対する答えを得る必要があります。
  3. 最終評価に一定の割合のリスクを追加します。 これは経験的に決定されます。 たとえば、10 ~ 15% のリスクから始めることができます。
  4. プログラマーがタスクを完了するために 1 日に何時間を費やすつもりかを理解します。
  5. 最終的な見積もりを 1 日に割り当てた時間数で割って、実装に必要な日数を求めます。
  6. カレンダーと完了までに必要な日数に焦点を当てます。 プログラマーがタスクに取り組むことができない週末やその他の日、および作業の開始日を考慮します (開発者は常に同じ日にタスクを引き受ける準備ができているとは限りません)。 したがって、作業の開始日と終了日がわかります。

昇格 降格

私たちの会社では、タスクの計画は常にいくつかの段階を経ます。 ビジネス面では、年間5~6個の戦略目標を策定します。 これらは高レベルのタスクであり、たとえば、あるパラメータを何パーセントも増加させるなどです。 次に、会社のさまざまな部門が、すべての IT チームのビジネス タスクを策定します。 これらのタスクの期限は、最初の大まかな見積もりを受け取ります。この見積もりは、多くの場合、マネージャー、アナリスト、開発者、テスターなどのチーム メンバー全員によって形成されます。 企業はこの評価を受けると、企業の戦略目標に基づいてタスクに優先順位を付けます。 横断的な戦略目標はこれに役立ちます。誰かが自分の方向に進んでいるだけでは、私たち全員が何らかの共通の目的のために働いていることが明らかになります。 期限を正確に見積もったタスクからスプリントを収集します。 四半期ごとに行われるチームもあれば、毎月行われるチームもあります。 暫定的な見積もりによれば次のスプリントに含まれるいくつかのタスクについて、チームは正確な見積もりを出します。 大きなタスクは下位レベルのタスクに分割され、それぞれのタスクを特定の実行者が担当し、正確な評価を下すのはその実行者です。

この段階では、何もしない人だけがミスをしないため、バグを修正するための時間を忘れないようにすることが重要です。 プロダクトオーナーも企業顧客もこのことをよく理解しています。 同時に、必要な時間は適切でなければなりません。単純なタスクに長すぎる期限を設定する開発者は誰も理解できず、その決定を正当化するよう求められます。 最も難しいのは、なぜリファクタリングに時間がかかるのかを企業に説明することです。 リファクタリングは最終的にインフラストラクチャの簡素化とコードの整理につながり、システムの安定性が向上し、開発を大幅にスピードアップできるため、時折これに成功するという事実に当社に感謝しています。新しい機能の追加。

場合によっては、依然として評価エラーが発生することがあります。 私の考えでは、インフラが発達した大企業の開発部門がこれを完全に回避することは不可能です。 この場合、開発者が何が起こっているのかをすぐにマネージャーに知らせ、今度はマネージャーがビジネスに警告し、会社の一般的な計画の何かを「再現」することが重要です。 このモードで作業することは、5 日かかる作業を 3 日でやろうと必死になって試み、そのような急いで発生した多数のエラーに溺れるよりもはるかに正確です。

昇格 降格

質問の両方の部分に対する正しい答え [正しく計画を立て、予定通りにプロジェクトを遂行する方法を学ぶ方法 - 。] - 経験。 それ以外に「禅を知る」方法はありません。 意思決定理論によれば、正確な結論は、すでに入手可能な多数のデータの分析に基づいてのみ導き出すことができます。 データが多ければ多いほど、最終的な予測と評価はより正確になります。

ハーバート・ショーの言葉を借りれば、「経験とは、人間が以前はどれほど愚かだったかを学ぶ学校である。」 これは非常に単純な結論につながります。プログラマーが、目の前のタスクに関連する経験をすでに持っている場合は、それを信頼できます。そうでない場合は、「同僚」の経験を信頼できます。

次に、期限を直接計画するということは、特に開発においては非常にうまく対処できない作業であることを理解する必要があります。 期日を見積もる場合は、元の見積に「調整係数」を導入することが推奨されます。 この指標は、開発者の経験と、プロジェクト内で解決されるタスクの不確実性の度合いの合計に応じて、1.5 から 3 の範囲になります。

昇格 降格

期限を決定する際には、多くの要素を考慮することが重要です。

たとえば、職歴。 今後の作業の範囲をどの程度明確に理解していますか? 以前にこのようなことをしたことがありますか? 経験が多ければ多いほど、仕事が早く完了することは明らかです。

よく書かれた技術仕様は、期限を決定する上で重要な役割を果たします。 私たちの地域ではこの問題が非常に困難です。 多くの場合、クライアント自身が自分が何を望んでいるのかわからないので、1〜2日余分に費やすことをお勧めしますが、クライアントに望ましい結果について明確なアイデアを持ってもらうことをお勧めします。 この理解が相互にあることが重要です。 そしてこの後初めて、金額と条件の交渉を始めることができます。

また、常にリスクも含めてください。 初心者の場合は、推定完了時間を 2 倍することをお勧めします。 結局のところ、プロジェクトを後から納品して評判を落とすよりも、予定より前倒しでプロジェクトを納品し、顧客の目から見てスペシャリストとして成長する方が良いのです。

昇格 降格

一般的な推奨事項は、開発者はタスクを正しく分解する方法を学び、常に潜在的な落とし穴を探し、自分の経験に頼って、指定された時間内にタスクを解決できない場合は顧客や同僚にタイムリーに警告することを忘れないことです。フレーム。

明確な計画を立てることは、1 つのタスクを完了する期限を決めることよりもはるかに困難です。 同時に、プロジェクトを予定通りに納品するだけでなく、開発したシステムがビジネス上の問題を正しく解決できることを確認することも重要です。 ここでは、IT チームは、RUP や MSF から SCRUM やその他のアジャイル フォーマットに至るまで、さまざまなソフトウェア開発手法によって支援されています。 ツールの選択肢は非常に広範囲に及ぶため、多くのお客様は、プロジェクトでどのようにツールを使用するか、どのような原則を遵守するかを事前に理解したいと考えています。

ところで、今日のアジャイルのテーマは、ビジネスだけでなく公共部門の個々のプロジェクトにも密接になってきています。なぜなら、この方法論の原則により、プロジェクトを非常に迅速に実装し、反復ごとに顧客の期待を管理できるからです。 たとえば、アジャイル チームでは、顧客との長時間にわたる議論は事実上ありません。 ドロップダウン リストの表示速度など、不必要な技術的な詳細を説明する数十ページのことは忘れてください。 顧客にシステムの中間バージョンを試す機会を与えると、お互いを理解しやすくなります。

アジャイル チームはすべてを一緒に計画し、特定の問題を解決するために必要な最適な労働レベルを決定します。 たとえば、手法の 1 つは「ポーカー プランニング」と呼ばれるもので、各参加者が特定のタスクに必要な人件費の評価を匿名で回答します。 その後、チームはストーリー ポイントまたは工数でタスクの平均的な重みを決定し、「誰が何を好むか」の原則に従ってタスクを配分します。 同時に、チームは毎日 15 分間のミーティングに集まり、全員が現在のタスクの状況について数分で話し合います。これには、発生した問題の報告も含まれます。 チームは検出された問題を迅速に修正するため、顧客はプログラマーの作業の次の段階をできるだけ早く確認できます。 開発者は、再びチームに迷惑をかけたくない、または自分で解決しようとする無駄な試みによって貴重な時間を無駄にするなどの理由でタスクの完了を遅らせることはありません。 ちなみに、このようなミニステータスでは、開発者は自分の最高の面を見せ、自分の仕事に責任を持って取り組んでいることを示したいという願望を持っています。 それは本当にモチベーションと自己規律を与えてくれます。