Project Members: Aniket Prabhune Reenal Mahajan Mudita Singhal

Similar documents
Oracle B2B 11g Technical Note. Technical Note: 11g_005 Attachments. Table of Contents

Restricting complextypes that have mixed content

MWTM NBAPI WSDL and XSD Definitions

Custom Data Access with MapObjects Java Edition

MWTM 6.1 NBAPI WSDL and XSD Definitions

Apache UIMA Regular Expression Annotator Documentation

Pattern/Object Markup Language (POML): A Simple XML Schema for Object Oriented Code Description

/// Rapport. / Testdocumentatie nieuwe versie Register producten en dienstverlening (IPDC)

ՕՐԻՆԱԿ. <xs:schema targetnamespace=" xmlns:tax="

Cisco Unity Connection Notification Interface (CUNI) API

AlwaysUp Web Service API Version 11.0

QosPolicyHolder:1 Erratum

Introduction Syntax and Usage XML Databases Java Tutorial XML. November 5, 2008 XML

XML extensible Markup Language

Software Engineering Methods, XML extensible Markup Language. Tutorial Outline. An Example File: Note.xml XML 1

Intellectual Property Rights Notice for Open Specifications Documentation

[MS-SSISPARAMS-Diff]: Integration Services Project Parameter File Format. Intellectual Property Rights Notice for Open Specifications Documentation

Oracle Enterprise Data Quality

Extensible Markup Language Processing

Approaches to using NEMSIS V3 Custom Elements

X3D Unit Specification Updates Myeong Won Lee The University of Suwon

XML Schema for WSML. Table of Contents

General Service Subscription Management Technical Specification

Cisco Prime Central 1.0 API Guide

Messages are securely encrypted using HTTPS. HTTPS is the most commonly used secure method of exchanging data among web browsers.

Document: M1/ Date: August 28, 2006 Reply to: Matt Swayze Phone: /

[MS-DPMDS]: Master Data Services Data Portability Overview. Intellectual Property Rights Notice for Open Specifications Documentation

XSD Reference For EXPRESS XML language

[MS-OXWSXPROP]: Extended Properties Structure. Intellectual Property Rights Notice for Open Specifications Documentation

Testing of Service Oriented Architectures A practical approach / APPENDIX V1.0

No Trade Secrets. Microsoft does not claim any trade secret rights in this documentation.

No Trade Secrets. Microsoft does not claim any trade secret rights in this documentation.

Data Bus Client Interface Manager Interface Control Document

3GPP TS V ( )

ETSI TS V9.2.0 ( ) Technical Specification

PTS XML STANDARD GUIDELINE

Web Service Provider Example - Enabling Visible Business

Document: M1/ Date: July 18, 2007 Reply to: Matt Swayze Phone: /

DFP Mobile Ad Network and Rich Media API

Work/Studies History. Programming XML / XSD. Database

Expires: January 15, 2005 July 17, Extensible Markup Language (XML) Formats for Representing Resource Lists draft-ietf-simple-xcap-list-usage-03

Lifecycle Controller (LC) XML Schema Guide

SWAD-Europe Deliverable 6.3a Description of prototype implementation (documentation for deliverable 6.2)

Keio Virtual Sensor System based on Sensor- Over- XMPP

Validation Language. GeoConnections Victoria, BC, Canada

Creating and Modifying EAP-FAST Profiles for Distribution to Users

eportfolio Interoperability XML Specification

Request for Comments: 5025 Category: Standards Track December 2007

Level of Assurance Authentication Context Profiles for SAML 2.0

XML Schema. Mario Alviano A.Y. 2017/2018. University of Calabria, Italy 1 / 28

No Trade Secrets. Microsoft does not claim any trade secret rights in this documentation.

2006 Martin v. Löwis. Data-centric XML. XML Schema (Part 1)

Customer Market Results Interface (CMRI) For RC Interface Specification. Version: 1.0.0

Document erratum applies to QosDevice:1. List other Erratum s or Documents that this change may apply to or have associated changes with

User Manual. Privacy Infringement Severity. ProM Plug-in. Author: Sebastian Banescu Version: 0.1

Using Inventory Export Guide

Released to: TSCP Architecture Committee

3GPP TS V8.2.0 ( )

[MS-TMPLDISC]: Template Discovery Web Service Protocol. Intellectual Property Rights Notice for Open Specifications Documentation

TED schemas. Governance and latest updates

White Paper. Fabasoft Integration for Novell GroupWise. Fabasoft Folio 2017 R1 Update Rollup 1

Infor Enterprise Server User Guide for Triggering

Semantic Web. XML and XML Schema. Morteza Amini. Sharif University of Technology Fall 94-95

Fall, 2005 CIS 550. Database and Information Systems Homework 5 Solutions

Columbia University R. Mahy, Ed. SIP Edge LLC November An INVITE-Initiated Dialog Event Package for the Session Initiation Protocol (SIP)

No Trade Secrets. Microsoft does not claim any trade secret rights in this documentation.

Capability Advertisement Messages

Qualys Cloud Suite API Release Notes

Brief guide for XML, XML Schema, XQuery for YAWL data perspective

PESC Compliant JSON Version /19/2018. A publication of the Technical Advisory Board Postsecondary Electronic Standards Council

Markup Languages. Lecture 4. XML Schema

Oracle Hospitality OPERA Web Self- Service Brochure Web Service Specification Version 5.1. September 2017

