Download - Engineering Software and Software Lifecycle
Engineering Software&Software Lifecycle
Talking & Videos
Q&A (jump in anytime)
www.slideshare.net/specialised
Keith MitchellGroup Engineering Manager, Future Media Sportt: @specializede : [email protected]
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
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
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 / ……
You & the art of engineering
teamno ‘I’ in team
test firstTDD / BDD
toolsGitOpen Source
textsUncle Bob MartinMartin FowlerGOFKent Beck
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