Requirements Specification Requirements Specification (CS340 John Knight 2005)
Requirements Specification A Critical Document Focuses Attention On Asking What The System Should Do Provides Communication: User To Developer Between Developers Developers To Management Developers To Software Tools Managers To Regulators Requirements Specification (CS340 John Knight 2005)
Requirements Specification Important Goals For A Specification Document: Completeness Freedom From Ambiguity To The Extent Reasonable, Specify External System Behavior Only Specify Constraints On Implementation Easy To Change Reference Tool Throughout Lifecycle Record Forethought About System Lifecycle Define Acceptable Responses To Unexpected/Unusual Events Be As Formal As Possible Requirements Specification (CS340 John Knight 2005)
Why Are Specifications Important? Requirements Specification (CS340 John Knight 2005)
Problems With Specifications Conventional Specifications: Tend To Be Novels Tend To Be Wrong Tend To Say “How” Do Not Facilitate Communication Generally Take The Wrong View Ignore The Possibility Of Change Are Not Updated During Remainder Of Lifecycle No Workable Development Process Requirements Specification (CS340 John Knight 2005)
What Notation Can Be Used? Key Problem Is Communication Failure: Analyst And User Do Not Talk User Does Not See Specification Delivered System First Source Of Feedback Does This Seem Like A Good Situation? Many Approaches: Natural Language Structured Natural Language (Semi-Formal) Formal Notations Requirements Specification (CS340 John Knight 2005)
Natural Language Great Expressive Power “Understood” By All Many words and phrases have multiple meanings. Used Routinely In Software Development, BUT: Assumes Everybody Shares The Same Meaning Ambiguous Even If Meanings Are Shared No Inherent Structure Too Expressive: Same Thing Can Be Said Many Ways Unsystematic: Hard To Effect Change Can Be A Disaster Waiting To Happen What Are The Alternatives? “Fix” Natural Language Develop Special-Purpose Formal Notations Requirements Specification (CS340 John Knight 2005)
Fixing Natural Language Could Natural Language Be Fixed? There Have Been Many Efforts To Do So Ideas: Restrict Features Used Add Supplementary But Familiar Notation(s) Use Rigid Document Structures Be Very Careful Build Natural Language Analyzers Be As Formal As Possible Within Natural Language In This Class: For Project, We Will Use A Combination Of: Structured Natural Language Simple But Powerful Formalisms Study Formal Specification Notation (Later) Requirements Specification (CS340 John Knight 2005)
Formal Specification Languages Semi-Formal Techniques Turn Out To Be Really Helpful Much Better Than Straight Natural Language Can We Do Better? Formal Languages: Languages With Precise Semantics Based On Mathematics Facilitate Accurate Communication Between Engineers Many Such Languages Developed Usually Based On: Propositional And Predicate Calculus Finite Set Theory Simple Syntax For Composition And Structure Example Formal Specification Languages: Z , VDM, ASLAN, Statecharts, PVS Relatively Unpopular In USA, Relatively Popular In Europe Requirements Specification (CS340 John Knight 2005)
Simple But Very Useful Formalisms Data Flow Diagrams Regular Expressions BNF Finite State Machines Petri Nets Simple Tabular Notations—E.g. Decision Tables: Requirements Specification (CS340 John Knight 2005)
Requirements Specification (CS340 John Knight 2005) Data Flow Diagrams Model Of The Data Flow In The System Documented As A Simple Graph Arcs Show How Data Moves Nodes Show Transformations/Actions On Data Data Sinks And Sources Used For Input And Output Data Dictionary Explains What Data Is For Hierarchic Structure—Refinement And Abstraction Various Simple Analysis Possible Can Be Used To Develop Useful Designs For Simple Systems Core Of A Technique Called Structured Analysis Requirements Specification (CS340 John Knight 2005)
Regular Expressions And BNF Useful For Many Purposes, E.g.: Format Of Inputs/Outputs Formats Of Files Definition Of Command Languages Note: Only Defines Context-Free Syntax Context-Sensitive Syntax Defined Informally Actions Also Defined By Different Mechanism, Often Informal Recognizers Usually Developed Automatically: LEX For Lexical Analysis YACC For Syntax Analysis YACC And LEX Provide Mechanisms For Composition Of All Necessary Elements Use Regular Expressions And BNF For Things That They Support, You Will Get It Wrong Otherwise Requirements Specification (CS340 John Knight 2005)
Finite-State Machines Software Usually Implements A Finite-State Machine Describing Required Actions With FSM Is Very Powerful Approach: Define States Define Transitions Remember That Actions Are Associated With Transitions Remember That Which Transition Is Taken Depends On: Current Input Current State Carefully Check Initial State And Final State(s) Sometimes Subtle Mistakes Remain Much Of The Specification Can Be Tabular Use FSMs Carefully Requirements Specification (CS340 John Knight 2005)
Project Specification Document Follow General Outline In Text Add: Cover Page Signature Page Table Of Contents Other Sections Dictated By Selected Techniques Develop Document In English Supplemented By Parts Of A7E Technique Use Appropriate Techniques Discussed In Class Take Care With: Requirements Analysis - Scheduling Identification Of Risk Areas - Configuration Management Integration Of Document Parts - Apportioning Of Work Validation Of Document Requirements Specification (CS340 John Knight 2005)