Software Systems

Software architecture

We provide high level structures of a software system and the documentation of these structures. These structures are needed to reason about the software system. Each structure comprises software elements, relations among them, and properties of both elements and relations. The architecture of a software system is a metaphor, analogous to the architecture of a building.

Software architecture is about making fundamental structural choices which are costly to change once implemented. Software architecture choices include specific structural options from possibilities in the design of software.


Applied & Embedded Programming Design

Our services in this area of Embedded software design are usually used to implement control of machines or devices that are not typically thought of as computers. It is typically specialized for the particular hardware that it runs on and has time and memory constraints. This term is sometimes used interchangeably with firmware, although firmware can also be applied to ROM-based code on a computer, on top of which the OS runs, whereas embedded software is typically the only software on the device in question.

A precise and stable characteristic feature is that no or not all functions of embedded software are initiated/controlled via a human interface, but through machine-interfaces instead.

Manufacturers ‘build in’ embedded software in the electronics of e.g. cars, telephones, modems, robots, appliances, toys, security systems, pacemakers, televisions and set-top boxes, and digital watches, for example. This software can be very simple, such as lighting controls running on an 8-bit microcontroller with a few kilobytes of memory with the suitable level of processing complexity determined with a Probably Approximately Correct Computation framework (a methodology based on randomized algorithms), or can become very sophisticated in applications such as airplanes, missiles, and process control systems.


Security Design

Providing security design services is essential in software engineering and ensures that the software has been designed from the ground up to be secure. Malicious practices are taken for granted and care is taken to minimize impact when a security vulnerability is discovered or in potential simulation of the possibility for such security vulnerability to arise in the future.


Quality Assurance

The SQA services that we provide ensures a way of preventing mistakes or defects in manufactured software modules, stack and layers and avoiding problems when delivering solutions or services to customers. The ISO 9000 defines it as “part of quality management focused on providing confidence that quality requirements will be fulfilled”. This encompasses the entire software development process, which includes processes such as requirements definition, software design, coding, source code control, code reviews, software configuration management, testing, release management, and product integration. SQA is organized into goals, commitments, abilities, activities, measurements, and verifications.