Writing Functional Specifications

Slides:



Advertisements
Similar presentations
Logical and Physical Design of an Information System
Advertisements

Object-Oriented Analysis and Design LECTURE 3: REQUIREMENTS DISCIPLINE.
Unit 251 Summary  Requirements may be represented in itemized format or in visual modeling (UML). Once the complete set of requirements are in our hand,
Microsoft® Small Basic Advanced Games Estimated time to complete this lesson: 1 hour.
PLANNING THE TIC TAC TOE GAME BY NEEL DAVE. TIC TAC TOE INSTRUCTIONS Tic Tac Toe Instructions The basic concept of Tic Tac Toe 1.This is a game for two.
Presented by : Ashin Ara Bithi Roll : 09 Iffat Ara Roll : 22 12th Batch Department of Computer Science & Engineering University of Dhaka.
1 CSE1301 Computer Programming: Lecture 23 Algorithm Design (Part 1)
AN OVERVIEW BY JAMIE STARKE The Role of Prototyping.
Requirements and Design
Representing a Game Board In a game, we represent the action taking place using an array – In a very simple game, we use individual variables to represent.
1 Software Requirement Analysis Deployment Package for the Basic Profile Version 0.1, January 11th 2008.
Conversation Form l One path through a use case that emphasizes interactions between an actor and the system l Can show optional and repeated actions l.
Connect Four Michelle Chen Felix Chung Annabel Hung Raymond Wong.
CSI 101 Elements of Computing Spring 2009 Lecture #2 Development Life Cycle of a Computer Application Monday January 26th, 2009.
Building Memory… Notes from class on 4/4/07. The Game First understand what we are trying to build. Then, create a list of requirements/functionality.
Requirements Elicitation Chapter 4. Establishing Requirements Two questions –What is the purpose of the system –What is inside and what is outside the.
Component and Deployment Diagrams
1 Lecture 5 Introduction to Software Engineering Overview  What is Software Engineering  Software Engineering Issues  Waterfall Model  Waterfall Model.
1 CSE1301 Computer Programming: Lecture 25 Software Engineering 2.
1 Case Study: Starting the Student Registration System Chapter 3.
Cambodia-India Entrepreneurship Development Centre - : :.... :-:-
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
U-Mail System Design Specification Joseph Woo, Chris Hacking, Alex Benson, Elliott Conant, Alex Meng, Michael Ratanapintha April 28,
Using Microsoft SharePoint to Develop Workflow and Business Process Automation Ted Perrotte National Practice Manager, Quilogy, Microsoft Office SharePoint.
MSF Testing Introduction Functional Testing Performance Testing.
1 of 5 This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS DOCUMENT. © 2007 Microsoft Corporation.
1 Integrated Development Environment Building Your First Project (A Step-By-Step Approach)
The Design Discipline.
Introduction to Interactive Media 02. The Interactive Media Development Process.
Lecture Outline 11 The Development of Information Systems Chapter 8 page 390+
© Drexel University Software Engineering Research Group (SERG) 1 Based on the paper by Philippe Kruchten from Rational Software.
Alcatel-Lucent CDC Workshop, Coaching & Knowledge Transfer Project Management.
1 REQUIREMENT ENGINEERING Chapter 7. 2 REQUIREMENT ENGINEERING Definition Establishing what the customer requires from a software system. OR It helps.
ITEC224 Database Programming
Final Presentation – CS 425 Aaron O'Banion Todd Astroth Chris Cobb Matt Stowe Mark Williams.
London April 2005 London April 2005 Creating Eyeblaster Ads The Rich Media Platform The Rich Media Platform Eyeblaster.
Design Document Presentation. Review Quoridor – a board game played on a grid where players must advance tokens across a board to win. Our basic objective:
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 4, Requirements Elicitation.
Patterns and Reuse. Patterns Reuse of Analysis and Design.
1 ISA&D7‏/8‏/ ISA&D7‏/8‏/2013 The Analysis Phase System Requirements Models and Modelling of requirements Stakeholders as a source of requirements.
Database Design and Management CPTG /23/2015Chapter 12 of 38 Functions of a Database Store data Store data School: student records, class schedules,
L6-S1 UML Overview 2003 SJSU -- CmpE Advanced Object-Oriented Analysis & Design Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I College.
9 Systems Analysis and Design in a Changing World, Fourth Edition.
Making Python Pretty!. How to Use This Presentation… Download a copy of this presentation to your ‘Computing’ folder. Follow the code examples, and put.
The Software Development Process
CS 5150 Software Engineering Lecture 7 Requirements 1.
Natural Language to Machine Readable Format By: Damian Tamayo Presentation 2 – Nov. 13, 2009 CIS 895 – MSE Project.
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
+ TIC-TAC-TOE GAME CAPSTONE PROJECT SEN Team Members Sno.NameITU ID 1Keerthi Alimity Venkata Ganugapati Sujitha Sanku Bavi Bharathan87550.
IS2210: Systems Analysis and Systems Design and Change Twitter:
Oman College of Management and Technology Course – MM Topic 7 Production and Distribution of Multimedia Titles CS/MIS Department.
SERVICE REQUEST MANAGEMENT IMPLEMENTATION Rev Mar 11, 2008.
SmartPosition Customer Review and Feedback Presentation.
1 BTS330 Visual Modeling. What is Visual Modeling? 2 Copyright © 1997 by Rational Software Corporation Computer System Business Process Order Item Ship.
Use Case Diagrams. Introduction In the previous Lecture, you saw a brief review of the nine UML diagrams. Now that you have the clear, you'll start to.
Copyright © 2007, Oracle. All rights reserved. Managing Items and Item Catalogs.
/16 Final Project Report By Facializer Team Final Project Report Eagle, Leo, Bessie, Five, Evan Dan, Kyle, Ben, Caleb.
IBM Software Group © 2008 IBM Corporation Tivoli Provisioning Manager Beta Program Web Replay Intro and Lab September, 2008 Robert Uthe.
Chapter 2 Build Your First Project A Step-by-Step Approach 2 Exploring Microsoft Visual Basic 6.0 Copyright © 1999 Prentice-Hall, Inc. By Carlotta Eaton.
Use Cases Discuss the what and how of use cases: Basics Examples Benefits Parts Stages Guidelines.
CMPE 280 Web UI Design and Development August 29 Class Meeting
Managing the Project Lifecycle
Use Cases Discuss the what and how of use cases: Basics Benefits
Unified Modeling Language
API Documentation Guidelines
How does a Requirements Package Vary from Project to Project?
Dev Test on Windows Azure Solution in a Box
The Role of Prototyping
Analysis models and design models
Presentation transcript:

