The two major problems in enterprise business application development and perhaps in computer programming generally are how to increase productivity while increasing quality. Programming has always been tedious and painstaking but creative work. The productivity increase in programming in the development process has been about 500% over the past 50 years. This would be remarkable in any other labor-intensive craft. Sadly, it pales before the factor of 1010 increase in computer hardware performance during the same periodnot to mention the proliferation of computers into applications not even imagined 50 years ago. At the same time development time and cost are unsatisfactory to the buyer of programming product development, the quality of computer programs is far from satisfactory to the end users of these products. Until recently these two demands were irreconcilable. Anything that would speed up development or reduce cost tended to reduce quality. And efforts to improve quality almost always required more time and money. This chapter presents the object-oriented revolution, which has been waiting in the wings for a long time. We'll review its ability to support component-based software development, which has been advocated for an even longer time. We will also discuss briefly productivity-based approaches such as Extreme Programming and quality-based approaches such as N-Version Programming. All of these new development technologies are well supported for individual users and small groups by programming development environments (PDEs) and for large groups by integrated development environments (IDEs). These are discussed in terms of a few leading examples. The computer end user is like the complaining cowboy in a Western saloon 150 years ago who expected stronger whiskey, louder music, and wilder women. The computer end user expects faster development at lower cost, more-capable software, and totally bug-free software. At last these expectations may be met. |