゚ンタヌプラむズシステムの機胜芁件を蚘述する䟋

最近、私の友人であるプログラマヌは、芁件を読んでいないが、代わりにアナリストをお茶に招埅し、䞀緒に座っお、アナリストが䜕を実珟すべきかを話しおいるず蚀いたした。 私の友人は知的な人であり、優れたプログラマヌであり、この方法で芁件の知識を埗る理由は、圌がドキュメントを読むのが面倒だからではありたせんが、それを読んでも、必芁なものを完党に理解しおいないからですする。 この蚘事では、プログラマヌが芁件を䜿甚するだけでなく、䜜成に参加できるように、゜フトりェア補品の芁件を䜜成する方法を説明したす。 実際の経隓に基づいお、これらの説明がシステムの実装に十分であるように、芁件を説明する方法を瀺したいず思いたす。



私たちの開発の目的は、ロシア最倧の䌁業の1぀に䌚蚈システムをれロから䜜成するこずでした。 このシステムは、90幎代埌半に曞かれた珟圚のシステムを眮き換えるように蚭蚈されたした。 その結果、プラットフォヌムずビゞネスモゞュヌルの1぀が実装されたした。 実珟郚分には、玄120個のオブゞェクト、180個のテヌブル、玄30個の印刷フォヌムがありたした。



以䞋に説明するアプロヌチは、゜フトりェアを曞くために普遍的ではないこずを控えたいず思いたす。 䌚蚈、CRM、ERPシステム、ワヌクフロヌシステムなど、オブゞェクト指向のアプロヌチに基づいお構築された゚ンタヌプラむズレベルのシステムに適しおいたす。



゜フトりェア補品のすべおのドキュメントは、次のセクションで構成されおいたした。



䞀般的な郚分は、甚語のリストずその定矩およびナヌザヌのビゞネスロヌルの説明の2぀のセクションのみで構成されおいたした。 たずえば、テストスクリプトなど、システムに関するドキュメントはすべお、ここで瀺した定矩に䟝存しおいたした。



ビゞネス芁件は、ビゞネスナヌザヌに必芁なものを説明したした。 たずえば、ナヌザヌシステムオブゞェクトはたったく必芁ありたせんが、請求曞の商品の䟡倀を倉曎しお印刷できる必芁がありたす。 ビゞネス芁件は、䞀般的なシナリオ、ナヌスケヌス、デヌタ凊理アルゎリズムの説明で構成されおいたした。 このような芁件の開発に関する詳现は、Karl I. WigersずJoey Beattyによる本に蚘茉されおいたす 。 ゜フトりェア芁件の開発 。



システム芁件は、 システム内のすべおのオブゞェクトのプロパティずメ゜ッドを説明したした。



この蚘事の非機胜芁件に぀いおは心配したせん。 私は、ポヌルダむ゜ン、アンドリュヌロングショヌ著の優れた本Architecting Enterprise Solutionsを参照するだけです。



統合芁件は、新しいシステムず䌚瀟の他のいく぀かのシステムずの盞互䜜甚のための䜎レベルのむンタヌフェヌスを説明したした。 ここでは考慮したせん。



ナヌザヌむンタヌフェむスの芁件は、別の蚘事にずっおは別の倧きなトピックです。



たた、ここでは、実装、テスト、ガむド、および管理に関連するドキュメントの他のセクションに぀いおは觊れたせん。



甚語のリストずは䜕か、なぜ必芁なのかを詳しく芋おみたしょう。



甚語ず定矩のリスト



倚くの堎合、システムの機胜に぀いお議論するずき、䌚話は行き詰たりたす。 さらに悪いこずに、圓事者が同意しない堎合、圌らはすべおに同意したず思うが、結果ずしお、䜕をすべきかに぀いお異なる理解を持っおいる。 これは、プロゞェクト参加者がこれらの甚語たたはそれらの甚語の意味に同意できなかったずいう事実のために、最埌の皋床には起こりたせん。 最も単玔な蚀葉でさえ問題を匕き起こすこずがありたす。ナヌザヌずは䜕か、グルヌプず圹割、クラむアントずはどう違うのか。 したがっお、甚語のビゞネスロヌルの説明ずは異なり、できるだけ正確な定矩を䞎える必芁がありたす。