Writing Functional Specifications JAMS Workshop Makerere University September, 2010

Agenda What is a Functional Spec? Specification Template Technical Goals Exercise Specification Details Sample Specification

What is a Functional Spec? A functional specification is a document that describes the essential technical requirements of a system or feature, including the procedures by which it can be determined that requirements have been met. Specs are helpful in a number of ways: Enable teams to achieve consensus on what a program is to achieve before implementing it Allow for accurate estimates for work and resources Act as a negotiation and reference document for engineering changes Help avoid duplication and inconsistencies What In systems engineering a specification is a document that clearly and accurately describes the essential technical requirements for items, materials, or services including the procedures by which it can be determined that the requirements have been met. Specifications help avoid duplication and inconsistencies, allow for accurate estimates of necessary work and resources, act as a negotiation and reference document for engineering changes, provide documentation of configuration, and allow for consistent communication among those responsible for the eight primary functions of Systems Engineering. They provide a precise idea of the problem to be solved so that they can efficiently design the system and estimate the cost of design alternatives. They provide guidance to testers for verification (qualification) of each technical requirement.[1] A functional specification does not define the inner workings of the proposed system; it does not include the specification how the system function will be implemented. Instead, it focuses on what various outside agents (people using the program, computer peripherals, or other computers, for example) might "observe" when interacting with the system. A typical functional specification might state the following: When the user clicks the OK button, the dialog is closed and the focus is returned to the main window in the state it was in before this dialog was displayed. Such a requirement describes an interaction between an external agent (the user) and the software system. When the user provides input to the system by clicking the OK button, the program responds (or should respond) by closing the dialog window containing the OK button. It can be informal, in which case it can be considered as a blueprint or user manual from a developer point of view, or formal, in which case it has a definite meaning defined in mathematical or programmatic terms. In practice, most successful specifications are written to understand and fine-tune applications that were already well-developed, although safety-critical software systems are often carefully specified prior to application development. Specifications are most important for external interfaces that must remain stable. Purpose There are many purposes for functional specifications. One of the primary purposes on team projects is to achieve some form of team consensus on what the program is to achieve before making the more time-consuming effort of writing source code and test cases, followed by a period of debugging. Typically, such consensus is reached after one or more reviews by the stakeholders on the project at hand after having negotiated a cost-effective way to achieve the requirements the software needs to fulfill.

