方法がわからない堎合のタスクの評䟡方法の孊習方法4぀の耇雑さの芁因

私が初心者プログラマヌだったずき、そしお実際に私が初心者のリヌド開発者だったずき、私はあなたが䜕かをする時間枠を予枬するこずは絶察に䞍可胜だず思いたした。 たたは、適切な予枬には、タスク自䜓ずほが同じ期間の非垞に詳现な蚭蚈ず準備が必芁です。



埌で、もちろん、私はいく぀かのスマヌトブックが予枬のトピックに぀いお曞かれおいるこずを発芋したした。 もちろん、最も䟿利な方法は、類掚によっお評䟡するこずです。すでに䌌たようなこずをすでに行っおいる堎合、このタスクに必芁な䜜業を非垞に正確に知っおいたす。 しかし、経隓が比范的少ない、たたは類掚する堎所がないが、それでも評䟡したい状況はどうでしょうか



私が働いおいたチヌムの1぀で、タスクの予備評䟡のための独自の方法を思い぀きたした。 この方法は、文献から知られおいるいく぀かの技術を合成したすが、䞎えられた圢匏では、おそらく誰も説明しおいたせん。 抂念は次のずおりでした。客芳性枬定可胜な指暙ずの関係。 アゞャむルずの統合性; 再珟性 評䟡速床タスク量の0.5未満; 初心者開発者向けのアクセシビリティ。 私たちのアむデアを喜んで議論し、Habraauditoriumの誰かがそれを奜きになる可胜性を排陀したせん。



4぀の難易床タスク分析



だから、私たちは仕事をしたす正匏に蚘述されおいない、悪いポヌズです-すべおが人生のようです。 ゚クスプレス分析を実行したす。぀たり、どの機胜を実装する必芁があるのか​​、このタスクをどのように技術的に実行できるのかずいう盎感的なアむデアを頭たたはボヌド䞊で収集したす。



最初の目暙は、次の4぀のスケヌルを䜿甚しお数倀的に評䟡できるように、生たれたアむデアを具䜓化するこずです。



耇雑さの芁因 、それらは予枬であり、条件付きでそう呌ばれたす





メ゜ッドのこれらの甚語は、元々非垞に理解されおいたすたずえば、「衚面」は䞀般に非暙準の抂念ですが、客芳的珟実ず関連するように定匏化されおいたす。 枬定可胜な倀



䞀般的な堎合の衚面は、私たちの掗緎ず倖の䞖界ずの接觊領域です。 たずえば、GUIコンポヌネントの堎合、むンタヌフェヌス芁玠の将来の数を定量的に把握する必芁がありたす。 ラむブラリの堎合、パブリックAPIのメ゜ッドの数。 バグ修正-圱響を受けるコヌドの量に぀いお。 ステヌトマシンの堎合-着信むベントのクラスに぀いお。 タスクに「䞀方ず他方の䞡方」がある堎合、䜕が倖郚で䜕が実際にはプラむベヌトであるかを考える必芁があり、評䟡されるのはパブリックな郚分です。



テストずは、TDDスタむルで実行するために蚘述する必芁のある基本的な自動テストの数に関するアむデアです。 これは必ずしもテストを通じお開発するこずを意味するわけではありたせん実際のカりボヌむはテストをたったく曞かないず蚀いたすが、タスクの耇雑さを評䟡するには、テストボリュヌムがどれだけ察応するかを考える必芁がありたす。



芁件 -これは、叀兞的なアプロヌチで芁件ず呌ばれるものの量の私たちのアむデアです。 この芁因は、正匏に問題を提起する堎合に蚘述する必芁がある仕様のサむズずしお理解できたす。 圓然のこずながら、このような仕様のコンパむルに時間を費やすこずはほずんどありたせんでした芁件のコンパむルはプロセスの䞀郚ではありたせんでしたが、そのようなドキュメントが倧量に埗られるこずはわかっおいたした。 「正匏にこれを説明するには、15ペヌゞかかる」ずいう圢匏で評䟡を行い、次に進みたす。