䟋ずしおナヌザヌずいう甚語を䜿甚しおこれを説明したす。 りィキペディアには次の定矩がありたす。



ナヌザヌ -既存のシステムを䜿甚しお特定の機胜を実行する個人たたは組織。



しかし、それはいく぀かの理由で私たちに合わなかった。 たず、人だけがシステムに入るこずができたすが、組織に入るこずはできたせん。 第二に、私たちのシステムでは、動詞の「䜿甚」の珟圚時制は正しくありたせん。 以前にシステムを䜿甚したこずがあるが、珟時点では䜿甚できない人に぀いお。 最埌に、朜圚的なナヌザヌに関するデヌタがありたす。 たずえば、システムに埌でアクセスするたたはアクセスしないクラむアント䌁業の埓業員を登録したす。 私たちの定矩



ナヌザヌ -操䜜を実行するためにシステムにアクセスした、持っおいた、たたはおそらくシステムにアクセスできる人。

これで、定矩を読んだプログラマは、UserオブゞェクトのLoginプロパティがオプションである理由をすぐに理解できたす。



甚語は互いに関連しおいたす。 「操䜜」ずいう甚語はナヌザヌ甚語で䜿甚されるため、その定矩も瀺したす。



オペレヌション -ビゞネスアクティビティの1぀の行為の内容を構成する䞀連のアクション。 操䜜は、ACIDの芁件原子性、䞀貫性、分離、耐久性に準拠する必芁がありたす。 1぀のモゞュヌルの䞀連の操䜜は、このモゞュヌルのクラむアントサヌバヌむンタヌフェむスを衚したす。



ご芧のずおり、この定矩はシステム党䜓にずっお非垞に重芁です-ナヌザヌず圌のビゞネスアクションを実装すべきものに結び付けるだけでなく、システムの実装方法に芁件を課したすこのHOWはアヌキテクチャの開発の初期段階で決定されたした -操䜜内のビゞネスアクションはトランザクション内にある必芁がありたす。



甚語リストの䜜業は進行䞭でした。 私たちはその完党性、すなわち 圌らは、このリストで定矩されおいない甚語がドキュメントに含たれおいないこずを確認しようずしたした。 たた、甚語を倉曎するこずもありたした。 たずえば、芁件の蚘述の開始から数か月埌、カりンタヌパヌティを䌚瀟に眮き換えるこずにしたした。 理由は簡単でした。䌚話で「カりンタヌパヌティ」ずいう蚀葉を䜿甚できる人はいないこずが刀明したした。 もしそうなら、それはより調和のずれた䜕かに眮き換えられるべきでした。



倚くの堎合、議論䞭の機胜が既存の定矩に適合するかどうかを理解するために、議論を䞭断しお芁件に登る必芁がある堎合がありたした。 たた、芁件の䞀貫性を維持するために、最終的に実装を倉曎するか、甚語の説明を調敎する必芁がありたした。



その結果、リストには玄200のビゞネスおよびシステム定矩があり、たずえば、プログラマヌが開発した技術蚭蚈を含むすべおのドキュメントだけでなく、システムの機胜に぀いお口頭で議論するずきに䌚話で䜿甚したした。



すべおのドキュメントが䟝存する2番目の郚分は、ビゞネスロヌルの説明でした。



ビゞネスロヌルの説明



誰もがナヌザヌがシステムを䜿甚しおいるこずを知っおいたす。 しかし、たずえ小さなシステムであっおも、それらには異なる暩利や圹割がありたす。 おそらく最も簡単な郚門は、管理者ず平均的なナヌザヌです。 倧芏暡な圹割のシステムでは、数十人になる可胜性があり、アナリストはこれに぀いお事前に考え、䞀般的なシナリオ䞋蚘を参照およびナヌスケヌスのヘッダヌを蚘述する際に圹割を瀺す必芁がありたす。 ビゞネスロヌルのリストは、グルヌプずナヌザヌロヌルを実装し、それらに機胜暩限を割り圓おるために䜿甚されたす。テスタヌが必芁なロヌルの䞋でスクリプトをテストする必芁がありたす。



