Aim of the course
The main aim of this course is to present agile software development methodologies with an emphasis on eXtreme Programming, and Test-Driven Development techniques. In particular this includes familiarizing students with basic agile practices of project planning, designing and programming, as well as introducing selected libraries and tools that support work of agile software teams.
The reasons for the creation of agile software methodologies. LOOP syndrome. Costs of changes and risk in the software project. Iteration-based software development model. Agile manifesto. eXtreme Programming practices. Functional analysis. CRC cards game. Pair Programming, Test-Driven Development. Unit and integration testing. Difficult testing cases . Code coverage generation. GUI testing. General rules of refactoring. Identification of code smells. Basic and advanced techniques of re factoring. Planning in eXtreme Programming. Process and roles in Planning Game. User Stories. Acquisition techniques of User Stories. Time estimation. Retrospection. Continuous integration, Code collective ownership. Scrum, Scrum scaling, Crystal family of methods, other methods: Feature Driven Development, Lean Software Development.
Overview of the course elements
The lecture is accompanied with laboratory classes. Their goal is to simulate the development work in a real project. The classes start with Planning Game in which the students perform functional analysis by using User Stories as well create the iteration plan for the project. Next, students are presented with practical and popular software development practices such as Test-Driven Development, Refactoring, Retrospection. Based on the observation of the artifacts of their own work, students get to know various software metrics utilized by agile teams. Among others, these are burn-down chart, team velocity, code coverage.
1. Beck K..: eXtreme Programming eXplained. Embrace Change . Addison-Wesley Professional, Warszawa 1999
2. Martin R.: Agile Software Development, Principles, Patterns and Practices. Prentice Hall, 2006
3. Schwaber K.: Agile Projekt Management with Scrum. Microsoft Press 2004
4. Fowler M. i współaut.: Refactoring: Improving the Design of Existing Code, Addison Wesley Professional 1999
5. McConnell S. Rapid Development. Microsoft Press 1996