Translate

пʼятниця, 5 квітня 2013 р.

Наслідування варіантів використання в Blueprint документах.


Відношення наслідування використовуєтся якщо є один чи більше прецедентів які насправді є спеціалізаціями одного загального. Наслідування виносить поведінку спільну для одного чи більше варіантів використання в батьківський. Такий варіант використання є абстрактним і описує поведінку в абстрактних термінах, отже не може бути реалізований програмно, оаписуєтся з атребутом  type="abstract". Дочірні прецеденти конкретизують бітьківський і є конкретними, отже можуть бути реалізовані програмно, описуются з атребутами type="concrete" і extends="...". Для опису конкретизації використовуєтся тег concretization і підтеги term які встановлюють відповідність між абстракним терміном і конкретним значенням.
Приклад включає абстрактний варіант використання New Editor і конкретний New Plain Editor. На діаграмі варіантів використання вони відображаются так:
Документ який описує варіатни використання:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href=".blueprint/model.xslt" ?>
<!DOCTYPE model SYSTEM ".blueprint/model.dtd">
<model name="Window operations">
    <description>Operations with tabs which contains the text components</description>
    <diagrams><diagram name="use case diagram" file="use_case_window.uxf" image="use_case_window.jpg" /></diagrams>
    <use-case name="New editor" type="abstract">
        <description>Create new tab with text editor</description>
        <actors><primary-actors><actor name="user"/></primary-actors></actors>
        <preconditions>"Window" menu is selected</preconditions>
        <narrative>
            <doing>The user selects "New Editor" menu item</doing>
            <doing>The system creates new tab with text editor</doing>
        </narrative>
        <postconditions>New tab with text editor is created</postconditions>
        <thread>
            <doing>listen "New Editor" menu item</doing>
            <perform action="'New Editor' menu item action">
                <doing>create text editor</doing>
                <doing>add new tab with text editor and "noname" title</doing>
            </perform>
        </thread>
        <test-scenarios>
            <test-scenario name="New editor">
                <test-step>
                    <test-action>Go to Window->New Editor</test-action>
                    <expected-results>New tab with text component is created</expected-results>
                </test-step>
            </test-scenario>
        </test-scenarios>
    </use-case>
    <use-case name="New plain editor" type="concrete" extends="New editor">
        <description>Open new editor for editing plain text</description>
        <concretization>
            <term>
                <abstract>text editor</abstract>
                <concrete>plain text editor</concrete>
            </term>
            <term>
                <abstract>"New editor" menu item</abstract>
                <concrete>"Plain" submenu of "New editor" menu</concrete>
            </term>
            <term>
                <abstract>tab with text editor</abstract>
                <concrete>tab with text component</concrete>
            </term>
        </concretization>
    </use-case>
</model>
Вигляд в переглядачі: