Overview of the software life cycle
The conception, implementation, and evolution of software will follow a particular life cycle, depending on the problem to be solved, the software and hardware chosen, and the inevitable changes to system requirements and functionality that happen over time. It can be extremely useful to construct a prototype system in advance of a full-scale implementation; because a prototype typically addresses all of the important aspects of a system to be built, it can be a means to sharpen the system requirements and focus the development team on the most important challenges and risks. In order to understand the role that prototyping can play in an e-commerce application, it is first necessary to understand the basic steps in the software life cycle.
Requirements Elicitation and Specification
The software process begins with requirements elicitation and specification. Through a set of communications with customer representatives, the software engineers begin to specify the system to be built by documenting its desired characteristics: functions provided to the user, user interface, interfaces to other software systems, desired performance criteria, required robustness, error handling and security, update mechanism(s), deployment platform(s), and so on. The result is a formal document, referred to as the Requirements Specification, which is typically used as the basis for detailed planning and contracting with the customer
The design phase maps the functions described during the analysis phase into (a) a set of software modules and (b) a software architecture that integrates the modules into a complete system. At the module level, design has two aspects: (a) partitioning the system’s functionality into specific modules (modular design) and (b) specifying the particular algorithms and data structures to be used by each individual module (detailed design). In objectoriented development, modules are typically classes in an object-oriented programming language such as Java.
Approaches to Prototyping
The software components created in a prototyping exercise may or may not be part of a full-scale implementation, but a prototype should demonstrate some subset of the desired functionality and user interface. Prototypes can be classified into two broad categories: evolutionary prototypes and throwaway prototypes (Pressman, 2001). Each approach has specific advantages and disadvantages, depending on the goals of the prototyping exercise
Why Do We Do Prototyping?
There are a variety of reasons to construct a prototype; most involve a desire to better understand the problem domain, the user’s requirements, the technology to be used, or the trade-offs inherent in various system design choices (technology, architecture, etc.).
The nature of e-commerce software
Software development is an inherently risky endeavor. Complex systems are difficult to deliver without significant defects, even when adequate time and resources are available. E-commerce systems are even more challenging, because they are subject to additional pressures that increase the risks associated with software delivery.
Development on “Internet Time”
Unlike company-internal software development, which proceeds according to schedules set within the organization, e-commerce systems are often developed under the pressures of “Internet time”—the expectation is that new technologies and solutions are rolled out every 3 to 6 months, under the credo “evolve rapidly, or die.” This time pressure has an adverse effect on software development. In the absence of adequate time to complete the various phases in the software engineering life cycle, software quality degrades as less time is spent on analysis, design, and testing. With so little time available for development, one might question whether prototyping is an appropriate strategy, especially if a throwaway prototype (and its associated “waste” of resources) is being considered.
Prototyping is an important part of software engineering. Building a prototype can be an effective way to build customer consensus on requirements, gain clarity on the details of a complex architecture, determine the look and feel of a Web site, and alleviate the technical risk associated with emerging technologies. Although e-commerce developers are under pressure to produce working systems quickly, the use of an incremental prototyping model helps to improve the quality of delivered systems by uncovering defects and performance problems earlier in the development cycle. An iterative Web life-cycle model (such as Pressman’s WebE process) involves all stakeholders early in the development process and gives explicit emphasis to content design and creation, which are a distinguishing (and challenging) characteristic of Web applications.