1 Bridging the Gap from Business Analysis to Systems Analysis We are all striving to identify how our businesses can deliver more value and reduce costs. But how easy is it to turn those ideas into reality? Benefits analysis is only one half of Cost-Benefit Analysis and predicting the cost side of the equation can be notoriously unreliable. The ability to establish systems development scope reliably and estimate development costs and timescales realistically is fundamental to delivering business benefits. In this talk we will show you how to relate functional system requirements simply and directly to business needs and prioritise development for incremental realisation of benefits, using Business Process Models and Use Cases. Chris Moran is a Principal Consultant with Karona Consulting specialising in software development process, project team mentoring and training in analysis techniques. Chris has over 20 years experience in corporate IT, including Prudential Assurance, Sainsbury’s, Tesco, Deutsche Bank, John Lewis and Waitrose. Karona have recently completed a major programme to define and roll out a new software development process across the John Lewis Partnership, centred on UML and Component Based Development, which will be the subject of a talk by Gill Holehouse. The techniques described here have been tested and proven on dozens of projects at John Lewis Partnership. 2 The job of business analysis is essentially to determine the best way to organise and run a business. Inevitably business administration on even a modest scale nowadays means computerisation, so we need to be able to map an IT solution onto the business operation. The two go together hand in glove. And yet, too often, there is a disjoint in the thinking and in the project process, resulting in: •Poor scope identification and subsequent “scope creep” •Poor alignment of systems to business needs •Cost overruns on system projects •A tendency to “start again” when the project moves into the Systems team. Having defined a business problem or requirement, we should be able to validate the fit of a proposed system, and to be able to size and prioritise the work before we commence development. To do this we need a map or a “model” of the system. The System Model needs to be concise and manageable and have a rigorous correspondence to the implemented system. In this presentation we will look at why it is useful to have separate Business and System Models, why we use a different notation to model these different aspects, and how to make the two work together effectively. 3 Why do we do a Business Process Model? If the aim of our business analysis is to plan and run our business more effectively, we ought to establish clearly and unambiguously what our understanding of the business is. Documenting the business allows us to check our understanding with other people and leave a record of what we have learnt that will be invaluable to later projects. However, it is essential that any documentation we produce is concise, easy-to-read and clearly structured. A diagrammatic approach is generally the most effective way to achieve this. But another reason for doing business analysis is that it is an essential prerequisite to systems development. To commence system development without understanding the business drivers, the business stakeholders and the business scope would be to invite trouble later. In a world where there is always pressure to achieve more in less time, with less cost and fewer people, it is also essential that we can link system functionality clearly and directly to business benefit – so that we can prioritise effectively. We need to know that the system is going to deliver the key benefits that the business sponsor expects and that depends as much on understanding the users and what they are trying to achieve as it does on understanding the technology. Before we can design a system, we need to understand the business we are trying to automate: as it will be when the system goes in – not as it is today. So we need to identify the “to be” business processes and get buy-in from the business owners. We often find that the initial statement of project objectives needs to be reviewed again in the light of the business analysis, to firm up what we are really trying to achieve and resolve the tensions that often occur within a set of objectives (e.g. increase product availability but not increase overall stock holdings). 4 This diagram shows a business process for an imaginary company which sells bespoke fireplace surrounds. The business analyst has drawn up a first cut diagram to explore how the selling process works. Key features of this approach to Business Process Modelling are: •Keep the notation simple so that the business specialists can engage with the model •View the process end-to-end so that we keep in view what the process is trying to achieve and we don’t miss important dependencies •A sequential / chronological representation is natural and easy to follow and it encourages us to ask what-if questions •Drive out business issues and project opportunities to realise business benefits •Annotate the diagram with commentary, issues and queries •Manage the granularity of the detail otherwise the modelling task becomes too time-consuming In our approach, we constrain our level of granularity (with rare exceptions) to the level of a logical task or Elementary Business Process (“one person, one place, one time”). This gives us a happy correspondence to the granularity of our Use Case Model, where one Use Case is one logical task that a user can perform using the system. A meaningful understanding of the underlying business processes is the most important key to defining the scope of a proposed system development. In a complex project we will typically need to produce both an “as is” and a “to be” business process model. This highlights business change and the “to be” becomes the basis for creating the Use Case Model. 5 In order to plan and execute our system development we need to be able to describe the functional requirements of the system: •what the system does and the steps that it goes through to achieve it •the size and scope of a system •alternative options – which can be set before the business •how it depends on other systems – which will usually imply the involvement of other systems teams for integration and link testing. We also want a way of breaking the system description up, into convenient units of delivery, which can be used to estimate the development effort and track development progress. The testers need this functional specification for creating their test scripts. We also need a reference point for constructing training materials. We may also want to use the specification as a statement of the business requirement against which to evaluate the suitability of existing software (e.g. packages). To be effective, the system model must also be concise, easy to read and understand, easy to navigate, easy to manipulate, easy to relate to the business analysis and a suitable as a primary specification that the system can be developed from and validated against. A Use Case Model meets all these criteria, especially, as we shall see, when developed alongside complementary views of the system. 6 A Use Case is a logical task that can be performed using the system. This Use Case diagram shows how we have identified the Use Cases from the Business Process Model. The stick men (called “Actors”) represent the user roles associated with the system. These can usually be worked out simply from the swimlanes on the Business Process Model. We look at each EBP in the Business Process Model and decide whether the system needs to provide a Use Case to support that logical task. Some EBPs have a Use Case that corresponds directly (e.g. “Browse Products”). Some EBPs have a Use Case that partially implements a task that also has manual elements (e.g. “Prepare Order For Customer” becomes “Select Order for Preparation”). Some EBP’s are fully manual and /or are not supported within our system (e.g. “Receive Ordered Goods”). The set of Use Cases identified in this way is a useful step in identifying the system scope of the project (but see later slide on other sources of Use Cases). We are now in a position to: •Further describe the Use Cases, using a Use Case Description template •Prioritise the Use Cases 7 Identifying Use Cases from the Business Process Model EBPs (Elementary Business Processes) suggest Use Cases. An EBP is a task that the business needs to perform. If an EBP is fully manual, there will be no corresponding Use Case. If, however, there is some system support required for the EBP, then there will be a Use Case, in one system or another. The scope of the Use Case is not always the same as the EBP. For example, we may have an EBP to “Call Customer” when their Order is ready. But the Use Case may be “List Orders Ready For Delivery”. Other times, there may be two or more EBPs that can be satisfied by one Use Case, e.g. “Update Order” and “Cancel Order” may become one Use Case. From the Class Model CRUD stands for Create/Read/Update/Delete. A CRUD Matrix is a matrix which maps Use Cases to the Types of data. The CRUD matrix shows us whether there are any Types that have missing Use Cases. This approach is good for finding infrequent Use Cases, which may not have shown up in the Business Process Threads (e.g. “Create New Product”). Other We also need to consider Use Cases for ensuring system security (login, logout, administer user rights), operational reporting and auditing and Use Cases which extract data for downstream feeds, such as MIS (Data Warehouse) or Financial reporting. Typically we won’t know much about these Use Cases at this stage but it is wise to create “placeholders” that will prompt us to allow time to revisit these areas later. 8 We have already seen that the Business Process Model and the Use Case Model serve different purposes. Here are some more reasons why it is good to differentiate them. Overloading any model with too much meaning makes it hard to read and hard to keep up-to-date. The Business Process Model is a model which helps us to understand how the business works – it is therefore necessarily a “wide” model, so it is good not to go too deep. The Use Case Model specifies the system behaviour. It needs to go into a lot of detail, so it is good to work in small units. Each Use Case tells the whole story about one logical task, so it has integrity and consistency within its own boundary. Different audiences engage with the business model and system model in different ways and at different times. The separation helps us to deal with this. The transition of the model also corresponds to a shift in our thinking. We should be able to provide a reasonably stable definition of the business operation and its needs. The system requirements are then negotiated around that, taking into account benefits, priorities, timescales, availability of resources and costs. Constraining the Business Process Model to the level of granularity of the EBP prevents us from getting bogged down and losing project momentum. The fine grain detail can be drawn out in the Use Cases – if and when it is needed. (Finer grained understanding of the manual business processes is the domain of business procedure manuals and if these are needed they will normally be the specific responsibility of another specialist team). 9 Use Cases are not just a convenient way of recording the functional specification of the system. Each Use Case represents one logical task that a User can perform using the system*. This structural constraint means that each Use Case can stand on its own merit as an atomic unit of system functionality. This is an essential property when it comes to managing delivery of the project. The Use Cases are the tradable units for estimating development cost, prioritisation, and planning increments (both development and deployment). As we refine the Use Case Model we become more confident about the estimates and we narrow the confidence range of the estimates. In addition the structure of the Use Case description makes it easy to understand, describe and validate all the paths through the functionality. This in turn makes it easy to identify all the test cases that are required to test the Use Case. The good thing about a model is that it can be done before development starts allowing us to take control of the systems project from the outset. * Setting aside complexities about «includes» and «extends» relationships for the time being. 10 This diagram shows how we can visualise the prioritisation of the Use Cases and group them into increments – for development and deployment. We can use this picture to facilitate discussions about priorities and scope. Developing incrementally has many benefits: •Demonstrate real progress in terms of working code at regular intervals (thus improving confidence in the project within and outside the development team) •Establish patterns of working within the team and optimise them over a number of cycles •Review various aspects of the development quality early and at regular intervals (look and feel, user acceptance, productivity, defect rates) •Where applicable deploy an early release of the system and start realising business benefits earlier When we define development increments in terms of Use Cases, each increment delivers something usable and meaningful (not just a screen). This gives the project, and the business, high level control over delivery - not just control of the low level requirements. Within the increments we can still make choices about the style of development: test driven development, waterfall, package, etc. Note that we have also excluded some of the functionality from the scope and we have made this explicit to avoid any ambiguity or recriminations later. Notice also that in this example we have stripped out the payment element from the “Check Order” Use Case. This reflects a refinement of our understanding of the Use Case and choices about cost and priority. 11 Of course a Use Case Model on its own is not a sufficient specification for a system. Big Use Case documents (running to tens of pages) are a sure sign that the technique is not being used effectively. We use a set of complementary UML diagrams and supporting documents to create a complete model, which allows us to validate the system specification for the “3 Cs”: Correct, Complete, Consistent. Alongside the Use Case descriptions we develop User Interface storyboards and User Interface specifications, which help the users validate the system design and then serve as a specification for UI development. We take a component based approach, so our Class Model is data centric not object oriented, which makes life simpler. We then divide the Class Model into a set of discrete, data-centric components. We use State Charts to understand system behaviour which is dependent on the state of the business data. We use UML sequence diagrams to model interactions between components and define component services. We use further Class Models to create free-standing component specifications. We then take these logical specifications and create models of the physical implementation, applying proven design patterns, to ensure a robust and consistent implementation of the system. But our approach is simple and flexible, so you can easily choose the level of rigour and precision you want to go to in the system specification to suit your development approach and the skill set of your teams. 12 When creating models it is important to think about what you’re using them for and how you’re organising the information. This is the simplified view of the model organisation we use at Karona. The Business Model (Problem Definition) –a description of how the business works. The emphasis is on what processes the business runs, without considering in detail how the steps are carried out or which systems support these processes. It is essentially a technology-independent description. It helps us understand the needs of the business, decide where the benefits will be achieved and highlight any issues that need to be resolved. During business modelling we are focussing on the business operation and what makes it tick. We are building up our understanding of the problem, so that we can make intelligent judgements about the nature of the solution. Re-playing what we have learnt about the business to the domain experts in a diagrammatic form helps to build confidence that we have understood the problem and builds up trust. The main element is the Business Process Model but there should also be a Glossary of business terms and usually a Business Type Model – these are not described in this presentation. The Solution Model (Solution Specification) –a model of the system: its functionality, its data and how it is put together. In this presentation we are focussing on the Use Case Model. Use Case Model – describes the functionality of the system from the users’ point of view. It defines the functional scope of the system. Each Use Case is a logical task that a user can carry out using the system. Each Use Case has a detailed description, detailing how the system behaves. Class Model – There are a number of sub-models here. The primary one is the “System Type Model” which describes the logical data structures required by the system. This helps us create a consistent description of the data used by all the Use Cases. Interaction Model – Again there are a number of sub-models here. The first is the set of “Use Case Realisations” through which the analyst creates a more detailed description of which Use Cases use which data. This is a powerful mechanism for validating the Use Case Model and System Type Model. State Charts – a supporting technique that allows us to look at the lifecycle of a single item of business data, such as a Product, as it is tracked by the system through its life. Most projects will only generate two or three state charts. User Interface Specification (UI Spec) – records user navigation and shows the screen layouts, detailing all the data elements displayed and the behaviour associated with buttons, hyperlinks, etc. It is developed concurrently with the Use Case Model, to help the users visualise their system as we build up the system specification. From these deliverables we can create a physical design for the system and from that, individual program specifications, the database schema and test scripts at unit and system level. 13 If we intend to develop and deploy an application in increments, we still need to know in advance what the proposed system is for, its business benefits, its architectural fit, its scope (function and data), how long it will take to build and how much it will cost. We also need to be able to determine the business priorities and map out the content of the increments (early ones more precisely than later ones). To do this effectively we need first of all to understand the business scope of the problem, then determine the scope of the system or systems impacted (or proposed). We therefore need to be able to develop a description, firstly of the business and then of the system, which starts as a coarse-grained description and becomes increasingly fine-grained. How do we do that? If we use text-based descriptions it is practically impossible to manage. With a model-based approach, however, we can do it. Firstly we define business processes, constrained to a minimum granularity of the “Elementary Business Process” as described earlier. Then we progress to Use Cases: firstly identifying them and giving them only a name and an “intent”; secondly describing the basic flow (or “happy day scenario”); and finally describing all the alternative flows. After that, depending on our method, we can produce an Interaction Model, for example using Sequence Diagrams, and defining the black box specification of each interaction with the system data. This approach gives us a very clear and systematic approach to the granularity or precision of the system description at each stage of the project. An experienced analyst will use their judgement to focus more closely on areas that present higher project risk and less on non-contentious aspects of the system. We find that defining the development increments in terms of the Use Cases to be delivered is straightforward and easy-to-manage. Each Use Case is a natural unit of useful functionality from the user’s perspective. It is fine-grained enough to give the project manager control over the development stage but not so fine-grained that we create a whole industry around prioritising and re-prioritising the user requirements. 14 The Business Process Model is a great way to understand the scope of the problem but we’ve found that it doesn’t throw out all the functional requirements. That’s because: 1) Processes that change the “reference data” (i.e. data, such as User, Branch, Product, that is not changed by the operational processes under consideration) often get put to one side or de-prioritised because those processes occur infrequently and are secondary to the problem under consideration. 2) There are management and supervisory processes that sit above the operational processes that we tend not to model. 3) The business model is system-independent so it overlooks the issue of system access and security. We find that a CRUD (Create/Read/Update/Delete) analysis, mapping Use Cases to the data, throws out missing functions. For example if we haven’t got a Use Case to Create or Update Product, then we have to ask where we get Product data from. This may require a new Use Case or it may point to the need to provide integration with another, existing system. In this way we find the “upstream” (incoming) integration requirements. The CRUD analysis will also highlight the need for housekeeping or archiving processes. “Downstream” data feeds are hard to spot from the business end; they tend to be identified by looking at the system topology / system architecture of the existing systems. We then look at requirements for operational reports and system security. 15 Models are a way of documenting clearly and concisely what we know, firstly about the business and then about the system solution. The process of producing the models helps us to be systematic in our analysis, driving out questions that we might otherwise have overlooked. Models are easy to read (when done well). Models allow us to communicate what we know unambiguously to all project stakeholders and thereby to validate our understanding. Models allow us to trace system functionality back to business benefits. Models allow us to plan, estimate and control delivery of the system. Models allow us to validate that the delivered system meets our documented requirements. Models are an invaluable form of system documentation to take into the maintenance phase of the system. Remember 80% of the system cost occurs after it goes live! 16 There is a lot more information about our development process on our website www.karonaconsulting.com 17 18