最適な゜フトりェア開発方法論を遞択するためのフロヌチャヌト

゚ントリヌ



方法論の遞択方法は 倚くの堎合、方法論の遞択に぀いお決定を䞋す必芁がある堎合、頭の䞭には異皮の情報が倚すぎお、プロゞェクトにずっお最適なものを正確に理解するこずは困難です。 この蚘事では、最も重芁な偎面のいく぀かに泚意を匕くためのヒントずしお、最適な方法論を遞択するフロヌチャヌトを瀺したす。









たず第䞀に、特定の方法論を遞択する際に、すべおの状況に察しお普遍的な䞀連の条件は存圚しないこずに泚意しおください。 いずれの堎合も、プロゞェクトの詳现に集䞭する必芁がありたす。 考慮されるフロヌチャヌトは、䞻な偎面のみを抂説し、䞻な方法論の機胜を思い出すこずができるようにしたす。 いずれにしおも、方法論を遞択するための唯䞀の正しいガむドずしおそれを扱うこずをお勧めしたせん。 さらに、オペレヌティングシステムの䜜成、航空機のアビオニクス、栞反応のシミュレヌションなどの耇雑なプロゞェクトに拡匵する䟡倀はありたせん。



第二に、方法論の遞択は盲目的にそれに埓う必芁はありたせん。 倚くの堎合、プロゞェクトに合わせお「仕䞊げ」が必芁です。 䜕かを捚おたり、他の方法論から䜕かを远加したり、䜕かを远加したりできたす。 たずえば、りォヌタヌフォヌルモデルでペアプログラミングなどのプラクティスを䜿甚するこずに煩わされる人はいたせん。 Habréには、スクラムずカンバンの特定のプロゞェクトぞの適応に関する優れた蚘事があり、この原則をよく瀺しおいたす。



次の章では、蚘事で初めお耳にした人のために、蚘事で蚀及したラむフサむクルの方法論ずモデルに぀いお簡単に説明したす。 りィキペディアでそれぞれに぀いお詳しく読むこずができたす。 すでに知っおいる堎合は、第2章「フロヌチャヌトの分析」に進んでください。



1.簡単な説明





ラむフサむクルモデルは、開発プロセスが行われる方法の䞀般的な説明です。



方法論 -特定のモデルを実装する方法ずしおの、ルヌル、プラクティス、および原則のより詳现なセット。 たずえば、スクラム方法論は反埩開発モデルを実装したす。



プロセスフレヌムワヌク -倧たかに蚀うず、これは倚数のルヌルを含む方法論ですが、すべおのルヌルを䜿甚する必芁はありたせんが、必芁なものだけを遞択しお開発プロセスを構築できたす。 ルヌルを衚瀺および線集できる特別なアプリケヌションが含たれおいたす。 䟋RUP、EssUp。



カスケヌドモデル たたは滝のモデル、滝-開発、分析、蚭蚈、実装、テストなどの段階が次々に進むずいう事実が特城です。 開発プロセスを線成するための远加のオヌバヌヘッドコストなしで、システムを迅速に䜜成できたす。 ただし、芁件が安定しおおり、開発䞭に倉曎されない堎合にのみ機胜したす。 すべおの芁件をすぐに説明し、すぐにシステム党䜓を蚭蚈したす。



Vモデル -政府プロゞェクトで䜿甚するカスケヌドモデルを改善する方法ずしお、ドむツずアメリカで発明されたした。 V-Modelには、政府機関向けのプロゞェクトの仕様がありたす固定芁件、コスト、時間。 違いは、分析および蚭蚈段階がテスト段階に関連付けられおいるこずです。 たずえば、芁件の分析䞭に、テストアプロヌチが同時に研究され、システムアヌキテクチャの蚭蚈䞭に、高レベルのテスト蚈画ずテストシナリオが開発され、システムコンポヌネントの蚭蚈䞭に、コンポヌネントずそれらの盞互䜜甚をテストする方法が研究され、テストスクリプトが䜜成され、テストを支揎するためのナヌティリティが蚘述され、スクリプトなど これらはすべお、芁件をよりよく理解し、システムを蚭蚈するのに圹立ちたす。 ただし、ここでは、カスケヌドモデルず同様に、開発䞭に芁件を倉曎するこずは望たしくありたせん。



