EO-1 reference model · worked example
A formal verification cycle on the EO-1 model
One requirement change on the EO-1 CubeSat, followed through a formal program from the change request to the baseline: a failed re-test, an issue, a nonconformance and its waiver, the hazards and failure modes the requirement controls, the corrective action, the re-test, sign-off, the customer compliance matrix, a design review and the exports. Each step below is done on the pages a program team uses, and the limits met on the way are listed at the end.
On this page
- Starting point
- 1. Change request
- 2. The re-test fails
- 3. Nonconformance and waiver
- 4. Hazards: reopened and re-evaluated
- 5. FMECA
- 6. Corrective action and re-test
- 7. Sign-off: RVTM and VCRM
- 8. Customer compliance matrix
- 9. Design review: RIDs and gate record
- 10. Baseline and exports
- Edge cases on the way
- Limits met
- Try it
Starting point
The cycle starts from the EO-1 reference model as Holarch builds it with New Demo Project → CubeSat. In that project the Formal program and Safety & Reliability switches (Project Preferences → Program features) are on, so the Deviations & Waivers, Compliance Matrix, Hazard Log and FMECA pages and the RVTM's closure columns are shown.
The subject is requirement 3.3 Depth of Discharge: The EPS shall limit battery depth of discharge to 30% per orbit. It is Approved, verified by test TC-07 Battery Capacity Test (Passed), and it is a control of two hazards: HAZ-001 Battery thermal runaway and HAZ-004 Battery breakup after end of mission.
1. Change request
Cell lot data shows faster capacity fade than the vendor curve above 25% depth of discharge (failure mode FM-002 Cell capacity fade). The systems lead opens Change Requests → New Change Request, gives the reason, and adds the edit with Add Change ▾ → Change an Item…: the statement becomes 25% per orbit. Nothing in the model changes yet.
After Submit for Review the board approves the request with a note, and Apply Changes writes the new text as one undo step. The requirement's history records the edit as made via CR-1.
Two things follow from the edit itself. Requirement 3.3 goes back from Approved to In Review, because its text changed after approval. And its links to what depends on it become suspect links, including the link to TC-07: the test passed against 30%, not 25%.
2. The re-test fails
In the Test Center, TC-07 is run again with ↻ Re-run on its row: tester, configuration (EPS firmware 1.4.0, battery pack QM-1), verification stage Qualification and the event name are recorded with the result. The depth of discharge logic trips at 29%, not 25%: the firmware threshold table was not updated. The result is recorded as Failed, and the RVTM shows 3.3 Failed at once.
From the failed run, + Create Issue raises ISS-4, linked to the test case and the requirements it verifies.
3. Nonconformance and waiver
The failed row in the Test Center offers Disposition… next to the issue. TC-07 verifies two requirements, 3.2 Battery Capacity (met: 78.1 Wh) and 3.3; only 3.3 is affected, so 3.2 is unticked. The disposition is Use As Is: battery pack QM-1 stays in the thermal-vacuum campaign with the old threshold, and the flight units get corrected firmware. Use As Is leaves a departure from the requirement, so the same dialog submits a waiver with its expiry date, its effectivity (battery pack QM-1, thermal-vacuum campaign only) and its justification.
On Verification → Deviations & Waivers, W-1 is approved; the row records who approved it and when. Edit… on the row refines the effectivity with the unit's serial number. While W-1 is approved and unexpired, the RVTM counts 3.3 as Waived, not as verified: its status stays Failed.
4. Hazards: reopened and re-evaluated
The Hazard Log flags both hazards that 3.3 controls: 1 control failed. HAZ-001 Battery thermal runaway was at Controls Verified; the safety engineer sets it back to Open and raises its residual likelihood from Improbable to Remote while the control is not met, which moves its residual risk from Medium to Serious on the hazard matrix.
HAZ-004 Battery breakup after end of mission was accepted by the program manager before the change. Its acceptance was given against the old 30% limit, so the Hazard Log flags it: Accepted before 3.3 Depth of Discharge changed: accept again, also shown on the hazard itself and as model check Risk.2. It is reviewed after the re-test and renewed by the acceptance authority, which clears the flag.
5. FMECA
On the FMECA worksheet, FM-002 Cell capacity fade gets 3.3 as a control, occurrence 4 instead of 6 with the lower depth of discharge, status Action Planned and the recommended action. Its RPN drops from 90 to 60.
6. Corrective action and re-test
On Risks, Issues & Decisions → Issues & Actions, a new action, AI-2, resolves ISS-4: update the EPS threshold table to 25% and re-run TC-07, assigned to the power engineer with a due date.
The firmware 1.4.0 log first attached to TC-07 as evidence turns out not to show the run under review, so it is removed from the test case's Evidence list. TC-07 then runs again on firmware 1.4.1 and passes (trip at 25.2%), with the new log and the capacity data as evidence files. The test's run log keeps both runs, the failed one and the passed one. The suspect link between 3.3 and TC-07 is reviewed and cleared: the new run covers the new text.
ISS-4 cannot be closed while AI-2 is open. Once AI-2 is closed, ISS-4 and NC-1 are closed with their resolutions.
7. Sign-off: RVTM and VCRM
On the RVTM, 3.3 is now Passed and its Closure column offers Sign Off…. It is signed off with notes naming the run and the evidence files; the row records who signed off and when. Requirement 4.3 Fault Detection, failed but covered by the approved deviation DEV-1, is signed off too; it stays Failed and is counted as Waived, separately from the verified requirements.
The VCRM view of the same page lists each requirement's verification method, level, stage and event, the form many contracts ask for.
8. Customer compliance matrix
The customer's statement of work has two requirements the change touches: SOW-4.2 Battery cycle life and SOW-4.7 Safe mode. On Needs & Requirements → Compliance Matrix, with the statement of work chosen as the customer specification, SOW-4.2 is Compliant through 3.3 (Passed), and SOW-4.7 is Partially Compliant with a response that names DEV-1 and its expiry.
9. Design review: RIDs and gate record
The CDR review package holds the System Requirements Specification. On Reviews → Comments (RIDs), the board's comments are dispositioned: RID-1 (no cold-case analysis for the battery heater, from the demo) is Accepted and opens action AI-3; the new RID-2 on 3.3 asks for the depth of discharge margin at end of life and is Accepted with Changes. A RID closes only once it has a disposition and its actions are closed.
On Gate Records, the review is recorded with its chair, attendees, package, outcome Passed and notes, then closed with Close Review. Minutes (Word) writes the record as a document.
10. Baseline and exports
A project baseline on Baselines & Versions freezes the state the review accepted. Compare shows what changed after it.
The cycle ends with the exports a program hands on:
| Export | What it carries from the cycle |
|---|---|
| UML/SysML (XMI) | The model as SysML 1.6 for other tools, with the revised 3.3 and, with Holarch attributes on, its verification closure. |
| ReqIF | The requirements with their attributes, including closure and compliance, and their trace relationships. |
| Word (generated document) | The System Requirements Specification with the revised 3.3; also the change request log and the gate minutes. |
| Project file (JSON) | Everything: the change request, the records, the hazards and failure modes, the baselines and the evidence files. |
| Registers (Excel or CSV) | Hazard Log, FMECA, Deviations & Waivers with the nonconformances, Issues & Actions, the RVTM with stage, event and closure, and the Compliance Matrix. |
Edge cases on the way
- Requirement revised after approval. Applying CR-1 sends 3.3 from Approved back to In Review and marks its links suspect, so the test that passed against the old text is reviewed before it counts again.
- Requirement revised after sign-off. A later edit to 3.3's text turns its closure into Closed, requirement changed until the suspect link to TC-07 is reviewed, or the requirement is reopened and signed off again.
- Expired waiver. With DEV-1's expiry date in the past, Deviations & Waivers marks it Expired, 4.3 is no longer counted as waived, and its closure shows Closed, now Failed.
- Invalid verification evidence. Evidence that does not show the run under review is removed from the test case; the run log still records each run with its result, tester and configuration.
- Reopened hazard. A failed control flags the hazard; it is set back to Open and its residual risk re-rated until the control passes again.
- Changed risk acceptance. An acceptance given before a change to the hazard's controls is flagged until it is renewed. Who accepted and when are attributes of the hazard, so its history keeps the earlier acceptance.
Limits met
These are the places where the cycle needed a manual step or where Holarch does not yet do what a formal program might expect:
- Approval of the new text. An approved and applied change request does not approve the requirement's new text: 3.3 goes back to In Review and is approved again on its own.
- Evidence validity. An evidence file has no valid or invalid state. Invalid evidence is removed, and the reason belongs in the sign-off notes.
- Gate criteria. A gate record captures entry criteria only for a gate of an SE Process guide; EO-1 has none switched on, so its record has no criteria snapshot.
- Exchange formats. XMI and ReqIF carry the requirements and their attributes, not the formal records: hazards, failure modes, waivers, nonconformances and issues travel in the project file and the register exports.
Try it
Create the demo with New Demo Project → CubeSat, or import the EO-1 project file, and follow the steps above. The Formal Program and Verification docs describe each page.