Replies: 5 comments 3 replies
-
|
Thanks @danwos I will have a look more in time
I just wanted to comment first, since I saw this presented yesterday: |
Beta Was this translation helpful? Give feedback.
-
|
Hello @danwos, are you still looking for input on this discussion? |
Beta Was this translation helpful? Give feedback.
-
|
I want to add some pieces of information to the discussion as the topic has a broader scope. The current need IDs are arbitrary strings. They are only safeguarded by needs_id_regex which has a default of Let's paint the bigger picture.
For the
As a general requirement, the The new Considering above as a starting point, the following questions come to mind:
Sorry for raising more questions and not providing any answers. From customer perspective it would be useful to get statements around the exact goals and core problems that need to be solved. |
Beta Was this translation helpful? Give feedback.
-
|
Just to add some user feedback, I'll share ur way of doing it. We are also dealing with suspicious links which is a critical feature for us. If it could be integrated in SN, it would be awesome. We don't want to manage versioning at need's level because of the extra maintenance required (however, users used to do it in the former tooling and it requires a mind shift for them, which is not always easy) Instead we internally compute a version based on need's content (a basic sha1 on a , configurable, list of fields). Each time a new version of the document is issued, the current sha1 is compared to the previous one (we have an external reference to the previous version). When changed, a field stores the version in which the need changed. This allow us to detect the list of changed items, since a given version. Then if a need refers to a "suspicious" upward item a warning is raised for the need (displayed as an extra option). This "detection" part works well but I admit it requires some setup, especially to the configuration of a "previous reference" for each document, allowing to detect the changes. This is setup only once because production versions are published on the stable production URL, making the detection automatic as soon as a new version is published. The difficulty for us is more on the "resolution" phase, i.e. how a user mark the suspicious links as reviewed (i.e. either nothing to do, or adapted the child need) to make the warning disappear until the next change. For the moment we produce a "suspicious file", listing all suspicious parents from all upward references. This file is produced locally during the build and user edit it to manually marks element as reviewed. The file is pushed in Git so it can be shared to the team and used for the document lifecycle. Each time an upward reference is changed, the related section in the suspicious file is rewritten. The main pain point is to have user not forgetting to build their document locally and marking element as reviewed. We have some CI linter to fail-fast if not the case. This is far from perfect but it does the trick since multiple years for us and we did not find a better solution. Maybe if it was more integrated in SN it would be easier. Maybe also you could suggest some ideas leading to some improvements on our side. |
Beta Was this translation helpful? Give feedback.
-
|
Will read and reply to comment a bit later, but want to leave a link to the edge properties discussion here. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Versioned links concept
Goal
Find out linked objects of changed Sphinx-Needs objects between two timestamps.
Feature is often called suspicious links in some other tools.
Use case
Some existing requirements have changed between SW release A and B.
The test team needs to know which test cases needs to be rechecked, as the underlying requirement has changed.
Therefore for all changed requirements, their linked objects must be reported.
Requirements
Challenges
Two kind of suspicious links
There are two kind of suspicious links:
1. Parent object got changed with knowledge
In the first scenario, the user knows what he/she is doing. And can already decide if this change is changing something in the context or the statement of the parent object. So rephrasing the content is not a problem. In this scenario not all changed parent object lead to suspicious links.
Technical outlook:
This means, a change must be marked by the user, so that technically the object is flagged as "changed" and therefore checks for suspicious links must be performed.
2. Parent object got changed without knowledge
A change by accident, without knowing that something important had changed.
Important is, that not all changes on all options need to be checked.
For instance, a
statuschange is ok.Technical outlook:
This can be checked by comparing the same object in Version A and B for specified attributes.
Conclusion
Both scenarios need to be treated differently, as
Clearing findings
When a suspicious object is found and corrected, this clearing of this finding must be documented somewhere. Otherwise, a rerun of the script will report it again.
Also the clearing should not be specific to the report, but to delta timestamps of its detection.
Example: Given release A, B, C, all created in a row.
Checking for suspicious links between B and C brings up one finding, which got resolved and cleared.
Checking now for A and C would bring up this link again, even as it got solved and checked for C.
Technical outlook:
To know if wanted changes (see scenario 1) from above) are resolved, this information must be part of the document / Sphinx-Needs object itself.
This allows us to detect suspicious links with the current release (C) only. No matter if we want to have the delta from A or B, it doesn't matter (for scenario 1!) ).
Technical outcome
We separate the solution between wanted and unwanted changes.
Wanted changes -> Versioned links
The user is responsible for marking a Sphinx-Needs object as changed.
The script does no checks on content or options.
Changes are marked as Version in the Sphinx-Needs object itself.
A link contains the version and gets "suspicious" if it doesn't match
As alternative, the object version can be already part of the need-id:
Benefits
Drawback
Unwanted changes
Out of scope for Sphinx-Needs, as this needs to happen outside a Sphinx build because access to data from different git commits/tags is needed.
Beta Was this translation helpful? Give feedback.
All reactions