Improving Development Flow
description
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!