. .. , 2012, 5 (2), . 416-424
004.42
*
2012 . .. , ..
, ^. sidorov@icc.ru
05.03.2012
, . , DISCOMP.
: , - , - , - , .

, , . (, , , ..) (., , .. ,
.. , .. , .. , .. , .. , .. , .. , .. , .. .). , , - ( - , , ).
, -
. . (), : , () . , . ( ) .
, (), . (, OLYMPUS, , , .) , , . , , .
2012».
(, Condor, BOINC, X-COM .) , , , .
() DISCOMP [1], () . , :
- ( , , .);
- ( ) ;
- ;
- ;
- .
, , .
, - (). .
. - (, MS Windows, Linux, Mac OS X .).
, -
, (, C, Fortran, Pascal). , . , , . .
, , . - . , , , .
DISCOMP.

[2] , , . [3] S = (Z, T, M, Y), Z - , T - , M - , Y - , M. Z, T, M Y ZT ZxT, IN ZxM, OUT ZxM MY MxY ( --»). S (, , ) .
T : file, ( ); filelist,
( file). : ; ; ( , ). : ; ; ; ; ( , ); ( , , , ); ( , ). : ; ; , , , .
mi M OUT Z IN1 Z, IN1 OUT' m,. Zj filelist m, : k- Zjk k- mik.
S : S Q», Q M M, .
() DISCOMP , - . , (
) ().
DISCOMP.
-
- [4]. , - , , (. 1): - -.
-, -, . . 1 , - .
Q k . , . k- .
DISCOMP , XML. (stage), (module). , -, - (listmodule).
, . 1 . decompose,
. 1. -
filelist. () - solver. analyse, -. () plotgraph, bestresult recommendation. <scheme>
<stage>
<module name='decompose'/>
</stage>
<stage>
<listmodule name='solver'/>
</stage>
<stage>
<module name='analyse'/>
</stage>
<stage>
<module name='plot graph'/>
<module name='best result'/> <module name= ,recommendation'/> </stage>
</scheme>
, , c FORK/JOIN [5]. FORK » - . , , . JOIN, , » ( ).
-
- , . , .
. , -
. :
- ( );
- ( );
- ( );
- ( );
- ( ), .
( ) , , JavaScript. DiscompAPI, / , / ( ) .
filelist. solver checkListResult, . RESULT FOUND», . , , .
<scheme>
<stage>
<listmodule name='solver'
onFinish='checkListResult $element num)'/>
</stage>
</scheme>
<control><![CDATA[ function checkListResult (element num) {
// // -
// result // element num
var res=DiscompAPI.getLPV(,result',
// element num) ;
// // "RESULT FOUND,
// // if ( res.match(/RESULT FOUND/) ) {
DiscompAPI.stopStageModules ();


]]></control>
onFinish , . , , .
<stage>
<module name='m1' onFinish=
'DiscompAPI.stopStageModules();
'/>
<module name='m2' onFinish=
'DiscompAPI.stopStageModules();
'/>
<module name='m3' onFinish=
'DiscompAPI.stopStageModules();
'/>
</stage>
DISCOMP , , , . D-SAT [], SAT-.
, , , . , , , , .
-
- , - ( -
, ). . . - . - , . - , , .
, - JavaScript. DCSript - JavaScript, ( ), . : .
: ; ; . : , filelist.
: ( ); ; ; ( , , , ); . : , , , , . , , » ( , ). DCScript
[7].
, DCScript.
// -// :
//DiscompModule, DiscompParameter. module = new DiscompModule ("module name");
// // // //Javascript.
value = parameter.getValue();
// //
module.addEventListener("onStop", "moduleStopped()");
// // : if (parameter.getValue() == "1") {
modulel.start();
} else {
module2.start() ;
}
// ():
module1.start();
module2.start();
module1.waitForFinished();
module2.waitForFinished();
module3.start();
DCScript. . .
//
var e = 0.0001; //
var t = 1; //
var n = 0; //
// var max n = 100; //
// var x0 = 0; // x
var param x = new DiscompParameter
("x");// . //, // var module func = new DiscompModule ( " func" )_;
// ,
// // // while (t > e || n++ > max n ) {
// x x0 = param x.getValue(); // //
module func.start();
module func.waitForWinished();
//
//
t=Math.abs(param x.getValue()-x0);
};
// DiscompAPI.logMessage ("
: " + param x.getValue() );
//
var module graph = new DiscompModule ("graph");
module graph.start();
// //
var module analyse = new DiscompModule ("analyse"); module analyse.start();
// module analyse.waitForFinished(); module graph.waitForFinished();
. , DISCOMP. , , , , , . DISCOMP CARMA [8].
, , - . , DCScript , , .

. , - , . --
, . DISCOMP , [9].
- , , [4]. , ( - ), - ( -, ).
, - . ( ). ( ) , , . , , , . , . , , .
. 2 FORK/JOIN . Fork -
pi p21, p22, p23, p24. Solver. , , Solver , . Join .
, . , - . , [10]. , .
. 3 . nmax, n e Check. , Check, . Check x x0. , , true. false .
DISCOMP Petri Net Markup Language (PNML). PNML- -
. 3.
- , , , , , . , , , , . , .
, . -
. , , . [7, 8].
, 40 80 100 . 1 , (40 ), - , (40 ), - .


- - (1 . ) (::) (40 . ) (::) (40 . ) (::)
100x40 53:30:43 4:55:01 3:27:14
100x80 97:15:13 5:32:47 4:40:39
, . . , , .

,

- . , , .
.

1. .., .., .. // . 2010. 2. . 108-111.
2. .. . .: , 1984. 256 .
3. .., .. // . 2004. 5. .105-108.
4. .. : . .: - (), 2008. 188 .
5. .., ..
. , 2006. 296 .
6. .., .., .., . . 8- -8 // . 2007. 23. . 83-95.
7. .., .. - // : IV . . : - -, 2011. . 35-42.
8. .., .., .. - // . 2011. 9.
. 11-15.
9. .. . .: , 1984. 160 .
10. .. . . .: , 2000. 780 .
THE TECHNIQUES AND LANGUAGE TOOLS FOR THE DESCRIPTION OF INTERRELATED PROBLEMS IN DISTRIBUTED APPLIED SOFTWARE PACKAGES
I.A. Sidorov, E.I. Pozdnyak
The article considers different approaches to the description of problem-solving schemes admitting decomposition of the whole problem into a number of separate blocks followed by a subsequent solution of the subproblems in a shared memory environment. Strengths and weaknesses of each approach are considered with the examples of their implementation on the toolkit DISCOMP.
Keywords: distributed applied software packages, multilevel structure, event-driven constructions, component-oriented approach, Petri net.