Overview of Design Concepts: What is
a Functional Specification?
Following is a brief summary of some of the concepts
on functional specification and design that we are working on in class:
Remember these distinctions:
- a functional specification answers questions such as "What screens
do the users see?", "What kind of reports does the user need?",
"Who will be using this system?" Functional specifications are typcially
written by analysts who are specialists in a particular industry or field,
but who are not necessarily programmers or technical staff.
- a technical specification answers questions such as "What is
the operating system for this application?", "What is the database
environment to be used?", and "How many tables are in the database
and how are they defined?" Technical specifications are typically written
by computer department staff, and usually written in conjunction with the
analyst(s) and/or users who prepared the functional specifications. If the
functional specification is written correctly, the programmer who writes the
technical specification should not need to understand the industry per se.
Following are some things to consider when you are
working on a functional specification:
- What is the subject of this database? (Is it about paintings in a gallery?
Statistics on baseball players? Checking account transactions at a bank?)
- What are the goals of this database? (Will this database be used by administrative
staff to track transactions? Will it be used by teachers to record grades
and other student information? Will it be used by researches to record data
"on the fly" as they conduct experiments? Will it be used by children?)
- What are the data sources that you envision? Will the system allow for data
imports (e.g. text files), data entry by users, or both?
- Will this be a multi-user system or for only one user at a time (i.e. a
- What kind of output do the users need? Will this system produce web pages,
printed reports, mailmerge files, labels, and/or other output?
- Will this system require dynamic or static updates to a website?
- What are the approximate file sizes that you envision? Will the files fit
comfortably on a Mac or a PC? (This is sometimes helpful to know so that you
can plan your hardware requirements in the technical specification. For example,
a system to handle report cards for a school of under 200 students would require
less space than a system to handle report cards for an entire district or
a large high school of 4,000 students.)
- Are there special business rules and/or calculations that
pertain to this industry? (For example, it is important to specify how interest
is calculated for a specific type of account in a banking transaction system.)
- How many data entry screens are needed and for what kinds of data? How much
data validation should happen in the data entry screens and/or will you need
to plan for programs to "scour" the data during low usage times
such as during the night?
- Give examples of some of the reports or output that will be required (e.g.
the contents of several reports, whether mailmerges and/or labels are needed,
data extracts, etc)
- What are the security requirements?
- Will there be special considerations with regards to the data types e.g.
will the system need to handle a large volume of images, documents, or other
There are many additional things to consider, depending on the nature of
the database system that you are designing. But this is a start !!