The detailed requirements stem from fundamental design decisions including the choice of python as an implementation language, the decision to restrict the user interface to batch processing of text files, and the embodiment of the principal notions of literate programming.
The sections below discuss the requirements from the point of view of desired functionality, interface, implementation pragmatics, and management.
However, it is not possible to entirely separate discussion of requirements from design, because detailed requirements stem from design decisions, and guide more detailed design. Nor is it possible to separate implementation from design, since implementation details have design consequences -- and also provided unexpected opportunities for functionality not in the original requirements.
In other words you can expect some discussion of design and
implementation in the section, although the emphasis is on
requirements. See the next major section for a discussion
focusing on design, and the following section for
a detailed description of the implementation.
3.1. Functionality
3.2. Interface
3.3. Management
3.4. Implementation pragmatics