The purpose of a technical specification in a software development project is to define the customer's technical requirements that will be addressed by the project.
See: WhatIsaSpecificationAnyway
See Also: FunctionalSpecification
Below I pose three questions {A,B and C} around Tech Specs and have given my brief thoughts about each topic.
-- TimTwelves
A. How does the specification mechanism differ between types of problems?
A technical specification may differ because different types of technical problems may produce drastically different levels of detail in different document structures potentially based on role of the person who wrote the technical specification and type of problem.
In particular, the technical specification for an application that is going to be written from scratch would be vastly more detailed than the technical specification around a feature change. I would even argue that in such a scenario, the templates used would be significantly different.
I would elaborate to say that,
B. Who writes technical specifications? And what does a BusinessAnalyst do that is different from a SoftwareArchitect and SeniorDeveloper? create (w.r.t. technical specifications)?
I find it intriguing how some BusinessAnalysts (in the SoftwareDevelopment field) define their specifications by covering (a) DatabaseSchema?, (b) UserInterface, (c) BusinessRules, (d) XmlSchema. Consider a developer who writes a technical specification that does not relate to business functionality. Would a developer produce a software design or a technical specification? (I expect that every good software developer can be a business analyst.)
Is the output that the BusinessAnalyst produces a TechnicalSpecification? Or is it a SoftwareRequirementsSpecification?? I would say that a developer should not write a SoftwareRequirementsSpecification?.
My real question: When a business analyst produces their specification (functional spec), they sometimes want a response that details what will be done by the developer. What form does this response take? If the BA produces an SRS, the response is an SDD. If business produce an SRS and the BA produces the SDD/functional spec then what does the developer respond with?
There is a slight ambiguity here around who produces what type of output. The SDD/TechSpec? is typically in response to an SRS. (I assume a TechnicalSpecification is a SoftwareDesignDocument?.) Why, then, do InHouseDevelopers? typically work straight off the spec produced by the business analysts instead of responding to it with a TechnicalSpec?? I would agree with one who said that simple specs (changes with a low order of complexity) would not require a TechSpec?. Are there other reasons?
Or, do BusinessUsers? provide the SRS, the BA comes up with a SDD and a test plan and the developer is actually developing off the SDD produced by the BA? Which explains why the developer doesn't need to write a tech spec.
Furthermore, what does an Architect or Senior Developer create that's different from what a business analyst does? A design fulfills a specification, that is for certain. A design has an architecture that is followed.
C. What happens when the SRS is so simple?
Assuming the SRS is produced by a Business Analyst who takes a screenshot and says - put that database field on that webpage.
According to WhatIsaSpecificationAnyway
The template I use follows the IEEE SDD. The key to filling out the SDD is to note as little as possible. Do not write something for the sake of filling out the section. Every line should have a clear purpose. A problem with the spec is that when someone comes with a new feature that is so small, it is too difficult to respond with the particular specification below because the feature is too small. It becomes better to work off the SRS than waste time filling out an SDD.