Scientific and technological progress has made modern life filled with electronics. Electronic devices and equipment at every step help to drive a car, cook food, conduct research, etc.
Distribution of systems built on the basis of microprocessors
Any electronic device needs software that will control its operation. This applies to both individual devices and embedded systems. There are a large number of companies that develop software for electronics, for example, Promwad performs low-level programming on order.
The largest segment of this software development cluster is rightfully occupied by the development of software for industrial automation. Almost every technological process now uses automation. Electronic ovens in the food industry, conveyor lines in mechanical engineering, electronic monitoring systems in the mining industry – all this is just a small drop of the electronics that needs software (SW).
Properly designed software will allow the equipment to use various interfaces, excellent system reliability and minimal hardware response time. The main tasks in the development of software for electronics are:
- development of a code that will minimize the response from each device and the system as a whole;
- obtaining a stable system resistant to external influences and emergency situations (including the development of interaction between modules with different interfaces);
- ensuring the longest working state of the device (including various types of monitoring), etc.
Separately, it should be noted about the development of software for testing. This direction combines low-level and high-level code development, which is due to the creation of a testing system and its management interface that will be available to a simple user.
Development of software for automotive electronics
Software in this segment allows car computers, navigation devices, diagnostic equipment, multimedia systems to work. For the most part, programming of microprocessor kits connected by an interface to an on-board computer or having its own interface is used. The number of interfaces is quite large: Bluetooth, USB, WiFi, OBD, LIN, CAN, FR, Samsung, Fujitsu, etc. Used as specialized, automotive and other widespread interfaces. The software allows you to create on the basis of the car a reliable modern system that will help the driver not only locate, control fuel injection, but also bring comfort to the car.
At the moment, the sector of software development for multimedia, navigation, and telecommunications is showing great growth. The development of information technology has led to the fact that in a rare house there is no computer, mobile phone, tablet. All this needs software and its volume is growing. The main task in this direction of software development is to ensure reliable operation of devices and the integration of various interfaces in one product.
The main work in the development of software for electronics is the creation of software firmware for the device, which is carried out mainly in a low-level programming language. Firmware allows the device to respond adequately to user system actions. An example is the creation of firmware for a test bench for testing microcircuits.
When working with electronic systems, it is required to implement a single interface that will interact with each firmware and allow the operator to control the process. An example of the creation of such a system can be the creation of a software product for a production line with computer monitoring, where the device interfaces are brought together in one local network and the devices themselves are controlled by an operator via a computer.
An example that will allow you to use almost every area of programming for electronics is the creation of a software complex “smart home”. Diverse subsystems will be connected in it into one whole, starting from the temperature support system and ending with the home security system. Thus, the creation of software for electronics is one of the foundations on which the development of society rests.
We are always looking for ways to improve and automate our development process. Our next task is to create tools for the operational planning of an agile development process in each specific project. In short projects today, it is often not cost effective to set up a testing dashboard, wiki, and mailing list because it all takes time on the part of the system administrator. We plan to automate the installation of the necessary tools using Web technologies, which will allow even a small project to use the development process in its entirety.
Even a small organization with modest resources can take advantage of a range of industry-standard software development practices. With the help of these methods, we managed to achieve a much greater degree of cross-platform. Many of the tools we have mentioned can be used effectively in the implementation of official procedures that meet the requirements of the US Food and Drug Commission.
For example, error logging and change control are two key policy areas typically required to comply with FDA QSR 820 and ISO 13485. With a wide variety of tools, a small team is quite capable of delivering high-quality, reliable programs in the shortest possible time.
Threat of the appearance of program vulnerabilities due to errors made when creating the project architecture of the program
This threat consists in the intentional or unintentional creation of a program architecture project (the logical structure of the program, in which the components, their interfaces and the concept of interaction between them are identified), containing errors (shortcomings), which, if not detected or not corrected, can cause the appearance of program vulnerabilities. The implementation of the threat may be related to:
- with intentional actions of the violator;
- with the adoption by the software developer of a conscious decision not to correct the errors found in the project architecture of the program for various reasons, for example, to reduce the development time of the program;
- with an incorrect interpretation of the security requirements for the software being created when creating a program architecture project, not taking into account typical scenarios of computer attacks and information security threats when creating a program architecture project, failure to correct errors found in the program architecture project due to accidental incorrect or unskilled actions.
Program vulnerabilities that appeared due to errors in the program architecture design can later be used to carry out computer attacks on the information systems of users using the software.
The implementation of this threat by an insider can be carried out by influencing the formation of the program architecture project, including modeling information security threats that may arise as a result of using the software, or by making changes to any objects of the software development environment , including configuration elements created by or used in the design of the program architecture. Changes can be made by authorized or unauthorized access to objects in the software development environment.