Scrum and Kanban for the Enterprise #199575/HEAD / v4922 |
Scrum and Kanban for the EnterpriseTable of Contents
What is agile?IntroductionStarting in the late 1990s, software and generic engineering process has seen an explosion of lighter-weight and ever-more-adaptive models. These models assume that - with the right tools and practices - it was simply more cost effective to develop the product quickly, have it evaluated by customers in actual use, be "wrong" (if necessary), and quickly rework it than it it was to try to anticipate and document all the requirements up front. The movement to these agile methods has been the most significant change to affect the software enterprise since the advent of the waterfall model in the 1970s. These methods have proven themselves to deliver outstanding benefits on the "big four" measures:
Notable agile methods include Extreme Programming (XP), Scrum and Kanban, all of which are discussed in details over the web. The 3 levels of agileIn large organizations, agile is implemented in three levels. Team levelAt the Team level, agile teams of 5-9 team members define, build, and test user stories in a series of sprints and releases. In the smallest enterprise, there may be only a few such teams. The responsibility for managing the things the team needs to do belongs to the team's product owner. Program levelAt the Program level, the development of larger-scale systems functionality is accomplished via multiple teams in a synchronized Agile Release Train (ART). The ART is a standard cadence of timeboxes iterations and milestones that are date- and quality-fixed, but scope is variable (no iron triangle). The ART produces releases or potentially shippable increments (PSIs) at frequent, typically fixed, 60- to 120-days time boundaries. Product managers are responsible for defining the features of the system at this level. Portfolio levelAt the Porfolio level, investments themes are used to assure that the work being performed is the work necessary for the enterprise to deliver on its chosen business strategy. Investment themes drive the portfolio vision, which will be expressed in as a series of larger, epic-scale initiatives, which will be allocated to various release trains over time. Agile process frameworksScrum processScrum is an iterative and incremental framework, which focuses on "a flexible, holistic product development strategy where a development team works as a unit to reach a common goal". Scrum is the most widely known and practiced agile process framework.
Learn more about Scrum in Wikipedia. Kanban processKanban puts an emphasis on just-in-time delivery while not overloading the software developers. In this approach, the process, from definition of a task to its delivery to the customer, is displayed for participants to see and developers pull work from a queue.
Kanban promotes the following core practices:
Learn more about Kanban in Wikipedia. Agile for the teamTeam is the lowest level of implementing agile. Many agile practitioners only focus on this level, although Intland believes that the agile value delivery stream should span from teams to the whole organization. User storiesThe basic unit of work for the team is user story. The team's objective is to define, build, and test some number of user stories in the scope of an iteration and thereby achieve some even larger value pile in the course of a release. Each story has a short, incredibly intense development life cycle, ideally followed by long-term residence in a software baseline that delivers user value for years to come. Learn more about user stories in Wikipedia. Managing user storiesUser stories are represented by issues in User Story type trackers in CodeBeamer. There is one tracker of this type created in each new project, called intuitively "User Stories". You manage user stories the same way like any other type of issues, but we quickly go into details in the next sections. Creating user storiesYou can create a new User Story as any other type of issue. You can either add it on the tracker page or on the tracker list using the context menu. A User Story is just a regular tracker item with one special field: story points. Story point is a relative measure of the complexity of a User Story. You can specify one or more baseline user stories (preferably with different complexity), define their story points value and then use these to estimate the complexity of other stories in stoy points. In Codebeamer the Story points field accepts any integer without restrictions. Breaking user stories into actionable tasksOften times, a user story is too large to be implemented as a single unit of work, and should be broken into multiple actionable tasks. For example, to implement a new report type, you need to:
The default "User Stories" tracker is kept on the bare minimum, thus expressing this relation is not available out of the box. Nevertheless, you have multiple option to express "implemented by" between user stories and tasks, change request, bugs, and other types of issues:
SprintsThe basic unit of agile development is the sprint (or iteration, in more general) - the ability to take a set of user stories from the backlog and refine, code, test, and accept those stories into a new integrated baseline within a fixed timebox. The goal of each sprint is the same: to build an increment of potentially shippable code that is of value to the users. A sprint is typically between one to four week long, during which the team completes the work defined in the sprint backlog (see the next section). Learn more about sprints in Wikipedia. Releases(Important note: although releases are parts of the Team level according to our structure, they are discussed here, in context with sprints.) The development of system functionality is accomplished via multiple teams in a synchronized Agile Release Train (ART), a standard cadence of timeboxed iterations that are date- and quality-fixed but scope-variable. The ART produces releases (or potentially shippable increments (PSIs)) at frequent, typically fixed, 60- to 120-day time boundaries. The release is to the enterprise what iterations are to the team: the basic iterative and incremental cadence and delivery mechanism for the program. It's important to note: releases can be delivered to the customer, or not, based on the business context (not discussed here). Managing releases and sprintsReleases are represented by top-level configuration items in Release type CMDB categories in CodeBeamer. Sprints are simply child items of releases. Essentially, this hiearchy represents the "one release is split into multiple sprints" relationship. You can create, update and delete releases and sprints as written in Release Management with codebeamer. Managing and ranking backlogsThe term backlog was first introduced by Scrum, where it was described as a product backlog. In this enterprise model, product can be a pretty nebulous thing, because various teams may be working at various levels, so there are multiple types backlogs in the big picture. Therefore, the use of te term backlog is more generalized here. The backlog is the one and only definitive source of work for the team. It holds all the work that needs to be done, like a "todo list". It contains user stories, but also other issue types like a bug that needs to be fixed, a task or a change request that needs to be done, or a manual test that needs to be executed. The backlog is managed by the team. There are three kinds of backlogs exist, each with a different scope:
Backlogs are ordered by relative order in which the user stories should be done. The order is typically specified by many factors, like business value, the penalty for not doing that story, risk, cost and so. (These are not discussed here.) Setting the relative order within a backlog is called "ranking" or "prioritizing" the backlog. Learn more about the (somewhat limited-scope) product backlog in Wikipedia. Managing the product backlogThe product backlog is the list of issues that have no target release set. There is no special page in Codebeamer to manage this list, but you can add the issues to releases on the browse tracker pages. You can use Mass edit to change the release field of multiple issues at the same time. Managing the release backlogRelease backlog is the prioritized list of issues in a specific release. You can access it by clicking on a release link in a release category.
By default, the issues in the backlog are ordered by priority descending (with the exception that closed and resolved issues are always at the end of the list) but you can change this order on the release planner. Managing the sprint backlogThe sprint backlog is the prioritized list of issues in a sprint. You can manage this list exactly like for any other release (described in the previus section). To create a sprint just click on the New Sprint item in the menu of a release. In Codebeamer all releases that are not on the top level are sprints. To move issues to the sprint backlog you can use the issue editor page or mass edit (to move multiple issues at once). Agile for the programIn the previous section, we introduced the Team level, the place where the software teams define, develop, and test the software for the solution. At the next higher Program level, we suggest an organization, process, and requirements model that provides mechanisms to harness some number of agile teams to a larger enterprise purpose - the delivery of an entire product to the customers. FeaturesThe primary goal of the Product Vision is to communicate the strategic intent of the product. Vision is best expressed by Features in the agile world. Features describe what the product will do for its users, and the benefits the user will derive from them. Managing featuresFeatures would be most efficiently represented by issues in a custom "feature tracker" in CodeBeamer. Although this tracker type is not available out of the box, you can implement it easily by creating a requirement type tracker and customizing that. We suggest adding the following fields to a "feature tracker". Some of them may be omitted in your configuration:
Learn more about customizing trackers. After the feature tracker is in place, you manage features the same way like any other type of issues. Agile Release Train (ART)Please see the ART detailed in the "Releases" and in the "Managing releases and sprints" sections above. Agile for the portfolioFor smaller enterprises, up to 100 agile practitioners and one or two products, the Team and Program models may be everything they need to operate in an agile manner. Bigger enterprises, employing hundreds or thousands people and offering many products, needs another level of abstraction, on the Portfolio level. Investment themesInvestment themes (product themes) are the initiatives that drive the enterprise's investment in systems, products, applications and services. They represent key value propositions that provide marketplace differentiation and competitive advantage. Investment theme examples: Customer Relationship Management, Social Intranet, Computing Resources. Managing investment themesInvestment themes are best represented by issues in a custom "investment theme tracker" in CodeBeamer. This is essentially a requirement type tracker, that is further customized. We suggest hiding most of the fields of a default requirement tracker, and write investment theme summaries that are clear to every stakeholder. A high-level classification can be done by introducing a "Type" choice list with the following options:
EpicsInvestment themes drive all new development. Epics are derived from these decisions. Epics are large-scale development initiatives that realize the value of investment themes. To understand the full relationship between the agile entities:
The elegance of this hierarchy at implementation time is that if you set up the "realizes" field in each of these trackers, you get 100% traceability. You can nicely trace back any tiny source code change from its tasks, through its user story, its feature, its epic all along to its investment theme. Managing epicsEpics should be represented by issues in a custom "epic tracker". This should be a requirement type tracker, with further customizations applied to it. Consider adding the following fields to it:
Executing agileWhat is a cardboard?If you have a manufacturing background or if you are developing agile, you probably have come across the term "Kanban". Kanban is a methodology to visualize workflow in the value-added process. The workflow stages are represented by columns on a board. Typically this board is put on some wall in the office or in the factory. The most basic board consists of 3 columns, "ToDo", "In Progress", "Done". codeBeamer's cardboard is based on the Kanban board, but slightly modified and enhanced with some features. It can be used to show you quickly how well you workload is distributed across the workflow. It also provides "one-click" modifications to the workflow or attributes of single items on the board. The cardboard can be reached by clicking on the cardboard icon, which can be found next to a Release or Sprint in "Releases" or in the Planning Board view:
Viewing issues in cardboardsOn a cardboard you can see all issues assigned to a release in the same order as defined in the release backlog (which is either the order by priority or the order set by manually sorting the issues). Depending on your configuration you can get warnings if there are too many or too few cards in a column. The size of the cards changes adaptively on resizing. They always take up as much space as possible while trying to fit as many cards in the same row as possible. Analysis of a cardA card on the board looks like this:
The vertical stripe on the left side of the card is used for moving the card. You can grab this "handle" and drop the card to an other column. Its color is determined by the status of the issue. There are several important pieces of information on this card:
Hover over the user story to reveal the full text:
You can also hover over the release and assignee links to show them all:
Mapping issues to cardboardsCardboards always have four columns that you cannot remove: ToDo, In Progress, To Verify and Done (you can change these labels, see in the section about configuration). To which column a card is put depends on the status of the issue. Codebeamer uses status flags to map statuses to the columns. The logic is the following:
You can change these flags on the choice list configuration page of the tracker. Select Customize in the more menu of the tracker then click on the Choice Lists tab and select Status. Note that a cardboard can contain issues from several different trackers. So if you want to change the mappings for all similar statuses then you have to change the choice list configuration in each of the trackers. FiltersCards can be filtered using the repost widget.:
Using this filter you can select multiple options and build complex criterions. You can use the same filter options as on the reports page but the release id is always added to the query. You can save and reuse predefined reports using the "hamburger icon":
Grouping cardsYou can group the card based on several properties using the group by icon:
After selecting an option the issues are put in horizontal groups:
The group header show the number of cards in this group, the sum of their story points and the group label. Note that even when the cards are grouped you can only move them horizontally, that is you cannot move them between groups (updating the grouping property this way is not possible). The order of the cardsYou can change the order of the cards (within their columns) using the order by icon:
Editing in cardboardsUpdating issues directly in cardboardsClicking on the edit icon in the top-right corner of a card will show the standard issue editor in an overlay. This way you can edit the issue without leaving the cardboard and losing context.
To change the status of an issue you can also move the card between columns. Create New Downstream ReferenceFrom codeBeamer 9.4.0 you can create New Downstrem Reference for the items by using the context menu of the card, and selecting a tracker under Create Downstream Reference menu option. Moving cards between columnsCardboards are very useful in updating the statuses of the cards. To update an issue just grab a card. The colums where you can drop will immediately change their color to green and show the name of the status. With workflowsIf the tracker of the card you're dragging is using workflows than the columns for the transitions available for that card will be marked with a green placeholder:
The placeholders show the name of the transition. Dropping the card to one of the green areas will update its status. If the target status has any required fields then after dropping you will be shown an issue editor overlay where you can set those fields. Without workflowsIf the workflow is not active on the tracker of the dragged card than you can drop to those colums to which there are statuses mapped from that tracker.
The green placeholders will tell you the name of the status. As you can see a column can contain multiple placeholders. The gray area shows the original status of the card. Access control in cardboardsThere are a few reasons why you cannot move a card on a cardboard:
Readonly cards are marked with a little "pin" icon and their tooltips tell you the exact reason why you cannot move them:
There is an other circumstance when it is not trivial what should be done after a card was dropped. When the tracker of the card has some required fields then you must set those whn updating the status. For this purpose after dropping such cards you'll get an issue editor overlay window where you can make sure that all required fields are set properly. Note that you always get this overlay window, it doesn't matter if the required fields are empty or not. Propagating status in cardboardsCardboard view can handle distribution and aggregation rules set on the status field of the trackers. These rules mean that updating the status of an issue has some effect of its parent or children. For example if the Close recursively rule is set then when an issue is closed all of their children also get closed recursively. Cardboard makes this kind of status propagation very visual. After dropping an issue to the Done column (to a closed status) all its children will follow it and they will move to the same column. Configuring cardboardsYou can configure the Work in Progress values and the column labels for each cardboard. The configuration page can be reached by clicking on the Kanban Board Configuration item in the menu (but it is only available if you're a Project Admin). Note that the changes you make on this page will only affect the current cardboard. The first tab of the cardboard configuration page (Column Configuration) shows the same columns as the cardboard itself. Each column is very similar except the Done for which you cannot configure the MIn/Max values.
For each column you can set the Work in Progress limits: a minimum and a maximum value. If a column on the cardboard has less cards than the minimum, or more than the maximum then you'll get warnings like this:
If you leave an field on the configuration page empty that means that there's no limit for that column. You can also configure the column labels: the cardboard will use the column names that you specify here. A third configuration option is labeled as Display cards from child sprints. This is checked by default. This means that not only the items linked to the release will be shown on the cardboard but also all issues that are linked to one of the child releases. You can simply disable this by unchecking the box. Beside configuring these values you can get some useful information on the configuration page. In each column there's a list of tracker statuses mapped to that column. You can change these mappings on the configuration pages of the trackers. Information shown on the cards can be configured through Kanban Board Configuration menu:
It is possible to enable / disable different sections of the cards:
Changing number of columnsIn Cardboard Configuration new columns can be added. Columns added by the user can be also removed. The four built-in columns cannot be removed. Cardboard must have at least the four default columns. There is a default maximum limit on the number of columns, which is 10. If this limit is reached then an information box appears on the top of the configuration screen to notify the user. To change this maximum limit (e.g. to 15), edit general.xml and use this XML configuration: <interactive cardboardMaximumColumns="15" ></interactive> |
Fast Links
codebeamer Overview codebeamer Knowledge Base Services by Intland Software |
This website stores cookies on your computer. These cookies are used to improve your browsing experience, constantly optimize the functionality and content of our website, furthermore helps us to understand your interests and provide more personalized services to you, both on this website and through other media. With your permission we and our partners may use precise geolocation data and identification through device scanning. You may click accept to consent to our and our partners’ processing as described above. Please be aware that some processing of your personal data may not require your consent, but you have a right to object to such processing. By using our website, you acknowledge this notice of our cookie practices. By accepting and continuing to browse this site, you agree to this use. For more information about the cookies we use, please visit our Privacy Policy.Your preferences will apply to this website only.