(3) Common software engineering methodologies, such as waterfall, prototyping, iterative and incremental development, spiral development, rapid application development, and extreme programming; advanced object-oriented analysis and design methods, reuse, and testing.