Agile is a software development model that encourages the continuous iteration of development and testing in the entire software development lifecycle of the project. It’s a modern approach in Software Development in which requirements and solution evolve through the collaborative effort of self organizing and cross-functional team along with their customers or end users. It is related to the method of project management, used especially for software and web apps development, that is characterized by the division of tasks into short chunk of work and frequent reassessment and adaptation of plans.
In agile approach, which is guided by the Principles of Agile Manifesto, both the development as well as testing activities are concurrent. Majority of documentation tasks like that in waterfall and prototype models are avoided and every activities in this model move very fast. Product development traverse through activities like Requirements Collection, Planning, Design and Development, Testing, Release and Monitoring very fast in this model of software development.
IN AGILE MODEL, values are delivered to customers in small increments onE after another where they get time and chance to experience it and provide feedback right away.Key Point to Remember
As inputs and requirements from all the stakeholders as well as executives, customers, end users and team as a whole are collected, process proceed by gathering all the high level(Generic) requirements and features in one place. The initial list of high level requirements are referred to as epic. Epic is nothing other than collection of client’s organizational/business needs.
For example: As a teacher,
I’m having difficulty in managing students attendance and I need an application that can be used in classroom for students attendance management.
(Above need can be taken as an example of epic. It only address “why?” part of software development and cover huge requirement.)
Collected epic is further divided into workable chunks of functional categories which are referred to as stories. Collection of stories form epic, means that stories are nothing other than decomposition of high level requirement into parts or collection of features. From the example of epic depicted above, clients or customers need can be presented in form of stories.
For example: As a Teacher,
Story #1. I should be able to login to system
Story #2. I can view students details
Story #3. I can filter student information weekly, monthly, quarterly and yearly.
(Above 3 stories make team clear on “what?” part of the process. i.e. What actually the customer need as features of software that is going to be developed.)
Stories are further decomposed to narrow scope of actions and referred to as tasks. There may be numerous tasks in single activity. Tasks are collection of well defined actions that development and quality assurance team perform on daily basis. So mainly two varieties of tasks Development Tasks and Quality Assurance Tasks are prepared here. From the story #1 above, we can divide actions and define the tasks/solutions.
Development Tasks to carried out in Login System can be
1. Review the requirement and Estimate
2. Design and Code
3. Unit and Integration Testing
Development Tasks to carried out in Login System can be
1. Review Story
2. Develop Test case, plan test scenario, gather test data
3. Set up the test environment
4. Execute Test and Report bugs if there’re any
(This gives a clear picture of “how?” part of software process, i.e. features that are to be developed and tested by team.)
What is Scrum?
Another part in Agile Software Process is framework for software process. Framework defines how team work to develop system in collaborative manner actually. Some frameworks that are guided by Agile philosophy includes Extreme Programming(XP), Rapid Software Development(RAD), Scrum, Feature Driven Development(FDD), Lean Method, Crystal Method etc. Among them, Scrum is one of the most popular Agile methodologies as of today. In short, all Scrum projects incorporate Agile philosophy, but not all Agile projects necessarily use the Scrum.
Agile Scrum Roles:
Scrum Master Facilitates the overall process. He/she encourage, facilitate, reflect, share, reward and protect whole team. Main role is to guide the project team and the product owner during the development phase and ensures that the team is implementing all the required agile practices properly.
Product Owner Get requirements from clients, define features, decide release date, prioritize features, modify features as per need, and accept or reject results. Their main role is to interconnect client/business part with the development team.
Scrum TeamInclude Development Professionals(designers, architects, engineers etc.) and Quality Assurance professionals. Their main role is to transform the client’s needs to working system.
Definition of Ready(DOR) and Definition of Done(DOD): List of prerequisites / conditions by satisfying which story or task are considered either ready for test or done.
How agile scrum team work?
With the input from executives, team, stakeholders, customers and users of system, Project Owner list clients epics and stories to create list of features called as Product Backlog. Product backlog contains all the requirements of customer.
Whole team(Owner, Developers, Testers, Scrum Master) sit on a meeting to plan for the estimated delivery of each features or user stories based on priorities and feasibility. Development team and QA team give some estimation point(usually a random number of days like 1,2,3,5,8,13,.. etc.) to collected client stories. Based on these estimations, Whole project development time is sliced into small fractions where group of actions are performed and each chunk is referred to as sprint. Sprint is a term that refer to a short time period or iteration(usually of 2 weeks to 1 month) during which new features are designed, developed, tested and incremented into project as a release. Sprint plan made in participation of development and QA team is often referred to as Sprint Backlog.
Developers and QAs write their own task for each stories and execute task actively in collaborative manner. Though sprint time may be of 2 weeks to 1 months, team meet everyday to report status of last as well as next activity and blockages(if any).
Team uses varieties of software management tools to track and monitor activities, deliverables, releases and overall status of software process. We, at illionSo Technologies, are using Scrum Boards(excessively) as well as Kanban Boards(rarely) to track agile process activities. We do use project management tools like Jira – for medium scale software development and Trello – for web project management.
Thanks and happy learning!