configuraon* management foundaons*leomurta/courses/2017.1/gc/aula3.pdfleonardo*murta*...

47
Configura)on Management Founda)ons Leonardo Gresta Paulino Murta [email protected]ff.br

Upload: vunga

Post on 20-Jan-2019

221 views

Category:

Documents


0 download

TRANSCRIPT

Configura)on  Management  Founda)ons  

Leonardo  Gresta  Paulino  Murta  [email protected]  

Leonardo  Murta   Configura)on  Management  Founda)ons   2  

Configura)on  Item  •  Hardware  or  so@ware  aggrega)on  subject  to  configura)on  management    

•  Examples:  – CM  plan  – Requirement  Engineering  Process  – Requirements  – Models  – Source-­‐code  of  component  X  – Etc.  

Leonardo  Murta   Configura)on  Management  Founda)ons   3  

Configura)on  Item  •  The  selec)on  of  CI  should  take  into  considera)ons  basic  

design  principles  such  as  coupling  and  cohesion  •  High  coupling  introduces  complexity  to  the  building  process  

–  Many  dependencies  among  CI  

•  Low  cohesion  introduces  complexity  to  the  development  process  –  Many  developers  working  over  the  same  CI    

•  CM  benefits  from  well  defined  architectures  

Leonardo  Murta   Configura)on  Management  Founda)ons   4  

Configura)on  Item  

System  

Module  

Procedure  

Granularity  Coarse  

Fine  

Command   Paragraph  

Sec)on  

Document  Program  

Perspec)ve:   Code   Documenta)on  

Line  

File  

Directory  

Tool  Demand  

Lower  

Higher  

Leonardo  Murta   Configura)on  Management  Founda)ons   5  

Derived  Item  •  A  CI  may  be  derived  from  other  CI  (source  items)  

•  Example:  –  Executable  files  are  derived  from  the  source  code  

–  DB  Schema  is  derived  from  class  models  

–  Etc.  

•  CM  Strategies  –  Version  control  the  derived  items  

–  Document  and  version  control  the  deriva)on  process  (script,  tools,  environment,  etc.)  

Leonardo  Murta   Configura)on  Management  Founda)ons   6  

Building  •  Process  that  generates  derived  items  from  source  items  considering  a  target  configura)on  

•  Uses  automated  build  scripts  to  describe  the  process  •  Example:  

– makefile,  –  build.xml,  –  pom.xml  

•  The  build  scripts  are  also  subject  to  CM  

Leonardo  Murta   Configura)on  Management  Founda)ons   7  

Version  •  Different  instances  of  the  same  CI  •  Three  types  of  Versions:  

Version  

Revision   Variant   Coopera)on  (dra@)  

(Conradi  and  Wes_echtel  1998)  

Revisions  

Leonardo  Murta   Configura)on  Management  Founda)ons   8  

iMac  genera)ons  (1998  –  2013)  

Variants  

Leonardo  Murta   Configura)on  Management  Founda)ons   9  

Hatchback  

Coupe  

Sedan  

Honda  Civic  

Coopera)on  (dra@  versions)  

Leonardo  Murta   Configura)on  Management  Founda)ons   10  

John’s  workspace  

Mary’s  workspace  

Peter’s  workspace  

Base  version  

Dra@  versions  may  be  merged  

Leonardo  Murta   Configura)on  Management  Founda)ons   11  

John’s  workspace   Mary’s  workspace   Peter’s  workspace  

Revisions  

Conflicts  may  happen  during  merge  

Leonardo  Murta   Configura)on  Management  Founda)ons   12  

John  workspace   Fred  workspace  

Revisions  

Two  other  important  opera)ons…  

…  for  storing,  transferring,  and  comprehending  versions  Leonardo  Murta   Configura)on  Management  Founda)ons   13  

Diff   =  

Patch   =  

Versions  in  the  wild  •  Mul)tude  of  revisions  and  variants  altogether  (set  aside  dra@  versions)  

Leonardo  Murta   Configura)on  Management  Founda)ons   14  

History  of  Git  

But,  what  are  versions  good  for?  •  Synchronizing  teamwork  •  Reproducing  previous  configura)ons  •  Exploring  possibili)es  •  Segrega)ng  developers  •  Customizing  products  (SPL)  •  Tracing  bug  introduc)on  (bisect)  •  Understanding  evolu)on  (MSR)  •  Audi)ng  changes  (annotate)  •  Etc.  