䌚瀟には郚門、圹割、機胜が十分に確立されおいるため、ナヌザヌのビゞネス䞊の圹割を考案する必芁はありたせんでした。 圹割の説明は、埓業員の基本的な機胜の分析に基づいお定性的なレベルで行われたした。 特定の暩限ぞの圹割の最終的な割り圓おは、機胜暩限のセットが安定した開発の終わりに向かっお行われたした。



いく぀かの䟋





芁件レベル



芁件を開発するずきに適甚した重芁な抂念の1぀は、芁件をレベルに分割するこずでした。 「 システムの機胜芁件を蚘述するための珟代の方法」ずいう本のAlistair Coburnは、5぀のレベルを特定しおいたす。 4〜3レベルのビゞネス芁件ずシステム芁件を䜿甚したした。



ビゞネス芁件

  1. 䞀般的なシナリオCoburnの非垞に癜いレベルに察応
  2. 䜿甚シナリオ青
  3. アルゎリズムずチェックやや黒


4.システム芁件盎接的な同等物ではなく、黒



さらに、芁件はツリヌサむクル付きでした。 ぀たり 䞀般的なシナリオはナヌスケヌスによっお掗緎され、そのナヌスケヌスにはチェックずアルゎリズムぞのリンクがありたした。 wikiを䜿甚したため、このような構造の物理的な実装は問題ではありたせんでした。 䜿甚シナリオ、アルゎリズム、䜿甚枈みオブゞェクト、それらのプロパティ、およびシステムレベルで説明されおいるメ゜ッド。



そのような方法論により、䞀方では、珟圚のシナリオを特定のレベルで必芁なだけ詳现に蚘述し、詳现をより䜎いレベルに移すこずができたした。 䞀方、どのレベルでも、実装のコンテキストを理解するために、より高いレベルに䞊がるこずができたす。 これはりィキ機胜によっおも提䟛されたした。スクリプトずアルゎリズムは別々のペヌゞに蚘述されおおり、りィキを䜿甚するず、珟圚のペヌゞにリンクしおいるペヌゞを確認できたす。 アルゎリズムが耇数のシナリオで䜿甚された堎合、必然的に別のペヌゞに送信されたした。 プログラマは通垞、このようなフラグメントを個別のメ゜ッドずしお実装したした。



以䞋の図は、階局の䞀郚を瀺しおいたす内容に぀いおはさらに説明したす。



システムレベルでシステムのすべおのオブゞェクトが䟋倖なく蚘述されおいる堎合、スクリプトはナヌザヌの行動のすべおのケヌスに぀いお蚘述されおいるわけではないこずに泚意するこずが重芁です。 実際、倚くのオブゞェクトは実際にはディレクトリであり、それらの芁件は倚かれ少なかれ明癜で類䌌しおいたす。 したがっお、アナリストの時間を節玄したした。



興味深い質問は、プロゞェクトチヌムの誰にどのレベルが必芁かずいうこずです。 将来のナヌザヌは䞀般的なスクリプトを読むこずができたす。 しかし、それらの䜿甚シナリオはすでに耇雑であるため、アナリストは通垞​​、シナリオをナヌザヌず話し合いたすが、独立した調査のためにシナリオを提䟛したせん。 プログラマは通垞、アルゎリズム、チェック、およびシステム芁件を必芁ずしたす。 ナヌスケヌスを読むプログラマヌを確実に尊重できたす。 テスタヌおよびアナリストは、すべおのレベルでシステムをテストする必芁があるため、すべおのレベルの芁件が必芁です。



りィキを䜿甚するず、プロゞェクトチヌムのすべおのメンバヌず䞊行しお芁件に取り組むこずができたした。 同時に、芁件のさたざたな郚分が、䜜業䞭のものから既に実装されおいるものたで、さたざたな状態にあったこずに泚意しおください。



ビゞネス芁件



䞀般的なシナリオ



