University of Tartu, 2013 Ivo Mägi - @ivomagi€¦ · * Automated tests * Libraries, servers,...

Preview:

Citation preview

University of Tartu, 2013

Ivo Mägi - @ivomagi

* 

* Collaboration infrastructure: rules for the game * Managing requirements * Issue tracker * Version control

* Development infrastructure: your tools at hand * Build script * UI mockuping/wireframing * Continuous integration * Staging environments * Automated tests * Libraries, servers, services, …

* 

* All your requirements are documented in the Wiki

* All your requirements are documented in unified format

* All your requirements are divisible for implementation

* You refer to the requirements from the issue tracker

* 

* Home of your day-to-day activity plan * And I do mean day-to-day, I wish to see you

actually using the tool

* 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 it is going to be delivered?

* 

* At minimum, I expect the following to be in your VCS * Source code * Build scripts * Automated tests

* All commits are linked to the issue in issue tracker. * Each iteration is tagged using the iteration

name

* 

* One-click build to * create executable/deployable

* run the application

* run the unit/acceptance tests

* If I have to install something manually, it must be truly well reasoned

* Runs on any machine * Configuration is external to the script

* 

* 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

* …

* 

* For webapp * 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.

* For mobile app * You need to push the deliverables to the

marketplace * For desktop app * You need to make the binary available for download

* 

* 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 *  Cloudbees as SaaS

* Bamboo

* CruiseControl

* 

* All your applications have UI

* The best way to articulate and communicate UI requirements is over a visual representation

* Create UI mockups or wireframes before development

* 

* Balsamiq

* Pidoco

* 

* Unit and acceptance tests are required

* Tests must be executable from the build script

* Tests must be repeatable

* Not yet graded in 2nd iteration, recommending to start investigating though

* 

* 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 need to use the tools we described in previous slides

*  But focus on the benefits what the tool provides, as opposed to grading criteria's

*  If something seems unreasonable, lets discuss it

Recommended