In the past, many projects have approached software development in a serial fashionthat is, completing each phase of a software development life cycle (for example, requirements, architecture, design, coding, testing) in its entirety before moving on to the next phase. Furthermore, many of these projects estimate the time frames to complete a project based on these big, up-front efforts, which is similar to looking into a "crystal ball." To make matters worst, most organizations attempt to keep the big documentation (produced up front) up-to-date throughout the life cycle but are almost never able to keep it current as the project progresses. This method of working results in failed or challenged projects, as reflected in Figure I.1. Figure I.1. Project resolution history(source: standishgroup.com).The Standish Group further claims that the larger a project gets, the higher it is at risk of failing, as reflected in the numbers shown in Figure I.2. Figure I.2. Success by project size(source: standishgroup.com).
Furthermore, many applications build in features that are either never used, rarely used, or only sometimes used (as shown in Figure I.3); this results in more expensive software and wasted efforts. Figure I.3. Feature usage within deployed applications.
|