Feature DEFINE: Define the issues involved, and their formats.

Description and Priority

The local issue managers (those responsible for setting up an issue-tracking repository) must be able to define the issues that will be tracked. Since yaktrack will be used by both inexperienced users and expert users, this should not be necessary (because an inexperienced user should be able to get up and running with minimal effort), but should be possible, because an expert user should be able to track different types of issues, and define the attributes tracked in each. YakTrack installs a basic template for defects (the primary issue type that is tracked), so that inexperienced users can get going immediately; experienced users should modify or extend the basic template to add different issue types (requirements or improvements, for example) and refine existing issue types.

Stimulus/Response Sequences

DEFINE.UC.EXPERIENCED: Experienced issue manager: Define an Issue

Description

The user checks out their own version of the tracking repository and edits the template files "by hand" in a text editor. The template files will be simple XML templates (DTDs). This "by-hand" method may be extended in the future by creating a sort of "wizard".

Requires

A created repository
A DTD to modify, if modifying an existing issue type
No submitted issues using the given type, unless the changes will not affect existing issues.

Ensures

A valid DTD, usable by YakTrack for indexing and filing
A valid repository

Frequency of Use

Generally, once per repository. It is rare (and could cause some problems) if DTDs are changed after issues using those DTDs have been submitted.

Normal Course

Table 4-11. Normal Course of Actions

Actor ActionsSystem Responses
Refresh the local copy of the repository via version control(as per version control software)
Edit the existing DTD with a text editor(as per text editor)
Verify that the DTD is usable by YakTrack (see use case DEFINE.IS-VALID-TEMPLATE.UC) and check that the repository is still valid by auditing the repository (see feature AUDIT).(as per feature AUDIT)

DEFINE.IS-VALID-TEMPLATE.UC: Check to see that a template is valid

Description

The user runs the command yaktrack is-valid-template [template-name]. The system checks to see if the template satisfies the conditions of the simple XML DTDs used by the system, and gives a report of the check. It does not check to see if the given DTD works with any existing issue reports.

Requires

A created repository
A DTD to check in the templates directory

Ensures

Feedback to the user on the status of a dtd

Frequency of Use

Low. It will primarily be used in initial system development, but will be used with the DEFINE feature on a regular basis.

Normal Course

Table 4-12. Normal Course of Actions

Actor ActionsSystem Responses
Invokes the toolloads the DTD
 Verifies the DTD follows simple DTD rules
 Presents feedback to the user

DEFINE.REGISTER-TEMPLATE.UC: Register a template in the repository

Description

The user runs the command yaktrack register-template [filename]. The system checks to see if the template satisfies the conditions of IS-VALID-TEMPLATE, and then stores it into the repository using the name of the first element in the DTD. It will not store a template if one of the given name already exists.

Requires

A created repository
A file of the given filename containing the new DTD.

Ensures

If the given DTD is valid, it is installed in the repository's templates directory
Either way, feedback is returned to the user on the status of the procedure

Frequency of Use

Low. It will primarily be used in initial system development, but will be used with the DEFINE feature on a regular basis, and will be used when users are creating their own repositories and templates.

Normal Course

Table 4-13. Normal Course of Actions

Actor ActionsSystem Responses
Invokes the toolloads the DTD from disk
 Verifies the DTD follows simple DTD rules
 Opens a repository from the current working directory
 If the DTD is valid, installs it in the repository
 Either way, presents feedback to the user on the status of the request

Functional Requirements

DEFINE.IS-VALID-TEMPLATE.FR1. The system should be able to read an XML DTD from disk

DEFINE.IS-VALID-TEMPLATE.FR2. The system will have a tool named "is-valid-dtd" which will be used to verify that a given DTD file is valid for use with yaktrack.

DEFINE.IS-VALID-TEMPLATE.FR3. The system should identify the presence of multiplicity operators in the element list of a DTD

DEFINE.IS-VALID-TEMPLATE.FR4. The system should identify the presence of choice groups in the element list of a DTD

DEFINE.IS-VALID-TEMPLATE.FR5. The system should identify the presence of optional elements in the element list of a DTD

DEFINE.IS-VALID-TEMPLATE.FR6. The system should identify the presence of any attributes which are not CDATA or enumerated attributes

DEFINE.IS-VALID-TEMPLATE.FR6a. The system should mark a loaded DTD as invalid for any disqualifying element, and communicate this fact to the user.

DEFINE.IS-VALID-TEMPLATE.FR7. The system should identify the presence of any attributes which are not #REQUIRED or #IMPLIED

DEFINE.IS-VALID-TEMPLATE.FR8. The system should ensure that each root element has a "yaktrackid" attribute which is #IMPLIED

DEFINE.REGISTER-TEMPLATE.FR1. The system should implement a command named register-template for adding new templates to the repository.

DEFINE.REGISTER-TEMPLATE.FR2. The system should check to see if the new template is valid as per the requirements of the DEFINE.IS-VALID-TEMPLATE functional requirements

DEFINE.REGISTER-TEMPLATE.FR3. The system should, if the template is valid, register it in the repository under the name of its root element (the first element declared in the DTD)

DEFINE.REGISTER-TEMPLATE.FR4. The system should display feedback on the result of the register-template request