State-Machine Modeli
State Machine (Durum Makinesi) yazılım yönetimi, nesnelerin kontrol ve durum akışını modellemek için kullanılmaktadır. Bir sistemin veya yazılımın belirli durumlar arasında geçiş yapmasını sağlayan bir yaklaşımdır. Sonlu sayıda durumdan oluştuğu için Sonlu Durum Makinesi (Finite State Machine) olarak adlandırılır. Bu yöntem, yazılımda yer alan belirli girdi, çıktı ve olaylarına dayanmaktadır. Yazılımda yer alan girdilerin veya olayların nasıl tepki vereceğini tanımlayan bir yapıya sahiptir. Gömülü yazılım geliştirmelerinde kullanılmaktadır.
Temel Kavramlar
- Durumlar (State): Tasarlanan sistemin belirli bir işi yaptığı veya başka bir duruma geçmesi için uyarı beklediği koşullardır. Kısaca sistemin içerisinde bulunduğu farklı haller olarak adlandırılabilir. Örnek olarak kapalı, açık, kilitleme gibi durumlar olabilmektedir.
- Olaylar (Event): Sistemdeki durum değişikliğine neden olan iç ve dış etkenlerdir. Örneğin, “Kapıyı aç”, “Tuşa bas” vb. komutlar durum değişikliğine sebep olan olaylardır.
- Geçişler (Transitions): Bir durumdan diğerine geçişi tanımlar. Örnek olarak “kapalı” durumundan “açık” durumuna geçiş yapılabilir.
- Başlangıç Durumu (Initial State): Sistemin başladığında içinde bulunduğu durumdur.
- Son Durum (Final State): Sistem bir görevi tamamladığında ulaşılan nihai sonuç durumudur (isteğe bağlıdır).

Şekil-1’de temel kavramların gösterildiği durum makinesi örnek şeması yer almaktadır. State – Machine yapısını anlatan kapıyı aç-kapa örneği verilmiştir. Fakat bunun gibi basit bir modelin yanında uygulamadan uygulamaya değişen ve çok daha karmaşık yapıda modeller bulunmaktadır.
Avantajları
- İyi organizasyon: Karmaşık sistemlerde durumlar arasındaki geçiş net şekilde yapılmaktadır. Organizasyon olarak netlik ve durum geçişi önemlidir.
- Kolay hata ayıklama: Durumlar arasındaki geçişi kontrol etmek takip etmek kolaydır.
- Modüler kod: Durumlar birbirinden bağımsız yönetildiği için genişletilebilir, eklenebilir yazılımlar geliştirebilir. Bunun sonucunda modüller şeklinde kodlama yapılabilir.
- Görselleştirme imkânı: UML (Unified Modeling Language) gibi görsel araçlarla sistemin mantığını çizimlerle göstermek mümkündür. Ve bu özelliği sayesinde masaüstü uygulamalarında büyük avantaj sağlar. Sahada kullanılan buton, text, göstergeler görselleştirilmesi uygulama esnasında büyük katkı sağlamaktadır. Hem yazılım hem görselleştirme her uygulamada bulunmamaktadır. Bu nedenle de bir adım önde olan bir yapıdır.
Kullanım Alanları
- Gömülü Sistemler: Mikrokontrolcü tabanlı sistemlerde (örneğin, IoT cihazları, otomotiv yazılımları).
- UI (Kullanıcı Arayüzü) Yönetimi: UI’nin belirli durumlar arasında geçiş yapmasını sağlamasında.
- Oyun Geliştirme: Karakter animasyonları, yapay zekâ (AI) yönetiminde.
- Robotik: Bir robotun görevlerini belirli adımlarla gerçekleştirmesinde.
- Endüstriyel Otomasyon: Üretim hatlarında makinelerin kontrolünü sağlamasında.
Genel olarak kullanılan alanlarıdır. Özellikle endüstriyel uygulamalarda üretim yapan birçok fabrikada kullanılan ara yüz tasarımlarında yer alan bir yöntemdir. Hayatın içinde karşılaşılan örnek alanlar şu şekildedir:
Günlük Hayatta;
- Gerekli madeni para atıldığında ürünü veren otomatlar
- Binen kişilerin talep ettiği katlar göre duran asansörler
- Uygun şifre girildiğinde açılan kilitler
- Self-driving arabalar
- Turnike sistemleri
gibi pek çok alanda hem günlük yaşamdan hem de farklı saha ve endüstriyel uygulamalarda state machine yapısı kullanılmaktadır. Bu yöntemin organize edilebilirliği, kullanım kolaylığı, rahat ulaşabilmesi, anlaşılabilir ara yüzleri, açık kaynaklı birçok kodlama örnekleri ile GUI (Graphical User Interface) tasarımları yapılması mümkündür.
Kaynakça:
- https://medium.com
- https://tr.wikipedia.org
- https://statecharts.dev
- https://www.itemis.com
- https://www.pixabay.com