University of Tartu, 2012 Ivo Mägi - @ivomagi * Managing requirements * Issue tracker * Version control * Build script * Continuous integration * Staging environments * Libraries, servers, services, … * * You should look following as one package * Managing requirements * Issue tracker * Version control * There are several service providers offering all three in one SaaS offering: * Github * * Google Code * Atlassian stack * * No, the book you are carrying is not ok * No, the e-mail attachment is not ok * No, bunch of Word documents in your laptop HDD is not OK * Requirements must be * Online * Collaboratively editable * Versionable * Integratable with the tasks in issue tracker * * Most likely the integrated into the Github/ Google Code/Bitbucket would do it. * But consider alternatives also – Google Docs, Dropbox, … to name a few.

* * Home of your project plan * You can still possess some initial Excel spreadsheets, but as a deliverable I want to see the tasks in issue tracker * Integrated with requirements and source code. * I want to see in a task * What has to be done? * Who is going to deliver it? * When? * * First and foremost – the tool shipping with your VCS – Google Code, Github and Bitbucket have issue trackers bundled. * Or Google – there are hundreds of issue trackers out there (, Fogbugz, , …). * If you know what you are doing – you might take a look to non-traditional tools also. Such as , Asana, do.com, …

* * Centralized or distributed? * Centralized – SVN, CVS * Distributed – Git, Mercurial * If customer requires anything else, contact me first. * On customer premises or in external infrastructure? * Google Code, Github, Bitbucket, … * * What version of this use case is implemented in version 1.3? * What requirements are those tasks implementing? * What was changed in the code when implementing this task? * Why is this code here?

* * One-click build to * create executable/deployable * run the application * run the tests on the application * If I have to install something by hand, it must be truly well reasoned

* * Shell scripts. Pay attention to cross-platform compatibility. * Platform-specific build utilities, like Ant and Maven for Java apps. * Virtual Machine building * VirtualBox creation scripts * Puppet/Chef/…

* * To conduct acceptance testing * To push releases for end-user validation * To run automated tests * …

* * Does your customer provide the enviroments? * Do you have your own servers to use? * If not, university can grant access to Amazon EC2 instances. * Contact me about your needs.

* * Monitoring VCS for updates * Checking out the change * Building the application * Deploying the application * Running automated tests on application * Reporting the (possible) errors found

* * Jenkins * SaaS model – check Cloudbees * CruiseControl * Bamboo * TeamCity

* * Extremely project – specific. * Use existing infrastructure. Do not build your own storage / HTTP server / etc. * Check out for 3rd party libraries before you write anything on your own * If confused, consult with me first

* * Code reviews * Static code analyzers * Time trackers (yuck) * Planning tools * Modeling tools * … feel free to investigate and use.

* * You have to deliver by next Wednesday 10:00 * Let’s check the grading criteria * But prior to that we already meet with teams 1-1 tomorrow on the time selected * If you have not yet selected the time, do it so immediately * If your team has still not subscribed to the message board, do it so * * Do you understand what you need to deliver during the course? * If not, please recommend what should be explained in more details * Do you feel you are prepared enough for this course? * If not, could you pinpoint what are the parts you feel you are not ready to tackle

*