Elegance Technologies Blog

Monday, June 12, 2006

Types of Software Specifications

Developers often confuse the various types of software specifications. There are many types of software specifications, but here I'm focusing on describing the most common types: requirements, functional, and design.
  • Requirements Specification: Requirements Specifications are used to define the problem(s) that you need to solve. In other words, they define the "what". Requirements Specifications may contain both qualitative requirements (the software should be easy to use) and quantitive requirements (response time must be less than 2 seconds). They often contain high-level Use Cases.
  • Functional Specification: Functional Specifications define how you are going to resolve the Requirements Specifications. In other words, they define the "how". If a user interface is involved, they usually contain screenshots and descriptions of how the screens work. We (Elegance Technologies) created Lucid Spec to help write Functional Specifications.
  • Design Specification: Design Specifications define how you are going to implement the Functional Specifications. In other words, they also define the "how", but the "how" is related to software implementation issues. This software specification usually contains things like UML class diagrams, interaction diagrams, database design diagrams, etc.
Many software organizations use Agile software development processes today. As a result, some developers believe that they don't need to write software specifications anymore. This is not true! Developers may not write all the software specifications upfront, but they should write the portion of the software specifications relevant to their current software development iteration.

0 Comments:

Post a Comment

Links to this post:

Create a Link

<< Home