{"id":3367,"date":"2013-06-25T07:45:10","date_gmt":"2013-06-25T14:45:10","guid":{"rendered":"https:\/\/www.jamasoftware.com\/?p=3367"},"modified":"2023-01-12T16:56:53","modified_gmt":"2023-01-13T00:56:53","slug":"change-happens","status":"publish","type":"post","link":"https:\/\/www.jamasoftware.com\/legacy\/blog\/2013\/06\/25\/change-happens\/","title":{"rendered":"Change Happens"},"content":{"rendered":"<p>One of the few constants about software development is that change happens. I doubt any project has ever delivered a product that exactly matched its original specifications. Software change isn\u2019t a bad thing. It\u2019s virtually impossible to define all of a product\u2019s requirements up front, and the world changes as development progresses. An effective software team can nimbly respond to necessary changes so that the product they build provides timely customer value. This series of five articles, adapted from my book\u00a0<em>Software Requirements, 2nd Edition<\/em>\u00a0(Microsoft Press, 2003) addresses many aspects of handling requirement changes effectively.<\/p>\n<p>The change process is fraught with problems. Most developers have encountered an apparently simple change request that turned out to be far more complicated than expected. Developers sometimes don\u2019t\u2014or can\u2019t\u2014 produce realistic estimates of the cost and other ramifications of a proposed software change. And, when developers who want to be accommodating agree to add enhancements that a user requests, requirements changes slip in through the back door instead of being approved by the right stakeholders. Such uncontrolled change is a common source of project chaos, schedule slips, and quality problems. An organization that\u2019s serious about managing its software projects must ensure that:<\/p>\n<ul>\n<li>Proposed requirements changes are carefully evaluated before being committed to.<\/li>\n<li>The appropriate individuals make informed business decisions about requested changes.<\/li>\n<li>Approved changes are communicated to all affected participants.<\/li>\n<li>The project incorporates requirements changes in a consistent fashion.<\/li>\n<\/ul>\n<p>But change always has a price. Revising a simple Web page might be quick and easy; modifying an integrated chip design can cost tens of thousands of dollars. Even a rejected change request consumes the resources needed to submit, evaluate, and decide to reject it. Unless project stakeholders manage changes during development, they won\u2019t really know what will be delivered, which ultimately leads to an expectation gap. The closer you get to the release date or the end of a development iteration, the more you should resist changing that release because the consequences of making changes become more severe.<\/p>\n<p>The business analyst should incorporate approved changes into the project\u2019s requirements documentation. Your philosophy should be that the requirements documentation will accurately describe the delivered product. If you don\u2019t keep the software requirements specification (SRS) current as the product evolves, its value will decrease and the team might function as though it doesn\u2019t even have an SRS. And requirements documentation that doesn\u2019t match the reality of the product is practically useless as a maintenance aid.<\/p>\n<p>When you need to make a change, start at the highest level of abstraction that the change touches and cascade the impact of the change through related system components. For example, a proposed change might affect a use case and its functional requirements but not any business objectives. A modified high-level system requirement could have an impact on multiple software requirements. Some changes pertain only to system internals, such as the way a communications layer is implemented. These are not user-visible requirements changes but rather design or code changes.<\/p>\n<p>Several problems can arise if a developer implements a requirement change directly in the code without flowing it through the requirements and design descriptions. The description of what the product does, as embodied in the requirements specification, becomes less accurate because the code is the ultimate software reality. The code can become brittle and fragile if changes are made without respecting the program\u2019s architecture and design structure. On one project, developers introduced new and modified functionality that the rest of the team didn\u2019t discover until system testing. This required unplanned rework of test procedures and user documentation. Consistent change control practices help prevent such problems and the associated frustration, development rework, and wasted testing time.<\/p>\n<p><strong>The Change Control Process<\/strong><\/p>\n<p>While performing a software process assessment once, I asked the project team how they incorporated changes in the product\u2019s requirements. After an awkward silence, one person said, \u201cWhenever the marketing rep wants to make a change, he asks Bruce or Sandy because they always say \u2018yes\u2019 and the rest of us give marketing a hard time about changes.\u201d This didn\u2019t strike me as a great change process.<\/p>\n<p>A rational change control process lets the project\u2019s leaders make informed business decisions that will provide the greatest customer and business value while controlling the product\u2019s life cycle costs. The process lets you track the status of all proposed changes, and it helps ensure that suggested changes aren\u2019t lost or overlooked. Once you\u2019ve baselined a set of requirements, follow this process for all proposed changes to that baseline.<\/p>\n<p>Customers and other stakeholders sometimes balk at being asked to follow a new process, but a change control process is not intended to be an obstacle to making necessary modifications. It\u2019s a funneling and filtering mechanism to ensure that the project incorporates the most appropriate changes. If a proposed change isn\u2019t important enough for a stakeholder to take just a couple of minutes to submit it through a standard, simple channel, then it\u2019s not worth considering for inclusion. Your change process should be well documented, as simple as possible, and\u2014above all\u2014effective. If you ask your stakeholders to follow a new change control process that\u2019s ineffective, cumbersome, or too complicated, people will find ways to bypass the process\u2014and perhaps they should.<\/p>\n<p>Managing changes in requirements is similar to the process for collecting and making decisions about defect reports. The same tools can support both activities. Remember, though: a tool is not a substitute for a process. Using a commercial problem-tracking tool to manage proposed modifications to requirements doesn\u2019t replace a written process that describes the contents and processing of a change request.<\/p>\n<p><strong>Change Control Policies<\/strong><\/p>\n<p>Management should clearly communicate a policy that states its expectations of how project teams will handle proposed requirements changes. Policies are meaningful only if they are realistic, add value, and are enforced. I\u2019ve found the following change control policy principles to be helpful:<\/p>\n<ul>\n<li>All requirements changes shall follow the process. If a change request is not submitted in accordance with this process, it won\u2019t be considered.<\/li>\n<li>No design or implementation work other than feasibility exploration shall be performed on unapproved changes.<\/li>\n<li>Simply requesting a change doesn\u2019t guarantee that it will be made. The project\u2019s change control board (CCB) will decide which changes to implement. A later article in this series discusses the change control board.<\/li>\n<li>The contents of the change database shall be visible to all project stakeholders.<\/li>\n<li>The original text of a change request shall not be modified or deleted.<\/li>\n<li>Impact analysis shall be performed for every change.<\/li>\n<li>Every incorporated requirement change shall be traceable to an approved change request.<\/li>\n<li>The rationale behind every approval or rejection of a change request shall be recorded.<\/li>\n<\/ul>\n<p>Of course, tiny changes will hardly affect the project and big changes will have a significant impact. In principle, you\u2019ll handle all of these through your change control process. In practice, you might elect to leave certain detailed requirements decisions to the developers\u2019 discretion, but no change affecting more than one individual\u2019s work should bypass your change control process. However, your process should include a \u201cfast path\u201d to expedite low-risk, low-investment change requests in a compressed decision cycle.<\/p>\n<p>The sweet spot is to establish a set of change control policies and practices that facilitate making good, timely change decisions, without misusing the process as a barrier to halt any changes. Change is inevitable\u2014deal with it. The remaining articles in this series will look at the change control process in some detail, the change control board, change control tools, and performing impact analysis for proposed changes.<\/p>\n<p><i>Jama Software has partnered with Karl Wiegers to share licensed content from his books and articles on our web site via a series of blog posts, whitepapers and webinars.\u00a0 Karl Wiegers is an independent consultant and not an employee of Jama. \u00a0He can be reached at\u00a0<\/i><i><a href=\"http:\/\/www.processimpact.com\">http:\/\/www.processimpact.com<\/a><\/i><i>.\u00a0 Enjoy these free\u00a0<\/i><i><a href=\"https:\/\/www.jamasoftware.com\/resources\/\">requirements management resources<\/a><\/i><i>.<\/i><i><\/i><\/p>\n<p><i>\u00a0<\/i><\/p>\n<input class=\"fooboxshare_post_id\" type=\"hidden\" value=\"3367\"\/>","protected":false},"excerpt":{"rendered":"<p>One of the few constants about software development is that change happens. I doubt any project has ever delivered a product that exactly matched its original specifications. Software change isn\u2019t a bad thing. It\u2019s virtually impossible to define all of a product\u2019s requirements up front, and the world changes as development progresses. An effective software [&hellip;]<\/p>\n","protected":false},"author":68,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[50],"tags":[49,51,97,38],"industry":[],"class_list":["post-3367","post","type-post","status-publish","format-standard","hentry","category-requirements-management","tag-best-practices","tag-business-requirements","tag-change","tag-karl-wiegers"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.1 (Yoast SEO v28.1) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Change Happens - Jama Software<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.jamasoftware.com\/blog\/2013\/06\/25\/change-happens\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Change Happens\" \/>\n<meta property=\"og:description\" content=\"One of the few constants about software development is that change happens. I doubt any project has ever delivered a product that exactly matched its original specifications. Software change isn\u2019t a bad thing. It\u2019s virtually impossible to define all of a product\u2019s requirements up front, and the world changes as development progresses. An effective software [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jamasoftware.com\/blog\/2013\/06\/25\/change-happens\/\" \/>\n<meta property=\"og:site_name\" content=\"Jama Software\" \/>\n<meta property=\"article:published_time\" content=\"2013-06-25T14:45:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-13T00:56:53+00:00\" \/>\n<meta name=\"author\" content=\"Karl Wiegers\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Karl Wiegers\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2013\\\/06\\\/25\\\/change-happens\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2013\\\/06\\\/25\\\/change-happens\\\/\"},\"author\":{\"name\":\"Karl Wiegers\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/#\\\/schema\\\/person\\\/e6a00f0ad439a5e1865476b36481aa47\"},\"headline\":\"Change Happens\",\"datePublished\":\"2013-06-25T14:45:10+00:00\",\"dateModified\":\"2023-01-13T00:56:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2013\\\/06\\\/25\\\/change-happens\\\/\"},\"wordCount\":1349,\"keywords\":[\"best practices\",\"business requirements\",\"change\",\"karl wiegers\"],\"articleSection\":[\"Requirements &amp; Requirements Management\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2013\\\/06\\\/25\\\/change-happens\\\/\",\"url\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2013\\\/06\\\/25\\\/change-happens\\\/\",\"name\":\"Change Happens - Jama Software\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/#website\"},\"datePublished\":\"2013-06-25T14:45:10+00:00\",\"dateModified\":\"2023-01-13T00:56:53+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/#\\\/schema\\\/person\\\/e6a00f0ad439a5e1865476b36481aa47\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2013\\\/06\\\/25\\\/change-happens\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2013\\\/06\\\/25\\\/change-happens\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2013\\\/06\\\/25\\\/change-happens\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.jamasoftware.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Change Happens\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/#website\",\"url\":\"https:\\\/\\\/www.jamasoftware.com\\\/\",\"name\":\"Jama Software\",\"description\":\"Jama Connect\u00ae #1 in Requirements Management\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.jamasoftware.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/#\\\/schema\\\/person\\\/e6a00f0ad439a5e1865476b36481aa47\",\"name\":\"Karl Wiegers\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6d4992a28dda9ae47cf239c04be9a0bc554586672cba38949c070d2fed228aef?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6d4992a28dda9ae47cf239c04be9a0bc554586672cba38949c070d2fed228aef?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6d4992a28dda9ae47cf239c04be9a0bc554586672cba38949c070d2fed228aef?s=96&d=mm&r=g\",\"caption\":\"Karl Wiegers\"},\"description\":\"Subject matter expert Karl Wiegers writes on best practices for writing requirements, requirements management, and requirements traceability.\",\"sameAs\":[\"alison@makes-magic.com\"],\"url\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/author\\\/kwiegers\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Change Happens - Jama Software","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.jamasoftware.com\/blog\/2013\/06\/25\/change-happens\/","og_locale":"en_US","og_type":"article","og_title":"Change Happens","og_description":"One of the few constants about software development is that change happens. I doubt any project has ever delivered a product that exactly matched its original specifications. Software change isn\u2019t a bad thing. It\u2019s virtually impossible to define all of a product\u2019s requirements up front, and the world changes as development progresses. An effective software [&hellip;]","og_url":"https:\/\/www.jamasoftware.com\/blog\/2013\/06\/25\/change-happens\/","og_site_name":"Jama Software","article_published_time":"2013-06-25T14:45:10+00:00","article_modified_time":"2023-01-13T00:56:53+00:00","author":"Karl Wiegers","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Karl Wiegers","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.jamasoftware.com\/blog\/2013\/06\/25\/change-happens\/#article","isPartOf":{"@id":"https:\/\/www.jamasoftware.com\/blog\/2013\/06\/25\/change-happens\/"},"author":{"name":"Karl Wiegers","@id":"https:\/\/www.jamasoftware.com\/#\/schema\/person\/e6a00f0ad439a5e1865476b36481aa47"},"headline":"Change Happens","datePublished":"2013-06-25T14:45:10+00:00","dateModified":"2023-01-13T00:56:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.jamasoftware.com\/blog\/2013\/06\/25\/change-happens\/"},"wordCount":1349,"keywords":["best practices","business requirements","change","karl wiegers"],"articleSection":["Requirements &amp; Requirements Management"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.jamasoftware.com\/blog\/2013\/06\/25\/change-happens\/","url":"https:\/\/www.jamasoftware.com\/blog\/2013\/06\/25\/change-happens\/","name":"Change Happens - Jama Software","isPartOf":{"@id":"https:\/\/www.jamasoftware.com\/#website"},"datePublished":"2013-06-25T14:45:10+00:00","dateModified":"2023-01-13T00:56:53+00:00","author":{"@id":"https:\/\/www.jamasoftware.com\/#\/schema\/person\/e6a00f0ad439a5e1865476b36481aa47"},"breadcrumb":{"@id":"https:\/\/www.jamasoftware.com\/blog\/2013\/06\/25\/change-happens\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jamasoftware.com\/blog\/2013\/06\/25\/change-happens\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.jamasoftware.com\/blog\/2013\/06\/25\/change-happens\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.jamasoftware.com\/"},{"@type":"ListItem","position":2,"name":"Change Happens"}]},{"@type":"WebSite","@id":"https:\/\/www.jamasoftware.com\/#website","url":"https:\/\/www.jamasoftware.com\/","name":"Jama Software","description":"Jama Connect\u00ae #1 in Requirements Management","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jamasoftware.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.jamasoftware.com\/#\/schema\/person\/e6a00f0ad439a5e1865476b36481aa47","name":"Karl Wiegers","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/6d4992a28dda9ae47cf239c04be9a0bc554586672cba38949c070d2fed228aef?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/6d4992a28dda9ae47cf239c04be9a0bc554586672cba38949c070d2fed228aef?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6d4992a28dda9ae47cf239c04be9a0bc554586672cba38949c070d2fed228aef?s=96&d=mm&r=g","caption":"Karl Wiegers"},"description":"Subject matter expert Karl Wiegers writes on best practices for writing requirements, requirements management, and requirements traceability.","sameAs":["alison@makes-magic.com"],"url":"https:\/\/www.jamasoftware.com\/blog\/author\/kwiegers\/"}]}},"_links":{"self":[{"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/posts\/3367","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/users\/68"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/comments?post=3367"}],"version-history":[{"count":0,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/posts\/3367\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/media?parent=3367"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/categories?post=3367"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/tags?post=3367"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/industry?post=3367"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}