|
I have always thought that Requirements is what the software needs to do and Specifications is the beginning of how it should do that. The software should be responsive is a requirement. All screens will either respond within 5 seconds or set the wait cursor, is a specification.
Pat O
|
|
|
|
|
I agreed.
The next question is would you create the requirement separately from the specification or they goes together?
|
|
|
|
|
Think of it as...
The Requirement is a description of what "the customer" wants (and is sometimes written by the customer representative, sometimes by the development team, sometimes both). It describes what the stakeholders want to pay for.
The Specification is how the developer(s) will do it (and is almost without exception written by the development team). It likely includes platform description, architectural details, technologies used, development benchmarks and milestones, and a timeline.
The Requirement describes "what" (and perhaps a little "why"). The Spec describes "how", "when" and "who".
Both documents are agreed on by both parties but are clearly from different points of view. If the project is small, the two documents might be merged into one, but the resulting document will likely see multiple versions as the project details emerge.
I'm retired. There's a nap for that...
- Harvey
|
|
|
|
|
I've been to a few companies in my 30 years development that actually maintain the two documents separately aside from the design document. They are usually doing it for government regulations for example in health care industries.
|
|
|
|
|
Place I worked at attempted to merge these documents ... it was disastrous. Let the business (customer, whatever) define the requirements (with input/advice from Dev if need be - "no, you can't have a green widget with shiny bits"), but the specification is the nitty-gritty of how the software will fulfil the requirements - and you really don't want much influence from the business on that beyond agreeing that the UI fits with what they want.
Or perhaps I'm just too jaded
|
|
|
|
|
Requirements are one thing; their "feasibility" is another; i.e. Requirements are usually followed up with a "feasibility study" that paint some broad costs and solutions / alternatives which require go / no-go decisions (from management / sponsors).
Creating "specifications" otherwise is premature.
|
|
|
|
|
The requirements are WHAT. The specification is one HOW out of many possible HOWs. The docs should be kept separately because they are conceptually separate. There might be two ways to do something.
Suppose you are building cars, and the customer wants to go 0-60 in six seconds. There are many ways to do this. One way is to built a 4,000 lb car with a turbo-charged six liter V12 producing 700 horsepower. Another way is to build an enclosed four-wheeled bicycle with a 2-stroke engine developing 30 hp. Still a third is motorcycle leathers and a pair of roller skates, plus a small rocket.
The collection of requirements may limit you to a single solution of all the solutions you can imagine, but it may not. The organizations that really want to solve problems (like NASA for instance, allow their engineers to explore multiple possible solutions. This doesn't happen much in the software biz, but as competition gets fiercer, it will probably happen more.
|
|
|
|
|
Your question beautifully illustrates a problem with requirements. I read
The software should be responsive
and was expecting the specification to be "adapts to screen widths from 2048px down to 320px". Just goes to show that even especially as early in the process as requirements collection, it's important to clarify terminology and ensure that all statements are set in an appropriate context that everyone understands.
|
|
|
|
|
2 things.
a: I have a requirement.
b: Write a spec to cover that requirement.
|
|
|
|
|
I like your answer. Though there are fewer company that practice the difference discreetly. I wondered is it because either developers
1. don't understand the difference
2. no allow the opportunity to proper practice
3. Time to market not allows it
From my 30 years experience, the more rigorous a well managed team follow process, the faster we can get a product out the door closer to allocated budget.
|
|
|
|
|
Requirements are Gathered (From the customer/consumer)
Specifications are Written (for the developers)
But the lack of either or both, is a MANAGEMENT problem IMO. Now it is either the problem of a bad manager, or a poorly managed process.
Tiny projects. You can be a little sloppy.
But lets say you are trying to replace the FAA Radar/Plane Tracking systems?
(An upgrade that has failed more than once)
You get to the point where the exactness of the Requirements "feel" like Specifications, but they are really not. Because they should not be "specifying HOW to get the job done" just what the result is Required to be!
These two are separate by definition, IMO
|
|
|
|
|
Requirements and specifications should be handled by the business team and/or product owner.
Requirements: I want a form to enter in someone's name.
Specifications: The text boxes have to be next to each other, on the same horizontal line.
These two can be in the same document or in separate documents; it all depends on how things are done at your company or with the client.
Software design document: You take the requirements and specifications, and you paraphrase them, but this time you add the detailed design specs on how to accomplish the business ask.
Theoretically, you should be able to hand a well written design document to a team and only need to answer minimal questions, or have very few subsequent follow up meetings on the SDD. I say theoretically, because theory and application are so far apart sometimes.
Overly simplified but not by much, really.
modified 25-Apr-16 13:10pm.
|
|
|
|
|
Good point in "theory". Many software companies mixed RS. I've seen too many places where the line between requirement and specification is gray. To me that's very confusing.
A requirement is what end users tell me what they want in non-technical terms. A specification is the translation of user's terms to a bounded and testable terms. Both documents should be done separately.
|
|
|
|
|
Requirement: Coffee and Pizza!
Specification: What do you want it to do?
New version: WinHeist Version 2.2.2 Beta I told my psychiatrist that I was hearing voices in my head. He said you don't have a psychiatrist!
|
|
|
|
|
Haha, I like that. It pretty much comes down to that when interfacing with customer for requirement gathering.
|
|
|
|
|
The first thing? Usually 'where's the exits in this place?'
I am not a number. I am a ... no, wait!
|
|
|
|
|
Requirement is what the customer asked for.
Specification is what you get from the manager in a group meeting with some motivational powerpoint presentation after the customer's requirement has gone through the "telephone game" from sales person to marketing to CEO to CFO to CTO to corporate manager to product manager to your manager (I'm sure I'm missing another 50 layers.)
Marc
|
|
|
|
|
Requirements are what the customer needs (this includes "internal customers"), and, in a perfect world, comprise lots of use cases.
Specifications are the technical details of how it should be built, and how it should behave.
When it's ready for shipping, met requirements are translated into documented "features", and met specifications are translated into spec sheets/data sheets for the customer.
I wanna be a eunuchs developer! Pass me a bread knife!
|
|
|
|
|
We have SRS (Software Requirement Specification) and HRS (Hardware Requirement Specification) documents in our company.
"Program testing can be used to show the presence of bugs, but never to show their absence."
<< please vote!! >></div>
|
|
|
|
|
This is really a confused question. To "specify" something is to "identify (something) clearly and definitely". One can specify a requirement. One can specify a design. One can specify a test. If you want a good example of how things like this are named, research the specifications (and similar documents, like plans or standards) used by the U.S. Department of Defense, or the IEEE, or ISO.
|
|
|
|
|
Requirements == needs
Specifications == deliverables
For every stated need, there is a stated deliverable.
A "Correspondence Matrix" shows the relationships.
Need Deliverable Design Code Test
Element Element Element
aN aD aDE aCE aTE
bN bD bDE bCE bTE
cN cD cDE cCE cTE
... ... ... ... ...
...in theory...
Cheers,
Mike Fidler
"I intend to live forever - so far, so good." Steven Wright
"I almost had a psychic girlfriend but she left me before we met." Also Steven Wright
"I'm addicted to placebos. I could quit, but it wouldn't matter." Steven Wright yet again.
|
|
|
|
|
My experience has been that project creep is the great destroyer and ruins both requirements and specifications.
A giraffe is a horse designed by a committee--- and executed by an Agile team....
|
|
|
|
|
If you have project creep, then your project should be managed using "agile" technique. Ship the first version of the product when it does something concrete, then update continuously according to the whims of the paying customer.
This is one of the great distinctions between waterfall ("design everything up front") versus agile ("start simple and manage the mission creep") styles. With agile, your customer gets something useful sooner and is generally happier in the long run since new ideas and features can be added as part of the plan.
I'm retired. There's a nap for that...
- Harvey
|
|
|
|
|
A Specification will generally encompass several Requirements.
|
|
|
|
|
Just a thought, but might be better to think of the documents as checkpoints along a continuum of vague to detailed.
e.g.
bid->requirements->specification->design->tests->code.
Obviously a lot of effort has to go into properly creating and maintaining these documents which is why many organizations skip over or combine these steps. Or even call them by a different names for emphasis to a given audience.
How and why would be well beyond the scope of this reply there lots of different opinions out there on what is really important in the process.
|
|
|
|