AGILE SOFTWARE DEVELOPMENT
CT 765 02
Course Objectives:
- Deliver adaptable software iterations and releases based on Agile methodologies
- Minimize bugs and maximize productivity with Test-Driven Development and Unit Testing
- Refractor existing code for easier maintenance and improved design
- Achieve quality design by adopting established coding principles
- Provide an illustration on real life Agile Implementation through a case study in Extreme Programming
- Adopt best practices to successfully manage Agile projects
- Review of Traditional Approaches[4 hours]
- Overview of Waterfall Model
- Overview of Spiral Model
- Limitation of Traditional Approaches
- Introduction to Agile Methodologies[4 hours]
- Need of Agile Methodologies
- Objectives of Agile Methodologies
- Agile Implementations and Variants
- Introduction to the Agile Manifesto
- Planning an Agile Project[6 hours]
- Establishing the Agile project
- Adopting the best practices of the Agile Manifesto
- Recognizing the structure of an Agile team
- Programmers
- Managers
- Customers
- Developing a Foundation with User Stories
- Eliciting application requirements
- Writing user stories
- Estimating and “The Planning Game”
- Defining an estimation unit
- Distinguishing between release and iteration
- Prioritizing and selecting user stories with the customer
- Projecting team velocity for releases and iterations
- Agile Iterations[5 hours]
- Breaking user stories into tasks
- Recognizing a program's main purpose
- Prioritizing tasks for a cohesive design
- The Agile coding process
- Write Test, Write Code, Refactor
- Allocating time for a spike
- Test Driven Development[12 hours]
- Design process with automated testing
- Introduction to Test Driven Development
- Writing a User Acceptance Test
- Compiling and Running tests
- Integrating Unit Testing
- Distinguishing between user tests and unit tests
- Developing effective test suites
- Achieving "green lights" through continuous testing
- Optimizing test-driven development
- Drafting a unit test that is simple, isolated and fast
- Isolating classes for effective testing
- Creating mock objects for testing
- Refactoring
- Code Duplication
- Renaming fields and methods
- Extracting methods and base classes
- Programming by intention
- Managing Agile Projects[4 hours]
- Delivering the first release
- Planning the next release
- Adapting Agile to fit Development Methodology
- Extreme Programming[10 hours]
- Core Principles and Practices
- Requirements and User Stories
- Release Planning
- Iteration Planning
- Customer Tests
- Small, Regular Releases
- Pair Programming
- Continuous Integration
- Collective Code Ownership
- Team Roles
- Case Study
References
- Robert C. Martin, Agile Software Development, Principles, Patterns, and Practices, Prentice Hall (2002)
- Andrew Hunt, David Thomas,The Pragmatic Programmer: From Journeyman to Master,1st Edition, Addison-Wesley Professional (1999)
Evaluation Scheme:
The questions will cover all the chapters of the syllabus. The evaluation scheme will be as indicated in the table below:
Chapters |
Hours |
Marks Distribution* |
1 |
4 |
7 |
2 |
4 |
7 |
3 |
6 |
12 |
4 |
5 |
7 |
5 |
12 |
22 |
6 |
4 |
7 |
7 |
10 |
18 |
Total |
45 |
80 |
*There could be a minor deviation in Marks distribution
|