2015-01-22

Enrich RBAC and ABAC with ProBAC, #infosec #security #BPM

1 The problem


For the stable functioning of an enterprise, it is mandatory to define up-front WHO (person, system, role) can DO SOMETHING (e.g. read, update, delete) with WHAT (tangible or intangible asset or resource), WHEN (at a particular moment of time), WHERE (from which tool, environment), WHY (justification) and HOW to impose this.

There are two popular techniques:
  1. Role-Based Access Control (RBAC) is about what role (WHO) can execute what operation (DO SOMETHING) on a particular object (WHAT).
  2. Attribute-Base Access Control (ABAC) is about granting rights to users (WHO) through the use of policies which combine attributes together. The policies can use any type of attributes: user (WHO) attributes, resource (WHAT) attributes, environment (WHERE) attribute etc.
To provide a reasonable granularity, RBAC causes an explosion of roles and ABAC causes an explosion of rules. Both techniques are static and require a lot of work to handle compound resources.

2 Process-Based Access Control (ProBAC)


To reinforce the governance, management and operations over the classic access control techniques, it is proposed to consider the access control with the context of business processes.

The enterprise functioning is considered as business activity flows spanning systems, employees, customers and partners within and beyond the enterprise boundaries. Various roles as well as tangible and intangible resources are involved in each business activity. Some resources are read-only for some of those roles; other resources can be modified by some of these roles. (Of course, we remember, that for each activity, the RACI pattern may be applied).

The illustration below shows this in dynamic:
  1. by default, the roles associated with a particular activity have no access to the resources associated to this activity;
  2. an actor (a concrete staff member) who claimed this activity is granted necessary permissions to do something with the associated resources;
  3. as the actor finished the activity, all given permission are revoked.


This is the principle. Of course, the activity life-cycle is more complex because of delegation, escalation, cancellation and un-claiming. Each change of activity’s state should

3 Link to microservices

ProBAC, as a way to know the context, also simplifies the use of microservices - see http://improving-bpm-systems.blogspot.ch/search/label/%23microservice  .

4 Bigger picture of the information security


ProBAC is an integral part of the bigger picture which enhances the enterprise-wide information security – see http://improving-bpm-systems.blogspot.ch/search/label/%23security



Thanks,
AS

2015-01-20

Business process in #BPMN - flow-of-control or flow-of-assets ?

This blogpost explains in more details one of business-process-related misunderstanding (number 8, process as a flow-of-resources) from the blogpost http://improving-bpm-systems.blogspot.ch/2015/01/common-understanding-of-bizarch.html

One of the root cause of this misunderstanding is a confusion between Flow-Of-Control (FOC) and Flow-Of-Assets (FOA). Note: assets maybe tangible (e.g. goods, products) and intangible (e.g. money, value, cost, information). Assets are more generic than resources.

Flow of assets


FOA is a coordination between different activities by sending to them and receiving from them some assets to transform. Process as FOA is executed as in illustration below. Activities are only activities for transformation of assets.


IDEF0 notation and many diagrams with exchange of data between various systems or components are typical FOA.

     

Flow-of-control


FOC is a coordination between different activities by sending to them and receiving from them a special marker (token). Activities are free to fetch some assets as inputs and deposit some assets as outputs. Thus, activities that do other “work” in addition to transforming inputs to outputs (e.g. monitoring) are explicitly coordinated as well.


Workflow notations and BPMN are examples of FOC.

Example


Cooking is an example of FOC. For example, to prepare a Swiss raclette, it is mandatory to complete all the following activities: 1) turn on the heat and melt cheese, 2) fry onions, 3) boil potatoes, 4) brown bacon and 5) find pickles, at the same time (or just-in-time). Depending of the situation, one has to start different activities at different time and coordinate their cooking.

More complex cooking example is the serving of different dishes at the same time. The chef coordinates their preparation.

Conclusions


Business process in BPMN is explicitly-defined FOC.

FOC defines FOA which is implicit but easy to generate (or make explicit). At the same time, it is not possible to generate FOC from FOA.

Value-stream is FOA for assets which are related to value – cost, products, etc.




Value-stream is a view-point (projection) on the underlying end-to-end business processes (more correctly, a system of processes).

Another example of FOA is VDML.

Maybe related topic - http://en.wikipedia.org/wiki/Behavioral_modeling

Thanks,
AS



2015-01-11

Common understanding of #bizarch (business architecture) and #BPM

