Model Driven Engineering
Throughout the years of running projects for various customers and industries we’ve managed to learn, use, test and experiment with various software engineering methodologies, architecture paradigms and software design styles. We’ve learned that regardless of the project management paradigm (being small agile team up to multi-site/multi-vendor, large scale, enterprise program) the risk concerned with running the IT projects is always linked to missing the business requirements, specifically in the context of organization’s business processes, lack of coherence between products of different stages of software delivery process and resulting miscommunication, lack of architecture consciousness.
Things like Process modelling in BPMN, Business Process Simulation, IT System analysis with Use Cases, Object Oriented Design in UML, Design of Service Oriented Architecture driven by business domains and translating Design artifacts into usable Implementation products (like source code, service contracts or data definitions) work great as separate engineering practices.
However teams are seldom able to integrate these practices together, to work as a whole, consistent software delivery process that guarantees consistency, repeatability and reduces risk.
Based on our experience, and input from projects from various industries, we managed to combine all these best practices into single method that leverages best parts of specific standards, notations and work methods.
Model Driven Engineering
Model Driven Process Analysis
- We use BPM / CASE tools to build process and domain models – we Combine BPMN with the business-level UML views.
Information & Data objects are combined with process flow (a set of activities that work on data).
- We simulate various variants of the process for impact analysis of planned changes and looking for optimal variants
- We don’t write documents – we generate it from our analysis models. Comments & changes are handled directly in the model. It guarantees consistency.
- Business review is done with on-line collaboration tools that hold on-line view of our analysis model that is always visible to our stakeholders
Model Driven Business Solution Design
- Process Analysis models are transformed and detailed at the IT System level using UML models.
- We design system functionalities supporting required business process automation requirements
- We identify and design reusable services (SOA/Microservices) to support designed business processes
- Depending on the industry we apply reference-standards (like ISO20022, BIAN, Acord or APQC) – we own set of industry specific, ready to use libraries and templates
- We generate documents from the models in the CASE tools. It guarantees consistency between what is written in the specification document and what is designed and to be converted into implementation artifacts. It also saves a lot of time to our analysts and speeds up the whole process.
Model Driven Architecture
- Architectural requirements realization models are derived from model elements from previous stages
- We identify and design IT components of the target solution
- Service contracts and message & data schemas that are directly usable by developers are generated from the design model
- We’ve built set of plugins for the modelling tools that automatically verify consistency and completeness of design models
- Obviously, Software Architecture Document is generated from the model
Software build chain automation
- Our modelling products are input or the implementation stage were we transform models into messages and source code
- Our software build & deployment process is automated using DevOps & Continuous integration approach
- We used automated tests for software quality assurance
- We’ve build set of custom build & deployment automation for SoftwareAG webMethods platform
What are the key effects of this approach ?
Each product of the process is traceable and forms an input for products at later stages.
We don’t maintain design models and documentation. Documentation is generated from our models same as implementation artifacts – therefore we minimize work, waste and time to synchronize changes between software development lifecycle work products .
Shorter Cycle Times of consecutive stages of software delivery lifecycle
There is no wasted related to documentation and its review process. Requirements, process and design documentation is consistent and verifiable for completeness as it is maintained in the model in the CASE tool.
Software building , deployment and testing is automated so it takes almost no time to test and release new & modified functionalities.
Traceability and consistency
There is full traceability from business requirement, through functional requirements (like Use Cases or User Stories) and their design realizations to resulting tasks in the development process. These traceability relations could be visualised on diagrams and analysed in spreadsheets to improve verification & validation and give full transparency to business stakeholders.