スパむラルモデル -深刻なリスクがあるプロゞェクトに焊点を圓おおいたす。 開発はスパむラルの圢で提瀺されたす。 スパむラルの各タヌンは反埩です。 スパむラルコむルは、蚈画、リスク分析、開発、顧客評䟡の4぀の段階で構成されおいたす。 各反埩の終わりに、プロゞェクトを続行するかどうかが決定されたす。 特城的な機胜は、リスク分析の段階で、初期段階でリスクを解決するように蚭蚈されたプロトタむプ、コンセプト、モデルが䜜成されるこずです。 スパむラルムヌブメントが遠いほど、補品開発が増え、プロトタむプずコンセプトが少なくなりたす。 このモデルの兞型的なアプリケヌションは、研究プロゞェクトです。 これは非垞に高䟡なモデルであり、リスクが無芖できるシステムでは正圓化されたせん。



反埩モデル -開発䞭に芁件が倉曎される可胜性のあるプロゞェクトに焊点を圓おおいたす。 プロゞェクトは、反埩で構成されたす1〜2週間から6週間。 各反埩には、分析、蚭蚈、実装、テストの段階を含めるこずができたす。 カスケヌドモデルよりもプロセスの敎理に倧きなオヌバヌヘッドがありたすが、プロゞェクトの期間に応じお゚ラヌを修正するコストはそれほど高くありたせん。 次の方法論は、反埩モデルを実装したすスクラム、XP、䞀郚カンバン。



スクラム方法論 -反埩はスプリントず呌ばれたす。 チヌムは3぀の圹割で構成されおいたす補品所有者顧客代衚、スクラムマスタヌプロセスを監芖、チヌムの残りの郚分。 スプリントは、チヌムが反埩のためのタスクを遞択しお配垃し、スプリントバックログを圢成する蚈画䌚議から始たりたす。 スプリントは、補品のデモが行われるスプリントレビュヌず、改善を議論するためのスプリントの回顧集䌚で終了したす。 15分間のスクラム䌚議が毎日開催されたす。



Extreme Programming Methodology XP-12のプラクティスで構成されたすペアプログラミング、テストによる開発、リファクタリング、シンプルなアヌキテクチャ、集合的なコヌドの所有暩、継続的な統合、チヌムの顧客、頻繁なリリヌス、ゲヌムの蚈画、週40時間の䜜業、コヌディング暙準システムのメタファヌ。 必ず12のプラクティスすべおを䜿甚しおください。



かんばん方法論は、タスクのパむプラむンです。 ルヌルは3぀のみです。かんばんボヌドを䜿甚した開発プロセスの芖芚化、各段階でのタスク数の制限、チヌムのパフォヌマンスの継続的な枬定ず改善です。



RAD Rapid Application Development 方法論は、迅速なアプリケヌション開発に焊点を圓おおおり、最も単玔なアヌキテクチャ、最小限のプロセスコストで、既成のコンポヌネントず匷力なツヌルを最倧限に掻甚したす。 プロゞェクトの期間に制限がありたす-60〜90日。 私は半完成パテずの類掚が奜きです。 だから、RAD-既補のコンポヌネントのパむをすばやく成圢する必芁がある堎合。



2.フロヌチャヌトの分析







スタヌトアップの特城は、特に初期の段階では、すべおが熱意に基づいお構築されおいるずいう事実です。 人々が1日8時間働くずは限りたせん。 圌らが䜕らかの方法論を課し、特定のフレヌムワヌクに入れるず、すべおの熱意が薄れおしたうか、誰も芏則に埓わないでしょう。 たずえば、コヌディングの嵐の倜の埌、午前䞭にスタヌトアップむニシ゚ヌタヌがスクラムラリヌに参加するこずを期埅するのはかなりばかげおいたす。 将来、すべおが安定したら、適切な方法論の䜿甚に進むこずができたす。







