2009-04-10 12 views
10

アジャイルを使用している場合は、常に増分リファクタリングを行い、大きな技術的負債を積み上げることはありません。それは、技術的な借金がまともなソフトウェアを引き継いでいるアジャイルチームを持っていれば、それをどこかに収める必要があるということです。アジャイルのテクニカル債務の払い戻し

開発者のユーザーストーリーを作成してください。 。例えば 。開発者として

  • 我々は結石を交換して、より機敏なことができるので、私は開発者として配信
  • に自信を持っているので、私はビジネスロジックモジュールより50%のテストカバレッジを持っている、アプリケーションが依存性注入をサポートしています未来。

またはこのコード技術的負債

+0

、これは良い説明かもしれません:http://benlakey.com/2012/06/18/technical-debt/ –

+0

このような質問は、HTTPSで尋ねする必要があります。 //pm.stackexchange.com/ –

+0

この質問はhttps://pm.stackexchange.com/ –

答えて

6

アプリケーションが内部であるか、外部の顧客を持っているかをクリーンアップするための別のベストプラクティスはありますか?クライアントがあなたの仕事とアプリケーションのサポートにお金を払っている場合、あなたが提案したようなカードでサインオフするのは難しいかもしれません。

また、2枚目のカードのアイデアでは、「完了」とは何かを言うのは難しいかもしれません。

あなたの問題に対する具体的なアプローチは、不具合テストを行うことです - あなたがバグレポートを取得し、それを修正すると言ったカードを見積もると、同時に追加できるテストそれらは類似しているがカバレッジを増加

そして、あなたは、特にテスト中のプロジェクトを取得する方法についての技術的な詳細を要求していないが、あなたが実際にそれをやって始めると、この本は非常に有用である:Working Effectively with Legacy Code

+0

internalで尋ねる必要があるため、この質問を議論の対象外としています。私は顧客にサインオフすることに同意しますが、大きな仕事になる可能性があるので、スプリントで時間を作らなければならず、それらを非常に目立たせるようにしたいのです。 – leora

+0

私の編集を私の回答と見てください。バグ修正カードの見積もりに新しいものを設計することで、テストを追加することもできます。 – JeffH

1

私はアジャイルの環境で動作しますが、どこアジャイル技術が採用される前の数年間、現在のコードベースが存在していました。これは、自動回帰テストを念頭に置いて書かれていないコードの回りで、機敏なやり方で作業しようとすることにつながります。

テクニカル債務は、新機能をどれくらい迅速に提供できるかに影響するため、レガシーコードを使用したために追加された時間が記録されます。このデータにより、技術的負債の払い戻しに専念する時間を確保することができます。だから、顧客(マネージャー、CTO、または誰でも)が見積もりが高すぎると思っていると、あなたの立場を強化できるデータがあります。

当然のことながら、テクニカル債務を払い戻すためにがあったレガシーコードの予期しない癖のため、見積もりが終了することがあります。私たちは余分な時間を説明し、説明することができ、余分な時間を費やして利益を得ることができるのであれば、一般にかなり受け入れられていることが分かりました。

もちろん、YMMVは顧客やその他の要因に依存しますが、今後の技術的負債の影響を表す統計は非常に有用です。

0

私は、顧客がアプリケーションを使用することがどれほど長くなるかを尋ねることをお勧めします。アプリケーションの寿命が限られている場合(例えば、3年以下)、リファクタリングに多大な努力を払うことは意味がありません。寿命が長くなると予想される場合、リファクタリングの回収はずっと魅力的になります。

リファクタリングに投資するビジネスケースを作成することもできます。作成したい改善の種類の具体例を示します。コスト、リスク、期待した回収を正直に評価してください。他のメンバーとは独立して実装できる特定のリファクタリングを見つけて、その変更をリファクタリングプロセスの試行として承認するためにロビーにしてください。

