agile unified process agile software development aspect-oriented software development barry boehm bertrand meyer business case class diagram cleanroom software engineering compiler computer engineering computer programming computer science computer software craig larman data model data modeling database model david parnas debugger dynamic systems development method edward yourdon enterprise unified process enterprise architecture enterprise engineering ergonomics essential unified process extreme programming formal methods fred brooks function model functional specification grady booch graphical user interface builder history of software engineering ibm ibm rational unified process idef information model integrated development environment iterative and incremental development ivar jacobson james rumbaugh kent beck management martin fowler mathematics metamodeling modeling language niklaus wirth object-oriented programming object model ole-johan dahl openup oracle corporation oracle unified method package diagram performance analysis programming paradigm project management quality management rapid application development rational software requirements analysis service-oriented architecture software architecture software configuration management software deployment software design software development methodology software development process software documentation software engineering software maintenance software project management software quality software quality assurance software testing spiral model structured analysis systems development life cycle systems engineering tom demarco uml use case use case diagram user experience design view model ward cunningham waterfall model watts humphrey