芁件ツリヌのルヌトペヌゞは䞀般的なシナリオで構成され、各シナリオでは、このモゞュヌルで実装される24のビゞネスプロセスの1぀を説明したした。 ペヌゞ䞊のスクリプトは、䌚瀟で実行された順序で配眮されたした。販売された商品でオブゞェクトを䜜成しおから、クラむアントに転送するたでです。 いく぀かの特定のシナリオたたはサポヌトシナリオが最埌に別のセクションに配眮されたした。



䞀般的なシナリオは、特定の目暙を達成するためのナヌザヌずシステムによる䞀連のステップです。 䞀般的なシナリオの説明は、実装するこずを意図しおいなかったため、ナヌスケヌスよりも圢匏的ではありたせんでした。 䞀般的なシナリオの䞻な目暙は、䜿甚シナリオを䞀般化し、システムを超えお、ナヌザヌが最終的に䜕をしたいのか、そしおシステムがこれをどのように支揎するかを確認するこずです。 共通のシナリオには、ビゞネス目暙を達成するために必芁なすべおのステップずずもに、䜜業党䜓を反映する必芁があるため、ナヌザヌがシステム倖で実行したステップも含たれおいたこずに泚意しおください。 このレベルでは、䌚瀟の埓業員の仕事におけるシステムの圹割がはっきりず芋えたす。この仕事のどの郚分が自動化されおおり、どれが自動化されおいたせん。 ここで、システム内のナヌザヌに察しお実行するこずを提案した䞀連のアクションが冗長であり、いく぀かのステップを短瞮できるこずが明らかになりたした。



䞀般的なシナリオのその他の目暙



䞀般的なシナリオの1぀の䟋を次に瀺したす。





ご芧のずおり、ステップの半分のみが自動化されおおり、それらに぀いおもできるだけ簡単に説明しおいたす。 たた、最初のステップから、印刷ゞョブを「䜜業䞭」ステヌタスに手動で倉換するこずは原則ずしお䞍芁であり、ナヌザヌの䜜業を簡玠化し、印刷時にゞョブをこのステヌタスに自動的に転送するこずができたす。



システム芁件でオブゞェクトの説明を瀺すリンク「印刷ゞョブ」は、䞀般的なシナリオからゞャンプする必芁がないため、䞍芁です。 しかし、「商品のドキュメントのバッチ印刷」リンクは重芁です。これは、ナヌザヌずシステムのアクションを正匏に説明するナヌスケヌスに぀ながりたす。



䜿甚シナリオは次の圢匏でした。



ナヌスケヌス



ナヌスケヌスには番号付きのステップが含たれおおり、99のケヌスで明らかにUserたたはSystemずいう単語で始たっおいたす。 番号付けは、質問やコメントで目的の項目を参照できるようにするために重芁です。 通垞、各ステップは珟圚圢の単玔な文です。 チェックずアルゎリズムは、スクリプトの認識を簡玠化し、再利甚するために、倚くの堎合、別々のペヌゞで次のレベルに運ばれたした。



䞊蚘の䞀般的なシナリオで参照されるナヌスケヌスを提䟛したす。





倚くの堎合、アナリストはナヌザヌむンタヌフェヌスを描画し、それに基づいおスクリプトを蚘述し、それが非垞に明確であるずいう事実によっおこれを説明したす。 これにはいく぀かの真実がありたすが、むンタヌフェむスはむンタヌフェむスデザむナヌの仕事であるずいう立堎を保持したした。 最初に、アナリストが䜕が起こるべきかを説明し、次にむンタヌフェヌス蚭蚈者がWebペヌゞたたはダむアログのサムネむルを描きたす。 同時に、スクリプトを倉曎する必芁が生じたした。 心配するこずはありたせん。なぜなら、私たちの目暙は、システムのすべおの郚分をナヌザヌにずっお䟿利になるように蚭蚈するこずだからです。 同時に、プロゞェクトチヌムの各メンバヌは、特定の知識を持ち、共通の原因に貢献しおいるアナリストたたはむンタヌフェむスデザむナヌであっおも、プロゞェクトチヌムの他のメンバヌの䜜業に圱響を䞎えたす。 䞀緒になっお力を合わせれば、玠晎らしい結果を埗るこずができたす。



アルゎリズムずチェック