Leonardo  Murta   Configura)on  Management  Founda)ons   15  

CM  System  

Leonardo  Murta   Configura)on  Management  Founda)ons   16  

Version  1  

Version  2  

Version  3  

Version  4  

Version  5  

CM  System  

Leonardo  Murta   Configura)on  Management  Founda)ons   17  

Version  1  

Version  2  

Version  3  

Version  4  

Version  5  

CM  System  

Leonardo  Murta   Configura)on  Management  Founda)ons   18  

Version  1  

Version  2  

Version  3  

Version  4  

Version  5  

CM  System  

Leonardo  Murta   Configura)on  Management  Founda)ons   19  

CI  

Version  Control  

Build  and  Release  

Issue  Tracking  

Change  Requests  

Version  Control  

Leonardo  Murta   Configura)on  Management  Founda)ons   20  

Storage?  Collabora)on?  Query?  

Topology?  CI  

Repository  

Topology  

Leonardo  Murta   Configura)on  Management  Founda)ons   21  

Repository  

Workspace  

Centralized Distributed

check-­‐in  /  commit  

check-­‐out  /  update   Repository  

Workspace  check-­‐in  

check-­‐out  /  update  

Repository  

Workspace  

clone  /  pull  

push  

Storage  

Leonardo  Murta   Configura)on  Management  Founda)ons   22  

v.3  

v.2  

v.1  

Complete

delta  1à2  

v.1  

Forward

delta  2à3  

delta  3à2  

v.3  

Reverse

delta  2à1  

In-line

v.1   v.2/3  

v.1/2   v.3  

c.1  

Collabora)on  

Leonardo  Murta   Configura)on  Management  Founda)ons   23  

c.3  

c.2  

c.1  

Pessimist

merge  

Optimist Mixed

c.3  c.2  

c.1  

merge  

c.3  c.2  

Query  

Leonardo  Murta   Configura)on  Management  Founda)ons   24  

Repository  (version  1)    Ar)fact1  (version  1)  Ar)fact2  (version  1)  Ar)fact3  (version  1)  

Repository  (version  2)    Ar)fact1  (version  2)  Ar)fact2  (version  1)  Ar)fact3  (version  1)  

Repository  (version  0)  Repository  (version  3)    Ar)fact1  (version  2)  Ar)fact2  (version  3)  Ar)fact3  (version  1)  Ar)fact4  (version  3)  

Repository  (version  4)    Ar)fact1  (version  4)  Ar)fact2  (version  3)  Ar)fact3  (version  4)  Ar)fact4  (version  3)  

Ar)fact1          Version  1          Version  2          Version  4  

Ar)fact2          Version  1          Version  3  

Ar)fact3          Version  1          Version  4  

Ar)fact4          Version  3  

Query  by  ar)fact  1st  change  

2nd  change  4th  change  3rd  change  

Query  

Leonardo  Murta   Configura)on  Management  Founda)ons   25  

1st  change          Ar)fact1  added          Ar)fact2  added          Ar)fact3  added  

2nd  change          Ar)fact1  changed  

3rd  change          Ar)fact2  changed          Ar)fact4  added  

Query  by  change  

4th  change          Ar)fact1  changed          Ar)fact3  changed  

Repository  (version  1)    Ar)fact1  (version  1)  Ar)fact2  (version  1)  Ar)fact3  (version  1)  

Repository  (version  2)    Ar)fact1  (version  2)  Ar)fact2  (version  1)  Ar)fact3  (version  1)  

Repository  (version  0)  Repository  (version  3)    Ar)fact1  (version  2)  Ar)fact2  (version  3)  Ar)fact3  (version  1)  Ar)fact4  (version  3)  

Repository  (version  4)    Ar)fact1  (version  4)  Ar)fact2  (version  3)  Ar)fact3  (version  4)  Ar)fact4  (version  3)  

1st  change  

2nd  change  4th  change  3rd  change  

Query  

Leonardo  Murta   Configura)on  Management  Founda)ons   26  

Ar)fact1          Version  1          Version  2          Version  4  

Change  4          Ar)fact1          Ar)fact3  

Version  

CI   Change  

*  

1  

*  1  

