Calvin: "You can't just turn on creativity like a faucet. You have to be in the right mood."
Hobbes: "What mood is that?"
Calvin: "Last-minute panic."
Okay, apologies for an unscheduled delay on the follow up post. Let’s get back to discussing how we manage our MDM Projects.
In my previous post, we talked about the first two stages of "InfoTrellis SMART MDM Methodology", namely "Discovery and Assessment" and "Scope and Approach". In these two stages, we spoke about activities around understanding business expectations, helping clients formulate their MDM strategy, help them identify scope of an MDM implementation along with defining right use cases and the optimal solution approach. I also mentioned that we generally follow a "non-iterative" approach to these stages as this helps us build a solid foundation before we can go on to the actual implementation.
Once scope of an MDM project is defined and client agrees to the solution approach, we enter the iterative phases of the project. We group them into two stages in our methodology:
- Analysis and Design
- Development and QA
Through these stages, we perform detailed requirements analysis, technical design, development and functional testing across several iterations.
At this stage of the project, high level business requirements are already available and we must start analyzing and prioritizing which requirements need to go into which phase. For Iteration I, we typically take up all foundation aspects of MDM such as the data model changes, initial Maintain services, ETL initial load and related activities. An MDM product consultant will interpret the business requirements, and work with the technical implementation leads to come up with:
- Custom Data Model with additions and extensions, as per project requirements
- Detailed data mapping document that captures source to MDM mapping for services as well as Initial load (one time migration) – data mapping is tricky; there will be different channels through which data will be brought into MDM. All different channels need to be identified and specific mapping for all these channels have to be completed; Doing this right will help us avoid surprises at a later stage
- Functional Requirements for each of the features – Services, Duplicate processing and so on
Apart from the requirements analysis, work on the “Requirements Traceability Matrix” should start at this stage. This is one document that captures system traceability of requirements to test cases and will come in handy throughout the implementation.
Functional requirements are translated into detailed technical design for both MDM and ETL. Significant design decisions are listed out, Object model, business objects designed, and detailed design sequence diagrams are created. Similar sets of design artifacts are created for ETL components as well. The key items that are worked on during the design phase are:
- Significant use cases – From a technical perspective, functional use cases are interpreted so the developer has a better grip on use cases and how they are connected together to form the overall solution
- Detailed design elements – Elaboration on each technical component so development team has to just interpret what is designed as MDM code or ETL components
- Unit Test cases – The technical lead plans unit test cases so 360 degree coverage is ensured during unit testing, and most of the simple unit level bugs are identified
Within the sphere of tools that we use, if unit test automation is possible we do that as well.
MDM and ETL development happen in most of our projects. Apart from IBM’s MDM suite, we also work on a spectrum of ETL tools such as IBM DataStage, Informatica Power Center, SAP PI, IBM CastIron, Talend ETL, and Microsoft SSIS. Some aspects that we emphasize on across all our projects are:
- Coding standards – MDM and ETL teams have respective coding standards which are periodically reviewed as per changes in different product releases, and technological changes in general. The developers are trained to follow these standards when they write code
- Continuous Integration – Most of our clients have svn repositories and our development teams actively use these repositories so the code remains an integral unit. We also have local repositories that can be used when the client does not have a repository of their own and explicitly allow us to host their code in our network
- Peer code review – Every module is reviewed by a peer who acts as another pair of eye to bring in a different perspective
- Lead code review – Apart from peer review, code is also reviewed by the tech lead to ensure development is consistent and error free
- Unit Testing – Thorough unit testing is driven off the test cases written by development leads during design phase. Wherever possible, we also automate unit test cases redundancy and efficiency
With these checks and balances the developed code moves into testing phase.
QA lead comes up with comprehensive test strategy covering Functional, system, performance and user acceptance testing. The different types of testing that we participate in differs from project to project, based on client requirements. We typically take up functional testing within the iterative Implementation phase. Rest are done once all functional components are developed and tested thoroughly.
Functional testing is driven off with functional requirements. Our QA lead reviews the design as well to understand significant design decisions that helps in creating optimal test scenarios. Once requirements and design documents are reviewed, detailed test scenarios and test cases are created and are reviewed by the Business Analyst to ensure sufficient coverage. A mix of manual and automated testing is performed based on allowed scope in the project. Functional testing process will involve the following:
- Test Definition – Scenarios / cases created, test environments identified, defect management and tracking methodology established, test data prepared or planned for
- Test execution – Every build is subject to a build acceptance test, and upon being successful, the build is tested in detail for functionality
- Regression runs – Once we enter defect fixing mode, multiple runs of (mostly automated) regression tests are run to ensure that test acceptance criteria is met
- Test Acceptance – Our commitment is to provide a thoroughly tested product at the end of each iteration. For every release, we ensure all severity 1 and severity 2 defects are fixed, and low severity defects if deferred are documented and accounted for in subsequent releases.
In the deployment stage, we group the following activities together:
- System, UAT, Performance testing – All aspects of testing that sees the implementation as a single functional unit are performed
- MDM code deployment – MDM code will be deployed in production environment, and delta transactions (real time, or near real time) will be started
- One time migration or Initial Load to MDM – From various source systems, data will be extracted, transformed and loaded into MDM as a one-time exercise.
Deployment is very critical as it is a culmination of all work done until that point in the project. This is also the point at which the MDM system will get exposed to all other external systems in the client organization. If MDM is part of a much detailed revamp, or a bigger program, there will be many other projects that will need to go live or get deployed at the same time. To ensure deployment is successful, the following key points are to be considered:
- Identify all interconnecting points and come up with an system plan that covers MDM and all integrating systems
- If applicable, participate actively at program level activities as well to ensure the entire program accounts for all the items that have been built as part of the MDM project
- Initial load happens across many days mostly in 24-hour cycles. Come up with clear plan, team, roles and responsibilities and if possible perform a trial / mock run of initial load
There is typically a post deployment support period and in this period we monitor the MDM hub to ensure master data is created as planned. If needed, optimizations and adjustments are made to ensure that the MDM hub performs as desired.
Once deployment is successfully completed, don’t forget to celebrate with the project team!!!