Engineering Full Stack Apps with Java and JavaScript
A software development process, also known as a software development life-cycle (SDLC) defines all the tasks required for developing and maintaining software. A software development methodology is a framework that is used to structure, plan, and control the software development process. Common methodologies include waterfall, prototyping, iterative and incremental development, spiral development, rapid application development and agile methodologies such as Scrum, Kanban and extreme programming (XP).
Though the terms iterative and incremental are used interchangeably, they are not exactly the same. Iterative means developing partial software fast, test it, demo to stakeholders and based on feedback, improve the product in repeated cycles (iteration) even evolving the specification and design. Iterative can thus also be called iterative and evolutionary design. Incremental means developing a system with minimal features and then enhance the product in smaller portions at a time (incremental), usually by adding features. Iterative and Incremental development (IID) is any combination of both iterative and incremental build model for development, and is a preferred combination according to many. Iterations are time boxed and time usually varies from two to six weeks.
Iterative model is not the same as prototype model. Every iteration in an iterative model produces a partial system which is part of the overall system and is improved through repeated cycles (iteration) of development activities. A prototype is however an experimental or throw away model done as a proof of concept (POC) or for better understanding of the product during initial discussions.
Iterative model is different from waterfall model in that, waterfall model needs all the requirements to be clear and finalized before development starts and doesn’t encourage later changes, whereas iterative development starts with a partial system or a system with minimal feature and are improved or incrementally developed, giving a provision to change the priority of requirements or change requirements between iterations. Iterative model also allow changing the system based on feedback from stakeholder or from the testing team. Iterative model understands the fact that change is inevitable in the software world, especially when you are creating a new product or a solution to a problem. Iterative model has better success rates in real world than a fixed sequential model such as waterfall model. In practice many of the features in waterfall model are either not used much or become obsolete in the end. Early feedback and under engagement in iterative model ensures better customer satisfaction and less risk of failure. Though some people try mixing iterative and waterfall model, it is not considered a good practice.
Unified Process (UP) is a popular iterative and incremental software development process framework. UP has four major phases:
Inception, which can be considered as a feasibility phase where only enough research is done to make sure you can go ahead with the project, and is not same as requirements phase.
Elaboration, where core architecture based, high business value and high risk features are done iteratively, and elaboration is not same as requirements or design phase.
Construction, where the remaining features are implemented iteratively.
Transition, where tests, deployments etc. are performed.
UP also contain a set of disciplines such as business modeling, requirements, design, implementation, test, deployment, configuration, change management, project management, environment etc. During every iteration, there will be some work done for each of these disciplines, but the effort may change. Early iterations may concentrate more on requirements and design, whereas later iterations may concentrate more on development, testing and environment. Most practices in UP are optional and it also allows to take best practices from other methodologies.
The best-known and extensively documented refinement of the Unified Process is the Rational Unified Process (RUP). The Rational Unified Process (RUP) was created by the Rational Software Corporation, a division of IBM since 2003. I had attended the IBM Rational conference in 2010 and has taken the certification IBM Certified Solution Designer - Rational Unified Process V7.0 during the conference. RUP provides tested best practices for software and systems delivery and implementation and for effective project management. It is one of many processes contained within the Rational Process Library. IBM Rational Method Composer allows you to easily customize RUP to meet the unique needs of your project.
Agile is an iterative methodology that follows the agile manifesto. Read more about agile at our agile book.
Agile Unified Process (AUP) is a simplified version of the IBM Rational Unified Process (RUP) developed by Scott Ambler and describes using agile techniques and concepts yet still remaining true to the RUP. The AUP applies agile techniques including test driven development (TDD), Agile Modeling, agile change management etc. In 2012 the AUP was superseded by Disciplined Agile Delivery.
http://en.wikipedia.org/wiki/Software_development_process
http://en.wikipedia.org/wiki/Iterative_and_incremental_development
http://en.wikipedia.org/wiki/Unified_Process
http://en.wikipedia.org/wiki/IBM_Rational_Unified_Process