Leonardo  Murta   Configura)on  Management  Founda)ons   27  

Configura)on  •  A  set  of  CI  versions  where  there  is  one  and  only  one  version  

per  CI  •  A  configura)on  can  be  seen  as  a  CI  composed  by  other  CI  •  Examples  

–  System  configura)on  –  Process  configura)on  –  Module  X  configura)on  –  Requirements  configura)on  –  Source-­‐code  configura)on  

Leonardo  Murta   Configura)on  Management  Founda)ons   28  

Configura)on  vs.  version  

Configura)on  

Version  

Composite  CI   Atomic  CI  

CI  

•  Generically  speaking  –  The  system  S  is  composed  by  CI  X,  Y,  and  Z  

•  Concretely  speaking  –  The  configura)on  5  of  system  S  is  composed  by  version  2  of  CI  X,  

version  4  of  CI  Y,  and  version  6  of  CI  Z  

Leonardo  Murta   Configura)on  Management  Founda)ons   29  

Tag  •  VCS  usually  register  mul)ple  configura)ons,  but  just  few  are  of  interest  to  the  

user  

•  Tags  allow  naming  such  configura)ons  

•  Names  can  be  user  to  indicate  versions,  quality  levels,  etc.  

1.1  

1.2  

1.3  

HelloWorld.java  

1.1  

1.2  

1.3  

Welcome.java  

1.1  

1.2  

build.xml  

1.1  

1.2  

User.java  

REJECTED  

ACCEPTED  

Tags  

Leonardo  Murta   Configura)on  Management  Founda)ons   30  

Configura)on  vs.  version  Composite  CI  

Conf.  1  

Conf.  2  

Conf.  3  

Atomic  CI   Atomic  CI   Atomic  CI  

V.1  

V.2  

V.3  

V.4  

V.1  

V.2  

V.1  

V.2  

V.3  

Leonardo  Murta   Configura)on  Management  Founda)ons   31  

Baseline  •  “A  specifica)on  or  product  that  has  been  formally  reviewed  and  

agreed  upon,  that  therea@er  serves  as  the  basis  for  further  development,  and  that  can  be  changed  only  through  formal  change  control  procedures”  (IEEE  610.12,  1990).  

•  Baselines  are  created  at  the  end  of  each  development  phase:  analysis  (func)onal),  design  (allocated)  and  coding  (product)  

•  When  is  the  correct  moment  for  crea)ng  baselines?  –  Control  vs.  Bureaucracy  

Leonardo  Murta   Configura)on  Management  Founda)ons   32  

Baseline  

SE Tasks

CI

Formal techinical reviews

CI

changed

Change Control CI

CI approved

checked-out

CI stored

[Pressman,  1997]  Baseline  update  process  

Leonardo  Murta   Configura)on  Management  Founda)ons   33  

Baseline  (levels  of  control)  

Coordina)on  and    audi)ng   Control  

Pre  baseline:  • Informal  • Without  request  • Without  evalua)on  • Without  verifica)on  • Agile  • Ad-­‐hoc  

Post  baseline:  • Formal  • With  request  • With  evalua)on  • With  verifica)on  • Bureaucra)c  • Planned  

Levels  of  control  

Baseline  (levels  of  control)  Requirement  1   Analysis   Design  

Baseline  1:  • An.  Req.  1  

 

Requirement  2   Analysis   Design  

Time  

Req. Analysis Design Analysis Design Analysis Design 1 Inform. - Formal Inform. Formal Formal 2 - - Inform. - Formal Inform.

Baseline  2:  • An.  Req.  1  • Ds.  Req.  1  • An.  Req.  2  

 

Leonardo  Murta   Configura)on  Management  Founda)ons   34  

Leonardo  Murta   Configura)on  Management  Founda)ons   35  

Release  •  Noun:  Version  provided  for  a  specific  purpose  •  Verb:  Formal  no)fica)on  and  distribu)on  of  a  version  (usually  

baseline)  

•  All  release  are  versions,  but  not  all  versions  are  released  •  Some)mes,  releases  may  be  developed  in  parallel  due  to  time  to  

market  

•  Examples  –  Test  release  –  Staging  release  –  Product  release  

Leonardo  Murta   Configura)on  Management  Founda)ons   36  

Tags  naming  releases  

1.1  

1.2  

1.3  

1.4  

1.5  

