Professional Documents
Culture Documents
2 Writing Functional Specifications
2 Writing Functional Specifications
Agenda
What is a Functional Spec? Specification Template Technical Goals Exercise Specification Details Sample Specification
Add sections here as appropriate Implementation Plan Deployment Plan Security Performance
Program Manager
Usually the primary author Interfaces with the business stakeholder for goals Works with developers on functional design
Test Engineer
Ensures scenarios function as described in the spec
Business Stakeholder
Provides and/or reviews goals, scope, scenarios
Operations Manager
Consumes the deployment plan
Spec Lifecycle
Spec may be updated at each stage of development
Gather Requirements
Overview, Goals, Scenarios
Overview
What is the feature about and why do we care?
You only need a few paragraphs to describe it at a high level But make them compelling, especially if the feature is large or expensive to build Address the business need for the feature
Anyone (technical or otherwise) should be able to read this section and understand it
Tic-tac-toe is a game for two players, X and O, who alternate marking spaces in a 3x3 grid with their symbol. The player who successfully places a set of three marks in a horizontal, vertical, or diagonal row wins the game. If no player can create a horizontal, vertical, or diagonal row then the game is a draw. Player X goes first. As it has a simple set of rules, tic tac toe provides leisure entertainment for people of all ages.
Non-Goals help with scoping: they clearly identify things you are not trying to accomplish
Non-goals may (or may not) become goals at a later point in the project
Beyond that high-level description, what is it and, more importantly, what isn t it?
Goals 1. [P1] Support two human players in a game that is run as a client application 2. [P2] Support custom player names 3. Non-Goals 1. Support for any grids larger than 3x3 2.
Scenarios
A scenario is a narrative description of a user s interaction with the system
There is usually at least one scenario for each type of user who interacts with the system
Richard has an afternoon free. He calls up his friend Joseph and invites him over to play tic-tac-toe. Richard launches tic-tac-toe and a 3x3 grid appears on the screen. They play a game, Joseph connects three Os on the right-most column and is declared the winner.
Functional Design
Describes the system in enough detail for testers to write test plans and developers to design the implementation
Description of major components Application workflows/logic User Interface mockups Database schema Protocols/wire formats for any client/server interactions
Diagrams are helpful Does not cover details that are purely internal implementation
Focuses on what outside agents observe when interacting with the system
Yes
Is square available?
No
Update Gameboard Switch Current Player and update UI Yes 3 in a row? No Start New Game
Yes
Tie?
No
If we decide to implement a web-based Add encryption (https) version of the game, then we need to and HTTP authentication account for denial of service attacks.
1. Gameboard and game-play logic 2. UI design and visuals for gameboard, players, and winner notifications 3. Hooking up the UI gestures to the game-play logic 4. Advanced features, such as customized player names, timing moves, and showing high scores
Deployment Plan
Deployment Plan
How will we deploy this new feature? Are there updates or patches that need to be installed on a server? Any database schema changes? Does the order of steps matter?
Tic-tac-toe will be packaged as a single Windows executable. There are no features that require special setup tasks.
Implementation Details
Further details on how the developer will implement the product
Algorithms Class/method definitions Data structures
Enables testers to perform deeper testing For bigger features, allows for better collaboration among multiple developers
Open Issues
Used to capture unanswered questions during the spec authoring and review process This section should be empty when the feature is complete
Open Issues 1. Should we use Windows Forms or WPF for the UI? 2. Should we secure the high-score file, or at least obfuscate it?
Sample Specification
The functional specification for Tic-Tac-Toe is included in your Student Packet http://lawolf.net/jams/Student%20Packet.doc