1 Introduction

This blogpost was inspired by the following documents/discussions:

a) “BA and BPM Alignment Position Paper” http://c.ymcdn.com/sites/www.businessarchitectureguild.org/resource/resmgr/BAtoBPMAlignmentPositionPape.pdf

b) “Harmon on BPM: Processes and Capabilities” http://www.bptrends.com/processes-and-capabilities/

c) Linkedin discussion “Business Architecture and Process” https://www.linkedin.com/groupItem?view=&gid=84758&type=member&item=195960665&commentID=-1&trk=groups_item_detail-b-jump_last#lastComment

In addition, the several related blogposts are listed at the end of the document.

2 About definitions, as usual


There are two basic architectural concepts which must be clearly defined:
  1. capability because it is essential for bizarch – as stated in ref. a).
  2. business process because it is essential for BPM 
Having them defined, it is possible to define bizarch and BPM. But, a definition of “function” is useful as well.

2.1 Function


Function is abstract grouping of activities that collectively satisfy a specific operational purpose (e.g. management of relationships with partners). Functions deliver identifiable changes to assets.

A business function typically has the suffix ‘management’ in its name (e.g. ‘Customer Relationship Management’), but it can also be a noun (e.g. ‘Marketing’); usually, function name specifies something that is performed continuously.

Functions are unique within the enterprise and should not be repeated. Functional viewpoint has a hierarchical structure. Its structure is very static (with a low rate of change).

The functional viewpoint emphasizes WHAT the whole enterprise does to deliver value to the customer (without the organizational, application, and process constraints).

Some organisational units can span several functions; furthermore, organization charts (organigrammes) may change while the function does not.

2.2 Business process


The several definitions of process mentioned in refs a) and b) are correctly saying that process is HOW work is accomplished in an enterprise, but they emphasize on non-important details such as “set of activities” or “series of activities” or “inputs into outputs”

Considering an enterprise as a set of activities or as a “magic” box with inputs and outputs is a bit shallow approach (like defining a forest as a group of trees instead of Complex ecosystem in which trees are the dominant life-form). The essence of the process is the coordination of business activities for desired functioning of an enterprise.

Business process is an explicitly-defined coordination for guiding the purposeful enactment of business activity flows.

Note: In other words, a business process is an agreed plan (to coordinate some activities) and plan’s enactment; the plan may include some variants and will possibly allow for some changes during its enactment, i.e. by re-planning.

Also, popular related terms are:

Process template is an abstract description of a business process.

Process instance is an enactment of a process template.

Relationships between process templates and process instances are described in ref. 10) which shows that processes maybe very flexible and they cover “case management”.

Properly done, a business process serves many purposes:
  • a model and communication tool during the design period;
  • input for project evaluation (including impact analysis);
  • input for project planning and execution;
  • an executable program for the coordination of work;
  • documentation for all staff members;
  • a “single source of truth” for operating control and monitoring;
  • a framework for internal control and security enhancement;
  • the basis for management decisions.

2.3 Clearing several wide-spread misunderstandings about business processes

1 No explicit separation between “planning of work” (i.e. process template) and “observing work” (i.e. process instance)

Because practically all definitions of “business process” does not emphasize the fundamental difference between “planning of work” and “observing work”, then the majority of people understand “process” as “process instance”. Because that natural processes are actually observed sequences of connected changes, people equate “natural processes” with “business processes”.

But, the line managers’ primary interest is in “planning work”, not “observing work”.

2 Process transforms inputs into outputs

This resource-centric view of processes is popular because flow of resources is very visible (especially before the digital era) and it is used by the IDEF0 notation, but the visible moving resources is managed by a less visible coordination. Business process is a flow of control and not a flow of resources (tangible and intangible ones including value). Also, there are processes without input, output or both.

3 Business process is consider as a flowchart

It is fundamentally wrong to equate business processes to flowcharts. The latter is only one, although very popular, coordination technique that can be exploited by the former. See ref. 9) for details.

Flowcharts are used for expressing strong coordination (and thus tight coupling) between business activities. Inter-functional or inter-departmental coordination is much weaker thus other coordination techniques (e.g. event-based or goal-based) are used to express coordination between processes from different functions or departments. But, explicit weak coordination can improve the enterprise flexibility and agility.

4 Business process equals to BPMN

The BPMN standard makes explicit only a few, primarily, flowchart-based and, slightly, event-based coordination techniques. Other coordination techniques are covered by other various industry and de-facto standards such as CMMN, TDM, EPN, etc.

