agile software development aspect-oriented software development barry boehm bertrand meyer computer engineering computer programming computer science computer software craig larman data model data modeling database model david parnas education edward yourdon enterprise architecture enterprise engineering ergonomics extreme programming formal methods fred brooks function model functional specification grady booch history of software engineering ibm rational unified process idef information model iterative and incremental development ivar jacobson james rumbaugh kent beck management martin fowler mathematics metamodeling milestone modeling language niklaus wirth object-oriented programming object model ole-johan dahl philippe kruchten programming paradigm project management quality management requirements analysis service-oriented architecture software architecture software deployment software design software development methodology software development process software engineering software maintenance software quality software quality assurance software testing spiral model structured analysis systems development life cycle systems engineering tom demarco uml university of groningen view model ward cunningham waterfall model watts humphrey