ITプロゞェクトの芁件をAからZに圢成する実践。パヌト6。システムの動䜜。 完璧な芁件



IXシステム動䜜の定矩。



非垞に倚くの堎合、その振る舞いは...その理由が、非垞に合理的か぀培底的に他人から隠されおいるため、ばかげおいるように芋えたす。

フラン゜ワ・デ・ラロシュフカり






䞻なシナリオずサブゞェクト゚リアの゚ンティティのリストを決定したら、それらを互いに比范する必芁がありたす。



この䞀連の䜜業の目的特定された゚ンティティずプロセスに基づいお、開発䞭のタヌゲット補品がシステムの動䜜を蚭蚈し、クラスに配垃したす。



このプロセスは、暙準的なシヌケンス図を䜿甚しお䟿利に実行されたす。 このタむプのチャヌトは、あるオブゞェクトがプロセスを䜿甚しお別のオブゞェクトにメッセヌゞを送信し、このむンシデントに応答するように匷制するむベントのチェヌンをシミュレヌトするために䜿甚できたす。 このようなむベントの結果ずしお、芁求されたオブゞェクトは応答を返すか、次のプロセスを開始できたす。 したがっお、システムの䜎レベル機胜を圢匏化するず䟿利です。 むベントに察する反応の連鎖が長く耇雑になるほど、シヌケンス図を䜿甚せずに行うこずは難しくなりたす。



図9.1は、タヌゲットシステムの芁件を圢匏化するプロセスを瀺し、その動䜜を決定するためのサブプロセスが远加されおいたす。







図9.1-システムの動䜜を決定するプロセスのモデル



1.シヌケンス図を䜿甚しおシステムの動䜜をモデル化する



「ゞョブアカりンティング」回路の蚭蚈を続けお、䟋ずしお取り䞊げたしょう。ゞョブを実行者に割り圓おるずきのシステムの動䜜を図9.2に瀺したす

シヌケンス図は巊から右、䞊から䞋ぞず読たれるこずを思い出させおください。







図 9.2-タスクのシヌケンス図の圢成



この操䜜は、以前に開発されたタスクカヌドテンプレヌト以䞋ShKZを遞択するこずから始たりたす。このテンプレヌトに基づいお、プロゞェクトの新しいアクティビティがナヌザヌ甚のタスクカヌドの圢匏で圢成されたす。 図のタスクカヌドのコピヌは䞊の行ではなく、怜蚎䞭のプロセスで実際にそれを生成するむベントの矢印のレベルにのみあるこずに泚意しおください。 しかし、私たちは少し先を走りたした。 ダむアグラムに戻っお、順番に怜蚎しおいきたしょうシヌケンスダむアグラムです。



クラス図この蚘事の最埌の郚分で説明したすでは、図8.4を参照しおください。ShKZでは、ネむティブポゞションのディレクトリが参照されおいたす。 タスクマップの実装の責任者を決定する必芁がありたす。 したがっお、シナリオの2番目のステップでは、確立されたポゞションに埓っお珟圚ポゞションを保持しおいる特定の埓業員を決定したす。 ちなみに、2番目のステップに蚀及しお、私は間違いに気づきたした。私の図では、矢印の近くに数字がなく、通垞は䞋に眮かれおいたす。これは非垞に䟿利です。 したがっお、2番目のステップで特定された埓業員がタスクマップのキュレヌタヌになりたす。 実際、モデリングのこの段階で、新しいシステム関数前のセクションで説明したビゞネス関数ず混同しないでくださいを定匏化したした。その入力はネむティブの䜍眮に蚭定され、埓業員ぞのリンクは出力に返されたす。 ほずんどの堎合、このような関数は耇数回䟿利になりたす。



先に匷調したように、䞊から䞋ぞ、巊から右ぞず進みたす。 ShKZはタスクテンプレヌトをリンクし、実行者の操䜜の構成ず順序を決定したす。 したがっお、ShKZに埓っおタスクマップを䜜成した方法ず同様に、䜜成したタスクテンプレヌト-タスク操䜜を䜜成したばかりのタスクマップに結合したす。 ただし、1぀のマップには倚くのタスクが存圚する可胜性があるため、図ではルヌプシミュレヌション手法ルヌプステレオタむプのフレヌムを䜿甚したす。 同様に、このタむプのダむアグラムでは、条件付き遷移、前提条件、およびその他の条件付き構成を衚瀺できたす。



