Architect’s role in the context of ADM is focused on designing the logical design level and making the decisions on how the implementation should be automated.

Architect can work closely with senior developer in all the phases of the process; the designing phase, creating the reference example and moving the reference to the generators. Senior developers can perform all the tasks alone while architect is the one responsible for making the design and generation decisions.


Extracting Abstraction From Existing Code

  1. Recognize abstract/logical components within the solution/code. This suits particularly well in a situation, where there is large codebase that requires unifying and refactoring. Focusing exactly how the thing should be done and what’s the logical process.
  2. Estimate and analyze the one level higher abstraction than what is currently being done. It might be worthwhile for example abstract out the technology specific terminology and focus on the logical structure. Abstracting out the technology makes it trivial to change the underlying technology frame with easily maintainable implementation. Sometimes the change might not require changes at all in other than the code generator.
  3. Code the reference solution as usual (this can be before designing the abstraction as it usually helps to realize the proper abstraction). If there are large differences in different logical solutions, estimate how many different references are needed to cover the entire field.
  4. Recognize the absolute information in the logical model; what is logically required for the implementation.
  5. Parametrize the code replacing the absolute information blocks with parametrized content => making the code generation template that is driven by the information gathered above.
  6. The template will include places for the case-specific custom code. However the code is not all over the place, but in strictly controlled places. The implementation is enforced with interfaces, abstract base classes or simply generating method calls to non-existent methods that demand implementation in partial classes.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s