A Glossary for Agile Programming Methodologies
It’s well known that the Agile movement proposes alternatives to traditional project management. You likely are aware that Agile approaches are typically used in software development to help businesses respond to unpredictability. The results of this approach to development greatly reduces both costs and time to market. Because teams can develop software at the same time they’re gathering requirements, it’s less likely to impede a team from making progress.
In the end, it can help companies build the right product, instead of committing to market a piece of software that hasn’t yet even been written.
In this post, we will take an early exploration into Agile Programming Methodologies by introducing you to a set of usual terms for this approach. Let’s begin with a strict definition for Agile Programming …
Agile Programming: Agile refers to iterative and incremental development, wherein a solution is reached through collaborative self-organized teams. They key is to use short time-boxed iterations, which usually refers to a software release. Iterations are fixed length and involve all activities, including requirement analysis, coding and testing, usually at the same time.
XP: Extreme programming focuses on technical practices intended to improve the quality of software through frequent releases by providing user acceptance testing at the end of each release. Releases are iterated at short intervals of less than four weeks. The core values of extreme programming include communication, simplicity, feedback and courage. The common roles in this methodology include customer, programmer, coach and tracker.
Pair Programming: Pair programming is an XP development methodology practice, wherein two programmers are involved: one acts as the driver writing the code; the second acts as the observer who reviews the code as it’s written.
User Story: This is a definition of what the business system does. It defines what needs to be done, by whom, and how. User stories influence the functionalities of the system under development. It can also include non-functional requirements, such as performance, security and quality.
Scrum: In this methodology, developers are self-organized. The methodology involves delivering software after an iteration that provides maximum business value. It is based on a 30-day iteration called a sprint. There is no specific plan; developers work toward a specific sprint and organize themselves through daily scrums. A daily scrum is typically 10 minutes to 15 minutes, and usually involves a discussion of what was done since the last scrum and what needs to be done by the next one. However, this does not imply it’s a status meeting, which means members don’t discuss the percentage of what has been done relative to the entire task. The major roles include:
- Product Owner
- Scrum Master
- Team Member
Burndown Chart: A burndown chart is used for tracking a sprint’s progress. It is updated everyday and shows the remaining work for each sprint. It is usually a publicly displayed chart.
Product Backlog: The product backlog is a list of bugs, enhancements and improvements that are not included in the current release. It is usually an ordered list and is linked to each product owner. It also keeps track of the product owner’s assessment of the business value and the development team’s efforts.
Sprint Backlog: The sprint backlog is a list of backlog items that were not completed in the current sprint and that needs to be addressed during the next sprint. The development team keeps track of the efforts taken in one sprint and assesses it to make improvements during the next sprint. A task board is maintained to keep track of the progress of sprints.
Scrum Master: The scrum master manages the entire scrum project. He or she keeps in check the team’s abilities and makes sure the team’s work is completed per the scrum. The scrum master is typically a buffer between the team and any external and/or internal influences.
Lean Software Development: This methodology involves removing waste, such as unwanted features, processes or code, while improving efficiency. The customer is key in this methodology, because there is constant feedback from the customer. It involves collecting the right requirements, which refers to those that are clear, definable and complete. The requirements that do not meet these criteria are left out during the development process. The major lean principles are:
- Eliminate waste
- Build Quality In
- Create Knowledge
- Defer Commitment
- Deliver Fast
- Respect People
- Optimize the Whole
Adaptive Software Development: Adaptive software development embodies a dynamic speculate-collaborate-learn lifecycle. The focus is on results and quality rather than the process used to achieve it. It lays the foundation for better collaboration and learning activity.
Feature Driven Development: The primary focus here is on the design and building phases, unlike other methodologies that cover all the phases of the software development. The processes included are:
- Develop an overall model
- Build a list of features
- Plan by feature
- Design by feature
- Build by feature
The roles involved in this methodology includes a project manager, chief architect, development manager, chief programmer, class owner, domain expert, tester, deployer and technical writer.
Kanban: Kanban is a just-in-time software development process which can be treated like a pipeline, wherein requests enter one end and the improved software exits the other end. The pipeline typically includes the requirements analysis, code development and testing phases. Kanban works on two core practices: Visualize your work; and limit your work in the process. Tasks are assigned using a pull-based model focusing on available capacity, rather than a push-based model.
There you have it. A good start to building your vocabulary and knowledge in regard to Agile Programming Methodologies. But let’s keep the conversation going! Send us your thoughts and inquiries today to firstname.lastname@example.org. Or, visit us now at www.flux7.com to learn more.