Disciplined agile reuse engineering

24
© Disciplined Agile Consortium 1 Disciplined Agile Reuse Engineering

Transcript of Disciplined agile reuse engineering

Page 1: Disciplined agile reuse engineering

© Disciplined Agile Consortium 1

Disciplined Agile Reuse Engineering

Page 2: Disciplined agile reuse engineering

Agenda

•  Fundamentals –  What is reuse engineering? –  Why reuse engineering? –  What can you reuse? –  How do you know something is reusable? –  The not invented here (NIH) syndrome –  Where do reusable assets come from?

•  How does reuse engineering fit into agile software delivery?

•  Reuse engineering in practice –  What do reuse engineers do? –  How can you support and evolve reusable

assets over time? –  How do you fund reuse? –  Why is reuse engineering difficult?

© Disciplined Agile Consortium 2

Page 3: Disciplined agile reuse engineering

Fundamentals © Disciplined Agile Consortium 3

Page 4: Disciplined agile reuse engineering

© Disciplined Agile Consortium 4

Reuse Engineering is the purposeful creation (or rescue), management, support, and governance of reusable assets.

Page 5: Disciplined agile reuse engineering

Why Reuse Engineering?

•  There are many reasons to consider reuse engineering: –  Quicker time to market –  Improved ROI –  Improved consistency –  Easier updates to common functionality –  Improved quality

•  There are a few reasons to not consider reuse engineering: –  It requires discipline –  It requires long-term funding

© Disciplined Agile Consortium 5

Page 6: Disciplined agile reuse engineering

What Can You Reuse?

© Disciplined Agile Consortium 6

Page 7: Disciplined agile reuse engineering

When Do You Know Something is Reusable?

•  Some definitions: –  Asset: An artifact that is retained after its initial purpose is fulfilled –  Robust asset: An asset that is appropriately documented and

generalized beyond the needs of a single team –  Reusable asset: An asset that has been reused at least three times in

three different contexts –  Reuseless asset: An asset that has been declared reusable but after

consideration by other teams has not actually been reused in practice

© Disciplined Agile Consortium 7

An asset isn’t reusable because you say so,

it’s reusable because it’s being reused

Page 8: Disciplined agile reuse engineering

The Not Invented Here (NIH) Syndrome

© Disciplined Agile Consortium 8

•  Myth –  Developers won’t reuse something that they

didn’t create themselves

•  Facts –  Developers reuse things all the time

–  Developers are eager to reuse high-quality assets that are consumable (the assets meet their needs and they’re easy to work with)

–  Many times the creators of reuseless artifacts blame the NIH syndrome when their artifacts aren’t considered consumable by others

Page 9: Disciplined agile reuse engineering

How does Reuse Engineering Fit In?

© Disciplined Agile Consortium 9

Page 10: Disciplined agile reuse engineering

Strategic Scaling: The Agile IT Department

© Disciplined Agile Consortium 10

Page 11: Disciplined agile reuse engineering

© Disciplined Agile Consortium 11

Page 12: Disciplined agile reuse engineering

Reuse Engineering in Practice

© Disciplined Agile Consortium 12

Page 13: Disciplined agile reuse engineering

What do Reuse Engineers Do?

© Disciplined Agile Consortium 13

Page 14: Disciplined agile reuse engineering

Where Do Reusable Assets Come From?

•  There are several sources for reusable assets: –  Harvested assets

•  Asset is already in use •  Asset will need to be generalized and then

reintegrated into source solution •  The reuse team needs to take over

ownership of the asset –  Purchased/downloaded assets

•  Lower cost of support and evolution •  Asset may evolve in a direction that you

don’t like •  Marketplace support for asset may

disappear –  Built for reuse

•  Hard to predict what others will want •  Much more expensive to build something to

be reusable © Disciplined Agile Consortium 14

Page 15: Disciplined agile reuse engineering

How Can You Support and Evolve Reusable Assets Over Time? •  Reusable assets:

–  Live beyond the life of a project –  Are used by multiple teams in different contexts –  Are used by teams with evolving requirements –  Are implemented using evolving technologies –  Are deployed onto evolving platforms

•  To support and evolve reusable assets, they need: –  To be findable –  Funding that isn’t tied to projects –  To be documented –  To have examples of how to use them in practice –  To have feedback mechanisms in place –  To be versioned and deprecated appropriately

© Disciplined Agile Consortium 15

Page 16: Disciplined agile reuse engineering

Why is Reuse Engineering Hard?

•  What other teams want, particularly in the future, isn’t always obvious

•  There is a greater impact when a reused asset breaks •  Teams must go beyond source-code reuse •  Reuse requires enterprise awareness •  Reuse requires investment •  Your approach to funding will make or break reuse

© Disciplined Agile Consortium 16

Page 17: Disciplined agile reuse engineering

How do You Fund Reuse?

© Disciplined Agile Consortium 17

•  There are several ways to fund reuse engineering: –  Funded reuse engineering team: Explicit reuse team exists –  Asset-level funding: The creation, support, and evolution of an asset

is explicitly budgeted for –  Development team-based funding: Team budgets include funding for

reuse –  No explicit funding: Reuse is ad hoc –  Charge-back funding: Assets are funded by charging teams to reuse

them

Page 18: Disciplined agile reuse engineering

© Disciplined Agile Consortium 18

Page 19: Disciplined agile reuse engineering

What do Reuse Engineers Do?

© Disciplined Agile Consortium 19

Page 20: Disciplined agile reuse engineering

Strategic Scaling: The Agile IT Department

© Disciplined Agile Consortium 20

Page 21: Disciplined agile reuse engineering

© Disciplined Agile Consortium 21

Page 22: Disciplined agile reuse engineering

Got Discipline? DisciplinedAgileConsortium.org

DisciplinedAgileDelivery.com ScottAmbler.com

© Disciplined Agile Consortium 22

Page 23: Disciplined agile reuse engineering

Shuhari and Disciplined Agile Certification

At the shu stage you are beginning to learn the techniques and philosophies of

disciplined agile development. Your goal is to build a strong foundation from

which to build upon.

At the ha stage you reflect upon and question why disciplined agile strategies work, seeking to understand the range

of strategies available to you and when they are best applied.

At the ri stage you seek to extend and

improve upon disciplined agile techniques, sharing your learnings with

others.

© Disciplined Agile Consortium 23

Page 24: Disciplined agile reuse engineering

Scott Ambler + Associates is the thought leader behind the Disciplined Agile Delivery (DAD) framework and its application. We are an IT

management consulting firm that advises organizations to be more effective applying disciplined agile and lean processes within the

context of your business.

Our website is ScottAmbler.com We can help

© Disciplined Agile Consortium