Upload
tallys
View
44
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Families (of Products) in Space. Professor Mike Hinchey In collaboration with Joaquin Pena, Jim Rash, Manuel Resinas, Antonio Ruiz-Cortes Roy Sterritt, Pablo Trinidad. NASA as a pioneer. Regular releases of PASS software foresaw agile methods. Human-rated software gets priority. - PowerPoint PPT Presentation
Citation preview
1
Families (of Products) in Space
Professor Mike Hinchey
In collaboration with Joaquin Pena, Jim Rash, Manuel Resinas, Antonio Ruiz-Cortes Roy Sterritt, Pablo Trinidad
2
NASA as a pioneer
• Regular releases of PASS software foresaw agile methods.
• Human-rated software gets priority.• Quality and safety are paramount.
Figure 3. NASA Space Shuttle Time Required to Achieve Number of Cumulative Failures <= F (t) vs. F (t)
0.00
2.00
4.00
6.00
8.00
10.00
12.00
14.00
1 2 3 4 5 6 7 8 9 10
F (t)
t (3
0 d
ay in
terv
als
)
Series1
Series2
Series3
Series4
Series5
Series 1: OI3Series 2: OI4Series 3: OI5Series 4: OI6Series 5: tm = Mission Duration
4
NASA as a pioneer
• Sees opportunity for reuse in the use of SPLs.
• Has long viewed evolution of complex systems as a product line with large core.
Product Si-1
Set of Core features
Set of Features
A
Set of Features
B
Condition: environment/system Product Si-1
Set of Core features
Set of Features
A
New Set of
Features
GRAIL
• Grail (Gravity Recovery and Interior Lab) found relevant defect factors in flight software.• Timing parameters particularly problematic.• Grail aims to retain organizational memory and
avoid the same defects in new products.
5
SPLs
6
Elektra – software defined radio
7
Swarm Technologies
• Inspired by swarms of bees and flocks of birds in nature;
• Many application areas:– drug discovery;– communication systems; – environmental monitoring;– exploration.
8
Swarms of Spacecraft
Coordinated swarms of smaller spacecraft will offer:
• More effective use of solar power;
• Access to areas where large craft could not go;
• Ability to perform more complex tasks;
• Greater accuracy and flexibility.
• Resilience in harsh environments.
9
Autonomous NanoTechnology Swarm
Three concept sub-missions:
1. Lander Amorphous Rover Antenna (LARA)
2. Saturn Autonomous Ring Array (SARA)
3. Prospecting Asteroid Mission (PAM)
All use (substantially) the same software and similar devices (some on lunar surface, some fly, etc.)
10
Tet Walkers
11
LARA Walkers
12
13
ANTS Concept Mission - PAM
14
ANTS Concept Mission - PAM
15
Viewpoints
v
is a set of (partial) transition functions where each transition function maps
ocessason
geceiveMessaeSendMessag
Pr,Re
,Re,
MemoryOutputInputMemory
is a set of (partial) transition functions where each transition function maps
ocessason
geceiveMessaeSendMessag
Pr,Re
,Re,
MemoryOutputInputMemory
goces
goces
goces
goces
goces
goces
easoning
easoning
ingCommunicateceive
ingCommunicateceive
ingCommunicateceive
ingCommunicat
ingCommunicat
ingCommunicatingCommunicat
sinPr.nRemediatioProcessing:17
sinPr.RecoveryProcessing:16
sinPr.DiagnosisProcessing:16
sinPr.PredictionProcessing:17
sinPr.GenerationProcessing:17
sinPr.StorageSortingAndProcessing:17
R.eactiveReasoningR:50
R.eliberatveReasoningD:50
.orMessageErrR:1
.derMessageLeaR:50
.kerMessageWorR:50
.eErrorSendMessag:1
.eLeaderSendMessag:50
.eWorkerSendMessag:50
2
2
2
2
2
2
2
2
1
2
2
1
2
2
lkklkklk nmnmn kkkkk nmmnmn )(
goces
goces
goces
goces
goces
goces
easoning
easoning
ingCommunicateceive
ingCommunicateceive
ingCommunicateceive
ingCommunicat
ingCommunicat
ingCommunicatingCommunicat
sinPr.nRemediatioProcessing:17
sinPr.RecoveryProcessing:16
sinPr.DiagnosisProcessing:16
sinPr.PredictionProcessing:17
sinPr.GenerationProcessing:17
sinPr.StorageSortingAndProcessing:17
R.eactiveReasoningR:50
R.eliberatveReasoningD:50
.orMessageErrR:1
.derMessageLeaR:50
.kerMessageWorR:50
.eErrorSendMessag:1
.eLeaderSendMessag:50
.eWorkerSendMessag:50
2
2
2
2
2
2
2
2
1
2
2
1
2
2
lkklkklk nmnmn kkkkk nmmnmn )(
otherwise
AGEERROR_MESS
RTH(msg) = EAif
AGEEARTH_MESS
RKER(msg) = WOif
SAGEWORKER_MES
SSENGER(msg) = ME if
MESSAGEMESSENGER_
ADER(msg) = LEif
SAGELEADER_MES
msginleaderCOMLEADER
msgconvi
msgconvi
msgconvi
msgconvi
msgconvi
convi
sender
sender
sender
sender
case
?._
,,
,,
,,
,,
,,
,
otherwise
AGEERROR_MESS
RTH(msg) = EAif
AGEEARTH_MESS
RKER(msg) = WOif
SAGEWORKER_MES
SSENGER(msg) = ME if
MESSAGEMESSENGER_
ADER(msg) = LEif
SAGELEADER_MES
msginleaderCOMLEADER
msgconvi
msgconvi
msgconvi
msgconvi
msgconvi
convi
sender
sender
sender
sender
case
?._
,,
,,
,,
,,
,,
, ),,(' ingCommsTracklModesGoalmemory ),,(' ingCommsTracklModesGoalmemory
217ProcessingRemediation
216ProcessingRecovery
216ProcessingDiagnosis
217ProcessingPrediction
217ProcessingGeneration
217ProcessingSortingAndStorage
Processing
250ReasoningReactive
250ReasoningDeliberatveReasoning
11ReceiveMessageError
250ReceiveMessageLeader
250ReceiveMessageWorker
11SendMessageError
250SendMessageLeader
250SendMessageWorker
Communicating
Identity
pfActions leading to the agent state
Agent State
217ProcessingRemediation
216ProcessingRecovery
216ProcessingDiagnosis
217ProcessingPrediction
217ProcessingGeneration
217ProcessingSortingAndStorage
Processing
250ReasoningReactive
250ReasoningDeliberatveReasoning
11ReceiveMessageError
250ReceiveMessageLeader
250ReceiveMessageWorker
11SendMessageError
250SendMessageLeader
250SendMessageWorker
Communicating
Identity
pfActions leading to the agent state
Agent State
5.5.00
25.25.5.0
25.25.5.0
25.25.5.0
P
Communicating
Reasoning
ProcessingInitial state
0.5
0.5
0.5
1
0.25
0.25
0.25
0.25 Communicating
Reasoning
ProcessingInitial state
0.5
0.5
0.5
1
0.25
0.25
0.25
0.25
5.5.00
25.25.5.0
25.25.5.0
25.25.5.0
P
Communicating
Reasoning
ProcessingInitial state
0.5
0.5
0.5
1
0.25
0.25
0.25
0.25 Communicating
Reasoning
ProcessingInitial state
0.5
0.5
0.5
1
0.25
0.25
0.25
0.25
[Processing] SendMessage (Leader, Worker) [Communicating]
[Reasoning] SendMessage (Leader,Worker)[Communicating]
[Communicating]ReasoningDeliberatve(Leader)[Reasoning]
[Processing] SendMessage (Leader, Worker) [Communicating]
[Reasoning] SendMessage (Leader,Worker)[Communicating]
[Communicating]ReasoningDeliberatve(Leader)[Reasoning]
Swarm Formal Method Model and Outline
MAS-PL approach
16
Plan Model
17
Role Model
18
19
MaCMAS Traceability Model
Explore Universe
Explore and Discover
Set Objetive and Approach
FlightSearch
new objective
Inform objective
EvaluateInterest
Avoid Crashing
Avoid run aout of power
Protect from solar
storms
measure image
Send Data Earth
Self-Protection
Ab
str
ac
tio
n
La
ye
r 1
Ab
str
ac
tio
n
La
ye
r 2
Ab
str
ac
tio
n
La
ye
r 4
Ab
str
ac
tio
n
La
ye
r 3
Measuresolar storms
Switch off sub-sytems
Use sail as a shield
...
...
...
...
......
Move
Snake Amoeba Rolling
Walk
Gas prop.
Use Sail to Orbit
and flight
Analyse
measure X-ray
Mandatory Optional
At least one of them
Only one of them
DigitalCamera
Optical Camera
If father present, the heir is:
Dependency
20
Feature Model
Explore Universe
Explore and Discover
Set Objetive and Approach
FlightSearch
new objective
Inform objective
EvaluateInterest
Avoid Crashing
Avoid run aout of power
Protect from solar
storms
measure image
Send Data Earth
Self-Protection
Ab
str
ac
tio
n
La
ye
r 1
Ab
str
ac
tio
n
La
ye
r 2
Ab
str
ac
tio
n
La
ye
r 4
Ab
str
ac
tio
n
La
ye
r 3
Measuresolar storms
Switch off sub-sytems
Use sail as a shield
...
...
...
...
......
Move
Snake Amoeba Rolling
Walk
Gas prop.
Use Sail to Orbit
and flight
Analyse
measure X-ray
Mandatory Optional
At least one of them
Only one of them
DigitalCamera
Optical Camera
If father present, the heir is:
Dependency
Features and Roles
21
Space
<<Environment>>Solar Disc
stormVector: Vector3stormIntensity:Real
SelfProtecSS
StormVector: Vector3stormIntensity : RealasteroidRelativePos: PosstormType: StormTypes
Role Goal: Self-protectionmRI Meassure Storms Goal: Protect from solar stormmRI offSubSys Goal: Protect from solar stormmRI SailAsShieldGoal: Protect from solar storm
SelfProtecSS
SelfProtecSS
SelfProtecSS
Guard: SelProtecSC.stormIntensity > RiskForSystemsFactor
offSubSysGoal: Power off subsystemsPattern: self-procedure
In: Out: SelfProtecSS.stormIntensity
SailAsShieldGoal: Use sail as shieldPattern: self-procedure
In: Out: SelfProtecSS.stormVector SelfProtecSS.stormIntensity
MeassureStormsGoal: Meassure Storm RiskPattern: Sense Environment
In: Space.stormVector Space.stormIntensity
Out: SelfProtecSS.stormIntensity SelfProtecSS.stormVector
Guard: SelProtecSC.stormIntensity > RiskForSystemsFactor
Avoid Crashing
Avoid run aout of power
Protect from solar
storms
Self-Protection
Measuresolar storms
Switch off sub-sytems
Use sail as a shield
Avoidcrashing
AvoidOut power
Prot.Solar St
SelfSelf--ProtectionProtectionRoleRole
<<<<environmetenvironmet>>>>SpaceSpace
Ab
stra
ctio
nL
ayer
3A
bst
ract
ion
Lay
er4
Commonality
22
Commonalities
23
0%
20%
40%
60%
80%
100%
120%
AV
OID
-CR
AS
HIN
G
EX
PLO
RE
-AN
D-D
ISC
OV
ER
EX
PLO
RE
-UN
IVE
RS
E
MO
VE
SE
AR
CH
-NE
W-O
BJE
CT
IVE
SE
ND
-DA
TA
-EA
RT
H
SE
LF-P
RO
TE
CT
ION
SE
T-O
BJE
CT
IVE
-AN
D-A
PP
RO
AC
H
ME
AS
UR
E
AV
OID
-OU
T-P
OW
ER
PR
OT
EC
T-F
RO
M-S
OLA
R-S
TO
RM
S
ME
AS
UR
E-S
OLA
R-S
TO
RM
S
SW
ITC
H-O
FF
-SU
BS
YS
TE
MS
US
E-S
HA
IL-A
S-A
-SH
IELD
OR
BIT
AN
D F
LIG
HT
WA
LK
ME
AS
UR
E-I
MA
GE
GA
S-P
RO
PA
GA
TIO
N
US
E-S
AIL
-OR
BIT
-FLI
GH
T
ME
AS
UR
E-X
RA
Y
ME
AS
UR
E-T
EM
PE
RA
TU
RE
EV
ALU
AT
E-I
NT
ER
ES
T
INF
OR
M-O
BJE
CT
IVE
AM
OE
BA
RO
LLIN
G
SN
AK
E
SE
LF-H
EA
LIN
G
LEA
RN
OP
TIC
AL-
CA
ME
RA
DIG
ITA
L-C
AM
ER
A
CO
MM
ON
AL
ITY
Threshold = 60%
Composition
24
A) Plan Model
B) Role Model
Measure risk of solar
stormsProtecting
[SelProtecSC.stormIntensity > RiskForSystemsFactor]
SailAsShield
[SelProtecSC.stormIntensity > RiskForSystemsFactor]
offSubSysMeasureStorms
Space
<<Environment>>Space
stormVector: Vector3stormIntensity:Real
SelfProtecSC
StormVector: Vector3stormIntensity : RealasteroidRelativePos: PosstormType: StormTypes
Role Goal: Self-protectionmRI Measure Storms Goal: Protect from solar stormmRI offSubSys Goal: Protect from solar stormmRI SailAsShieldGoal: Protect from solar storm
SelfProtecSC
SelfProtecSC
SelfProtecSC
Guard: SelProtecSC.stormIntensity > RiskForSystemsFactor
offSubSysGoal: Power off subsystemsPattern: self-procedure
In: Out: SelfProtecSC.stormIntensity
SailAsShieldGoal: Use sail as shieldPattern: self-procedure
In: Out: SelfProtecSC.stormVector SelfProtecSC.stormIntensity
MeasureStormsGoal: Measure Storm RiskPattern: Sense Environment
In: Space.stormVector Space.stormIntensity
Out: SelfProtecSC.stormIntensity SelfProtecSC.stormVector
Guard: SelProtecSC.stormIntensity > RiskForSystemsFactor
A) Plan Model
OrbitingAfter
Measure
[Dist(relativePos,Astero-idRelativePos)<dist]
Measure
[Orbiter.MeasureFi-nished(astModel)]
EscapeOrbit
[not (Orbiter.AmIInsideOrbit(Orbi-ter.relativePos,Orbiter.orbitM)]
AdjustOrbit
InformOrbit
Inform Measures
[Orbiter.MeasureFi-nished(astModel)]
EscapeOrbit
Asteroid
Orbiter
1..n
<<Environment>>Asteroid
relativePos: PospData:Data
MeasureGoal: Measure AsteroidPattern: Environmental Int.
In: Orbiter.aste- roidRelativePos
Out: pMeassu- rer.astModel
1..n
OrbitModeller
astData:AteroidDataorbitM: OrbitModel
CalculateOrbit(AsteroidData)::OrbitModel
Role Goal: Calculate orbitsmRI Goals: send orbit models
Report OrbitGoal: Report Orbit
Pattern: CollaborationIn: OrbitMo- deller.orbitM
Out: Orbiter.orbitM
Postcondition:Orbiter.astModel <> empty
Instantiation Rule:(Orbiter.allInstances -> forAll (c | SWARM.pMeasureMeasurers.includes(c))
Guard: Dist(relativePos,AsteroidRelativePos)<dist
Measurer
Orbiter
Orbiter
orbitM: OrbitModelrelativePos: PosasteroidRelativePos: PosastData: AstDataastModel: AstModel
AdjustOrbit(relativePos,orbitM)PProcessData(m:Measure)::ModelPMeasureX(input)::pMeasureAmIInsideOrbit(Pos,OrbitModel)::BoolMeasureFinished(AstModel)::Bool
Role Goal: Maintain Orbit and MeasuremRI Measure Goal: GetModelmRI Orbits Goal: Get the Orbit Model
Receiver
listOfModels:ModellistOfSenders:Sender
Role Goal: Know ModelmRI Goals: get Model
Orbiter
Report Measures
Goal: Distribute results
Pattern: CollaborationIn: Orbiter.astModel
Out: Receiver.astModel
Receiver
1..n
1..n
AdjustOrbit
Goal: Distribute results
Pattern: self-procedureIn: Orbiter.orbitM
Out: Receiver.astModel
Orbiter
EscapeOrbit
Goal: Escape an Orbit
Pattern: self-procedureIn: Orbiter.orbitM
Out:
Orbiter
Postcondition:not (Orbiter.AmIInsideOrbit(Orbi-ter.relativePos,Orbiter.orbitM)
guard:not (Orbiter.AmIInsideOrbit(Orbi-ter.relativePos,Orbiter.orbitM)
guard:Orbiter.MeasureFi-nished(astModel)
B) Role Model
+
•Compose Roles•Compose Plans•Assign new plans to executing agents
Composition
25
Composed Role Model
26
Composed Plan Model
27
Policies
28
If a spacecraft is orbiting and measuring an Role Model
asteroid and it measures that there exists risk of a solar storm, Interaction
the spacecraft must first escape the orbit and later Interaction
power down subsystems and use its sail as a shield Interaction Interaction
Policy Builder
29
MaCMAS Policy BuilderMaCMAS Policy Builder
Composed Model Initial Model 1 Initial Model 2 Initial Model ...
ABC If Then After Before And Or First Second nth ...
If a spacecraft is orbiting and mesuring an asteroid and it meassures a solar storm, then ….
File Edit View Help
Traceability List of elementsRole Models
Orbiting and mesuring
meassures
Self Protec from solar...
mRIs
Ontologies
...meassures
...
spacecraft
Build policy
Space
<<Environment>>Space
stormVector: Vector3stormIntensity:Real
SelfProtecSC
SelfProtecSC
SelfProtecSC
Guard: SelProtecSC.stormIntensity > RiskForSystemsFactor
offSubSysGoal: Power off subsystemsPattern: self-procedure
In: Out: SelfProtecSC.stormIntensity
SailAsShieldGoal: Use sail as shieldPattern: self-procedure
In: Out: SelfProtecSC.stormVector SelfProtecSC.stormIntensity
MeasureStormsGoal: Measure Storm RiskPattern: Sense Environment
In: Space.stormVector Space.stormIntensity
Out: SelfProtecSC.stormIntensity SelfProtecSC.stormVector
Guard: SelProtecSC.stormIntensity > RiskForSystemsFactor
Asteroid
Orbiter
1..n
<<Environment>>Asteroid
relativePos: PospData:Data
MeasureGoal: Measure AsteroidPattern: Environmental Int.
In: Orbiter.aste- roidRelativePos
Out: pMeassu- rer.astModel
1..n
OrbitModeller
astData:AteroidDataorbitM: OrbitModel
CalculateOrbit(AsteroidData)::OrbitModel
Role Goal: Calculate orbitsmRI Goals: send orbit models
Report OrbitGoal: Report Orbit
Pattern: CollaborationIn: OrbitMo- deller.orbitM
Out: Orbiter.orbitM
Postcondition:Orbiter.astModel <> empty
Instantiation Rule:(Orbiter.allInstances -> forAll (c | SWARM.pMeasureMeasurers.includes(c))
Guard: Dist(relativePos,AsteroidRelativePos)<dist
Measurer
Orbiter
SelfProtectingOrbiter
orbitM: OrbitModelrelativePos: PosasteroidRelativePos: PosastData: AstDataastModel: AstModel
StormVector: Vector3stormIntensity : RealstormType: StormTypes
AdjustOrbit(relativePos,orbitM)PProcessData(m:Measure)::ModelPMeasureX(input)::pMeasureAmIInsideOrbit(Pos,OrbitModel)::BoolMeasureFinished(AstModel)::Bool
Role Goal: Maintain Orbit and Measure and self protectionmRI Measure Goal: GetModelmRI Orbits Goal: Get the Orbit Model
mRI Measure Storms Goal: Protect from solar stormmRI offSubSys Goal: Protect from solar stormmRI SailAsShieldGoal: Protect from solar storm
Receiver
listOfModels:ModellistOfSenders:Sender
Role Goal: Know ModelmRI Goals: get Model
Orbiter
Report Measures
Goal: Distribute results
Pattern: CollaborationIn: Orbiter.astModel
Out: Receiver.astModel
Receiver
1..n
AdjustOrbit
Goal: Distribute results
Pattern: self-procedureIn: Orbiter.orbitM
Out: Receiver.astModel
Orbiter
EscapeOrbit
Goal: Escape an Orbit
Pattern: self-procedureIn: Orbiter.orbitM
Out:
Orbiter
Postcondition:not (Orbiter.AmIInsideOrbit(Orbi-ter.relativePos,Orbiter.orbitM)
guard:not (Orbiter.AmIInsideOrbit(Orbi-ter.relativePos,Orbiter.orbitM)
guard:Orbiter.MeasureFi-nished(astModel) or (SelProtecSC.stormIntensity > RiskForSystemsFactor)
1..n
1..n
1..n
1..n
1..n
1..n
1..n
1..n
Model Elements
Policy Builder
Model Builder
30
MaCMAS Policy BuilderMaCMAS Policy Builder
Composed Model Initial Model 1 Initial Model 2 Initial Model ...
ABC If Then After Before And Or First Second nth ...
If a spacecraft is orbiting and mesuring an asteroid and it meassures a solar storm, then ….
File Edit View Help
Traceability List of elementsRole Models
Orbiting and mesuring
meassures
Self Protec from solar...
mRIs
Ontologies
...meassures
...
spacecraft
Build policy
Space
<<Environment>>Space
stormVector: Vector3stormIntensity:Real
SelfProtecSC
SelfProtecSC
SelfProtecSC
Guard: SelProtecSC.stormIntensity > RiskForSystemsFactor
offSubSysGoal: Power off subsystemsPattern: self-procedure
In: Out: SelfProtecSC.stormIntensity
SailAsShieldGoal: Use sail as shieldPattern: self-procedure
In: Out: SelfProtecSC.stormVector SelfProtecSC.stormIntensity
MeasureStormsGoal: Measure Storm RiskPattern: Sense Environment
In: Space.stormVector Space.stormIntensity
Out: SelfProtecSC.stormIntensity SelfProtecSC.stormVector
Guard: SelProtecSC.stormIntensity > RiskForSystemsFactor
Asteroid
Orbiter
1..n
<<Environment>>Asteroid
relativePos: PospData:Data
MeasureGoal: Measure AsteroidPattern: Environmental Int.
In: Orbiter.aste- roidRelativePos
Out: pMeassu- rer.astModel
1..n
OrbitModeller
astData:AteroidDataorbitM: OrbitModel
CalculateOrbit(AsteroidData)::OrbitModel
Role Goal: Calculate orbitsmRI Goals: send orbit models
Report OrbitGoal: Report Orbit
Pattern: CollaborationIn: OrbitMo- deller.orbitM
Out: Orbiter.orbitM
Postcondition:Orbiter.astModel <> empty
Instantiation Rule:(Orbiter.allInstances -> forAll (c | SWARM.pMeasureMeasurers.includes(c))
Guard: Dist(relativePos,AsteroidRelativePos)<dist
Measurer
Orbiter
SelfProtectingOrbiter
orbitM: OrbitModelrelativePos: PosasteroidRelativePos: PosastData: AstDataastModel: AstModel
StormVector: Vector3stormIntensity : RealstormType: StormTypes
AdjustOrbit(relativePos,orbitM)PProcessData(m:Measure)::ModelPMeasureX(input)::pMeasureAmIInsideOrbit(Pos,OrbitModel)::BoolMeasureFinished(AstModel)::Bool
Role Goal: Maintain Orbit and Measure and self protectionmRI Measure Goal: GetModelmRI Orbits Goal: Get the Orbit Model
mRI Measure Storms Goal: Protect from solar stormmRI offSubSys Goal: Protect from solar stormmRI SailAsShieldGoal: Protect from solar storm
Receiver
listOfModels:ModellistOfSenders:Sender
Role Goal: Know ModelmRI Goals: get Model
Orbiter
Report Measures
Goal: Distribute results
Pattern: CollaborationIn: Orbiter.astModel
Out: Receiver.astModel
Receiver
1..n
AdjustOrbit
Goal: Distribute results
Pattern: self-procedureIn: Orbiter.orbitM
Out: Receiver.astModel
Orbiter
EscapeOrbit
Goal: Escape an Orbit
Pattern: self-procedureIn: Orbiter.orbitM
Out:
Orbiter
Postcondition:not (Orbiter.AmIInsideOrbit(Orbi-ter.relativePos,Orbiter.orbitM)
guard:not (Orbiter.AmIInsideOrbit(Orbi-ter.relativePos,Orbiter.orbitM)
guard:Orbiter.MeasureFi-nished(astModel) or (SelProtecSC.stormIntensity > RiskForSystemsFactor)
1..n
1..n
1..n
1..n
1..n
1..n
1..n
1..n
Model Elements
Policy Builder
Model Builder
Enhanced R2D2
Enhanced MaCMAS
Modeling
Elements
Policy analysis
Parts to modifyin XMI format
C
31
Any problem in computer science can be solved with another layer of indirection.
But that usually will create another problem.
David Wheeler