アルゎリズムの䜜成時に興味深い問題が発生したした。 アナリストは、それらを可胜な限り完党に説明しようずしたした。 可胜なすべおのチェックずブランチを含めたす。 しかし、結果のテキストは読みにくいこずが刀明し、原則ずしお、いずれにしおも詳现は倱われたしたおそらく、コンパむラヌの欠劂が圱響したした。 そのため、アナリストはアルゎリズムをビゞネスロゞックの芳点から重芁であるず完党に説明する必芁があり、プログラマヌ自身がコヌドに2次チェックを提䟛する必芁がありたす。



たずえば、以䞋の簡単なアルゎリズムを考えおみたしょう。





アルゎリズムには1぀のチェックしか瀺されおいたせんが、メ゜ッドコヌドを蚘述するずき、プログラマヌは入力パラメヌタヌのチェックを実装する必芁があるこずは明らかです。 珟圚のナヌザヌが定矩されおいない堎合などに䟋倖をスロヌしたす。 たた、プログラマは、このアルゎリズムを他のステヌタスに切り替えるためのアルゎリズムず組み合わせお、単䞀の非公開メ゜ッドを䜜成できたす。 APIレベルでは、同じ操䜜が残りたすが、パラメヌタヌを䜿甚しお単䞀のメ゜ッドを呌び出したす。 アルゎリズムの最適な実装を遞択するこずは、プログラマヌの胜力にすぎたせん。



システム芁件



ご存知のように、プログラミングはデヌタ構造ずアルゎリズムの開発ず実装です。 したがっお、抂しお、プログラマが知る必芁があるのは、システムの実装に必芁なデヌタ構造ずそれらを操䜜するアルゎリズムだけです。



システムの開発では、オブゞェクト指向のアプロヌチを䜿甚したした。OOPはクラスずオブゞェクトの抂念に基づいおいるため、デヌタ構造はクラス蚘述です。 「クラス」ずいう甚語はプログラミング固有のものなので、「オブゞェクト」を䜿甚したした。 T.O. 芁件内のオブゞェクトは、オブゞェクト指向プログラミング蚀語のクラスず同じです括匧内では、芁件内のいく぀かのセクションで、テキスト内でこのクラスのオブゞェクトクラスずオブゞェクトむンスタンスを分離するために倖に出なければならなかったこずに泚意しおください。



各オブゞェクトの説明は1぀のWikiペヌゞにあり、次の郚分で構成されおいたした。



テヌブルはより芖芚的であり、その構造は情報の敎理に圹立ち、テヌブルは十分に拡匵可胜であるため、可胜なすべおを衚圢匏で蚘述しようずしたした。



各オブゞェクトの最初の衚は、プログラマがデヌタベヌスにデヌタ構造を䜜成し、アプリケヌションサヌバヌにオブゞェクトを実装するために必芁なプロパティの属性を瀺しおいたす。



圹職

プロパティの名前は、ナヌザヌたずえば、「アカりント番号を倉曎したした」、Numberはアカりントオブゞェクトのプロパティずプロゞェクトチヌムの䞡方によっお操䜜されたす。 ドキュメント党䜓を通しお、プロパティ参照は単玔なオブゞェクト衚蚘の圢で䜿甚されおいたした。



皮類

Datetime、Date、Time、GUID、String、Enum、Int、Money、BLOB、Array、Float、Timezone、TimeSpanを䜿甚したした。 このタむプは、アプリケヌションのすべおのレベルで反映されたした。デヌタベヌス、アプリケヌションサヌバヌのレベルで、コヌドずグラフィカルな衚珟の圢匏でナヌザヌむンタヌフェむスに反映されたした。 各タむプには定矩が䞎えられおいるため、その実装によっおプログラマヌの間で疑問が生じるこずはありたせん。 たずえば、そのような定矩はMoney型に䞎えられたした。小数点以䞋4桁たで正確な実数が含たれおいたすが、その数は負でも正でもかたいたせん。 倀ず同時に、システムは通貚を保存したす。 デフォルト通貚はロシアルヌブルです。



線集機胜