Business process may use many coordination techniques – see ref. 9).

5 An end-to-end process can be expressed as a flowchart

End-to-end processes cross many organisational units and functions. Such processes require, in general, several coordination techniques not just flowcharts. For example, ordering physical items (e.g. books) from an Internet shop (e.g. Amazon) is a group of flowchart-like processes: 1) order a group of books, 2) process single book and 3) collect books into a parcel. Some of these processes handle multiple objects per instance, others handle one object per instance (thus exist as several instances). Coordination between processes should be implemented by events.

6 Business process is just an illustration of the real work

The well-known catch-phrase “all models are wrong, but some are useful” is mistakenly applied to process models. Properly done, process model is a key for an “algorithm” to run the business. Such a process model is a skeleton for an implementation.

The power of business process is in their ability of being executable that means that process instances are enacted, which may include automated aspects. Conceptually, the process instance executes itself, following the process template, but unfolds independently of the author or owner of the process template.

The following table compares illustrative processes and executable.
Usage of business processes
Illustrative model
Executable model
Example
Coordination of work
Subject to personal interpretation
Commonly agreed and objective
Corporate knowledge
Usually disconnected from reality
What we know is what we do
Source for operating control
Post factum
Proactive
Framework for internal control
Based on willingness
Enforced objectively
Framework for information security
Usually not considered
Dynamic and proactive
Basis for management decisions
Subjective and post mortem
Objective and on-demand


7 Coordination may be implicit

Often, the explicitness of the coordination is forgotten and the same process is modelled “service-like” (as the right part of the illustration below) instead of being a normal flowchart (as the left part of the illustration below).

         


8 Process is a flow-of-resources - see http://improving-bpm-systems.blogspot.ch/2015/01/business-process-in-bpm-flow-of-control.html

Not exactly. By definition, process is a flow-of-control and the flow-of-resources can be derived from the flow-of-control.

Note: Flow-of-control uses a special marker (token) to indicate which activities are active. This is analogous to a well-organised meeting where the chairperson decides who talks next.

2.4 Capability


In accordance with ref. a):
business capability is a particular ability or capacity that a business may possess or exchange to achieve a specific purpose or outcome.

From the systemic point of view, capability is an attribute of a component of a system and not a component in its own right. The word “business” in the above definition may mean any structural component of an enterprise, e.g. the whole enterprise or a particular function. It is correct to say “capability of an enterprise”, “capability of a particular business function” or “capability of a particular business process”.

Capability is a performance-estimation of a component-in-focus as a black-box with all other components which are used by this component-in-focus as shown in the illustration below. (green arrows are values, red arrows are expenses, width of arrows is proportional amount of values or expenses). See ref. 5 for details.


Because the definition in ref. a) does not mention any quantifiable measures (thus sounds binary – possess vs not possess) then this definition probably is about performance-qualitative-estimation.

As just performance-qualitative-estimation, capabilities are classifications not hierarchies.

Although capability-as-a-performance-qualitative-estimation is a very useful concept, it is not sufficient to reply to all questions from business leaders. For example, the president of a regional development bank asked: our investment fund will be twice bigger next year – do we need to double the IT department to manage this new fund?

Thus, it is necessary to consider also capability-as-a-performance-quantitative-estimation. Although, quantitative measurements are more difficult to obtain than qualitative ones, the former are more useful than the latter as decision-taking input. An example of such measurements is given in ref. 11). Executable processes is the base for performance-quantitative-estimation of the business.

The relationships between capabilities, functions, processes and services are illustrated below.


2.5 Business Process Management (BPM)


A reduced copy from refs 6) and 7).
Discipline is a coherent set of governing rules.

Business activity is a unit of work. Individual business activities are interrelated somehow. The relationships between business activities are static (expressed as structure) and dynamic (expressed as behavior).

Enterprise functioning can be considered as business activity flows (or streams) spanning the applications, employees, customers and partners within and beyond the boundaries of the enterprise.

Management discipline is a discipline for the better management of the enterprise functioning in support of the enterprise goals.

Process-based management discipline (TQM/QMS, BPR, TPS, 6Sigma, BPM, etc.) is a management discipline which exploit the concept of “business processes”.


Business Process Management (BPM) is a process-based management discipline for the use of any combination of
  • modelling,
  • implementation (potentially including automation), 
  • execution, 
  • control, 
  • measurement and 
  • optimization 
