Incremental Development Model
Incremental development is based on the idea of:
• Developing an initial implementation
• Getting feedback from users and others
• Evolving the software through several versions until the required system has been
developed
• Interleaved SDLC processes : Specification, development, and validation activities are
interleaved rather than separate.
• Supports rapid feedback • Most common approach now-a-days
Incremental Model Approaches
• Incremental development approach can be:
• Plan driven • Agile •
Plan Driven
• the system increments are identified in advance
• Agile
• the early increments are identified
• the development of later increments depends on progress and customer priorities.
Incremental development benefits
1. Prepares the software fast.
2. Clients have a clear idea of the project.
3. Changes are easy to implement.
4. Provides risk handling support, because of its iterations.
• The cost of accommodating changing customer requirements is reduced.
• The amount of analysis and documentation that has to be redone is much less than is
required with the waterfall model.
• It is easier to get customer feedback on the development work that has been done.
• Customers can comment on demonstrations of the software and see how much has been
implemented.
• More rapid delivery and deployment of useful software to the customer is possible.
• Customers are able to use and gain value from the software earlier than is possible with a
waterfall process.
Incremental development problems
1. A good team and proper planned execution are required.
2. Because of its continuous iterations the cost increases.
The process is not visible. • Managers need regular deliverables to measure progress. If systems are
developed quickly, it is not cost-effective to produce documents that reflect every version of the
system.
System structure tends to degrade as new increments are added. • Unless time and money is spent
on refactoring to improve the software, regular change tends to corrupt its structure. Incorporating
further software changes becomes increasingly difficult and costly.
Integration and configuration
• In the majority of software projects, there is some software reuse.
• Since 2000, software development processes that focus on the reuse of existing software have
become widely used.
• Similar code
• Reuse-oriented approaches rely on: • A base of reusable software components • An integrating
framework for the composition of these components.
Types of reusable software
• Application system reuse – The whole application system may reuse without changing into other
systems. Alternatively, applications have been developed for specific requirements, but they can use
for different kinds of requirements.
• Component reuse – This may reuse Components of an application. For example, a messaging
system developed as part of a social media system may reuse in an online shopping service.
• Objects and functions reuse – Software components that implement a single function, or an
object class, can reuse. There are a lot of freely available libraries of functions and classes.
Developers can reuse those libraries for newly developed application code.
Steps of Reuse Oriented Model
• The reuse model has 4 fundamental steps which are followed:
[Link] identify components of old system that are most suitable for reuse.
[Link] understand all system components.
[Link] modify old system components to achieve new requirements.
[Link] integrate all of modified parts into new system.
• A specific framework is required for categorization of components and consequently required
modification.
Strengths
• Reduces development time & effort
• Reduces software development activities
• Reduced cost • Reduced risk factor
• Faster delivery of software • Higher software quality
Weaknesses
May increase complexity Reuse-oriented model is not always worked as a practice in its true form.
Compromises in requirements may lead to a system that does not fulfill requirement of user.
Sometimes using old system component, that is not compatible with new version of component, this
may lead to an impact on system evolution.
Difficulty of finding, understanding, and adapting reusable components. Increased maintenance
costs. Very less tool support.