12

従来のウォーターフォールでは、難解なテンプレートに従って、通常は MS-Word 文書に要件がまとめられていました。「厳密な」ウォーターフォール モデルでは、このドキュメントは要件フェーズの後に凍結され、変更管理/変更管理プロセスが管理された変更の導入を担当します。(**) [通常、ドキュメントは「生きたドキュメント」になり、最終的には「生きた悪夢」になります]

現在、私は既存のデスクトップ アプリケーションを Web に (VB 6.0 から ASP.Net に) 書き直すプロジェクトを率いています。クライアントは、書き直したいアプリケーションのベースライン バージョンを持っています。[したがって、要件は凍結されています...スコープクリープはありません]。そのまま再利用するデータモデル。移行するフロント エンド/ビジネス ルールのみ。アプリケーションを見ると、それはせいぜい 3/4 の主要な画面であり、それだけです。

一部のチーム メンバーは、新しい開発に着手する前に、すべてを文書化したいと考えています (私の意見では古い考え方です)。UI を Web に変換し、古いコードを検索し、ビジネス ロジックを記述し、自動化された単体テストを実行し、統合テストに進み、画面ごと (または機能ごとにビジネス機能) を配信するのは、比較的簡単なはずだと私や他の人は感じています。

私の質問は次のとおりです。アジャイル開発では、これを最適化しない場合、どのように「アジャイル」を維持しますか。私の意見では、詳細なドキュメントを書くことは反アジャイルです。どう思いますか?アジャイルの第一人者は、上記の問題 (既存の VB 6.0 アプリを ASP.Net に書き直すという問題) にどのようにアプローチしますか?


免責事項: 1000 ページの機能仕様の作成は、契約上の義務、政治的必要性を満たすためである可能性があり、システムは本当に複雑になる可能性があります (現在、「複雑さ」の定義は暗い土地への旅です)。

4

8 に答える 8

12

まず、顧客またはプロダクトオーナーがドキュメントの作成を要求した場合(読み取りの準備ができている場合)、ドキュメントを作成してアジャイルを維持できます。

コードで行うように、ドキュメントを段階的かつ反復的に増やします。少しテストし、少しコーディングして...少し文書化します。

これを行うには、3つの方法があります。タスクの見積もりにドキュメントを作成する時間を含めるか、ドキュメント固有のタスクを作成するか、ドキュメントのバックログアイテム/ストーリーを作成します。

ドキュメンテーションストーリーのリスクは、それらが非常に遅く計画され、それが実装されてからかなり時間がかかる可能性があることです。したがって、これはお勧めしません。

文書化タスクには、反復計画に表示されるという利点があるため、忘れたり見落としたりしないでください。

于 2008-12-26T14:24:58.947 に答える
3

私はこの件について多くのことを考えました。私たちはスクラム環境で働いており、ドキュメントを整理するのに苦労しました。

現時点で私が取り組んでいるのは、かなり早い段階なので、長期的なテストに合格するかどうかはわかりませんが、ドキュメントに wiki を使用することです。

基本的に、ワークフローは次のとおりです。

  1. ストーリーはバックログに出てくる
  2. プログラマーがストーリーを取り上げる
  3. プログラマーはコードを作成し、DoD (Definition of Done) では、新しい機能に対していくつかのテストを作成する必要があり、wiki を編集して新しい機能のページを追加する必要があります。

wiki は mediawiki のテンプレートで構成されており、ほとんどは mediawiki 拡張機能のドキュメント ページから着想を得ており、機能の名前、それが導入されたバージョン、その他の有用なものが含まれています。テンプレートは、さまざまな種類の機能 (およびそのステータス) を区別するためにピクトを追加します。

結局のところ、Wiki には、どこにどのように置くかを気にせずにドキュメント ページを追加できるという大きな利点がありますが、明らかに、定期的に誰かが後ろに来て混乱を整理する必要があります。

心に留めておくべき重要なことは、使用するツールが何であれ、開発者は開発が行われた直後に (技術的な側面を含めて) ドキュメントを作成する必要があるということです。

于 2008-10-25T08:40:03.513 に答える
3

アジャイルは「仕様がない」という意味ではありません。これは、早期かつ頻繁にテストしてリリースすることを意味します (ただし、必ずしも本番環境にリリースする必要はありません)。

スクラムのバックログは「仕様」です。機能のリストを実際に書き留めて管理しないと、機能が失われ、製品がいつリリースされるかを決して把握できなくなります (残りの作業量を見積もることができません。あなたがどこにいるのか、やるべきことがどれだけ残っているのかわかりません)。機能のリストは、誰かが管理する必要があります。そのための最も簡単な方法は、製品が行うべきことをすべて書き留め (言葉遣いや定義は必要に応じて複雑にすることができます)、何が完了し、何が残っているかを追跡することです。他にどのように開発者に作業を割り当て、ステータスを「管理者」に報告しますか?

于 2008-10-24T22:17:33.957 に答える
2

関数仕様を作成することが契約上必要な場合は、その内容を慎重に検討する必要があります。機能仕様で約束したものを提供できなかった場合、支払いを拒否される可能性があります。

