Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Are there standard practices when writing a spec for a software development project? Is there a specific format to follow? Also, does the developer or the client write this up? If the dev, is this billable?

share|improve this question
1  
yes, there are. They're called "methodologies", and there are dozens of them –  Steven A. Lowe Nov 7 '11 at 6:03

3 Answers 3

The great thing about standards is that there are so many to choose from.

IEEE 830 for instance. Non-paid link

http://en.wikipedia.org/wiki/Software_Requirements_Specification

share|improve this answer
2  
-1 That's a comment, not an answer... Could you please expand? –  Yannis Rizos Nov 7 '11 at 3:16
    
The answer is a bit concise, and it looks like the standard isn't available for free, but the wikipedia link looks like a good start. –  Moshe Nov 7 '11 at 3:19
1  
+1 This EXACTLY provides an answer to a poorly worded and unclear question in my opinion. What kind of spec is being talked about, Technical Specification? Bussiness Requirements Specification? I am assuming business requirements specification as is mootinator, and in response he posted the official IEEE standard SRS business requirements template. –  maple_shaft Nov 7 '11 at 12:29

The overall requirements

1. Defining Models
The best format is UML, which include representation of key elements of the system(as classes or objects), the chronology of events (through sequence diagrams) and data flow diagrams etc. Alternatively one can have ER representation of entities and data dictionaries.

2. Defining Use cases
Use cases are quite often included within the part of UML. However, that is not necessarily true. The best reference you can find about writing use cases is a book "Writing effective use-cases" or refer here for a brief document from author.

3. System requirements
Here, we define the systems (OS, hardware etc.) where systems are expected to run and define the requirements of scalability and performance in terms of system load (number of queries/transactions per second) or response time (maximum time for user response).

4. Other compliance requirements
Here, we can specify compliance to externally defined formats of data, protocols or existing (published or documented) API for other services or libraries. The system needs to be complied to this.

5. Screens
Quite often, the visual representations of various dialog boxes are pre-defined with clients as part of the specs are frozen. This is usually possible only for small and medium sized projects.

While it is not always true that UML and other such formats are used. Many a times companies can have their own specific type of templates may exists such as one shown in wikipedia.

share|improve this answer

One quick tip: add time numbers to the spec document. Start from 1 on each page.

Our main spec recently had line numbers added, and it's so much more easy to refer colleagues to an exact sentence.

Before: "... on page 25, section 2.8, that bit under the table, no, the next bit, it begins with 'The server must...'"

Now: "See page 25, line 34."

share|improve this answer
1  
We identify each requirement with unique identifier. That makes references way more change-resistant and allows traceability. –  MaR Nov 7 '11 at 12:33
    
@MaR Yes, that's also a good idea. However, I think line numbers are also useful for pinpointing exact descriptions of text, especially for multi-line requirements or multi-sentence descriptions. –  Hugo Nov 7 '11 at 13:07
    
This is a great comment... though it is not an answer. –  Chad Nov 7 '11 at 14:45

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.