@rse/specbook 1.5.0 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -751,26 +751,54 @@
751
751
  file: 07-REQS-NR-Non-Functional-Requirements.md
752
752
  desc: >
753
753
  The quality attributes and constraints the solution must satisfy, such as performance,
754
- security, scalability, reliability, and usability.
754
+ security, scalability, reliability, and usability. The requirements are optionally grouped
755
+ into the project-specific quality goals they refine (the upper levels of a quality attribute
756
+ utility tree), which the overview diagram draws as boxes around their requirements.
755
757
  optional: true
756
758
  refs: >
757
759
  - ISO/IEC 25010:2023: Systems and software engineering -- Systems and software Quality Requirements and Evaluation (SQuaRE) -- Product quality model (2023),
758
760
  https://www.iso.org/standard/78176.html
759
761
  - ISO/IEC/IEEE 29148:2018: Systems and software engineering -- Life cycle processes -- Requirements engineering (2018),
760
762
  https://www.iso.org/standard/72089.html
763
+ - Bass/Clements/Kazman: Software Architecture in Practice, 4th ed.: Quality Attribute Utility Tree (2021),
764
+ https://www.informit.com/store/software-architecture-in-practice-9780136886099
761
765
  - DSDM: MoSCoW Prioritisation, DSDM Agile Project Framework (2014),
762
766
  https://www.agilebusiness.org/dsdm-project-framework/moscow-prioritisation.html
763
767
  - Doran: There's a S.M.A.R.T. Way to Write Management's Goals and Objectives, Management Review 70(11) (1981)
764
768
  diagram:
765
769
  type: grid
766
770
  nodes: "[[NR.REQUIREMENT:*]]"
771
+ nest:
772
+ properties:
773
+ - GROUP
767
774
  properties:
768
775
  - PRIORITY
769
776
  - CATEGORY
770
777
  config:
771
778
  size-node-width-max: 440
772
- grid-columns-max: 4
779
+ grid-columns-max: 2
773
780
  children:
781
+ - kind: GROUP
782
+ desc: >
783
+ A named group of requirements jointly refining one project-specific quality goal,
784
+ carrying a short (1-3 word), per-artifact unique name distinct from the names of its
785
+ requirements (e.g. `Observability` for the completeness, causality, integrity, and
786
+ availability of the recorded traces, `Data Protection` for the lawful, minimal, and
787
+ guarded processing of personal data), and described by a 1-sentence description
788
+ ("what") of the quality goal the requirements add up to plus a 1-sentence rationale
789
+ ("why") of the cohesion. A group is a quality goal in the sense of a quality
790
+ attribute utility tree: unlike the fixed `CATEGORY` of a requirement, which
791
+ classifies it for comparability, it names the quality the project itself strives
792
+ for and may span requirements of several categories. It is distinct from a
793
+ Functional Requirements group, which bundles the functions and mechanisms
794
+ realizing such a quality. A group carries no obligation of its own: it has no
795
+ priority, no metric, and is verified through its requirements alone, so it
796
+ affects the overview diagram only, where its requirements are drawn next to each
797
+ other inside a box. The groups are listed before the requirements, and every
798
+ requirement belongs to at most one group.
799
+ optional: true
800
+ referenced:
801
+ - "[[NR.REQUIREMENT:*]]"
774
802
  - kind: REQUIREMENT
775
803
  desc: >
776
804
  A single non-functional requirement, named with a short (3-8 word) summary and
@@ -797,8 +825,8 @@
797
825
  diagram:
798
826
  type: hub
799
827
  center: self
800
- nodes: "[[NR.REQUIREMENT:*]], [[FR.REQUIREMENT:*]], [[PREMISE:*]], [[RULE:*]],
801
- [[TACTIC:*]], [[DECISION:*]], [[CONCERN:*]], [[TEST-CASE:*]]"
828
+ nodes: "[[NR.GROUP:*]], [[NR.REQUIREMENT:*]], [[FR.REQUIREMENT:*]], [[PREMISE:*]],
829
+ [[RULE:*]], [[TACTIC:*]], [[DECISION:*]], [[CONCERN:*]], [[TEST-CASE:*]]"
802
830
  labeled: true
803
831
  qualified: true
804
832
  config:
@@ -826,6 +854,14 @@
826
854
  e.g. a hosting, budget, or technology mandate, as opposed to a constraint
827
855
  on the domain, which is a Domain Rule).
828
856
  value: enum(Performance,Compatibility,Usability,Reliability,Security,Safety,Maintainability,Flexibility,Compliance,Constraint)
857
+ - name: GROUP
858
+ desc: >
859
+ Reference to the NON-FUNCTIONAL-REQUIREMENTS group (the quality goal) the
860
+ requirement belongs to, placing it next to the other requirements of the
861
+ group in the overview diagram, independent of its `CATEGORY`; omitted for a
862
+ requirement standing on its own.
863
+ value: "[[NR.GROUP:*]]"
864
+ optional: true
829
865
  - name: QUALIFIES
830
866
  desc: >
831
867
  Comma-separated references to the FUNCTIONAL-REQUIREMENTS objects whose
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rse/specbook",
3
- "version": "1.5.0",
3
+ "version": "1.5.2",
4
4
  "publishConfig": { "access": "public" },
5
5
  "description": "Markdown-based Specification Format (API, CLI and MCP service)",
6
6
  "license": "Apache-2.0",
@@ -26,12 +26,12 @@
26
26
  "sharp": "0.35.5",
27
27
  "svgo": "4.1.0",
28
28
  "@rse/mrcs": "0.9.2",
29
- "@rse/gradia": "1.4.2",
29
+ "@rse/gradia": "1.4.3",
30
30
  "beautiful-mermaid": "1.1.3",
31
31
  "@d2lang/d2": "0.1.34",
32
32
  "shiki": "4.5.0",
33
33
  "pdfjs-dist": "6.4.299",
34
- "@napi-rs/canvas": "1.0.10",
34
+ "@napi-rs/canvas": "1.0.11",
35
35
  "@toon-format/toon": "4.4.0",
36
36
  "valibot": "1.5.0",
37
37
  "nunjucks": "3.2.4",