SRD
SRD
SRD
Project Group 1
Project Team:
Sven Bego Roel Coset Robert Leeuwestein Maarten Leijten Ivo van der Linden Joery Mens Marcel Moreaux Tim Muller Tom Kleijkers L. Somers Y.Usenko M. ter Linden H. de Wolf
0550191 0548132 0546746 0547649 0547632 0547515 0499480 0547961 0515015 TU/e HG 7.83 TU/e HG 5.71 Dutch Space Dutch Space
Abstract
This document contains the software requirements for the SPINGRID system. This project is one of seven assignments for the course 2IP40 at Eindhoven University of Technology. These software requirements were established according to requests formulated by Mark ter Linden and Hans de Wolf of Dutch Space. The document complies with the Software Requirements Document (SRD) from the Software Engineering Standard, as set by the European Space Agency [ESA].
SPINGRID
Contents
1 Introduction 1.1 1.2 1.3 Purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . List of denitions and abbreviations . . . . . . . . . . . . . . . . . . . . . . . 1.3.1 1.3.2 1.4 Denitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6 6 6 6 8 8 8 8 8 9 9 9 9 10 10 10 11 11 12 12 12 12 13
1.5
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 General Description 2.1 Relation to current projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 2.1.2 2.1.3 2.2 2.3 2.4 GridAssist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . BOINC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Globus Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Relation to predecessor and successor projects . . . . . . . . . . . . . . . . . . Function and purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1 System requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Relation to other systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . General constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Model description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.7.1 2.7.2 High level model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . System Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SPINGRID
CONTENTS
Classes from the dispatcher perspective . . . . . . . . . . . . . . . . . Classes from the user perspective . . . . . . . . . . . . . . . . . . . . . JSDL class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15 18 18 22 22 22 30 35 37 43 43 43 44 45 46 47 48 48 50 51 53
3 Specic requirements 3.1 Functional requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 3.1.2 3.2 User class requirements . . . . . . . . . . . . . . . . . . . . . . . . . . JSDL class requirements . . . . . . . . . . . . . . . . . . . . . . . . . .
Non-functional Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 Requirements traceability matrix A Petri-nets A.1 Dispatcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.1.1 Top Level (gure A.1.1) . . . . . . . . . . . . . . . . . . . . . . . . . . A.1.2 Agent Communication Subnet (gure A.1.2) . . . . . . . . . . . . . .
A.1.3 Client Communication Subnet (gure A.1.3) . . . . . . . . . . . . . . A.1.4 Job Provider Commands Subnet (gure A.1.4) . . . . . . . . . . . . . A.1.5 Data Provider Commands Subnet (gure A.1.5) . . . . . . . . . . . . A.1.6 Application Provider Commands Subnet (gure A.1.6) . . . . . . . . . A.1.7 Project Admin Commands Subnet (gure A.1.7) . . . . . . . . . . . . A.1.8 System Admin Commands Subnet (gure A.1.8) . . . . . . . . . . . . A.2 Agent (gure A.2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.3 Client (gure A.3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SPINGRID
Version 0.0.1 0.0.2 0.0.3 0.0.4 0.0.5 0.1.0 0.1.1 0.2.0 0.2.1 1.0.0 1.0.1
Date 20-01-2006 24-01-2006 09-02-2006 22-02-2006 26-02-2006 26-02-2006 09-03-2006 09-03-2006 22-03-2006 28-03-2006 28-03-2006
Author(s) R. Leeuwestein R. Leeuwestein, S. Bego R. Leeuwestein, M. Moreaux, S. Bego, R. Coset R. Leeuwestein, M. Moreaux, S. Bego, R. Coset, I. v.d. Linden R. Leeuwestein, M. Moreaux, S. Bego, R. Coset, I. v.d. Linden R. Leeuwestein, M. Moreaux, S. Bego, R. Coset, I. v.d. Linden R. Leeuwestein, M. Moreaux, S. Bego, R. Coset, I. v.d. Linden R. Leeuwestein, M. Moreaux, S. Bego, R. Coset, I. v.d. Linden R. Leeuwestein, S. Bego, I. v.d. Linden S. Bego, I. v.d. Linden R. Leeuwestein
SPINGRID
SPINGRID
Chapter 1
Introduction
1.1 Purpose
15
The purpose of this document is to specify the software requirements and a logical model of the SPINGRID system in a clear and consistent manner.
1.2
Scope
20
The software will be used to implement a computational grid. This grid is able to execute specic jobs when it receives an executable accompanied by a set of data les. It completely hides the complexity of grid technology which makes the system easy to use. Usability is also increased by oering a web-based front-end for users to access the system.
1.3
This section contains the denitions of all used terms, acronyms and abbreviations in this document.
25
1.3.1
2IP40 Agent
Denitions
The Software Engineering Course ID at Eindhoven University of Technology Program that is used by a resource provider to retrieve and execute jobs. A combination of a set of shell scripts and a set of (URLs to) platform dependent data.
Application
SPINGRID
CHAPTER 1. INTRODUCTION
Application Provider
Dispatcher Job Job Provider Platform Data Platform Data Project Independent Dependent
Project Administrator
Resource Provider
Role Shell Script SPINGRID SPINGRID Software SPINGRID System System Administrator
User
An application provider can oer a set of applications to the SPINGRID system. They can restrict access for projects and for resource providers to their applications. Program that is used by all the users except those in the role of resource provider (who use the agent). A hardware and software infrastructure that enables coordinated resource sharing within dynamic organizations consisting of individuals, institutions and resources. Dutch Space B.V. Either platform dependent data or platform independent data. A data provider can oer a set of platform independent data to the SPINGRID system. They can restrict access for projects and for resource providers to their data. A dispatcher acts like a server and manages the distribution of jobs over the computational grid. Specication of application, platform independent data and auxiliary information to compute the job. Job providers are users that oer jobs to projects. They have to be a member of those particular projects. A set of platform independent les that is used (input, uncompiled executable, etc.) to compute a job. A set of platform dependent les that is required to initialize a job. A collection of jobs with specied access rights to which users (project members) can be assigned. The project administrators administrate projects and can assign and remove job providers, congure a project and restrict access for resource providers. Resource providers are users that oer time on their computers to the SPINGRID system. They can restrict access to their computer for application providers and projects. The actions and activities assigned to or required or expected of a user. One or more (platform dependent) shell-commands. A computational grid using SPINGRID software. Software developed by Dutch Space and TU/e to build computational grids for distributed data processing. The full name of the entire system using SPINGRIDSoftware. The system administrator oversees the entire SPINGRID system and has the right to congure the system, to create and remove projects and assign and remove project administrators. Either a job provider, a data provider, an application provider, a resource provider, a project administrator or a system administrator.
SPINGRID
CHAPTER 1. INTRODUCTION
1.3.2
ADD DDD ESA JSDL SR SRD TU/e UML URL XML
Abbreviations
Architectural Design Document Detailed Design Document European Space Agency Job Submission Description Language Software Requirements Sofware Requirements Document Eindhoven University of Technology Unied Modeling Language Uniform Resource Locator eXtensible Markup Language
1.4
1.4.1
[ESA]
Documents
Reference Documents
ESA Software Engineering Standards (ESA PSS-05-0 Issue 2), ESA Board for Software Standardization and Control (BSSC), 1991 Job Submission Description Language (JSDL) Specication, Version 1.0, November 2005 Architectural Design Document, SPINGRID team, TU/e, not yet available Detailed Design Document, SPINGRID team, TU/e, not yet available
1.4.2
[URD]
Applicable Documents
User Requirements Document, SPINGRID team, TU/e, version 1.0.0, February 2006
30
1.5
Overview
35
This document is structured according to the standard described in [ESA]. In chapter two a description of the system and its environment is given, along with a model that describes the software. Chapter three contains the software requirements. The fourth chapter gives the traceability tables, which link the user requirements to the software requirements, and vice-versa. Finally in Appendix A, state diagrams are presented to illustrate the ow of the SPINGRID system.
SPINGRID
Chapter 2
General Description
2.1
40
There are a lot of current projects which are related to the SPINGRID project. The following subsections will give a general overview of the most relevant ones. These summaries are taken from the corresponding websites.
2.1.1
GridAssist
45
50
GridAssist1 is a software framework that provides benets of computing in a Computational Grid environment to programs that are not inherently Grid-aware, for users who are not experts on Grid technology. GridAssist provides a portal for access to applications, resources and data using high-speed networks, a scenario builder that can be used to construct scenarios consisting of chains of data and applications, and a controller that schedules the jobs on a Computational Grid. Unfortunately the system can not work eectively when behind a rewall. This is the main reason we do not adapt GridAssist.
2.1.2
BOINC
55
BOINC2 is a software platform for distributed computing using volunteered computer resources. The most important feature of BOINC is resource sharing among independent projects, therefore many dierent projects can use BOINC. Projects are independent; each one operates its own servers and databases. Participants can participate in multiple projects; they control which projects they participate in, and how their resources are divided among these projects. When a project is down or has no work, the resources of its participants are divided among other projects.
1 2
http://tphon.dutchspace.nl/grease/ http://boinc.berkeley.edu/
SPINGRID
2.1.3
60
Globus Toolkit
65
The open source Globus Toolkit3 is a fundamental enabling technology for the grid, letting people share computing power, databases, and other tools securely online across corporate, institutional, and geographic boundaries without sacricing local autonomy. The toolkit includes software services and libraries for resource monitoring, discovery, and management, plus security and le management. In addition to being a central part of science and engineering projects that total nearly a half-billion dollars internationally, the Globus Toolkit is a substrate on which leading IT companies are building signicant commercial Grid products.
2.2
70
There are no real predecessors of the SPINGRID project, though Dutch Space has experimented with a project called GridAssist which is related to this project. But GridAssist is built on the Globus Toolkit and is focused on workow computing, whereas the SPINGRID system is not using an existing toolkit to provide the grid and does not support workowmanagement. So calling GridAssist a predecessor of the SPINGRID project is not correct but the two denitely have a relation with each other. Dutch Space is convinced that using grid technology is useful to compute, because they already have been researching it for a couple of years. The goal of this project is to research a new technical view to grid computing, namely agent polling. A comparison between GridAssist, BOINC, Globus Toolkit and SPINGRID can be seen in the following gure: GridAssist X X BOINC X Globus Toolkit SPINGRID X X X
75
80
2.3
85
This document translates all user requirements found in [URD] into software requirements. This was done by reasoning about all user requirements and identifying where they would be used in the product. Next a logical model was made. The logical model gives a simplied description of the product and contains the functionality that was found in the user requirements. The model species the relations between dierent entities in the product. In this stage, implementation terminology must be avoided to ensure that all options of implementations are possible. The implementation that will be chosen for the project will be discussed at a high level in the Architectural Design phase. For more information, refer the Architectural Design Document [ADD] and the Detailed Design Document [DDD].
3
http://www.globus.org/toolkit/
SPINGRID
10
90
2.4
Environment
The environment in which the system runs is generally described in [URD], 2.5.
2.4.1
System requirements
The software programs - client, agent and dispatcher - will be further described in section 2.7, but have the following minimal requirements:
95
General Requirements: Windows XP, Mac OS X or Linux 2.4 (or higher) Sun JRE 1.4.2 or 1.5 Dispatcher: Intel Pentium IV 2 GHz or equivalent
100
2 GB RAM 2 MBit/s network work on Linux dedicated server Furthermore, the dispatcher is able to simultaneously:
105
handle 40 agents handle 10 clients monitor 2 times/minute Agent: Intel Pentium II 300 MHz or equivalent, G4 700 MHz or equivalent
110
128 MB RAM 256 MB Available Harddisk Space handle 3 dispatchers poll 1 time/minute A client does not have any specic requirements besides the general requirements.
SPINGRID
11
115
2.5
2.6
General constraints
2.7
120
Model description
125
The logical model is constructed in an object-oriented way, with the Unied Modeling Language (UML). The logical model is directly derived from the user requirements in [URD]. The high level model can be found in section 2.7.1 which gives an overview how the dierent user groups are divided in the SPINGRID system. The normal operation of the system is described in section 2.7.2. The classes are described in section 2.7.3, 2.7.4 and 2.7.5. These models specify the public interfaces, hence private methods are left out. Note that the displayed relations between classes are not conclusive for the implementation if better solutions are found. The logical model is a tool that makes it possible to reason about dierent solutions.
2.7.1
130
There are three programs in the SPINGRID system which can be seen in gure 2.1: the agent, the client and the dispatcher.
135
The agent is used by the resource provider. All resource provider requirements, as described in the [URD] 4.4, are fullled by the agent. An agent is connected to one or more independent dispatchers. The client is used by the application, data and job provider. All application, data and job providers requirements, as described in [URD] 4.6, 4.7 and 4.8, are fullled by the client. The system admin and project admin also use the client and these requirements ([URD], 4.3 and 4.5) are also fullled by the client. A client is connected to one or more independent dispatchers. The main dierence and therefore the reason to make an agent and a client, is that the agent is communicating with the dispatcher on a regular basis, which is not the case with the client. Communication between the client and dispatcher only exists when a command is given by the user, for example submitting a job. The dispatcher acts like a server and manages the distribution of jobs over the computational grid. A dispatcher is connected to zero or more agents and to zero or more clients. Dispatchers operate independently. SPINGRID Software Requirements Document 1.0.1 12
140
145
2.7.2
System Operations
Figure 2.2 displays the normal operation of the system. The explanation below describes which actions need to take place in order for a job to reach an agent so it can be computed.
150
A (Application Provider Dispatcher): An application provider provides an application to the dispatcher. An application is a combination of a set of shell scripts ( 1) and a set of (URLs to) platform dependent data ( 2). B (Data Provider Dispatcher): A data provider provides URLs to platform independent data ( 3) to the dispatcher.
155
C (Dispatcher Job Provider): A job provider requests a list of applications, which is a combination of shell scripts ( 5) and platform dependent data ( 6), and a list of platform independent data ( 4). A job provider can then make a selection in both of these lists. This selection will be used to describe a job. SPINGRID Software Requirements Document 1.0.1 13
Figure 2.2: System Operations D (Job Provider Dispatcher): The job provider provides a job (with a proper description) to the dispatcher. E (Dispatcher Agent): The dispatcher found a suitable agent to compute the job on. The agent downloads the necessary les (platform independent and dependent data) and runs the shell script. The agent needs to download the platform dependent data from the application provider ( I) and the platform independent data from the data provider ( II). A security system could be implemented here so that the agent can only download the data if he is authorized. F (Agent Output): The agent nished the computation of the job and sends the results (like URLs) to the specied (which is described in the job by the Job Provider) output destination.
170
160
165
Monitoring from the dierent users and changing settings is left out of gure 2.2 because it makes the gure unnecessary complicated.
SPINGRID
14
2.7.3
175
The UML model which can be seen in gure 2.3 is derived from the user requirements. All the classes and their relations are described here. Note that gure 2.3 illustrates the system from the perspective of the dispatcher. The UML model from the other perspective, namely the user perspective, can be found in section 2.7.4.
180
Application Provider An application provider can oer a set of applications to the SPINGRID. They can restrict access for projects and for resource providers to their applications. An application provider can provide zero or more public applications. Application A combination of a set of shell scripts and a set of (URLs to) platform dependent data. An application can be used by zero or more jobs. [SR 5060]: An application has an attribute called Characteristics which contains the characteristics that the application requires.
185
SPINGRID
15
Priority: 2
190
Public Application This class is a subclass of application. A public application is provided by precisely one application provider. When a job provider creates a job it will be possible for him to select an application from all public applications (provided he has been authenticated). Private Application This class is a subclass of application. A private application is provided by precisely one job provider. Note that this does not follow automatically from the UML model, therefore a constraint is introduced:
195
[SR 7110]: (a : a P rivateApplication : (j : j Job : (j.Application = a)) (j1 , j2 : j1 , j2 Job (j1 .Application = a) (j2 .Application = a) : (j1 .JobP rovider = j2 .JobP rovider))) Priority: 1 This also implies that a job provider cannot make a new job with a private application provided by a dierent job provider. Even better, a job provider should never be able to see a private application provided by a dierent job provider. Data Provider A data provider can oer a set of data to the SPINGRID. They can restrict access for projects and for resource providers to their data. A data provider can provide zero or more sets of data.
200
205
Data Data should be read as platform independent data and is provided by one data provider. The data can be used by zero or more jobs and is used as input for an application.
210
Public Data This class is a sub class of data. A public data object is provided by precisely one data provider. When a job provider creates a job it will be possible for him to select a set of data from all public data sets (provided he has been authenticated). Private Data This class is a subclass of data. A private data object is provided by precisely one job provider. Note that this does not follow automatically from the UML model, therefore a constraint is introduced:
215
[SR 7120]: (d : d P rivateData : (j : j Job : (j.Data = d)) (j1 , j2 : j1 , j2 (j1 .Data = d) (j2 .Data = d) : (j1 .JobP rovider = j2 .JobP rovider))) Priority: 1
Job
SPINGRID
16
220
Job Provider Job providers are users that oer a job to a project. They have to be a member of that particular project. A job provider can provide zero or more jobs.
225
Job Specication of application, platform independent data and auxiliary information to compute the job. A job cannot use more than one application and uses zero or more data sets. The zero in 0..1 is inherited from JSDL, in which it is possible that job does not have an application. A job is also distributed zero or more times and is always provided by one job provider. [SR 7070]: A job has an attribute called JobDenition which contains a full description of the job. Priority: 1
230
Distribute A job needs to be distributed to a resource in order to complete the job. Note that the link between a distribute- and resource-object is only a weak link because a resource can disappear from the grid at any time. Resource A resource is a computer which can be used by the grid to execute jobs. A resource can have zero or more distributions. [SR 3011]: A resource has an attribute called Characteristics which contains the characteristics of the resource. Priority: 2
235
240
Project A project is a collection of jobs with specied access rights to which users (project members) can be assigned:
245
Project Admin The project admin administrates projects and can assign and remove job providers, congure a project and restrict access for resource providers. A project admin administrates at least one project.
250
SPINGRID
17
255
System Admin The system admin is the administrator of the SPINGRID. He can authorize and unauthorize users as application provider, data provider, resource provider and project admin. It is also possible for the system admin to add and remove projects and to change global settings. There is only one instance of the system admin and therefore is left out of the UML model. [SR 7150]: The SPINGRID shall have one system admin. Priority: 1
260
2.7.4
265
Figure 2.4 illustrates the commands that the client program can send to the dispatcher. The commands are categorized by type of user. Obviously, there are some commands that are available to all the users. Each command will have one or more software requirements, which will be described in section 3.1.1.
2.7.5
JSDL class
270
In the SPINGRID system, it is necessary to describe a job. A standardized language is a good solution because it saves time and it is easy to reuse. JSDL has been chosen because this option was suggested by the customer and it was considered adequate for the SPINGRID
SPINGRID
18
system. The Job Submission Description Language (JSDL) is a language for describing the requirements of computational jobs for submission to resources, particularly in Grid environments, though not restricted to the latter. The JSDL language contains a vocabulary and normative XML Schema that facilitate the expression of those requirements as a set of XML elements. JSDL is illustrated in gure 2.5 and a description can been found in the text below. The requirements of JSDL can been found in section 3.1.2. Note that a lot of requirements have a low priority and thus a lot of attributes do not need to be implemented. JSDL fully supports this because not implemented attributes are left undened. More detailed information of JSDL can be found in [JSDL]. [SR 7140]: JSDL is partly implemented as the job description language. Priority: 1
285
275
280
JobDefinition
+JobDescription
JobIdentification
+Jobname +Description +JobAnnotation +JobProject 1
JobDescription
+JobIdentification +Application +Resources +DataStaging 0..1
Application
+ApplicationName +ApplicationVersion +Description
0..1
0..*
Resources
+CandidateHosts +FileSystem +ExclusiveExection +OperatingSystem +CPUArchitecture +IndividualCPUSpeed +IndividualCPUCount +IndividualNetworkBandwidth +IndividualPhysicalMemory +IndivualVirtualMemory +IndividualDiskspace +TotalCPUTime +TotalCPUCount +TotalPhysicalMemory +TotalVirtualMemory +TotalDiskSpace +TotalResourceCount
DataStaging
+Filename +FileSystemName +CreationFlag +DeleteOnTermination +Source +Target
JobDenition This element describes the job and its requirements. It contains a JobDescription section. It is the root element of the JSDL document.
SPINGRID
19
JobDescription This element describes the job and its requirements. It contains JobIdentication, Application, Resources, and DataStaging elements. JobIdentication This element contains all elements that identify the job: JobName, Description, JobAnnotation, and JobProject. If this element is not present then its value, including all of its sub-elements, is undened. Application This element describes the application and its requirements. It contains ApplicationName, ApplicationVersion and Description elements. It serves as a high level generic container that is intended to hold more specic application denitions. One such denition is that of the POSIX compliant normative extension given in [JSDL], 8.1.1. Used without any extension, it uniformly describes an application by its name and version number. If this is not present then this job denition does not dene an application to execute. The JSDL document could be dening a data staging job, or a null job. See also [JSDL], 6.3.2 and 8.1.2. Resources This element contains the resource requirements of the job. If this element is not present then the consuming system may choose any set of resources to execute the job. Any combination of the listed resources sub-elements may be present in the resources element of a JSDL document. In particular, any combination of Individual, and Total elements of the same or dierent types may be present in a resources element. But note that all elements present in a JSDL document must be satised for the entire document to be satised. (See also [JSDL], 4) DataStaging Data staging denes the les that should be moved to the execution host (stage in) and the les that should be moved from the execution host (stage out). Files are staged in before the job starts executing. Files are staged out after the job terminates. If a directory is specied in the FileName element or Source element then a recursive copy will be performed. If the execution environment does not support recursive copying an error should be reported. The specication of this error, including how or when it is raised, is beyond the scope of the JSDL specication. It is possible to stage out the same le more than once by specifying the same FileName (on the same FileSystem) in multiple stage out DataStaging elements.
320
290
295
300
305
310
315
It is also possible, but deprecated, to use the same FileName in separate DataStaging elements to stage in to the same local le. The result is unspecied. The CreationFlag determines whether the staged le should append or overwrite an existing le. This element must be present in a DataStaging element.
325
SPINGRID
20
330
The DeleteOnTermination element may be used to delete a le after the job terminates. If the le is to be staged out the deletion is done after the stage out completes. A le may be deleted even if it was not created by the job. For example, suppose that a le exists on the execution host and the CreationFlag is set to dontOverwrite. This le will still be deleted if DeleteOnTermination is true provided the job has the appropriate rights. The ordering of the DataStaging elements in the JSDL document is not signicant. That is, the order of the DataStaging elements in the document does not imply any ordering, besides the ordering already mentioned concerning job execution and carrying out the dierent stage in (or stage out) operations. More complex le transfers, for example, conditional transfers based on job termination status or pre-warming of grid-enabled le-systems are out of scope. Permission and access control for the staged les should be handled by the implementation and is out of scope of the JSDL specication. More complicated deployment scenarios than the le staging described here, for example, deployment and conguration of the execution environment itself, are out of scope of the JSDL specication.
335
340
345
SPINGRID
21
Chapter 3
Specic requirements
In this chapter all requirements and constraints of the product to be developed are given except a few requirements which can be found in chapter 2. The product will adhere to these requirements. Each of the requirements has a unique identier so it can be traced throughout the entire project. Every requirement is accompanied by a priority level. This priority level is mapped on integers from 1 to 5, where 1 stands for the highest priority and 5 stands for the lowest priority. Software requirements marked with priority level 1 and 2 will be implemented regardless of resources. Software requirements marked with priority level 3, 4 and 5 will only be implemented in priority order if time allows.
350
355
3.1
3.1.1
User
360
Functional requirements
User class requirements
Methods LogIn() [SR 8000] The user can log in after which he can preform his actions accordingly to his role(s). Priority: 1
365
Job Provider Methods Oer(Job) [SR 7010] Oers a job to the system. Priority: 1 [SR 7012] A job provider can provide a private application. SPINGRID Software Requirements Document 1.0.1 22
370
375
Priority: 3 [SR 7013] A job provider can provide private data. Priority: 2 Remove(Job) [SR 7011] Removes a job from the system. Priority: 2
380
GetResult(Job):Result [SR 7030] Returns the results of a completed job. Priority: 3 GetJobList():JobList [SR 7040] Returns a list of the providers jobs. Priority: 2 GetApplications():ApplicationList [SR 7020] Returns a list of applications available to the provider. Priority: 2
385
390
Application Provider
395
Methods Add(Application) [SR 5010] Provides an application to the system. Priority: 1 Remove(Application) [SR 5011] Removes an application from the system. Priority: 2 AddToProject(Application, Project) [SR 5020] Adds a project on which the application may be used. Priority: 2 RemoveFromProject(Application, Project) [SR 5021] Removes a project on which the application may be used. Priority: 2
400
405
410
SPINGRID
23
ApproveJobProvider(JobProvider) [SR 5070] Allows a job provider to use the applications of the application provider. Priority: 2
415
DisapproveJobProvider(JobProvider) [SR 5071] Disallows a job provider to use the applications of the application provider. Priority: 2 GetApplicationList():ApplicationList [SR 5030] Returns a list of the providers applications. Priority: 3 GetUsing(Application):ProjectList [SR 5050] Returns a list of projects where the application is used. Priority: 3 GetTotalUsed(Application, Project):Integer [SR 5040] Returns the total number of times the application has been used in the project. Priority: 3
420
425
430
Data Provider
435
Methods Add(Data) [SR 6010] Provides platform independent data to the system. Priority: 1 Remove(Data) [SR 6011] Removes platform independent data from the system. Priority: 1 AddToProject(Data, Project) [SR 6020] Adds a project on which the platform independent data may be used. Priority: 2 RemoveFromProject(Data, Project) [SR 6021] Removes a project on which the platform independent data may be used. Priority: 2
440
445
450
SPINGRID
24
455
ApproveJobProvider(JobProvider) [SR 6060] Allows a job provider to use the platform independent data of the data provider. Priority: 2 DisapproveJobProvider(JobProvider) [SR 6061] Disallows a job provider to use the platform independent data of the data provider. Priority: 2 GetDataList():DataList [SR 6040] Returns a list of providers platform independent data. Priority: 3
460
465
GetUsingProjects(Data):ProjectList [SR 6030] Returns a list of projects which use the platform independent data. Priority: 3 GetUsingApps(Data):ApplicationList [SR 6050] Returns a list of applications which use the platform independent data. Priority: 4
470
Resource Provider
475
Methods Oer() [SR 3010] Oers and identies the resource to the system. Priority: 1
480
AddProject(Project,Resource) [SR 3020] Adds a project on which the resource may be used. Priority: 2 RemoveProject(Project,Resource) [SR 3021] Removes a project on which the resource may be used. Priority: 2 AddInterval(Interval,Resource) [SR 3030] Adds an interval when the resource can be used. Priority: 5
485
490
SPINGRID
25
495
RemoveInterval(Interval,Resource) [SR 3031] Removes an interval when the resource can be used. Priority: 5 ApproveApplication(Application,Resource) [SR 3050] Allows an application to be executed on the resource. Priority: 2
500
DisapproveApplication(Application,Resource) [SR 3051] Disallows an application to be executed on the resource. Priority: 2 ApproveApplicationProvider(ApplicationProvider,Resource) [SR 3060] Allows the applications of an application provider to be executed on the resource. Priority: 2 DisapproveApplicationProvider(ApplicationProvider,Resource) [SR 3061] Disallows the applications of an application provider to be executed on the resource. Priority: 2 ApproveJobProvider(JobProvider,Resource) [SR 3070] Allows a job provider to provide his jobs to the resource. Priority: 2 DisapproveJobProvider(JobProvider,Resource) [SR 3071] Disallows a job provider to provide his jobs to the resource. Priority: 2 GetUsing(Resource):ProjectList [SR 3040] Returns a list of projects where the resource is used. Priority: 4
505
510
515
520
525
ApproveJobProvider(User,Project) [SR 4010] Allows the user to provide jobs for the project. If the user isnt already a job provider then he will get the role of job provider. SPINGRID Software Requirements Document 1.0.1 26
Priority: 1 DisapproveJobProvider(JobProvider,Project) [SR 4011] Disallows the job provider to provide jobs for the project. If the job provider was only allowed to provide jobs for the project then he will loose the role of job provider. Priority: 1 ApproveResourceProvider(ResourceProvider,Project) [SR 4020] Allows a resource provider to process jobs of the specic project. Priority: 2 DisapproveResourceProvider(ResourceProvider,Project) [SR 4021] Disallows a resource provider to process the specic project. Priority: 2 ApproveData(Data,Project) [SR 4030] Allows platform independent data to be used for a specic project. Priority: 2 DisapproveData(Data,Project) [SR 4031] Disallows platform independent data to be used for a specic project. Priority: 2
555
535
540
545
550
ApproveDataProvider(DataProvider,Project) [SR 4032] Allows a data provider to provide data for a specic project. Priority: 2 DisapproveDataProvider(DataProvider,Project) [SR 4033] Disallows a data provider to provide data for a specic project. Priority: 2 ApproveApplication(Application,Project) [SR 4040] Allows an application to be used for a specic project. Priority: 2 DisapproveApplication(Application,Project) [SR 4041] Disallows an application to be used for a specic project. Priority: 2
560
565
570
SPINGRID
27
ApproveApplicationProvider(ApplicationProvider,Project) [SR 4042] Allows an application provider to provide applications for a specic project. Priority: 2
575
DisapproveApplicationProvider(ApplicationProvider,Project) [SR 4043] Disallows an application provider to provide applications for a specic project. Priority: 2 RemoveJob(Job,Project) [SR 4060] Removes a job from a specic project. Priority: 2 AllowOwnApplication(JobProvider) [SR 4050] Allows a job provider to provide private applications. Priority: 2 DisallowOwnApplication(JobProvider) [SR 4051] Disallows a job provider to provide private applications. Priority: 2 GetJobList(Project):JobList [SR 4070] Returns a list of all jobs in the project. Priority: 2
595
580
585
590
System Admin Methods AddApplicationProvider(User) [SR 2010] Authorizes the user to be an application provider. Priority: 2 RemoveApplicationProvider(ApplicationProvider) [SR 2011] Unauthorizes the user to be an application provider. Priority: 2 AddDataProvider(User) [SR 2020] Authorizes the user to be a data provider. Priority: 3
610
600
605
SPINGRID
28
RemoveDataProvider(DataProvider) [SR 2021] Unauthorizes the user to be a data provider. Priority: 3 AddProjectAdmin(Project,User) [SR 2030] Authorizes the user to be a project admin of a specic project. Priority: 1 RemoveProjectAdmin(Project,ProjectAdmin) [SR 2031] Unauthorizes the user to be a project admin of a specic project if at least one other project admin is authorized to the project. Priority: 2 AddProject(User) [SR 2040] Adds a project to the system and makes the user project admin of the project. If the user isnt already a project admin then he will get the role of project admin. Priority: 1 RemoveProject(Project) [SR 2041] Removes a project from the system. If there are job providers who where only allowed to provide jobs for the project then they will loose the role of job provider. If the project admin was only project admin of the project then he will loose the role of project admin. Priority: 1 ChangeSystemSettings() [SR 2050] Changes the settings of the system. Priority: 1 GetJobList():JobList [SR 2060] Returns a list of all jobs in the system. Priority: 2 GetProjectAdmins(Project):ProjectAdminList [SR 2070] Returns a list of all project admins authorized to a specic project. Priority: 2 GetApprovedApplicationProviders(Project):ApplicationProviderList [SR 2080] Returns a list of application providers authorized to a specic project. Priority: 2
615
620
625
630
635
640
645
650
SPINGRID
29
GetApprovedDataProviders(Project):DataProviderList [SR 2090] Returns a list of data providers authorized to a specic project. Priority: 3
655
GetResourceCalculations(Project):CalculationList [SR 2100] Returns a list of resources and which jobs they have calculated in a specic project. Priority: 3
660
3.1.2
JobIdentication Attributes
665
670
JobName [SR 1210] This element is a string that may be specied by a user to name the job specied in the JSDL document. It may not be unique to a particular JSDL document, which means that a user may specify the same JobName for multiple JSDL documents. If this element is not present then it is not dened. Priority: 1 Description [SR 1220] This element provides descriptive, human readable, information about its containing complex element. It may be present as a sub-element of a number of other JSDL elements: JobIdentication, Application, FileSystem, etc. If this element is not present as a sub-element then no description is dened. Priority: 3 JobAnnotation [SR 1230] This element is a string that may be specied by a user to annotate the job. If this element is not present then it is not dened. In contrast to the Description element, JobAnnotation may contain information that is intended for use by the consuming system. Priority: 3 JobProject [SR 1240] This element is a string specifying the project to which the job belongs. The project could be used by accounting systems or access control systems. The interpretation of the JobProject elements is left to the implementation of the consuming system. If this element is not present then it is not dened. Priority: 1 Application
675
680
685
690
SPINGRID
30
Attributes ApplicationName [SR 1310] This element is a string that denes the name of the application and is used to identify the application independent of the location of its executable on a host or system. If this is not present then it is not dened and a null job is assumed unless there is an application extension element present that denes the application to execute. Priority: 1 ApplicationVersion [SR 1320] This element is a string that denes the version of the application to execute. The consuming system must use exact textual match to select the version of the application. If this element is not present then it is not dened and any version of the application may be executed. Priority: 1 Description [SR 1330] This element provides descriptive, human readable, information about its containing complex element. It may be present as a sub-element of a number of other JSDL elements: JobIdentication, Application, FileSystem, etc. If this element is not present as a sub-element then no description is dened. Priority: 3 Resources Attributes CandidateHosts [SR 1410] This element is a complex type specifying the set of named hosts which may be selected for running the job. If this element is present then one or more hosts from the set must be chosen to run the job. If this is not present then it is not dened. A named host may be a single host (e.g., a machine name), a logical group of hosts (e.g., a named logical group or cluster), a virtual machine, and so on. Priority: 3 FileSystem [SR 1411] This element describes a lesystem that is required by the job. It is a complex type that may contain the location where the lesystem should be made available, the required amount of disk space and the type of the lesystem. The lesystem may be local to the resource (e.g., on a local disk), or may be remote (e.g., an NFS mount). Priority: 3 ExclusiveExecution [SR 1412] This is a boolean that designates whether the job must have exclusive access to the resources allocated to it by the consuming system. If this is not present then it is not dened and the consuming system may choose any value. Priority: 3
695
700
705
710
715
720
725
730
SPINGRID
31
735
OperatingSystem [SR 1413] This is a complex type that denes the operating system required by the job. It may contain Description, OperatingSystemVersion, and OperatingSystemType elements. If this is not present then it is not dened and the consuming system may choose any value. Priority: 2 CPUArchitecture [SR 1414] This element is a string specifying the CPU architecture required by the job in the execution environment. If this is not present then it is not dened and the consuming system may choose any value. Values not dened by the JSDL ProcessorArchitectureEnumeration (see [JSDL], 5.2.1) may be used by specifying the special token other and including the value as an extension (see [JSDL], 7.3). See also examples below. Priority: 2 IndividualCPUSpeed [SR 1415] This element is a range value specifying the speed of each CPU required by the job in the execution environment. The IndividualCPUSpeed is given in multiples of hertz. If this is not present then it is not dened and the consuming system may choose any value. Priority: 2 IndividualCPUTime [SR 1416] This element is a range value specifying the total number of CPU seconds required on each resource to execute the job. If this is not present then it is not dened and the consuming system may choose any value. Priority: 3 IndividualCPUCount [SR 1417] This element is a range value specifying the number of CPUs for each of the resources to be allocated to the job submission. If this is not present then it is not dened and the consuming system may choose any value. Priority: 2 IndividualNetworkBandwidth [SR 1418] This element is a range value specifying the bandwidth requirements of each individual resource. The amount is specied as multiple of bits per second. If this is not present then it is not dened and the consuming system may choose any value. Priority: 2 IndividualPhysicalMemory [SR 1419] This element is a range value specifying the amount of physical memory required on each individual resource. The amount is given in bytes. If this is not present then it is not dened and the consuming system may choose any value. Priority: 2 IndividualVirtualMemory [SR 1420] This element is a range value specifying the required amount of virtual memory for each of the resources to be allocated for this job submission. The amount is SPINGRID Software Requirements Document 1.0.1 32
740
745
750
755
760
765
770
775
given in bytes. If this is not present then it is not dened and the consuming system may choose any value. Priority: 3 IndividualDiskSpace [SR 1421] This is a range value that describes the required amount of disk space for each resource allocated to the job. The amount of disk space is given in bytes. If this is not present then it is not dened and the consuming system may choose any value. Priority: 2 TotalCPUTime [SR 1422] This element is a range value specifying total number of CPU seconds required, across all CPUs used to execute the job. If this is not present then it is not dened and the consuming system may choose any value. Priority: 3 TotalCPUCount [SR 1423] This element is a range value specifying the total number of CPUs required for this job submission. If this is not present then it is not dened and the consuming system may choose any value. Priority: 3 TotalPhysicalMemory [SR 1424] This element is a range value specifying the required amount of physical memory for the entire job across all resources. The amount is given in bytes. If this is not present then it is not dened and the consuming system may choose any value. Priority: 3 TotalVirtualMemory [SR 1425] This element is a range value specifying the required total amount of virtual memory for the job submission. The amount is given in bytes. If this is not present then it is not dened and the consuming system may choose any value. Priority: 3 TotalDiskSpace [SR 1426] This is a range value that describes the required total amount of disk space that should be allocated to the job. The amount of disk space is given in bytes. If this is not present then it is not dened and the consuming system may choose any value. Priority: 3 TotalResourceCount [SR 1427] This element is a range value specifying the total number of resources required by the job. If this is not present then it is not dened and the consuming system may choose any value. Priority: 3 DataStaging Attributes SPINGRID Software Requirements Document 1.0.1 33
780
785
790
795
800
805
810
815
820
FileName [SR 1510] This element is a string specifying the local name of the le (or directory) on the execution host. The FileName must be a relative path (see [JSDL], 6.5.3) and the only delimiter allowed must be /. In other words the FileName must NOT start with an initial /. The FileName may be a hierarchical directory path of the form < directory > / < directory > /.../ < name >. The < name > may be either a directory or a le. Priority: 1 FileSystemName [SR 1520] If the FileSystemName is specied then the FileName is relative to the specied FileSystem declaration referenced by the name. In this case there must also be a FileSystem element with the same name. If the FileSystemName element is not present then it is not dened. If the FileSystemName is not dened then the FileName is relative to the working job directory as determined by the consuming system. Note that JSDL extensions may allow dening a value for the working job directory. See, for example, the WorkingDirectory element denition ([JSDL], 8.1.7) of the Executables on POSIX Conformant Hosts extension. Priority: 3 CreationFlag [SR 1530] This element determines whether the le created on the local execution system can overwrite or append to an existing le. A typical value for this element, expected to be commonly supported, is overwrite. Priority: 3 DeleteOnTermination [SR 1540] This is a boolean that determines whether the le should be deleted after the job terminates. If true the le is deleted after the job terminates or after the le has been staged out. Otherwise the le remains, subject to the persistency of the FileSystem it is on. If not present, behavior is unspecied and depends on the consuming system. Priority: 3 Source [SR 1550] A Source element contains the location of the le or directory on the remote system. This le or directory must be staged in from the location specied by the (optional) URI before the job has started. If this element is not present then the le does not have to be staged in. Priority: 1 Target [SR 1560] A Target element contains the location of the le or directory on the remote system. This le or directory must be staged out to the location specied by the (optional) URI after the job has terminated. If this element is not present then the le or directory does not have to be staged out. Priority: 1
825
830
835
840
845
850
855
SPINGRID
34
3.2
Non-functional Requirements
[SR 9000]: The SPINGRID system shall implement a computational grid. Priority: 1
860
[SR 9010] The system requirements are as described in section 2.4.1. Priority: 2 [SR 9020]: The language used in the product will be English. Priority: 1
865
[SR 9030]: Interaction with the system will be provided by a command-line interface. Priority: 1 [SR 9031]: Interaction with the system will be provided by a web-based user interface. Priority: 4 [SR 9040]: The SPINGRID system will be able to process at least 40 executing jobs at a time. Priority: 1
875
870
[SR 9050]: The SPINGRID system will select the resource that will be used for processing a job. Priority: 1 [SR 9060]: The SPINGRID system shall only send jobs to resources if their characteristics at least match the characteristics required by the job and application used in the job. Priority: 2 [SR 9070]: The SPINGRID system shall provide a trust model as described in appendix A of [URD]. Priority: 4 [SR 9080]: The (un-)installation of the SPINGRID system will not require a computer expert. Priority: 1
880
885
890
[SR 9090]: When there are at least 2 dispatchers in the system and one of them disappears, the system will continue without malfunction. Priority: 5 [SR 9100]: When all the dispatchers in the system are down and one of them is restarted, the system will continue without malfunction.
895
SPINGRID
35
Priority: 4 [SR 9110]: If one of the resources disappears while performing a job, the system will requeue the job. Priority: 1 [SR 9120]: A job will be declared failed after it has been requeued for a congurable number of times. Priority: 4
905
900
[SR 9130]: The functionality of the product will not be restricted when agents or clients are behind a rewall (which does not restrict trac over port 80) and/or NAT. Priority: 2
910
[SR 9140]: The SPINGRID system will be implemented in Java according to (a tailored version of) the BSSC Java Coding Standards. Priority: 2 [SR 9150]: The system will be able to run for at least a week without interruption. Priority: 2 [SR 9160]: All programs in the SPINGRID system will log what they are doing. Priority: 2
915
920
[SR 9170]: The total time in which none of the dispatchers responds will not exceed one hour a day. Priority: 2 [SR 9180]: The SPINGRID system is able to sent a notication to the job provider when a job is completed, failed or removed. Priority: 2
925
SPINGRID
36
Chapter 4
UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR SPINGRID
2010 2020 2030 2040 2050 2060 2070 2080 2090 2100 2110 2114 2120 2130 2140 2150
UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR
3010 3020 3030 3040 3050 3060 3062 3070 3072 3074 3080 4010 4020 4030 4040 4042 4050 4060 4070 4080 4090 5010 5012 5020 5030 5040 5042 5050 5052 5054 5060 6010 6012 6020 6030 6032 6040 6042 6050 7010 7020 7040 7050 7052
SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR
3010 3010 3020, 3030, 3040 3060, 3050, 9080 3011 3070, 9010 7130 4010 4011 4020, 4030, 4040, 4050, 4060 4070 9010 5010 5011 9010 5020, 5050 5030 5040 5060 5070, 9010 6010 6011 6020, 6030 6040 6050 6060, 9010 7010 7020 7012, 7013, 1410
SR 3071
SR SR SR SR
SR 5021
SR 5071
SR 6021
SR 6061
SR 7110 SR 7120
SPINGRID
38
UR UR UR UR
UR UR UR UR UR UR UR UR UR UR UR UR UR
7090 7100 7110 7120 8010 8020 8030 8040 8050 8060 8070 8080 8090
SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR
7030 7011 7040 7140, SR 1414, SR 1419, SR 1424, SR 9180 9180 9180 9010 9090 9100 9110 9120 9130 9140 9150 9160 9170
7070, SR 1411, SR 1412, SR 1413, 1415, SR 1416, SR 1417, SR 1418, 1420, SR 1421, SR 1422, SR 1423, 1425, SR 1426, SR 1427
Software Requirements SR 1410 SR 1411 SR 1412 SR 1413 SR 1414 SR 1415 SR 1416 SR 1417 SR 1418 SR 1419 SR 1420 SR 1421 SR 1422 SR 1423 SR 1424 SR 1425 SR 1426 SR 1427 SR 2010 SR 2011 SR 2020 SR 2021 SPINGRID
User Requirements UR 7052 UR 7082, UR 1030 UR 7082, UR 1030 UR 7082, UR 1030 UR 7082, UR 1030 UR 7082, UR 1030 UR 7082, UR 1030 UR 7082, UR 1030 UR 7082, UR 1030 UR 7082, UR 1030 UR 7082, UR 1030 UR 7082, UR 1030 UR 7082, UR 1030 UR 7082, UR 1030 UR 7082, UR 1030 UR 7082, UR 1030 UR 7082, UR 1030 UR 7082, UR 1030 UR 2020 UR 2050 UR 2030 UR 2060 39
SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR
2030 2031 2040 2041 2050 2060 2070 2080 2090 2100 3010 3011 3020 3021 3030 3031 3040 3050 3051 3060 3061 3070 3071 4010 4011 4020 4021 4030 4031 4032 4033 4040 4041 4042 4043 4050 4051 4060 4070 5010 5011 5020 5021 5030
UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR
2040 2070 2080 2090 2100 2110 2114 2120 2130 2140 3020, UR 3010 3072 3030 3030 3040 3040 3050 3062 3062 3060 3060 3074 3074 4020 4030 4040 4040 4042 4042 4042 4042 4050 4050 4050 4050 4060 4060 4070 4080 5010 5012 5030 5030 5042
SPINGRID
40
SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR SR
5040 5050 5060 5070 5071 6010 6011 6020 6021 6030 6040 6050 6060 6061 7010 7011 7012 7013 7020 7030 7040 7070 7110 7120 7130 7140 7150 8000 9000 9010 9020 9030 9031 9040 9050 9060 9070 9080 9090 9100 9110 9120 9130
UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR UR
5050 5040 5052 5054 5054 6010 6012 6020 6020 6030 6032 6040 6042 6042 7010, 7070 7040 7050 7020 7060 7080 7082, 7040 7050 4010 7082, 2010 0080 0010 3080, 5060, 0020 0030 0040 0050 0060 0070 0080 3070 8010 8020 8030 8040 8050
UR 1020
UR 1030
UR 6050,
SPINGRID
41
SR SR SR SR SR
UR UR UR UR UR
SPINGRID
42
930
Appendix A
Petri-nets
A.1
A.1.1
Dispatcher
Top Level (gure A.1.1)
Figure A.1: Top Level Startup: When the dispatchers starts, it enters a state in which it waits for incoming requests from clients and agents. Shutdown: This processors symbolizes two methods to shutdown the dispatcher:
940
935
The dispatcher is shutdown by a user on the machine on which the dispatcher is running. The dispatcher is shutdown by a remote command from the system admin. This command does not appear in the Petri-net for sake of reduction of complexity.
SPINGRID
43
APPENDIX A. PETRI-NETS
945
A.1.2
Figure A.2: Agent Communication Subnet Start Session: When an agent connects to the dispatcher a session is started. Request Job: The agent tells the dispatcher it is ready to receive a job. Send Job: The dispatcher accepts the request and sends a job to the agent.
955
950
Reject Request: The dispatcher rejects the request for a job. The agent might have been banned. No Jobs Available: The dispatcher informs the agent that there are currently no jobs available.
960
Working Message / Accept Message: The agent informs the dispatcher is it still working on a job. SPINGRID Software Requirements Document 1.0.1 44
APPENDIX A. PETRI-NETS
965
Send Result / Accept Result: The agent sends the result to the dispatcher. It is possible that the result should be send somewhere else. In this case, the agent informs the dispatcher that it did.
A.1.3
Figure A.3: Client Communication Subnet Receive Command: A request is received from a client. Accept Command: The received command is a known command. SPINGRID Software Requirements Document 1.0.1 45
970
APPENDIX A. PETRI-NETS
975
Reject Command: The received command is not known. Accept Login: The authentication-data that was sent along with the command is correct.
980
Reject Login: The above-mentioned data is incorrect. Access Granted: The required access level to execute the command is matched to the access level of the user that sent the command. In this case, access to the command is granted to the user. Access Denied: The user does not have the right to execute the command that he sent.
990
985
A.1.4
The Submit Job, List Jobs, Remove Job, List Applications and Get Job Result processors represent the commands that are available to a job provider. These processors will not be listed below as their function is trivial.
995
The Send Joblist, Send AppList, Accept Private App, Accept Private Data processors represent the sending of the requested result to the client. These processors will also not be listed. Accept Job: The job that was sent with the Submit job command is in the right format (JSDL).
1000
Reject Job: There is an error in the job. For example, it does not match the right format (JSDL). Accept Remove: The job can be removed.
1005
Reject Remove: The job can not be removed (for example, it does not exist).
SPINGRID
46
APPENDIX A. PETRI-NETS
A.1.5
1010
The List Data, Provide Public Data, Remove Public Data and Change Data Access Rights processors represent the commands that are available to a data provider. These processors will not be listed below as their function is trivial. The Send Datalist and Accept Public App processors represent the sending of the requested result to the client. These processors will also not be listed.
1015
Accept Remove: The data can be removed. Reject Remove: The data can not be removed (for example, it does not exist).
1020
Accept Changes: The given changes are acceptable. Reject Changes: The given changes are not acceptable. For example, the changes are inconsistent.
1025
SPINGRID
47
APPENDIX A. PETRI-NETS
A.1.6
1030
The application provider subnet is identical to the data provider subnet, except for the processor names. The processors in the application provider subnet have similar functionality to their equivalents in the data provider subnet. Therefore, the processors in the application provider subnet will not be listed.
A.1.7
1035
The List Jobs, Remove Job, Add Job Provider, Change Job Provider Settings, Remove Job Provider, Change Project Access Rights and Change Project Settings processors represent the commands that are available to a project admin. These processors will not be listed below as their function is trivial. The Send JobList, Accept Removal and Accept Settings processors represent the sending of the requested result to the client. These processors will also not be listed. Accept Request (Add Job Provider):
SPINGRID
48
APPENDIX A. PETRI-NETS
1040
The parameters that were sent with the Add Job Provider-command are acceptable. Reject Request (Add Job Provider): The parameters are unacceptable. For example, the job provider is already trusted in the project.
1045
Accept Request (Remove Job Provider): The job provider can be removed. Reject Request (Remove Job Provider): The job provider can not be removed. For example, the job provider does not exist. Accept Changes: The proposed changes are acceptable.
1055
1050
Reject Changes: The proposed changes are unacceptable. For example, they are inconsistent.
SPINGRID
49
APPENDIX A. PETRI-NETS
A.1.8
1060
The processors on the rst row (List Jobs etc.) represent the commands that are available to the system admin. These processors will not be listed below as their function is trivial. The processors on the last row that are not Accept-processors represent the sending of the requested result to the client. These processors will also not be listed. The Accept-processors represent the negation of the corresponding Reject-processors. These processors will also not be listed.
1065
Reject Request (Add User): The parameters of the sent command are unacceptable. For example, a user with the same username already exists. Reject Request (Remove User): The specied user can not be removed. For example, the user does not exist. Reject Request (Add Role): The specied user can not received the specied role. For example, the user already has that role.
1070
1075
Reject Request (Remove Role): The role can not be removed from the specied user (parameter). For example, the user does not have that role.
SPINGRID
50
APPENDIX A. PETRI-NETS
1080
Reject Request (Add Project): It is not possible to create a project with the specied name. For example, a project with the same name already exists. Reject Request (Remove Project): The project can not removed. For example, it does not exist.
1085
A.2
1090
Start up: When the agent starts, it sends its system specication to the dispatcher and it receives a sessionID from the dispatcher. Now the agent enters a state in which it is waiting for a job to nish calculating. Shut down: The agent software can only be shut down from the waiting state. When a resource provider wants to shut down while a job is being calculated, the calculation will be interrupted (See the Failed processor) and the dispatcher will be notied. Job request: This processor noties the dispatcher that the agent is waiting for work.
1095
1100
Request rejected: When a dispatcher does not have a suitable job for the agent, the job request will be rejected. The agent will now return to the waiting state. SPINGRID Software Requirements Document 1.0.1 51
APPENDIX A. PETRI-NETS
1105
Job description received: When a dispatcher had a suitable job for the agent, the job description will be send to the agent. When the agent has received the job description, it starts downloading the required les. Inform dispatcher: While calculating a job, the agent informs the dispatcher, that it is still running and calculating the job. Notication sent: The dispatcher has been informed and the agent will return to the waiting state.
1110
1115
SPINGRID
52
APPENDIX A. PETRI-NETS
1120
Failed: The agent can stop the calculation of a job. Normally this will not happen, but if there is something wrong with a job this might happen. A job will also fail when a resource provider wants to shut down the agent software. File download completed: When all les have been downloaded, the agent starts the calculation of the job.
1125
Calculation completed: When the calculation is completed, the agent starts sending the result to the location specied in the job description. Result sent: Now is the job completed, the dispatcher will be informed that the job is completed. The agent will return to the waiting state.
1130
A.3
Figure A.10: Client Send command ....: This processor will send the input from the commandline to the dispatcher. Print result: This processor will print the messages, produced by the dispatcher, on the screen.
1140
1135
Command completed / failed: After the command completes or fails, the program exits.
SPINGRID
53