agile software development business analysis business process reengineering cleanroom software engineering computer programming creative brief data modeling debugger design brief domain expert extreme programming focus group functional requirements functional specification graphic design ibm rational unified process information technology interview iterative and incremental development model-driven engineering model transformation language non-functional requirements performance analysis process architecture process modeling rapid application development requirement requirements elicitation requirements management software requirements specification software architecture software configuration management software deployment software design software development process software documentation software engineering software maintenance software project management software prototyping software testing spiral model system requirements systems analysis systems engineering unified modeling language use case user experience design user story waterfall model