Web interface¶ ↑
User stories¶ ↑
As a stakeholder, at any time, through web, I need to see current state of requirements, because I need understand that requirements set are full and correct.
As a stakeholder, at any time, through web, I need to be able to add a comment to any requirements.
As a project team member (PM, analyst, developer, tester), I need to see current state of requirements, because I need to know project requirements.
As a project team member (PM, analyst, developer, tester), at any time, through web, I need to be able add a comment to any requirements, because it is part my usual job on project.
As a PM/analyst, at any time, through CLI, I need to be able to give user access to browsing and commenting requirements, because all team members and stakeholders must have access to requirements.
As an analyst, at any time, through CLI, I need to be able to get all users comments related to particular git repository tag, because I need to consider project team members comments.
Functional requirements¶ ↑
[core] Core¶ ↑
[core.user] User¶ ↑
The System shall provide entity User
. This entity shall be using in authentication process.
[core.user.data] User data¶ ↑
The System shall provide the next data for the User
entity.
Name | Type | M | Description :——- | —— | - | :———————— login | String | Y | Unique user identifier password | MD5 | Y | MD5 hash of user password
[core.user.repo] Users repository¶ ↑
The System shall provide User Repository
.
[core.user.repo.add] Add user to repository¶ ↑
The System shall provide function add user
to add an user to Users Repository
.
[core.user.repo.add.para] Add user parameters¶ ↑
Function add user
shall provide the next set of parameters:
Name | Type | M | Description :——- | —— | - | :——————— login | String | Y | Unique user identifier password | String | Y | User password
[core.user.repo.add.exist] User exist¶ ↑
When add user
function called, if user with the same login exists, the System shall replace password for existed login.
[core.com] Comment¶ ↑
The System shall provide entity Comment
[core.com.data] Comment data¶ ↑
The System shall provide the next data for the Comment
entity.
Name | Type | M | Description :———- | ——— | - | :———————————- requirement | String | Y | Requirement reference tag | String | Y | Git repository tag (git describe
) created_by | String | Y | User login created_at | Timestamp | Y | Timestamp when comment was crated
[core.com.repo] Comments repository¶ ↑
The System shall persist Comment
entities through Comments repository
. The System shall support the next Comments repository
functions. * load collection of comments. * load comment; * save comment; * remove comment.
[core.cmd] Commands¶ ↑
[sec] Security¶ ↑
Simple HTTP Authentication¶ ↑
Web application shall use Simple HTTP Authentication for users.
Storing passwords in MD5¶ ↑
The System shall store users passwords in MD5
[intf] Interface¶ ↑
[cli] CLI¶ ↑
The System shall provide CLI interface
[cli.adduser] adduser¶ ↑
The System shall provide CLI command adduser
. This command shall provide interface to [core.user.repo.add] requirement.
[cli.startsever] startsever¶ ↑
The System shall provide CLI command startserver
. When command startserver
received, the System shall start web application.
<TBD> * IP; * port; * repository - path to corm
git repository * tag - tag of corm
git repository
[cli.comments] comments command¶ ↑
The System shall provide CLI command comments repository [tag] [ident]
.
Parameter repository
is a path to corm
git repository
When parameter tag
provided, the System shall output all comments related to provided parameter tag
.
When parameter ident
provided, the System shall output comments that related to provided parameter ident
only.
[web]¶ ↑
The System shall provide Web interface for requirements reviewing and commenting.
[web.auth] Authentication¶ ↑
When an user open application url, the System shall ask authentication information login
and password
through Simple HTTP Auth.
When user provides wrong (unknown) authentication information, the System shall block access to application.
[web.page] Single page web application¶ ↑
Web application shall be developed as Single page web application
[web.page.parts] Parts¶ ↑
Web application shall provide four main application parts: * Header pane; * Contents navigator pane; * Content pane; * Comment pane;
[web.page.header] Header¶ ↑
The header of web application shall provide the next static information: * Connected user; * Git repository tag;
[web.page.navigator] Contents navigator pane¶ ↑
The Contents navigator pane of web application shall provide dynamic tree of Requirement repository
. It shall display requirement ident
and requirement title
.
The Contents navigator pane must have ability to expand and collapse. By default: * the tree must be fully expanded; * the tree must be positioned on first requirement.
[web.page.content] Content pane¶ ↑
The Content pane of web application shall display requirement body for requirement selected by Content navigator pane
.
The Content pane shall display selected requirement and all its child requirements hierarchy with headers.
TBD inner requirements links
[web.page.comment] Comments pane¶ ↑
The Content pane of web application shall display new comment form
and history of comments.
[web.page.comment.create] New comment form¶ ↑
The New comment form shall provide form with: * text of comment; * button submit
.
When button submit
pressed, the app shall save comment in persistent store. The app shall save tag, user, creation time and comment body.
When button submit
pressed, if comment stored successfully, the app shall add saved comment to comment history pane
as first comment. See more in next section.
[web.page.comment.history] Comments history¶ ↑
The History pane shall display history list of comments. The list shall be sorted as new items in top (новые сверху).
The History list shall display comments history only for selected requirement through Content navigator pane
.
Each list item shall display the next information: * user (created_by), * time (created_at in 1 hours ago
manner), * comment body * and delete
button.
When comment was created by another author (is not a current session user), the button delete
shall be locked.
[web.page.comment.history.onlymine] All/Only mine¶ ↑
The History pane shall provide checkbox Show All/Only mine
.
By default checkbox shall have state Show All
When checkbox Show All/Only mine
in state Show All
, the app shall display all comment.
When checkbox Show All/Only mine
in state Only mine
, the app shall display comment created by current user only.
[web.page.comment.history.alltags] All/Only tag¶ ↑
The History pane shall provide checkbox Show All/Only tag
. By default checkbox shall have state Show Only tag
.
When checkbox Show All/Only tag
in state Only tag
, the app shall display comments related to current tag (was specified at application start)
When checkbox Show All/Only tag
in state Show All
, the app shall display comments related to all tags.
Design constraints¶ ↑
Dependencies¶ ↑
The System depends on corm
ruby gem and uses Requirement Repository
from it.
gem packing¶ ↑
The System shall be packed in Ruby gem.