1 seg4912 university of ottawa by jason kealey [email protected] software engineering capstone...
TRANSCRIPT
1
SEG4912 University of Ottawa
by Jason Kealey
Software Engineering Capstone Project
Tools and Technologies
2SEG4912 – Software Engineering Capstone Project
Overview
• Source Control
• Collaboration Framework
• Bug Tracking
• Unit Testing
• Continuous Integration
3SEG4912 – Software Engineering Capstone Project
Source Control
4SEG4912 – Software Engineering Capstone Project
Source Control
• Goes by many names– Version Control– Software Configuration Management– Source Code Management
• Different Tools– Subversion– CVS: Concurrent Versions System– Microsoft SourceSafe– Vault– Perforce– Rational ClearCase
5SEG4912 – Software Engineering Capstone Project
Source Control – The Basics
• Repository versus Working Folder
• Operations– Checkout contents of repository to working folder– Modify contents working folder– Update working folder with other’s changes– Commit local changes to repository– Add new files to repository
• History of all files is maintained
6SEG4912 – Software Engineering Capstone Project
Source Control – More advanced
• Exclusive locks or conflict resolution?
• File merges
• Branches– One branch for maintenance on the most recent release– One branch for the upcoming version
• Good article on the subject: http://software.ericsink.com/scm/
7SEG4912 – Software Engineering Capstone Project
Source Control – personal preferences
– Subversion • Server: http://subversion.tigris.org/ • Client:
– In Windows Explorer: http://tortoisesvn.tigris.org/
– Eclipse plug-in: http://subclipse.tigris.org/
– CVS• Client & Server: http://www.wincvs.org• Other clients:
– http://www.tortoisecvs.org/
– Eclipse has it integrated
– Comparison / Merge utility:• http://winmerge.sourceforge.net/• Eclipse has one integrated
8SEG4912 – Software Engineering Capstone Project
Source Control – Statistics!
• StatCVS: http://statcvs.sourceforge.net
9SEG4912 – Software Engineering Capstone Project
Source Control – File Comparison / Merge
10SEG4912 – Software Engineering Capstone Project
Collaboration Framework - Wiki
11SEG4912 – Software Engineering Capstone Project
Collaboration Framework - Wiki
• Basic concepts seen on http://www.wikipedia.org
• All pages are editable by everyone and a history of changes is kept.
• Great way to maintain central documentation.
12SEG4912 – Software Engineering Capstone Project
Collaboration Framework - Wiki
• Many different implementations– http://en.wikipedia.org/wiki/Comparison_of_wiki_software
• Recommendation: – Find one that is easy to use and install– Get it ready quickly
• We used TWiki (http://www.twiki.org)– Uses Apache (http://www.apache.org)– Hard to install / configure– Many very useful plugins available
13SEG4912 – Software Engineering Capstone Project
Collaboration Framework - Wiki
14SEG4912 – Software Engineering Capstone Project
Collaboration Framework - Wiki
15SEG4912 – Software Engineering Capstone Project
Bug Tracking
16SEG4912 – Software Engineering Capstone Project
Bug Tracking
• An open source alternative for bug tracking is BugZilla (http://www.bugzilla.org). It requires a database server and web server. Most often Apache (http://www.apache.org) and MySQL (http://www.mysql.com)
• Create bugs, assign people, priorities, deadlines.
• Great way to keep track of what needs to be fixed while avoiding duplication of effort because of bad communication.
17SEG4912 – Software Engineering Capstone Project
Bug Tracking
18SEG4912 – Software Engineering Capstone Project
Unit Testing
19SEG4912 – Software Engineering Capstone Project
Unit Testing
• As seen (or as you will see) in your software quality assurance course, unit testing is an essential asset in any large-scale software development process.
• There are unit testing frameworks for tons of languages. Take a look at http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks for a partial list.
20SEG4912 – Software Engineering Capstone Project
Unit Testing - JUnit
• JUnit (http://www.junit.org) – Open source regression testing framework built by Erich
Gamma (author of the most popular Design Patterns book and one main designer of Eclipse) and Kent Beck (creator of Extreme Programming (XP) and one author of the Agile Manifesto).
– Used for unit testing in Java.
• More efficient than manual debugging or insertion of trace statements inserted in the code.
21SEG4912 – Software Engineering Capstone Project
Continuous Integration
22SEG4912 – Software Engineering Capstone Project
Continuous Integration
• Continuous Integration software such as CruiseControl automate your build process.– http://cruisecontrol.sourceforge.net
• Basic concept:– Monitor your source control for changes– Build, test and deploy on change– Notify everyone of success/failure
23SEG4912 – Software Engineering Capstone Project
Continuous Integration
24SEG4912 – Software Engineering Capstone Project
Conclusion
• Today’s presentation is only the tip of the iceberg of different software that will make your software development process easier and more efficient.
• The open source community is a great place to look for software for your project.
• Don’t forget to backup!
• Communication is the key to success!
25SEG4912 – Software Engineering Capstone Project
Conclusion
• This is the only time in your SEG degree that you will have the chance to collaborate on a large project.
• I recommend investing time on setting up a good environment as it will save you tons of time in the long run.
• Most important rule: enjoy yourself.