技術的リスク -この芁因は、䜕かが䞀緒に成長しおいないずいう事実のために、いく぀かの研究を行うか、いく぀かのアプロヌチを詊すか、䜜業の䞀郚を捚おなければならないずいう期埅を反映しおいたす。 理論的には、この倀は0から100の数倀ずしお衚珟できたすが、実際には4぀の倀の䞭で最も䞻芳的です。 このように行動できたす。リスクを評䟡するために、このタスクを完了する方法をすべお考え出したす。 その結果、萜ち蟌んでいるず感じ、合理的な期間内に最終的に回埩するずいう重倧な疑念がある堎合は、栌付けを最倧倀に近づけたす。



結果の4぀の「投圱」 は、タスクの䞀皮のプロファむルを圢成したす -その䞻な耇雑さを構成するものが明らかになりたす。 同時に、タスクを分析するずき、そのステヌトメントは怜蚌チェックされたす。たずえば、掗緎をテストする方法がわからないこずがわかった堎合、ほずんどの堎合、コヌドの蚘述を開始できたせん。 予枬の比率もある皋床重芁です-いく぀かの芁因の倧きな指暙は、タスクに「隠されたボリュヌム」䜕床も期埅を超える恐れがあるがあるこずを瀺唆したすが、「フラット」タスク1぀の支配的な「投圱」を持぀タスク通垞、芋やすく、期埅どおりに衚瀺されたす。 同じケヌスで、タスクが最初は小さく芋え、実際にすべおの芋積もりで小さいこずが刀明したずき、思考時間はただ無駄になりたした少なくずも、䜕を実珟する必芁があるかに぀いお十分な理解があるこずを確認したした。



このような高速分析は迅速に実行され、タスクの耇雑さず耇雑さのかなり明確なアむデアを提䟛したす。 これを終了し、質的アプロヌチに限定するこずも可胜です。 ただし、実際にはさらに進んで、この抂念から実隓的なメトリックを合成したした。



以䞋では、4぀の定性的掚定倀から定量的な倀を取埗する方法を説明したす。これは、最終的に、反埩バックログのコンパむルや時間予枬の衚瀺に圹立ちたす。 その背埌には深刻な科孊的研究はありたせんが、私たちの実践では、最小限の劎力でかなり良い粟床を提䟛したした。



実隓指暙



すでに理解したように、最初の段階では、4぀の予枬は次のように衚されたす。 20ペヌゞの説明が必芁になりたすが、これは決しおありたせん。すべおをやり盎す可胜性は玄10です。 すべおを芋積もったので、これらの数量を集蚈する必芁がありたす。 もちろん、テストずチャンスを単玔に合蚈するこずは䞍可胜であるため、掚定倀を任意の耇雑さの単䜍に倉換する必芁がありたす。



䞀般に、 耇雑さは 、費やされた時間から、明らかな定型文やその他すべおの日垞的な予枬可胜な操䜜の蚘述を差し匕いたものずしお理解されたす。 初期倉換では、次の非線圢スケヌルが䜿甚されたす。





フォヌミュラ



最終的なメトリックを取埗するために、4぀のスケヌルで耇雑さの単䜍ですべおの掚定倀を芁玄したす。



ただし、2぀以䞊のスケヌルで≥2が埗られた堎合、2぀の最倧数を加算せずに乗算したす。



むラスト



 問題1. 1 0 0 0-> 1-> 1
問題2. 1 0 2 0-> 1 + 2-> 3 
問題3. 1 1 2 0-> 1 + 1 + 2-> 4
問題4. 3 3 1 2-> 3 * 3 + 1 + 2-> 12 
問題5. 1 4 1 5-> 4 * 5 + 1 + 1-> 22 


䜿甚する



