), State('ABORTED', """ A non-recoverable MARVELS controller error occured during remote operations. A reset will attempt to re-establish communications. """, On('reset').goto('CONNECTING') ), State('FAULT', """ A MARVELS controller error occured that may be recoverable by using the controller directly. If a recover is successful, remote operations will resume where they left off. """, On('(recover successful)').goto('recall(REMOTE)'), On('(recover failed)').goto('ABORTED') ), State('PARKING', """ MARVELS is being reset to a well-defined state, perhaps in an attempt to recover from an error condition. """, On('parked').goto('AVAILABLE') ) ) if __name__ == '__main__': import path states.exportGraph(path.filepath('marvels_states.dot')) states.exportHTML(path.filepath('marvels_states.html'), title='MARVELS Proxy States',diagram='marvels.png')
On('share').goto('MULTI_USER'), On('start tracking').goto('TRACKING') ), State('TRACKING -> GUIDE_OFF', """ The telescope is tracking and can be focused and guided. """, State('GUIDE_OFF', """ Tracking without active guiding. """, On('start guiding').goto('GUIDE_ON') ), State('GUIDE_ON', """ Tracking with active guiding. """, On('stop guiding').goto('GUIDE_OFF'), On('reset tracking').goto('GUIDE_OFF') ), On('stop tracking').goto('IDLE') ) ) ) ) ) if __name__ == '__main__': import path states.exportGraph(path.filepath('tcc_states.dot')) states.exportHTML(path.filepath('tcc_states.html'),title='TCC Proxy States',diagram='tcc.png')
Do('Start a User Session'), ''' [Scientist] launches playback application. [Scientist] selects observing period and [devices] of interest. [Application] retrieves a list of [log stream] and [config data] from the [database]. [Application] displays list to [scientist]. [Scientist] selects information to review. [Application] displays selected information. [Device] data is displayed as a time series on a strip chart. [Scientist] filters log messages based on severity and [device]. [Scientist] exits application. ''', Alternate('Session is not Authorized to Run Application'), Alternate('Requested Device is not Available'), Alternate('Application Crashes') ), Scenario('Tracking Time Usage in Different Activities', ''' What activities need to be tracked? What time resolution is required? How should results be presented? This is a good example of a background [application] without any [user] [roles]. ''' ), Scenario('Malicious User Attempts to Control Telescope'), Scenario('Application Crashes'), Scenario('Power Outage'), Scenario('Network Failure') ) if __name__ == '__main__': import path from tops.sdss3.design.model import model cases.exportHTML(path.filepath('general-cases.html'),model=model, title='General Operations Use Cases',stylesheet='cases.css')
''' [Application] reads acceptable environmental ranges [config data]. [Application] monitors environmentals via MARVELS [proxy] and records values to a [log stream]. [Application] informs [user] of progress towards equilibrium. ''' ), Scenario('Instrument Room Climate Control Failure'), Scenario('Hard Disk Failure', ''' [Application] detects that control computer is not responding or operating normally via its [proxy]. [Operator] may need to replace drive with an on-site spare and restore program and data files from a backup. If failed disk is redundant, [application] informs [system manager] that daytime service is needed and tries to continue. ''' ), Scenario('Minor Earthquake During Exposure', ''' How will operations software know about this? Is there any onsite seismic monitoring? Any current exposure should be marked as suspect and followed by calibrations and QA checks. ''' ), Scenario('Failure of Component within Enclosure'), Scenario('Failure of Instrument Environmental Controls'), Scenario('Failure of Module in Instrument Control Rack') ) if __name__ == '__main__': import path from tops.sdss3.design.model import model cases.exportHTML(path.filepath('marvels_cases.html'),model=model, title='MARVELS Operations Use Cases',stylesheet='cases.css')
""" The Multiobject APO Radial Velocity Exoplanet Large-Area Survey [instrument] and its associated control computer. """, isA('Instrument') ), Actor('Instrument', """ A piece of equipment that records the light from fibers installed at the focal plane (an 'exposure'). Instruments generally need calibrating before and after science exposures and their exposures can be checked for data quality. """, isA('Device') ), Actor('Telescope', """ The optics, mechanics and control and monitoring system of the APO 2.5m telescope. The operations software interfaces to the telescope via the [TCC]. """, isA('Device') ) ) if __name__ == '__main__': import path model.exportGraph(path.filepath('sdss3model.dot')) model.exportGlossary(path.filepath('glossary.html'), title='SDSS3 Operations Software Glossary', stylesheet='glossary.css')