a) Understand the waterfall lifecycle, agile methodologies, extreme programming, the spiral model and rapid application development.
b) The relative merits and drawbacks of different methodologies and when they might be used.