Agile Software Development

 

Learning Outcomes:

On successful completion of this module, the student should be able to:

1          Demonstrate an understanding of agile development methodologies.

2          Demonstrate an understanding of the range of tools available to support the software development process, particularly agile development techniques.

3          Demonstrate an ability to manage a modern medium scale software development project with respect to configuration management and deployment of standardised software project policies through the use of auto building software.

4          Demonstrate an understanding of the principles behind the tools used so as to be able to learn new tools as these evolve.

5          Use agile methods to improve the effectiveness of their own software development processes.

6          Implement a simple client/server application using standard socket-based APIs. Demonstrate Test Driven Development techniques in this context.

 

Syllabus Content:

This module will address a subset of the tools and technologies required to support the development of reliable, efficient and scalable software services. The focus is on use of Agile Development methods requiring test-driven developed and regular automated software builds. The aim is to assemble a toolkit of modern tools that enable the set-up of a software development process where this structure is automated by the tools. This module is designed to be very practical serving as a support to software development for the dissertation.

 

Pre-requisites:

1          Strong programming skills with Java experience (graduate of a BSc(Hons) or BEng involving significant programming experience)

2          Object-Oriented Programming and Design skills. (BSc(Hons) level Systems Analysis)

3          Moderate understanding of computer architecture and of operating systems.

4          Moderate understanding of distributed computing

 

Indicative syllabus content:                                      

1. Agile Development in Java                                  

1.1.  Introduction to Agile Development

1.2.  Java Review

1.2. Agile Practices

 

2. Test Driven Development                                     

2.1. Principles of testing.

2.2. Unit testing.

2.3. Integration tests.

2.4. Acceptance tests.

2.5. Performance tests.

 

3. Configuration Management                                

3.1. Principles configuration management

3.2. Principles of build management

3.2 First generation systems, e.g. CVS, make.

3.3. Second generation tools, e.g. Subversion, ant, maven

3.4 Continuous Integration, e.g. Cruise Control.

 

4. Network Programming                                         

4.1 Sockets.

4.2 Threads.

4.3 Streams and Channels.

4.4 XML Parsing.

 

Practical Programme:

The practical programme will involve a 3 assignments based on implementing a set of open source tools for supporting software development which us developed using Agile Development Techniques.

The assignments may be integrated with a software assignment for another module and/or the dissertation.