返済について話すときは、特定の番号を指定する必要があります。 「バグを修正する方がずっと簡単だ」と言うだけでは不十分です。代わりに、「バグ修正のために最低30%の改善が見られる」、または「回帰が40%少なくなる」といったような言い方をする必要があります。また、管理者および/または顧客と交渉して、意味のある測定値が得られていることに同意し、リファクタリングの前後で測定値を提供するように準備する必要があります。

+0

このタイプの指標を取得するにはどうすればよいですか? – leora

+0

欠陥修正率を測定するには、1週間、1ヶ月または4分の1にわたって行われた修正の数を測定します。回帰率を測定するには、新たに報告された欠陥が以前の欠陥を修復しようと試みたかどうかを追跡する。これらは非常に粗い措置ですが、何の対策もしていないよりも優れています。 –

4

エンジニアリングプラクティスと技術的債務の区別が必要です。テスト駆動型開発と自動テストをプラクティスとして見る。

ウォーターフォールチームによって構築されたコード資産を使用したため、資産にはユニット、機能、またはパフォーマンスの自動テストが行​​われていませんでした。ソフトウェア資産の責任を負うと、Agileの製品オーナーを訓練し、使用するプラクティスを教えました。

慣行を使い始めると、技術的負債を特定し始めます。テクニカル・ストーリー・カードは、技術的な負債が特定されたときに書かれ、製品の所有者が製品のバックログに記録したものです。開発者とテスト担当者は、XPエンジニアリングプラクティス(TDD、自動テスト、ペアプログラミングなど)を使用してすべての作業を評価しました。これらのプラクティスは、TDD、自動化された機能とパフォーマンステストを通じてコードの脆弱性を特定しました。特に、自動化されたパフォーマンステストとプロファイリングにより、重要なパフォーマンスの問題が特定されました。債務は大きかったので、修正案に6回の反復を要すると見積もった。新機能が開発された場合、アプリケーションのパフォーマンスが低いため、ユーザーベースで使用できなくなる可能性があることを製品の所有者に通知しました。アプリを数百人のユーザーから数千人のユーザーに拡張する必要があることを考えると、製品の所有者はパフォーマンスの技術的債務を非常に高く設定していました。

メモ:ストーリーカードの見積もり内でリファクタリングによって解決できる技術的負債には、技術的ストーリーカードは必要ありません。より大きな技術的負債が実現する。テクニカルカードが必要な技術的債務については、ビジネスへの影響を特定し、製品の所有者にテクニカルカードの優先順位を付けるよう依頼します。それから、カードを作ってください。エンジニアリングのための技術的負債を作りません。エンジニアリング実務が見積りの一部となることを知っているすべての見積もりを行います。自動化されたユニット、機能、性能テストでアプリケーションを改造するためのカードを作成しないでください。代わりに、見積もっているカードにのみ作品を含め、作業中のカードを使ってタッチしたコードに自動テストを追加してください。これは、進行を止めることなく時間の経過と共に改善するアプリを可能にします。すべての名刺の追加を停止することは、アプリケーションの実行や拡張ができないなどの最も激しい状況の場合にのみ、保存する必要があります。

自動ユニット、機能、性能テストなしでコードベースを継承する場合、ビジネスパートナに悲しい状況を伝えます。仕事をどのように見積もるかを教えてください。エンジニアリングプラクティスを通じて発見された技術的負債を創出する。最後に、製品の所有者に、ユニット、機能、性能の自動化されたテストにより、コードベースの多くが触れられるにつれて、チームの速度が向上することを伝えました。

1

技術的負債を削減することは、コードを提出するたびに誰もがすべきことです。

コードを編集するときは、キャンプ場を出る前にスカウトのようにちょっと整理してください。

このようにして、変更が頻繁に行われるコードはより良い形になり、ビジネスにも役立ちます。

変更されないコードは改善されませんが、それが機能するのであれば、再びそれを行う必要がありますか?

問題を議論するフォーラムのように、長期的な計画が役立ちますが、タスクをスケジュールしないでください。

非常に大きなプロジェクトでは、何らかのロックスキームが役立ち、2人のコーダーが同じコードを同期せずに同時にリファクタリングすることはありません。技術的負債をよく知らない人のために

/ロジャー・

関連する問題