Friday, January 1, 2010

Iterative / Incremental Methodology Questions

Explain Iterative Methodology.
Answer

Explain Incremental Methodology.
Answer

Basic rule of thumb:

Iterative
– Each iteration implements a subset of requirements through the test phase.
– Each iteration adds new functionality and/or refines existing functionality.

Incremental
– Each increment corresponds to a release with new functionality.
– Each increment has gone through several iterations.

Explain in your own words a distinction between the iterative and incremental life cycle models.

Iterative Methodology – Multiple passes through the process life cycle, resulting in changes to previously delivered functionality and/or new functionality.

Incremental Methodology – Delivering functionality piecemeal. Usually uses iterative development approach, but doesn't have to.

What are the strengths of incremental model?

Develop high-risk or major functions first.
Each release delivers an operational product.
Customer can respond to each build.
Uses "divide and conquer" breakdown of tasks.
Lowers initial delivery cost.
Initial product delivery is faster.
Customers get important functionality early.
Risk of changing requirements is reduced.

What are the weaknesses of incremental model?

Requires good planning and design.
Requires early definition of a complete and fully functional system to allow for the definition of increments.
Well-defined module interfaces are required (some will be developed long before others).
Total cost of the complete system is not lower.

When to use incremental model?

Risk, funding, schedule, program complexity, or need for early realization of benefits.
Most of the requirements are known up-front but are expected to evolve over time.
A need to get basic functionality to the market early.
On projects which have lengthy development schedules.
On a project with new technology.

You are currently working for a networking company that is working on optical networks, which is the hottest, fastest growing area. You are a software engineering hired to write the software to configure and test the hardware (i.e., set up and configure the new optical routers).
The software must ship with the hardware, otherwise the hardware is useless. Unfortunately, the hardware is constantly being changed and will not be finalized until a few weeks before shipping.


What process model would you use? What team organization would you use? Briefly justify your answers.

Answer: The incremental model is a definite choice here since you need to produce a working product in a very short amount of time. The basic features could be included in the first release and more advanced features added in later releases. Prototyping is not appropriate because you need to construct a real deliverable. The waterfall model is not appropriate as well given the constantly changing environment. Finally, extreme programming may be a viable alternative if you can talk to the hardware engineers frequently. However, its democratic team structure may not work well with a strict deadline.

Given the strict deadline, a controlled team organization is needed. A controlled-decentralized organization is probably best, since the technology is new and therefore problem solutions could require some originality. A democratic team organization is definitely not a good idea if you want to ship the product on time.

Which software process model best supports development of applications with successful user interfaces, and why?

Several do. The Spiral model and any incremental model do. They work because the process allows users to state their initial goals and requirements, all the developers to work ahead a bit (do an initial UI design, e.g.), and then give the users the opportunity to review and rethink what they want.

References:
http://www.apl.jhu.edu/Notes/Demasco/605704/SoftwareLifeCycles.pdf
http://www.computing.dcu.ie/~hamilton
http://www.cse.scu.edu/~atkinson
http://www.coursehero.com/file/2043196/MidtermSolutionKeydoc