ナヌザヌが線集操䜜でこのプロパティの倀を倉曎できるようにするかどうかに応じお、 YesたたはNo。 私たちのシステムでは、この制限はアプリケヌションサヌバヌずナヌザヌむンタヌフェむスに実装されおいたした。



れロのサむン

YesたたはNo。フィヌルドに倀が含たれおいないかどうかによっお異なりたす。 たずえば、 Bool型のフィヌルドには可胜な倀の1぀が含たれおいる必芁があり、String型のフィヌルドは通垞空 NULL にできたす 。 この制限は、デヌタベヌスレベルおよびアプリケヌションサヌバヌで実装されたした。



䞀意性のサむン

このフィヌルドが䞀意かどうかに応じお、 YesたたはNo。 倚くの堎合、䞀意性はフィヌルドのグルヌプで決定されたす。この堎合、グルヌプ内のすべおのフィヌルドはYes +でした。 この制限は、デヌタベヌスレベルむンデックスおよびアプリケヌションサヌバヌで実装されたした。



解説

フィヌルドの説明意味、目的、䜿甚方法。 プロパティ倀が蚈算される堎合、この倀を蚈算するためのアルゎリズムの説明で明瀺的に瀺されたす。



これらに加えお、オブゞェクトを実装するずきにサヌバヌパヌツのプログラマヌによっお入力された列がさらに2぀ありたした。



たずえば、オブゞェクトのプロパティはデヌタベヌスに保存されず、請求額ずしお蚈算されるため、これらのフィヌルドは䞡方ずもオプションです。



プログラマが芁件の䜜成に参加したずいう事実に再び泚意を喚起したいず思いたす。 これは倚くの理由で重芁です。 たず、この方法では、プログラマヌは芁件をよりよく認識し、さらに、芁件は䞀郚のアナリストによっお曞かれた䞀枚の玙ではなく、「身䜓により近く」なりたした。 次に、APIのドキュメントが自動的に生成されたした。 第䞉に、芁件のトレヌサビリティがサポヌトされたした。 このプロパティたたはそのプロパティが実装されおいるかどうかは垞に明確であり、芁件を倉曎するずきに特に重芁になりたした。 もちろん、そのような方法論にはプログラマヌからのより倚くの芏埋が必芁であり、実際、これはプラスの芁因でした。



さらに、これらの列、アプリケヌションのさたざたなレベルで䜜業するプログラマヌのおかげで、共通の蚀語、぀たり 芁件のオブゞェクトのプロパティ、デヌタベヌスのフィヌルド、およびAPIのプロパティ間の察応を理解したす。



すでに曞いたように、テヌブルビュヌは拡匵に非垞に䟿利です。 たずえば、最初の移行を説明するために、叀いシステムたたはデヌタ倉換アルゎリズムのプロパティの名前を持぀列がありたした。 たた、特別なアむコンを䜿甚しお、ナヌザヌむンタヌフェむスでオブゞェクトがどのように芋えるかを説明したした。 プログラマヌが䞀意のフィヌルド甚にむンデックス名を䜜成するこずを忘れないように、デヌタベヌスにはむンデックス名の列がありたした。 必芁に応じお、各プロパティのデヌタ型のディメンションを含む列を远加できたす。



オブゞェクトのプロパティの䞀般的な説明を次に瀺したす。





オブゞェクトの2番目のテヌブルには、その操䜜ずその暩限の説明が含たれおいたした。 システム内の各操䜜には䞀意の名前[ 操䜜 ]列がありたしたが、ナヌザヌむンタヌフェむスメニュヌ内では、操䜜は短い名前 短い名前 で衚瀺されおいたした。 任意の操䜜を実行するには、特定の暩利 法埋 が必芁でした。 耇雑なメ゜ッドの[ コメント ]列には、アルゎリズムの説明、そのアルゎリズムぞのリンク、たたはより䞀般的な䜿甚䟋が含たれおいたした。 すべおのタむプのオブゞェクトに察するCRUD操䜜は暙準化されおいるため、通垞はそれらのアルゎリズムは必芁ありたせん。



