Gömülü Yazılım Mühendisliği: V-Model ile Yazılım Geliştirme

via Udemy

Go to Course: https://www.udemy.com/course/vmodel-embedded/

Overview

Bu kurs, gömülü yazılım geliştirme süreçlerine yapısal ve disiplinli bir yaklaşım sunmak isteyen mühendisler, öğrenciler ve profesyoneller için kapsamlı bir rehber niteliğindedir. Yazılım yaşam döngüsünü V-Model odağında ele alarak; gereksinim mühendisliğinden sistem testine, kod kalitesinden güvenlik ve emniyete, mimari tasarımdan birim testlerine kadar uçtan uca gömülü yazılım geliştirme süreçlerini işler.Kurs boyunca katılımcılar; yazılım mimarisinin temellerini, modül ve komponent bazlı tasarımı, Object-Oriented C (OOC) yaklaşımını, kodda bozulmaya yol açan anti-pattern'leri (örneğin spagetti kod veya kontrolsüz global değişken kullanımı) ve bu risklerle nasıl baş edileceğini öğrenir. Ayrıca birim testleri, entegrasyon testleri, HIL/SIL/MIL uygulamaları ve CUnit gibi test çatılarının kullanımı detaylıca anlatılır.Kod kalitesi, sadece temiz kod yazmak değil; sürdürülebilir, test edilebilir ve güvenli sistemler inşa etmek demektir. Bu kursta, yazılım kalitesini artırmak için peer review, inspection dashboard, traceability ve defect handling gibi kalite süreçleri de derinlemesine incelenir.Geliştirilen her yazılım satırının, bir sistem bütünü içinde anlamlı olması gerektiğini savunan bu kursta; safety-critical (emniyet kritik) sistemlerde yazılım entropisinin nasıl yönetileceği ve zamanlama tabanlı güvenlik açıklarından nasıl kaçınılacağı gibi ileri seviye konulara da yer verilir.Bu kurs size şunları kazandırır:Gerçek zamanlı gömülü sistemlerde sistematik yazılım geliştirme becerisiV-Model mantığıyla planlama, izlenebilirlik ve kalite süreçlerine hâkimiyetModüler, test edilebilir ve sürdürülebilir C tabanlı yazılım geliştirme yetkinliğiGüvenli kodlama, kod inceleme ve hata yönetimi gibi profesyonel becerilerKURS İÇERİĞİ VE ALT BAŞLIKLAR1. Giriş ve Kursa Genel BakışKursun amacı, kapsamı ve yaklaşımıV-Model'in neden seçildiğiGömülü yazılım nedir, nerelerde karşımıza çıkar?2. Yazılım Geliştirme SüreçleriYazılım yaşam döngüsü modelleriV-Model'in yapısı, avantajları ve kullanım alanlarıGereksinimden teste giden yol3. Kodlama Stili I: İnsan Odaklı KodlamaOkunabilirlik, sürdürülebilirlik ve ekip içi uyumİyi kodun anatomisi: isimlendirme, yorum satırları, formatlama4. Kodlama Stili II: Derleyici Odaklı KodlamaDerleyici dostu yazım: tanımlayıcılar, sabitler, yapılarBellek, tanımsız davranışlar ve C'de güvenli kod5. Peer Review: Ekip İçi Kod İncelemeİnceleme türleri: ad-hoc, checklist tabanlıFagan-style review ve kalite metrikleriKod incelemede bilişsel önyargılar6. Gereksinim MühendisliğiFonksiyonel ve fonksiyonel olmayan gereksinimlerGereksinimlerin izlenebilirliğiGereksinim bazlı test stratejisi7. Global Değişkenler ve RisklerGlobal değişken nedir ve neden tehlikelidir?Güvenli alternatifler: static, encapsulationRadyoaktif veri metaforu8. Spagetti Kod ve Kod BozulmasıSpagetti kodun belirtileri ve sonuçlarıKod entropisi ve mimari çöküşYapısal kurtarma teknikleri9. Stack Overflow ve Hafıza YönetimiStack vs Heap kavramıStack taşmaları neden olur, nasıl önlenir?Derleyici ayarları ve koruma mekanizmaları10. Yazılım Mimarisi ve HLD (High-Level Design)Katmanlı mimari (Layered Architecture)Komponentleşme ve arayüz kavramlarıSistem bütünü içinde tasarım11. Modal Sistemler ve StatechartsState machine mantığı ve faydalarıStatechart ile davranış modellemeGömülü yazılımda durum yönetimi12. Modül TasarımıSorumluluk odaklı yapılandırmaDüşük bağlılık, yüksek içsel tutarlılıkModül sınırları ve etkileşimleri13. Komponent ve Detaylı Komponent TasarımıArayüz, konfigürasyon ve kontratlarKomponent içi ve dışı ilişki tasarımıBlack-box yaklaşım ve PIM kavramı14. C'de Nesne Yönelimli Programlama (OOC)OOC kavramı, singleton, inheritance ve encapsulationC ile struct tabanlı sınıf oluşturmaYöntem yönlendirme ve reusable mimari15. Uygulama (Implementation)Tasarımdan koda geçişKodlama öncesi kontrol listeleriGüvenli kodlama teknikleri16. Yazılım KalitesiKalite nedir, nasıl ölçülür?Sürdürülebilirlik, test edilebilirlik, okunabilirlikClean code, secure code, defensive coding17. Traceability (İzlenebilirlik)Gereksinim → Tasarım → Kod → Test zinciriİzlenebilirlik tabloları ve araçlarıDoğrulama ve geçerleme ilişkisi18. Test Süreçlerine Genel BakışTest piramidi ve test seviyeleriWhite-box ve black-box test yöntemleriTest kapsamı ve metrikler19. Unit Testing (Birim Testi)Fonksiyon seviyesinde testTest senaryosu yazımıAssertion kullanımı20. CUnit ile Test GeliştirmeCUnit kurulumu ve yapılandırmasıSuite, test ve assert yapısıOtomatik test çalıştırma ve raporlama21. Entegrasyon TestiModüller arası etkileşim testiHata senaryoları ve test coverageİnterfacing ve mock kavramı22. Geliştirme OrtamlarıSTM32CubeIDE, Keil, GCC ve VSCodeDebugger, simulator ve build sistemiMakefile, linker ve konfigürasyon dosyaları23. Sistem Seviyesi Test (System-Level Testing)Tüm bileşenlerin birlikte çalışmasıKararlılık, senaryo testleri, yük testleriGerçek sistem davranışı24. HIL, SIL ve MIL TestleriModel-in-the-loop (MIL)Software-in-the-loop (SIL)Hardware-in-the-loop (HIL)25. Kabul Testi (Acceptance Testing)Son kullanıcı senaryolarıGereksinim bazlı test kurgusuOnay ve teslim aşaması26. Hata Yönetimi (Defect Handling)Hata tanımlama, sınıflandırma ve önceliklendirmeHata takibi ve düzeltme süreciRCA ve CAPA kavramları27. İnceleme Süreçleri ve Gösterge PanolarıKod inceleme dashboard'larıKalite metrikleri ve görünürlükSürekli iyileştirme kültürü28. Final: Yazılım Mühendisliğinde Ustalık YolculuğuSüreçlerin bütünsel tekrarıGerçek proje örnekleriyle kapanışGömülü sistem profesyonelliğine adım

Skills

Reviews