Recording/Managing project costs estimates

Started by peter.prib, April 09, 2018, 05:07:38 AM

Previous topic - Next topic

peter.prib

Was wondering if anyone has record cost estimation as there seems to be many ways it could be done within the archimate standards and using Archi.  Plus wondering if anyone had done any automation.  My current view is value element would total as single node with description total project cost estimate and this could be calculated from elements associated with deliverable amd these elements contain and estimated cost property.   I assume a level of automation should be possible, e.g. a function that totals property tags and updates value property tag.  Any guidance/exercise would be appreciated,.

Hervé

Hi Peter,

I developped the Specialization Plugin (https://github.com/archi-contribs/specialization-plugin) that allows to replace components labels and icons.

Implementing functions (sum, average, ...) is already on my todo list as it will allow me to calculate the cpu, ram, disk, software licences my projets require.

Unfortunately, my plugin does not allow to populate properties, but you may be able to show this cost in a node (or note) label.

For instance, let's imagine that you've got a "cost" property in your objects, you would then may replace your node label by something like "The total cost is ${view:sum:cost} €"

If this suits your need, I can implement it quite quickly.

Best regards
Hervé

peter.prib

Hi Hervé

This is an excellent solution to my requirement.  I assume the pathing will be consistent with xpath.  Actually could I suggest such as then there is a predefined  syntax with would address some of the other considerations e.g. location of data with by choice of path that may be dependant on node types and attribute values.   In fact I can see great functionality from such a feature beyond my requirement as it would allow construction of text data based on parent data so once could generated a concatenated name which would overcover many other hurdles I have encountered.

Any timetable on availability?

Still interested to hear experiences as to where people may have added cost properties against elements or paths.

Peter

Hervé

Hi Peter,

Actually, the variable syntax already exists in my plugin. It can be extended, but it cannot be changed completely I'm afraid.

As from the timeline, it can be done in few days :-)

Best regards
Hervé

Hervé

April 10, 2018, 11:55:58 AM #4 Last Edit: April 10, 2018, 19:10:41 PM by Hervé
Hi Peter,