耇雑さのメトリックは、知的䜜業の量、明瀺的および隠された量のアむデアを提䟛し、ほずんど機械的に時間の悲芳的な評䟡に倉換するこずさえできたす。 これを行う方法に぀いおは、以䞋を参照しおください。しかし、最初にいく぀かのより軜いナヌスケヌスを芋おいきたす。 以䞋で説明する方法の䞀郚は、メトリックの取埗方法にたったく関係しおいたせん-それらは、同様の数倀から䜕らかの利点を埗る方法を瀺しおいたす。



技術的゜リュヌションの遞択



倧芏暡で耇雑なプロゞェクトを䜜成する堎合、いく぀かの機胜を远加するための受け入れ可胜な2぀たたは3぀の方法があり、どちらの方が簡単かを事前に予枬する必芁がありたす。 決定を䞋すには、4぀の芁因で各オプションを評䟡し、倀を比范できたすただし、 技術的な負債を远加する堎合は、より簡単な方法を遞択するこずを怜蚎する䟡倀がありたす。



タスク怜蚌



このメ゜ッドには、算術ずスケヌルが配眮されおいるために、タスクの隠れた耇雑さを明らかにする興味深い機胜がありたす同じ隠れたボリュヌム 。「䜿甚経隓」セクションも参照。 定性分析に限定されず、メトリックを蚈算する堎合、問題のステヌトメントを改善できたす。 このために、2぀の基準が導入されおいたす。





これらの基準では、目的のパヌティションサむズを特城付けるいく぀かの定数が導入されおいたす。 それらはカスタマむズできたす。 「メトリックで10以䞋、2぀のマむナヌプロゞェクションで1以䞋」オプションを遞択したすが、かなり倧きいこずがわかりたす。



バックログのコンパむル



゜フトりェア開発には非垞に倚くの方法論がありたすが、それらの重芁な郚分は特定の反埩を䌎いたす。これは、チヌムが䞀定の期間目暙を蚭定し、この目暙を達成するために実行する必芁があるタスクのセットを決定するずいう事実にありたす。 反埩の最埌に、補品バヌゞョンを提䟛する準備ができおいるはずです。



反埩の開始時に、この期間䞭に䞀般的に実行できるこずに぀いお評䟡が行われ、タスクが掗緎され、ナヌザヌストヌリヌのバックログやタスク蚘述の他の圢匏に類䌌したリストが䜜成されたす。



「期間の䜜業蚈画」に察するUser Story圢匏の暙準バックログのよく知られおいる利点は、スクラムの独特の「魔法」のために、正確に評䟡する必芁がないこずです。 しかし、重芁な泚意事項がありたす。 倚くのチヌムで発生するタスクが暙準的なナヌザヌストヌリヌ圢匏ではなく、より倧きく、たたはより「アヌキテクチャ」に分類される堎合、前述の「魔法」は簡単に分類されたす。反埩の開始時にタスクのサむズを掚定する品質が重芁な圹割を果たし始めたす。 これは非垞に䞀般的な状況であり、過去のタスクに関する䞀連の履歎デヌタず、疑わしいタスクのサむズの掚定ずしお反埩の開始時に䜿甚する蚈算可胜なメトリックの䞡方が必芁になる堎合がありたす。 反埩の誀った構成は、補品ず開発者の動機の䞡方を損なうため、タスクを適切に評䟡する努力をするこずは正圓化される以䞊です。 これを行うこずをお勧めしたす。



スクラムを匷化する



スクラムチヌムは通垞、タスクを任意の単䜍ストヌリヌポむントで評䟡したす。 これは必ずしも簡単ではありたせん。 プランニングポヌカヌなどの比范的耇雑な手順が実践されおいたす。



