• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    小型面向對象語言程序測試用例自動生成技術

    發布: 2009-10-21 10:52 | 作者: 網絡轉載 | 來源: 網絡轉載 | 查看: 323次 | 進入軟件測試論壇討論

    領測軟件測試網

    1.3.3 程序理解

    規模龐大的軟件系統是難于理解和維護的.目前已經有了許多不同的方法和自動化工具,它們或者在體系結構層,或者在代碼層,建立存在系統的概念模型,幫助人們對系統進行理解和維護.信息流分析技術可以給用戶提供分析程序的有關信息,從而有助于用戶對程序的理解.

    1.3.4 程序分片

    程序分片工具是基于代碼分析的,它允許將程序分解成片,用戶能夠從中提取信息并且使維護中改變代碼所帶來的影響變得更加直觀.利用信息流分析進行分片是程序分片技術的一個重要分支,值得一提的是最早的分片算法就是WEISER的以控制流圖作為中間表示的基于數據流關系的分片算法.

    1.4 模型語言

    我們的分析對象是一種小型的面向對象程序設計語言SOOL,它是從C++簡化和修改得來.我們保留程序的主干,即保留順序,分支,循環語句以及簡單的面向對象機制,即類,繼承,發消息.考慮到實現的方便,SOOL只保留了基本數據類型和基本算術運算.

    下面我們給出SOOL語言的語法描述:

    program:

    (include_statement)* (class_sect)* main_program;

    include_statement:

    '#' INCLUDE head_file;

    head_file:

    '';

    //MAIN

    main_program:

    return_value_type MAIN '(' ')' statement_sect;

    return_value_type:

    basic_data_type|VOID;

    basic_data_type:

    INT|BOOL;

    statement_sect:

    '{' (declare_sect) stm_sect '}';

    declare_sect:

    type varible ';' ( type varible ';')*;

    type:

    basic_data_type|class_type;

    class_type:

    class_name;

    class_name:

    IDENTIFIER;

    varible:

    IDENTIFIER|IDENTIFIER '[' NUMBER ']';

    stm_sect:

    statement|statement stm_sect;

    statement:

    assignment_statement

    |if_statement

    |while_statement

    |io_statement

    |class_function_call_statement

    |skip_statement;

    //CLASS

    class_sect:

    CLASS class_name ( ':' PUBLIC class_name)

    '{' (access_control_operator ':' construct_function class_declare_sequence (class_declare_sequence)* )* '}';

    construct_function:

    class_name '(' ')';

    access_control_operator:

    PUBLIC|PROTECTED|PRIVATE;

    class_declare_sequence:

    varible_declare|function_declare;

    varible_declare:

    basic_data_type varible;

    function_declare:

    return_value_type function_name '(' parameter_table ')'

    '{' basic_statement_sect (RETURN varible ';') '}' ;

    basic_statement_sect:

    '{' (basic_declare_sect) basic_stm_sect '}';

    basic_declare_sect:

    basic_data_type varible ';' ( basic_data_type varible ';')*;

    basic_stm_sect:

    '{' basic_statement '}'|'{' basic_statement basic_stm_sect '}';

    basic_statement:

    assignment_statement

    |if_statement

    |while_statement

    |io_statement

    |skip_statement

    |new_statement

    |delete_statement;

    function_name:

    IDENTIFIER;

    parameter_table:

    varible;

    //EXPRESSION

    sign:

    '+'|'-';

    expression:

    simple_expression |relationship_expression|bool_expression

    |IDENTIFIER;

    relationship_expression:

    expression relationship_operator expression;

    relationship_operator:

    EQUAL|NOT_EQUAL|''

    |LESS_EQUAL|GREAT_EQUAL;

    bool_expression:

    (expression) bool_operator expression;

    bool_operator:

    AND|OR|NOT;

    simple_expression:

    (sign) item (add_minus_operator item)*;

    add_minus_operator:

    '+'|'-';

    item:

    factor (plus_div_operator factor)*;

    plus_div_operator:

    '*'|'/';

    factor:

    varible|NUMBER|'(' expression ')' | class_function_call;

    class_function_call:

    class_name '.' function_denominate ;

    function_denominate:

    function_name '(' (real_parameter_table) ')';

    real_parameter_table:

    real_parameter (',' real_parameter)*;

    real_parameter:

    NUMBER|TRUE|FALSE|varible;

    //STATEMENT

    assignment_statement:

    varible '=' expression ';' ;

    skip_statement:

    ';';

    if_statement:

    IF '(' expression ')' basic_stm_sect ELSE basic_stm_sect;

    while_statement:

    WHILE '(' expression ')' basic_stm_sect;

    io_statement:

    CIN '(' IDENTIFIER ( ',' IDENTIFIER )* ')'';'

    |COUT '(' IDENTIFIER ( ',' IDENTIFIER)* ')' ';';

    class_function_call_statement:

    class_name '.' function_denominate ';';

    new_statement:

    NEW class_name ';';

    delete_statement:

    DELETE class_name ';';

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>