]>
Commit | Line | Data |
---|---|---|
be897af3 | 1 | // Copyright (C) 2024 Rubén Beltrán del Río |
98f09799 | 2 | |
be897af3 RBR |
3 | // This program is free software: you can redistribute it and/or modify |
4 | // it under the terms of the GNU General Public License as published by | |
5 | // the Free Software Foundation, either version 3 of the License, or | |
6 | // (at your option) any later version. | |
98f09799 | 7 | |
be897af3 RBR |
8 | // This program is distributed in the hope that it will be useful, |
9 | // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
10 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
11 | // GNU General Public License for more details. | |
98f09799 | 12 | |
be897af3 RBR |
13 | // You should have received a copy of the GNU General Public License |
14 | // along with this program. If not, see https://map.tranquil.systems. | |
5e8ff485 RBR |
15 | struct Stage { |
16 | let i: String | |
17 | let ii: String | |
18 | let iii: String | |
19 | let iv: String | |
20 | ||
21 | static func stages(_ type: StageType) -> Stage { | |
22 | switch type { | |
23 | case .general: | |
24 | return Stage( | |
77d0155b | 25 | i: "Genesis", ii: "Custom", iii: "Product (+rental)", iv: "Commodity (+utility)") |
5e8ff485 RBR |
26 | case .practice: |
27 | return Stage( | |
28 | i: "Novel", ii: "Emerging", iii: "Good", iv: "Best") | |
29 | case .data: | |
30 | return Stage( | |
31 | i: "Unmodelled", ii: "Divergent", iii: "Convergent", iv: "Modelled") | |
32 | case .knowledge: | |
33 | return Stage( | |
34 | i: "Concept", ii: "Hypothesis", iii: "Theory", iv: "Accepted") | |
35 | case .ubiquity: | |
36 | return Stage( | |
77d0155b RBR |
37 | i: "Rare", ii: "Slowly Increasing", iii: "Rapidly Increasing", |
38 | iv: "Widespread in the applicable market / ecosystem") | |
5e8ff485 RBR |
39 | case .certainty: |
40 | return Stage( | |
77d0155b RBR |
41 | i: "Poorly Understood / exploring the unknown", |
42 | ii: "Rapid Increase In Learning / discovery becomes refining", | |
43 | iii: "Rapid increase in use / increasing fit for purpose", | |
44 | iv: "Commonly understood (in terms of use)") | |
5e8ff485 RBR |
45 | case .publicationTypes: |
46 | return Stage( | |
77d0155b RBR |
47 | i: |
48 | "Describe the wonder of the thing / the discovery of some marvel / a new land / an unknown frontier", | |
49 | ii: | |
50 | "Focused on build / construct / awareness and learning / many models of explanation / no accepted forms / a wild west", | |
51 | iii: | |
52 | "Maintenance / operations / installation / comparison between competing forms / feature analysis", | |
53 | iv: "Focused on use / increasingly an accepted, almost invisible component") | |
5e8ff485 RBR |
54 | case .market: |
55 | return Stage( | |
77d0155b RBR |
56 | i: "Undefined Market", |
57 | ii: "Forming Market / an array of competing forms and models of understanding", | |
58 | iii: "Growing Market / consolidation to a few competing but more accepted forms", | |
59 | iv: "Mature Market / stabilised to an accepted form") | |
5e8ff485 RBR |
60 | case .knowledgeManagement: |
61 | return Stage( | |
77d0155b RBR |
62 | i: "Uncertain", ii: "Learning on use / focused on testing prediction", |
63 | iii: "Learning on operation / using prediction / verification", iv: "Known / accepted") | |
5e8ff485 RBR |
64 | case .marketPerception: |
65 | return Stage( | |
77d0155b RBR |
66 | i: "Chaotic (non-linear) / domain of the \"crazy\"", ii: "Domain of \"experts\"", |
67 | iii: "Increasing expectation of use / domain of \"professionals\"", | |
68 | iv: "Ordered (appearance of being linear) / trivial / formula to be applied") | |
5e8ff485 RBR |
69 | case .userPerception: |
70 | return Stage( | |
77d0155b RBR |
71 | i: "Different / confusing / exciting / surprising / dangerous", |
72 | ii: "Leading edge / emerging / unceirtanty over results", | |
73 | iii: "Increasingly common / disappointed if not used or available / feeling left behind", | |
74 | iv: "Standard / expected / feeling of shock if not used") | |
5e8ff485 RBR |
75 | case .perceptionInIndustry: |
76 | return Stage( | |
77d0155b RBR |
77 | i: "Future source of competitive advantage / unpredictable / unknown", |
78 | ii: "Seen as a scompetitive advantage / a differential / ROI / case examples", | |
79 | iii: "Advantage through implementation / features / this model is better than that", | |
80 | iv: "Cost of doing business / accepted / specific defined models") | |
5e8ff485 RBR |
81 | case .focusOfValue: |
82 | return Stage( | |
77d0155b RBR |
83 | i: "High future worth but immediate investment", |
84 | ii: "Seeking ways to profit and a ROI / seeking confirmation of value", | |
85 | iii: | |
86 | "High profitability per unit / a valuable model / a feeling of understanding / focus on exploitation", | |
87 | iv: | |
88 | "High volume / reducing margin / important but invisible / an essential component of something more complex" | |
89 | ) | |
5e8ff485 RBR |
90 | case .understanding: |
91 | return Stage( | |
92 | i: "Poorly Understood / unpredictable", | |
93 | ii: "Increasing understanding / development of measures", | |
94 | iii: "Increasing education / constant refinement of needs / measures", | |
95 | iv: "Believed to be well defined / stable / measurable") | |
96 | case .comparison: | |
97 | return Stage( | |
98 | i: "Constantly changing / a differential / unstable", | |
99 | ii: "Learning from others / testing the water / some evidential support", | |
77d0155b RBR |
100 | iii: "Competing models / feature difference / evidential support", |
101 | iv: "Essential / any advantage is operational / accepted norm") | |
5e8ff485 RBR |
102 | case .failure: |
103 | return Stage( | |
77d0155b RBR |
104 | i: "High / tolerated / assumed to be wrong", |
105 | ii: "Moderate / unsurprising if wrong but disappointed", | |
106 | iii: | |
107 | "Not tolerated / focus on constant improvement / assumed to be in the right direction / resistance to changing the model", | |
108 | iv: "Surprised by failure / focus on operational efficiency") | |
5e8ff485 RBR |
109 | case .marketAction: |
110 | return Stage( | |
111 | i: "Gambling / driven by gut", ii: "Exploring a \"found\" value", | |
112 | iii: "Market analysis / listening to customers", iv: "Metric driven / build what is needed") | |
113 | case .efficiency: | |
114 | return Stage( | |
115 | i: "Reducing the cost of change (experimentation)", ii: "Reducing cost of waste (Learning)", | |
116 | iii: "Reducing cost of waste (Learning)", iv: "Reducing cost of deviation (Volume)") | |
117 | case .decisionDrivers: | |
118 | return Stage( | |
119 | i: "Heritage / culture", ii: "Analyses & synthesis", iii: "Analyses & synthesis", | |
120 | iv: "Previous Experience") | |
121 | case .behavior: | |
122 | return Stage( | |
123 | i: "Uncertain when to use", ii: "Learning when to use", iii: "Learning through use", | |
124 | iv: "Known / common usage") | |
125 | } | |
126 | } | |
127 | ||
128 | static func title(_ type: StageType) -> String { | |
129 | switch type { | |
130 | case .general: | |
131 | return "Activities" | |
132 | case .practice: | |
133 | return "Practice" | |
134 | case .data: | |
135 | return "Data" | |
136 | case .knowledge: | |
137 | return "Knowledge" | |
138 | case .ubiquity: | |
139 | return "Ubiquity" | |
140 | case .certainty: | |
141 | return "Certainty" | |
142 | case .publicationTypes: | |
143 | return "Publication Types" | |
144 | case .market: | |
145 | return "Market" | |
146 | case .knowledgeManagement: | |
147 | return "Knowledge Management" | |
148 | case .marketPerception: | |
149 | return "Market Perception" | |
150 | case .userPerception: | |
151 | return "User Perception" | |
152 | case .perceptionInIndustry: | |
153 | return "Perception In Industry" | |
154 | case .focusOfValue: | |
155 | return "Focus Of Value" | |
156 | case .understanding: | |
157 | return "Understanding" | |
158 | case .comparison: | |
159 | return "Comparison" | |
160 | case .failure: | |
161 | return "Failure" | |
162 | case .marketAction: | |
163 | return "Market Action" | |
164 | case .efficiency: | |
165 | return "Efficiency" | |
166 | case .decisionDrivers: | |
167 | return "Decision Drivers" | |
168 | case .behavior: | |
169 | return "Behavior" | |
170 | } | |
171 | } | |
172 | } | |
173 | ||
174 | enum StageType: String, CaseIterable, Identifiable { | |
175 | case general | |
176 | case practice | |
177 | case data | |
178 | case knowledge | |
77d0155b | 179 | |
5e8ff485 RBR |
180 | case ubiquity |
181 | case certainty | |
182 | case publicationTypes | |
77d0155b | 183 | |
5e8ff485 RBR |
184 | case market |
185 | case knowledgeManagement | |
186 | case marketPerception | |
187 | case userPerception | |
188 | case perceptionInIndustry | |
189 | case focusOfValue | |
190 | case understanding | |
191 | case comparison | |
192 | case failure | |
193 | case marketAction | |
194 | case efficiency | |
195 | case decisionDrivers | |
77d0155b | 196 | |
5e8ff485 RBR |
197 | case behavior |
198 | ||
199 | var id: String { self.rawValue } | |
77d0155b RBR |
200 | |
201 | static let types: [StageType] = [.general, .practice, .data, .knowledge] | |
202 | static let characteristics: [StageType] = [.ubiquity, .certainty, .publicationTypes] | |
203 | static let properties: [StageType] = [ | |
204 | .market, .knowledgeManagement, .marketPerception, .userPerception, | |
205 | .perceptionInIndustry, .focusOfValue, .understanding, .comparison, .failure, | |
206 | .marketAction, .efficiency, .decisionDrivers, | |
207 | ] | |
208 | static let custom: [StageType] = [.behavior] | |
5e8ff485 | 209 | } |