Author Topic: Lemontree and Git to manage eapx files  (Read 440 times)

Paul Vermette

  • EA Novice
  • *
  • Posts: 13
  • Karma: +0/-0
    • View Profile
Lemontree and Git to manage eapx files
« on: February 13, 2019, 12:18:07 am »
Has anyone successfully used git and lemontree to manage their ea model with a larger team?

https://community.sparxsystems.com/news/1140-product-family-engineering-with-enterprise-architect-and-lemontree-by-lieberlieber

Geert Bellekens

  • EA Guru
  • *****
  • Posts: 9213
  • Karma: +245/-27
  • Make EA work for YOU!
    • View Profile
    • Enterprise Architect Consultant and Value Added Reseller
Re: Lemontree and Git to manage eapx files
« Reply #1 on: February 13, 2019, 12:20:03 am »
Paul,

I think you should only look at Lemontree if you really need to merge models.

If it's only for version control you are probably better off using one of the standard version control integrations.

Geert

Paul Vermette

  • EA Novice
  • *
  • Posts: 13
  • Karma: +0/-0
    • View Profile
Re: Lemontree and Git to manage eapx files
« Reply #2 on: February 13, 2019, 01:52:16 am »
Thanks for the response.

Maybe I should start w/ the problem I am trying to solve.

We have the case where we have our "Current State Architecture" that represents what is in production.

We also have the case of many projects which is changing the architecture, BUT we don't want to show this in the "Current State Architecture" until the project has been successfully deployed into production.

Is there features in Sparx EA that I may not be aware of that can handle this scenario without the need to merge models?

Geert Bellekens

  • EA Guru
  • *****
  • Posts: 9213
  • Karma: +245/-27
  • Make EA work for YOU!
    • View Profile
    • Enterprise Architect Consultant and Value Added Reseller
Re: Lemontree and Git to manage eapx files
« Reply #3 on: February 13, 2019, 02:11:20 am »
Paul,

What you are trying to achieve is next to impossible because of the merging.

But I'm also not convinced that you actually need or want what you are describing.

What happens if two projects happen to touch component X?

Project A starts and looks at the current state of Component X
- Project A starts modifying component X, in the "tobe-A" model, not visible in the current architecture.
Project B start and looks at the current state of Component X
- Project B starts modifying component X, in the "tobe-B" model, not visible in the current architecture. Project B is unaware of any changes made to ComponentX by project A
- Project A goes into production with the new ComponentX
- Project B wants to go into production but discovers that ComponentX has changed in the meantime (or they don't discover this and reverse the changes made by ProjectA)

My experience is that this works best if everyone works on the same model, which is a combination of TOBE and ASIS.

What is crucial is that you have some kind of way to track changes, so that ProjectB can see that ComponentX is being modified by Project A


Geert

Paul Vermette

  • EA Novice
  • *
  • Posts: 13
  • Karma: +0/-0
    • View Profile
Re: Lemontree and Git to manage eapx files
« Reply #4 on: February 13, 2019, 05:39:21 am »
Thanks for the insight

Glassboy

  • EA Practitioner
  • ***
  • Posts: 1276
  • Karma: +102/-75
    • View Profile
Re: Lemontree and Git to manage eapx files
« Reply #5 on: February 13, 2019, 07:39:37 am »
We have the case where we have our "Current State Architecture" that represents what is in production.

We also have the case of many projects which is changing the architecture, BUT we don't want to show this in the "Current State Architecture" until the project has been successfully deployed into production.

What your projects model as their target state never becomes current state.  If you try and merge a project model into your current state model you will end up with a current state that is wrong in a huge number of subtle ways.

When a project has delivered you need someone to look at what was delivered, not what was modelled to be delivered, and update your current state.

qwerty

  • EA Guru
  • *****
  • Posts: 10395
  • Karma: +229/-178
  • I'm no guru at all
    • View Profile
Re: Lemontree and Git to manage eapx files
« Reply #6 on: February 13, 2019, 07:55:04 am »
What I recommend is to have a (as far as possible) stable kernel. This can be imported and locked in(to) various models (using VC or EA locking; I prefer the latter). This kernel can be read and referenced by many branches you handle in separate repositories (be it as-is and to-be or variants of whatever purpose). So you can go on independently with those branches until you decide to change the kernel for some reason. Now it's getting tricky. When you change the kernel it will influence the different branches in various non-congruent ways. You need a strong team to handle these changes as it takes a lot of effort (and often enough quite some testosterone) to settle these changes. For that there is no silver bullet, except you can aim good enough and kill the worst opponents with one shot :-/

q.

Sunshine

  • EA User
  • **
  • Posts: 830
  • Karma: +64/-4
  • Its the results that count
    • View Profile
Re: Lemontree and Git to manage eapx files
« Reply #7 on: February 13, 2019, 10:24:21 am »
A repeating topic about state. Sparx EA features to consider using for Current State to Future State;
Can use clone structure as new version and have multiple objects and diagrams in the model taking snapshots.

Or you could have a current state and future state objects and diagrams in two package trees.
 i.e.
- Production
- Project
 
Snap shot the current state package (Production) and children.
Copy diagrams from Production to Project  (future state) using links
Update the copy of the diagram and add new objects which are then stored under project package.
Modifying objects is a little more tricky. You can either modify the existing object but that changes production copy the existing object however you have a backup and can revert back. Alternatively you can copy an existing object to the project package and updated it. Problem then is you have two of the same object.
Once project goes live into production move the diagrams and objects to the Production Package and delete any older duplicates of existing elements if they were created.
Take another snapshot of production.
You can also draw one diagram and use filters and phase attribute on objects to show which element is in which phase. Hide or grey out the elements that aren't part of the phase.

No perfect answer just some options to consider depending on your needs.
Happy to help
:)