engineering software and software lifecycle
TRANSCRIPT
![Page 1: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/1.jpg)
Engineering Software&Software Lifecycle
![Page 2: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/2.jpg)
Talking & Videos
Q&A (jump in anytime)
www.slideshare.net/specialised
![Page 3: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/3.jpg)
Keith MitchellGroup Engineering Manager, Future Media Sportt: @specializede : [email protected]
![Page 4: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/4.jpg)
Lancaster University1994 - 1997 - Undergraduate1997 - 2011 - PhD & Research Fellow
BBC Future Media2011+
![Page 5: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/5.jpg)
![Page 6: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/6.jpg)
NEWS
LIVEWEATHER
SEARCH
HOMEPAGEABOUT THE BBC
TRAVEL
MUSIC
Bitesize
ARTS
FOOD
NEWSBEAT
PROGRAMMES
Radio
![Page 7: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/7.jpg)
SPORT
![Page 8: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/8.jpg)
![Page 9: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/9.jpg)
![Page 10: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/10.jpg)
![Page 11: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/11.jpg)
![Page 12: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/12.jpg)
![Page 13: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/13.jpg)
![Page 14: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/14.jpg)
96 millionBrazil World Cup - The Open Championship(12 June - 20 July)
![Page 15: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/15.jpg)
77.6 million (June)Biggest month in our entire historybit.ly/BBCSportRecord
![Page 16: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/16.jpg)
Engineering Software&Software Lifecycle
Will cover People & Technology
![Page 17: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/17.jpg)
Programming is easy
software development (and engineering) is hard
![Page 18: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/18.jpg)
![Page 19: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/19.jpg)
![Page 20: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/20.jpg)
before we see why its hard to engineer software
lets cover the basics
![Page 21: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/21.jpg)
Agile
![Page 22: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/22.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/23.jpg)
![Page 24: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/24.jpg)
scrum, the basics
https://www.youtube.com/watch?v=vmGMpME_phg
![Page 25: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/25.jpg)
product owner
technical project manager
business analysts
dev/engineering team
test
![Page 26: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/26.jpg)
Title Text
![Page 27: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/27.jpg)
estimation (Tee/poker/points/relative)planningvelocity - burnup and burn-downstand-up / retrospectives
![Page 28: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/28.jpg)
Any questions ?
![Page 29: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/29.jpg)
So....... how do we do it? And ....
... why is it so hard?
![Page 30: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/30.jpg)
We talk alot
![Page 31: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/31.jpg)
Many stakeholders
![Page 32: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/32.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/33.jpg)
![Page 34: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/34.jpg)
The team
Communication (Tickets)
Ceremonies
![Page 35: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/35.jpg)
we use of patterns / processes
![Page 36: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/36.jpg)
Behaviour driven development
test driven development
![Page 39: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/39.jpg)
Ruby & PHP App
Moving to Client-side JS
Cucumber worked for a while...
![Page 40: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/40.jpg)
BA (& dev) driven change
It Should over Given, When, Then scenarios
![Page 41: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/41.jpg)
Should ITgithub.com/bbc-sport/ShouldIT
![Page 42: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/42.jpg)
![Page 43: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/43.jpg)
BDD + TDD
Living documentation (organic)You know when you are doneHelps drive the designReliable and tested product
![Page 44: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/44.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/45.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/46.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/47.jpg)
Engineering Excellence
![Page 48: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/48.jpg)
the day in the life of
bbc.co.uk/academy/technology/software-engineering
![Page 49: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/49.jpg)
![Page 50: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/50.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/51.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/52.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/53.jpg)
bbc.co.uk/developer
ReactJSAngularJSAjaxHTMLCSSPHP (Zend)Java (Spring)RESTful APIsSQL / RDF / JSON / XML
![Page 54: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/54.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/55.jpg)
Meaningful code reviews
![Page 56: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/56.jpg)
![Page 57: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/57.jpg)
“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](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/58.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/59.jpg)
reveal your intent
int d; // elapsed time in days
int elapsedTimeInDays;
reading code
![Page 60: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/60.jpg)
This code isn’t complicatedBUTnot explicitreveals no intent
![Page 61: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/61.jpg)
This code isn’t complicatedBUTnot explicitreveals no intent
![Page 62: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/62.jpg)
![Page 63: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/63.jpg)
Functions
do one thing
do it well
![Page 64: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/64.jpg)
code reviews
![Page 65: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/65.jpg)
Why?
![Page 66: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/66.jpg)
improve qualityclarityverification & validationknow your code base / commsknowledge sharingcollaborativementoringshare best practiceconsistency / standardsinsigtfulincrease confidenceaudit trail
![Page 67: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/67.jpg)
What and How?
pair programmingpull requests
![Page 68: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/68.jpg)
What and How?
part of workflowcode smells
![Page 69: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/69.jpg)
Consistent feature filesLinting - PHP/js/html/Exception & Error handling LoggingAnalyticsMonitoringCacheable
![Page 70: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/70.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/71.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/72.jpg)
version controljust use it!
![Page 73: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/73.jpg)
Developers being accountable for Non functional Requirements
![Page 74: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/74.jpg)
NFRs part ofdefinition of done
![Page 75: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/75.jpg)
what are NFRs
![Page 76: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/76.jpg)
PerformanceScalabilityAvailability / survivabilitySecurityConsistency / reliablityMonitoringReliability / ResilienceFailover/disaster recoveryInteroperabilityUKFS / IFS / editions / localisationAccessibility24/7 Operational Support
![Page 77: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/77.jpg)
Are they really NFRs?
Could they be functional?
![Page 78: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/78.jpg)
e.g. Performance
Page weightLoad time (timeline)Time to glass/first byte (TTG/TTFB)
![Page 79: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/79.jpg)
e.g. accessibility
remember Ian’s talkwe can measure / automate
![Page 80: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/80.jpg)
make ‘em functional
make ‘em testable!
![Page 81: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/81.jpg)
![Page 82: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/82.jpg)
Continuous integration
![Page 83: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/83.jpg)
hudson / jenkinsBuild the system on commit and/or nightly
![Page 84: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/84.jpg)
![Page 85: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/85.jpg)
Automated acceptancetesting
![Page 86: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/86.jpg)
we test (almost) everything
we automate (almost) everything
![Page 87: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/87.jpg)
![Page 88: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/88.jpg)
![Page 90: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/90.jpg)
![Page 91: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/91.jpg)
wraithhttps://github.com/BBC-News/wraith
![Page 92: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/92.jpg)
livesandbox diff
![Page 93: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/93.jpg)
when things go bad
no blamejust cake (or donuts)
![Page 94: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/94.jpg)
Programming is easy
software development (and engineering) is hard
BUT
it’s fun / collaborative / rewarding / character building / ……
![Page 95: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/95.jpg)
You & the art of engineering
teamno ‘I’ in team
test firstTDD / BDD
toolsGitOpen Source
textsUncle Bob MartinMartin FowlerGOFKent Beck
![Page 96: Engineering Software and Software Lifecycle](https://reader034.vdocument.in/reader034/viewer/2022051315/55a60f141a28abc6418b46d0/html5/thumbnails/96.jpg)
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