Syntax XML Schema XML Techniques for E-Commerce, Budapest 2004

Solution Sheet 5 XML Data Models and XQuery

SHS Version 2.0 SOAP-based Protocol Binding to SHS Concepts Försäkringskassan - Swedish Social Insurance Agency

SMKI Repository Interface Design Specification TPMAG baseline submission draft version 8 September 2015

CMS SOAP CLIENT SOFTWARE REQUIREMENTS SPECIFICATION

Test Assertions Part 2 - Test Assertion Markup Language Version 1.0

extensible Name Language (xnl) Specifications and Description Document

Notes. Any feedback/suggestions? IS 651: Distributed Systems

UNAVAILABILITY DOCUMENT UML MODEL AND SCHEMA

HVDC LINK DOCUMENT UML MODEL AND SCHEMA

CONVERTING CONCEPTUAL MODEL XUML TO XML SCHEMA

[MS-QDEFF]: Query Definition File Format. Intellectual Property Rights Notice for Open Specifications Documentation

REDISPATCH DOCUMENT UML MODEL AND SCHEMA

PISOA Interface Specification. Fall 2017 Release

iway iway Application System Adapter for Amdocs ClarifyCRM User s Guide Version 5 Release 5

Long Time Validation extended Signed Data Object Specification of version 1.1

CAPACITY AUCTION SPECIFICATION DOCUMENT UML MODEL AND SCHEMA

The following is a sample XML code from the HCSProductCatalog.wsdl file.

<xs:element name="record" type="recordtype" maxoccurs="unbounded" /> </xs:sequence> </xs:complextype>

[MS-QDEFF]: Query Definition File Format. Intellectual Property Rights Notice for Open Specifications Documentation

Trustmark Framework Technical Specification

G16-02SE-A02.1-NUE112_SchedaContatto-Rev5 <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="

All About <xml> CS193D, 2/22/06

PLANNED RESOURCE SCHEDULE DOCUMENT UML MODEL AND SCHEMA

Technical requirements

Automated Load Forecast System (ALFS) Interface Specification. Fall 2017 Release

BEAWebLogic. Integration. Transforming Data Using XQuery Mapper

RESOURCE SCHEDULE CONFIRMATION DOCUMENT UML MODEL AND SCHEMA

Transcription:

CS-5604 Information Storage and Retrieval Project Report Scenario/Class Diagram Synthesis (American South 2) Project Members: Aniket Prabhune (aprabhun@vt.edu) Reenal Mahajan (remahaja@vt.edu) Mudita Singhal (msinghal@vt.edu) Client: Rohit Kelapure (rkelapur@vt.edu) Advisor: Marcos Goncalves (mgoncalv@vt.edu) Instructor: Dr. Edward Fox (fox@vt.edu)

Table of Contents 1. Project title...3 2. Project brief description...3 3. Aim of the project...3 4. Approach...6 5. Technology Used...7 6. Developers Guide (Working of the Project)...7 7. Usage Guide...10 Appendix A: Class Diagram Schema...12 Appendix B: Class Diagram Instance...15 Appendix C: Scenario Schema...22 Appendix D: Example Scenario Instance...26 References...35 2

1. Project title Conversion of scenarios and class diagrams from 5SL XML format to textual representation for SUIP tool input. 2. Project brief description Perform mapping of the 5SL XML description of the scenarios (class diagram) to the textual representation of collaboration diagrams (class diagram) that the SUIP scenario synthesis algorithm takes as input. 3. Aim of the project This project is aimed at creating an XML Schema and generating corresponding documents for the representation of scenarios and class diagrams in 5SL XML. This XML format shall be used as the starting point to derive the corresponding text format document, which serves as an input to the SUIP tool. The SUIP tool shall in-turn generate the corresponding User Interface Prototype for the scenarios. Diagrammatically this can be shown as in figure 1 below. 3

5SL-XML Scenarios Scenario Schema Parser And Converter For Scenario XML Files Textual Representation 5SL-XML Class Diagrams Class Diagram Schema Parser And Converter For Class XML Files Figure 1: High level Diagram of the project 4

The corresponding concept map for the project can be shown as in figure 2 below. Figure 2: Concept map of the project 5

