03-05-2012, 11:35 AM
Software Process Models:
1.WATERFALL MODELS:
Main characteristics:
– Also called classic software life cycle or sequential model
– Process activities (phases/stages) are clearly separated
– After a number of iterations, phases of the life cycle (such as specification and design) are “frozen”
• Advantages:
– Organized approach, provides robust separation of phases
– Reflects common engineering practice
• Disadvantages:
– Doesn’t cope well with changes required by the client
– Development teams might wait for each other
– A working version of the product is available only late
• Applicability:
– When requirements are well known and few changes are likely to be needed
– Can be used also for parts of larger software systems
2 .EVOLUTIONARY DEVELOPMENT:
Main characteristics:
– The phases of the software construction are interleaved
– Feedback from the user is used throughout the entire process
– The software product is refined through many versions
• Types of evolutionary development:
– Exploratory development
– Throw-away prototyping
• Advantages:
– Deals constantly with changes
– Provides quickly an initial version of the system
– Involves all development teams
• Disadvantages:
– Quick fixes may be involved
– “Invisible” process, not well-supported by documentation
– The system’s structure can be corrupted by continuous change
• Disadvantages [cont’d]:
– Special tools and techniques may be necessary
– The client may have the impression the first version is very close to the final product and thus be less patient
• Applicability:
– When requirements are not well understood
– When the client and the developer agree on a “rapid prototype” that will be thrown away
– Good for small and medium-sized software systems
3. COMPONENT-BASED MODEL :
Main characteristics:
– Makes intensive use of existing reusable components
– The focus is on integrating the components rather than on creating them from the scratch
• Advantages:
– Reduces considerably the software to be developed “in-house”
– Allows faster delivery
– In principle, more reliable systems, due to using previously tested components
• Disadvantages:
– Compromises in requirements are needed
– Less control over the system’s evolution
• Applicability:
– When there is a pool of existing components that could satisfy the requirements of the new product
– Emerging trend: integration of web services from a range of suppliers
4. INCREMENTAL DEVELOPMENT MODEL:
Main characteristics:
– Hybrid model that combines elements of the waterfall and evolutionary paradigms
– The specification, design, and implementation phases are broken in smaller increments
• Advantages:
– Provides better support for process iteration
– Reduces rework in the software construction process
– Some decisions on requirements may be delayed
– Allows early delivery of parts of the system
– Supports easier integration of sub-systems
– Lower risk of project failure
– Delivery priorities can be more easily set
• Disadvantages:
– Increments need be relatively small
– Mapping requirements to increments may not be easy
– Common software facilities may be difficult to identify
• Applicability:
– When it is possible to deliver the system “part-by-part”
5. SPIRAL MODEL :
• Main characteristics:
– Also a hybrid model that support process iteration
– The process is represented as a spiral, each loop in the spiral representing a process phase
– Four sectors per loop: objective setting, risk assessment and reduction, development and validation, planning
– Risk is explicitly taken into consideration
• Advantages:
– Risk reduction mechanisms are in place
– Supports iteration and reflects real-world practices
– Systematic approach
• Disadvantages:
– Requires expertise in risk evaluation and reduction
– Complex, relatively difficult to follow strictly
– Applicable only to large systems
• Applicability:
– Internal development of large systems