1 / 25

Software Engineering Tools and Technologies for Capstone Projects

This article discusses various software engineering tools and technologies that are useful in Capstone projects, including source control, collaboration frameworks, bug tracking, unit testing, and continuous integration. It provides an overview, highlights the basics and more advanced features of source control, recommends collaboration frameworks like wikis, suggests bug tracking software like Bugzilla, mentions unit testing frameworks like JUnit, and explains the concept of continuous integration. The article emphasizes the importance of investing time in setting up a good environment for project collaboration and communication.

wjames
Download Presentation

Software Engineering Tools and Technologies for Capstone Projects

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Engineering Capstone Project Tools and Technologies SEG4912 University of Ottawaby Jason Kealeyjkealey@shade.ca

  2. Overview • Source Control • Collaboration Framework • Bug Tracking • Unit Testing • Continuous Integration

  3. Source Control

  4. 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

  5. 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

  6. 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/

  7. 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

  8. Source Control – Statistics! • StatCVS: http://statcvs.sourceforge.net

  9. Source Control – File Comparison / Merge

  10. Collaboration Framework - Wiki

  11. 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.

  12. 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

  13. Collaboration Framework - Wiki

  14. Collaboration Framework - Wiki

  15. Bug Tracking

  16. 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.

  17. Bug Tracking

  18. Unit Testing

  19. 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.

  20. 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.

  21. Continuous Integration

  22. 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

  23. Continuous Integration

  24. 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!

  25. 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.

More Related