Last active
December 16, 2020 15:13
-
-
Save bhpayne/bf4c89fe54ccfe962bf88468314bf0e2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# thanks to https://dreampuf.github.io/GraphvizOnline | |
digraph G { | |
label="how to browse the internet" | |
labelloc = "t"; // place the label at the top (b seems to be default) | |
#concentrate=true; # edge overlap # https://stackoverflow.com/a/4671508/1164295 | |
#overlap=false; # no effect | |
compound=true; # as per https://stackoverflow.com/a/2012106/1164295 | |
# ovals are intended to be tangible activites; | |
# everything else (rectangles) are abstractions | |
# assume single tab for browser | |
# assume standard desktop workstation (keyboard, monitor, mouse, tower) | |
"Invisible" [height=0, width=0, margin=0, style=invis]; | |
subgraph cluster_phase_power_up { | |
label = "phase: power up"; | |
href = "phase_power_up.html" | |
during_power_up_push_power_button [label="user:\npush power button" color="forestgreen"]; | |
during_power_up_wire_current_short_circuit [label="wire current short circuits"]; | |
during_power_up_push_power_button -> during_power_up_wire_current_short_circuit; | |
node [shape="rectangle"]; | |
subgraph cluster_power_to_components { | |
label = "CPU:\n executes instructions at bottom of memory map"; | |
subgraph cluster_BIOS_runs { | |
label = "BIOS sequence"; | |
during_power_up_power_to_components_bios_ram_dectection [label="BIOS:\n RAM detection"]; | |
during_power_up_power_to_components_bios_hw_detect_init [label="BIOS:\n HW detect/init"]; | |
subgraph cluster_during_power_up_power_to_components_bios_boot_sequence { | |
label="BIOS:\n boot sequence"; | |
during_power_up_power_to_components_bios_boot_sequence_os_specific_bootloader [label="BIOS:\nboots some devices directly \ninto your OS-specific bootloader"]; | |
during_power_up_power_to_components_bios_boot_sequence_harddisk_mbr [label="BIOS:\nboots other devices (any hard disk, \nor anything emulating a hard disk) into an MBR"]; | |
during_power_up_power_to_components_bios_boot_sequence_harddisk_mbr -> during_power_up_power_to_components_bios_boot_sequence_os_specific_bootloader; | |
} | |
during_power_up_power_to_components_bios_ram_dectection -> during_power_up_power_to_components_bios_hw_detect_init; | |
during_power_up_power_to_components_bios_hw_detect_init -> during_power_up_power_to_components_bios_boot_sequence_harddisk_mbr [lhead="cluster_during_power_up_power_to_components_bios_boot_sequence"]; | |
} # cluster_BIOS_runs | |
} # cluster_power_to_components | |
color=blue; | |
} # cluster_phase_power_up | |
subgraph cluster_phase_system_idle { | |
label = "phase: system idle"; | |
href = "phase_system_idle.html"; | |
during_system_idle_os_wait_for_user_input [label="OS:\n waits for user input" shape="rectangle"]; | |
color=blue; | |
} # cluster_phase_system_idle | |
during_power_up_power_to_components_bios_boot_sequence_os_specific_bootloader -> during_system_idle_os_wait_for_user_input; | |
subgraph cluster_phase_browse_web { | |
label = "phase: browse web"; | |
href = "phase_browse_web.html" | |
node [shape="rectangle"]; | |
subgraph cluster_during_browse_web_open_web_browser{ | |
label="user:\nopen web browser"; | |
subgraph cluster_during_browse_web_open_web_browser_move_mouse_to_icon { | |
label="user:\nuse mouse to move pointer\n on desktop to icon for browser"; | |
during_browse_web_open_web_browser_move_mouse_to_icon_mouse_moves [label="mouse:\n moves across surface"]; | |
during_browse_web_open_web_browser_move_mouse_to_icon_light_sensor [label="light sensor:\ndetects movement"]; | |
during_browse_web_open_web_browser_move_mouse_to_icon_mouse_moves -> during_browse_web_open_web_browser_move_mouse_to_icon_light_sensor; | |
during_browse_web_open_web_browser_move_mouse_to_icon_signal_sent [label="mouse PCB:\nsignal sent"]; | |
during_browse_web_open_web_browser_move_mouse_to_icon_light_sensor -> during_browse_web_open_web_browser_move_mouse_to_icon_signal_sent; | |
during_browse_web_open_web_browser_move_mouse_to_icon_signal_crosses_cable [label="mouse wire:\nsignal crosses cable"]; | |
during_browse_web_open_web_browser_move_mouse_to_icon_signal_sent -> during_browse_web_open_web_browser_move_mouse_to_icon_signal_crosses_cable; | |
during_browse_web_open_web_browser_move_mouse_to_icon_signal_interpreted_by_os [label="OS:\ninterprets signal"]; | |
during_browse_web_open_web_browser_move_mouse_to_icon_signal_crosses_cable -> during_browse_web_open_web_browser_move_mouse_to_icon_signal_interpreted_by_os; | |
during_browse_web_open_web_browser_move_mouse_to_icon_signal_os_moves_pointer_on_screen [label="OS:\nmoves pointer on screen"]; | |
during_browse_web_open_web_browser_move_mouse_to_icon_signal_interpreted_by_os -> during_browse_web_open_web_browser_move_mouse_to_icon_signal_os_moves_pointer_on_screen; | |
} | |
subgraph cluster_during_browse_web_open_web_browser_click_on_icon { | |
label="user:\nuse mouse to click icon for browser"; | |
during_browse_web_open_web_browser_click_on_icon_mouse_button_click [label="mouse:\nbutton click"]; | |
during_browse_web_open_web_browser_click_on_icon_signal_sent [label="mouse PCB:\nsignal sent"]; | |
during_browse_web_open_web_browser_click_on_icon_mouse_button_click -> during_browse_web_open_web_browser_click_on_icon_signal_sent; | |
during_browse_web_open_web_browser_click_on_icon_signal_crosses_cable [label="mouse wire:\nsignal crosses cable"]; | |
during_browse_web_open_web_browser_click_on_icon_signal_sent -> during_browse_web_open_web_browser_click_on_icon_signal_crosses_cable; | |
during_browse_web_open_web_browser_click_on_icon_signal_interpreted_by_os [label="OS:\ninterprets signal"]; | |
during_browse_web_open_web_browser_click_on_icon_signal_crosses_cable -> during_browse_web_open_web_browser_click_on_icon_signal_interpreted_by_os; | |
during_browse_web_open_web_browser_click_on_icon_signal_os_moves_pointer_on_screen [label="OS:\nclicks icon on screen"]; | |
during_browse_web_open_web_browser_click_on_icon_signal_interpreted_by_os -> during_browse_web_open_web_browser_click_on_icon_signal_os_moves_pointer_on_screen; | |
} | |
during_browse_web_open_web_browser_move_mouse_to_icon_signal_os_moves_pointer_on_screen -> during_browse_web_open_web_browser_click_on_icon_mouse_button_click [lhead="cluster_during_browse_web_open_web_browser_click_on_icon" ltail="cluster_during_browse_web_open_web_browser_move_mouse_to_icon"]; | |
} | |
during_browse_web_enter_URL_of_desired_site [label="user:\nenter URL of desired website" color="forestgreen"]; | |
subgraph cluster_browse_web_show_webpage { | |
label="browser:\nshow webpage"; | |
subgraph cluster_browse_web_show_webpage_signal_to_monitor{ | |
label="video card:\nsend signal to monitor"; | |
during_browse_web_show_webpage_send_signal_to_monitor_turn_on_pixels [label="turn on pixels"]; | |
} | |
} | |
during_browse_web_read_webpage [label="user:\nread webpage" shape="oval" color="forestgreen"]; | |
during_browse_web_click_on_link [label="user:\nclick on link" color="forestgreen"]; | |
during_browse_web_close_browser [label="user:\nclose browser" color="forestgreen"]; | |
during_browse_web_scroll_webpage [label="user:\nscroll webpage" color="forestgreen"]; | |
during_browse_web_open_web_browser_move_mouse_to_icon_mouse_moves -> during_browse_web_enter_URL_of_desired_site [ltail="cluster_during_browse_web_open_web_browser"]; | |
during_browse_web_enter_URL_of_desired_site -> during_browse_web_show_webpage_send_signal_to_monitor_turn_on_pixels [lhead="cluster_browse_web_show_webpage"]; | |
during_browse_web_show_webpage_send_signal_to_monitor_turn_on_pixels -> during_browse_web_read_webpage [ltail="cluster_browse_web_show_webpage"]; | |
during_browse_web_read_webpage -> during_browse_web_click_on_link; | |
during_browse_web_click_on_link -> during_browse_web_close_browser; | |
during_browse_web_read_webpage -> during_browse_web_scroll_webpage; | |
during_browse_web_open_web_browser_move_mouse_to_icon_mouse_moves -> during_browse_web_close_browser [ltail="cluster_during_browse_web_open_web_browser"]; | |
during_browse_web_enter_URL_of_desired_site -> during_browse_web_close_browser; | |
during_browse_web_show_webpage_send_signal_to_monitor_turn_on_pixels -> during_browse_web_close_browser [ltail=cluster_browse_web_show_webpage]; | |
during_browse_web_read_webpage -> during_browse_web_close_browser; | |
during_browse_web_click_on_link -> during_browse_web_show_webpage_send_signal_to_monitor_turn_on_pixels [lhead=cluster_browse_web_show_webpage]; | |
color=blue; | |
} # cluster_phase_browse_web | |
during_browse_web_close_browser -> during_system_idle_os_wait_for_user_input; | |
subgraph cluster_phase_power_down { | |
label = "phase: power down"; | |
href = "phase_power_down.html" | |
during_power_down_power_button_interrupts_current [label="power button:\ninterrupts current" shape="oval"]; | |
during_power_down_wire_current_short_circuits [label="wire:\n current short circuits" shape="oval"]; | |
during_power_down_motherboard_does_something [label="motherboard:\n does something" shape="rectangle"]; | |
during_power_down_push_power_button -> during_power_down_power_button_interrupts_current; | |
during_power_down_power_button_interrupts_current -> during_power_down_wire_current_short_circuits; | |
subgraph cluster_user_initiates_shutdown { | |
label="user initiated shutdown"; | |
node [shape="rectangle"]; | |
during_power_down_push_power_button [label="user:\npush power button" shape="oval" color="forestgreen"]; | |
during_browse_web_user_initiates_shutdown_user_clicks_on_shutdown_button [label="user:\n clicks on 'shutdown' button" color="forestgreen"]; | |
during_browse_web_user_initiates_shutdown_user_reisub [label="user:\n types REISUB" color="forestgreen"]; | |
} # cluster_user_initiates_shutdown | |
during_power_down_CPU_powers_off [label="CPU:\n powers off" shape="rectangle"]; | |
during_power_off_OS_does_something [label="OS:\n does something" shape="rectangle"]; | |
during_power_down_wire_current_short_circuits -> during_power_down_motherboard_does_something; | |
during_power_down_motherboard_does_something -> during_power_down_CPU_powers_off; | |
during_browse_web_user_initiates_shutdown_user_clicks_on_shutdown_button -> during_power_off_OS_does_something; | |
during_power_off_OS_does_something -> during_power_down_motherboard_does_something; | |
during_browse_web_user_initiates_shutdown_user_reisub -> during_power_down_CPU_powers_off; | |
color=blue; | |
} # cluster_phase_power_down | |
during_system_idle_os_wait_for_user_input -> during_browse_web_user_initiates_shutdown_user_clicks_on_shutdown_button; | |
during_system_idle_os_wait_for_user_input -> during_browse_web_user_initiates_shutdown_user_reisub; | |
during_power_up_wire_current_short_circuit -> during_power_up_power_to_components_bios_ram_dectection; | |
during_system_idle_os_wait_for_user_input -> during_browse_web_open_web_browser_move_mouse_to_icon_mouse_moves [lhead="cluster_during_browse_web_open_web_browser"]; | |
subgraph cluster_phase_power_off { | |
label="phase: power off"; | |
href = "phase_power_off.html" | |
during_power_off_motherboard_battery_powers_switch [label="motherboard:\n battery powers switch"]; | |
color=blue; | |
} # cluster_phase_power_off | |
during_power_down_CPU_powers_off -> during_power_off_motherboard_battery_powers_switch; | |
during_power_off_motherboard_battery_powers_switch -> during_power_up_push_power_button; | |
} # G |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment