josh bloch charlie garrod darya melichercharlie/courses/17-214/... · 11/27/2018  · devops...

30
1 17-214 Principles of So3ware Construc9on: Objects, Design, and Concurrency So3ware engineering in prac9ce Configura9on management and version control systems Josh Bloch Charlie Garrod Darya Melicher

Upload: others

Post on 08-Jul-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

1 17-214

PrinciplesofSo3wareConstruc9on: Objects,Design,andConcurrencySo3wareengineeringinprac9ceConfigura9onmanagementandversioncontrolsystemsJoshBlochCharlieGarrodDaryaMelicher

Page 2: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

2 17-214

Administrivia

•  Homework6duenextWednesday–  CheckpointdeadlineMondaynight

Page 3: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

3 17-214

KeyconceptsfromThanksgiving

Page 4: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

4 17-214

KeyconceptsfromlastTuesday

Page 5: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

5 17-214

Streamsdesigndiscussion

•  RecallthefundamentalAPIdesignprinciples…

Page 6: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

6 17-214

Majortopicsin17-313(Founda9onsofSE)

•  Processconsidera9onsforso3waredevelopment•  Requirementselicita9on,documenta9on,andevalua9on•  Designforqualitya[ributes•  Strategiesforqualityassurance•  Empiricalmethodsinso3wareengineering•  Timeandteammanagement•  Economicsofso3waredevelopment

Page 7: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

7 17-214

Test-drivendevelopment(TDD),informally

Page 8: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

8 17-214

Empiricalmethodsinso3wareengineering

•  Howdowestudytheeffec9venessoftest-drivendevelopmentcomparedtoothermethodologies?

Page 9: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

9 17-214

Thisweek:DevOps(Developmentopera9ons)

•  Introduc9ontodevops•  Configura9onmanagementandversioncontrol

Page 10: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

10 17-214

Consider:9melinesoftradi9onalso3waredevelopment

Source:ByPaulire-Ownwork,CCBY-SA4.0,h[ps://commons.wikimedia.org/w/index.php?curid=46634740

e.g.,theMicroso3*OSdevelopmenthistory

Page 11: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

11 17-214

ComparetotheUbuntureleasecycle

Page 12: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

12 17-214

ComparetotheFacebookreleasecycle

Page 13: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

13 17-214

DevOps:Development/Opera9ons

Page 14: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

14 17-214

DevOpstoolchain

•  Code:codedevelopmentandreview,sourcecodemanagementtools

•  Build:con9nuousintegra9ontools,buildstatus•  Test:con9nuoustes9ngtoolsprovidefeedback•  Package:ar9factrepository,applica9onpre-deploymentstaging

Page 15: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

15 17-214

DevOpsecosystems…

Page 16: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

16 17-214

Consider:Con9nuousintegra9on(CI)

•  AdvantagesanddisadvantagesofCI?

Page 17: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

17 17-214

Real-worldso3waredevelopmentchallenges

•  Imagine:Youdiscoverabuginversion8.2.4ofyourso3ware–  Youwanttodiscover,fix,anddeployupdatestooldversions–  Youwanttofixthebugfornewversionsinongoingdevelopment

Page 18: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

18 17-214

Configura9onmanagement(CM)

•  Defini9on(Pressman):Configura*onmanagement“isasetoftrackingandcontrolac*vi*esthatareini*atedwhenaso9wareengineeringprojectsbeginsandterminateswhenso9wareistakenoutofopera*on.”

Page 19: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

19 17-214

Reasonsforconfigura9onmanagement

•  So3wareevolu9on•  Separatedevelopment•  Audits(legal,regulatory)•  Productlines•  Marketvaria9on(e.g.,U.S.,Europe,Asia)•  Plaformvaria9on(e.g.,Android,iOS)

Page 20: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

20 17-214

Configura9onmanagementinthemodernworld

Version control

+ workflows

Build managers

Package managers

App markets

+ update

managers

Deployment managers

+ VMs/

containers

Page 21: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

21 17-214

Aside:Seman9cversioningforreleases

•  GivenaversionnumberMAJOR.MINOR.PATCH,incrementthe:–  MAJORversionwhenyoumakeincompa9bleAPIchanges,–  MINORversionwhenyouaddfunc9onalityinabackwards-compa9ble

manner,and–  PATCHversionwhenyoumakebackwards-compa9blebugfixes.

•  Addi9onallabelsforpre-releaseandbuildmetadataareavailableasextensionstotheMAJOR.MINOR.PATCHformat.

h[p://semver.org/

Page 22: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

22 17-214

Brancheswithinso3warerepositories

Page 23: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

23 17-214

Centralizedversioncontrol

•  Singleservercontainsalltheversionedfiles

•  Clientscheckout/infilesfromthatcentralplace

•  E.g.,CVS,SVN(Subversion),andPerforce

https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control

Page 24: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

24 17-214

Distributedversioncontrol

•  Clientsfullymirrortherepository–  Everycloneisafullbackupof

allthedata

•  E.g.,Git,Mercurial,Bazaar

https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control

Page 25: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

25 17-214

SVN(le3)vs.Git(right)

•  SVNstoreschangestoabaseversionofeachfile

•  Versionnumbers(1,2,3,…)areincreasedbyonea3ereachcommit

•  Gitstoreseachversionasasnapshot

•  Iffileshavenotchanged,onlyalinktothepreviousfileisstored

•  EachversionisreferredbytheSHA-1hashofthecontents

https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control

Page 26: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

26 17-214

Aside:Gitfilestatus

© Scott Chacon “Pro Git”

Page 27: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

27 17-214

Aside:Gitinternals

© Scott Chacon “Pro Git”

Page 28: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

28 17-214

Aside:Gitobjectgraph

© Scott Chacon “Pro Git”

Page 29: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

29 17-214

Aside:Whichfilestomanage?

•  Allcodeandnoncodefiles–  Javacode–  Buildscripts–  Documenta9on

•  Exclude:generatedfiles(.class,…)–  Mostversioncontrolsystemshaveamechanismtoexcludefiles

(e.g.,.gi9gnore)

Page 30: Josh Bloch Charlie Garrod Darya Melichercharlie/courses/17-214/... · 11/27/2018  · DevOps toolchain • Code: code development and review, source code management tools • Build:

30 17-214

Next9me…

•  Prac9calGit