残念ながら、このプロセスを採用した場合、機敏性を維持することはできません。クライアントは、書き直されたアプリケーションに同じ機能を本当に望んでいますか? はいの場合、なぜ書き直されているのですか?絶対に使わない機能があると確信しています。

古いバージョンをわざわざ文書化するつもりはありません。アプリケーション自体の参照は既にあります。ソフトウェアに曖昧さはありません。

ドキュメント作成は反アジャイルではありません。優先順位を付けずに何かを設計し、顧客からのフィードバックを得ることです。アジャイルの重要な側面は、顧客から賛同を得ることです。彼らがそれを信じなければ、プロジェクトは本来よりも困難な時期を迎えることになります。

于 2008-10-25T08:31:53.453 に答える
2

すでに指摘したように、アジャイルとはドキュメントがほとんどまたはまったくないという意味ではなく、「包括的なドキュメントよりも動作するソフトウェア」です。

私がドキュメンテーションにアプローチする方法は、ほとんど物事をひっくり返し、ドキュメンテーションのすべての部分 (技術仕様としてのコードと単体テストを含む) を検討することです。したがって、ビジネス/ユーザーの要件を説明するストーリー (または作業を分割するために使用するその他のメカニズム) は、作業を行うチームが見積もるのに十分なほど詳細である必要があります。そうでなければ、それは不完全で曖昧です。さらに、私自身の実践で行っていることですが、ストーリー (またはその他のもの) がチームの「完了」の定義に適合するまでに 1 営業日以上かかると推定される場合、おそらく分解する必要があります (この原子化してからコンパイルすると、最終的には非常に広範なドキュメントですが、実行しない場合ほど多くの未知数を想定していません - そして、非常に興味深い再利用とパターンの発見につながる可能性があります)。

BDD スタイルの要件を使用した例:

Given I am working on a document
When I select "Save As..."
Then a menu should appear allowing me to choose a name, 
and a file type, 
and a location in the file system,
and a file should be created in the file system

これを実現するために、UI 要素、メニュー項目、ストーリーボード、キーボード ショートカットなどをこの説明に追加する必要がある場合があります (「ファイルの保存」という同じテーマで複数のバリエーションがある場合があります)。等々。

これらの関連成果物はすべて、基本ストーリー/要件に添付できます。その結果、より完全なドキュメントが作成されます。ただし、実際に実装するストーリーのみを、Web バージョンのソフトウェアのドキュメントに追加してください。

ここで物事がひっくり返り、より「アジャイル」になります。開発中および開発後に、文書化された要件を再検討し、チームの編集によって行われた変更/修正/改善を追加します (文書化のみの CCB を通過する必要はありません)。すべての審査委員会などを通過せずにドキュメントと関連アセットを編集/更新する機能、または開発中にドキュメントが何らかの形で不完全であることがわかったときにドキュメントを「壁の向こうに」投げ捨てる機能により、適応することができます未知へ - したがって、アジャイル。

このドキュメンテーションには、何らかの形のバージョン管理または履歴が必要です。これにより、希望するシステムを説明できるだけでなく、実際に実装されたシステムについても説明できます。ドーンの定義の一部であるドキュメンテーションに関する別の回答/提案に注意してください (私も行う)。(Wiki はこれに適しています。ただし、完全に統合された概念の方がもう少し望ましいです。たとえば、バージョン管理システムのトランク内のファイルにチケットを関連付けることができると便利です。)

結論として。開発作業中および/または開発直後に変更できない完全なドキュメントを前もって作成すると、機敏性、つまり未知のものにすばやく適応することができなくなります。ただし、Leading Lean Software Development を参照すると、ポリシーが特定のプラクティス/プロセスを適切に使用することを許可していない場合、リーン (またはスクラム、またはアジャイル) であるかどうかは問題ではないと述べています。

過度に網羅的ではないことを確認する1つの方法-おそらくこの回答でこの考え方を使用できた可能性があります-必要なときに必要なものだけを書くことです(同様の概念が開発全般に存在します)。もう 1 つの方法は、事前にすべてを理解しようとする必要はないことを全員に理解してもらうことです(ウォーターフォールからアジャイルへの最大の移行)。そして最後に、適用されなくなったものはすべて非推奨 (および削除) します...システムのドキュメントを一度見たことがありますが、システムを確認したとき、ドキュメントの半分は実際にはシステムに適用されていませんでした。

于 2013-03-17T16:32:48.940 に答える
1

製品が何をすべきかを説明したドキュメントがあるので、私はそれを最初のバックログとして使用し、作業を優先度の高いものから低いものの順に分割します。ピースの各セットは、反復中に処理されます。簡単に言えば、最初のドキュメントをバックログとしてスクラムを使用します。

この優先順位付けの作業を行わずに、すぐに実装に進むことはありません。多くの文章を書く必要はありませんが、取り組みたい部分をより多く参照する必要があります。

すべてを前もって文書化するつもりはありません。

さらに、取り組んでいるプラットフォームに直接関連するいくつかのタスクがあり、それらのタスクをキャプチャしてスプリント バックログに追加する必要があります。

また、数回繰り返した後にすべての要件を実装したくないことに気付くかもしれません。

于 2008-10-24T22:30:59.860 に答える