engineering software and software lifecycle

96
Engineering Software & Software Lifecycle

Upload: keith-mitchell

Post on 15-Jul-2015

419 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Engineering Software and Software Lifecycle

Engineering Software&Software Lifecycle

Page 2: Engineering Software and Software Lifecycle

Talking & Videos

Q&A (jump in anytime)

www.slideshare.net/specialised

Page 3: Engineering Software and Software Lifecycle

Keith MitchellGroup Engineering Manager, Future Media Sportt: @specializede : [email protected]

Page 4: Engineering Software and Software Lifecycle

Lancaster University1994 - 1997 - Undergraduate1997 - 2011 - PhD & Research Fellow

BBC Future Media2011+

Page 5: Engineering Software and Software Lifecycle
Page 6: Engineering Software and Software Lifecycle

NEWS

LIVEWEATHER

SEARCH

HOMEPAGEABOUT THE BBC

TRAVEL

MUSIC

Bitesize

ARTS

FOOD

NEWSBEAT

PROGRAMMES

Radio

Page 7: Engineering Software and Software Lifecycle

SPORT

Page 8: Engineering Software and Software Lifecycle
Page 9: Engineering Software and Software Lifecycle
Page 10: Engineering Software and Software Lifecycle
Page 11: Engineering Software and Software Lifecycle
Page 12: Engineering Software and Software Lifecycle
Page 13: Engineering Software and Software Lifecycle
Page 14: Engineering Software and Software Lifecycle

96 millionBrazil World Cup - The Open Championship(12 June - 20 July)

Page 15: Engineering Software and Software Lifecycle

77.6 million (June)Biggest month in our entire historybit.ly/BBCSportRecord

Page 16: Engineering Software and Software Lifecycle

Engineering Software&Software Lifecycle

Will cover People & Technology

Page 17: Engineering Software and Software Lifecycle

Programming is easy

software development (and engineering) is hard

Page 18: Engineering Software and Software Lifecycle
Page 19: Engineering Software and Software Lifecycle
Page 20: Engineering Software and Software Lifecycle

before we see why its hard to engineer software

lets cover the basics

Page 21: Engineering Software and Software Lifecycle

Agile

Page 22: Engineering Software and Software Lifecycle

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

Page 23: Engineering Software and Software Lifecycle
Page 24: Engineering Software and Software Lifecycle

scrum, the basics

https://www.youtube.com/watch?v=vmGMpME_phg

Page 25: Engineering Software and Software Lifecycle

product owner

technical project manager

business analysts

dev/engineering team

test

Page 26: Engineering Software and Software Lifecycle

Title Text

Page 27: Engineering Software and Software Lifecycle

estimation (Tee/poker/points/relative)planningvelocity - burnup and burn-downstand-up / retrospectives

Page 28: Engineering Software and Software Lifecycle

Any questions ?

Page 29: Engineering Software and Software Lifecycle

So....... how do we do it? And ....

... why is it so hard?

Page 30: Engineering Software and Software Lifecycle

We talk alot

Page 31: Engineering Software and Software Lifecycle

Many stakeholders

Page 32: Engineering Software and Software Lifecycle

AGILE process

EPICs & Initial User Stories Estimation

Expand Stories

Business AnalysisTech Investigation

Identify dependanciesTech Architecture

Designs

Sprint Planning3 Amigos

Daily Standups

BuildDaily StandupsShow and TellRetrospective

Deploy

Page 33: Engineering Software and Software Lifecycle
Page 34: Engineering Software and Software Lifecycle

The team

Communication (Tickets)

Ceremonies

Page 35: Engineering Software and Software Lifecycle

we use of patterns / processes

Page 36: Engineering Software and Software Lifecycle

Behaviour driven development

test driven development

Page 37: Engineering Software and Software Lifecycle

BDD at the BBChttp://tinyurl.com/pn4hhth

Page 39: Engineering Software and Software Lifecycle