Standard Spec Template Overview Goals/Non-Goals Scenarios Functional Design Add sections here as appropriate Implementation Plan Deployment Plan Security Performance Implementation Details Open Issues Written by either program manager or business stakeholder – background on what the feature is and why we need it. Sometimes called a “one-page spec”. Written by program manager in collaboration with developer. Describes what will be built in enough detail to unblock the dev team, including user interface design, workflows, and system diagrams. At MSFT, we sometimes write the one-page specs before we make the final decisions on which features we will implement. The one pagers help us understand the features a little better so we can make good decisions. Written by developer, discusses deeper technical aspects of system Written by spec owner, should be empty when spec is “done”

Users of a Functional Spec Business Stakeholder Provides and/or reviews goals, scope, scenarios Program Manager Usually the primary author Interfaces with the business stakeholder for goals Works with developers on functional design Developer Authors implementation sections Writes code and test cases to validate functional design Test Engineer Ensures scenarios function as described in the spec Operations Manager Consumes the deployment plan

Spec may be updated at each stage of development Spec Lifecycle Gather Requirements Overview, Goals, Scenarios Design the System Functional Design Implement the System Implementation Details Quality Assurance & Documentation Validate scenarios against implementation Operate & Maintain Deployment Plan Capture customer feedback Spec may be updated at each stage of development Unifying document for all disciplines

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.

Goals and Non-Goals Goals and Non-Goals clearly articulate what you are and are not doing Goals are the concrete outcomes you are trying to accomplish with the feature They should be prioritized 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

Technical Goal-Writing Exercise Tic-Tac-Toe A two-player game where players try to get three squares in a row Beyond that high-level description, what is it and, more importantly, what isn’t it? Goals [P1] Support two human players in a game that is run as a client application [P2] Support custom player names … Goals [P1] Support two human players in a game that is run as a client application [P1] Use a graphical representation of the players and game board [P1] Alternating turns between the players starting with X [P1] Declare a winner when a player has successfully placed three marks in a row [P1] Declare a tie when no player can make a winning move [P2] Allow the game to be run inside a web-browser [P2] Use multi-colored graphics in the game visuals [P2] Support custom player names [P2] Tabulate, store, and display statistics on players’ performance [P3] Add a timer to limit the amount of time a player is allowed to spend on a turn [P3] Allow for the two players to be on separate machines and play through the network [P3] Have one player be a computer-based (AI) player [P3] Allow player O to start a game Non-Goals Support for any grids larger than 3x3 Support for non-grid shaped game boards Animation of game play Non-Goals Support for any grids larger than 3x3 …

Tic-Tac-Toe Goals and Non-Goals [P1] Support two human players in a game that is run as a client application [P1] Use a graphical representation of the players and game board [P1] Alternate turns between the players starting with X [P1] Declare a winner when a player has successfully placed three marks in a row [P1] Declare a tie when no player can make a winning move [P1] Support for starting a new game after the initial game has completed [P2] Allow the game to be run inside a web-browser [P2] Use multi-colored graphics in the game visuals [P2] Support custom player names [P2] Tabulate, store, and display statistics on players’ performance [P3] Add a timer to limit the amount of time a player is allowed to spend on a turn [P3] Allow for the two players to be on separate machines and play through the network [P3] Have one player be a computer-based (AI) player Non-Goals Support for any grids larger than 3x3 Support for non-grid shaped game boards Animation of game play Allow player O to start a game

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

Switch Current Player and update UI Player clicks a square Is square available? Yes No Update Gameboard Switch Current Player and update UI 3 in a row? Yes No Start New Game Print winning message Tie? Yes No Print tie message Update Statistics

Functional Design: Security A spec for any security-sensitive feature needs to address security Discuss concerns and mitigations Priority Security Concern Mitigation 2 If we decide to implement a web-based version of the game, then we need to account for denial of service attacks. Add encryption (https) and HTTP authentication

Functional Design: Implementation & Deployment Plan Implementation Plan Gameboard and game-play logic UI design and visuals for gameboard, players, and winner notifications Hooking up the UI gestures to the game-play logic Advanced features, such as customized player names, timing moves, and showing high scores Implementation Plan If applicable, what are the different phases involved in the development of the feature? Especially important for complex features that will take more than a day or two 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? Deployment Plan Tic-tac-toe will be packaged as a single Windows executable. There are no features that require special setup tasks. If my feature required client updates, my deployment plan would be longer

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 Should we use Windows Forms or WPF for the UI? 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