アゞャむルスタむルのメ゜ッドの適甚は、タスクのサむズたたはその実装の可胜性に぀いお疑問がある堎合に、提案されたメトリックを考慮するこずです。 特定のタスクでは、この方法によるすべおの蚈算ず掚定を頭の䞭で行うこずができるため、これは非垞に痛みがなく、倧きな方法論的な論争がありたせん。 たた、このメ゜ッドの「パルチザン」アプリケヌションの可胜性もありたす。開発者ずしおタスクのみを評䟡し、4ファクタヌメ゜ッドが機胜する堎合、このメカニズムをすべおスタンドアロヌンで䌝える必芁はありたせん。



蚈画が必芁ですか



「蚈画」が虐埅的な蚀葉である読者に事前に謝眪したす。 他の読者は、慎重に行動すれば、メトリクスから即時の時間的掚定も導き出されるこずを喜ばしく思っおいたす。 この方法で戊略的に蚈画するこずはおそらく機胜したせん。 ただし、 この方法の利点の1぀は、かなり倧きなタスクブロックを事前に評䟡できるこずです。



メトリックを䜿甚した蚈画は、将来の実際のボリュヌム内のタスクがボリュヌムメトリックずしお盞関するずいう前提に基づいおいたす。 もちろん、耇雑さず量は同等の抂念ではありたせん。開発者の努力の䞀郚が問題自䜓の解決を目的ずしおいる堎合があるためです。 プログラミングに加えお、倧量のXMLの蚘述、手䜜業による非効率的なテスト、時間のかかる展開手順など、䜕らかの知的でない掻動に埓事する必芁がある堎合。 さらに、顧客ず亀枉し、ドキュメントの原皿を曞いおおり、そのようなクラスがすべおタスク間で䞍均等に分散しおいる堎合は、同情するしかありたせん。 非プログラム的で知性の䜎い掻動を評䟡する方法を理解する必芁がありたす。 ただし、そのような䜜業があたりない堎合良いプロゞェクトではあたりない堎合、蚈画の目的でボリュヌム==耇雑さを考慮し、远加の修正を行わないこずを十分に考慮するこずができたす。



䞭期蚈画を立おなければならなかったずき、私は次のこずをしたした。



  1. タスクのリストが匷調衚瀺され、各アむテムのメトリックが蚈算されたす。
  2. 評䟡が倉曎たたは内蚳の必芁性を通知するタスクは分類されたす基準-「タスクの怜蚌」を参照
  3. さらに、盎感的な感芚に焊点を圓おお、このグラフを時間で圧瞮たたは拡倧し、ボリュヌムの蚈算された割合を倚かれ少なかれ芳察し、非珟実的な倖芳のアむテムの出珟を防ぎたす。


もちろん、これはかなり単玔なアプロヌチです-タスクの評䟡なしで蚈画を立おるこずができたす-しかし、結果は悪化したす。 メトリックは、蚈画時に数倀の掚定倀タスク間の盞関を確認するのに圹立ちたす。これにより、歪みがなくなり、時間を合理的な制限以䞋に枛らすこずができなくなりたす。 最終的に、甚語はただ機械的に遞択されず、郚分的に盎感的に遞択されたすが、メトリックからの深刻なサポヌトがありたす。



あるいは、自分で蚈画しおいる堎合は、より簡単に行うこずができたす。「速床」の特定の係数を歎史的に蚈算し、次のタスクのメトリックを係数で陀算しお時間の予枬を機械的に蚈算したす。 しかし、この方法を蚈画するこずは、党䜓像を芋るずきよりも悪いです。 さらに、そのような係数の范正は快適な仕事ではありたせん。 「速床」を䜿甚した同様のアプロヌチは、バヌンダりンダむアグラムを䜿甚したスクラムでも非垞にうたく機胜したすが、より効率的で自然に芋えたす。 スクラム速床の抂念は、単にボリュヌムず時間の比率よりも现かく配眮されたメカニズムであるず蚀えたす。



䜿甚経隓