Ruby & PHP App

Moving to Client-side JS

Cucumber worked for a while...

Page 40: Engineering Software and Software Lifecycle

BA (& dev) driven change

It Should over Given, When, Then scenarios

Page 41: Engineering Software and Software Lifecycle

Should ITgithub.com/bbc-sport/ShouldIT

Page 42: Engineering Software and Software Lifecycle
Page 43: Engineering Software and Software Lifecycle

BDD + TDD

Living documentation (organic)You know when you are doneHelps drive the designReliable and tested product

Page 44: Engineering Software and Software Lifecycle

Agile SCRUM or Kanban 3 Amigos Definition of Ready Definition of Done (DoD)

Dev Practices Behaviour and Test Driven Version Control (branch, release, trunk) Continuous Integration Testing and Tooling

Page 45: Engineering Software and Software Lifecycle

Summary

Deliver value early Generalists v Specialists & CommsIncremental & Working - Stop at any timeHandle change - e.g. diff colourLess wasteFaster

Page 46: Engineering Software and Software Lifecycle

Intermission?

Digital Media Graduate Scheme - Now Open!

http://www.bbc.co.uk/careers/trainee-schemes-and-apprenticeships/technology/digital-media-

Page 47: Engineering Software and Software Lifecycle

Engineering Excellence

Page 48: Engineering Software and Software Lifecycle

the day in the life of

bbc.co.uk/academy/technology/software-engineering

Page 50: Engineering Software and Software Lifecycle

int test stage live

as live production

Dev

Developer

Operations

sandbox

shared platform

rpm rpm

A Sport Engineer

rpm

rpm rpm

done

must be stable & trustable

Audience

bbc.co.uk/developer

Page 51: Engineering Software and Software Lifecycle

int test stage live

as live production

Dev

Developer

Operations

sandbox

shared platform

NEWSSPORT HOMEPAGE

rpm rpm

A Sport Engineer

rpm

rpm rpm

done

must be stable & trustable

Audience

bbc.co.uk/developer

Page 52: Engineering Software and Software Lifecycle

Standard ServicesMessage QueuesDatastoresKey/Value Store

Generic ServicesBBC iD / Media Players

FrameworksMast Head / Analytics / Logging / Monitoring

Greenhousesecure/shared dev environmentEclipse / NetBeans / Sublime / TextMate / IDE / PHPStorm / WebStormSandbox - VMGitHub

Hudson / Jenkins (CI)Maven (Project Object Models)

Confluence (wiki)JIRA (tickets) LAMP

Linux/Apache/MySQL/PHP- but no MySQL directly

bbc.co.uk/developer

Page 53: Engineering Software and Software Lifecycle

bbc.co.uk/developer

ReactJSAngularJSAjaxHTMLCSSPHP (Zend)Java (Spring)RESTful APIsSQL / RDF / JSON / XML

Page 54: Engineering Software and Software Lifecycle

Engineering Excellence and ‘4 Good Things’ (TM)

Meaningful code reviews

Developers being accountable for non-functional requirements(DoD, NFR checklist)

Continuous integration

Automated acceptance testing

Page 55: Engineering Software and Software Lifecycle

Meaningful code reviews

Page 56: Engineering Software and Software Lifecycle
Page 57: Engineering Software and Software Lifecycle

“You know you are working on clean code when each routine you read turns out to be pretty much what you expected...”

-- Ward Cunningham

Page 58: Engineering Software and Software Lifecycle

Bad code is easy to recognize.

Clean code is hard to write.It requires discipline, courage, and skill.

Some of us are born with “Code-Sense”.Others have to fight to acquire it.

Page 59: Engineering Software and Software Lifecycle

reveal your intent

int d; // elapsed time in days

int elapsedTimeInDays;

reading code

Page 60: Engineering Software and Software Lifecycle

This code isn’t complicatedBUTnot explicitreveals no intent

Page 61: Engineering Software and Software Lifecycle

