Showing posts with label Agile development. Show all posts
Showing posts with label Agile development. Show all posts

Oct 4, 2009

Scrum

Srcum is another adaptive development style that gets term from the sport of rugby. In rugby scrum is the method used for getting an out-of-play ball back into play. Rugby players hutle together in a big mass while a referee drops the ball and the player scramble to pass the pass between their legs in an effort to pass it to a waiting runner. The basic principle between Scrum in the software development world is that teams hutle together and work rapidly to solve a problem.

“There are three basic concepts that describe Scrum: (1) its philosophy, (2) its organization, and (3) its practices. Focus is placed primarily on the team level, and emphasis’ individuals more than processes, while developers work together to build software in series of mini-projects. Developers work off a list of desired features/needs known as the “product backlog.” If an item is not on the backlog it is not included in the development product.


Image courtesy of: http://www.controlchaos.com/

Scrum organizations is made up of the primary roles: product owner, Scrum master and the Scrum team. The product owner is the client, the one who desired the development product, but they have more of a role then just that. As with Agile development they maintain an active and open dialog of communication with the development team and the Scrum master, but they also maintain the product backlog list. This backlog list is crucial, as nothing is added to the project without being on the list, and they approve and agree to any changes to the list. The Scrum master enforces Scrum practices and acts as a project manager and/or project champion. They help breakdown roadblocks that are hindering the team and is a focal point for communication with the team, but they do not set the schedule or assign tasks, the team does that. The scrum team is a small group of developers (5-9) to develop the software. In large development projects they may split the work among multiple scrum teams.

Scrum practices in many ways are similar to agile development, small teams, strong communication, and routine meetings. The team typically meets once a day for 15 minutes or less. The purpose of this meeting is to answer only three questions:

· “What have you done since the last daily Scrum?”
· “What will you do by the next daily Scrum?”
· “What got in your way, or is in your way, preventing you from completing your work?”

This meeting only to report issues. Problem solving is handled by the team during regular communication/development throughout the day. Development cycles are typically 30 days in length, know as a “sprint”. Where the developers work only on items from the backlog list. If at the end of the 30 days the client desires changes they are added to the backlog list and scheduled for another sprint.

Additional resources:
http://www.controlchaos.com/
http://www.mountaingoatsoftware.com/scrum
http://en.wikipedia.org/wiki/Scrum_(development)


Sep 22, 2009

Agile Development




Agile development is the modern software development process that allows for a rapid development of software in unknown, fast-changing environment, through the use of iterations, collaboration between the development team and customer, short cycles and strong communication skills. Cross-functional teams utilize a more efficient method of development that does adhere to a rigid timeline and checklist, eliminating excess time spent in modeling every detail or documenting every minor item, but in the end delivering a high-quality software product. This is not to say that the developers have free reign to write whatever code they wish and leave it undocumented, just that the primary emphasis is on developing workable prototype(s) software to the customer, over the need for rigidity.

The project development team and the customer must both maintain a high level of communication throughout the development process, with the software development team working on short cycles of approximately two to three weeks, and at the end of these delivering a useable prototype to the customer and there end-user’s can look at and provide feedback, allowing for the necessary changes to be implemented in later prototypes. This allows for the customer to continually make changes during the development process instead of asking for a lot of major changes at the end of development which is typically the case in more traditional projects.

In traditional development projects the customer may not fully understand what exactly they want the software to do, or may not communicate their ideas and wants to the development team who may spend considerable time and effort developing a product that meets the contract, but that the customer does not like, or requires expensive, time consuming changes. Agile and it’s seemingly a less focused method of development is actually just as structured utilizing the project management approach typically used in six-sigma and lean projects, and can greatly reduce costs and overall development time.

Agile development follows these four core idea know as the Manifesto for Agile Software Development:
• Responding to change over following a plan
• Individuals and interactions over process and tools
• Working software over comprehensive documentation
• Customer collaboration over contract negotiation

And follows the Principles behind the Agile Manifesto:
• Our highest priority is to satisfy the customer
through early and continuous delivery
of valuable software.
• Welcome changing requirements, even late in
development. Agile processes harness change for
the customer's competitive advantage.
• Deliver working software frequently, from a
couple of weeks to a couple of months, with a
preference to the shorter timescale.
• Business people and developers must work
together daily throughout the project.
• Build projects around motivated individuals.
Give them the environment and support they need,
and trust them to get the job done.
• The most efficient and effective method of
conveying information to and within a development
team is face-to-face conversation.
• Working software is the primary measure of progress.
• Agile processes promote sustainable development.
The sponsors, developers, and users should be able
to maintain a constant pace indefinitely.
• Continuous attention to technical excellence
and good design enhances agility.
• Simplicity--the art of maximizing the amount
of work not done--is essential.
• The best architectures, requirements, and designs
emerge from self-organizing teams.
• At regular intervals, the team reflects on how
to become more effective, then tunes and adjusts
its behavior accordingly.


Sep 14, 2009

Agile development

After reading several blogs, I have realized that most of the technical terms were introduced successfully. However, no one has mentioned the Agile software development and I thought I would touch on that. To be honest, my knowledge is not great in Agile but I have read about it before. Since I haven't had a job that requires implementing this methodology, I wont be technical; instead I will use simple terms of what I have understood. In the following paragraphs, a simple introduction of Agile development and a highlighting of the most important terms will be provided.

As defined in Wikipedia.org, agile development is a group of development methodologies based on iterative development with great dependence on effective cross functional teams communication. Even though this sounds like a great definition, it appears to be a little but broad. Because many resources refuse to provide a solid definition, instead they state that the agile development definition is basically any process that follows specific principles. Another definition that seems to be well directed is the mentioned in Agilemodeling.com; it's an iterative and incremental (evolutionary) approach to software development which is performed in a highly collaborative manner by self-organizing teams within an effective governance framework with "just enough" ceremony that produces high quality software in a cost effective and timely manner which meets the changing needs of its stakeholders. Of course, since there are an enormous amount of resources that each has different definitions, one cannot conform to one. The best way is to take the best of each definition and utilize that to help your understanding.

The Agile development process has several key terms that should be highlighted. first, Cross functional; it's apparent from the definition that Agile development should have a number of teams from various backgrounds/departments that align together during the process. second, frequent changes; perhaps the capstone of the Agile development because it relates to flexibility which is a rising requirement in system development. Third, customer satisfaction; because customers may not know what they want, being able to change conforms to customer satisfaction. Lastly, communication should be present all time because the Agile development process emphasizes on the ability to effectively engage both the cross functional teams and the customers into expressing and delivering their views.

In conclusion, Agile development is one of the most effective business practices around the world and is gaining a lot of attention since the manifesto. Hopefully by the end of the course, a clear understanding of the process will formed.