Products

How software architecture can secure your software development

By Vijay Singh

This article is in continuation of my previous writing on the importance of software architecture and how it can potentially help you avoid Jenga lifecycle. If you have not checked that one out yet, please take a look here.


GettyImages-1044801042.jpg 

Now coming to this blog and as you may have guessed already from the title of the blog, I am gonna be talking a bit about rock climbing and the act of belaying and try to map the same principle to our embedded software development lifecycle. So get into your harnesses and read on.

As someone who enjoys outdoors, I find climbing quite fascinating due to its technicality and problem-solving aspects. Let me briefly explain the basics of sport climbing here. Sport climbing relies on fixed bolts for protection along a predefined route. The climber ascends the route with the rope tied to his or her harness and clips into each bolt or quickdraw to protect against a fall. 

GettyImages-78058279.jpgA belayer


A climbing partner (belayer) typically applies tension at the other end of the rope whenever the climber is not moving, and removes the tension from the rope whenever the climber needs more rope to continue climbing. 


It is important for the belayer to closely monitor the climber’s situation, as the belayer’s role is crucial to the climber’s safety. Too much slack on the rope increases the distance of a possible fall, but too little slack on the rope may prevent the climber from moving up the rock.

Ok, enough on the climbing but where am I going with this? Imagine the whole climbing route as your software coding process, each bolt or quickdraw is a completion of a sprint or a particular task and the belayer as a software architecture. A software architecture must play the same role in software development life-cycle (SDLC) as the belayer does in climbing, which is to control and monitor the development process against a possible fall or roadblocks.

Now, there may be two main reasons why your belaying is not proper when it comes to software implementation:


  1. You do not make use of the software architecture at all and directly jump into coding process upon receiving the requirements and specification documents

  2. You do use software architecture to plan your development activities in the beginning but as you go ahead it becomes hard to synchronize development and architecture together due to no or very loose links between the two

The first case can be considered as climbing without having a belayer at all and may have bad consequences when something goes wrong, may result in time and budget overrun to complete the project. The second case comes close in that sense where a software architecture helps to gain a good confidence at the beginning of project but as you move up along the SDLC and as the number of lines code increases you start to lose confidence, this may be because your software architecture is not good enough to incorporate incoming changes or that the link between architecture and coding was not adequate enough.

This brings us to Simcenter Embedded Software Designer. Simcenter Embedded Software Designer lets you do more with your architecture models and enable your distributed software engineering teams to use whatever best-in-class tools they prefer for development. 


 breaking_down_development_and_testing_barriers.pngSolution: Architectures leveraging contracts to break down development and testing barriers


You can generate a rich implementation template directly from software architecture for C-language or Simulink models for efficiently supporting the software and controls engineering activities. It allows you to efficiently work with legacy projects thanks to a set of powerful features which guide you in migrating legacy-code to model. Integration and contract validation capabilities allow you to get your system configured right the first time. Let me explain each of these three a bit in detail:

Application Template Generation

Simcenter Embedded Software Designer helps you generate rich implementation template for C-language or Simulink models for efficiently supporting the software and controls engineering activities. In the case of external C implementationtemplategeneration.pngprogramming, the templates come in form of C code and header files containing all required functions whereas, in the case of external Simulink implementation, the template comes in the form of a Simulink model representing the blocks, ports and connections. In both cases, templates are strongly enriched and linked to architecture elements to allow change management and efficient integration.

Legacy Code to Model Conversion
legacycode2.png

You can directly work with your legacy projects thanks to a set of powerful features which guide you in migrating legacy-code to model. Re-using legacy software increases overall software dependability as they have already been tried and tested in working systems and any design and implementation faults are fixed. Simcenter Embedded Software Designer helps you efficiently analyze, instrument and extract required software content from the legacy C project and convert into a model for further reconciliation, verification and validation.

Software Integration and Validation

last_full_esd_image.pngHaving a very tight integration between software architecture and implementation activities helps users optimize and get their systems configured right the first time, thanks to easy integration and validation based on contracts. The shipped code may or may not adhere to the interface specifications provided in the implementation templates. The first integration step is, therefore, an automated check whether the supplied code adheres to the interfaces. Simcenter Embedded Software Designer clearly points out integration issues arising from broken interfaces.

So, next time when you start a software project make sure your belay game is dead strong as it will ease out your complex software development project.

Simcenter Embedded Software Designer offers perfectly coordinated solutions for a holistic software development: rich software architecture is used as a central platform to efficiently support the entire value chain for embedded software development and using the design-by-contract methodology to support integrated model-based software engineering. With a contract-based architecture design approach, Simcenter Embedded Software Designer allows for the development of complex software systems with architecture analysis, frontloading of test and verification, closed-loop simulation and interoperability with other development tools and platforms.

Want to learn more about Simcenter Embedded Software Designer? Discover other blog posts

Simulink is a registered trademark of The MathWorks, Inc.

This article first appeared on the Siemens Digital Industries Software blog at https://blogs.sw.siemens.com/simcenter/how-software-architecture-can-secure-your-software-development/