Assignment 2 Joanne Lim Zi Xuan #9
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The addressed component/module/part of the system (1 mark)
The system's Dependency module, focusing on the refactoring of the gen_requirements_all.py script
The graph you created and its completeness (3 marks)

The impact or insights gained from the analysis (1 mark)
a. S1: Determine execution mode act as a Master Controller. Since S1 has control dependencies over almost every processing node (S2–S7) and the final execution node (S8), any change to how the script parses arguments or determines its mode directly impacts whether files are validated or written to disk.
S2: Collect module requirements serves as the primary data source. S2 is a critical data producer. Any logic changes in how modules are scanned or filtered will automatically impact the formatting of global requirements (S4) and test-specific requirements (S5), which depend on this data.
S7: Aggregate File Mapping is the Convergence Point because this node acts as a central data sink, collecting information from S3, S4, S5, and S6. Adding support for a new requirement file requires modifying this aggregation point to ensure the data reaches the final execution phase (S8).
S8: Sync or Validate Files is the I/O Gatekeeper as S8 has a dual dependency, a control dependency from S1 (telling it what to do) and a data dependency from S7 (giving it the content to process). Failure at this node results in either outdated requirement files on disk or failed CI validation.
b. The script effectively isolates data collection (S2, S3, S6) from data formatting (S4, S5). This modularity allows developers to change how requirements are extracted without necessarily changing how the .txt files are styled. S7 is identified as the primary data bottleneck. Because all file contents flow through this single mapping before reaching S8, it is the most critical point for ensuring data integrity before file I/O occurs. The control dependency from S1 to S8 ensures that the script never writes to files (sync) unless explicitly instructed, providing a safeguard when running in validation mode during CI processes. The recursive nature of S6 (gather_recursive_requirements) introduces a hidden layer of complexity. While it appears as a single node, it pulls from multiple external integration manifests, meaning the stability of the final constraints file is dependent on the correctness of every individual component manifest.