Skip to content

Commit aca19c3

Browse files
committed
Add graphs for analysis ???
1 parent f871de5 commit aca19c3

File tree

8 files changed

+282
-1
lines changed

8 files changed

+282
-1
lines changed

src/BaselineOfExecutableRequirements/BaselineOfExecutableRequirements.class.st

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ BaselineOfExecutableRequirements >> coreDependencies: spec [
3737
BaselineOfExecutableRequirements >> corePackages: spec [
3838

3939
spec package: 'ExecutableRequirements'.
40-
40+
spec package: 'ExecutableRequirements-Impacts'.
41+
4142
spec
4243
package: 'ExecutableRequirements-Examples'
4344
with: [ spec requires: #( 'ExecutableRequirements' ) ].
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
Class {
2+
#name : 'ExReqRequirementImpact',
3+
#superclass : 'Object',
4+
#instVars : [
5+
'requirement',
6+
'sameNode',
7+
'sameMethod',
8+
'sameClass',
9+
'samePackage'
10+
],
11+
#category : 'ExecutableRequirements-Impacts',
12+
#package : 'ExecutableRequirements-Impacts'
13+
}
14+
15+
{ #category : 'as yet unclassified' }
16+
ExReqRequirementImpact >> impactFor: aRequirement [
17+
18+
self requirement = aRequirement requirement ifTrue: [ ^ self ].
19+
(self requirement associatedPackages includesAny:
20+
aRequirement requirement associatedPackages) ifTrue: [
21+
self samePackage add: aRequirement.
22+
aRequirement samePackage add: self ].
23+
(self requirement associatedClasses includesAny:
24+
aRequirement requirement associatedClasses) ifTrue: [
25+
self sameClass add: aRequirement.
26+
aRequirement sameClass add: self ].
27+
(self requirement associatedMethods includesAny:
28+
aRequirement requirement associatedMethods) ifTrue: [
29+
self sameMethod add: aRequirement.
30+
aRequirement sameMethod add: self ].
31+
(self requirement associatedNodes includesAny:
32+
aRequirement requirement associatedNodes) ifTrue: [
33+
self sameNode add: aRequirement.
34+
aRequirement sameNode add: self ]
35+
]
36+
37+
{ #category : 'as yet unclassified' }
38+
ExReqRequirementImpact >> impactForCollection: aCollection [
39+
40+
aCollection do: [ :reqToTest | self impactFor: reqToTest ]
41+
]
42+
43+
{ #category : 'initialization' }
44+
ExReqRequirementImpact >> initialize [
45+
46+
super initialize.
47+
samePackage := OrderedCollection new.
48+
sameClass := OrderedCollection new.
49+
sameMethod := OrderedCollection new.
50+
sameNode := OrderedCollection new
51+
52+
]
53+
54+
{ #category : 'accessing' }
55+
ExReqRequirementImpact >> requirement [
56+
57+
^ requirement
58+
]
59+
60+
{ #category : 'accessing' }
61+
ExReqRequirementImpact >> requirement: anObject [
62+
63+
requirement := anObject.
64+
65+
]
66+
67+
{ #category : 'accessing' }
68+
ExReqRequirementImpact >> sameClass [
69+
70+
^ sameClass
71+
]
72+
73+
{ #category : 'accessing' }
74+
ExReqRequirementImpact >> sameMethod [
75+
76+
^ sameMethod
77+
]
78+
79+
{ #category : 'accessing' }
80+
ExReqRequirementImpact >> sameNode [
81+
82+
^ sameNode
83+
]
84+
85+
{ #category : 'accessing' }
86+
ExReqRequirementImpact >> samePackage [
87+
88+
^ samePackage
89+
]
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
Class {
2+
#name : 'ExReqRoassalGraphImpact',
3+
#superclass : 'Object',
4+
#category : 'ExecutableRequirements-Impacts',
5+
#package : 'ExecutableRequirements-Impacts'
6+
}
7+
8+
{ #category : 'as yet unclassified' }
9+
ExReqRoassalGraphImpact class >> example [
10+
11+
| repositoryReport |
12+
repositoryReport := ExReqRepository new
13+
pragmaSelector: #ExReqTest;
14+
yourself.
15+
{
16+
(ExReqRoassalGraphImpact requirementsViewForPackage:
17+
repositoryReport allImpacts).
18+
(ExReqRoassalGraphImpact requirementsViewForClass:
19+
repositoryReport allImpacts).
20+
(ExReqRoassalGraphImpact requirementsViewForMethod:
21+
repositoryReport allImpacts).
22+
(ExReqRoassalGraphImpact requirementsViewForNode:
23+
repositoryReport allImpacts) } inspect
24+
]
25+
26+
{ #category : 'as yet unclassified' }
27+
ExReqRoassalGraphImpact class >> requirementsView: aCollection [
28+
29+
| canvas boxes stepping |
30+
canvas := RSCanvas new.
31+
boxes := aCollection collect: [ :impact |
32+
RSBox new
33+
model: impact;
34+
yourself ].
35+
canvas addAll: boxes.
36+
canvas nodes @ (RSPopup text: [ :each | each requirement title ]).
37+
38+
stepping := RSForceLayoutSteppingInteraction new.
39+
stepping layout
40+
length: 300;
41+
charge: -300.
42+
canvas @ stepping.
43+
canvas @ RSCanvasController.
44+
^ canvas
45+
]
46+
47+
{ #category : 'as yet unclassified' }
48+
ExReqRoassalGraphImpact class >> requirementsView: aCollection withMethod: aSymbol [
49+
50+
| canvas |
51+
canvas := self requirementsView: aCollection.
52+
RSLineBuilder arrowedLine
53+
canvas: canvas;
54+
connectFrom: #yourself toAll: aSymbol.
55+
^ canvas
56+
]
57+
58+
{ #category : 'as yet unclassified' }
59+
ExReqRoassalGraphImpact class >> requirementsViewForClass: aCollection [
60+
61+
^ self requirementsView: aCollection withMethod: #sameClass
62+
]
63+
64+
{ #category : 'as yet unclassified' }
65+
ExReqRoassalGraphImpact class >> requirementsViewForMethod: aCollection [
66+
67+
^ self requirementsView: aCollection withMethod: #sameMethod
68+
]
69+
70+
{ #category : 'as yet unclassified' }
71+
ExReqRoassalGraphImpact class >> requirementsViewForNode: aCollection [
72+
73+
^ self requirementsView: aCollection withMethod: #sameNode
74+
]
75+
76+
{ #category : 'as yet unclassified' }
77+
ExReqRoassalGraphImpact class >> requirementsViewForPackage: aCollection [
78+
79+
^ self requirementsView: aCollection withMethod: #samePackage
80+
]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Package { #name : 'ExecutableRequirements-Impacts' }

src/ExecutableRequirements/ExReqRepository.class.st

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,53 @@ Class {
1010
#tag : 'Model-Static'
1111
}
1212

13+
{ #category : 'as yet unclassified' }
14+
ExReqRepository >> allImpacts [
15+
16+
| impacts |
17+
impacts := self requirements copy collect: [ :each |
18+
ExReqRequirementImpact new
19+
requirement: each;
20+
yourself ].
21+
impacts withIndexDo: [ :impact :index |
22+
impact impactForCollection: (impacts allButFirst: index) ].
23+
^ impacts
24+
]
25+
1326
{ #category : 'converting' }
1427
ExReqRepository >> asReport [
1528

1629
^ ExReqRepositoryReport new repository: self; yourself
1730
]
1831

32+
{ #category : 'as yet unclassified' }
33+
ExReqRepository >> associatedClasses [
34+
35+
^ (self requirements flatCollect: [ :each | each associatedClasses ])
36+
asSet
37+
]
38+
39+
{ #category : 'as yet unclassified' }
40+
ExReqRepository >> associatedMethods [
41+
42+
^ (self requirements flatCollect: [ :each | each associatedMethods ])
43+
asSet
44+
]
45+
46+
{ #category : 'as yet unclassified' }
47+
ExReqRepository >> associatedNodes [
48+
49+
^ (self requirements flatCollect: [ :each | each associatedNodes ])
50+
asSet
51+
]
52+
53+
{ #category : 'as yet unclassified' }
54+
ExReqRepository >> associatedPackages [
55+
56+
^ (self requirements flatCollect: [ :each | each associatedPackages ])
57+
asSet
58+
]
59+
1960
{ #category : 'accessing' }
2061
ExReqRepository >> pragmaSelector [
2162

src/ExecutableRequirements/ExReqRequirement.class.st

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,33 @@ ExReqRequirement >> asReport [
4444
yourself
4545
]
4646

47+
{ #category : 'as yet unclassified' }
48+
ExReqRequirement >> associatedClasses [
49+
50+
^ (self verifications flatCollect: [ :each | each associatedClasses ])
51+
asSet
52+
]
53+
54+
{ #category : 'as yet unclassified' }
55+
ExReqRequirement >> associatedMethods [
56+
57+
^ (self verifications flatCollect: [ :each | each associatedMethods ])
58+
asSet
59+
]
60+
61+
{ #category : 'as yet unclassified' }
62+
ExReqRequirement >> associatedNodes [
63+
64+
^ (self verifications flatCollect: [ :each | each associatedNodes ])
65+
asSet
66+
]
67+
68+
{ #category : 'as yet unclassified' }
69+
ExReqRequirement >> associatedPackages [
70+
71+
^ (self verifications flatCollect: [ :each | each associatedPackages ]) asSet
72+
]
73+
4774
{ #category : 'accessing' }
4875
ExReqRequirement >> description [
4976
^ description

src/ExecutableRequirements/ExReqStep.class.st

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,24 @@ ExReqStep >> asReport [
1919
yourself
2020
]
2121

22+
{ #category : 'as yet unclassified' }
23+
ExReqStep >> associatedClass [
24+
25+
^ self associatedMethod methodClass
26+
]
27+
28+
{ #category : 'as yet unclassified' }
29+
ExReqStep >> associatedMethod [
30+
31+
^ self node methodNode compiledMethod
32+
]
33+
34+
{ #category : 'as yet unclassified' }
35+
ExReqStep >> associatedPackage [
36+
37+
^ self associatedClass package
38+
]
39+
2240
{ #category : 'testing' }
2341
ExReqStep >> hasPostcondition [
2442

src/ExecutableRequirements/ExReqVerification.class.st

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,30 @@ ExReqVerification >> asReport [
4747
yourself
4848
]
4949

50+
{ #category : 'as yet unclassified' }
51+
ExReqVerification >> associatedClasses [
52+
53+
^ (self steps collect: [ :each | each associatedClass ]) asSet
54+
]
55+
56+
{ #category : 'as yet unclassified' }
57+
ExReqVerification >> associatedMethods [
58+
59+
^ (self steps collect: [ :each | each associatedMethod ]) asSet
60+
]
61+
62+
{ #category : 'as yet unclassified' }
63+
ExReqVerification >> associatedNodes [
64+
65+
^ (self steps collect: [ :each | each node ]) asSet
66+
]
67+
68+
{ #category : 'as yet unclassified' }
69+
ExReqVerification >> associatedPackages [
70+
71+
^ (self steps collect: [ :each | each associatedPackage ]) asSet
72+
]
73+
5074
{ #category : 'initialization' }
5175
ExReqVerification >> initialize [
5276

0 commit comments

Comments
 (0)