4. Approach We followed the following steps to achieve the goal of the project: 1. Understood the scenario synthesis algorithm by Ismaïl Khriss and other relevant work. 2. Understood 5SL Concept. 3. Explored the Scenario-based User Interface Prototyping tool (SUIP). 4. Understood the textual input format for the scenarios that the SUIP tool expects. 5. Developed a concept map for the group project. 6. Defined a XML schema for the scenarios in 5SL-XML. 7. Created XML instances for the scenario of a known service (Loan scenarios of the Library system on the website: http://www.iro.umontreal.ca/labs/gelo/suip/library.html that confirms the XML Schema defined in step 6. 8. Understood the textual input format for the class diagrams that the SUIP tool expects. 9. Defined a XML schema for the class diagram in 5SL-XML. 10. Created XML instances for the class diagram of a known system (Library system) on the website: http://www.iro.umontreal.ca/labs/gelo/suip/library.html that confirms the XML Schema defined in step 8. 11. Defined, developed and tested a parser component that parses the scenario XML files and interprets them. 12. Defined, developed and tested a parser component that parses the XML files for class diagram and interprets them. 13. Understood and defined the mapping between the 5SL-XML format and the text format for scenarios and class diagrams. 14. Defined and developed a converter component that converts the 5SL-XML formats to the text format required. 6

15. Tested the Parser and Converter components together on the scenarios and class diagrams of the example Loan scenarios of the Library system by generating the input files for scenario based user interface prototyping tool (SUIP) and generated UI prototypes for the interface object of the system. 5. Technology Used J2SE (Java TM 2 Platform, Standard Edition): Programming environment. XML (extensible Markup Language): For defining the instances of the scenarios and class diagrams in 5SL-XML. XML Schema: For defining the structure, content and semantics of the scenarios and class diagram XML files. JDOM: Open source, tree-based, pure Java API for parsing, creating, manipulating, and serializing XML documents 6. Developers Guide (Working of the Project) The project involves 2 different phases: Parsing and Conversion. The reason for keeping these two phases separate is extensibility. i.e. any of these phases could be modified further without affecting eachother. In the parsing phase of the class diagram (scenario diagram), the name of the class XML file (scenario XML file) is provided to the parser. The parser creates a JDOM tree on this XML file by identifying the various elements of the XML recursively. The class parser (scenario parser) also stores the information that it parses from the underlying XML file in a hierarchy of class (scenario) objects. For e.g., the hierarchy for the class diagram objects is as shown in the figure 3 below and the hierarchy for the scenario diagram objects is as shown in the figure 4 below. 7

Classes classname ClassAttributes name datatype value ClassOperations Parameters name datatype datatype precondition postcondition Figure 3: Hierarchy of class objects operationname 8

Service Scenari o scnumber scfrequency scname note interfaceobj ect startmessag e Objects Events seqno sender receiver link Message name assignedto controlflowty pe Arguments Constrai nt inputdata outputdata clausetype Figure 4: Hierarchy of scenario objects clausevalue 9

In the phase 2 i.e. Conversion, files are generated with the names as specified in the class (scenario) XML file (s) and the above object tree structure is used to generate the corresponding textual version by applying the necessary mapping of the information from the XML to the text version. 7. Usage Guide 1. Preparation: Before you can run the programs and convert the class and scenarios from 5SL-XML to their corresponding text versions you need to set the class path to the current directory and also you will need to include the jdom.jar and xerces.jar in the classpath.. For e.g., if your project work directory is C:\myproj\ and the jdom.jar and xerces.jar files are in the same directory then on the command prompt use the following command to set the class path: C:\myproj\> set classpath=.;xerces.jar;jdom.jar The dot indicates current directory. If the project files are located in some other directory, then specify that directory name instead of the dot. It applies to the location of the xerces.jar and jdom.jar files. 2. Class Diagram Conversion: To generate the text class (.classd) simply run the class diagram converter with the corresponding class diagram XML as input as follows: C:\myproj\> java ClassConverter Library_class.xml This will result into the corresponding text file equivalent of the 5SL-XML class diagram. The name of the file is as per the CLASS_NAME attribute of the top level CLASSDIAGRAM element of the 5SL-XML for the class diagram. 3. Scenario Conversion: To generate the scenarios (.CCollD) simply run 10

the scenario converter with the corresponding service XML file as input as follows: C:\myproj\> java ScenarioConverter Loan_scenario.xml This will result into the text files corresponding to the various scenarios defined in the 5SL-XML scenario file. The names of these files are as per the SCENARIO_NAME attribute of the SCENARIO elements within the SERVICE element of the 5SL-XML for the scenarios. 11

Appendix A: Class Diagram Schema <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:element name="datatype"> <xs:documentation>this defines the datatype for the parameters passed to an operation and the datatype of the return value of an operation. <xs:simpletype> <xs:restriction base="xs:string"> <xs:enumeration value="string"/> <xs:enumeration value="float"/> <xs:enumeration value="integer"/> <xs:enumeration value="char"/> <xs:enumeration value="boolean"/> </xs:restriction> </xs:simpletype> </xs:element> <xs:complextype name="parametertype"> <xs:documentation> This represents the name and datatype of a parameter passed to an operation. <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element ref="datatype"/> </xs:sequence> <xs:complextype name="listofparametertype"> <xs:documentation>this defines a list of parameters passed to an operation. <xs:sequence> <xs:element name="parameter" type="parametertype" minoccurs="0" maxoccurs="unbounded"/> </xs:sequence> <xs:complextype name="operationtype"> <xs:documentation>this defines an operation as consisting of operation name, list of parameters to the operation, return datatype, precondition of the operation and post condition of the operation. 12

<xs:sequence> <xs:element name="operationname" type="xs:string"/> <xs:element name="listofparameters" type="listofparametertype" minoccurs="0" maxoccurs="unbounded"/> <xs:element ref="datatype" minoccurs="0"/> <xs:element name="precondition" type="xs:string"/> <xs:element name="postcondition" type="xs:string"/> </xs:sequence> <xs:complextype name="attributetype"> <xs:documentation>this represents the name, datatype and value of the attributes. <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element ref="datatype"/> <xs:element name="value" type="xs:string" minoccurs="0"/> </xs:sequence> <xs:complextype name="listofattributetype"> <xs:documentation>this represents a list of attributes of a class. <xs:sequence> <xs:element name="attribute" type="attributetype" maxoccurs="unbounded"/> </xs:sequence> <xs:complextype name="listofoperationtype"> <xs:documentation>this represents a list of operations of a class. <xs:sequence> <xs:element name="operation" type="operationtype" maxoccurs="unbounded"/> </xs:sequence> <xs:complextype name="classtype"> <xs:documentation>this defines a class consisting of the name of the class, list of attributes, and a list of operations. <xs:sequence> 13

<xs:element name="classname" type="xs:string"/> <xs:element name="listofattributes" type="listofattributetype"/> <xs:element name="listofoperations" type="listofoperationtype"/> </xs:sequence> <xs:complextype name="listofclasstype"> <xs:documentation>this represents a list of classes involved in the class diagram. <xs:sequence> <xs:element name="class" type="classtype" maxoccurs="unbounded"/> </xs:sequence> <xs:element name="classdiagram"> <xs:documentation>this is the outermost element of the class diagram, which consists of the name of the resulting.classd file as an attribute and in turn has list of classes. <xs:complextype> <xs:sequence> <xs:element name="listofclasses" type="listofclasstype" maxoccurs="unbounded"/> </xs:sequence> <xs:attribute name="class_name" type="xs:string" use="required"/> </xs:element> </xs:schema> 14

Appendix B: Class Diagram Instance <?xml version="1.0" encoding="utf-8"?> <!-- If the tag DATATYPE is not found for a particular operation then assume no value is returned Change the hardcoded location of the schema. --> <CLASSDIAGRAM CLASS_NAME="libprj.ClassD" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="c:\winnt\profiles\administrator\desktop\ ISR Project\class.xsd"> <LISTOFCLASSES> <CLASS> <CLASSNAME>Terminal</CLASSNAME> <LISTOFATTRIBUTES> <NAME>screen</NAME> <VALUE>"empty"</VALUE> </LISTOFATTRIBUTES> <LISTOFOPERATIONS> <OPERATIONNAME>enter_user_id</OPERATIONNAME> <PRECONDITION>((screen = "loan") OR (screen = "return")) </PRECONDITION> <POSTCONDITION>(screen = "User_Id_entered") </POSTCONDITION> <OPERATIONNAME>confirm_uid</OPERATIONNAME> <PRECONDITION>(screen = "User_Id_entered") </PRECONDITION> <POSTCONDITION>((screen = "correct_id") OR (screen = "Incorrect_Id")) </POSTCONDITION> <OPERATIONNAME>display_user_info</OPERATIONNAME> <PRECONDITION>(screen = "correct_id")</precondition> <POSTCONDITION>(screen = "Telephone_displayed") </POSTCONDITION> <OPERATIONNAME>display_user_name</OPERATIONNAME> <PRECONDITION>(screen = "correct_id") </PRECONDITION> <POSTCONDITION>(screen = "Name_displayed") </POSTCONDITION> <OPERATIONNAME>display_user_address</OPERATIONNAME> <PRECONDITION>(screen = "Name_displayed")</PRECONDITION> <POSTCONDITION>(screen = "Address_displayed") 15

</POSTCONDITION> <OPERATIONNAME>display_user_telephone</OPERATIONNAME> <PRECONDITION>(screen = "Address_displayed") </PRECONDITION> <POSTCONDITION>(screen = "Telephone_displayed") </POSTCONDITION> <OPERATIONNAME>enter_document_id</OPERATIONNAME> <PRECONDITION>(screen = "Telephone_displayed") </PRECONDITION> <POSTCONDITION>(screen = "Document_Id_entererd") </POSTCONDITION> <OPERATIONNAME>confirm_did</OPERATIONNAME> <PRECONDITION>(screen = "Document_Id_entererd") </PRECONDITION> <POSTCONDITION>((screen = "Document_available") OR (screen = "Document_unavailable")) </POSTCONDITION> <OPERATIONNAME>display_doc_Info</OPERATIONNAME> <PRECONDITION>(screen = "Document_available") </PRECONDITION> <POSTCONDITION>(screen = "Due_date_displayed") </POSTCONDITION> <OPERATIONNAME>display_document_title</OPERATIONNAME> <PRECONDITION>(screen = "Document_available") </PRECONDITION> <POSTCONDITION>(screen = "Title_displayed") </POSTCONDITION> <OPERATIONNAME>display_document_authors</OPERATIONNAME> <PRECONDITION>(screen = "Title_displayed") </PRECONDITION> <POSTCONDITION>(screen = "Authors_displayed") </POSTCONDITION> <OPERATIONNAME>display_document_status</OPERATIONNAME> <PRECONDITION>(screen = "Authors_displayed") </PRECONDITION> <POSTCONDITION>(screen = "Status_displayed") </POSTCONDITION> <OPERATIONNAME>display_date_due</OPERATIONNAME> <PRECONDITION>(screen = "Status_displayed") </PRECONDITION> 16

<POSTCONDITION>(screen = "Due_date_displayed") </POSTCONDITION> <OPERATIONNAME>save_loan</OPERATIONNAME> <PRECONDITION>(screen = "Due_date_displayed") </PRECONDITION> <POSTCONDITION>(screen = "empty") </POSTCONDITION> <OPERATIONNAME>cancel_loan</OPERATIONNAME> <PRECONDITION>(screen = "Due_date_displayed") </PRECONDITION> <POSTCONDITION>(screen = "empty")</postcondition> <OPERATIONNAME>save_return</OPERATIONNAME> <PRECONDITION>(screen = "Due_date_displayed") </PRECONDITION> <POSTCONDITION>(screen = "empty")</postcondition> <OPERATIONNAME>cancel_return</OPERATIONNAME> <PRECONDITION>(screen = "Due_date_displayed")</PRECONDITION> <POSTCONDITION>(screen = "empty")</postcondition> <OPERATIONNAME>display_message_doc_error</OPERATIONNAME> <PRECONDITION>(screen = "Document_unavailable")</PRECONDITION> <POSTCONDITION>(screen = "empty")</postcondition> <OPERATIONNAME>display_message_user_error</OPERATIONNAME> <PRECONDITION>(screen = "Incorrect_Id")</PRECONDITION> <POSTCONDITION>(screen = "empty")</postcondition> <OPERATIONNAME>create_loan</OPERATIONNAME> <PRECONDITION>(screen = "empty")</precondition> <POSTCONDITION>(screen = "loan")</postcondition> <OPERATIONNAME>create_return</OPERATIONNAME> <PRECONDITION>(screen = "empty")</precondition> <POSTCONDITION>(screen = "return")</postcondition> </LISTOFOPERATIONS> </CLASS> <CLASS> <CLASSNAME>Reader</CLASSNAME> <LISTOFATTRIBUTES> <NAME>id</NAME> <VALUE>" "</VALUE> 17

18 <NAME>name</NAME> <VALUE>" "</VALUE> <NAME>address</NAME> <VALUE>" "</VALUE> <NAME>tel</NAME> <VALUE>" "</VALUE> </LISTOFATTRIBUTES> <LISTOFOPERATIONS> <OPERATIONNAME>check_user</OPERATIONNAME> <LISTOFPARAMETERS> <PARAMETER> <NAME>uid</NAME> </PARAMETER> </LISTOFPARAMETERS> <PRECONDITION/> <POSTCONDITION/> <OPERATIONNAME>new</OPERATIONNAME> <LISTOFPARAMETERS/> <PRECONDITION/> <POSTCONDITION/> <OPERATIONNAME>update</OPERATIONNAME> <LISTOFPARAMETERS/> <DATATYPE>boolean</DATATYPE> <PRECONDITION/> <POSTCONDITION/> <OPERATIONNAME>delete</OPERATIONNAME> <LISTOFPARAMETERS> <PARAMETER> <NAME>id</NAME> </PARAMETER> </LISTOFPARAMETERS> <PRECONDITION/> <POSTCONDITION/> </LISTOFOPERATIONS> </CLASS> <CLASS> <CLASSNAME>Document</CLASSNAME>

<LISTOFATTRIBUTES> <NAME>id</NAME> <VALUE>" "</VALUE> <NAME>title</NAME> <VALUE>" "</VALUE> <NAME>authors</NAME> <VALUE>" "</VALUE> <NAME>status</NAME> <VALUE>" "</VALUE> <NAME>due_date</NAME> <VALUE>" "</VALUE> </LISTOFATTRIBUTES> <LISTOFOPERATIONS> <OPERATIONNAME>check_document</OPERATIONNAME> <LISTOFPARAMETERS> <PARAMETER> <NAME>did</NAME> </PARAMETER> </LISTOFPARAMETERS> <PRECONDITION>(id = "")</PRECONDITION> <POSTCONDITION/> <OPERATIONNAME>new</OPERATIONNAME> <PRECONDITION/> <POSTCONDITION/> <OPERATIONNAME>lend_doc</OPERATIONNAME> <LISTOFPARAMETERS> <PARAMETER> <NAME>did</NAME> </PARAMETER> </LISTOFPARAMETERS> <DATATYPE>boolean</DATATYPE> <PRECONDITION>(status = "D")</PRECONDITION> <POSTCONDITION>(status = "D") </POSTCONDITION> 19

<OPERATIONNAME>return_doc</OPERATIONNAME> <LISTOFPARAMETERS> <PARAMETER> <NAME>did</NAME> </PARAMETER> </LISTOFPARAMETERS> <DATATYPE>boolean</DATATYPE> <PRECONDITION>(status = "R")</PRECONDITION> <POSTCONDITION>(status = "R")</POSTCONDITION> <OPERATIONNAME>delete</OPERATIONNAME> <LISTOFPARAMETERS> <PARAMETER> <NAME>id</NAME> </PARAMETER> </LISTOFPARAMETERS> <PRECONDITION>(status = "D")</PRECONDITION> <POSTCONDITION>(status = "D")</POSTCONDITION> </LISTOFOPERATIONS> </CLASS> <CLASS> <CLASSNAME>Loan</CLASSNAME> <LISTOFATTRIBUTES> <NAME>uid</NAME> <VALUE>" "</VALUE> <NAME>did</NAME> <VALUE>" "</VALUE> <NAME>loan_date</NAME> <VALUE>" "</VALUE> <NAME>due_date</NAME> <VALUE>" "</VALUE> </LISTOFATTRIBUTES> <LISTOFOPERATIONS> <OPERATIONNAME>save</OPERATIONNAME> <LISTOFPARAMETERS/> <PRECONDITION/> <POSTCONDITION/> 20

21 <OPERATIONNAME>delete</OPERATIONNAME> <LISTOFPARAMETERS> <PARAMETER> <NAME>uid</NAME> </PARAMETER> <PARAMETER> <NAME>did</NAME> </PARAMETER> </LISTOFPARAMETERS> <PRECONDITION/> <POSTCONDITION/> </LISTOFOPERATIONS> </CLASS> <CLASS> <CLASSNAME>Attendant</CLASSNAME> <LISTOFATTRIBUTES> <NAME>id</NAME> <VALUE>" "</VALUE> <NAME>name</NAME> <VALUE>" "</VALUE> <NAME>address</NAME> <VALUE>" "</VALUE> <NAME>tel</NAME> <VALUE>" "</VALUE> </LISTOFATTRIBUTES> <LISTOFOPERATIONS> <OPERATIONNAME>add</OPERATIONNAME> <LISTOFPARAMETERS/> <PRECONDITION/> <POSTCONDITION/> <OPERATIONNAME>delete</OPERATIONNAME> <LISTOFPARAMETERS/> <PRECONDITION/> <POSTCONDITION/> </LISTOFOPERATIONS> </CLASS> </LISTOFCLASSES> </CLASSDIAGRAM>

Appendix C: Scenario Schema <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:element name="inputdata" type="xs:string"/> <xs:element name="outputdata" type="xs:string"/> <xs:complextype name="constrainttype"> <xs:documentation>this represents the constraint which can be either inputdata, outputdata or a clause. <xs:sequence> <xs:element ref="inputdata" minoccurs="0"/> <xs:element ref="outputdata" minoccurs="0"/> <xs:element name="clause" minoccurs="0"> <xs:complextype> <xs:simplecontent> <xs:extension base="xs:string"> <xs:attribute name="type" use="optional"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:enumeration value="condition"/> <xs:enumeration value="iteration"/> </xs:restriction> </xs:simpletype> </xs:attribute> </xs:extension> </xs:simplecontent> </xs:element> </xs:sequence> <xs:element name="controlflowtype"> <xs:documentation>this represents the control flow type enumeration which can be either procedure call, flat flow or asynchronous flow. <xs:simpletype> <xs:restriction base="xs:string"> <xs:enumeration value="procedure_call"/> <xs:enumeration value="flat_flow"/> <xs:enumeration value="asynchronous_flow"/> </xs:restriction> </xs:simpletype> </xs:element> <xs:element name="argument" type="xs:string"/> <xs:complextype name="messagetype"> 22

<xs:documentation>this represents the message of event as consitsting of arguments, control flow type, constraint along with the name and return assignement as its attributes. <xs:sequence> <xs:element ref="argument" minoccurs="0"/> <xs:element ref="controlflowtype"/> <xs:element name="constraint" type="constrainttype" minoccurs="0"/> </xs:sequence> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="assignedto" type="xs:string" use="optional"/> <xs:element name="link"> <xs:documentation>this represents an enumeration of link, which can be either association, global, local, self or parameter. <xs:simpletype> <xs:restriction base="xs:string"> <xs:enumeration value="association"/> <xs:enumeration value="global"/> <xs:enumeration value="local"/> <xs:enumeration value="parameter"/> <xs:enumeration value="self"/> </xs:restriction> </xs:simpletype> </xs:element> <xs:complextype name="eventtype"> <xs:documentation>this defines an event consisting of a sender, receiver, link, message and sequence number. <xs:sequence> <xs:element name="sender"> <xs:complextype> <xs:simplecontent> <xs:extension base="xs:string"> <xs:attribute name="type" use="optional"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:enumeration value="new"/> <xs:enumeration value="destroyed"/> <xs:enumeration value="transient"/> </xs:restriction> </xs:simpletype> </xs:attribute> </xs:extension> </xs:simplecontent> </xs:element> 23

<xs:element name="receiver"> <xs:complextype> <xs:simplecontent> <xs:extension base="xs:string"> <xs:attribute name="type" use="optional"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:enumeration value="new"/> <xs:enumeration value="destroyed"/> <xs:enumeration value="transient"/> </xs:restriction> </xs:simpletype> </xs:attribute> </xs:extension> </xs:simplecontent> </xs:element> <xs:element ref="link" minoccurs="0"/> <xs:element name="message" type="messagetype"/> </xs:sequence> <xs:attribute name="seqno" type="xs:string" use="required"/> <xs:complextype name="listofobjectstype"> <xs:documentation>this represents a list of objects involved in a scenario. <xs:sequence> <xs:element name="object" type="xs:string" maxoccurs="unbounded"/> </xs:sequence> <xs:complextype name="listofeventtype"> <xs:documentation>this represents a list of events associated with a scenario. <xs:sequence> <xs:element name="event" type="eventtype" maxoccurs="unbounded"/> </xs:sequence> <xs:element name="note" type="xs:string"> <xs:documentation>this represents any note associated with the scenario. </xs:element> <xs:element name="interfaceobject" type="xs:string"> <xs:documentation>this represents the interface object. 24

</xs:element> <xs:complextype name="scenariotype"> <xs:documentation>this represents the scenarios consisting of a list of objects, interface object a start message and a list of events. <xs:sequence> <xs:element ref="note"/> <xs:element name="listofobjects" type="listofobjectstype"/> <xs:element ref="interfaceobject"/> <xs:element name="startmessage" type="messagetype"/> <xs:element name="listofevents" type="listofeventtype" maxoccurs="unbounded"/> </xs:sequence> <xs:attribute name="sc_number" type="xs:integer" use="required"/> <xs:attribute name="sc_name" type="xs:string" use="required"/> <xs:attribute name="sc_frequency" type="xs:integer" use="required"/> <xs:element name="service"> <xs:documentation> Service for which the scenarios will be represented. <xs:complextype> <xs:sequence> <xs:element name="scenario" type="scenariotype" maxoccurs="unbounded"/> </xs:sequence> </xs:element> </xs:schema> 25

Appendix D: Example Scenario Instance <?xml version="1.0" encoding="utf-8"?> <SERVICE xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="c:\winnt\profiles\administrator\desktop\ ISR Project\service.xsd"> <SCENARIO SC_NUMBER="1" SC_NAME="regularLoan.CCollD" SC_FREQUENCY="10"> <NOTE>This is the first scenario of the Use Case Loan </NOTE> <LISTOFOBJECTS> <OBJECT>Terminal</OBJECT> <OBJECT>Document</OBJECT> <OBJECT>Reader</OBJECT> <OBJECT>Attendant</OBJECT> <OBJECT>Loan</OBJECT> </LISTOFOBJECTS> <INTERFACEOBJECT>Terminal</INTERFACEOBJECT> <STARTMESSAGE NAME="create_loan"> </STARTMESSAGE> <LISTOFEVENTS> <EVENT SEQNO="1.1"> <SENDER>Attendant</SENDER> <MESSAGE NAME="enter_user_id" ASSIGNEDTO="uid"> <INPUTDATA>Reader.id</INPUTDATA> <EVENT SEQNO="1.2"> <SENDER>Attendant</SENDER> <MESSAGE NAME="confirm_uid"> <INPUTDATA>Reader.check_user</INPUTDATA> <EVENT SEQNO="1.3"> <RECEIVER>Reader</RECEIVER> <MESSAGE NAME="check_user" ASSIGNEDTO="res"> <LISTOFARGUMENTS> <ARGUMENT>uid</ARGUMENT> </LISTOFARGUMENTS> <EVENT SEQNO="1.4"> <MESSAGE NAME="display_user_info"> 26

<CLAUSE TYPE="condition">res=true</CLAUSE> <EVENT SEQNO="1.4.1"> <MESSAGE NAME="display_user_name"> <OUTPUTDATA>Reader.name</OUTPUTDATA> <EVENT SEQNO="1.4.2"> <MESSAGE NAME="display_user_address"> <OUTPUTDATA>Reader.address</OUTPUTDATA> <EVENT SEQNO="1.4.3"> <MESSAGE NAME="display_user_telephone"> <OUTPUTDATA>Reader.tel</OUTPUTDATA> <EVENT SEQNO="1.5"> <SENDER>Attendant</SENDER> <MESSAGE NAME="enter_document_id" ASSIGNEDTO="did"> <INPUTDATA>Document.id</INPUTDATA> <EVENT SEQNO="1.6"> <SENDER>Attendant</SENDER> <MESSAGE NAME="confirm_did"> <INPUTDATA>Document.check_document</INPUTDATA> 27

<EVENT SEQNO="1.7"> <RECEIVER>Document</RECEIVER> <MESSAGE NAME="check_document" ASSIGNEDTO="res"> <LISTOFARGUMENTS> <ARGUMENT>did</ARGUMENT> </LISTOFARGUMENTS> <EVENT SEQNO="1.8"> <MESSAGE NAME="display_document_info"> <CLAUSE>res=true</CLAUSE> <EVENT SEQNO="1.8.1"> <MESSAGE NAME="display_document_title"> <OUTPUTDATA>Document.title</OUTPUTDATA> <EVENT SEQNO="1.8.2"> <MESSAGE NAME="display_document_authors"> <OUTPUTDATA>Document.authors</OUTPUTDATA> <EVENT SEQNO="1.8.3"> <MESSAGE NAME="display_document_status"> <OUTPUTDATA>Document.satus</OUTPUTDATA> <EVENT SEQNO="1.9"> 28

<MESSAGE NAME="display_date_due"> <OUTPUTDATA>Document.due_date</OUTPUTDATA> <EVENT SEQNO="1.10"> <SENDER>Attendant</SENDER> <MESSAGE NAME="save_loan"> <INPUTDATA>Loan.save</INPUTDATA> <EVENT SEQNO="1.11a"> <RECEIVER>Document</RECEIVER> <MESSAGE NAME="lend_doc"> <LISTOFARGUMENTS> <ARGUMENT>did</ARGUMENT> </LISTOFARGUMENTS> <EVENT SEQNO="1.11b"> <RECEIVER>Loan</RECEIVER> <MESSAGE NAME="save"> </LISTOFEVENTS> </SCENARIO> <SCENARIO SC_NUMBER="2" SC_NAME="errorUserLoan.CCollD" SC_FREQUENCY="4"> <NOTE>This is the second scenario of the Use Case Loan </NOTE> <LISTOFOBJECTS> <OBJECT>Terminal</OBJECT> <OBJECT>Reader</OBJECT> <OBJECT>Attendant</OBJECT> </LISTOFOBJECTS> <INTERFACEOBJECT>Terminal</INTERFACEOBJECT> <STARTMESSAGE NAME="create_loan"> </STARTMESSAGE> <LISTOFEVENTS> <EVENT SEQNO="1.1"> <SENDER>Attendant</SENDER> <MESSAGE NAME="enter_user_id" ASSIGNEDTO="uid"> <CONTROLFLOWTYPE>asynchronous_flow 29

</CONTROLFLOWTYPE> <INPUTDATA>Reader.id</INPUTDATA> <EVENT SEQNO="1.2"> <SENDER>Attendant</SENDER> <MESSAGE NAME="confirm_uid"> <CONTROLFLOWTYPE>asynchronous_flow </CONTROLFLOWTYPE> <INPUTDATA>Reader.check_user</INPUTDATA> <EVENT SEQNO="1.3"> <RECEIVER>Reader</RECEIVER> <MESSAGE NAME="check_user" ASSIGNEDTO="res"> <LISTOFARGUMENTS> <ARGUMENT>uid</ARGUMENT> </LISTOFARGUMENTS> <CONTROLFLOWTYPE>asynchronous_flow </CONTROLFLOWTYPE> <INPUTDATA>Reader.check_user </INPUTDATA> <EVENT SEQNO="1.4"> <MESSAGE NAME="display_message_user_error"> <LISTOFARGUMENTS> <ARGUMENT>uid</ARGUMENT> </LISTOFARGUMENTS> <CONTROLFLOWTYPE>asynchronous_flow </CONTROLFLOWTYPE> <OUTPUTDATA>"User not Found"</OUTPUTDATA> <CLAUSE TYPE="condition">res=false </CLAUSE> </LISTOFEVENTS> </SCENARIO> <SCENARIO SC_NUMBER="3" SC_NAME="cancelLoan.CCollD" SC_FREQUENCY="7"> <NOTE>This is the third scenario of the Use Case Loan </NOTE> <LISTOFOBJECTS> <OBJECT>Terminal</OBJECT> <OBJECT>Document</OBJECT> 30

<OBJECT>Reader</OBJECT> <OBJECT>Attendant</OBJECT> </LISTOFOBJECTS> <INTERFACEOBJECT>Terminal</INTERFACEOBJECT> <STARTMESSAGE NAME="create_loan"> </STARTMESSAGE> <LISTOFEVENTS> <EVENT SEQNO="1.1"> <SENDER>Attendant</SENDER> <MESSAGE NAME="enter_user_id" ASSIGNEDTO="uid"> <INPUTDATA>Reader.id</INPUTDATA> <EVENT SEQNO="1.2"> <SENDER>Attendant</SENDER> <MESSAGE NAME="confirm_uid"> <INPUTDATA>Reader.check_user</INPUTDATA> <EVENT SEQNO="1.3"> <RECEIVER>Reader</RECEIVER> <MESSAGE NAME="check_user" ASSIGNEDTO="res"> <LISTOFARGUMENTS> <ARGUMENT>uid</ARGUMENT> </LISTOFARGUMENTS> <EVENT SEQNO="1.4"> <MESSAGE NAME="display_user_info"> <CLAUSE TYPE="condition">res=true</CLAUSE> <EVENT SEQNO="1.4.1"> <MESSAGE NAME="display_user_name"> <OUTPUTDATA>Reader.name</OUTPUTDATA> 31

<EVENT SEQNO="1.4.2"> <MESSAGE NAME="display_user_address"> <OUTPUTDATA>Reader.address</OUTPUTDATA> <EVENT SEQNO="1.4.3"> <MESSAGE NAME="display_user_telephone"> <OUTPUTDATA>Reader.tel</OUTPUTDATA> <EVENT SEQNO="1.5"> <SENDER>Attendant</SENDER> <MESSAGE NAME="enter_document_id" ASSIGNEDTO="did"> <INPUTDATA>Document.id</INPUTDATA> <EVENT SEQNO="1.6"> <SENDER>Attendant</SENDER> <MESSAGE NAME="confirm_did"> <INPUTDATA>Document.check_document</INPUTDATA> <EVENT SEQNO="1.7"> <RECEIVER>Document</RECEIVER> <MESSAGE NAME="check_document" ASSIGNEDTO="res"> <LISTOFARGUMENTS> <ARGUMENT>did</ARGUMENT> </LISTOFARGUMENTS> <EVENT SEQNO="1.8"> 32

<MESSAGE NAME="display_document_info"> <CLAUSE>res=true</CLAUSE> <EVENT SEQNO="1.8.1"> <MESSAGE NAME="display_document_title"> <OUTPUTDATA>Document.title</OUTPUTDATA> <EVENT SEQNO="1.8.2"> <MESSAGE NAME="display_document_authors"> <OUTPUTDATA>Document.authors</OUTPUTDATA> <EVENT SEQNO="1.8.3"> <MESSAGE NAME="display_document_status"> <OUTPUTDATA>Document.status</OUTPUTDATA> <EVENT SEQNO="1.9"> <MESSAGE NAME="display_date_due"> <OUTPUTDATA>Document.due_date</OUTPUTDATA> <EVENT SEQNO="1.10"> <SENDER>Attendant</SENDER> <MESSAGE NAME="cancel_loan"> 33

<INPUTDATA>Loan.delete</INPUTDATA> </LISTOFEVENTS> </SCENARIO> </SERVICE> 34

References Suggestion page for the project: http://collab.dlib.vt.edu/runwiki/wiki.pl?isrprojkelapuretwo Scenario synthesis algorithm 1: http://www.iro.umontreal.ca/labs/gelo/suip/gelo-82.pdf Scenario synthesis algorithm 2: http://www.iro.umontreal.ca/~labgelo/publications/papers/ccpe-2001.pdf Scenario synthesis algorithm 3: http://www.iro.umontreal.ca/labs/gelo/suip/bookchapter.pdf The tool for scenario-based prototyping: http://www.iro.umontreal.ca/labs/gelo/suip/ Concepts of 5SL: http://www.dlib.vt.edu/projects/5s-model/p117- goncalves.pdf 35