IN E-BUSINESS, time to market is paramount. In the new digital economy, new Web-based applications must be delivered more rapidly than traditional enterprise applications, and they must satisfy the needs of more demanding users such as customers and business par
tners.
But delivering large and complex e-business applications at Web speed without sacrificing quality is a daunting task even for the best IT organizations. The risk of failure is high. Many organizations are discovering quite painfully that lightweight software development approaches, successful on small e-business systems, do not scale well to large and complex e-business initiatives.
To deliver large e-business applications faster, better, and cheaper, your application development group must shift away from traditional methods. Instead of large teams, rigid requirements, and a linear progression toward a single, long-term goal, Web application development projects should be characterized by small teams, flexible requirements, and iterative development, which involves adding application functionality, getting user feedback, and refining requirements through a series of shorter delivery cycles.
Increase parallelism
By breaking large development projects into smaller subprojects that can be tackled simultaneously, the work can be completed in a shorter time frame without cutting corners or rushing the job. That is why one of the best approaches to compressing the development cycle of large e-business software projects is to increase parallel development. Large, complex Web applications are broken down into smaller chunks of functionality that are designed, developed, and tested in parallel and in short time frames ranging from one to six months, versus six to 18 months for traditional projects. Dividing large projects into subprojects also allows you to take advantage of smaller, more manageable development teams.
Keep development teams small
Small, high-quality, multidisciplinary development teams of six to 10 people, composed of analysts, designers, programmers, and user representatives, are highly recommended in fast-paced e-business development environments. When developing in crunch mode, it is not always easy to put people first. Nevertheless, keeping developers happy and motivated is key to ensuring e-project success. Keeping teams small helps encourage the teamwork and clear communication necessary to keep development projects on track.
The demand for higher-quality Web applications has driven many organizations to experiment with "new" approaches to software development. One approach that is getting a lot of attention is called pair programming, a fundamental principle of the XP or "extreme programming" school of thought.
In this method, each pair of programmers uses one computer to design, program, and test together. Proponents suggest this approach improves software quality (fewer defects, better match with requirements, simpler code) and reduces time to market. Pair programming also promotes sharing application knowledge among different people. For a closer look at this new development approach, see "Pair programming: Development times two."
Make use of iterative, evolutionary prototyping
With iterative development, prototyping becomes the prime vehicle through which Web application requirements are initially defined at a high level and then gradually refined through multiple iterations.
|
Accelerating Web application development step-by-step
1. Break large development projects into smaller sets of application functionality that can be worked on simultaneously.
2. Keep development teams small for easier management and communication. Consider pair program-ming, which can result in better software and faster development.
3. Take an iterative, evolutionary approach to prototyping. Build in functionality gradually using a series of short delivery cycles. Using time boxes aids iterative development by making deadlines rigid and deliverables flexible.
4. Test program code as early and as often as possible. Integrate testing into the build process and refactor code continuously to produce a higher-quality application.
|
Evolutionary prototyping calls for the rapid analysis, design, construction, and implementation of the core, must-have application functionality. Thereafter, the system is incrementally augmented with additional should-have functionalities, in subsequent iterations. Iterative development helps reduce the amount of time it takes to achieve a particular level of quality in Web applications, as errors are detected and corrected early.
At the end of an iteration cycle, the development team and users assess what went well and what did not. Based on the findings, the next round of iterations is adjusted in an effort to constantly improve the process.
Time boxing is a technique used to better control and monitor the iterative, evolutionary prototyping process. Each time box has rigid start and completion dates, which provide a fixed time frame for the work to be done, and a prioritized set of functional requirements associated with it. Users are heavily involved with the development team in defining and refining the scope of the time box and the requirements to be addressed inside the time box.
In a time box, the deadline is immovable but the functionality is flexible. The developers can deliver a reduced set of functionality but cannot change the delivery date. Most teams usually staff approximately six to 10 people per time box, and in large-scale Web projects, many time boxes can be initiated in parallel. Keep in mind that time boxing works effectively only if both users and developers are committed to the predetermined time constraint and acknowledge a possible reduction in the functionality of the deliverables.
Iterative prototyping is excellent for designing Web application front ends. But don't underestimate the design efforts associated with the back-end components of large-scale e-business applications. Make sure that your company develops sound data models up-front, especially for large, complex e-business systems.
These data models should be dynamically developed with users through joint facilitated sessions and then quickly translated into physical databases. Doing so will greatly reduce scalability and performance problems when the e-business system is operated in production.
Finally, an iterative, evolutionary prototyping and development process is more adaptive than predictive. Consequently, less emphasis should be given to formal documentation. In other words, the program source code, with embedded comments in proper sections, should become the de facto program documentation.
Test early and often
Developers should test their program code as early and as often as possible during the Web development life cycle. Proponents of XP even prescribe that unit test cases, an integral part of every programmer's daily routine, be prepared before coding. Integrating early and continuous testing into the build process will deliver a more stable, higher-quality Web application.
Another concept endorsed by the XP movement is refactoring, a set of techniques for identifying and improving bad code. Iteration after iteration, programmers continue to refactor the code to keep it as clean and simple as possible.
When developing large-scale Web applications, it is also imperative to initiate performance and load testing as early as possible during the e-development life cycle. Performance and load tests are executed against application stubs with automated Web testing tools that can simmulate customers and network loads. Remember, when e-business applications fail, customers can be lost and business relationships compromised. In the end, no consideration should take a backseat to quality.
By embracing the development accelerators outlined here, development staffs can trim months off of large, complex development projects and deliver applications that more closely match the needs of users and business partners. Streamlining the process should also lower development costs, as well as reduce application maintenance costs due to higher-quality code.