Engineering Software and Software Lifecycle

Preview:

Citation preview

Engineering Software&Software Lifecycle

Talking & Videos

Q&A (jump in anytime)

www.slideshare.net/specialised

Keith MitchellGroup Engineering Manager, Future Media Sportt: @specializede : keith.mitchell@bbc.co.uk

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

BBC Future Media2011+

NEWS

LIVEWEATHER

SEARCH

HOMEPAGEABOUT THE BBC

TRAVEL

MUSIC

Bitesize

ARTS

FOOD

NEWSBEAT

PROGRAMMES

Radio

SPORT

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

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

Engineering Software&Software Lifecycle

Will cover People & Technology

Programming is easy

software development (and engineering) is hard

before we see why its hard to engineer software

lets cover the basics

Agile

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

scrum, the basics

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

product owner

technical project manager

business analysts

dev/engineering team

test

Title Text

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

Any questions ?

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

... why is it so hard?

We talk alot

Many stakeholders

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

The team

Communication (Tickets)

Ceremonies

we use of patterns / processes

Behaviour driven development

test driven development

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

Ruby & PHP App

Moving to Client-side JS

Cucumber worked for a while...

BA (& dev) driven change

It Should over Given, When, Then scenarios

Should ITgithub.com/bbc-sport/ShouldIT

BDD + TDD

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

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

Summary

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

Intermission?

Digital Media Graduate Scheme - Now Open!

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

Engineering Excellence

the day in the life of

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

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

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

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

bbc.co.uk/developer

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

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

Meaningful code reviews

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

-- Ward Cunningham

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.

reveal your intent

int d; // elapsed time in days

int elapsedTimeInDays;

reading code

This code isn’t complicatedBUTnot explicitreveals no intent

This code isn’t complicatedBUTnot explicitreveals no intent

Functions

do one thing

do it well

code reviews

Why?

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

What and How?

pair programmingpull requests

What and How?

part of workflowcode smells

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

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

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

Switch statementsthese are bad

version controljust use it!

Developers being accountable for Non functional Requirements

NFRs part ofdefinition of done

what are NFRs

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

Are they really NFRs?

Could they be functional?

e.g. Performance

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

e.g. accessibility

remember Ian’s talkwe can measure / automate

make ‘em functional

make ‘em testable!

Continuous integration

hudson / jenkinsBuild the system on commit and/or nightly

Automated acceptancetesting

we test (almost) everything

we automate (almost) everything

viewporterhttp://bit.ly/I7xZSv

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

livesandbox diff

when things go bad

no blamejust cake (or donuts)

Programming is easy

software development (and engineering) is hard

BUT

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

Thanks for your timeKeith MitchellGroup Engineering Managert: @specialized | e : keith.mitchell@bbc.co.uk

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

Recommended