Introduction


Overview

The time: 1968. A software crisis has been declared. Part of the crisis derives from the fact that more software is needed than there are developers to produce it. The other part of the crisis is the abysmal record of development efforts. More than half of the projects initiated are canceled , and less than 20 percent of projects are successfully completed, meaning that the time and cost overruns associated with those projects were less than 100 percent and the software was actually used to support the business.

The time: 2003. We have a lot of developers ”part of the software crisis has passed for the moment. Many of them are located in other countries because too many managers seem to believe that developers are developers and therefore go for greater numbers at lesser cost.

The skills, abilities , attitudes, and aptitudes of the development community are, unfortunately , suspect. The development community means the entire development community ”from programmers to senior managers ”in the United States and the rest of the world. It is still the case that almost half of all projects initiated are not completed. Those that are completed almost always incur significant cost overruns. Quality ”the lack thereof ”is still a major issue. Bloated, inefficient, bug-ridden, user -unfriendly, and marginally useful ”these are still common adjectives used to describe software.

The lack of significant improvement is not for want of trying. Numerous proposals have been advanced to improve software development.

Software engineering provides an umbrella label for a spectrum of improvement efforts ranging from structured programming to formal (mathematical and logical) foundations for program specification to UML (unified modeling language) to ISO 9000 certification and CMM (capability maturity model) formalizations of the development process.

Sharing the goal of software improvement but rejecting the assumptions implicit in software engineering, several alternative development approaches have been championed. Creativity and art have been suggested as better metaphors than engineering. Software craftsmanship [1] is the current incarnation of this effort. Iterative development has as long a history as the linear-phased development at the heart of software engineering.

Extreme programming (XP) and agile software development represent a contemporary attempt to redefine and improve software and the practice by which that software comes into existence. XP/agile represents an alternative to software engineering. Further, XP/agile challenges the assumptions, the core values, and the worldview upon which software engineering is predicated. It is not surprising, therefore, that those with a vested interest in software engineering are trying very hard to marginalize ( it s OK for small projects by small teams that are not engaged in mission-critical projects ), co-opt ( XP is just a subset of RUP [2] ”with a different vocabulary ), or dismiss ( XP is just a tantrum staged by a few petulant out-of-work Smalltalk programmers angry at the demise of their favorite programming language ).

This book is motivated by a set of curious questions; it is based on the belief that better people are absolutely essential and that they can be nurtured; it is grounded in the conviction that object-oriented ideas and principles are poorly understood ; and it is premised on the belief that XP (and other agile methods ) and object thinking are inextricably entwined ”each requires the other if they are to be successful.

[1] McBreen, Peter. Software Craftsmanship: The New Imperative . Addison-Wesley, 2001.

[2] RUP ”Rational Unified Process, an attempt to standardize and formally define the software development process. Created and advocated by the same individuals behind UML (unified modeling language), most notably Grady Booch, Ivar Jacobson, and James Rumbaugh.




Microsoft Object Thinking
Object Thinking (DV-Microsoft Professional)
ISBN: 0735619654
EAN: 2147483647
Year: 2004
Pages: 88
Authors: David West

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net