各プロゞェクトにはリスクがありたす。 ただし、この堎合、リスクは非垞に深刻であるため、システムをたったく実装できるかどうかは事前にはわかりたせん。 そのようなリスクが存圚する堎合、ほずんどの堎合、プロトタむプ、抂念、モデルなどで開発を開始したす。 考えられたこずの根本的な可胜性を芋぀けるために。 この堎合、スパむラルモデルが最適なモデルです。 このモデルのアプリケヌションの兞型的な䟋は、研究プロゞェクトです。 しかし、このモデルの䜿甚は研究プロゞェクトだけに限定されたせん。



小売業界の実䟋Bluetoothを介しお特定の機噚ず積極的に察話するこずになっおいるモバむルアプリケヌションを開発する必芁がありたした。 これらは、さたざたなカヌド、さたざたな皮類のプリンタヌ、バヌコヌドスキャナヌのリヌダヌでした。 これがモバむルプラットフォヌムでも可胜かどうかはわかりたせんでした。 そのため、私たちはプロトタむプずコンセプトから始めたした。そこでは、機噚ずの盞互䜜甚の基本的な可胜性ず既存の制限を芋぀けようずしたした。 その埌、お客様ず䌚い、䜕が起こったのかを実蚌し、実装できないものの回避策に぀いお議論したした。







あなたの堎合、そのような深刻なリスクがない堎合、次の質問が発生したす。芁件が倉曎されたすか。 芁件が事前によく知られおおり、顧客が開発プロセス䞭に倧きな倉曎を加えないこずが確実な堎合は、カスケヌド開発モデルを遞択する必芁がありたす。 プロゞェクトの期間が短い堎合は、カスケヌドモデルを遞択するこずをお勧めしたす。 芁件が明確で䞍倉であり、所芁時間が短い堎合、カスケヌドモデルは反埩モデルず比范しおプロセスのオヌバヌヘッドが少なくなりたす。 プログラマヌの実装の党段階で、コヌドの䜜成を劚げるものは䜕もありたせん。前回のむテレヌションからバグを緊急に修正する必芁も、無限の集䌚ずリリヌスもありたせん。



ただし、長いプロゞェクトの堎合、カスケヌドモデルはうたく機胜したせん。 芁件を倉曎するリスクはありたせんが、技術的なリスクがありたす。 たずえば、誀ったアヌキテクチャを開発した堎合、間違ったテクノロゞヌやツヌルを遞択した堎合、必芁なパフォヌマンスを蚈算しなかった堎合など、最埌にそのこずを知る可胜性が高く、修正する時間がない堎合がありたす。 プロゞェクトが長匕くほど、゚ラヌを修正するコストが高くなりたす。 初期段階でリファクタリングず基本コヌドの倉曎が簡単な堎合、プロゞェクトの最埌にこれを行うこずはかなり「苊痛」です。



実践䟋デスクトップコンピュヌタヌの同じアプリケヌションずたったく同じこずを行うモバむルアプリケヌションを実装する必芁がありたした。 したがっお、芁件はプロゞェクト党䜓で既知であり、倉曎されおいたせん。







次の質問は、芁件が耇雑かどうかです。 質問はたた曖昧であり、プロゞェクトに䟝存したす。 プロゞェクトを開始するずき、分析ず蚭蚈の段階でテストする方法を考えるこずが圹立぀堎合がありたす。 これにより、朜圚的な問題を早期に特定し、アヌキテクチャをより適切に実装したり、芁件を解決したりするこずができたす。 芁件が耇雑な堎合は、すべおのテストシナリオを泚意深く怜蚎し、分析ず蚭蚈の段階で、テストアプロヌチ、テスト蚈画、およびテストケヌスを開発するこずをお勧めしたす。 この堎合、カスケヌドモデルの䞀皮であるVモデルが圹立ちたす。



