CSC/ECE 517 Fall 2007/wiki3 10 tm: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
Line 24: Line 24:
* Requires too much cultural change to adopt.<br>  
* Requires too much cultural change to adopt.<br>  
* Go against "Human Psychology": many human factor might limit or currupt the process, such as: People prefer to follow a process, No milestones, People self-interest, mini-dictatorships, Knowledge Monopolies, Resource management vanish, customer dissatisfaction.<br>
* Go against "Human Psychology": many human factor might limit or currupt the process, such as: People prefer to follow a process, No milestones, People self-interest, mini-dictatorships, Knowledge Monopolies, Resource management vanish, customer dissatisfaction.<br>
* don't aquire UML for design, and design session should be minimized.<br>
* Don't use UML for design, and design session should be minimal.<br>
* The cost efficiency of pair programming is questionable.<br>
* The cost efficiency of pair programming is questionable.<br>
* Some activities for extreme programmers would not be accepted for other experienced programmers; i.e.<YAGNI principle> You Aren't Going to Need It, and <DTSTTCPW> Do The Simplest Thing That Could Possibly Work.
* Some activities for extreme programmers would not be accepted for other experienced programmers; i.e.<YAGNI principle> You Aren't Going to Need It, and <DTSTTCPW> Do The Simplest Thing That Could Possibly Work.
* Pre-factoring: Others suggest to design forward if you Know You Are Going to Need It.
* No up-front design nor "Pre-factoring".
* No Documentaion is acquired, just keep it minimal!<br>
* No Documentaion is acquired, just keep it minimal!<br>
[[Image:dilbert-Interaction.gif|center]]<br>
[[Image:dilbert-Interaction.gif|center]]<br>

Revision as of 16:28, 18 November 2007

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.

What is 'Agile Methodology'?

Agile Methodology was introduced as an iterative approach for developing software as a counter to waterfall approach. Where the five main phases of waterfall (requirement, design, coding, integration, testing) are practiced through every iteration. Moreover, it suggested several practices to enhance the software developments, see next figure from [http://txpug.editme.com/files/Lec2004Jul26/rupvagile.1.ppt "Finding Agility -�A comparison of RUP and Agile"], *.PPT .


Many Agile methodologies were introduced in the last decade (XP, Scrum, DSDM, FDD, Adaptive, Crystal). It would be difficult to introduce every aspect of these methodologies in this wiki. That is why, This wiki will concentrate in the most popular agile methodology, XP (eXtreme Programming).

Comparison Basis for Robust Design

A comparison between Agile methodologies and Waterfall methodology is found to be a little out of scope, as the advantages of iterative methodologies already recognized. That is why the current wiki will concentrate to compare with other iterative methods, such as RUP (Rational Unified Process). RUP share many of Agile's practices. Other practices can be immigrated from XP to RUP, or vise versa. Other features will still be unique to XP or in RUP. Next figure outline these practices, from [http://txpug.editme.com/files/Lec2004Jul26/rupvagile.1.ppt "Finding Agility -�A comparison of RUP and Agile"], *.PPT .


In the current wiki we will try to test the Agile Manifesto and its related practices relative to design quality. These found to be the comprehensive basis for comparison as it provide the basis Agile methodologies trying to establish over other methods.

Individuals and Interactions Over processes and tools

Agile methodologies clearly state their believe that people is the main driver to project sucess, rather than the process and the tool. Agile Methodologies encourage individuals and their interaction through several practices and principles;

  • Motivated individuals and Self organized team: Planning Game, Collective ownership.
  • Face to Face Communnication: Pair programming, Open space, On-site customer, Planning game.
  • Sustainable Base.

Critique

  • Requires too much cultural change to adopt.
  • Go against "Human Psychology": many human factor might limit or currupt the process, such as: People prefer to follow a process, No milestones, People self-interest, mini-dictatorships, Knowledge Monopolies, Resource management vanish, customer dissatisfaction.
  • Don't use UML for design, and design session should be minimal.
  • The cost efficiency of pair programming is questionable.
  • Some activities for extreme programmers would not be accepted for other experienced programmers; i.e.<YAGNI principle> You Aren't Going to Need It, and <DTSTTCPW> Do The Simplest Thing That Could Possibly Work.
  • No up-front design nor "Pre-factoring".
  • No Documentaion is acquired, just keep it minimal!



Working software Over comprehensive documentation

Agile Methodologies shows strong customer orientation by providing incremental delivery of working software. This will also decrease the confusion while integrating at the end of the project and it become easier to zoom in the bug(s). Agile methodologies support this concept by

  • Continuous Releases: small releases and continuous integration.
  • Face to Face Communnication: Pair programming, Open space, On-site customer, Planning game.
  • Executable Communication: Clear code (refactoring, simple design, standard code, metaphor), User stories.

Critique

  • Deliver to whom: In many times the customer(s) is not interested enough to use the incremental releases.
  • 2-8 weeks releases is too short to accomodate.
  • Only works with senior-level developers. Developers need to gather requirements, test, code, refactor the code, integrate, release and PLAN.Developer need to do all this without stopping to design nor to give a deep thought about it.
  • Oral communication does not provide presistance and on-demand source of information.
  • It is very difficult to keep the code clear to compensate the lack of necessary documentation.

Customer collaboration Over contract negotiation

While Agile methodology keep a broad meaning of the customer, which can be a member of the team, another part of the company or a contract customer. It is still aquire his/her existance with the team. Which create a strong communication between the cusomter and development team.

Critique

  • Can lead to more difficult contractual negotiations
  • This might make the customer controlling the development process, or in the other hand, not realizing what his/her buissness really need.
  • Place large responsibilty in the customer, and no responsibility in the developers to learn more by themselves about the bussiness.


Responding to change Over following a plan

Agile Methodologies incorporate the uncertainity exisiting in the project by creating an agile process that doesn't place planning further than exsitng iteration. This will reduce the cost of planning, and re-planning again. This principle is supported by many practices as incremental planning, refactoring and delaying decisions.

Critique

  • Manegment and customer need to know an estimation for the time and resources needed.
  • Incorporates insufficient software design and frone-end design.


Agile Methodologies' Real Manifesto

XP/Agile's practices are introduced to achieve certain values (Communication, Feedback, Courage, Simplicity, Respect). It is true that these practices will help to provide the best environment for these values to grow. Nevertheless, many of these practices acquire the existence of these values in the project, the company, the management, the individuals, and moreover the customer. Certain enough these values represent moral and professional values that should exist in every social and individual system. Nevertheless, we recognize their variation in every system. Moreover, many of these values might be out of the control as simplicity of the project or the courage of the customer. The author think that is why Agile approach will give even a better results in different area such as R&D or education, see links.

The question will be "Which should exist first the values -the egg- or the Agile methodology -the chicken-."

Conclusion

Agile methodologies provided a framework for software development. These methodologies not mint to be for every project, company and/or person. To gain the promised savings in the documentation, architecture and process, you need more than Agile practices; You will need Communication, Feedback, Simplicity, Courage, Respect existing in your company, project, individuals and in the customer. If you can't achieve these conditions, then you will need to be assisted with more documentations, design and process. Still Agile methodology will provide you with a lot of useful tools, you can pick and match what is suitable for your company, project, customer and personality.

Refrences

<references />

External Links by Side

Arguments *Against* XP

Arguments *Support* XP

Success Stories

External Links by Field

Programming

Education

Project Management

R&D