Maximize Value from CMDB by Integration

In part 4 of “Memoirs of an Enterprise Architect” I discussed the rules around defining an application as well as the 6 keys to successful Application Portfolio Management.  In Part 5, I will discuss integrating with a Configuration Manage…

Categories Uncategorized

Placing Architecture Properly into Scrum Processes

As I’m about to complete my share of a longer engagement on using Lean principles to improve the processes at an online services firm, it occurred to me that the efforts we undertook to properly embed Architecture practices into their Scrum process were novel.  I haven’t seen much written about how to do this in practice, and I imagine others may benefit from understanding the key connection points as well.  Hence this post.

First off, let me be clear: Agile software development practices are not at all averse to software architecture.  But let’s be clear about what I mean by software architecture.  In an agile team, most decisions are left to the team itself.  The team has a fairly short period of time to add a very narrow feature (described as a user story) to a working base of code and demonstrate that the story works.  The notion of taking a couple of months and detailing out a document full of diagrams that explains the architecture of the system: pretty silly. 

The value of software architecture is that key decisions are made about the core infrastructure of the system itself: where will generalizations lie?  Will a layered paradigm be used, and if so, what are the responsibilities of each layer?  What modules will exist in each layer and why will they be created? How will the responsibilities of the system be divided up among the layers and components?  How will the modules be deployed at scale?  How will information flow among the modules and between the system and those around it?

The way these questions are answered will indicate what the architecture of the system is.  There are many choices here, and the “correctness” of any choice is a balance between competing demands: simplicity, security, cost, flexibility, availability, reliability, usability, correctness, and many more.  (These are called “System Quality Attributes”).  Balancing between the system quality attributes takes thought and careful planning.

So when does this happen in an agile process?

