Agile Process in Software Engineering

Agile principles

  • The highest priority of this process is to satisfy the customer.
  • Acceptance of changing requirement even late in development.
  • Frequently deliver a working software in small time span.
  • Throughout the project business people and developers work together on daily basis.
  • Projects are created around motivated people if they are given  the proper environment and support.
  • Face to face interaction is the most efficient method of moving information in the development team.
  • Primary measure of progress is a working software.
  • Agile process helps in sustainable development.
  • Continuous attention to technical excellence and good design increases agility.
  • From self organizing teams the best architecture, design and requirements are emerged.
  • Simplicity is necessary in development.

Extreme Programming (XP)

  • The Extreme Programming is commonly used agile process model.
  • It uses the concept of object-oriented programming.
  • A developer focuses on the framework activities like planning, design, coding and testing. XP has a set of rules and practices.

xp process

XP values

Following are the values for extreme programming:

1. Communication
  • Building software development process needs communication between the developer and the customer.
  • Communication is important for requirement gathering and discussing the concept.
2)  Simplicity
The simple design is easy to implement in code.

3. Feedback
Feedback guides the development process in the right direction.

4. Courage
In every development process there will always be a pressure situation. The courage or the discipline to deal with it surely makes the task easy.

5. Respect
Agile process should inculcate the habit to respect all team members, other stake holders and customer.

The XP Process

The XP process comprises four framework activities:

1. Planning
  • Planning starts with the requirements gathering which enables XP team to understand the rules for the software.
  • The customer and developer work together for the final requirements.
2. Design
  • The XP design follows the 'keep it simple' principle.
  • A simple design always prefers the more difficult representation.
3. Coding
  • The coding is started after the initial design work is over.
  • After the initial design work is done, the team creates a set of unit tests which can test each situation that should be a part of the release.
  • The developer is focused on what must be implemented to pass the test.
  • Two people are assigned to create the code.  It is an important concept in coding activity.
4. Testing
  • Validation testing of the system occurs on a daily basis. It gives the XP team a regular indication of the progress.
  • 'XP acceptance tests' are known as the customer test.

Scrum

  • Scrum is an agile software development method.
  • Scrum principles are consistent with the agile platform that are used to guide development activities within a process.
  • It includes the framework activities like requirement, analysis, design, evolution and delivery.
  • Work tasks occur within a process pattern in each framework activity called as 'sprint'.
  • Scrum highlights the use of a set of software process pattern that are effective for the projects with tight timelines, changing requirements and business criticality.
  • Scrum consists of the use of a set of software process patterns.
Each process patterns defines a set of development actions which are as follows:

Backlog
  • A prioritized list of project requirements or features that provide business value for the customer.
  • Items can be added to the backlog at any time.
  • The product manager accesses the backlog and updates priorities, as required.
Sprints
  • It consists of work units that are required to achieve a requirement defined in the backlog.
  • Changes are not introduced during the sprints. It allows team members to work in short-term but in the stable environment.
Scrum meeting
  • The short meetings are held daily by the scrum team.
  • The key questions are asked and answered by all team members.
  • Daily meetings guide to 'knowledge socialization' and that encourages a self-organizing team structure.
Demos
  • Deliver the software increment to the customer. Using which the customer evaluates and demonstrates the functionalities.