of business processes.

2.6 Business architecture


In accordance with ref. a):
Business Architecture is a blueprint of the enterprise that provides a common understanding of the organization and is used to align strategic objectives and tactical demands.

It is commonly agree that a business is a system thus architecture of a system is more than, in accordance with ref. a), “a logical scheme for defining system’s interfaces and arranging system’s components”. Enterprise architecture practice considers that architecture of a system is about:
  1. relationships between its components and 
  2. the principles governing the design, implementation and evolution of a system.
Structure is only visible (often static) part of relationships; behaviour is (often invisible) dynamic part of relationships. It seems that the above definition of business architecture is taking into consideration only the visible relationships (blueprint is an architectural plan for people who are creating a particular version of an enterprise).

It seems that the Business Architecture Guild (www.buisnessarhcitectureguild.org) considers bizarch as a discernible representation of the current state of enterprise from particular viewpoints – which is mainly the item 1 from the previous list. At the same time, “the principles governing the design, implementation and evolution of a system” are not explicitly addressed by the business architecture from Business Architecture Guild yet.

2.7 Value stream


In accordance BIZBOK 3, value stream is “An end-to-end collection of activities that create a result for a customer, who may be the ultimate customer or an internal end-user of the value stream.” Value stream is decomposed into stages which are “A distinct, identifiable phase or step within a value stream that has a unique name, entrance criteria, exit criteria, and identifiable participating stakeholder(s).”

Although value stream sounds like processes, the ref. a) provides an explanation why value-stream and process are different. This explanation will be discussed below.

3 Comparison framework from the ref. a)


The ref. a) defines a comparison framework based on four key concepts. Below these concepts are applied to BPM and business processes without the mentioned above wide-spread misunderstanding.

Span of control – As processes are flows-of-control and processes may use various coordination techniques (not only flowcharts) then processes may span the applications, employees, customers and partners within and beyond the boundaries of the enterprise. The “longest” processes we manage are “end-to-end” processes.

Decomposition – Decomposition (analysis) is only a half of process implementation and it is followed by composition (synthesis) to get the desired performance (output, expenses and value). Composition is responsible for obtaining more than just a sum of components (synergy). Decomposition and composition are defined by a practicing process modelling procedure, e.g. as presented in ref. 14.

Triggering and End states – A process must have a start and, maybe, some finishes; they are as precise as contracts because each process behaves as a service from an external point of view.

Exchange interfaces – A process may use some services in its implementation. A service may be implemented as another process or not.

4 Value-streams vs processes


4.1 Resume

With a proper understanding of processes and BPM, a value-steam is a value-centric viewpoint of end-to-end processes which highlights value-achievement milestones and some value-added activities. The use of BPM makes value-streams quantitate.

4.2 Span of control

Processes’ span of control is not artificially limited. It is a choice of stakeholders. Thus there is not difference between processes and value-streams.

4.3 Decomposition

Because value-streams are decomposed into stages, this management construct (value stream and its stages) looks like a set of sequential value-based milestones because they are concentrated on achieving some results (i.e. created value).

Making explicit such big steps or stages is a normal process modelling technique – see modelling procedure in ref. 14.

4.4 Triggering and end states

Value-streams are equivalent to end-to-end processes concerning begin and end states.

4.5 Exchange interfaces

The explicit way of composition of processes (formal) and value-streams (informal) shows how a “big” value is created from “smaller” ones.

5 Capabilities vs processes

5.1 Resume

With a proper understanding of processes and BPM, capability is a performance-oriented viewpoint on processes as black-boxes. The use of BPM makes capabilities quantitate.

5.2 Span of control

Because a capability is a performance viewpoint on a particular business functionality which can be rather complex (i.e. an enterprise) then a single flowchart (which is the understanding of processes used in ref. a) cannot be matched to a capability. 

With the proper understanding of processes, a group of linked (via explicitly coordinated) processes expressed as flowcharts can correspond to a capability.

5.3 Decomposition

It is very correct that processes equated to flowcharts are difficult (and often just impossible) to present as a consistent hierarchy. The use of various coordination techniques allows to implement (and thus match) a complex capability as a group of linked (via explicitly coordinated) processes which are expressed as flowcharts.

5.4 Triggering and end states

Capability is a static viewpoint. Processes are dynamic viewpoint. Obviously their start/finish events are differently. But, capabilities, processes, services and functions are about a functional entity within an enterprise.

