liveBook · Manning

Functional specification

As explained in Object-Oriented Software Design in C++

A document that describes an application's externally observable purpose, behavior, and requirements without internal implementation details.

A functional specification describes an application from the outside, using nontechnical language to state what it will do without internal implementation details. It aligns clients and developers and can remain changeable until features freeze. section 3.8 section 3.10

A practical specification commonly includes:

  • The application name, problem statement, objectives, and functional and nonfunctional requirements, stated with “must” or “shall.” section 3.8
  • Use-case diagrams and descriptions that connect requirements to application functionality. section 3.10
  • An optional external test plan describing black-box inputs or user actions and their expected results. section 3.8

Book Catalogue

A specification might define an application that stores and searches for books, state its objectives, describe user use cases, and specify observable test results without prescribing its classes or implementation. section 3.8

How Object-Oriented Software Design in C++ covers it

How deep it goes
Specifies contents, language, use cases, and optional black-box tests while deferring internal implementation details to the design specification.
Examples
Uses a Book Catalogue example involving book storage and search, plus external black-box test inputs and expected results.
What it assumes
Requires client engagement and requirements gathering while teaching how to organize requirements into use cases and a specification.
What you can do after
Evaluate whether an application addresses client needs and verify its observable functional and nonfunctional behavior.
How it connects
Connects requirements, use cases, UML, black-box testing, software validation, and the design specification.

Also explained in

Compare how 2 books explain functional specification →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Object-Oriented Software Design in C++. The section links point to the parts of the book it draws on.