views:

66

answers:

6

When the specification and the agreed behavior of the application operates without fault, however the outcome turns out to be undesired, what should this be called? Is it a bug?

How can it be a bug when the software performs as desired from the specifications and the agreed behavior?

+3  A: 

I do consider this a bug. In my experience 90% of all bugs* are about not understanding what is wanted: ie. design bugs.

In this case the design itself was buggy leading to a bad specification. The fault here lies not in the person who implemented the program but in the person/team who designed the system in the first place.

In a Scrum setting, I usually consider fixing design bugs as completely new stories since it really results in a new specification (and along with it new tests and new definition of done). I don't consider it a "bugfix" task.

*note: In most modern languages. In C, 90% of all bugs are about bad memory management

slebetman
Out of interest, how does adding a new story work in a scrum iteration? If the stories are locked in for the iteration, do you consider the story that produces a design bug completed and the "bug story" moved to pool to be considered for the next iteration?
Igor Zevaka
Thank you for the scrum notes. Co-incidentally it is what i am trying to practice. The project manager on the other hand prefers FrAgile - totally screwing it all up. Ok moving along. So then would you log it in your issue manager (jira in my case) as a bug and then create a new feature/task and link it? How would you go about navigating this?
JavaRocky
@Igor When i practice Scrum, if it is a known bug / unintended feature i'd slip it in the scrum sprint (iteration) immediately and take something else out. The reason why I believe in this is due to the fact of creating releasable software at the end of the sprint which is in the Agile Manifesto.
JavaRocky
@Igor: Stories can always be added anytime: just not in the sprint backlog. Anything new must be added to the product backlog. But I run a slightly modified Scrum. The product owner (my boss) can move anything from the product backlog to the sprint backlog as long as: 1. the same number of points are also moved back to the product backlog and 2. you cannot move back checked out tasks
slebetman
@JavaRocky: Me personally, I don't register this as a bug but a new feature. But your boss/QA people may have other ideas.
slebetman
How interesting. I thought of balancing the sprint points total by adding/removing stories that haven't been started yet, but decided it might be too technical. Thanks for the input guys, I might need it very soon - whenever the business decides to get off their backside and give me resources.
Igor Zevaka
+1  A: 

I would have thought that the result was part of the agreed specification. Which would mean that the program is not behaving as specified. Either that, or the expectation of the result is flawed and the program is showing the correct result.

Derek Clarkson
And don't forget the definitions: Bug - undocumented feature. Feature - documented bug.
Derek Clarkson
A: 

This is a faulty specification. If a programmer makes mistakes implementing the spec, these are bugs. If the spec is faulty, but implemented correctly, this is a feature ;-).

spbfox
+1  A: 

Yes its a defect.

But its a defect in the specification.

This in turn could be a defect in the requirements gathering.

This could either be the analyst misunderstanding the users request, or, the user requesting the wrong thing or usually a mixture of both. (But I always blame the analyst! --- on the same basis that you would still blame a doctor for mis-diagnosis on the basis of poor communication with an inarticulate patient).

In theory this is the same as any other defect - report it, fix the spec, recode and retest.

However in practice these can be a real pain as they cross organisational , and often company boundries. If you are a subcontracting software company and you produced the software according to the specs then contractually this is not a defect in your software, you should get new, better specs and be paid extra to code to the new specs.

James Anderson
+1  A: 

Why does it matter how we call it? It looks to me that there is a deeper problem out there where you are - instead of realizing there is work to do and doing it ground is being prepared for blame-laying. This serves no purpose and everyone wastes their time.

I understand the frustration on both sides, but right now what you have to do is a) identify what has to be changed for the software to work as expected (and therefore bring users the benefit they hoped for) and b) do it. Call it a bug or call it a new story - or call it a butterfly if it helps, but move forward.

Andy
+1  A: 

People from TDD background say that "a bug is a test that was not written". With that in mind, this unexpected behaviour is a test that was not written, because of a specification that was not included.

The agile movement is about delivering good products. That's why it's not important to set a fixed set of requirements to implement according to a contract but correcting and improving the direction of the team at each step (iteration, sprint, etc). So with that in mind I'd say that if you face an unexpected behaviour simple stablish what's the expected behaviour write new stories/test cases that you can verify against and include then in the next sprints.

Change is everything.

helios