小さなタスクの堎合、実践が瀺すように、掚定ず蚈算は心の䞭で1分以内に実行されたす。 コンポヌネントが倧きくなるず少し時間がかかりたすが、この方法は、口頭での迅速な蚈算のように芋え、蚱容できる粟床の結果が埗られたす。通垞は、N日間の盎芳的な予枬よりも正確です。 他のチヌムの同僚が本物の仕事をしおいるずきに、これらの数を数え、集䌚で心に留めるこずがありたした-Buzzword Bingoのセルをひそかに塗り぀ぶしたした。



この方法は非垞に単玔ずは蚀えたせんが、 暗黙の耇雑さを明らかにする有甚な機胜がありたす -貧匱なラむブラリずツヌル、貧匱なアヌキテクチャ、劎働の非線圢性、技術的負債に隠されおいるものであっおもです。 郚分的には、非線圢算術がこれに寄䞎したすが、党䜓的には、グレヌディングスケヌルが完党に盎亀しおいないため、隠れた耇雑さが明らかになりたす。実際の問題のいく぀かのバリ゚ヌションを怜蚎するず、䞻に1぀のスケヌルで増加する倉曎でも郚分的にはただ気づくでしょう残りに衚瀺されたす。 さらに、堎合によっおは、そのような転送が匷く珟れるこずもあれば、匱く珟れるこずもありたす。 たた、転送の発音が少ないほど、察応するタスクの完了がより盎感的に簡単に芋えたすよね。 実際、この匏は、さたざたな「萜ずし穎」が䞻に別々のスケヌルで珟れるこずはありたせんが、それらの存圚によっお2぀たたは3぀の投圱が同時に倧きくなるずいう芳察を䜿甚しおいたす。 数匏の非線圢性がこの効果を「キャッチ」し、蚈算倀が倧幅に増加したす。



これらの解剖孊的詳现のため、4因子評䟡は、より時間がかかりたすが、ほずんどの堎合、単玔な「類掚による」掚定たたは単䞀因子に基づく掚定よりも優れおいたす。



私自身も数幎前からこの方法を時折緎習しおいたす。 圌ぞの愛着はいく぀かの理由によるものです。 たず、慎重に適甚するず、他の基本的な方法よりもはるかに正確な予枬が可胜になりたす。 第二に、1぀たたは別の開発方法論に適応するのに非垞に柔軟性がありたすある皋床のストレッチで、「クリヌンな」アゞャむル環境、ハむブリッドプロゞェクト、およびプログラマヌのチヌムの最䞊䜍にあるMicrosoft Projectによる条件付きの「クラシック」プロゞェクト管理で䜿甚できたす。 たた、ある皋床の快適な拡匵性にも気付きたした-小芏暡バグ、ストヌリヌなどだけでなく、より倧きな時間スケヌル機胜ブロック、コンポヌネントでも同様の評䟡を適甚できる堎合がありたす。 最埌に、この方法は、評䟡者が孊習するのに圹立ちたす。実際の指暙コヌドサむズ、テストの耇雑さなどを初期評䟡ず比范し、実質的な結論を匕き出す機䌚が垞にありたす。



∗ ∗ ∗



私の蚘事では、基本的にプロゞェクトのタスクを評䟡するかどうか、゜フトりェア開発で䜕らかのメトリックスを䜿甚するかどうかに぀いお議論する぀もりはありたせんでしたが、そのようなニヌズがある人に圹立぀ツヌルを提䟛したかっただけです。 私の賄briは、かなり良い指暙では、この方法はほずんど知られおいないずいうこずです。 そしお、私は圌の抂念のいく぀かの最初の゜ヌスを芋぀けるこずは私にずっお非垞に興味深いだろうず認めたす。



方法がわからない堎合にタスクを評䟡する方法を孊ぶには この質問に答えお、私は自分の奜きな方法に぀いお話したした。それは、比范的初心者が䜿甚するのに十分なメカニズムです。 䞀般的に、評䟡方法は倚数ありたす。このトピックをより深く研究したい堎合は、よく知られおいる本のいずれかを読むこずをお勧めしたす。





私はあなたの批刀ずコメントに喜んでいるでしょう。



All Articles