<p>I'm currently evaluating the <code>MSF for CMMI</code> process template under <strong>TFS</strong> for use on my development team, and I'm having trouble understanding the need for separate bug and change request work item types.</p>

<p>I understand that it is beneficial to be able to differentiate between bugs (errors) and change requests (changing requirements) when generating reports.</p>

<p>In our current system, however, we only have a single type of change request and just use a field to indicate whether it is a bug, requirement change, etc (this field can be used to build report queries).</p>

<p>What are the benefits of having a separate workflow for bugs?</p>

<p>I'm also confused by the fact that developers can submit work against a bug <strong>or</strong> a change request, I thought the intended workflow was for bugs to generate change requests which are what the developer references when making changes.</p>

[{'answer_id': 5337, 'author': 'Vaibhav', 'author_id': 380, 'author_profile': 'https://Stackoverflow.com/users/380', 'pm_score': 1, 'selected': False, 'text': '<p>A bug is something that is broken in a requirement which has already been approved for implementation.</p>\n\n<p>A change request needs to go through a cycle in which the impact and effort has to be estimated for that change, and then it has to be approved for implementation before work on it can begin.</p>\n\n<p>The two are fundamentally different under CMM.</p>\n'}, {'answer_id': 5347, 'author': 'Luke', 'author_id': 327, 'author_profile': 'https://Stackoverflow.com/users/327', 'pm_score': 0, 'selected': False, 'text': "<p>Is my assumption incorrect then that change requests should be generated from bugs?  I'm confused because I don't think all bugs should be automatically approved for implementation -- they may be trivial and at least in our case will go through the same review process as a change request before being assigned to a developer.</p>\n"}, {'answer_id': 5376, 'author': 'Lasse V. Karlsen', 'author_id': 267, 'author_profile': 'https://Stackoverflow.com/users/267', 'pm_score': 2, 'selected': False, 'text': "<p>Generally, though I can't speak for CMM, change requests and bugs are handled and considered differently because they typically refer to different pieces of your application lifecycle.</p>\n\n<p>A bug is a defect in your program implementation. For instance, if you design your program to be able to add two numbers and give the user the sum, a defect would be that it does not handle negative numbers correctly, and thus a bug.</p>\n\n<p>A change request is when you have a design defect. For instance, you might have specifically said that your program should not handle negative numbers. A change request is then filed in order to redesign and thus reimplement that part. The design defect might not be intentional, but could easily be because you just didn't consider that part when you originally designed your program, or new cases that didn't exist at the time when the original design was created have been invented or discovered since.</p>\n\n<p>In other words, a program might operate exactly as designed, but need to be changed. This is a change request.</p>\n\n<hr>\n\n<p>Typically, fixing a bug is considered a much cheaper action than executing a change request, as the bug was never intended to be part of your program. The design, however, was.</p>\n\n<p>And thus a different workflow might be necessary to handle the two different scenarios. For instance, you might have a different way of confirming and filing bugs than you have for change requests, which might require more work to lay out the consequences of the change.</p>\n"}, {'answer_id': 5403, 'author': 'Lasse V. Karlsen', 'author_id': 267, 'author_profile': 'https://Stackoverflow.com/users/267', 'pm_score': 5, 'selected': True, 'text': "<p>@Luke</p>\n\n<p>I don't disagree with you, but this difference is typically the explanation given for why there is two different processes available for handling the two types of issues.</p>\n\n<p>I'd say that if the color of the home page was originally designed to be red, and for some reason it is blue, that's easily a quick fix and doesn't need to involve many people or man-hours to do the change. Just check out the file, change the color, check it back in and update the bug.</p>\n\n<p>However, if the color of the home page was designed to be red, and is red, but someone thinks it needs to be blue, that is, to me anyway, a different type of change. For instance, have someone thought about the impact this might have on other parts of the page, like images and logos overlaying the blue background? Could there be borders of things that looks bad? Link underlining is blue, will that show up?</p>\n\n<p>As an example, I am red/green color blind, changing the color of something is, for me, not something I take lightly. There are enough webpages on the web that gives me problems. Just to make a point that even the most trivial change can be nontrivial if you consider everything.</p>\n\n<p>The actual end implementation change is probably much of the same, but to me a change request <strong>is</strong> a different beast, precisely because it needs to be thought about more to make sure it will work as expected.</p>\n\n<p>A bug, however, is that someone said <strong>this is how we're going to do it</strong> and then someone did it differently.</p>\n\n<p>A change request is more like <strong>but we need to consider this other thing as well... hmm...</strong>.</p>\n\n<p>There are exceptions of course, but let me take your examples apart.</p>\n\n<p>If the server was <em>designed</em> to handle more than 300,000,000,000 pageviews, then yes, it is a bug that it doesn't. But designing a server to handle that many pageviews is more than just saying <em>our server should handle 300,000,000,000 pageviews</em>, it should contain a <strong>very</strong> detailed specification for how it can do that, right down to processing time guarantees and disk access average times. If the code is then implemented exactly as designed, and unable to perform as expected, then the question becomes: <em>did we design it incorrectly or did we implement it incorrectly?</em>.</p>\n\n<p>I agree that in this case, wether it is to be considered a design flaw or a implementation flaw depends on the actual reason for why it fails to live up to expectations. For instance, if someone assumed disks were 100x times as fast as they actually are, and this is deemed to be the reason for why the server fails to perform as expected, I'd say this is a design bug, and someone needs to redesign. If the original requirement of that many pageviews is still to be held, a major redesign with more in-memory data and similar might have to be undertaken.</p>\n\n<p>However, if someone has just failed to take into account how raid disks operate and how to correctly benefit from striped media, that's a bug and might not need that big of a change to fix.</p>\n\n<p>Again, there will of course be exceptions.</p>\n\n<p>In any case, the original difference I stated is the one I have found to be true in most cases.</p>\n"}, {'answer_id': 48436, 'author': 'fuzzbone', 'author_id': 5027, 'author_profile': 'https://Stackoverflow.com/users/5027', 'pm_score': 2, 'selected': False, 'text': '<p>Keep in mind that a part of a Work Item Type definition for TFS is the definition of it\'s "Workflow" meaning the states the work item can be and the transitions between the states.  This can be secured by security role.</p>\n\n<p>So - generally speaking - a "Change Request" would be initiated and approved by someone relatively high up in an organization (someone with "Sponsorship" rights related to spending the resources to make a (possibly very large) change to the system.  Ultimately this person would be the one to approve that the change was made successfully.</p>\n\n<p>For a "Bug" however, ANY user of the application should be able to initiate a Bug.</p>\n\n<p>At an organization I implemented TFS at, only Department Heads can be the originators of a "Change Request" - but "Bugs" were created from "Help Desk" tickets (not automated, just through process...)</p>\n'}, {'answer_id': 57878222, 'author': 'superarts.org', 'author_id': 772295, 'author_profile': 'https://Stackoverflow.com/users/772295', 'pm_score': 0, 'selected': False, 'text': '<p>Implementation always comes from requirement. It may be from product manager, it may be from some of you random thought. It may be documented, it may be from some conversation. In the end of the day, even something as simple as <code>a := a + 1</code>, the "real" implementation would be based on compiler, linker, CPU, etc. which depends on the physical law of real life.</p>\n\n<p>A bug is something that is implemented against the ORIGINAL requirement. Other than that, it is a change request.</p>\n\n<p>If the requirement is changed and the implementation need to be changed as well, it\'s a change request.</p>\n\n<p>If the dependency has been changed, for example web browser stopped supporting some tags and you need to make some change, it\'s a change request.</p>\n\n<p>In real word, anything that is not properly documented should be treated as change request. Product manager forgot to put something in the story? Sorry, that\'s a change request.</p>\n\n<p>All change requests should be properly estimated and pointed. Developers get paid for making change requests, not for making bugs and fixing those made by them.</p>\n'}]
['https://Stackoverflow.com/questions/5329', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/327/']