ShKZだけでなく、ゞョブテンプレヌトにも、通垞のポゞションのディレクトリぞのリンクが定矩されおいたす。 この接続は、マップに含たれるタスクの盎接実行者を決定するために必芁です。 各タスクに぀いお、このリンクはアヌティストを定矩したす可胜な堎合。 この機胜が図の2番目のステップですでに特定され、特定されおいるこずに気付くのは難しくありたせん。



この䟋の別の重芁なプロセス割り圓おの特性を決定するパラメヌタヌの入力。 タスクの圢成䞭に、そのテンプレヌトの受信ずしお定矩されおいるパラメヌタヌには、システム゚ンティティの珟圚の倀が入力されたす。 このプロセスは、抜象メタデヌタクラスを通じお抜象的に衚瀺されたす。 このプロセスのステップのより詳现な定矩に぀いおは、別の図が䜜成されたす。



したがっお、シヌケンス図のプロセスを段階的にモデル化するこずで、プログラムコヌドに実装する必芁のあるシステム関数、それらの受信および送信パラメヌタヌ、および実行シヌケンスを決定したす。



シヌケンス図は、オブゞェクトを倉曎するプロシヌゞャが順番に自動的に次々に実行されるトリガヌ構造で飜和したシステムで特に圹立ちたす。 長いチェヌンでは、同じオブゞェクトが異なるトリガヌプロシヌゞャによっお倉曎され、モデリングせずに最終結果を远跡するこずが問題になる堎合がありたす。



2.システムの動䜜をモデル化する際に、オブゞェクトの状態の倉化を分析したす



むベント駆動型システムの芁件を実装するには、さたざたなむベントが発生したずきのオブゞェクトの状態特定の時点でのプロパティのセットの定矩ず管理に特別な芁件が課されたす。 たずえば、特定の時点で特定の条件が発生したずきにオブゞェクトのプロパティを自動的に倉曎するシナリオの開発。 暙準的な状態図を䜿甚しおこのような問題をモデル化するず、むベントを状態に関連付けるこずができたす。 このタむプの図は、むベントを明瀺的に怜出するシヌケンス図ず組み合わせお効果的に䜿甚できたす。



状態図を䜿甚したモデリングの基本的な仮定を思い出させおください。 状態図の䞻芁な芁玠であり、圓然問題のオブゞェクトの「状態」です。 1぀の図では、1぀のオブゞェクトのみの状態遷移をシミュレヌトできたす。 ダむアグラム内の1぀の状態は1回のみ発生したす。



䞋の図9.3は、「Task」オブゞェクトの状態遷移のモデリング䟋を瀺しおいたす。 このタむプのチャヌトには、オブゞェクトの生成を決定し、そのラむフサむクル以降LCの開始を瀺す芁玠が垞にありたす。 私たちの堎合、新しいタスクを䜜成するずき、その次の状態を定矩する重芁な属性ぱグれキュヌタヌになりたす。 蚭定されおいる堎合、タスクは実行のために提案され、そうでない堎合、タスクは初期状態のたたになりたす。 この䟋では、オブゞェクトの残りの属性を埋めるルヌルこれも行われる可胜性がありたすは、特定の堎合には䞍可欠ではないため考慮されたせん。







図 9.3-タスクステヌタスチャヌト



図の角括匧内の矢印の暪に、遷移条件がマヌクされおいたす。 この条件が満たされるず、次の矢印状態ぞの遷移が実行されるこずを瀺しおいたす。 たた、括匧のない矢印の近くの碑文は、状態倉曎を実行するむベントを瀺しおいたす。 状態を瀺す長方圢の䞭に、遷移を匕き起こす可胜性のあるすべおのむベントがリストされたすそれらは矢印䞊のむベントに察応する必芁がありたす。 ダむアグラム䞊の各状態は、矢印ぞの遷移ず、1぀以䞊の矢印遷移を必ず取埗する必芁がありたす。 したがっお、むベントや移行条件を芋倱うこずは非垞に困難です。



たずえば、タスクのマヌクが完了しおいれば、「䜜業䞭」状態から「完了」状態に移行できたす。 そしお、そこから州に行くこずができたす





図では、LCオブゞェクトの終わりを垞に決定する必芁がありたす。



実際には、状態図の代わりに、状態遷移衚を䜿甚するず䟿利な堎合がありたす。 プロゞェクトのほずんどの利害関係者にずっおより理解しやすく、耇雑で耇雑なプロセスがない堎合に䜿甚されたす。 たずえば、以䞋は、怜蚎䞭のプロゞェクトのゞョブのステヌタスの簡易遷移衚です。







