Improving Development Flow

29
IMPROVING DEVELOPMENT FLOW INTRODUCTORY MATERIAL

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

Page 1: Improving Development Flow

IMPROVINGDEVELOPMENTFLOW

INTRODUCTORY MATERIAL

Page 2: Improving Development Flow

LEANPRINCIPLES

ELIMINATEWASTE

DEFERDECISIONS

360ºPANORAMA

BUILT-INQUALITY

DELIVERLEARN

Page 3: Improving Development Flow

LEANPRINCIPLES

ELIMINATEWASTE

DEFERDECISIONS

360ºPANORAMA

BUILT-INQUALITY

DEVOPS

ARCHITECTURE

MA

NA

GE

ME

NT

CO

DIN

G

Page 4: Improving Development Flow

DEVELOPMENT

FLOW

CLEANARCHITECTURE

LEANMANAGEMENT

SMARTOPERATIONS

TEAMCULTURE

BEAUTIFULCODE

MEASURABLEUX

Key Elements

Page 5: Improving Development Flow

PRESERVINGDEVELOPMENT FLOW

COST ($)

GOOD CODE

DIRTY CODE

TIME (⌚)

Page 6: Improving Development Flow

PRESERVINGDEVELOPMENT FLOW

DIRTY CODE

NO FUTUREBANKRUPTCY

REWRITEOPPORTUNITY

X

COST ($)

TIME (⌚)

Page 7: Improving Development Flow

PRESERVINGDEVELOPMENT FLOW

TIME

REMAININGWORK

PLANNEDRELEASE

FULL QUALITY RELEASE

TECHNICALDEBT

Pressure appliedRESULT

On time, On budgetCLAIM

Productivity improved

Page 8: Improving Development Flow

BOOST

FLUIDITY

ADAPTABILITY

SHRINK VISCOSITY

STAGNATION

PRESERVINGDEVELOPMENT FLOW

Page 9: Improving Development Flow

SOFTWAREQUALITY

PORTABILITY

MAINTAINABILITYEFFICIENCY

RELIABILITY

FUNCTIONALITY

USABILITY

INTERNALEXTERNALQUALITY

ISO9126

Page 10: Improving Development Flow

SOFTWARE COMPLEXITY

PROGRAMMER PROGRAM

coding testing

debugging modifying

DIFFICULTY

Page 11: Improving Development Flow

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.

Page 12: Improving Development Flow

SIZE

Less is more. Sometimes...

Page 13: Improving Development Flow

SIZE

ARTIFACTS

DEVELOPMENT RUNTIME

Disk

MemorySource code

DEPLOYMENT

Packages

Network

Feature creepPatchworkAutomated tools

Heavyweight frameworksCareless packaging

FATTENSOURCES

Page 14: Improving Development Flow

SOURCE CODESURFACE

SLOC

# CLASSES

# PACKAGES

Page 15: Improving Development Flow

METHODS

Page 16: Improving Development Flow

CYCLOMATICCOMPLEXITY

Number of independent execution paths

Page 17: Improving Development Flow

M = E - N + 2PWHERE

entry

for loop

exit

CYCLOMATICNUMBER E = # Edges

N = # NodesP = # Exit nodes

Page 18: Improving Development Flow

M = 5 - 5 + 2

1 2

3

4 5

CYCLOMATICNUMBER 2

1

2

3 5

4

Page 19: Improving Development Flow

CYCLOMATICNUMBER 2

1

10

5

SAFE

DANGEROUS

HIGHLYDANGEROUS

CATASTROPHIC

Page 20: Improving Development Flow

TEST CODECOVERAGE

COMPLIANCE LEVELSTest Effectiveness Ratio - TER

Statement

Control-flow branches

Linear Code Sequence and Jump - LCSAJ

TER1

TER2

TER3

Page 21: Improving Development Flow

CLASS / MODULE

Page 22: Improving Development Flow

FAN-IN FAN-OUT

CHILDREN

COUPLING

Depth of inheritance

Page 23: Improving Development Flow

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

Page 24: Improving Development Flow

EQUILIBRIUM

Page 25: Improving Development Flow

EQUILIBRIUMMulti-level

Quality & Planning

Key abstractionsWell defined boundariesClean interactions

SEMANTICS

FOCUS

Visualize project stateMinimize time-boxingAvoid isolation

Forget frameworks

EMBODIMENT

Page 26: Improving Development Flow

GET INTO

FLOW

State of mind in which awareness and action become one

Page 27: Improving Development Flow

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

Page 28: Improving Development Flow

CRITICALADVICE

PRACTICES ARE JUST MEANS TO

ACHIEVE GOALS

Page 29: Improving Development Flow

THANK YOU!