This code isn’t complicatedBUTnot explicitreveals no intent

Page 62: Engineering Software and Software Lifecycle
Page 63: Engineering Software and Software Lifecycle

Functions

do one thing

do it well

Page 64: Engineering Software and Software Lifecycle

code reviews

Page 65: Engineering Software and Software Lifecycle

Why?

Page 66: Engineering Software and Software Lifecycle

improve qualityclarityverification & validationknow your code base / commsknowledge sharingcollaborativementoringshare best practiceconsistency / standardsinsigtfulincrease confidenceaudit trail

Page 67: Engineering Software and Software Lifecycle

What and How?

pair programmingpull requests

Page 68: Engineering Software and Software Lifecycle

What and How?

part of workflowcode smells

Page 69: Engineering Software and Software Lifecycle

Consistent feature filesLinting - PHP/js/html/Exception & Error handling LoggingAnalyticsMonitoringCacheable

Page 70: Engineering Software and Software Lifecycle

Duplicated CodeUse extract or pull up patterns to refactorand keep the camp clean!

Method/Function LengthLong methods/functionsLarge Classes (with lots of instance variables)Long Param lists & Long message chains

Page 71: Engineering Software and Software Lifecycle

Feature Envyshowing too much interest in other classesInvoking methods on objects to calculate values

Switch statementsthese are bad

Page 72: Engineering Software and Software Lifecycle

version controljust use it!

Page 73: Engineering Software and Software Lifecycle

Developers being accountable for Non functional Requirements

Page 74: Engineering Software and Software Lifecycle

NFRs part ofdefinition of done

Page 75: Engineering Software and Software Lifecycle

what are NFRs

Page 76: Engineering Software and Software Lifecycle

PerformanceScalabilityAvailability / survivabilitySecurityConsistency / reliablityMonitoringReliability / ResilienceFailover/disaster recoveryInteroperabilityUKFS / IFS / editions / localisationAccessibility24/7 Operational Support

Page 77: Engineering Software and Software Lifecycle

Are they really NFRs?

Could they be functional?

Page 78: Engineering Software and Software Lifecycle

e.g. Performance

Page weightLoad time (timeline)Time to glass/first byte (TTG/TTFB)

Page 79: Engineering Software and Software Lifecycle

e.g. accessibility

remember Ian’s talkwe can measure / automate

Page 80: Engineering Software and Software Lifecycle

make ‘em functional

make ‘em testable!

Page 81: Engineering Software and Software Lifecycle
Page 82: Engineering Software and Software Lifecycle

Continuous integration

Page 83: Engineering Software and Software Lifecycle

hudson / jenkinsBuild the system on commit and/or nightly

Page 84: Engineering Software and Software Lifecycle
Page 85: Engineering Software and Software Lifecycle

Automated acceptancetesting

Page 86: Engineering Software and Software Lifecycle

we test (almost) everything

we automate (almost) everything

Page 87: Engineering Software and Software Lifecycle
Page 88: Engineering Software and Software Lifecycle
Page 89: Engineering Software and Software Lifecycle

viewporterhttp://bit.ly/I7xZSv

Page 90: Engineering Software and Software Lifecycle
Page 91: Engineering Software and Software Lifecycle

wraithhttps://github.com/BBC-News/wraith

Page 92: Engineering Software and Software Lifecycle

livesandbox diff

Page 93: Engineering Software and Software Lifecycle

when things go bad

no blamejust cake (or donuts)

Page 94: Engineering Software and Software Lifecycle

Programming is easy

software development (and engineering) is hard

BUT

it’s fun / collaborative / rewarding / character building / ……

Page 96: Engineering Software and Software Lifecycle

Thanks for your timeKeith MitchellGroup Engineering Managert: @specialized | e : [email protected]

BBC Digital Media Graduate Schemehttp://www.bbc.co.uk/careers/trainee-schemes-and-apprenticeships/technology/digital-media-graduate-scheme