Let’s consider the architect’s thinking process a little.  In fact, let’s break the software architecture process into layers, so that we can divide up the architectural responsibility a little.  You have three layers of software architectural accountabilities.  (Repeat: I’m talking about Software Architecture, not Enterprise Architecture.  Please don’t be confused.  Nothing in this post is specific to the practice of Enterprise Architecture).  All this is illustrated in the diagram below.  (Click on the diagram to get something a little more readable. 

image

At the top, you have the Aligning processes of software architecture.  These processes consider the higher levels of enterprise architecture (specifically the business and information architecture) to create To-Be Software Models of the entire (or relevant) software ecosystem.  If you’ve ever seen a wall chart illustrating two dozen or more software systems with connectors illustrating things like flow of data or dependencies, you’ve seen a model of the type I’m referring to.  Creating and updating these kinds of diagrams is a quarterly or semi-annual process and reflects the gradual changes in the strategy of the enterprise. 

In the middle, you have the Balancing processes of software architecture.  These processes consider the needs of a single system but only from the level of deciding why the software will be divided up into modules, layers, and components, how that division of responsibility will occur, and what the resulting system will look like when deployed in specific technologies in a specific environment.  All of this can be conveyed in a fairly short document that is rich in diagrams with a small amount of text explaining the choices.  This occurs once when a system is moving forward, and the software architecture can be developed alongside the first couple of sprints as input to the third and subsequent sprints.

At the bottom, you have the Realization processes of software architecture.  This is where the architecture becomes software, and this is where decisions are made about the choice of specific design patterns, the appropriate level of configurability vs. simplicity, and the ability to demonstrate whether the actual intent of the architecture occurs in practice.  In agile, this layer occurs within the team itself.  The software architect can offer advice about what patterns to use, but it is up to the team to realize that advice and/or decide not to implement it.  The team will very likely implement the software architecture as described, but may choose to improve upon it.

What does the process look like

There are many visualizations of scrum running around.  Some are described in books, others in papers or blog posts.  Most share some common elements.  There is a product backlog that, through the magic of sprint planning, the team extracts a subset for the sprint.  This becomes the sprint backlog.  The illustrations then tend to show the various rhythms of Sprint as cycles (sprint cycles and daily cycles), ending with a demonstration and retrospective.

In order to illustrate and train a team on all elements, including the business analysis elements, we chose to be a bit more explicit about the steps PRIOR to sprint planning, including the processes of creating and improving the stories prior to the start of a sprint.  (as above, click on the image to enlarge it).

image

Astute observers will notice that we added a step that we are calling “pre-sprint story review.”  This is a meeting that occurs one week prior to the start of a sprint.  It is called by the product owner and he or she invites “senior chickens” (architects, user experience leads, development and test leads, and any other “non-team” members that want a say in the sprint. 

In that week prior to sprint planning, those folks, working with the product owner, can improve the stories, add constraints, refine the description and acceptance criteria.  And here’s where the architects get to play.  Architects fulfilling the role of “Balancing” in the model above will have (or can create) an outline document describing the architecture of the software system, and can “link” that document to the SPECIFIC STORIES that are impacted by that design. 

(Note: assuming you are using a tool like Microsoft’s Team Foundation Server, that fully enables Scrum in multiple forms, this is a nearly trivial activity since a document can be easily linked to any story.  Enough advertising.)

So is an architect a chicken or a pig?  Answer: depends on what “layer” the architecture is at.  The top two layers are chickens.  The third layer, realization, is done by the team itself.  The person on the team may or may not have the title of “designer”.  (I’d prefer that they did not, but that’s just because I believe that ALL team members should be trained to fulfill that role.  In reality, the skill may not be wide spread among team members).  Therefore, the third layer is done by the pigs. 

I hope this provides some insight into how a team can embed software architecture into their scrum cycles.  As always, I’m interested in any feedback you may wish to share.

Data Management 3: Realization of Entities in applications

<p class=”p1″><span class=”s1″>This is the third blog post in the Data Management series. Last time we discussed the notion of subject areas and entities. This time we zoom in on the realization of these entities in applications.</span></p><p class=”p1″><span class=”s1″><img alt=”Content. Data Management part 3″ src=”http://www.bizzdesign.com/assets/BlogDocuments-2/20130611_BasvanGils/Data-Management-realization-of-entities-in-applications.png” style=”width: 501px; height: 334px;” title=”Data Management part 3: Realization of Entities in applications”/></span></p><p class=”p1″> </p><p class=”p1″><img alt=”Data Management. Coverage analysis” class=”left” src=”http://www.bizzdesign.com/assets/BlogDocuments-2/20130611_BasvanGils/Data-Management-Coverage-Analysis.jpg” style=”width: 150px; height: 114px; float: left;” title=”A “coverage analysis” will be the tricky part”/></p><p class=”p1″>One of the things we should be able to do is to create views that show which systems have data about a certain Entity. Similarly, we want to link our Entities to Processes. Going forward, we will use the term ‘Data Object’ to differentiate between the Entity in a business context and its data-counterpart.  The ‘Attributes’ of Entities (see also our previous post), are reflected as ‘fields’ in their Data Object counterparts.</p><p class=”p1″> </p><p class=”p1″> </p><p class=”p1″> </p><p class=”p1″><span style=”font-size: 11px; line-height: 19px;”>A “coverage analysis” will be the tricky part: suppose that we have a Subject Area called ‘Customer’. The key Entity in this Subject Area is also called Customer with Attributes such as name, social security number etcetera. Other Entities are such things as shipping address, E-mail address, etcetera.  There are two things we want to visualize for business stakeholders:</span></p><p class=”p1″> </p><ol class=”ol1″><li class=”li1″><span class=”s1″>Which information with respect to a customer is relevant from a process perspective? Only name? Only Social Security Number? Both?</span></li> <li class=”li1″><span class=”s1″>Which information about a customer is stored in a system? One system may store the E-mail address of a customer, whereas the physical address  may sit in another system</span></li></ol><p class=”p1″><span class=”s1″>We have call this a “coverage analysis” because: from a data governance perspective we want to make sure that all Entities in a Subject Area, as well as all Attributes of an Entity are represented somewhere in a System!</span></p><p class=”p1″><span class=”s1″>This type of modeling is quite ‘standard’ in ArchiMate. There are separate concepts for </span><strong><span class=”s2″>BusinessObjects </span></strong><span class=”s1″>and </span><strong><span class=”s2″>DataObjects</span></strong><span class=”s1″>. Also, there is a standard way of relating the two, using a </span><strong><span class=”s2″>RealizationRelation</span></strong><span class=”s1″>. </span></p><p class=”p1″><span class=”s1″>The fact that </span><strong><span class=”s2″>DataObjects</span></strong><span class=”s1″> have Fields is modeled using a </span><strong><span class=”s2″>CompositionRelation</span></strong><span class=”s1″> and more </span><strong><span class=”s2″>DataObjects</span></strong><span class=”s1″>. This is not a very ‘pretty’ solution. Especially when a data object has many fields, the visualization will quickly become cluttered. For example, 4 </span><strong><span class=”s2″>DataObjects</span></strong><span class=”s1″> with 3 Fields each ads up to at least 12 concepts and 12 relations which has a high visual complexity. Using graphical nesting will result in a much cleaner visualization.</span></p><p class=”p1″><span class=”s1″>The standard way of modeling the relation between a system (</span><strong><span class=”s2″>ApplicationComponent</span></strong><span class=”s1″>) and a </span><strong><span class=”s2″>DataObject</span></strong><span class=”s1″> uses the behavioral concept of an </span><strong><span class=”s2″>ApplicationFunction</span></strong><span class=”s1″>. The idea is that an </span><strong><span class=”s2″>ApplicationComponent</span></strong><span class=”s1″> has (internal) behavior to manipulate </span><strong><span class=”s2″>DataObjects</span></strong><span class=”s1″>. While it is correct, and often useful to model </span><strong><span class=”s2″>Application Functions</span></strong><span class=”s1″>, for most visualizations it is equally useful to hide them and use a short-cut notation as follows:</span></p><p class=”p1″><span class=”s1″><img alt=”A model of application functions” src=”http://www.bizzdesign.com/assets/BlogDocuments-2/20130611_BasvanGils/Data-Management-model-application-functions.png” style=”width: 599px; height: 262px;” title=”model Application Functions”/></span></p><p class=”p1″><span class=”s1″>With respect to the coverage-type analyses mentioned previously, this could be done and visualized in many different ways such as:</span></p><ul><li class=”li1″><span class=”s1″>Select a Subject Area or an Entity and list (color view) all Data Objects that are  associated with it</span></li> <li class=”li1″><span class=”s1″>Select a Subject Area or an Entity and show (color view) all Systems that manage a data object that is associated with this Subject Area or Entity. </span></li> <li class=”li1″><span class=”s1″>Select a Subject Area and highlight (color view) the entities that have an associated Data Object that is managed by some system</span></li> <li class=”li1″><span class=”s1″>Generate a CRUD-matrix that lists which Entities are accessed by which Process. Use the CRUD notation in the cells to show the nature of the access relation</span></li> <li class=”li1″><span class=”s1″>Select a Subject Area and create a CRUD-matrix as listed above</span></li> <li class=”li1″><span class=”s1″>Select a Subject Area and create a CRUD-matrix that shows which System manages (!) a Data Object that is a realization of an Entity that sits in that Subject Area. At the intersection of the columns and rows we should list the name of the Entity</span></li></ul><p class=”p1″><span class=”s1″>Modern tools such as BiZZdesign Architect make these analyses fairly straightforward and reusable. We mentioned techniques such as creating color views and generating tables. This functionality is available in our Enterprise Architecture tool BiZZdesign Architect, which can be downloaded here (30-day free, fully featured, trial license). If you would like a demonstration, please leave us a note!</span></p><p class=”p1″><span class=”s1″>As a final thought for this posting: note that this list has a mix of different types of visualizations, such as diagrams and matrices. This is partly because of communication preferences of key stakeholders, but also because some results are easier to interpret in different formats. </span></p><p class=”p1″><span class=”s1″>In the next posting we will dive into Data Governance with a strong focus on data stewardship (Data Stewards are generally considered to be the heroes of the field), so stay tuned!</span></p>

Categories Uncategorized

How to build a Roadmap – Gap Analysis

This post will discuss how to develop a robust gap analysis to identify any significant shortcomings between the current and desired end state. We use these findings to begin develop strategy alternatives (and related initiatives) to address what has been uncovered. The intent is to identify the difference (delta) from where we are to what we aspire to become. This exercise is critical to identify what needs to be accomplished.

Ban the Word “Alignment” From Your Architecture

Something about the typical language of enterprise architecture is starting to bug me. The overuse of the word “alignment”. When people are asked to describe what enterprise architecture is all about, they often answer with the phrase “it’s about the alignment of IT with business strategy”. But is that enough? Should it be something more? […]

NOTES – actors, agents and extras in the enterprise

If the enterprise is a story, who are the actors in that story? What are their drivers and needs? How do we model and manage the relationships between those actors in the story? (This is part of an overview and