Modeling helps improve the success of delivering a high-quality solution
A primary responsibility of a Solution Architect is the integrity of a given project’s software solution. There are many aspects to a solution’s integrity such as System Quality as well as Traceability to ensure the software actually meets the business needs. There is another that is the topic of this blog post and is a Solution Model. Of course, a model by itself won’t guarantee a high quality solution or traceability. However, if done right, it could and it could help you get there faster.
Keep it simple – Use modeling to describe the problem, the solution and how they relate
Let’s sync on the term Solution Model. It's actually quite simple. I’m referring to the concepts or artifacts a project team manage that:
- Describe the business problem. For example, concepts such as Business Process, Customer Scenarios and Requirements.
- Describe the solution. For example, concepts such as System Features, User Interfaces, System Interfaces, Data and Source Code.
- Describe how they are tied together. This bit is really important. This is where you define how the concepts are associated for Traceability. For those familiar with Software Factories, this is similar to the concept of a Software Factory Schema.
Getting modeling adopted is hard
Project team members naturally think myopically and avoid contemplating the needs of other team members or groups that depend on their information. Because modeling a Solution Model requires tying all the concepts together across the project team, you can imagine the many challenges to get it adopted by the project team. For example, here are few challenges a project team might face during efforts of gaining adoption:
- Proving the model’s value to the business stakeholder’s to get buy-in isn't easy. Without business sponsorship, getting modeling adopted by the entire project team will be a tough hill to climb.
- Proving the model’s value to the project team to do the actual modeling. Ideally, everyone will build their portion of the model as part of their responsibility of solution delivery. The challenge is to get the team to do it, and proactively.
- Determining the role of the model in a project. This is really important, many modeling philosophies out there assume a model-driven approach. I don't agree with this assumption. Modeling has several dependencies that dictate the value modeling brings to a project. For example, models can be use to kickstart the architecture (think MDA) and then it could be, and appropriately so, discarded. Or, it could be used to drive the development (think MDD) with roundtripping, therefore living throughout the lifecycle of the project. Or, it could be used for reflecting what’s already in place for maintenance activities post release of the solution.
- Determining the right level of model maturity for each model. This is about understanding how much rigor will be spent on the models to establish expectations of what the models will accomplish without compromising the model integrity. This is a project-by-project decision, heck, even a model-by-model decision when you get down to it. The important point to remember is to make sure the level of maturity isn't too stringent while at the some time the level isn't too low that it doesn't compromise the integrity of the Solution Model.
- Having modeling skills and modeling tools available to the project team to do the actual modeling. It seems simple but the reality is this can be a big challenge. I suggest short simple modeling activities as a start to benchmark the team's modeling skills and work from there. Once the initial kinks are worked out, look to automate the modeling process with a modeling tool. Oh, there always seems to be the need for a modeling SME - someone to the hold modeler's hands, manage the model repository and do brownbag training sessions. It's good to keep this in mind and allocate resources just in case during project estimation and team readiness activities for a dedicated modeling SME.
- The right number of modeling tools. There will also be multiple tools in play. For example, business representatives will prefer business requirements requirement management tools like Visual Studio Team System or Compuware. Business process people will prefer specific process modeling tools like Provision and Corporate Modeler. Information Architects will prefer Erwin or Enterprise Architect. System Architects will prefer Visual Studio Architecture Edition or Enterprise Architect. Tools are a personal choice to most people. My advice to you is to allow people to choose their own modeling tool AS LONG AS:
- The tool supports XMI import and export and
- it is an actual modeling tool, therefore, no word editors, spreadsheets, slide decks, etc.
- there is a single proper modeling tool which the Solution Architect can use to collect (via XMI import) the other models into a single tool and associate model elements for traceability
It’s not about modeling philosophy – focus on the aspects of modeling that bring value to the team
This blog post is not a stroll down theory lane. Although theoretical Modeling concepts, scientific modeling philosophy or modeling methods and paradigms such as MDA, MDD, UML and DSM are interesting, they are about how to model. That is, modeling methods, modeling diagrams and modeling notation. Instead, this blog is about understanding the value of modeling to a project team and is focused on helping Solution Architects gain a practical understanding of the value of modeling to, in turn, help explain its value to the project team for adoption. Because, in the end, without adoption theory is pointless in our efforts to improve system quality and optimize the business investment.
Sidebar: A Model is not the same as a Diagram. There always seems to be a bit of confusion around this, so I thought I’d make this note. A diagram is merely a View or picture. A Model ensures that the model elements on a diagram have specific meaning in both what they represent and how they relate to other model elements. There could be diagrams of a model but if the diagram doesn't have an underlying model to ensure integrity of the model elements, it is only a picture. Although a diagram is useful, it can be misleading because it is probably inaccurate and only represents a point in time.
Models provide tons of value – the trick is describing it to the project team
So, what's the value of the solution model? Below is a list of value statements to try and answer that question and is the main purpose of this blog post.
- Consistent Terminology bringing clarity and team scalability. Models provide a consistent language for describing the business problem and how the solution will address it bringing clarity to the entire project team. When resources talk about concepts like Business Process, Scenario, System Interface, etc the entire project team is crystal clear what those are and how they relate to other concepts. This also makes it far simpler to get additional resources ramped up as the project team grows.
- Team Focus. Improve the focus of the delivery team to solving the business problem and not get sidetracked or distracted. If the business problem is modeled well, the development team is more likely to understand the challenge at hand and avoid misinterpretation of what the business wants. This is unbelievably useful to ensure that the project team build what they need and not superfluous concepts not in the Solution Model or, at least, minimizing additional effort not already clearly described by the Solution Model. Essentially, each model element become work items and higher priority than concepts not useful by other team members.
- Improves the chances for a highly Functioning Team. Similar to #2 above, with a well-defined Solution Model, a team begins to partition what concepts each team role is responsible for and which concepts they depend on from other roles in the team. Therefore, team members are avoid miscommunication with their work products and avoid unintended duplication of effort.
- Enhanced Requirements Management through Traceability. This has to do with the ability to easily navigate how pieces of the business problem are being addressed by the solution design. With a Solution Model of the business problem and traceability to concepts that describe the solution, business stakeholders can readily see what bits are being developed that relate to the specific areas of the business problem…and which bits do not. It also enables engineering teams to understand explicitly which portions of the business problem are affected by system design or enabling technologies. This is particularly useful in the inevitable situation when technology limitations are discovered and engineers wish to know which business representatives to go speak to.
- Reuse resulting in accuracy. Having a model of the concepts the team manage can effectively reuse concepts where appropriate. This is super important. Take the example of a business entity. If you have a data model of the logical information entities, the team can associate processes, business rules, application interfaces, etc to the information entity, therefore, modeling reuse of that information entity. The value is clarity in the information and avoidance of duplicate information entities resulting in information accuracy. This is just an example using a model of information entities in the solution model. The same could be said for application interfaces, business process activities or any other concept.
- Early warning system. Ability to perform litmus tests if the solution meets the upstream business strategic goals. Assuming an agile development approach, the solution model implicitly contains traceability from business goals to the solution allowing visibility of the solution bits to be tested and proven effective on the business goals early in the project lifecycle.
- Reduce Risk of Scope Creep. Requirements are less likely to sneak into the project scope unnoticed. Including requirements as part of the solution model requires that they be associated to other concepts. Where there is no association, automated model integrity checks would easily identify rogue Requirements.
- Reduce Risk of Project Slippage through the ability to keep the team focused on specific artifacts. A byproduct of having a Solution Model is a clear understanding of what the various concepts a project team will manage and what needs to be done with them and when. This helps reduce unknowns or ‘learning as you go’ that can happen ultimately helping keep the team on track and focused on the specific concepts throughout the delivery lifecycle.
- Description of the entire business problem. A Solution Model provides a complete description of the business requirements. I’ve bold-italicized requirement because I want to stress that a requirement is simply a generalized description of the problem. It can take the form of process, use case, scenario, CRC or your traditional functional requirement, or something else. The point is that the model describes explicitly which of these will be included giving the model, once filled-in, a complete picture of the all-up business problem to solve.
- Enhances Requirements Management. The Solution Model allows Product Managers to manage a finite set of requirements for requirement change control activities. A Solution Model also quickly identifies which portions of the solution are affected by new requirements or changes to an existing requirement.
- Description of the All-up Solution Architecture. Obviously, with a model of the business problem and the solution all tied together, you have a complete model of the solution architecture and can create useful views/diagrams that show the all-up business problem, system model, data model, user experience, interaction models, integration model, etc. A well-organized model also allows for views that show how design patterns are implemented to justify and prove system quality. This is a very powerful value proposition. Consider each project team role and from their perspective being able to traverse the solution model in any direction to get a complete understanding of how other areas relate to concepts of your concern. For example, the Test Team may wish to link Test Cases to Source Code, Use Cases, User Experience Processes and Functional Requirements concepts. A Solution Model inherently provides this. Now, when Test Cases pass, the entire team will know what source code passed and what business requirements and user experiences are now enabled.
You might be wondering about where Project Documents fit into this story. A Project Document, in my opinion, is nothing more than an artifact created for sign-off. I don't think that there are Project Documents that must be created for every project. Identifying which Project Documents to create and their purpose is a decision by the project team directly. There is no hard rule which to use for all projects. Now, what goes in them, I care deeply about. The content of any Project Document should reflect that model. Therefore, a Project Document composes model elements via Views that are designed for a specific set of Stakeholders and their Concerns. Ideally, Project Documents are built/populated from the Solution Model to ensure that the content is accurate.
Here's a simple diagram illustrating how Model Elements, in this case a Requirement, Use Case and Process Activity related to a Project Document using UML notation.
In Summary – a Solution Model is highly valuable. It is worth the effort to get it adopted by the project team.
I covered a lot of ground in this blog post and am talking about an area of modeling not well addressed in the industry. There is tons of information about modeling but little to no information about the business value of modeling nor how to get it adopted by a project team to help a Solution Architect be successful ensuring that a high-quality solution with integrity is delivered. Remember, there are lots of challenges to get a Solution Model adopted. But I hope that through the list of value statements, you will be able to convince your audience to adopt the Solution Model.