agile unified process agile software development anti-pattern behavior driven development big design up front code and fix constructionist design methodology cowboy coding design-driven development dynamic systems development method extreme programming feature driven development hollywood principle ibm rational unified process iterative and incremental development kiss principle kaizen lean software development microsoft solutions framework model-driven architecture openup open source programming paradigm quick-and-dirty resource acquisition is initialization separation of concerns service-oriented modeling software system safety software development methodology software development process spiral model test-driven development the cathedral and the bazaar unified process waterfall model wheel and spoke model worse is better