Service: Model-based and model-driven software architecture and software engineering

Icon class
icon_class_computed
fas fa-book
For specific Python software engineering services please visit also: Service: Python and REST web services development including OpenAPI with FastAPI and POSTman testing

Webel IT Australia are not just specialists in model-based software architecture and software engineering, they are the Australian specialists, with over 25 years experience applying model-based strategies in combination with numerous coding languages to demanding, complex projects in industry, science, and engineering.

We develop in Python, Java™, C++, C#, PHP, and many other languages (including also the powerful Wolfram Language of Mathematica).

Please email or phone Webel IT Australia on +61 405 029 008 to enquire about our model-driven software engineering services!

Because there is so much ignorant Fear Uncertainty and Doubt (FUD) propagated about model-based and model-driven software engineering (which takes many forms) this service description page includes an extended discussion.

Use of graphical model-based and model-driven technologies offers a compelling cognitive advantage over just coding. Coding and graphical modelling engage different aspects of mental function, and when they are combined, there is a powerful synergy.

Let's address the elephant in the room:

"Unified Modeling Language (UML) is dead, nobody uses UML anymore".

Wrong! UML is still compellingly useful for working on complex projects with those object-oriented languages such as Java and C++ that admit reverse engineering into UML in powerful tools such as MagicDraw® UML (aka Magic Software Architect), and UML is the language of Design Patterns for OO. If you working with a primarily object-oriented language and you don't command Design Patterns, you are very likely repeating known mistakes in your code, locking in bad coupling, restricting flexible reuse, and probably also creating too much WET code instead of adhering to the "Don't Repeat Yourself (DRY)" principle. It's that simple.

Note the emphasis above on reverse engineering, not forward engineering. Whilst realistic full-cycle forward/reverse engineering from/to UML can be achieved for some kinds of projects, on most projects - for suitable languages - most of the benefits of the use of UML can be obtained by frequent reverse engineering and refactoring.

Reverse the code, plan refactoring in UML, refactor the code;
Reverse again, plan refactoring, refactor; Repeat and win!

This web site has heaps of detailed examples of successful use of UML on a wide range of software projects and in combination with various languages such as Java and C++ (including even some combined with SysMLv1 systems engineering) and for XML Schema engineering.

Webel IT Australia also still offers training courses for UML for software engineering:

Model-based and model-driven do not mean just UML

The terms model-based and model-driven encompass far more than just graphical UML. Webel IT Australia specialises in use of Systems Modeling Language v1 (SysML®) for analysis modelling of languages that do not easily admit reverse engineering to UML, including SysMLv1 modelling of Python, PHP, and even the Wolfram Language for Mathematica, and yes, one can even model many aspects of functional for Python and the Wolfram Language.

In the strictest interpretation of 'model-driven' code is generated completely from a (graphical) model, or at least the model is digitally bound to the code through reverse engineering of code. With analysis modelling, the model is a manually constructed model that corresponds to selected aspects of the code, and may also include additional modelling elements that find no direct equivalent in the code (such as tracking of domain source documents, requirements, feature descriptions, and even screenshots):

One may prefer to call this approach "model-supported"
or "model-based" rather than strictly 'model-driven'.

Why SysMLv1? Because Webel IT Australia combines Systems Engineering strategies and systems thinking with software engineering, including requirements tracking, data modelling, flow modelling, port-based modelling, dependency modelling, and feature development tracking and testing.

For all but the most trivial coding projects, graphical representation of selected aspects of the code in parallel with the coding affords a birds eye architectural view of the code and subsequent insights that can't be accessed from just the tunnel-vision "Flatland" of coding, reloading, coding, reloading.

In particular, use of SysML to model software systems promotes a signal processing mindset when dealing with complex software systems, exposing what happens where, what is created where and when, what depends on what, and representing the progressive transformations of data (for which SysML Activities are particularly well suited). SysML can also represent heterogeneous systems, and can provide a complete view of micro services architectures and collaborating subsystems.

In tools like Magic Cyber-Systems Engineer ® (Cameo Systems Modeler®), SysML also integrates with Atlassian JIRA issue tracking; simply hyperlink a SysML modelling element to the JIRA page. And you can likewise launch executable components directly from the SysML model.

However, SysML models are not alone the primary deliverable of a software engineering project, and it is neither well indicated nor necessary to model every nut and bolt of the code. One of the primary benefits of using SysML in parallel with code on software projects is for planning and tracking of refactoring. And for those languages that admit reverse engineering to UML, one can in tools like MagicDraw have both reverse engineered UML Classes and SysMLv1 side-by-side in a single SysMLv1 project file, whereby the SysMLv1 model acts a Systems Engineering layer wrapping the UML implementation "designed" layer.

Model-driven for XML data schema, JSON data schema, and databases

The term model-driven also encompasses graphical aids for data modelling. Apart from UML (which can represent XML and SQL relational databases), there are many dedicated tools for representing XML Schema and JSON Schema graphically, and these can afford new insights into the data structures. There's a very good reason graphical database schema modelling tools were introduced decades ago!

Model-driven using patch-based and "no code" tools

At a stretch, the term model-driven can also be considered to include use of graphical patch-based (aka node-based) and "wire it up" graphical programming technologies. Again, it's about the cognitive advantage; use of patch-based technologies promotes thinking in terms of signals, flows, and transformations (even if one still has to sometimes get down and dirty with the code for cases that a particular patch-based technology can't handle). Whether current "no code" technologies can compete with manual coding (and in a world where so-called "AI" supplemented coding is on the rise) is a debate for another day, but sufficiently comprehensive "no code" systems will definitely come sooner or later.

"But isn't it all going to be AI anyway"?

Please note that the entire can-of-worms topic of so-called "AI" driven code development has been completely avoided here. Webel IT Australia does not currently use "AI" coding (beyond some simple inline completion prompting in some IDEs). If "AI" coding could actually already do what some people claim it can you probably wouldn't even be reading this page. For now, Webel IT Australia offers excellent human-based, model-driven, software engineering.

Please email or phone Webel IT Australia on +61 405 029 008 to enquire about our experienced human model-driven software engineering services!

Notes
Relevant snippets (from other sources)
Visit also
Visit also (backlinks)
External links
Flags