HelloWorld.java  

1.1  

1.2  

1.3  

1.4  

1.5  

Welcome.java  

1.1  

1.2  

build.xml  

1.1  

1.2  

1.3  

User.java  

1.0.0  

1.0.1  

1.1.0  

1.6  

Tags  

HEAD  

Leonardo  Murta   Configura)on  Management  Founda)ons   37  

Branches  

•  Versions  that  deviate  from  the  main  development  line  

•  Allow  isola)on  to  the  development  process  –  Usually  reintegrated  to  the  main  development  line  

–  The  reintegra)on  some)mes  is  a  difficult  process  

•  Workspaces  (CVCS)  can  be  seen  as  a  temporary  branch  

•  Clones  (DVCS)  can  be  seen  as  repository  forks  that  may  

lead  to  branches  if  parallel  development  occurs  

Leonardo  Murta   Configura)on  Management  Founda)ons   38  

Branch  example  

1.2  

HelloWorld.java  

1.2  

Welcome.java  

1.1  

build.xml  

1.1  

Users.java  

1.0.0  

Tag  

1.0.x  

1.2.2.1   1.2.2.1   1.1.2.1   1.1.2.1  

Branch  

...   ...   ...   ...  

Leonardo  Murta   Configura)on  Management  Founda)ons   39  

Merge  •  Help  on  reintegra)ng  

–  Workspaces  –  Branches  

•  It  is  necessary  even  when  pessimis)c  concurrency  control  (lock)  is  in  place,  due  to  branches  

•  Automa)c  algorithms  categories  –  Generic  (work  with  all  programming  languages)  –  Language  Specific  (take  into  considera)on  the  syntax  and  seman)cs  of  the  programming  language)  

Leonardo  Murta   Configura)on  Management  Founda)ons   40  

Merge  •  Types  of  generic  merge  algorithms  

–  2-­‐way  merge  –  3-­‐way  merge  

X  Y  Z  

W  Y  

X  or  W?  Y  

Z  or  nothing?  

X  Y  Z  

W  Y  

X  Y  

W  Y  Z  

Leonardo  Murta   Configura)on  Management  Founda)ons   41  

Merge  

1.1   1.2   1.3   1.4   1.5  HelloWorld.java  

1.2.2.1   1.2.2.2  

Δ2  

Δ1  

1.6  

1.6  =  1.2  +  Δ1  +  Δ2  

•  Merge  occurs  for  each  CI  in  the  branch  •  All  changes  since  the  common  ancestor  are  taken  into  

considera)on  

Leonardo  Murta   Configura)on  Management  Founda)ons   42  

Merge  

1.2   1.3   1.4   1.5  

HelloWorld.java  

1.2.2.1   1.2.2.2  

Δ2  

Δ1  

1.6  

•  Merge  can  be  done  incrementally  

1.7   1.8  

Δ3  

1.2.2.3   1.2.2.4  

Δ4  

Leonardo  Murta   Configura)on  Management  Founda)ons   43  

Merge  

1.2   1.3   1.4   1.5  

HelloWorld.java  

1.2.2.1   1.2.2.2  

Δ2  

Δ1  

1.6   1.7   1.8  

Δ3  

1.9  

1.2.2.3   1.2.2.4  

Δ4  

1.9  =  1.6  +  Δ3  +  Δ4  

•  Merge  can  be  done  incrementally  

Leonardo  Murta   Configura)on  Management  Founda)ons   44  

Conflicts  •  Situa)ons  where  it  is  not  possible  to  perform  automa)c  

merge  •  Types  

–  Physical  (line  of  a  file)  –  Syntac)c  (elements  of  the  file  grammar)  –  Seman)c  (dependencies  among  elements)  

•  Current  tool  support  focus  on  the  physical  level!  •  Examples  of  physical  conflicts  

–  Parallel  change  in  the  same  line  –  Parallel  change  and  dele)on  of  the  same  line  –  Parallel  addi)ons  of  lines  in  the  same  file  region  

Leonardo  Murta   Configura)on  Management  Founda)ons   45  

Raw  conflict  demarca)on  

Leonardo  Murta   Configura)on  Management  Founda)ons   46  

IDE  conflict  resolu)on  

Configura)on  Management  Founda)ons  

Leonardo  Gresta  Paulino  Murta  [email protected]