ただし、テヌブルをコンパむルするずきは、重芁なものが欠萜する可胜性が高いこずを理解する必芁がありたす。 したがっお、ダむアグラムを䜿甚しおモデリングを実行し、それらに基づいお、すでにテヌブルに蚘入する方が適切です。 たずえば、正盎に蚀うず、最初に衚を䜜成したしたが、この章では図を含む図を含める぀もりはありたせんでした。 しかし、気が倉わっお、すぐに倚くの矛盟を芋぀けたした。具䜓的には䜕も修正し始めなかったので、あなたは自分でそれを芋るこずができたす。



3.システムの過剰な「過剰管理」を避ける



システムに蚘録されたデヌタに基づいお、それらの凊理方法を決定できるメカニズムを蚭蚈する堎合、これらの決定を遞択するための条件を䜜成するためのルヌルが倉曎される可胜性に特に泚意を払う必芁がありたす。 より簡単に説明したす。顧客が特定のルヌルが垞に適甚されるず蚀った堎合、これはシステムの実装埌にこの「鉄筋コンクリヌト」ルヌルに䟋倖を远加する客芳的な理由がないこずを意味したせん。 この堎合、厳密に蚭蚈された意思決定メカニズムは、すべおのプロゞェクト参加者にずっお倧きな頭痛の皮になりたす。



私の緎習では、販売を含む顧客関係を自動化するシステムを䜜成するこずを目的ずしたプロゞェクトがありたした。 開発䞭のシステムは、経理が手動で行われたしかし圓然、特定の芏則に埓っお時代遅れのシステムを眮き換えるこずになっおいたす。 蚭蚈のために、䌚瀟の販売ルヌルを確立する承認枈みの芏制文曞が䜜成されたした。 ドキュメントに基づいお、これらのルヌルを凊理するようにシステムを柔軟に構成できるメカニズムが開発されたした。 しかし、耇雑なマルチレベルの割匕システムを䜿甚しお請求曞を自動的に生成できるシステムを導入するず、マネヌゞャヌの裁量でルヌルがなくおも販売が行われる堎合があり、開発された゜フトりェアではこれが蚱可されおいたせんでした。 「懐䞭電灯から」アカりントを圢成できるようにシステムを再蚭蚈するには、さらに倉曎を加える必芁がありたした。 この䟋では、カプセル化が耇雑すぎるず管理性が䜎䞋し、モゞュヌルの適甚範囲が狭くなるこずを匷調したかったのです。 これは、VIII章ですでに蚀及されおいたす。



したがっお、このような堎合、次の掚奚事項を䜿甚するこずをお勧めしたす。





たずえば、タスクを゚グれキュヌタに割り圓おるためのモゞュヌルでは、テンプレヌトに埓っお次のプロセスが実行されたす。



  1. ゞョブずゞョブのマップは、テンプレヌトに埓っお圢成されたす。
  2. 実行者ず、割り圓おられた割り圓おの責任者に通知されたす。


これら2぀のプロセスを順次実行する1぀のオブゞェクトを䜜成できたす。 ただし、時間の経過ずずもに、実行者にタスクの割り圓おを䞀床にではなく、前のタスクが完了するたびに通知する必芁が生じる可胜性がありたす。 この堎合、2぀のオブゞェクト間の責任の分割により、最初のオブゞェクトはタスクの圢成のみを担圓し、2番目のオブゞェクトは実行の「成熟」に䌎い、タスクの割り圓おを実行者に通知する䞀定の呚期性を持ちたす。



X芁件の改善



私は、実際には、いく぀かのパスで芁件を圢成する手法を䜿甚しおいたす。 ぀たり、最初にドラフトバヌゞョンの抂芁を説明したす。高品質の補剀をすぐに取埗しようずはしたせん。 蚀葉は説明の䞭で繰り返すこずができ、衚珟は「ぎこちない」こずができたす。 䞻なこずは、䞻芁なアむデアを述べ、接続された構造、぀たり仕様のフレヌムワヌクを圢成するこずです。 埌で、仕様をもう䞀床読んで、テキストを「くし」にしお、耳でよく認識できるようにしたす。 認識を超えお説明が倉わる堎合がありたす。 それで、私は仕様が4〜5回時にはそれ以䞊通過し、それらが調和のずれた容易に知芚される構造になるたで繰り返したす。 ずころで、この出版物は同じように曞かれたした。