5.5 Exchange interfaces

Process is an explicitly-defined relationships between events, rules, roles, data, documents, services, audit trails and KPIs. Thus processes are richer constructs than capabilities.


6 Enterprise-is-a-system but a system-of-what?


No doubts that an enterprise is a system with many components of various artefacts (or concepts or types). There are many (static and dynamic) relationships between these artefacts. Some of the artefacts are “free” variables in these relationships and other artefacts are “bound” variables. For example, an enterprise may add more and more staff members (free variable) into a project, but this only will make the project later (project time is a bound variable) as it is stated in the Brooks’ law, “Nine women can't make a baby in one month”.

What are the essential artefacts for bizarch?

Ref. a) lists some of them: “As part of the practice of business architecture, we separate the concern of what we do (capability), from who does it (organisation), from how value is achieved (value stream), from how it is done (process), from the information that is needs from the systems that are use, and so on.”

Actually, there are many business-related artefacts which are listed below.


Strategy artefacts
  • business drivers
  • business goals
  • strategic objectives
Governance artefacts
  • business directions
  • business model
  • functions
  • capabilities
  • organisational structure
  • portfolios
  • policies
  • operational model
  • AS-IS and TO-BE states
Management artefacts
  • risks
  • compliance
  • decision rules
  • projects
  • KPIs

Operations artefacts
  • services
  • processes
  • staff members
  • decision rights
  • knowledge
  • audit trails
  • events

Value artefacts
  • products (tangible)
  • benefits (intangible)
  • customer experience (intangible)
  • value system, value chains, value streams
  • cost
  • assets (tangible)
  • capabilities (intangible)
  • information (intangible)
  • expenses (negative cost)
All these artefacts are somehow interrelated to each other. Is there an artefact X which “defines” all other artefacts? Is there a system-forming artefact? Then we can say that an enterprise-as-a-system-of-artefact-X. How to find this artefact X?

Let us select some of them (capability 1, capability 2, process, value, expenses) and make a table with relationships between them: e.g. artefact A (in a row) influences artefact B (in a column).


We can see that there is a circular relationship between capability and process. Problem? No, just a natural recursive. Higher-level capability is WHY for a process and the process defines WHY for lower-level capabilities as shown in illustration below.

Important, that only the top-level WHY is coming from “outside”; but all other WHYs are results of the process modelling. It means that an enterprise-is-a-system-of-processes. Practically all others artefacts may be derives from processes. See ref. 8).

Note that capability is WHY for a service, but the latter does not make its composition explicit thus no further recursion.

7 bizarch and BPM reconciliation


Just a few points:
  1. Value-stream is a value-centric viewpoint on processes (especially, end-to-end or high-level processes). value-stream is a flow-of-assets.
  2. Capability is a performance-oriented viewpoint on functions (and process & services).
  3. Capability is a measure of performance – quantitate or qualitative.
  4. Quantitate measures require proper (primarily executable) composition model of how a bigger component is made from the smaller components, e.g. process-based.
  5. Basic terminology for business architecture (primarily, capability, function, service and process) should be publicly discussed and commonly-agreed.
  6. Business architecture (as defined by Business Architect Guild) should progress from “blueprint” to normal architecture (probably under guidance of the enterprise architecture).
  7. Business architecture (as defined by Business Architect Guild) should progress from a static/qualitative architecture to dynamic/quantitate one.
  8. Vision “enterprise-is-a-system-of-processes” should be further discussed to be, potentially, commonly-accepted.
  9. BPM and executable processes are the key to enterprise-is-a-system-of-processes.
  10. Enterprise-is-a-system-of-processes is the key for dynamic and quantitate business architecture.

Some BPM benefits are listed in ref. 12).

8 References


1) “Concept "capability" for #BPM, #entarch and #bizarch, version 1” http://improving-bpm-systems.blogspot.ch/2014/08/concept-capability-for-bpm-entarch-and.html

2) “Conference "BPM in Practice" Vinlius, Lithuania” http://improving-bpm-systems.blogspot.ch/2013/10/conference-bpm-in-practice-vinlius.html

3) “#bizarch artefacts concept map” http://improving-bpm-systems.blogspot.ch/2013/06/bizarch-artefacts-concept-map.html

4) “#bizarch artefacts definition; again” http://improving-bpm-systems.blogspot.ch/2013/03/bizarch-artefacts-definition-again.html