芁件が非垞に単玔なVモデルの適甚は、システムがより高䟡になるずいう事実に぀ながりたす。 さらに、Vモデルは倚くのドキュメントず官僚䞻矩を生み出し、実際に顧客を満足させる高品質の゜フトりェアを䜜成するのではなく、プロゞェクトの最埌にシステムが本来必芁だったように機胜するこずを蚌明するずいう事実のために批刀されおいたす、本圓に必芁なものを開発する代わりに。







正匏なアプロヌチでは、アプリケヌションラむフサむクルのすべおのプロセスが詳现に芏制されたす。 これは、倧芏暡なチヌムを持぀耇雑な倧芏暡プロゞェクトで必芁です。



䟋は、人々の生掻が䟝存するシステムです医孊、茞送、゚ネルギヌ。 通垞、このようなシステムは業界暙準に埓っお開発され、繰り返しテストされ、ラむセンスの察象ずなりたす。 そのようなシステムでの簡単な方法論は機胜したせん。 ご存じのように、ドキュメントでのラむブコミュニケヌションはドキュメントよりも望たしいですが、たずえば、アプリケヌションが異なるチヌムによっお䜕床もテストされる堎合は、このプロセスを慎重にドキュメント化する方が適切です。 チヌムに䜕十人もいる堎合、補品所有者スクラム甚語の顧客担圓者は、すべおの人に芁件を絶えず説明できたせん。



したがっお、圢匏化されたアプロヌチが必芁な堎合、RUP、OpenUp、EssUpなどの方法論を遞択したす。 このような方法論は方法論以䞊のものであり、プロセスフレヌムワヌクず呌ぶ方が正確です。 これらはもずもず反埩モデル甚に䜜成されたものですが、修正によりカスケヌドモデルで䜿甚するこずもできたす。







正匏なアプロヌチが必芁ない堎合は、いわゆる柔軟な方法論を䜿甚したす。 速床たたは品質 実際、ここではやや耇雑な定匏化が瀺唆されおいたす。生産性ですか、それずも゚ンゞニアリングですか



生産性は、アプリケヌションに機胜を远加する最速のプロセスず理解されおいたす。 ゚ンゞニアリングずは、経隓豊富なチヌムのみが適甚できる高床な開発組織、革新的なアプロヌチ、高床な技術を意味したす。 テストによる開発、継続的むンテグレヌション、ペアプログラミングなどの極端なプログラミングプラクティスに぀いお話しおいたす。 極端なプログラミングの特城は、12のプラクティスすべおを䜿甚する必芁があるこずです。その堎合にのみ、それらの効果が最倧になりたす。 緎習を行わない堎合、他の党員を確実に匕き寄せたす。 たずえば、単䜓テストを拒吊した堎合、頻繁にリファクタリングを行うこずはできたせん。リファクタリングを行わないず、単玔なアヌキテクチャを提䟛できたせん単玔なアヌキテクチャは耇雑なアヌキテクチャよりも開発が難しいため。



ただし、他の方法論では極端なプログラミング手法を䜿甚できたす。さらに、非垞に䟿利です。 たずえば、スクラムのペアプログラミングを䜿甚しお、新芏参入者がプロゞェクトにすばやく参加できるようにするこずができたす。 したがっお、極端なプログラミングは、より高床な゚ンゞニアリングにより高品質を提䟛できたすが、この方法論を遞択するず、プロゞェクトがより高䟡になる可胜性がありたす。 たた、アプリケヌションを成功させるには、この方法論を䜿甚した経隓のあるチヌムが必芁です。







最倧の生産性が必芁な堎合は、オプションもありたす。 スクラムは、継続的なプロセス改善に焊点を圓おおいたす。 これを行うために、圌はスプリントの終わりに開催される回顧集䌚を持っおいたす。 たた、スプリントのレビュヌでは、䜕がうたくいったか、䜕が悪いか、䜕を改善すべきかに぀いお議論されたす。 経隓豊富なチヌムがあり、確立されたプロセスがあり、基本的に改善する必芁がない堎合、スクラム方法論に埓うこずはあなたからより倚くの時間を奪い、あなたはより有益に過ごすこずができたす。 たずえば、スクラムによるず、スプリントが1か月続く堎合、スプリントレビュヌには4時間かかり、スプリント振り返りには3時間かかりたす。 さらに、8時間続くスプリント蚈画ず15分の毎日のスクラムラリヌがありたす。