この䞀連の䜜業の目的は、芁件の圢匏を正芏化しお、知芚を可胜な限りシンプルにし、䜿いやすくするこずです。



1.トレヌサビリティ芁件を確認したす



䞊蚘のように、最も初期の段階から、すべおのプロゞェクト成果物間のリンクを維持するこずが非垞に重芁です。 私たちのプロゞェクトでは、埌続の各ステヌゞに移動しお、前のステヌゞのアヌティファクトを䜿甚しお、明瀺的にリンクを瀺したした。 したがっお、たずえば、ナヌザヌ履歎に埓っお、芁件仕様を遞択し、実行するタスクずその実装の皋床を簡単に決定できたす。



アヌティファクトの远跡可胜性のために、アヌティファクトに識別子を䜿甚したす。 他のアヌティファクトの識別子ぞのアヌティファクトリンクを配眮したす。 これらの関係に基づいお、他の芁件、ナヌザヌストヌリヌ、他のアヌティファクトずはたったく関係のない芁件を远跡し、その䜿甚の適切性を再床分析したり、芁件の完党性のギャップを特定したりできたす。



2.テスト容易性に取り組む



芁件をコンパむルするずきは、それらを䜿甚するすべおのチヌムメンバヌの泚意を払い、仕様が可胜な限り圹立぀ようにする必芁がありたす。



テスタビリティの芳点から、芁件には正確な怜蚌基準が含たれおいる必芁があるずいう事実に泚意を払う必芁がありたす。 ぀たり、「芁件が顧客の垌望を満たしおいるかどうか」ずいう質問に察する明確な回答を蚱可する必芁がありたす。



芁件を圢成し、それらに基づいお受け入れテストを開発するのが簡単で䟿利になるような方法でそれらを構成しおみおください。 基準は、実装の完党性ず正確性の䞡方の怜蚌を蚱可する必芁がありたす。 このような手法は、柔軟な蚭蚈のスクラム、XPの方法論で非垞に効果的に䜿甚されたす[10]。 たずえば、凊理アルゎリズムの遞択の境界ずなるオプションでデヌタを入力するためのルヌルを衚瀺する芁件のテキストでの説明の圢成を䜿甚したす。 たずえば、ある列に動䜜のアルゎリズムを遞択するための境界ずなる倀をリストし、別の列にこの堎合のシステムの動䜜に関する指瀺を䜜成するこずができたす。 䟋







受け入れテストを䜜成するずき、テスタヌは準備された倀を䜿甚したす。

さお、芁件の開発プロセスを教えおいる本では、テスト容易性の芳点から、次のような芁件の特性に泚意を払う必芁があるこずを読むこずができたす。







3.芁件に同意する



シミュレヌションの䞻な効果は、蚭蚈の初期段階で、埗られる補品のアむデアず顧客ず開発者の間の䞍䞀臎を特定するこずによっお達成されたす。 時には、これにより開発チヌム内での理解が可胜になりたす。 たた、シミュレヌションを䜿甚するず、ナヌザヌは補品の機胜に関する仮定の䞀郚をより明確か぀詳现に提出し、最初の芁望に改良や倉曎を加えるこずができたす。 このプロセスがうたく行けば進むほど、実装枈みの補品に倉曎を加える必芁が少なくなりたす。 したがっお、顧客ずの芁件の調敎は芋逃しおはならない非垞に重芁なポむントであり、さらに、各重芁なプロゞェクトの進展埌に定期的に調敎を行う必芁がありたす。



私自身もそのような掚奚事項を繰り返し読んでおり、ほずんどの堎合、個人的に感動するたで私の耳をすたせおくれたした。 どういうわけか、すべおが十分にスムヌズに進み、芁件が十分に開発されおいないプロゞェクトが採甚され、開発䞭に既に確定されおいたため、垞にそれを逃れたした。 しかし、遅かれ早かれ、リラックスする瞬間が来お、泚意が埐々に鈍くなっおきたす。パヌトナヌや顧客は垞に、圢匏化されおいないが非垞に予算䞊の合意に基づいお、完党に異なる䜕かをするこずを芁求し、手をひねっお絶望に導くパヌトナヌや顧客がいたす。 そしお神は犁じたす、それは囜家構造であるこずが刀明したす-あなたは「ヒット」を持っおいたす...これに持っおこない方が良いです。



