|
From: Frank V. C. <fr...@co...> - 1999-12-15 03:44:05
|
As stated in the From Requirements to Analysis post I would like to propose a template for the Requirements Document. The document itself is not expected to be complete when first introduced (unless someone is really ambitious) but will probably be filled in throughout the discussion of the requirement statement. I assume that "CoreLinux++ should have a Thread Class" in not nearly sufficient to even enter Analysis with. This is, for the most part, a somewhat shortened System Requirement Specification (SRS) that I had in my past experience. I took the liberty to removed some of the specification as they overlap with what the Analysis documentation would otherwise provide. AS ALWAYS THIS IS OPEN FOR DISCUSSION (I will omit this statement in future posts as it is my opinion that is is implicit in Open Source philosophy). A software requirements specification should include the following sections. Title : Requirement ID: (message ID from the Requirement Forum) 1. Introduction Provide an overview of the requirement in relationship to the system. 1.1 Deliverables Overview Describe the major functions and components of the product. Summarize the rationale for building the deliverables for readers unfamiliar with the project. 2. Functional Requirements Describe the services, operations, data transformations, etc., provided by the requirement, user interfaces, and the relationship of the requirement to its environment. This portion of a requirements document is usually the largest, because functionality must be described as fully and precisely as possible. 2.1 User Interface Specifications If applicable, describe screens, windows, graphics, and other visual aspects of the requirement. Define any command languages. Specify the interaction or dialog conventions governing the user interface in complete detail. User interface prototypes may be used. For the most part, the CoreLinux++ effort is not to provide widgets or dialogs for EUI so this would typically be NA. 2.2 Product Services Describe the computations, data transformations, services, and so forth provided by the product. State all the services the product will provide, but not how they will be provided. 2.3 External Interfaces and Database Requirements If applicable, describe the interfaces to other systems or the environment. Describe the logical organization of databases used by the system. 2.4 Error Handling Catalog exceptional conditions and error conditions, and responses to these conditions, as completely as possible. 2.5 Foreseeable Functional Changes and Enhancements State any foreseeable changes and enhancements in functionality for the benefit of the designers and implementers. 3. Non-Functional Requirements Discuss the constraints under which the deliverables must operate, the environment in which they must operate, any standards they must conform to, etc. 3.1 Performance Requirements State any efficiency, reliability, robustness, portability, memory size, response time, or similar requirements. 3.2 User Documentation and Other User Aids State the tutorials, reference material, data, examples, test programs, and so forth that will accompany each deliverable. 3.3 Development Requirements State any quality standards or guidelines, independent verification and validation requirements, testing strategies, development methods, tools, techniques, or policies, or other development constraints imposed by the customer or the development organization. 3.5 Foreseeable Non-Functional Changes State any foreseeable changes in non-functional requirements for the benefit of the designers and implementers. Such changes generally arise from hardware evolution, changing user needs, new systems in the operating environment, etc. 4. Remarks and Guidelines for Later Life Cycle Phases Draw attention to any problems or pitfalls, potential solutions to foreseen problems, or other helpful information produced during requirements analysis and generation that may be useful later in the life cycle. 5. Term Glossary Add whatever terms we have introduced. |