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

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 3: Line 3:
==What is 'Agile Methodologies'?==
==What is 'Agile Methodologies'?==


'Principle of Least Astonishment' or 'Rule of minimum surprise' asserts that the system will cause the least surprise for the user by being as consistent and predictable as possible, and therefore usable. Which imply that in case of an ambiguity or a conflict in the system, the behavior of the system should be the one which will least surprise the user. In computer science, this principle has a wide range of application in topics such as user-interface design, programming language design, and programming. This principle is used in various disciplines as well as computer science such as engineering, science, and philosophy which are covered later in this wiki. After this brief information about the principle of least astonishment, now we are going to talk more about the sources found online about this topic and how well they explore the topic.
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, codeing, integration, testing) are practiced through every iteration, where iteration take 1-2 week(s). Moreover, it put more practices in term of coding and testing together, as: Test drivin design; Unit testing; Refactoring; Pair programming; Collective ownership; Simple design; Metaphor; Continuous integration; and Customer access. <br>
Previous practices were introduced to achieve certain values (Communication, Feedback, Courage, Simplicity, Respect). It is true that these practices will help to provide the best environement for these values to exist. Neverthless, many of these practices acquire the existance of these values in the project, the company, the manegment, the individuals, and moreover the customer. Certain enough these values represent a moral and professional values that should exist in every social and individual system, neverthless we recognize there variation in every system. Also many of these values might be out of the control as simplicity of the software 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, where these values exist.<br>
Many Agile methodologies are introduced in the last decade (XP, Scrum, DSDM, FDD, Lean, Adaptive, Crystal). It would be very difficult to introduce every aspect of these methodology in this wiki. That is why current wiki will concentrate in the most popular methodology XP (Extreme Programming), although will provide links to other methodologies as well.<br>
 


==Arguments *Against* Agile Methodologies==
==Arguments *Against* Agile Methodologies==

Revision as of 21:46, 13 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 Methodologies'?

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, codeing, integration, testing) are practiced through every iteration, where iteration take 1-2 week(s). Moreover, it put more practices in term of coding and testing together, as: Test drivin design; Unit testing; Refactoring; Pair programming; Collective ownership; Simple design; Metaphor; Continuous integration; and Customer access.
Previous practices were introduced to achieve certain values (Communication, Feedback, Courage, Simplicity, Respect). It is true that these practices will help to provide the best environement for these values to exist. Neverthless, many of these practices acquire the existance of these values in the project, the company, the manegment, the individuals, and moreover the customer. Certain enough these values represent a moral and professional values that should exist in every social and individual system, neverthless we recognize there variation in every system. Also many of these values might be out of the control as simplicity of the software 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, where these values exist.
Many Agile methodologies are introduced in the last decade (XP, Scrum, DSDM, FDD, Lean, Adaptive, Crystal). It would be very difficult to introduce every aspect of these methodology in this wiki. That is why current wiki will concentrate in the most popular methodology XP (Extreme Programming), although will provide links to other methodologies as well.


Arguments *Against* Agile Methodologies

lack of structure and necessary documentation only works with senior-level developers incorporates insufficient software design requires too much cultural change to adopt can lead to more difficult contractual negotiations

Arguments *Support* Agile Methodologies

"Are agile methods good for design?" is a blog of an instructor, Alex Bunardzic, where he shares his in class experience when he was teaching Principle of Least Astonishment. The example that he gave in class is the Ruby on Rails code where he suggests using <%yield%> instead of <%content_for_layout%> to demonstrate this principle. This web page is not a good start to learn the topic, but it gives the idea of the principle and it demonstrates it with the Ruby on Rails code which is very related to what we have been doing in our class.

Success Stories


Agile Methodologies in Other Disciplines

Education

Project Manegment

R&D


Conclusion

This wiki is intended to be a Guide for Principle of Least Astonishment. It provides many links to online sources that explains the topic simply with easy-to-understand examples, and/or gives an idea where this principle can be used in real-life. These links should be helpful for the ones who want to learn more on this topic or understand the topic in more detail.

This principle can be used in many different disciplines for a universal useful solution for good designs. But it should be taken into consideration that the principle goes parallel with common sense, although it may not go with the convention.

"Who Stole Agile?"

Refrences

External Links by Side

Against

With


External Links by Methodology

XP