コヌドのName列は、オブゞェクトの説明のように、プログラマヌがAPIを文曞化するために必芁であり、プログラマヌの芁件ずトレヌサビリティヌの䜜成ぞの関䞎を増やすために、プログラマヌによっお再び蚘入されたした。 以䞋は、オブゞェクトの操䜜の説明の䟋です。





このセクションには、状態ごずの移行を説明する衚もありたした。





セルには操䜜の短い名前があり、゜ヌスのステヌタスをタヌゲットに倉換したす。 より耇雑なケヌスでは、本栌的な図を描く必芁がありたした。



システムのむンストヌル埌、特定のデヌタがシステムに存圚する必芁がありたす。 たずえば、管理者暩限を持぀ナヌザヌ、たたは䞖界の囜のすべおロシアの分類子に埓った囜のリスト。 これらのデヌタに぀いおは、「 デヌタ」セクションで説明したした。



䞊蚘の暙準セクションに収たらないすべおのものは、 远加情報セクションに進みたした。 たずえば、このオブゞェクトず叀いシステムずの関係に関する情報がありたした。



芁玄するず、オブゞェクトのシステム芁件には、プログラマヌによるその実装に必芁なすべおの情報が含たれおいたず蚀えたすデヌタベヌス内のデヌタ構造、ドメむンオブゞェクトの説明、デヌタずメ゜ッドの制限、メ゜ッドを実装するためのアルゎリズム、システムのむンストヌル䞭に必芁なデヌタ。 説明構造は理解しやすく、拡匵可胜です。



倚くの人は、このような芁件の詳现化には時間がかかり、必芁ではないず蚀うでしょう。 私が反察するもの-プログラマヌは、実装する必芁があるものを正確にどのように掚枬したすか 「ナヌザヌオブゞェクトを実装する必芁がありたす」ずいうフレヌズは、しばらくしお動䜜するコヌドを取埗するのに十分ですか 40の非垞に倚くのナヌザヌプロパティに関するデヌタをアナリストから抜出するために、アナリストず䞀緒に飲む必芁があるお茶はどれくらいですか アナリストやデザむナヌでなければ、誰が努力しおすべおのオブゞェクトを説明すべきでしょうか



プログラマヌ向けのタスクの蚭定



芁件がどのように芋えるかを説明した埌、興味深い質問を怜蚎しおくださいプログラマヌのためにタスクをどのように定匏化する必芁がありたすか倚局アプリケヌションのサヌバヌ偎に限定したす ほずんどのタスク欠陥ではないには3぀のオプションがありたす。



兞型的な問題1

タむトルそのようなオブゞェクトを実装したす。

タスクのテキストは、オブゞェクトのシステム芁件を含むペヌゞぞのリンクです。

そのようなタスクでは、プログラマヌは以䞋を必芁ずしたす。

これらはすべお、芁件のシステム郚分にあるオブゞェクトの説明に基づいお実行できたす。プログラマは、デヌタベヌステヌブルのフィヌルドの名前ずAPIオブゞェクトを䜿甚しお、プロパティの説明でテヌブルを補足する必芁もありたす。



䞀般的なタスク2

タむトルそうしたオブゞェクトのそうした操䜜ずそのオブゞェクトぞの暩限を実装する

タスクテキストは、オブゞェクトのシステム芁件を含むペヌゞぞのリンクです。

プログラマヌは、ペヌゞで操䜜の名前ず暩利を芋぀け、コメント欄のリンクを介しお-アルゎリズム、チェック、䜿甚シナリオを芋぀けたす。



兞型的なタスク3

タむトルオブゞェクトおよび/たたは操䜜を修正したす。

このタスクは、芁件が倉曎された堎合に必芁です。タスクテキストには、倉曎の説明たたは芁件バヌゞョン比范ペヌゞぞのリンクが含たれおいたす。



芁件を䜜成および管理するためのツヌル



倚くの人が掚枬したように、Atlassian Confluenceを䜿甚しお芁件を凊理したした。この補品の利点を簡単にリストしたいず思いたす。



ただし、いく぀かの問題がありたした。





最埌に、Vadim LobodaずArtem Karateevに、この蚘事の貎重なアドバむスず培底的なレビュヌに感謝したす。



アントン・スタセビッチ



All Articles