Facts about maintenance projects
Software maintenance in software engineering is the modification of a software product after delivery to correct faults, to improve performance or other attributes.
On a high level software maintenance involves number of processes, activities and practices that are unique to maintainers, for example:
- Transition: a controlled and coordinated sequence of activities during which a system is transferred progressively from the developer to the maintainer;
- Service Level Agreements (SLAs) and specialized (domain-specific) maintenance contracts negotiated by maintainers;
- Modification Request and Problem Report Help Desk: a problem-handling process used by maintainers to prioritize, documents and route the requests they receive;
- Modification Request acceptance/rejection: modification request work over a certain size/effort/complexity may be rejected by maintainers and rerouted to a developer.
Kanban – A Brief Introduction:
The need to maintain a high rate of improvements led Toyota to devise the kanban system. Kanban became an effective tool to support the running of the production system as a whole.
Kanban also spelled kamban and literally meaning "signboard" or "billboard", is a concept related to lean and just-in-time (JIT) production. According to Taiichi Ohno, the man credited with developing Just-in-time, kanban is one means through which JIT is achieved.
Kanban is a scheduling system that tells you what to produce, when to produce it, and how much to produce.
The 5 Core Properties of Kanban
In his book, Kanban - Successful Evolutionary Change for your Technology Business, David Anderson identified 5 core properties that had been observed to be present in each successful implementation of the Kanban Method.
- Visualize the workflow
Visualizing the flow of work and making it visible is core to building an understanding how work works. Without understanding the workflow making the right changes is harder. A common way to visualize the workflow is to use a card wall with cards and columns. The columns on the card wall representing the different states or steps in the workflow and the cards the feature/story/task/result of the workflow.
- Limit WIP
Limiting work-in-progress implies that a pull system is implemented on parts or all of the workflow. The pull system will act as one of the main stimuli for continuous, incremental and evolutionary changes to your system. The critical elements are that work-in-progress at each state in the workflow is limited and that new work is “pulled” into the new information discovery activity when there is available capacity within the local WIP limit.
- Manage Flow
The flow of work through each state in the workflow should be monitored, measured and reported. By actively managing the flow the continuous, incremental and evolutionary changes to the system can be evaluated to have positive or negative effects on the system.
- Make Process Policies Explicit
Until the mechanism of a process is made explicit it is often hard or impossible to hold a discussion about improving it. Without an explicit understanding of how things work and how work is actually done.
- Improve collaboratively (using models & the scientific method)
The Kanban Method suggests that a scientific approach is used to implement continuous, incremental and evolutionary changes. The method does not prescribe a specific scientific method to use.
Kanban process for Maintenance of IT projects
As you can see from the above picture Kanban helps in streamlining releases for Maintenance projects. As discussed earlier Kanban is work flow process through which work items move through various stages. There are several tools which help to create workflow suited for a particular project. These tools also help in keeping a limit of number of workitems in a particular stage of workflow.
Following are the list of few free Kanban tools:
- Simple-Kanban (http://www.simple-kanban.com/)
- KanbanPad (http://www.kanbanpad.com/)
- TRICHORD (http://trichord.change-vision.com/en/index.html)
A Typical Maintenance Project Routine:
- Bugs are raised in the production environment.
- They are prioritised and fixed based on their priority.
- Along with bugs change requests are raised. They need to be fixed based on prioritised along with the bugs.
- Sprint would be planned based on a group of bugs and CRs depending on resources available.
- If there are no bugs or change requests, improvements could be done to system(Ofcourse trying not to introduce new bugs).
Obviously we never know when, what and how of bugs. A typical cycle would be, fix priority bugs and get the system up and running.There would be several cycles of raise->analyse->design->resolve->deploy, through out maintenance phase of software, for bugs as well as change requests.
Factors that are best taken care of using Kanban Principles to execute maintenance of a project is where
- Micro sized team gathered to focus on looking after a proudct
- Frequest Changes or Abrupt Incidents that needs to be handled on priority
- Multiple workpackges coming up every now and then to a team
- Work where you want control, less of interruptions and more of just delivery
- No depenedency on releases. Configure either a typical schedule or choose a time when you need a release. Which tasks are in completed state can be released unlike a defined iteration or a sprint
Kanban fits very well for such scenerios, where you pick up workitem based on priority, and define workflow cycle for completion of workitems. When Kanban process is implemented, things like continuous integration and continuous delivery can be considered. It needs to be in line with the deployment processes followed by team/client.
- Agile Management Tools
- Top 14 Kanban Tools In An Agile World
- Agile Tips - Kanban and Support teams (Video)