Actually, it has been easier than expected (http://forum.archimatetool.com/index.php?topic=390.0).

As an example, you may copy the following lines in a "sum test.archilmate" file and open it with Archi.
<?xml version="1.0" encoding="UTF-8"?>
<archimate:model xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:archimate="http://www.archimatetool.com/archimate" name="sum test" id="2c0f0b84-f918-4614-96e8-a558a30932b8" version="4.0.0">
  <metadata/>
  <folder name="Strategy" id="185309c3-e930-4d83-a347-d97506ac9636" type="strategy"/>
  <folder name="Business" id="cc455990-e1f4-42b1-889a-e838055b0bb9" type="business"/>
  <folder name="Application" id="e71470ce-ef3d-4bfe-8165-61ed815dd66a" type="application"/>
  <folder name="Technology &amp; Physical" id="78472b37-54e4-42d3-8c1b-4f5bc8268d74" type="technology">
    <element xsi:type="archimate:Node" name="Node 1" id="b2169f00-c0f0-4ac9-ade7-8ade4e40135c">
      <property key="cost" value="12"/>
      <property key="label" value="node 1\ncost is ${property:cost} €"/>
    </element>
    <element xsi:type="archimate:Node" name="Node 2" id="e4747193-f34b-4832-82bd-23373b3e8579">
      <property key="cost" value="24"/>
      <property key="label" value="node 2\ncost is ${property:cost} €"/>
    </element>
    <element xsi:type="archimate:Node" name="Cost node" id="29767061-378c-4832-aaed-4b839acf6766">
      <property key="label" value="The total cost is ${view:sum:property:cost} €."/>
    </element>
  </folder>
  <folder name="Motivation" id="6daded04-0965-41b0-aaa9-20797cc3f70c" type="motivation"/>
  <folder name="Implementation &amp; Migration" id="aef0104c-327c-4f13-8993-59d33b93bc7d" type="implementation_migration"/>
  <folder name="Other" id="129a22e0-cda9-4216-8537-fbc725d60f2a" type="other"/>
  <folder name="Relations" id="332551c8-28bc-4168-b123-5a084fbf65c4" type="relations">
    <element xsi:type="archimate:FlowRelationship" name="node1 to node2" id="25192a0f-cfed-4b0a-87e8-c10cb77dfa91" source="b2169f00-c0f0-4ac9-ade7-8ade4e40135c" target="e4747193-f34b-4832-82bd-23373b3e8579"/>
  </folder>
  <folder name="Views" id="f76d44bd-0cbe-433b-af50-24ea1667b60f" type="diagrams">
    <element xsi:type="archimate:ArchimateDiagramModel" name="Default View" id="d290d7fb-9375-408b-8343-98cd400b834e">
      <child xsi:type="archimate:DiagramObject" id="0d375ca2-0ad7-4933-8df9-363942585b92" archimateElement="b2169f00-c0f0-4ac9-ade7-8ade4e40135c">
        <bounds x="60" y="132" width="120" height="55"/>
        <sourceConnection xsi:type="archimate:Connection" id="78c83e19-c034-4d17-bbcb-f1240b089198" source="0d375ca2-0ad7-4933-8df9-363942585b92" target="d2b60400-549e-484a-a359-e0c49f8004ad" archimateRelationship="25192a0f-cfed-4b0a-87e8-c10cb77dfa91"/>
      </child>
      <child xsi:type="archimate:DiagramObject" id="d2b60400-549e-484a-a359-e0c49f8004ad" targetConnections="78c83e19-c034-4d17-bbcb-f1240b089198" archimateElement="e4747193-f34b-4832-82bd-23373b3e8579">
        <bounds x="281" y="132" width="120" height="55"/>
      </child>
      <child xsi:type="archimate:DiagramObject" id="5973db03-198c-4155-a20f-01a6a77eed83" archimateElement="29767061-378c-4832-aaed-4b839acf6766">
        <bounds x="168" y="36" width="120" height="55"/>
      </child>
    </element>
  </folder>
  <purpose>purpose</purpose>
</archimate:model>


Please note that only Archi elements and relationships can change their label at the moment. This is not yet possible for notes and groups but I'm working on it :-)

Please do not hesitate to drop me a line should you have any question or concern.

Best regards
Hervé

Hervé

Actually, you may have a try with the following archimate file:
<?xml version="1.0" encoding="UTF-8"?>
<archimate:model xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:archimate="http://www.archimatetool.com/archimate" name="test sum" id="2c0f0b84-f918-4614-96e8-a558a30932b8" version="4.0.0">
  <metadata/>
  <folder name="Strategy" id="185309c3-e930-4d83-a347-d97506ac9636" type="strategy"/>
  <folder name="Business" id="cc455990-e1f4-42b1-889a-e838055b0bb9" type="business"/>
  <folder name="Application" id="e71470ce-ef3d-4bfe-8165-61ed815dd66a" type="application"/>
  <folder name="Technology &amp; Physical" id="78472b37-54e4-42d3-8c1b-4f5bc8268d74" type="technology">
    <folder name="folder 1" id="9c6fc6f0-c2d9-4c01-8f3c-dbc86d05ed39">
      <element xsi:type="archimate:Node" name="Cost node" id="29767061-378c-4832-aaed-4b839acf6766">
        <property key="label" value="The total cost is ${view:sum:property:cost} €."/>
      </element>
    </folder>
    <folder name="folder 2" id="bbbdfa3e-0636-4c92-8b03-ae1e7605b5ea">
      <element xsi:type="archimate:Node" name="Node 1" id="b2169f00-c0f0-4ac9-ade7-8ade4e40135c">
        <property key="cost" value="12"/>
        <property key="label" value="node 1\ncost is ${property:cost} €"/>
      </element>
      <element xsi:type="archimate:Node" name="Node 2" id="e4747193-f34b-4832-82bd-23373b3e8579">
        <property key="cost" value="24"/>
        <property key="label" value="node 2\ncost is ${property:cost} €"/>
      </element>
    </folder>
  </folder>
  <folder name="Motivation" id="6daded04-0965-41b0-aaa9-20797cc3f70c" type="motivation"/>
  <folder name="Implementation &amp; Migration" id="aef0104c-327c-4f13-8993-59d33b93bc7d" type="implementation_migration"/>
  <folder name="Other" id="129a22e0-cda9-4216-8537-fbc725d60f2a" type="other">
    <element xsi:type="archimate:Location" name="Datacenter" id="92d0eef4-16b1-49b6-b109-a2944395696b">
      <property key="label" value="datacenter\ncost is ${sumx:property:cost} €"/>
      <property key="cost" value="100"/>
    </element>
  </folder>
  <folder name="Relations" id="332551c8-28bc-4168-b123-5a084fbf65c4" type="relations">
    <element xsi:type="archimate:FlowRelationship" name="node1 to node2" id="25192a0f-cfed-4b0a-87e8-c10cb77dfa91" source="b2169f00-c0f0-4ac9-ade7-8ade4e40135c" target="e4747193-f34b-4832-82bd-23373b3e8579"/>
    <element xsi:type="archimate:CompositionRelationship" id="d782b240-737e-4353-9903-5f994dd6fe72" source="92d0eef4-16b1-49b6-b109-a2944395696b" target="b2169f00-c0f0-4ac9-ade7-8ade4e40135c"/>
    <element xsi:type="archimate:CompositionRelationship" id="b5f86a42-9eaf-4977-a7e7-5c19a6babd64" source="92d0eef4-16b1-49b6-b109-a2944395696b" target="e4747193-f34b-4832-82bd-23373b3e8579"/>
  </folder>
  <folder name="Views" id="f76d44bd-0cbe-433b-af50-24ea1667b60f" type="diagrams">
    <element xsi:type="archimate:ArchimateDiagramModel" name="Default View" id="d290d7fb-9375-408b-8343-98cd400b834e">
      <child xsi:type="archimate:DiagramObject" id="5973db03-198c-4155-a20f-01a6a77eed83" archimateElement="29767061-378c-4832-aaed-4b839acf6766">
        <bounds x="168" y="36" width="120" height="55"/>
      </child>
      <child xsi:type="archimate:DiagramObject" id="90fb515a-755d-4481-b5c4-a234b17a52a7" archimateElement="92d0eef4-16b1-49b6-b109-a2944395696b">
        <bounds x="24" y="108" width="397" height="145"/>
        <sourceConnection xsi:type="archimate:Connection" id="8d5b7fde-7327-4524-ab13-d261faeef41d" source="90fb515a-755d-4481-b5c4-a234b17a52a7" target="0d375ca2-0ad7-4933-8df9-363942585b92" archimateRelationship="d782b240-737e-4353-9903-5f994dd6fe72"/>
        <sourceConnection xsi:type="archimate:Connection" id="b83a97b5-f998-422d-a61b-ac967ac3324c" source="90fb515a-755d-4481-b5c4-a234b17a52a7" target="d2b60400-549e-484a-a359-e0c49f8004ad" archimateRelationship="b5f86a42-9eaf-4977-a7e7-5c19a6babd64"/>
        <child xsi:type="archimate:DiagramObject" id="0d375ca2-0ad7-4933-8df9-363942585b92" targetConnections="8d5b7fde-7327-4524-ab13-d261faeef41d" archimateElement="b2169f00-c0f0-4ac9-ade7-8ade4e40135c">
          <bounds x="24" y="60" width="120" height="55"/>
          <sourceConnection xsi:type="archimate:Connection" id="78c83e19-c034-4d17-bbcb-f1240b089198" source="0d375ca2-0ad7-4933-8df9-363942585b92" target="d2b60400-549e-484a-a359-e0c49f8004ad" archimateRelationship="25192a0f-cfed-4b0a-87e8-c10cb77dfa91"/>
        </child>
        <child xsi:type="archimate:DiagramObject" id="d2b60400-549e-484a-a359-e0c49f8004ad" targetConnections="78c83e19-c034-4d17-bbcb-f1240b089198 b83a97b5-f998-422d-a61b-ac967ac3324c" archimateElement="e4747193-f34b-4832-82bd-23373b3e8579">
          <bounds x="245" y="60" width="120" height="55"/>
        </child>
      </child>
    </element>
  </folder>
  <purpose>purpose</purpose>
</archimate:model>


It uses two formulas:

  • ${view:sum:property:cost} used in a Node. It can be decomposed to:
                view: select the view that contains the Node
                sum: recursively select each concept in that view (including the view itself) and calculate the sum of
                property:cost: the value of the "cost" property
  • ${sumx:property:cost} used in a Location (which is a also a container)
                sum: recursively select each concept in the  container (but exclude the container itself) and calculate the sum of
                property:cost: the value of the "cost" property
[/li]
[/list]

Hope this helps
Best regards
Hervé