Prag

In the previous article “How to pay technical debt?”, we mentioned that the technical debt will be paid with the refactoring. Refactoring can be at the code level as well as at the architectural level.

Code technical debts are usually detected with tools such as sonar qube, cppcheck, or peer reviews and resolved at the package, class, or method level. In code refactoring, the structure and interrelationships of components remain untouched. In architectural refactoring, the aim will be to improve the system’s quality attributes such as performance, testability, maintainability, and availability. Architectural refactoring includes,

  • Breaking dependencies between components,
  • New component…

Before this article you can read What is Technical Debt.

It is not always easy to identify these technical debts within the project. In this regard, software architecture researches work on systematic methods. The increase in errors in the work list, decrease in sprint speed, increase in end-user complaints are the most basic indicators of increased technical debt. Technical debts do not pose a serious problem for the project if they are paid early.
The first stage of the technical debt settlement approach is the identification of technical debt and the establishment of awareness about technical debt payment.
The second stage is…

It is a session in software architectures trainings where we discuss the good and bad experiences in our previous projects. I guess we are never satisfied with the software we develop as engineers. The phrase I heard the most in this session was: “If I were to decide, I would rewrite this software”.
They will state that they do not know the field of business sufficiently at the beginning of the project and that they realize that some of the design decisions they made at the beginning of the project are not the ideal decision afterwards. He/she stated that they focused…

Man Rocks, Mersin- Turkey

In software, we may need to design the application as multiple tasks. The concept of task is used in the embedded software world to refer to structures such as threads and processes in the modern sense. Also In bare-metal systems where no OS exists, periodic or interrupt driven jobs are also are also defined as tasks.
In the UML world, we show the task as a double-lined object with edges. Task is sometimes called active object.

Following design decisions are made for tasks while designing a multitasking system:

  • How many tasks will be in software,
  • What work will be done…

Değiştirilebilirlik kalite özniteliği, geliştirilen yazılımın yaşam döngüsü boyunca ihtiyaç duyulacak değişiklikleri en az maliyetle yapabilmeyi ifade eder. Büyük çaplı yazılım sistemlerinin toplam yaşam maliyetinin %80 ini ürünün sahaya konulması sonrası maliyetler oluşturduğu tespit edilmiştir. Bu sebeple yazılım mimarisi tasarımında değiştirilebilirlik en etkili kalite özniteliği olarak karşımıza çıkmaktadır.

Yazılımlar,

  • Sahaya kurulduktan sonra hata düzeltmeleri,
  • Performans iyileştirmeleri,
  • Yeni kabiliyet ekleme, silme yada değiştirme,
  • Farklı ortam veya kullanım için konfigüre etme
  • İşletim sistemi, veri tabanı iletişim yönteminin güncellenmesi yada yeni bir tanesi ile değişimi
  • Yeni teknolojinin adapte edilmesi veya yeni bir sistemin entegre edilmesi,
  • Entegre olunan sistemlerdeki güncellemelere
  • Gelişen standartlara uyum

gibi ihtiyaçlarla…

Embedded systems are systems that work closely with hardware. In these systems, information exchange with sensors and actuators can be done by digital or analog input / output method. Sometimes more complex sensors, actuators or devices provide data using ethernet, serial, usb, Mil-STD 1553, Can-Bus interfaces. Data coming from these interfaces may use standard or company-specific protocols running through them. rotocols running through them. In embedded systems, abstraction of input / output hardware, communication hardware, driver software (Input / Output Hardware Adaptation) is provided to reduce hardware dependency.

Driver Software

Device drivers are used to access hardware and to exchange data over…

IIOT, robotics, autonomous vehicles, command control, weapon control systems integrates more than one complex subsystem to perform their duties. Typical subsystems GPS, Radar, motor controller, camera all come with their own special protocol and input / output interfaces.

In the previous article, we mentioned that input / output hardware and related driver software are abstracted with Input / Output Hardware Adaptation.

Second level abstraction is the abstraction of data, control and status messages of the device with a common communication method (Subsystem Adaptation). The advantages of this aproach is as follows;

  • Integration of different devices into the system with the…

Endüstriyel nesnelerin interneti, robotik, otonom araçlar, komuta kontrol, silah kontrol gibi sistemler birden fazla karmaşık alt sistemi entegre eden sistemlerdir. Bu sistemler aslında farklı alt sistemlerin bir bir sistem gibi çalışmasını temel alan dağıtık sistemlerdir. Entegre edilen GPS, Radar, motor kontrol, kamera gibi sistemler kendi özel protokolü ve girdi/çıktı ara yüzü ile gelmektedir.

Bir önceki yazıda girdi/çıktı donanımı ve ilgili sürücü yazılımının Girdi/Çıktı Donanım Adaptasyonu ile soyutlandığından bahsetmiştik.

İkinci seviye soyutlama ise cihazın veri, kontrol ve durum mesajlarının ortak bir iletişim yöntemi ile soyutlamasıdır (Alt sistem Adaptasyonu). Böylelikle;

  1. Donanım hazır olmadan diğer birimlerin geliştirilebilmesi ve test edilebilmesi,
  2. Farklı cihazların sisteme…

Picture: Ankara Nallıhan Bird Paradise

The Need

The software developed as distributed modules need to cooperate at different levels, especially data exchange. For the communication of these applications running in a distributed environment, the middleare software libraries can be used instead of using low level communication libraies. Middleware is seen as a layer between distributed applications and the operating system and communication protocol. It saves high-level applications from complexity by managing all the differences in a heterogeneous system developed with different languages ​​such as C ++, Java, GO, running on different operating systems such as Windows, Linux, Vx-Works and /or having different hardware architectures such as Intel…

Gömülü sistemler donanımla yakın çalışan sistemlerdir. Bu sistemlerde sensörler ve eyleyiciler(actuator) ile bilgi alışverişi sayısal ya da analog girdi/çıktı yöntemiyle yapılabilir. Kimi zaman daha karmaşık sensör, eyleyici ya da cihazlar sisteme eternet, seri, usb, Mil-STD 1553, Can-Bus gibi veri yolları ve bunlar üzerinden koşan standart yada firma özel protokoller üzerinden erişirler. Bu ara yüzler gerek donanım açısından gerekse sürücü yazılımı açısından farklı ara yüzlere sahip olabilmektedir. Bu durumda herhangi bir donanım değişikliği bütün yazılım modüllerinde değişikliğe sebep olabilecektir. Gömülü sistemlerde bu donanım bağımlılığını azaltmak üzere girdi/çıktı donanımı, iletişim donanımı, sürücü yazılımının (Girdi/Çıktı Donanım Adaptasyonu) soyutlanması sağlanmaktadır.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store