Improving Development Flow

Post on 20-May-2015

446 views 0 download

Tags:

description

Introductory material about development flow and software science. TOPICS - Technical Debt - DevOps - Lean Software Development - Software Quality - Clean Architecture - Gamification & Fun - Team Culture

Transcript of Improving Development Flow

IMPROVINGDEVELOPMENTFLOW

INTRODUCTORY MATERIAL

LEANPRINCIPLES

ELIMINATEWASTE

DEFERDECISIONS

360ºPANORAMA

BUILT-INQUALITY

DELIVERLEARN

LEANPRINCIPLES

ELIMINATEWASTE

DEFERDECISIONS

360ºPANORAMA

BUILT-INQUALITY

DEVOPS

ARCHITECTURE

MA

NA

GE

ME

NT

CO

DIN

G

DEVELOPMENT

FLOW

CLEANARCHITECTURE

LEANMANAGEMENT

SMARTOPERATIONS

TEAMCULTURE

BEAUTIFULCODE

MEASURABLEUX

Key Elements

PRESERVINGDEVELOPMENT FLOW

COST ($)

GOOD CODE

DIRTY CODE

TIME (⌚)

PRESERVINGDEVELOPMENT FLOW

DIRTY CODE

NO FUTUREBANKRUPTCY

REWRITEOPPORTUNITY

X

COST ($)

TIME (⌚)

PRESERVINGDEVELOPMENT FLOW

TIME

REMAININGWORK

PLANNEDRELEASE

FULL QUALITY RELEASE

TECHNICALDEBT

Pressure appliedRESULT

On time, On budgetCLAIM

Productivity improved

BOOST

FLUIDITY

ADAPTABILITY

SHRINK VISCOSITY

STAGNATION

PRESERVINGDEVELOPMENT FLOW

SOFTWAREQUALITY

PORTABILITY

MAINTAINABILITYEFFICIENCY

RELIABILITY

FUNCTIONALITY

USABILITY

INTERNALEXTERNALQUALITY

ISO9126

SOFTWARE COMPLEXITY

PROGRAMMER PROGRAM

coding testing

debugging modifying

DIFFICULTY

SOFTWAREMETRICS

SIZE Source Lines of Code - SLOC

METHODTest Code Coverage - TCC

Cyclomatic Complexity - CC

CLASS /MODULE

Comment Percentage - CP

Lack of Cohesion in Methods - LCOM

Coupling Between Object Classes - CBO

# Methods, Files, Classes &c.

SIZE

Less is more. Sometimes...

SIZE

ARTIFACTS

DEVELOPMENT RUNTIME

Disk

MemorySource code

DEPLOYMENT

Packages

Network

Feature creepPatchworkAutomated tools

Heavyweight frameworksCareless packaging

FATTENSOURCES

SOURCE CODESURFACE

SLOC

# CLASSES

# PACKAGES

METHODS

CYCLOMATICCOMPLEXITY

Number of independent execution paths

M = E - N + 2PWHERE

entry

for loop

exit

CYCLOMATICNUMBER E = # Edges

N = # NodesP = # Exit nodes

M = 5 - 5 + 2

1 2

3

4 5

CYCLOMATICNUMBER 2

1

2

3 5

4

CYCLOMATICNUMBER 2

1

10

5

SAFE

DANGEROUS

HIGHLYDANGEROUS

CATASTROPHIC

TEST CODECOVERAGE

COMPLIANCE LEVELSTest Effectiveness Ratio - TER

Statement

Control-flow branches

Linear Code Sequence and Jump - LCSAJ

TER1

TER2

TER3

CLASS / MODULE

FAN-IN FAN-OUT

CHILDREN

COUPLING

Depth of inheritance

The most effectively modular system is the one for which the sum of functional relatedness between pairs of elements not in the same module is minimized; among other things,this tends to minimize the required number of intermodular connections and the amount of intermodular coupling.

For each module in isolation, how tightly bound or related its internal elements are to one another.

Edward Yourdon & Larry L. ConstantineStructured Design

COHESION

EQUILIBRIUM

EQUILIBRIUMMulti-level

Quality & Planning

Key abstractionsWell defined boundariesClean interactions

SEMANTICS

FOCUS

Visualize project stateMinimize time-boxingAvoid isolation

Forget frameworks

EMBODIMENT

GET INTO

FLOW

State of mind in which awareness and action become one

HAVE

FUN

HARDFUN

SERIOUSFUN

ChallengeMasteryAccomplishment

PurposeFocus

Meaning

S.M.A.R.T GOALS

CELEBRATE

CO

NT

INU

OU

SR

EIN

FO

RC

EM

EN

T

CRITICALADVICE

PRACTICES ARE JUST MEANS TO

ACHIEVE GOALS

THANK YOU!