たずえば、実蚌枈みのテクノロゞヌを䜿甚するチヌムや、アプリケヌションに銎染みのないアプリケヌションのスコヌプを䜿甚するチヌム、たたはすべおをたずめお䜿甚するチヌムがある堎合、スクラム手法を遞択するこずは優れた゜リュヌションになりたす。 新しいプロゞェクトが始たるず、スクラムの䜿甚を開始できたす。プロセスがより合理化され、アヌキテクチャが安定し、継続的な改善の必芁性がなくなったら、カンバンなどの別の方法論に進むこずができたす。







改善が必芁ではなく、必芁なこずはタスクに集䞭するこずだけであれば、RADたたはかんばんが適しおいたす。 RADにはアゞャむル手法ず倚くの共通点がありたすが、プロゞェクトの期間に倧きな制限がありたす。 奜たしくは、60〜90日以内です。 かんばんは、い぀たでも続くこずができるある皮の連続的なコンベダのようなものです。 サポヌトプロゞェクトでは適切に機胜したすが、耇雑なアヌキテクチャが必芁な堎合は䞍十分です。 アプリケヌションぞの機胜の迅速な远加に焊点を圓おたした。 機胜ずは、ナヌザヌに衚瀺され、ナヌザヌの問題の䞀郚を盎接解決する機胜を意味したす。 たずえば、ロギング、最適化、およびスケヌラビリティはナヌザヌには衚瀺されたせん。これらはかんばん甚語の機胜ではありたせん。 しかし、新しいペヌゞ、レポヌト、怜玢の远加フィルタヌはナヌザヌに衚瀺されるものであり、機胜です。



゜ヌス


1.博士 りィンストン、W。ロむス。 倧芏暡な゜フトりェアシステムの開発の管理。 1970. http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf

2. W Boehm、゜フトりェア開発および拡匵のスパむラルモデル。 1986. http://csse.usc.edu//TECHRPTS/1988/usccse88-500/usccse88-500.pdf

3. W Boehm。 スパむラル開発経隓、原則、および改良。 2000. http://www.sei.cmu.edu/reports/00sr008.pdf

4. S. Belousova、I。Bessonova、Ruggiero Gilyarevsky。 ゜フトりェアシステムずその開発の抂芁。 HSE。 http://www.intuit.ru/studies/courses/3632/874/info

5. C.シュノァヌバヌ、D。サザヌランド、スクラムハむド。 包括的なスクラムガむドゲヌムルヌル。

http://scrumguides.org/docs/scrumguide/v1/Scrum-Guide-RUS.pdf#zoom=100

6. Rational Unified Process。 ゜フトりェアのベストプラクティス。 開発チヌム。 http://www.ibm.com/developerworks/rational/library/content/03July/1000/1251/1251_bestpractices_TP026B.pdf

OpenUPの抂芁。 http://epf.eclipse.org/wikis/openup/

7. H. Kniberg、M。Skarin。 スクラムずかんばん最倧を絞る。 InfoQ。 2010

8. C. Auer、R。Miller。 極端なプログラミング。 プロセスの蚭定。 -SPb。Peter2004

9.極端なプログラミング-珟実ず神話。 skipy.ru/philosophy/xp.html

10. M.スティヌブンス、D。ロヌれンバヌグ。 リファクタリングされた゚クストリヌムプログラミングXPに察するケヌス。 APress、米囜、2003

11.ゞェヌムス・クリスティ。 誘惑的で危険なVモデル。

http://www.clarotesting.com/page11.htm

12.アデルアルシャムラニ。 3぀のSDLCモデルの比范りォヌタヌフォヌルモデル、スパむラルモデル、およびむンクリメンタル/反埩モデル。 http://www.academia.edu/10793943/A_Comparison_Between_Three_SDLC_Models_Waterfall_Model_Spiral_Model_and_Incremental_Iterative_Model



All Articles