CSC/ECE 517 Fall 2007/wiki3 10 sb

From Expertiza_Wiki
Revision as of 03:18, 12 November 2007 by Sbhatia2 (talk | contribs) (→‎Conclusion)
Jump to navigation Jump to search

Assignment
The Agile debate. Perhaps the most prominent controversy in o-o design today is whether it is possible to do a robust design with as little advance planning as agile methodologies recommend. Research this issue, on the Web and in the ACM DL, and report (fairly) on the major arguments of both sides, and on the evidence for both positions.

Agile software development

Agile software development (hereafter ASD) is a model in Software Engineering to develop software through multiple iterations throughout the life-cycle of project. The result is a complex, high-speed, self-correcting methodology that occurs under conditions of high uncertainty, high change and high stress resulting into delivery of value to customer along with providing an adequate quality of life to team members.

Each iteration of ASD is an entire software project. The iteration includes planning, requirements analysis, design, coding, testing, and documentation. At the end of every iteration we have a deliverable product. Only at this point of time, the project requirements are re-evaluated and the requirements with highest priority are chosen by peer review, and on-site customer participation.

Pros

  1. Emphasize face-to-face communication.
  2. Requirement changes at any stage are welcome, since they can be incorporated in next iteration [1].
  3. A working software is delivered at the end of every iteration
  4. Agile infuses positive environment and promotes culture of motivation, collaboration and trust.
  5. Continuous attention to design

Cons

  1. The requirement for next iteration along with its completion date/budget are known since iteration is quick. However, the project completion date/budget is not always clear.
  2. The management has to be willing, to let go of micro management.
  3. Requires competent and trustworthy team members.
  4. Success of Agile methods in case of large scale development efforts and mission critical software’s is under doubt.
  5. Unsuitable for telecommuters
  6. Produces very little written documentation

Structure/Robustness in Agile Software Development

Now that we have a good sense of what an Agile Software Development model means, we would elaborate on how it ensures that the deliverables are/aren’t robust.

  1. The agile software development is a continuously self correcting process. Whereas the traditional models try to do things right at the first time, ASD tries to do things right at the first place as well, but fosters learning by looping. [2]

. . . . . .......working...... . . . .

Conclusion

Teams using Agile software development may not have a robust structure in the first iteration/version, however as the developmenet goes on, the code grows more robust and reliable unlike waterfall where the code deteriorates on every iteration manily because

References
[1] Extreme Programming Explained: Embrace Change, K. Beck, Addison-Wesley,2000
[2] Ad Hoc Practices or Sound Principles, Lan Cao and Balasubramaniam Ramesh