5) “Explaining EA: business architecture basics 1” http://improving-bpm-systems.blogspot.ch/2011/02/explaining-ea-business-architecture.html

6) “Definition of #BPM and related terms, again” http://improving-bpm-systems.blogspot.ch/2014/01/definition-of-bpm-and-related-terms.html

7) “#BPM related TLAs comparison” http://improving-bpm-systems.blogspot.ch/2014/03/bpm-related-tlas-comparison.html

8) “Enterprise as a System Of Processes” http://improving-bpm-systems.blogspot.ch/2014/03/enterprise-as-system-of-processes.html

9) “Coordination techniques in #BPM” http://improving-bpm-systems.blogspot.ch/2014/03/coordination-techniques-in-bpm.html

10) “Illustrations for #BPM, #ACM, Case management, adaptive processes” http://improving-bpm-systems.blogspot.ch/2010/12/illustrations-for-bpm-acm-case.html

11) “Improvement software program performance’ publication as an illustration to the capability concept” http://improving-bpm-systems.blogspot.ch/2014/10/improvement-software-program.html

12) “Ideas for #BPMshift - Delenda est "Vendor-centric #BPM" - How can a company benefit from a BPM initiative?” http://improving-bpm-systems.blogspot.ch/2014/05/ideas-for-bpmshift-delenda-est-vendor_9.html

13) “Practical Process Patterns: Customer eXperience As A Process (CXAAP)” http://improving-bpm-systems.blogspot.ch/2013/06/practical-process-patterns-cxaap.html

14) “#BPM for business analysts: modelling procedure” http://improving-bpm-systems.blogspot.ch/2013/07/bpm-for-business-analysist-modelling.html

Thanks,
AS

2015-01-09

#BPM for CX (customer experience) - example

This blogpost is an illustration for the previous one "Practical Process Patterns: Customer eXperience As A Process (CXAAP) " http://improving-bpm-systems.blogspot.ch/2013/06/practical-process-patterns-cxaap.html

Below is an animation of  the ticketing process which is part of internal (corporate) processes and which has to work TOGETHER with a buying process (executed by a customer).

Explicit modelling of both processes allows to anticipate all possible touch-points (between corporate and customer) and arrange in advance that all touch-points work very well.



Potentially, the process mining should help us to find "customer process".

A related post at https://www.linkedin.com/pulse/understand-customer-lifecycle-create-impact-melvin-brand-flu


Thanks,
AS

2014-12-24

Architecting application architecture #apparch (inspired by #microservices)

Base references


A few interesting recent discussions about microservices:
have inspired me to write this blogpost in addition to the several recent blogposts:
  1. “#BPM for software architects - from monolith applications to explicit and executable #coordination of #microservices architecture” http://improving-bpm-systems.blogspot.ch/2014/08/bpm-for-software-architects-from.html
  2. “#BPM for the #digital age – Shifting architecture focus from the thing to how the things change together” http://improving-bpm-systems.blogspot.ch/2014/08/bpm-for-digital-age-shifting.html
  3. “e-government reference model #GeGF2014 #egov #entarch #bpm #soa” http://improving-bpm-systems.blogspot.ch/2014/10/e-government-reference-model-gegf2014.html 
  4. “#BPM for #SOA+#ESB+#API and #cloud (#PaaS and #SaaS)” http://improving-bpm-systems.blogspot.ch/2014/12/bpm-for-soaesbapi-and-cloud-paas-and.html 
  5. "Ideas for #BPMshift – Delenda est “vendor-centric #BPM” – How to modernise a legacy ERP" http://improving-bpm-systems.blogspot.ch/2014/04/ideas-for-bpmshift-delenda-est-vendor_27.html

And other references:

Disclaimer


In this blogpost I try to stay at the conception level and avoid any implementation details (such as WS, REST, XML, API, HTTP, JSON, Web, common libraries, Java, etc.) – let us validate the concept first and then talk about implementation techniques.

At the same time, it is considered that there is no commonly-agreed definition of “microservice”. One of the reference definition of “service” is in http://www.infoq.com/articles/updated-soa-principles .

My definition of “service” is “explicitly-defined and operationally-independent unit of functionality”.

Application architecture current challenge


If, for a moment, we are not fussy with the terminology then we can accept a current challenge in the application development as it is defined by Jean-Jacques Dubray (as a comment to the first reference): the microservice architectural style ...is an approach to developing a single application as a suite of small services.

