1 seg4912 university of ottawa by jason kealey [email protected] software engineering capstone...

25
1 SEG4912 University of Ottawa by Jason Kealey [email protected] Software Engineering Capstone Project Tools and Technologies

Upload: maximillian-wells

Post on 31-Dec-2015

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

1

SEG4912 University of Ottawa

by Jason Kealey

[email protected]

Software Engineering Capstone Project

Tools and Technologies

Page 2: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

2SEG4912 – Software Engineering Capstone Project

Overview

• Source Control

• Collaboration Framework

• Bug Tracking

• Unit Testing

• Continuous Integration

Page 3: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

3SEG4912 – Software Engineering Capstone Project

Source Control

Page 4: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

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

Page 5: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

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

Page 6: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

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/

Page 7: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

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

Page 8: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

8SEG4912 – Software Engineering Capstone Project

Source Control – Statistics!

• StatCVS: http://statcvs.sourceforge.net

Page 9: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

9SEG4912 – Software Engineering Capstone Project

Source Control – File Comparison / Merge

Page 10: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

10SEG4912 – Software Engineering Capstone Project

Collaboration Framework - Wiki

Page 11: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

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.

Page 12: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

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

Page 13: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

13SEG4912 – Software Engineering Capstone Project

Collaboration Framework - Wiki

Page 14: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

14SEG4912 – Software Engineering Capstone Project

Collaboration Framework - Wiki

Page 15: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

15SEG4912 – Software Engineering Capstone Project

Bug Tracking

Page 16: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

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.

Page 17: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

17SEG4912 – Software Engineering Capstone Project

Bug Tracking

Page 18: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

18SEG4912 – Software Engineering Capstone Project

Unit Testing

Page 19: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

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.

Page 20: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

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.

Page 21: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

21SEG4912 – Software Engineering Capstone Project

Continuous Integration

Page 22: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

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

Page 23: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

23SEG4912 – Software Engineering Capstone Project

Continuous Integration

Page 24: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

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!

Page 25: 1 SEG4912 University of Ottawa by Jason Kealey jkealey@shade.ca Software Engineering Capstone Project Tools and Technologies

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.