// January 19, 2014 //---------------------------------------------------------------------------------------- // Architecture model for MP/C++ prototype trace generator // from // Mikhail Auguston, Example 9 in Monterey Phoenix System and Software Architecture // Modeling Language (Draft): Examples of architecture models // Naval Postgraduate School, Monterey, CA, USA // http://faculty.nps.edu/maugusto/ // for Eagle6: Runs up to the scope 2. //---------------------------------------------------------------------------------------- //SCHEMA MP_CPP_architecture ROOT User: set_up_scope set_up_strategy [error_messages] (* result [ visualize_trace ] *) ; ROOT Parsing: set_up_scope set_up_strategy {ast_building [error_messages] }; ast_building: {write syntax_analysis}; syntax_analysis: { process_roots process_composites process_constraints process_queries }; User, Parsing SHARE ALL set_up_scope, set_up_strategy, error_messages; ROOT AST: write read; Parsing, AST SHARE ALL write; ROOT Preprocessing: { read transformations}; transformations: eliminating_iterators trace_estimation create_updated_AST; create_updated_AST: write_updated_AST; Preprocessing, AST SHARE ALL read; ROOT Updated_AST: write_updated_AST read_updated_AST; Preprocessing, Updated_AST SHARE ALL write_updated_AST; ROOT CPP_generation: read_updated_AST code_generation; code_generation: generate_root_predicates generate_event_signatures generate_main_subroutine cpp_code; CPP_generation, Updated_AST SHARE ALL read_updated_AST; ROOT CPP_compiler: include_permanent_part cpp_code executable; ROOT mp_dot_h: include_permanent_part; CPP_generation, CPP_compiler SHARE ALL cpp_code; mp_dot_h, CPP_compiler SHARE ALL include_permanent_part; ROOT Trace_search: executable generate_traces; generate_traces: create_signatures sort_segment_lists (* assemble_a_trace check_global_constraints ( ( pass_global_check [ perform_queries ] ) | fail_global_check ) *); assemble_a_trace: expand_composite_segments match_root_segments; perform_queries: ( ( execute_query show_result ) | ( check_assertion [assertion_fails report_assertion_violation ] ) ) [ visualize_trace ]; show_result: result; report_assertion_violation: result; Trace_search, CPP_compiler SHARE ALL executable; Trace_search, User SHARE ALL result, visualize_trace;