In other words, the question is how to implement an application as an organised collection of many autonomous components. Each Autonomous Component (AC) is (potentially) distributed (in-house or in-cloud) and thus it is a unit of deployment (otherwise it can be deployed in a separate host).

Note: At present, it is not possible to claim that ACs are microservices or services.

I think that this is a natural step in the evolution of the application architecture.

From monolith: one unit of deployment, one “in-process” (in techie’s meaning – in the same JVM), simple inter-component communication (again “in-process”) and simple error-handling (again thanks to “in-process”).

Then moved to client-server with two units of deployment (but not yet autonomous components): fat client (presentation and some biz logic) and the rest.

Then to three-tier with three almost ACs: thin client (presentation, better UX), business logic (calculations) and data access layer.

Now, with the recent popularity of mobile equipment, in addition to IT-centric decomposition (presentation, logic, data) into ACs, there is an opportunity for functional decomposition into ACs. So, each AC may have its own UI/presentation, logic, data and additional access channels, e.g. classic API. An example of functional decomposition is a portal – a data-centric portal for navigation over some data or a function-centric portal or a combination of them.

Meaning of “autonomous”


The word “autonomous”, being a keyword, requires an extra explanation. Some people associate it with “...Independent Scalability, Independent Lifecycle and Independent Data” but, let us look at the full life-cycle of AC.

In general, such a detailed life-cycle has the following phases:
  • Contextualise (or define future AC’s usage/expenses - WHY)
  • Plan (or schedule AC’s design, build and run - WHEN)
  • Design (or define AC’s characteristics - WHAT)
  • Build (or implement AC -HOW)
  • Bind (or linking)
  • Deploy (WHERE)
  • Run
  • Monitor (or meter of the usage of AC - WHO)
  • Measure (or evaluate the performance of AC – WITH WHAT RESULTS)
  • Un-deploy

Considering that each AC will participate in one or many assemblies for provisioning a “bigger” solution (or richer functionality), ACs are interdependent at their “creation” phases (contextualise, plan, design, build). Imagine that a highly-efficient team is created by the careful selection and training of people.

Ideally, ACs are independent at their “operation” phases (deploy, run, monitor and measure). For example, a high consumption of CPU by one AC will have no negative effect on other ACs. Or, an AC may be stop, un-deployed, re-deployed and resumed without determination of the whole assembly performance.

But, the binding or linking of ACs into an assembly makes ACs dependent in accordance with their contracts. Up-steam dependency is related to the AC’s performance. Down-stream dependency may happen as well by imposing some ACs to be used. (Note: There are several techniques to reduce dependency).

Thus, autonomicity of each component will vary from more to less (independency, dependency and interdependency) at the different phases of the full life-cycle.

Structurally interdependent, behaviourally independent and contractually dependent (Note: there are behavioural rules like in a red-card football) – what a mixture.

Working together in assembles


There must be a set of common rules for AC to help ACs work synergistically together (as an assembly) for a common goal. I think about the following rules:
  • each AC acts similar to services, 
  • AC may have a particular specialisation: user-facing (interactive service), coordinator (orchestration, etc.), lawyer (decisional business rules), utility (basic functionality), resource (data, etc.), communicator (lightweight moderator), dispatcher (event handler?), referee (behaviour rules enforcer), porter (security service), registrant (naming services), etc.
  • to work together, ACs follows agreed admission rules: naming, formally defined interface, performance, behaviour, etc. Admission rules for different assembles may be different.
  • in particular, ACs may have to agree using some common ACs with assembly-wide functionality.
Must AC be small or not? Ideally, they should follow SRP.

In extreme, ACs may work together as a group of fully-universal-agents (no specialisation) or as a team of specialised ACs (some team-sports). Particular type of specialisation may be a coordination of ACs with “small or simple” functionality into an AC with “big or complex” functionality. (For example, combining “generate PDF”, “protect PDF by a digital signature” and “disseminate PDF” together.)

AC nomenclature


Let us try to use ACs for some modern ideas about a better application architecture (again don’t be fussy with the terminology) as one of them cites below:

“A modern application is a functional ecosystem comprising a loose association of apps and services. Apps implement the application front end (user-facing) to support a specific functionality on a particular type of device and interaction medium, and services implement the application back end. Together these apps and services support a particular business domain.” (Note, also RIA were talking about this).

