Software Requirements Document PDF
Software Requirements Document PDF
Project Group 1
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 Re-
quirements Document (SRD) from the Software Engineering Standard, as set by the European
Space Agency [ESA].
1 Introduction 6
1.1 Purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 List of definitions and abbreviations . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.1 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.2 Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.1 Reference Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.2 Applicable Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2 General Description 9
2.1 Relation to current projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 GridAssist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.2 BOINC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.3 Globus Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Relation to predecessor and successor projects . . . . . . . . . . . . . . . . . . 10
2.3 Function and purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4 Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4.1 System requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5 Relation to other systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.6 General constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.7 Model description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.7.1 High level model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.7.2 System Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3 Specific requirements 22
3.1 Functional requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.1 User class requirements . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.2 JSDL class requirements . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2 Non-functional Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
A Petri-nets 43
A.1 Dispatcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
A.1.1 Top Level (figure A.1.1) . . . . . . . . . . . . . . . . . . . . . . . . . . 43
A.1.2 Agent Communication Subnet (figure A.1.2) . . . . . . . . . . . . . . 44
A.1.3 Client Communication Subnet (figure A.1.3) . . . . . . . . . . . . . . 45
A.1.4 Job Provider Commands Subnet (figure A.1.4) . . . . . . . . . . . . . 46
A.1.5 Data Provider Commands Subnet (figure A.1.5) . . . . . . . . . . . . 47
A.1.6 Application Provider Commands Subnet (figure A.1.6) . . . . . . . . . 48
A.1.7 Project Admin Commands Subnet (figure A.1.7) . . . . . . . . . . . . 48
A.1.8 System Admin Commands Subnet (figure A.1.8) . . . . . . . . . . . . 50
A.2 Agent (figure A.2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
A.3 Client (figure A.3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
10
Introduction
1.1 Purpose
The purpose of this document is to specify the software requirements and a logical model of
15 the SPINGRID system in a clear and consistent manner.
1.2 Scope
The software will be used to implement a computational grid. This grid is able to execute
specific jobs when it receives an executable accompanied by a set of data files. It completely
hides the complexity of grid technology which makes the system easy to use. Usability is also
20 increased by offering a web-based front-end for users to access the system.
This section contains the definitions of all used terms, acronyms and abbreviations in this
document.
25 1.3.1 Definitions
1.3.2 Abbreviations
1.4 Documents
[ESA] ESA Software Engineering Standards (ESA PSS-05-0 Issue 2), ESA Board
for Software Standardization and Control (BSSC), 1991
[JSDL] Job Submission Description Language (JSDL) Specification, Version 1.0,
November 2005
[ADD] Architectural Design Document, SPINGRID team, TU/e, not yet available
[DDD] Detailed Design Document, SPINGRID team, TU/e, not yet available
30 1.5 Overview
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
35 vice-versa. Finally in Appendix A, state diagrams are presented to illustrate the flow of the
SPINGRID system.
General Description
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
2.1.2 BOINC
BOINC2 is a software platform for distributed computing using volunteered computer re-
sources. The most important feature of BOINC is resource sharing among independent
projects, therefore many different projects can use BOINC. Projects are independent; each
55 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
http://tphon.dutchspace.nl/grease/
2
http://boinc.berkeley.edu/
60 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 sacrificing local autonomy. The toolkit in-
cludes software services and libraries for resource monitoring, discovery, and management,
plus security and file management. In addition to being a central part of science and engi-
65 neering projects that total nearly a half-billion dollars internationally, the Globus Toolkit is
a substrate on which leading IT companies are building significant commercial Grid products.
There are no real predecessors of the SPINGRID project, though Dutch Space has experi-
70 mented with a project called GridAssist which is related to this project. But GridAssist is
built on the Globus Toolkit and is focused on workflow computing, whereas the SPINGRID
system is not using an existing toolkit to provide the grid and does not support workflow-
management. So calling GridAssist a predecessor of the SPINGRID project is not correct but
the two definitely have a relation with each other.
75
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 figure:
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 simplified
description of the product and contains the functionality that was found in the user require-
85 ments. The model specifies the relations between different entities in the product. In this
stage, implementation terminology must be avoided to ensure that all options of implementa-
tions 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/
90 2.4 Environment
The environment in which the system runs is generally described in [URD], §2.5.
The software programs - client, agent and dispatcher - will be further described in section
2.7, but have the following minimal requirements:
95 General Requirements:
Dispatcher:
100 • 2 GB RAM
• 2 MBit/s network
• work on Linux
• dedicated server
• handle 10 clients
• monitor 2 times/minute
Agent:
• handle 3 dispatchers
• poll 1 time/minute
A client does not have any specific requirements besides the general requirements.
120 The logical model is constructed in an object-oriented way, with the Unified Modeling Lan-
guage (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 different
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
125 models specify the public interfaces, hence private methods are left out. Note that the dis-
played 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 different solu-
tions.
130 There are three programs in the SPINGRID system which can be seen in figure 2.1: the agent,
the client and the dispatcher.
The agent is used by the resource provider. All resource provider requirements, as de-
scribed in the [URD] §4.4, are fulfilled by the agent. An agent is connected to one or more
135 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 fulfilled by the client.
The system admin and project admin also use the client and these requirements ([URD], §4.3
and §4.5) are also fulfilled by the client. A client is connected to one or more independent
140 dispatchers. The main difference 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 compu-
145 tational grid. A dispatcher is connected to zero or more agents and to zero or more clients.
Dispatchers operate independently.
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.
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.
D (Job Provider → Dispatcher): The job provider provides a job (with a proper descrip-
160 tion) to the dispatcher.
E (Dispatcher → Agent): The dispatcher found a suitable agent to compute the job on.
The agent downloads the necessary files (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
165 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 finished the computation of the job and sends the results
(like URL’s) to the specified (which is described in the job by the Job Provider) output
destination.
170 Monitoring from the different users and changing settings is left out of figure 2.2 because it
makes the figure unnecessary complicated.
The UML model which can be seen in figure 2.3 is derived from the user requirements. All
the classes and their relations are described here. Note that figure 2.3 illustrates the system
175 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.
Application A combination of a set of shell scripts and a set of (URLs to) platform de-
pendent data. An application can be used by zero or more jobs.
[SR 5060]: An application has an attribute called Characteristics which contains the charac-
185 teristics that the application requires.
Priority: 2
This also implies that a job provider cannot make a new job with a private application
provided by a different job provider. Even better, a job provider should never be able to see
200 a private application provided by a different job provider.
Data Provider A data provider can offer 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.
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 appli-
cation.
Public Data This class is a sub class of data. A public data object is provided by precisely
210 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 Job ∧
(j1 .Data = d) ∧ (j2 .Data = d) : (j1 .JobP rovider 6= j2 .JobP rovider)))
Priority: 1
Job Provider Job providers are users that offer a job to a project. They have to be a
220 member of that particular project. A job provider can provide zero or more jobs.
[SR 7070]: A job has an attribute called JobDefinition which contains a full description of
the job.
230 Priority: 1
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.
235 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 characteris-
tics of the resource.
240 Priority: 2
Project A project is a collection of jobs with specified access rights to which users (project
members) can be assigned:
[SR 7130]: A project has at least one project admin.
245 Priority: 1
Project Admin The project admin administrates projects and can assign and remove job
providers, configure a project and restrict access for resource providers. A project admin
administrates at least one project.
250
System Admin The system admin is the administrator of the SPINGRID. He can authorize
255 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.
260 Priority: 1
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
265 available to all the users. Each command will have one or more software requirements, which
will be described in section 3.1.1.
system.
”The Job Submission Description Language (JSDL) is a language for describing the require-
ments 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
275 XML Schema that facilitate the expression of those requirements as a set of XML elements.”
JSDL is illustrated in figure 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
280 this because not implemented attributes are left undefined. More detailed information of
JSDL can be found in [JSDL].
JobDefinition
+JobDescription
0..1 0..*
Resources DataStaging
+CandidateHosts +Filename
+FileSystem +FileSystemName
+ExclusiveExection +CreationFlag
+OperatingSystem +DeleteOnTermination
+CPUArchitecture +Source
+IndividualCPUSpeed +Target
+IndividualCPUCount
+IndividualNetworkBandwidth
+IndividualPhysicalMemory
+IndivualVirtualMemory
+IndividualDiskspace
+TotalCPUTime
+TotalCPUCount
+TotalPhysicalMemory
+TotalVirtualMemory
+TotalDiskSpace
+TotalResourceCount
JobDefinition This element describes the job and its requirements. It contains a JobDe-
scription section. It is the root element of the JSDL document.
JobDescription This element describes the job and its requirements. It contains JobIden-
tification, Application, Resources, and DataStaging elements.
290 JobIdentification 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 undefined.
Application This element describes the application and its requirements. It contains Ap-
plicationName, ApplicationVersion and Description elements. It serves as a high level generic
295 container that is intended to hold more specific application definitions. One such definition
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 definition does not define an application to execute. The JSDL
document could be defining a data staging job, or a null job. See also [JSDL], §6.3.2 and
300 §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
305 of a JSDL document. In particular, any combination of “Individual”, and “Total” elements of
the same or different types may be present in a resources element. But note that all elements
present in a JSDL document must be satisfied for the entire document to be satisfied. (See
also [JSDL], §4)
DataStaging Data staging defines the files that should be moved to the execution host
310 (stage in) and the files 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 specified 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
315 should be reported. The specification of this error, including how or when it is raised, is
beyond the scope of the JSDL specification.
It is possible to stage out the same file more than once by specifying the same FileName (on
the same FileSystem) in multiple stage out DataStaging elements.
320
It is also possible, but deprecated, to use the same FileName in separate DataStaging ele-
ments to stage in to the same local file. The result is unspecified.
The CreationFlag determines whether the staged file should append or overwrite an existing
325 file. This element must be present in a DataStaging element.
The DeleteOnTermination element may be used to delete a file after the job terminates. If
the file is to be staged out the deletion is done after the stage out completes. A file may be
deleted even if it was not created by the job. For example, suppose that a file exists on the
330 execution host and the CreationFlag is set to dontOverwrite. This file 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 significant. That is,
the order of the DataStaging elements in the document does not imply any ordering, besides
335 the ordering already mentioned concerning job execution and carrying out the different stage
in (or stage out) operations.
More complex file transfers, for example, conditional transfers based on job termination status
or pre-warming of grid-enabled file-systems are out of scope. Permission and access control
340 for the staged files should be handled by the implementation and is out of scope of the JSDL
specification.
More complicated deployment scenarios than the file staging described here, for example,
deployment and configuration of the execution environment itself, are out of scope of the
345 JSDL specification.
Specific 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
350 requirements. Each of the requirements has a unique identifier 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
355 be implemented in priority order if time allows.
User
360 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
• Offer(Job)
370 [SR 7010] Offers a job to the system.
Priority: 1
[SR 7012] A job provider can provide a private application.
Priority: 3
[SR 7013] A job provider can provide private data.
375 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
385 • GetJobList():JobList
[SR 7040] Returns a list of the provider’s jobs.
Priority: 2
• GetApplications():ApplicationList
390 [SR 7020] Returns a list of applications available to the provider.
Priority: 2
Application Provider
395 Methods
• Add(Application)
[SR 5010] Provides an application to the system.
Priority: 1
400 • Remove(Application)
[SR 5011] Removes an application from the system.
Priority: 2
• AddToProject(Application, Project)
405 [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.
410 Priority: 2
• 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
420 • GetApplicationList():ApplicationList
[SR 5030] Returns a list of the provider’s applications.
Priority: 3
• GetUsing(Application):ProjectList
425 [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
430 project.
Priority: 3
Data Provider
435 Methods
• Add(Data)
[SR 6010] Provides platform independent data to the system.
Priority: 1
440 • Remove(Data)
[SR 6011] Removes platform independent data from the system.
Priority: 1
• AddToProject(Data, Project)
445 [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.
450 Priority: 2
• ApproveJobProvider(JobProvider)
[SR 6060] Allows a job provider to use the platform independent data of the data
provider.
455 Priority: 2
• DisapproveJobProvider(JobProvider)
[SR 6061] Disallows a job provider to use the platform independent data of the data
provider.
460 Priority: 2
• GetDataList():DataList
[SR 6040] Returns a list of provider’s platform independent data.
Priority: 3
465
• GetUsingProjects(Data):ProjectList
[SR 6030] Returns a list of projects which use the platform independent data.
Priority: 3
470 • GetUsingApps(Data):ApplicationList
[SR 6050] Returns a list of applications which use the platform independent data.
Priority: 4
Resource Provider
475
Methods
• Offer()
[SR 3010] Offers and identifies 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
485 • RemoveProject(Project,Resource)
[SR 3021] Removes a project on which the resource may be used.
Priority: 2
• AddInterval(Interval,Resource)
490 [SR 3030] Adds an interval when the resource can be used.
Priority: 5
• RemoveInterval(Interval,Resource)
[SR 3031] Removes an interval when the resource can be used.
495 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
505 • ApproveApplicationProvider(ApplicationProvider,Resource)
[SR 3060] Allows the applications of an application provider to be executed on the re-
source.
Priority: 2
510 • DisapproveApplicationProvider(ApplicationProvider,Resource)
[SR 3061] Disallows the applications of an application provider to be executed on the
resource.
Priority: 2
515 • ApproveJobProvider(JobProvider,Resource)
[SR 3070] Allows a job provider to provide his jobs to the resource.
Priority: 2
• DisapproveJobProvider(JobProvider,Resource)
520 [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.
525 Priority: 4
Project Admin
Methods
530 • ApproveJobProvider(User,Project)
[SR 4010] Allows the user to provide jobs for the project. If the user isn’t already a job
provider then he will get the role of job provider.
Priority: 1
535 • 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
540 • ApproveResourceProvider(ResourceProvider,Project)
[SR 4020] Allows a resource provider to process jobs of the specific project.
Priority: 2
• DisapproveResourceProvider(ResourceProvider,Project)
545 [SR 4021] Disallows a resource provider to process the specific project.
Priority: 2
• ApproveData(Data,Project)
[SR 4030] Allows platform independent data to be used for a specific project.
550 Priority: 2
• DisapproveData(Data,Project)
[SR 4031] Disallows platform independent data to be used for a specific project.
Priority: 2
555
• ApproveDataProvider(DataProvider,Project)
[SR 4032] Allows a data provider to provide data for a specific project.
Priority: 2
560 • DisapproveDataProvider(DataProvider,Project)
[SR 4033] Disallows a data provider to provide data for a specific project.
Priority: 2
• ApproveApplication(Application,Project)
565 [SR 4040] Allows an application to be used for a specific project.
Priority: 2
• DisapproveApplication(Application,Project)
[SR 4041] Disallows an application to be used for a specific project.
570 Priority: 2
• ApproveApplicationProvider(ApplicationProvider,Project)
[SR 4042] Allows an application provider to provide applications for a specific project.
Priority: 2
575
• DisapproveApplicationProvider(ApplicationProvider,Project)
[SR 4043] Disallows an application provider to provide applications for a specific project.
Priority: 2
580 • RemoveJob(Job,Project)
[SR 4060] Removes a job from a specific project.
Priority: 2
• AllowOwnApplication(JobProvider)
585 [SR 4050] Allows a job provider to provide private applications.
Priority: 2
• DisallowOwnApplication(JobProvider)
[SR 4051] Disallows a job provider to provide private applications.
590 Priority: 2
• GetJobList(Project):JobList
[SR 4070] Returns a list of all jobs in the project.
Priority: 2
595
System Admin
Methods
• AddApplicationProvider(User)
600 [SR 2010] Authorizes the user to be an application provider.
Priority: 2
• RemoveApplicationProvider(ApplicationProvider)
[SR 2011] Unauthorizes the user to be an application provider.
605 Priority: 2
• AddDataProvider(User)
[SR 2020] Authorizes the user to be a data provider.
Priority: 3
610
• RemoveDataProvider(DataProvider)
[SR 2021] Unauthorizes the user to be a data provider.
Priority: 3
615 • AddProjectAdmin(Project,User)
[SR 2030] Authorizes the user to be a project admin of a specific project.
Priority: 1
• RemoveProjectAdmin(Project,ProjectAdmin)
620 [SR 2031] Unauthorizes the user to be a project admin of a specific project if at least
one other project admin is authorized to the project.
Priority: 2
• AddProject(User)
625 [SR 2040] Adds a project to the system and makes the user project admin of the project.
If the user isn’t already a project admin then he will get the role of project admin.
Priority: 1
• RemoveProject(Project)
630 [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
635
• ChangeSystemSettings()
[SR 2050] Changes the settings of the system.
Priority: 1
640 • GetJobList():JobList
[SR 2060] Returns a list of all jobs in the system.
Priority: 2
• GetProjectAdmins(Project):ProjectAdminList
645 [SR 2070] Returns a list of all project admins authorized to a specific project.
Priority: 2
• GetApprovedApplicationProviders(Project):ApplicationProviderList
[SR 2080] Returns a list of application providers authorized to a specific project.
650 Priority: 2
• GetApprovedDataProviders(Project):DataProviderList
[SR 2090] Returns a list of data providers authorized to a specific project.
Priority: 3
655
• GetResourceCalculations(Project):CalculationList
[SR 2100] Returns a list of resources and which jobs they have calculated in a specific
project.
Priority: 3
660
JobIdentification
Attributes
665 • JobName
[SR 1210] This element is a string that may be specified by a user to name the job
specified 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 defined.
670 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: JobIdentification, Application, FileSystem, etc. If this element is not
675 present as a sub-element then no description is defined.
Priority: 3
• JobAnnotation
[SR 1230] This element is a string that may be specified by a user to annotate the job. If
this element is not present then it is not defined. In contrast to the Description element,
680 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
685 project could be used by accounting systems or access control systems. The interpreta-
tion of the JobProject elements is left to the implementation of the consuming system.
If this element is not present then it is not defined.
Priority: 1
Application
690
Attributes
• ApplicationName
[SR 1310] This element is a string that defines the name of the application and is used
to identify the application independent of the location of its executable on a host or
695 system. If this is not present then it is not defined and a null job is assumed unless there
is an application extension element present that defines the application to execute.
Priority: 1
• ApplicationVersion
[SR 1320] This element is a string that defines the version of the application to exe-
700 cute. 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 defined and any version of the
application may be executed.
Priority: 1
• Description
705 [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: JobIdentification, Application, FileSystem, etc. If this element is not
present as a sub-element then no description is defined.
Priority: 3
710 Resources
Attributes
• CandidateHosts
[SR 1410] This element is a complex type specifying the set of named hosts which may
715 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 defined. 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
720 • FileSystem
[SR 1411] This element describes a filesystem that is required by the job. It is a complex
type that may contain the location where the filesystem should be made available, the
required amount of disk space and the type of the filesystem. The filesystem may be
local to the resource (e.g., on a local disk), or may be remote (e.g., an NFS mount).
725 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 defined and the consuming system may choose any value.
730 Priority: 3
• OperatingSystem
[SR 1413] This is a complex type that defines the operating system required by the
job. It may contain Description, OperatingSystemVersion, and OperatingSystemType
elements. If this is not present then it is not defined and the consuming system may
735 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 defined and the
740 consuming system may choose any value. Values not defined by the JSDL ProcessorAr-
chitectureEnumeration (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
745 • 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 defined and the consuming system may choose
any value.
750 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 defined
and the consuming system may choose any value.
755 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
defined and the consuming system may choose any value.
760 Priority: 2
• IndividualNetworkBandwidth
[SR 1418] This element is a range value specifying the bandwidth requirements of each
individual resource. The amount is specified as multiple of bits per second. If this is
not present then it is not defined and the consuming system may choose any value.
765 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 defined and the consuming system may choose any value.
770 Priority: 2
• IndividualVirtualMemory
[SR 1420] This element is a range value specifying the required amount of virtual mem-
ory for each of the resources to be allocated for this job submission. The amount is
given in bytes. If this is not present then it is not defined and the consuming system
775 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
780 is not present then it is not defined 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 re-
quired, across all CPUs used to execute the job. If this is not present then it is not
785 defined 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 defined and the consuming
790 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
795 not present then it is not defined 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
800 then it is not defined 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
805 is not present then it is not defined 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 defined and the consuming system may
810 choose any value.
Priority: 3
DataStaging
Attributes
815 • FileName
[SR 1510] This element is a string specifying the local name of the file (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
820 < directory > / < directory > /.../ < name >. The ”< name >” may be either a
directory or a file.
Priority: 1
• FileSystemName
[SR 1520] If the FileSystemName is specified then the FileName is relative to the spec-
825 ified 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 defined. If the FileSystemName is not defined then the FileName is rel-
ative to the working job directory as determined by the consuming system. Note that
JSDL extensions may allow defining a value for the working job directory. See, for
830 example, the WorkingDirectory element definition ([JSDL], §8.1.7) of the ”Executables
on POSIX Conformant Hosts” extension.
Priority: 3
• CreationFlag
[SR 1530] This element determines whether the file created on the local execution system
835 can overwrite or append to an existing file. 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 file should be deleted after the
840 job terminates. If true the file is deleted after the job terminates or after the file has
been staged out. Otherwise the file remains, subject to the persistency of the FileSystem
it is on. If not present, behavior is unspecified and depends on the consuming system.
Priority: 3
• Source
845 [SR 1550] A Source element contains the location of the file or directory on the remote
system. This file or directory must be staged in from the location specified by the
(optional) URI before the job has started. If this element is not present then the file
does not have to be staged in.
Priority: 1
850 • Target
[SR 1560] A Target element contains the location of the file or directory on the remote
system. This file or directory must be staged out to the location specified by the
(optional) URI after the job has terminated. If this element is not present then the file
or directory does not have to be staged out.
855 Priority: 1
860 [SR 9010] The system requirements are as described in section 2.4.1.
Priority: 2
[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.
870 Priority: 4
[SR 9040]: The SPINGRID system will be able to process at least 40 executing jobs at a time.
Priority: 1
875 [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
880 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].
885 Priority: 4
[SR 9080]: The (un-)installation of the SPINGRID system will not require a computer expert.
Priority: 1
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
895 system will continue without malfunction.
Priority: 4
[SR 9110]: If one of the resources disappears while performing a job, the system will requeue
the job.
900 Priority: 1
[SR 9120]: A job will be declared failed after it has been requeued for a configurable number
of times.
Priority: 4
905
[SR 9130]: The functionality of the product will not be restricted when agents or clients are
behind a firewall (which does not restrict traffic over port 80) and/or NAT.
Priority: 2
910 [SR 9140]: The SPINGRID system will be implemented in Java according to (a tailored ver-
sion of) the BSSC Java Coding Standards.
Priority: 2
[SR 9150]: The system will be able to run for at least a week without interruption.
915 Priority: 2
[SR 9160]: All programs in the SPINGRID system will log what they are doing.
Priority: 2
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 notification to the job provider when a
925 job is completed, failed or removed.
Priority: 2
UR 3010 SR 3010
UR 3020 SR 3010
UR 3030 SR 3020, SR 3021
UR 3040 SR 3030, SR 3031
UR 3050 SR 3040
UR 3060 SR 3060, SR 3061
UR 3062 SR 3050, SR 3051
UR 3070 SR 9080
UR 3072 SR 3011
UR 3074 SR 3070, SR 3071
UR 3080 SR 9010
UR 4010 SR 7130
UR 4020 SR 4010
UR 4030 SR 4011
UR 4040 SR 4020, SR 4021
UR 4042 SR 4030, SR 4031, SR 4032, SR 4033
UR 4050 SR 4040, SR 4041, SR 4042, SR 4043
UR 4060 SR 4050, SR 4051
UR 4070 SR 4060
UR 4080 SR 4070
UR 4090 SR 9010
UR 5010 SR 5010
UR 5012 SR 5011
UR 5020 SR 9010
UR 5030 SR 5020, SR 5021
UR 5040 SR 5050
UR 5042 SR 5030
UR 5050 SR 5040
UR 5052 SR 5060
UR 5054 SR 5070, SR 5071
UR 5060 SR 9010
UR 6010 SR 6010
UR 6012 SR 6011
UR 6020 SR 6020, SR 6021
UR 6030 SR 6030
UR 6032 SR 6040
UR 6040 SR 6050
UR 6042 SR 6060, SR 6061
UR 6050 SR 9010
UR 7010 SR 7010
UR 7020 SR 7020
UR 7040 SR 7012, SR 7110
UR 7050 SR 7013, SR 7120
UR 7052 SR 1410
UR 7060 SR 7030
UR 7070 SR 7011
UR 7080 SR 7040
UR 7082 SR 7140, SR 7070, 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
UR 7090 SR 9180
UR 7100 SR 9180
UR 7110 SR 9180
UR 7120 SR 9010
UR 8010 SR 9090
UR 8020 SR 9100
UR 8030 SR 9110
UR 8040 SR 9120
UR 8050 SR 9130
UR 8060 SR 9140
UR 8070 SR 9150
UR 8080 SR 9160
UR 8090 SR 9170
SR 2030 UR 2040
SR 2031 UR 2070
SR 2040 UR 2080
SR 2041 UR 2090
SR 2050 UR 2100
SR 2060 UR 2110
SR 2070 UR 2114
SR 2080 UR 2120
SR 2090 UR 2130
SR 2100 UR 2140
SR 3010 UR 3020, UR 3010
SR 3011 UR 3072
SR 3020 UR 3030
SR 3021 UR 3030
SR 3030 UR 3040
SR 3031 UR 3040
SR 3040 UR 3050
SR 3050 UR 3062
SR 3051 UR 3062
SR 3060 UR 3060
SR 3061 UR 3060
SR 3070 UR 3074
SR 3071 UR 3074
SR 4010 UR 4020
SR 4011 UR 4030
SR 4020 UR 4040
SR 4021 UR 4040
SR 4030 UR 4042
SR 4031 UR 4042
SR 4032 UR 4042
SR 4033 UR 4042
SR 4040 UR 4050
SR 4041 UR 4050
SR 4042 UR 4050
SR 4043 UR 4050
SR 4050 UR 4060
SR 4051 UR 4060
SR 4060 UR 4070
SR 4070 UR 4080
SR 5010 UR 5010
SR 5011 UR 5012
SR 5020 UR 5030
SR 5021 UR 5030
SR 5030 UR 5042
SR 5040 UR 5050
SR 5050 UR 5040
SR 5060 UR 5052
SR 5070 UR 5054
SR 5071 UR 5054
SR 6010 UR 6010
SR 6011 UR 6012
SR 6020 UR 6020
SR 6021 UR 6020
SR 6030 UR 6030
SR 6040 UR 6032
SR 6050 UR 6040
SR 6060 UR 6042
SR 6061 UR 6042
SR 7010 UR 7010, UR 1020
SR 7011 UR 7070
SR 7012 UR 7040
SR 7013 UR 7050
SR 7020 UR 7020
SR 7030 UR 7060
SR 7040 UR 7080
SR 7070 UR 7082, UR 1030
SR 7110 UR 7040
SR 7120 UR 7050
SR 7130 UR 4010
SR 7140 UR 7082, UR 1030, UR 1010, UR 1020
SR 7150 UR 2010
SR 8000 UR 0080
SR 9000 UR 0010
SR 9010 UR 3080, UR 7120, UR 2150, UR 6050,
UR 5060, UR 4090, UR 5020
SR 9020 UR 0020
SR 9030 UR 0030
SR 9031 UR 0040
SR 9040 UR 0050
SR 9050 UR 0060
SR 9060 UR 0070
SR 9070 UR 0080
SR 9080 UR 3070
SR 9090 UR 8010
SR 9100 UR 8020
SR 9110 UR 8030
SR 9120 UR 8040
SR 9130 UR 8050
SR 9140 UR 8060
SR 9150 UR 8070
SR 9160 UR 8080
SR 9170 UR 8090
SR 9180 UR 7100, UR 7090, UR 7110
Petri-nets
A.1 Dispatcher
Startup:
935 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 • 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 com-
mand does not appear in the Petri-net for sake of reduction of complexity.
Start Session:
When an agent connects to the dispatcher a session is started.
Request Job:
950 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.
No Jobs Available:
The dispatcher informs the agent that there are currently no jobs available.
960
Receive Command:
970 A request is received from a client.
Accept Command:
The received command is a known command.
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:
985 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
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).
Accept Remove:
The job can be removed.
1005
Reject Remove:
The job can not be removed (for example, it does not exist).
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:
1025 The given changes are not acceptable. For example, the changes are inconsistent.
The application provider subnet is identical to the data provider subnet, except for the pro-
cessor names. The processors in the application provider subnet have similar functionality
1030 to their equivalents in the data provider subnet. Therefore, the processors in the application
provider subnet will not be listed.
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
1035 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):
1040 The parameters that were sent with the Add Job Provider-command are acceptable.
Accept Changes:
The proposed changes are acceptable.
The processors on the first row (List Jobs etc.) represent the commands that are available to
1060 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.
Start up:
When the agent starts, it sends its system specification to the dispatcher and it receives a
1090 sessionID from the dispatcher. Now the agent enters a state in which it is waiting for a job
to finish calculating.
Shut down:
The agent software can only be shut down from the waiting state. When a resource provider
1095 wants to shut down while a job is being calculated, the calculation will be interrupted (See
the Failed processor) and the dispatcher will be notified.
Job request:
This processor notifies the dispatcher that the agent is waiting for work.
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.
Notification sent:
1115 The dispatcher has been informed and the agent will return to the waiting state.
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
1120 wants to shut down the agent software.
Result sent:
1130 Now is the job completed, the dispatcher will be informed that the job is completed. The
agent will return to the waiting state.
Print result:
This processor will print the messages, produced by the dispatcher, on the screen.