Outline for a Typical Software Requirements Specification 1. Introduction 1.1 Purpose 1.2 Scope 1.3 Definitions, Acronyms, Abbreviations 1.4 References 1.5 Overview 2. General Description 2.1 Product Perspective (Marketing Context) 2.2 Product Functions 2.3 User Characteristics 2.4 General Constraints 2.5 Assumptions and Dependencies 3. Functional Requirements 3.1 Overview 3.1.1 UseCase Diagrams 3.1.2 Class Diagrams 3.2 UseCase 1 3.2.1 Name 3.2.2 Actors and Goals(pre and post conditions) 3.2.3 Scenarios 3.2.4 Relation to other UseCases 3.2.5 Sequence or Collaboration Diagrams ... others as appropriate 3.c Class Specification 1 3.c.1 Name and Type 3.c.2 Attributes 3.c.3 Operations/Functions/Responsibilities 3.c.4 Relations to other Classes 3.c.5 Constraints 4. External Interface Requirements 4.1 User Interfaces 4.1.1 Graphical 4.1.2 Command Lines 4.1.3 Application Programmer 4.2 Hardware Interfaces 4.3 Communications Interfaces 4.4 Software Interfaces 5. Performance Requirements 6. Design Constraints 6.1 Standards Compliance 6.2 Hardware Limitations 6.3 Platform Limitations ... others as appropriate 7. Attributes 7.1 Security 7.2 Binary Compatibility 7.3 Reliability 7.4 Maintainability 7.5 Portability 7.6 Extensibility 7.7 Reusability 7.8 Application Affinity/Compatibility 7.9 Resource Utilization 7.10 Serviceability