I think that the following types of AC are necessary to cover the majority of “modern applications”:

  • various resources (primarily, data) – this is a typical data-access AC.
  • utilities – this is a typical data/documents transformation AC.
  • data/documents role-based mini-portal (select data/documents and initiate an operation on them) - this is a user-facing AC.
  • functional portals (select a function and execute it on some data/document) – this is a user-facing AC.
  • short-running (or synchronously executed or near-immediate completion) operation – this is a user-facing AC with some logic and invocation of some other ACs.
  • long-running (or asynchronously executed) operation – this is a orchestration-like AC for long-running coordination of people and ACs.
  • stateless and idempotent composition of some ACs for a composite operation – this is a low-code aggregation for invocations of other ACs.

Archetypes of application which can be constructed from ACs

Data-centric application archetype

Typical usage: browse a data repository, select and execute an operation.


Document-centric application archetype

Typical usage: browse a document repository, select and execute an operation.

Example: document management systems


Operation-centric application (with short-running operations) archetype


Typical usage: browse a static list of operations, select an operation, associate with it some data/documents, execute this operation.

Example: employee portal

Note: all operations are short-running – they are completed in less than a few minutes (so a person can wait for their completion in front of the screen).



The static list of operation is role-dependent.

Operation-centric application (with long-running operations) archetype


Typical usage: browse the static and dynamic lists of operations, select an operation, associate with it some data/documents, execute this operation.

Example: employee portal.

Note: all operations are long-running – they are completed in a few days / weeks (so a person cannot wait for their completion in front of the screen).




The static and dynamic lists of operation are role-dependent.

Real applications

There may be a mixture of mentioned above archetypes.

Conclusion


Do you see other types of application? Do you know other specialisations of AC? Please share.

Thanks,
AS

2014-12-03

Yet another definition of enterprise architecture #entarch and metrics for enterprise architects

My short definition of #entarch from the viewpoint of an enterprise architect

Enterprise Architecture (EA) is a system-thinking applied management discipline about essential decisions for coordinating people, processes, projects and products in 11 dimensions:
  1. focus space (biz unit, enterprise, country, etc.)
  2. architectural space (business, information, etc.)
  3. time span (project life-cycle, solution life-cycle, enterprise life-cycle, etc.)
  4. sector span (various industries)
  5. problem space (re-structuring, rationalisation, M&A, standardisation, etc.)
  6. solution space (from a concept to operations - like ZF rows)
  7. cultural space
  8. practice space (are you theoretician vs methodologist vs practitioner?)
  9. media space (physical vs analog vs digital)
  10. financial space (number of zero in the budget)
  11. people space (top, management, middle-management, super-users, workers)
Candidates:

  • environment
  • legal 
  • socio-technical vs technical system
  • CX span (touch point, journey, storytelling, lifecycle)
  • social space (gender equality, consensus building, conflict resolution)
  • person span (individual, house, personal cars, public places, etc.)
  • technology ?


Using the definitions below:
  • System-thinking applied management discipline is an applied management discipline which uses system-thinking approach.
  • Applied management discipline is a management discipline which applies scientific knowledge for solving practical problems.
  • Management discipline is a discipline for the better management of the enterprise functioning in support of the enterprise goals.
  • Discipline is a coherent set of governing rules.
And the self-contained definition will be:

Enterprise Architecture (EA) is a coherent set of governing rules for the better management of the enterprise functioning in support of the enterprise goals by applying system-thinking scientific knowledge for solving practical problems in coordinating people, processes, projects and products in 11 dimensions.

.......

This definition can be used as a metric to qualify enterprise architects. In my books, an enterprise architect must comply with the following:
  1. focus space: work for 1000+ people; 
  2. architectural space: able to contribute to all architectural domains; expert knowledge in 2-3 domains
  3. time span: have experience with complete enterprise life-cycle
  4. sector span: min 5 different sectors experience; able to find similarities between sectors
  5. problem space: leading min 3 critical enterprise-wide changes
  6. solution space: comfortable in min 4 rows
  7. cultural space: know culture specifics for the majority of staff members
  8. practice space: be good at least in 1 of these roles
  9. media space: make fully digital a whole company (100+ people)
  10. financial space: 1 M budget minimum
  11. people space: able to talk to everyone to explain how EA will address their concerns and change their working habits for the better
Thanks,
AS

#BPM for #SOA+#ESB+#API and #cloud (#PaaS and #SaaS)

Some recent reflection how some of TLAs should work together.

 Warning: slide # 7 has animation.
 

Thanks,
AS