すべおのスキヌム、図、ビゞネスプロセスの説明に関連する仕様を顧客に瀺すこずを恐れないでください。 そしお、単に芋せるためだけでなく、圌が質問をするようにその内容を説明し、議論ぞの関心が生じたした。 これは耇雑で骚の折れるプロセスであり、すぐには解決したせん。



お客様は、説明に耳を傟け、提瀺されたドキュメントの本質を理解するために、埐々に、そしお執lentに顧客に慣れる必芁がありたす。 それらによっお最もよく知芚される図の構成を決定したす。



倚くの堎合、補品の最初のプロトタむプを芋たナヌザヌは、䞻な垌望を倉えたす。 たた、この堎合、芁件はプロゞェクト参加者によっおすでに正匏に承認されおいるため、それらぞの修正の導入は、別個の、より厳密な承認手順を経る必芁がありたす。 結局のずころ、これらの倉曎は、関連するプロセスたたは他のナヌザヌの機胜に圱響を䞎える可胜性がありたす。



芁件を倉曎するメカニズムに぀いおは、「芁件の倉曎に関する問題の解決」の章で詳しく説明したす。



調敎は、芁件に基づいおだけでなく、その実装の優先床にも基づいお実行する必芁がありたす。 このため、チヌムは顧客ずずもに、芁件の「重芁性」などの特性を定矩したす。



4.芁件開発プロセスのリスクを決定する



「䞀般に」プロゞェクトのリスクを䌎う䜜業を省略し、芁件の開発におけるリスク管理のトピックのみに觊れたす。 䞊蚘のように、モデリング方法自䜓は、補品に䞍芁な機胜や䞍適切な機胜を開発するリスクを軜枛したす。 これは、蚭蚈の初期段階で、蚭蚈者ず開発者が顧客ず補品のプロトタむプモデルの機胜に぀いお話し合うこずができるためです。 したがっお、モデルの開発が適切であればあるほど、そのような議論の䞭で䞻題分野の理解を深めるこずができたす。 逆に、高品質で深い芁件を䜜成する十分な時間がない堎合、顧客のニヌズを満たさない補品を䜜成するリスクがありたす。 これは、開発埌に明らかになり、远加コストが必芁になり、顧客を倧きく混乱させる可胜性がありたす。



初期の段階で、蚭蚈された機胜の耇雑さず実珟可胜性を刀断するこずができない堎合、効果的ではないが予枬可胜な代替オプションを開発する必芁がありたす。 これにより、メむンの実装オプションで障害が発生した堎合、迅速に代替に切り替えるこずができたす。 たた、リスクの可胜性に぀いおチヌムに通知し、実装が困難であっおも驚くこずではありたせん。



䞀般に、芁件に関連するリスクは、䞻にその特性の1぀が暙準から逞脱しおいるためです。 これは





通垞、リスクは別のドキュメントに文曞化されおおり、プロゞェクトマネヌゞャヌの責任であるため、これに個別に焊点を圓おるこずはせず、ドキュメントでこれがどのように芋えるかを瀺したす。







リンクの芁件を指定するのに次の郚分を捧げるでしょう。



参照資料
1. Jacobson A.、Butch G.、Rambo J.-「統合゜フトりェア開発プロセス」2004

2.デむビッドA.マヌクおよびクレメントマクゎヌワン-「SADT構造解析および蚭蚈方法論」

3. Coburn-「機胜芁件を蚘述するための最新の方法」2002

4.レディングりェルディヌン、りィドリッチドン-「゜フトりェア芁件を扱う原則」2002

5. Karl I. Wigers-「゜フトりェア芁件の開発」2002

6.゚リザベス・ハル、ケン・ゞャク゜ン、ゞェレミヌ・ディック-「芁件の開発ず管理-実甚的なナヌザヌガむド」2005

7.スコットアンブラヌ-「柔軟な技術極端なプログラミングず統合開発プロセス」2005

8.ケむン・ショヌト、グリヌンフィヌルド・ゞャック-「゜フトりェア開発工堎」2007

9. Alistair Cowburn-「各プロゞェクトには独自の方法論がありたす」

10. Wolfson Boris-「柔軟な開発方法論」

11. Leshek A.-「芁件ずシステム蚭蚈の分析」

12.フリヌマン゚リック、フリヌマン゚リザベス-「デザむンパタヌン」2011

13.゚ノァンス・゚リック-「サブゞェクト指向デザむン」2011

14. GOST 34.602-89「情報技術。 自動化システムの䞀連の暙準。 自動化システムの䜜成に関する参照条件」



All Articles