270 likes | 284 Views
https://flic.kr/p/Lj3bW. Software Configuration Management. What knowledge/skills have you learned so far?. OR. Code Monkey. Software Engineer. https://flic.kr/p/ bqHSWr. https://flic.kr/p/8kzUK8. How can you tell?.
E N D
https://flic.kr/p/Lj3bW Software Configuration Management
What knowledge/skills have you learned so far? OR Code Monkey Software Engineer https://flic.kr/p/bqHSWr https://flic.kr/p/8kzUK8 How can you tell?
Consult the SWEBOK Guide(Software Engineering Body Of Knowledge) http://www.computer.org/portal/web/swebok
One possible definition ofSoftware Engineering:Appling SWEBOK to softwarecreation and evolution So what’s in this SWEBOK anyway?
15 Knowledge Areas (KAs) Has Boot Camp covered any? • Software Requirements • Software Design • Software Construction • Software Testing • Software Maintenance • Software Configuration Management • Software Engineering Management • Software Engineering Process • Software Engineering Models and Methods • Software Quality • Software Engineering Professional Practice • Software Engineering Economics • Computing Foundations • Mathematical Foundations • Engineering Foundations
15 Knowledge Areas (KAs) 3 stand out to me • Software Requirements • Software Design • Software Construction • Software Testing • Software Maintenance • Software Configuration Management • Software Engineering Management • Software Engineering Process • Software Engineering Models and Methods • Software Quality • Software Engineering Professional Practice • Software Engineering Economics • Computing Foundations • Mathematical Foundations • Engineering Foundations Let’s pick on this one
Software Configuration Management (SCM)“Configuration management … is the discipline ofidentifying the configuration of a systemat distinct points in timefor the purpose ofsystematically controlling changes to the configurationandmaintaining the integrity and traceability of the configuration throughout the system life cycle.” (SWEBOK)
SCM Subtopics Which have you learned about?
SCM Subtopics Git! “Version control tools” Let’s see how much you’ve learned…
Pop Quiz • 5 questions • Update diagram in each • Commit nodes • Branch nodes • Based on actions of Alice and Bob • Collaborating via GitHub repo
Start like this Scott Fleming SF 1 GitHub master master 11111 11111 Alice Bob
Question 1 • Alice: • $ git clone https://github.com/whatever.git • $ cd whatever • Bob: • $ git clone https://github.com/whatever.git • $ cd whatever (include the HEAD node)
Question 2 • Alice: • $ git branch myfix • $ git checkout myfix
Question 3 • Alice: • $ rails generate scaffold User … • $ git add . • $ git commit # 22222 • Bob: • $ rails generate scaffold Micropost … • $ git add . • $ git commit # 33333
Question 4 • Bob: • git push
Question 5 • Alice: • git pull
What if… Alice did this: app/models/micropost.rb app/models/micropost.rb class Micropost < ActiveRecord::Base validates :content, length: { maximum: 140 } end class Micropost < ActiveRecord::Base validates :content, length: { maximum: 120 } end Bob did this:
What if Alice did this? master 33333 11111 $ git checkout master $ git merge myfix 22222 myfix
$ git merge myfix Auto-merging app/models/micropost.rb Automatic merge failed; fix conflict and then commit result. app/models/micropost.rb class Micropost < ActiveRecord::Base <<<<<<< HEAD validates :content, length: { maximum: 140 } ======= validates :content, length: { maximum: 120 } >>>>>>> myfix end To resolve: Manually fix the file; git add and commit
SCM is more than version controlCan you think of more that you’ve learned?
SCM is more than version controlCan you think of more that you’ve learned? • “Build handling tools”: • rvm • bundler
SCM Problems:Your code AND external dependencies ruby jquery Your code sqlite …
rvm and bundler work togetherto control external dependencies Let’s take a quick tour
RVM: Set Rails and Gemset versions Few more handy RVM commands: $ rvm list $ rvm current $ rvm info
Problem: RVM config is not part of projectHow to solve? Gemfile in project stores all Gems(external dependencies) and their versions Use bundle to run (exec) commands (automagically uses versions in Gemfile) RVM also can use Gemfile versions when pwd is in project (see chapters 1.2.4 and 3.6.1)
Summary • Software Configuration Management (SCM) • Version control tool • Git • Build handling tools • rvm • bundler What’s next?