SCHEMA Feasibility_Tests_Classification_Simple; USE FROM express_toolsbox_functions; TYPE Accuracy_enum = ENUMERATION OF ( Necessary, Sufficient, NecessaryAndSufficient ); END_TYPE; TYPE Computational_complexity_enum = ENUMERATION OF ( Linear, Polynomial, NP_Hard ); END_TYPE; TYPE Perf_criterion_enum = ENUMERATION OF ( Processor_Utilization_Factor, Worst_Case_Response_Time, Hyper_period_Simulation ); END_TYPE; ENTITY Property; Restricted_Entity : STRING; END_ENTITY; ENTITY Applicability_Constraint; Restricts : OPTIONAL Property; Implies : OPTIONAL SET OF Applicability_constraint; DERIVE all_implied_constraints : LIST OF Applicability_Constraint := get_all_predecessors ( SELF ); INVERSE all_implying_constraints : LIST OF Applicability_Constraint FOR Implies; END_ENTITY; ENTITY Feasibility_Test; Analysis_method : STRING; Performance_criterion : perf_criterion_enum; Accuracy : Accuracy_enum; Computational_Complexity : Computational_Complexity_enum; Requires : SET OF Applicability_Constraint; END_ENTITY; FUNCTION get_all_predecessors ( n : Applicability_Constraint ) : LIST OF Applicability_Constraint; LOCAL r : LIST OF Applicability_Constraint := [ ]; END_LOCAL; IF ( EXISTS ( n.implies ) ) THEN REPEAT no := LOINDEX ( n.Implies ) TO HIINDEX ( n.Implies ); ALIAS curr FOR n.implies [ no]; r := r + curr + SetToList ( curr.all_implied_constraints ); END_ALIAS; END_REPEAT; END_IF; RETURN ( r ); END_FUNCTION; END_SCHEMA; SCHEMA Feasibility_Tests_Classification_Cheddar; USE FROM Feasibility_Tests_Classification_Simple; ENTITY Property_Cheddar SUBTYPE OF ( Property ); name : STRING; Literal_description : STRING; END_ENTITY; ENTITY Applicability_Constraint_Cheddar SUBTYPE OF ( Applicability_Constraint ); name : STRING; Literal_description : STRING; END_ENTITY; ENTITY Feasibility_Test_Cheddar SUBTYPE OF ( Feasibility_Test ); name : STRING; bibliographic_reference : STRING; END_ENTITY; END_SCHEMA; SCHEMA Feasibility_Tests_Classification_Basic_Views; USE FROM Feasibility_Tests_Classification_Simple; USE FROM express_toolsbox_functions; TYPE Parameter_Type = ENUMERATION OF ( Performance_Criterion, Accuracy, Computational_Complexity ); END_TYPE; ENTITY Feasibility_Tests_List; Feasibility_tests : SET OF Feasibility_test; END_ENTITY; ENTITY Feasibility_Tests_List_Auto; DERIVE Feasibility_tests : SET OF Feasibility_test := All_Feasibility_tests; END_ENTITY; ENTITY Applicability_Constraints_List; Applicability_Constraints : SET OF Applicability_Constraint; END_ENTITY; ENTITY Applicability_Constraints_List_Auto; DERIVE Applicability_Constraints : SET OF Applicability_Constraint := All_Applicability_Constraints; END_ENTITY; ENTITY Properties_List; Properties : SET OF Property; END_ENTITY; ENTITY Properties_List_Auto; DERIVE Properties : SET OF Property := All_Properties; END_ENTITY; ENTITY From_Applicability_Constraint_To_Feasibility_Tests_View ABSTRACT SUPERTYPE; Parameter : SET OF Applicability_Constraint; DERIVE Result : SET OF Feasibility_Test := ?; END_ENTITY; ENTITY Specific_Applicability_Constraint_To_Feasibility_Tests_View SUBTYPE OF ( From_Applicability_Constraint_To_Feasibility_Tests_View ); DERIVE SELF\From_Applicability_Constraint_To_Feasibility_Tests_View.Result : SET OF Feasibility_Test := ?; END_ENTITY; ENTITY From_Feasibility_Test_To_Feasibility_Tests_View; Parameter : Feasibility_Test; Result : SET OF Feasibility_Test; END_ENTITY; ENTITY From_Performance_Criterion_To_Feasibility_Tests_View; Parameter : perf_criterion_enum; Result : SET OF Feasibility_Test; END_ENTITY; ENTITY From_Accuracy_To_Feasibility_Tests_View; Parameter : Accuracy_enum; Result : SET OF Feasibility_Test; END_ENTITY; ENTITY From_Computational_Complexity_To_Feasibility_Tests_View; Parameter : Computational_complexity_enum; Result : SET OF Feasibility_Test; END_ENTITY; FUNCTION All_Feasibility_Tests : SET OF Feasibility_Test; LOCAL insts : SET OF GENERIC := allModelInstances; END_LOCAL; RETURN ( QUERY ( i <* insts | 'FEASIBILITY_TESTS_CLASSIFICATION_SIMPLE.FEASIBILITY_TEST' IN TYPEOF ( i ) ) ); END_FUNCTION; FUNCTION All_Properties : SET OF Property; LOCAL insts : SET OF GENERIC := allModelInstances; END_LOCAL; RETURN ( QUERY ( i <* insts | 'FEASIBILITY_TESTS_CLASSIFICATION_SIMPLE.PROPERTY' IN TYPEOF ( i ) ) ); END_FUNCTION; FUNCTION All_Applicability_Constraints : SET OF Applicability_Constraint; LOCAL insts : SET OF GENERIC := allModelInstances; END_LOCAL; RETURN ( QUERY ( i <* insts | 'FEASIBILITY_TESTS_CLASSIFICATION_SIMPLE.APPLICABILITY_CONSTRAINT' IN TYPEOF ( i ) ) ); END_FUNCTION; END_SCHEMA;HEMA;