[![image](https://img.shields.io/discord/772774097734074388?label=Discord&logo=discord)](https://discord.com/servers/software-engineering-courses-secourses-772774097734074388) [![Hits](https://hits.sh/github.com/FurkanGozukara/Stable-Diffusion/blob/main/Tutorials/Muhendislik-Uygulamalarinda-Standartlar.md.svg?style=plastic&label=Hits%20Since%2025.08.27&labelColor=007ec6&logo=SECourses)](https://hits.sh/github.com/FurkanGozukara/Stable-Diffusion/blob/main/Tutorials/Muhendislik-Uygulamalarinda-Standartlar.md)
[![Patreon](https://img.shields.io/badge/Patreon-Support%20Me-F2EB0E?style=for-the-badge&logo=patreon)](https://www.patreon.com/c/SECourses) [![BuyMeACoffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-ffdd00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black)](https://www.buymeacoffee.com/DrFurkan) [![Furkan Gözükara Medium](https://img.shields.io/badge/Medium-Follow%20Me-800080?style=for-the-badge&logo=medium&logoColor=white)](https://medium.com/@furkangozukara) [![Codio](https://img.shields.io/static/v1?style=for-the-badge&message=Articles&color=4574E0&logo=Codio&logoColor=FFFFFF&label=CivitAI)](https://civitai.com/user/SECourses/articles) [![Furkan Gözükara Medium](https://img.shields.io/badge/DeviantArt-Follow%20Me-990000?style=for-the-badge&logo=deviantart&logoColor=white)](https://www.deviantart.com/monstermmorpg)

[![YouTube Channel](https://img.shields.io/badge/YouTube-SECourses-C50C0C?style=for-the-badge&logo=youtube)](https://www.youtube.com/SECourses)  [![Furkan Gözükara LinkedIn](https://img.shields.io/badge/LinkedIn-Follow%20Me-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/furkangozukara/)   [![Udemy](https://img.shields.io/static/v1?style=for-the-badge&message=Stable%20Diffusion%20Course&color=A435F0&logo=Udemy&logoColor=FFFFFF&label=Udemy)](https://www.udemy.com/course/stable-diffusion-dreambooth-lora-zero-to-hero/?referralCode=E327407C9BDF0CEA8156) [![Twitter Follow Furkan Gözükara](https://img.shields.io/badge/Twitter-Follow%20Me-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white)](https://twitter.com/GozukaraFurkan)

# Mühendislik Uygulamalarında Kullanılan Standartlar - Mersin Üniversitesi Bilgisayar Mühendisliği Bölümü

**Bilgisayar Mühendisliği Programı İçin Kendi Kendine Çalışma Materyali**

**Hoş Geldiniz!**

Bu ders materyali, mühendislik pratiğinde, özellikle de bilgisayar mühendisliği alanında standartların neden bu kadar önemli olduğunu anlamanıza yardımcı olmak için tasarlanmıştır. Standartlar, modern teknolojinin temel taşlarından biridir ve günlük hayatımızda kullandığımız sayısız ürün ve hizmetin güvenli, güvenilir ve birbiriyle uyumlu çalışmasını sağlar.

Bu 8 saatlik çalışma boyunca, standartların ne olduğunu, nasıl geliştirildiğini, kimler tarafından geliştirildiğini ve bilgisayar mühendisliğinin çeşitli alanlarında (yazılım, donanım, ağ, güvenlik vb.) nasıl uygulandığını detaylı bir şekilde inceleyeceksiniz. Bu materyal, herhangi bir dış kaynağa veya eğitmene ihtiyaç duymadan konuyu tam olarak kavramanız için tüm gerekli bilgileri içermektedir.

Lütfen her bölümü dikkatlice okuyun, verilen örnekleri inceleyin ve mini alıştırmaları tamamlayarak öğrenmenizi pekiştirin.

**Dersin Hedefleri:**

Bu dersi tamamladığınızda;

*   Standartların mühendislikteki kritik rolünü ve faydalarını açıklayabileceksiniz.
*   Farklı standart türlerini ve seviyelerini ayırt edebileceksiniz.
*   Önemli ulusal ve uluslararası standart belirleme kuruluşlarını tanıyacaksınız.
*   Bilgisayar mühendisliğine özgü temel yazılım, donanım, ağ ve güvenlik standartları hakkında bilgi sahibi olacaksınız.
*   Standartların ürün kalitesi, birlikte çalışabilirlik, güvenlik ve inovasyon üzerindeki etkilerini değerlendirebileceksiniz.
*   Mesleki uygulamalarınızda standartları etkin bir şekilde kullanmanın önemini kavrayacaksınız.

**Hazırsanız, başlayalım!**

---

## İçindekiler

1.  [Modül 1: Standartlara Giriş ve Temel Kavramlar](#modül-1-standartlara-giriş-ve-temel-kavramlar)
    *   [1.1. Standart Nedir? Neden İhtiyaç Duyarız?](#11-standart-nedir-neden-ihtiyaç-duyarız)
    *   [1.2. Standartların Tarihsel Gelişimi (Kısa Bir Bakış)](#12-standartların-tarihsel-gelişimi-kısa-bir-bakış)
    *   [1.3. Standartların Mühendislikteki Rolü ve Önemi](#13-standartların-mühendislikteki-rolü-ve-önemi)
    *   [1.4. Standart Türleri](#14-standart-türleri)
    *   [1.5. Standartların Seviyeleri](#15-standartların-seviyeleri)
    *   [1.6. Standartların Faydaları ve Zorlukları](#16-standartların-faydaları-ve-zorlukları)
    *   [1.7. Mini Alıştırma ve Düşündürücü Sorular](#17-mini-alıştırma-ve-düşündürücü-sorular)
2.  [Modül 2: Standart Belirleme Kuruluşları ve Süreçleri](#modül-2-standart-belirleme-kuruluşları-ve-süreçleri)
    *   [2.1. Önemli Uluslararası Standart Kuruluşları](#21-önemli-uluslararası-standart-kuruluşları)
    *   [2.2. Önemli Bölgesel ve Ulusal Standart Kuruluşları](#22-önemli-bölgesel-ve-ulusal-standart-kuruluşları)
    *   [2.3. Standart Geliştirme Süreci](#23-standart-geliştirme-süreci)
    *   [2.4. Standartlara Uyum ve Sertifikasyon](#24-standartlara-uyum-ve-sertifikasyon)
    *   [2.5. Mini Alıştırma: Bir Standart Nasıl Araştırılır?](#25-mini-alıştırma-bir-standart-nasıl-araştırılır)
3.  [Modül 3: Bilgisayar Mühendisliğinde Yazılım Standartları](#modül-3-bilgisayar-mühendisliğinde-yazılım-standartları)
    *   [3.1. Yazılım Geliştirme Yaşam Döngüsü (SDLC) Standartları ve Modelleri](#31-yazılım-geliştirme-yaşam-döngüsü-sdlc-standartları-ve-modelleri)
    *   [3.2. Kodlama Standartları](#32-kodlama-standartları)
    *   [3.3. Yazılım Kalite Standartları](#33-yazılım-kalite-standartları)
    *   [3.4. Yazılım Test Standartları](#34-yazılım-test-standartları)
    *   [3.5. Yazılım Dokümantasyon Standartları](#35-yazılım-dokümantasyon-standartları)
    *   [3.6. Sürüm Kontrol Sistemleri ve Yaygın Uygulamalar](#36-sürüm-kontrol-sistemleri-ve-yaygın-uygulamalar)
    *   [3.7. API Tasarım Standartları](#37-api-tasarım-standartları)
    *   [3.8. Pratik Uygulama: Basit Bir Kod İncelemesi](#38-pratik-uygulama-basit-bir-kod-incelemesi)
4.  [Modül 4: Ağ ve İletişim Standartları](#modül-4-ağ-ve-iletişim-standartları)
    *   [4.1. OSI Referans Modeli ve TCP/IP Protokol Ailesi](#41-osi-referans-modeli-ve-tcpip-protokol-ailesi)
    *   [4.2. Temel Ağ Protokolleri ve Standartları](#42-temel-ağ-protokolleri-ve-standartları)
    *   [4.3. Veri Değişim Formatları](#43-veri-değişim-formatları)
    *   [4.4. Mini Alıştırma: Bir Web Sayfası İsteğinin Akışı](#44-mini-alıştırma-bir-web-sayfası-isteğinin-akışı)
5.  [Modül 5: Donanım, Güvenlik ve Diğer İlgili Standartlar](#modül-5-donanım-güvenlik-ve-diğer-ilgili-standartlar)
    *   [5.1. Donanım Arayüz Standartları](#51-donanım-arayüz-standartları)
    *   [5.2. Gömülü Sistemler ve IoT Standartları](#52-gömülü-sistemler-ve-iot-standartları)
    *   [5.3. Bilgi Güvenliği Yönetim Sistemi Standartları](#53-bilgi-güvenliği-yönetim-sistemi-standartları)
    *   [5.4. Web Uygulama Güvenliği Standartları ve Kılavuzları](#54-web-uygulama-güvenliği-standartları-ve-kılavuzları)
    *   [5.5. Kriptografi Standartları](#55-kriptografi-standartları)
    *   [5.6. Erişilebilirlik Standartları](#56-erişilebilirlik-standartları)
    *   [5.7. Proje Yönetimi Standartları ve Metodolojileri](#57-proje-yönetimi-standartları-ve-metodolojileri)
    *   [5.8. Etik Standartlar ve Mesleki Davranış Kuralları](#58-etik-standartlar-ve-mesleki-davranış-kuralları)
    *   [5.9. Pratik Senaryo: Yeni Bir Akıllı Cihaz Tasarımı](#59-pratik-senaryo-yeni-bir-akıllı-cihaz-tasarımı)
6.  [Modül 6: Standartların Geleceği ve Kapanış](#modül-6-standartların-geleceği-ve-kapanış)
    *   [6.1. Gelişen Teknolojiler ve Yeni Standart İhtiyaçları](#61-gelişen-teknolojiler-ve-yeni-standart-ihtiyaçları)
    *   [6.2. Standartların Sürekli Gelişimi](#62-standartların-sürekli-gelişimi)
    *   [6.3. Dersin Özeti ve Temel Kazanımlar](#63-dersin-özeti-ve-temel-kazanımlar)
    *   [6.4. Kendi Kendine Değerlendirme Soruları](#64-kendi-kendine-değerlendirme-soruları)

---

## Modül 1: Standartlara Giriş ve Temel Kavramlar

**(Tahmini Çalışma Süresi: 1.5 Saat)**

Bu modülde, standartların ne olduğunu, neden var olduklarını, mühendislikteki rollerini ve temel sınıflandırmalarını öğreneceksiniz.

### 1.1. Standart Nedir? Neden İhtiyaç Duyarız?

**Standart**, kelime anlamı olarak "bir örneğe göre olan, belli ölçülere uyularak yapılan, tek biçim" demektir. Mühendislik ve teknoloji bağlamında ise standartlar, ürünlerin, hizmetlerin, süreçlerin veya malzemelerin belirli özelliklerini, performansını, güvenliğini veya birlikte çalışabilirliğini tanımlayan resmi veya gayri resmi kurallar, kılavuzlar veya tanımlamalardır.

Düşünün ki her üretici kendi vida dişlerini, kendi elektrik prizlerini veya kendi USB bağlantı noktalarını yapsaydı ne olurdu?
*   **Uyumsuzluk:** Farklı üreticilerin ürünleri birbiriyle çalışmazdı. Bir A markasının şarj aleti B markasının telefonunu şarj edemezdi.
*   **Karmaşa:** Tüketiciler ve üreticiler için büyük bir karmaşa yaşanırdı. Hangi ürünün hangisiyle uyumlu olduğunu bilmek imkansızlaşırdı.
*   **Maliyet Artışı:** Herkesin kendi özel parçalarını üretmesi, seri üretim avantajlarını ortadan kaldırır ve maliyetleri artırırdı.
*   **Güvenlik Riskleri:** Özellikle elektrik, yapı veya makine gibi alanlarda, standartların olmaması ciddi güvenlik riskleri doğurabilirdi.

İşte bu gibi nedenlerle standartlara ihtiyaç duyarız. Standartlar:
*   **Ortak bir dil oluşturur:** Üreticiler, tedarikçiler, tüketiciler ve düzenleyiciler arasında teknik iletişimi kolaylaştırır.
*   **Birlikte çalışabilirliği sağlar:** Farklı sistemlerin ve bileşenlerin sorunsuz bir şekilde birlikte çalışmasını mümkün kılar. Örneğin, herhangi bir markanın Wi-Fi modemine, herhangi bir markanın Wi-Fi destekli dizüstü bilgisayarıyla bağlanabilirsiniz.
*   **Kaliteyi ve güvenilirliği artırır:** Ürünlerin ve hizmetlerin belirli bir kalite seviyesini karşılamasını sağlar.
*   **Güvenliği temin eder:** Kullanıcıları ve çevreyi olası tehlikelerden korumaya yardımcı olur.
*   **İnovasyonu teşvik eder:** Temel standartlar üzerine kurulu yeni ürün ve hizmetlerin geliştirilmesini kolaylaştırır.
*   **Ticaretin önündeki engelleri kaldırır:** Uluslararası pazarlarda ürünlerin serbest dolaşımını destekler.
*   **Maliyetleri düşürür:** Seri üretim, daha az çeşitlilik ve daha iyi planlama sayesinde maliyetleri azaltır.

> **Düşünelim:** Günlük hayatta kullandığınız ve standartlar sayesinde sorunsuz çalışan 3 farklı teknolojik ürün veya sistemi düşünün. Bu ürünlerde hangi standartların rol oynadığını tahmin etmeye çalışın. (Örneğin, cep telefonu şarj cihazı - USB standardı, elektrikli ev aletleri - priz ve voltaj standartları, e-posta - SMTP/POP3/IMAP standartları).

### 1.2. Standartların Tarihsel Gelişimi (Kısa Bir Bakış)

Standartlaşma ihtiyacı insanlık tarihi kadar eskidir. İlk standartlar ağırlık ve ölçü birimleri (örneğin, Mısır'da kübit), para birimleri veya yapı malzemelerinin boyutları gibi alanlarda ortaya çıkmıştır.

*   **Sanayi Devrimi:** Özellikle 19. yüzyıldaki Sanayi Devrimi, seri üretim ve değiştirilebilir parçalar ihtiyacını doğurarak modern standartlaşmanın temellerini atmıştır. Demiryolu ray aralıkları, vida dişleri gibi konularda standartlaşma çabaları hız kazanmıştır. Örneğin, İngiliz mühendis Joseph Whitworth'un 1841'de vida dişleri için önerdiği standart, büyük bir kabul görmüştür.
*   **Elektrik ve Telekomünikasyon:** 19. yüzyılın sonları ve 20. yüzyılın başlarında elektrik ve telekomünikasyon teknolojilerinin gelişimi, uluslararası standartlara olan ihtiyacı artırmıştır. Bu dönemde Uluslararası Elektroteknik Komisyonu (IEC) gibi kuruluşlar faaliyete geçmiştir.
*   **Küreselleşme ve Teknoloji:** 20. yüzyılın ikinci yarısından itibaren artan küreselleşme ve bilgi teknolojilerindeki hızlı gelişmeler, standartların kapsamını ve önemini daha da artırmıştır. Bilgisayar ağları, yazılım, veri formatları gibi alanlarda sayısız standart geliştirilmiştir.

Bugün, standartlar hayatımızın her alanında karşımıza çıkmaktadır ve teknolojik gelişimin ayrılmaz bir parçasıdır.

### 1.3. Standartların Mühendislikteki Rolü ve Önemi

Mühendislik, bilimsel ve matematiksel prensipleri kullanarak insanlığın sorunlarına pratik çözümler üretme sanatıdır. Standartlar, bu süreçte mühendislere yol gösteren, işlerini kolaylaştıran ve ürettikleri çözümlerin kalitesini, güvenliğini ve etkinliğini artıran temel araçlardır.

**Mühendislikte Standartların Başlıca Rolleri:**

1.  **Tasarım ve Geliştirme:**
    *   **Ortak Referans Noktası:** Tasarımcılara ve geliştiricilere, bileşenlerin boyutları, malzemelerin özellikleri, performans kriterleri gibi konularda ortak bir referans noktası sunar.
    *   **Tekrar Kullanılabilirlik:** Standartlaştırılmış bileşenler ve modüller, farklı projelerde tekrar kullanılabilir, bu da tasarım süresini ve maliyetini azaltır.
    *   **Simülasyon ve Analiz:** Standart malzeme özellikleri ve test prosedürleri, mühendislik analizlerinin ve simülasyonlarının daha doğru ve güvenilir olmasını sağlar.

2.  **Üretim ve Kalite Kontrol:**
    *   **Verimlilik:** Standartlaştırılmış süreçler ve parçalar, üretimde verimliliği artırır ve otomasyonu kolaylaştırır.
    *   **Kalite Güvencesi:** Belirlenmiş kalite standartlarına (örn: ISO 9001) uyum, ürünlerin ve hizmetlerin tutarlı bir kalitede olmasını sağlar. Test ve muayene prosedürleri için standartlar, kalite kontrol süreçlerini standardize eder.

3.  **Birlikte Çalışabilirlik (Interoperability):**
    *   **Sistem Entegrasyonu:** Farklı üreticiler tarafından geliştirilen sistemlerin ve bileşenlerin sorunsuz bir şekilde bir araya getirilip çalışmasını sağlar. Bilgisayar mühendisliğinde bu, donanım (örn: USB, Ethernet portları) ve yazılım (örn: dosya formatları, ağ protokolleri) için hayati öneme sahiptir.
    *   **Pazar Erişimi:** Standartlara uygun ürünler, daha geniş pazarlara erişebilir çünkü farklı sistemlerle uyumludurlar.

4.  **Güvenlik ve Güvenilirlik:**
    *   **Risk Azaltma:** Özellikle elektrik, makine, yazılım güvenliği gibi alanlarda, standartlar minimum güvenlik gereksinimlerini tanımlayarak kazaları, arızaları ve siber saldırıları önlemeye yardımcı olur.
    *   **Güvenilirlik Artışı:** Standartlaştırılmış testler ve tasarım kuralları, ürünlerin ve sistemlerin daha uzun ömürlü ve daha az arıza yapan şekilde tasarlanmasına olanak tanır.

5.  **İletişim ve Dokümantasyon:**
    *   **Teknik Dil:** Standartlar, mühendisler arasında teknik terimler, semboller ve çizimler konusunda ortak bir dil oluşturur. (Örn: Elektrik devre şemalarındaki semboller, akış diyagramları)
    *   **Açık Dokümantasyon:** Standartlara uygun dokümantasyon, projelerin anlaşılmasını, bakımını ve gelecekteki geliştirmeleri kolaylaştırır.

6.  **Yasal ve Düzenleyici Uyum:**
    *   **Mevzuat:** Birçok ülkede, özellikle güvenlik, sağlık ve çevre koruma ile ilgili alanlarda standartlara uyum yasal bir zorunluluktur.
    *   **Ticaret:** Uluslararası ticarette, standartlar genellikle teknik engellerin kaldırılmasına ve adil rekabetin sağlanmasına yardımcı olur.

> **Biliyor muydunuz?** Kullandığınız kredi kartının boyutları ve manyetik şeridinin özellikleri ISO/IEC 7810 ve ISO/IEC 7811 standartları ile belirlenmiştir. Bu sayede kartınız dünyanın her yerindeki ATM'lerde ve POS cihazlarında çalışabilir.

### 1.4. Standart Türleri

Standartlar, kökenlerine, uygulama alanlarına ve yasal bağlayıcılıklarına göre farklı şekillerde sınıflandırılabilir. En yaygın sınıflandırmalar şunlardır:

*   **De Jure (Yasayla Belirlenmiş) Standartlar:**
    *   Resmi bir standart belirleme kuruluşu (uluslararası, ulusal veya bölgesel) tarafından geliştirilen ve onaylanan standartlardır.
    *   Genellikle uzun bir geliştirme, tartışma ve oylama sürecinden geçerler.
    *   Örnekler: ISO 9001 (Kalite Yönetim Sistemi), IEEE 802.11 (Wi-Fi), IEC 60950 (Bilgi Teknolojisi Ekipmanları Güvenliği).
    *   Bu standartlara uyum bazen yasal olarak zorunlu olabilir (örneğin, belirli güvenlik standartları).

*   **De Facto (Fiili Durum / Piyasada Oluşan) Standartlar:**
    *   Resmi bir süreçten geçmeden, piyasadaki yaygın kullanım veya baskın bir teknoloji sayesinde kendiliğinden oluşan standartlardır.
    *   Bir şirket veya bir grup tarafından geliştirilen bir teknoloji o kadar popüler hale gelir ki, diğerleri de onu benimsemek zorunda kalır.
    *   Örnekler:
        *   Microsoft Windows işletim sistemi (uzun yıllar PC pazarında fiili standarttı).
        *   QWERTY klavye düzeni.
        *   PDF (Portable Document Format) dosya formatı (Adobe tarafından geliştirildi, sonra ISO standardı oldu: ISO 32000).
        *   TCP/IP protokol paketi (başlangıçta ARPANET için geliştirildi, internetin temelini oluşturarak fiili standart haline geldi, daha sonra RFC'ler ile resmiyet kazandı).
    *   De facto standartlar zamanla de jure standartlara dönüşebilir.

*   **Açık Standartlar (Open Standards):**
    *   Herkesin erişimine ve kullanımına açık olan, genellikle telif hakkı veya patent kısıtlamaları olmayan (veya makul ve ayrımcı olmayan lisanslama koşullarıyla sunulan) standartlardır.
    *   Geliştirme süreçleri genellikle şeffaf ve katılıma açıktır.
    *   Birlikte çalışabilirliği ve rekabeti teşvik ederler.
    *   Örnekler: HTML, CSS, XML, HTTP (W3C ve IETF tarafından geliştirilen birçok internet standardı), ODF (OpenDocument Format - ISO/IEC 26300).

*   **Tescilli Standartlar (Proprietary Standards) / Kapalı Standartlar:**
    *   Belirli bir şirket veya kuruluşa ait olan ve kullanımı genellikle lisanslama veya kısıtlamalara tabi olan standartlardır.
    *   Teknik detayları kamuya açık olmayabilir.
    *   Şirketlerin kendi ekosistemlerini oluşturmalarına ve rekabet avantajı elde etmelerine yardımcı olabilir, ancak bazen "satıcıya bağımlılık" (vendor lock-in) sorununa yol açabilirler.
    *   Örnekler: Microsoft'un bazı eski dosya formatları (.doc, .xls), Apple'ın bazı donanım konektörleri (örn: Lightning).

*   **Zorunlu Standartlar (Mandatory Standards):**
    *   Yasal düzenlemelerle uyulması zorunlu kılınan standartlardır. Genellikle kamu güvenliği, sağlık, çevre koruma gibi konularla ilgilidir.
    *   Örnek: Elektrikli cihazlar için güvenlik standartları, binalar için yangın güvenliği kodları.

*   **Gönüllü Standartlar (Voluntary Standards):**
    *   Uygulanması yasal bir zorunluluk olmayan, ancak pazar talebi, kalite beklentileri veya endüstri en iyi uygulamaları nedeniyle benimsenen standartlardır.
    *   Birçok ISO, IEEE standardı bu kategoriye girer. Ancak, bir sözleşme veya müşteri şartnamesi ile zorunlu hale gelebilirler.

**Tablo 1.1: Standart Türlerine Örnekler**

| Standart Türü    | Açıklama                                                                  | Örnekler                                                                     |
| :--------------- | :------------------------------------------------------------------------ | :--------------------------------------------------------------------------- |
| **De Jure**      | Resmi kuruluşlarca geliştirilir.                                            | ISO 9001, IEEE 802.3 (Ethernet), IEC 62368-1 (Ses/Video, BT Ekipmanı Güvenliği) |
| **De Facto**     | Piyasada yaygın kullanımla oluşur.                                        | QWERTY Klavye, PDF (başlangıçta), USB (başlangıçta)                        |
| **Açık**         | Erişimi ve kullanımı serbest veya makul şartlarla.                           | HTML, HTTP, Ogg Vorbis, Linux                                                |
| **Tescilli**     | Bir firmaya ait, kullanımı kısıtlı olabilir.                               | Apple Lightning konektörü, Microsoft .docx (başlangıçta bazı özellikleri)     |
| **Zorunlu**      | Yasal olarak uyulması gerekir.                                            | CE işareti için gerekli güvenlik standartları, emisyon standartları            |
| **Gönüllü**      | Uygulanması tercihe bağlıdır.                                               | Birçok ISO kalite standardı, çoğu IEEE ağ standardı                        |

### 1.5. Standartların Seviyeleri

Standartlar, geçerlilik alanlarına ve coğrafi kapsamlarına göre de sınıflandırılır:

*   **Şirket İçi Standartlar (Company/Internal Standards):**
    *   Belirli bir şirket veya kuruluş içinde geçerli olan standartlardır.
    *   Şirketin kendi süreçlerini, ürünlerini veya hizmetlerini standardize etmek için geliştirilir.
    *   Örnekler: Bir yazılım şirketinin kendi kodlama standartları, bir üretim şirketinin kendi kalite kontrol prosedürleri.

*   **Endüstri Standartları (Industry Standards):**
    *   Belirli bir endüstri veya sektördeki kuruluşlar tarafından ortaklaşa geliştirilen veya kabul edilen standartlardır.
    *   Genellikle endüstri konsorsiyumları veya birlikleri tarafından oluşturulur.
    *   Örnekler: Otomotiv endüstrisi için SAE standartları, bankacılık sektörü için SWIFT mesajlaşma standartları.

*   **Ulusal Standartlar (National Standards):**
    *   Belirli bir ülke içinde geçerli olan ve o ülkenin ulusal standart kuruluşu tarafından geliştirilen veya benimsenen standartlardır.
    *   Örnekler:
        *   Türkiye: TSE (Türk Standardları Enstitüsü) tarafından yayınlanan TS standartları.
        *   ABD: ANSI (American National Standards Institute) tarafından onaylanan standartlar (örn: ANSI C).
        *   Almanya: DIN (Deutsches Institut für Normung) standartları.
        *   İngiltere: BS (British Standards) standartları.

*   **Bölgesel Standartlar (Regional Standards):**
    *   Belirli bir coğrafi bölgedeki birden fazla ülkeyi kapsayan standartlardır.
    *   Örnekler:
        *   Avrupa: CEN (Avrupa Standardizasyon Komitesi), CENELEC (Avrupa Elektroteknik Standardizasyon Komitesi) ve ETSI (Avrupa Telekomünikasyon Standartları Enstitüsü) tarafından geliştirilen EN (European Norm) standartları.

*   **Uluslararası Standartlar (International Standards):**
    *   Dünya çapında kabul görmesi ve uygulanması hedeflenen standartlardır.
    *   Uluslararası ticaretin kolaylaştırılması, teknolojinin yaygınlaşması ve küresel sorunlara ortak çözümler bulunması için kritik öneme sahiptirler.
    *   Önde gelen uluslararası standart kuruluşları ISO, IEC ve ITU'dur.
    *   Örnekler: ISO 9001 (Kalite Yönetimi), ISO/IEC 27001 (Bilgi Güvenliği Yönetimi), IEEE 802 serisi (Ağ Standartları).

> **Dikkat!** Bir uluslararası standart (örn: ISO 9001), bir ülke tarafından ulusal standart olarak benimsenebilir (örn: TS EN ISO 9001). Bu durumda, uluslararası standardın içeriği korunur ancak ulusal standart kuruluşu tarafından yayınlanır ve o ülkede geçerli hale gelir.

### 1.6. Standartların Faydaları ve Zorlukları

Standartların mühendislik uygulamalarına ve genel olarak topluma sayısız faydası olduğu gibi, bazı zorlukları ve eleştirilen yönleri de bulunmaktadır.

**Faydaları:**

1.  **Birlikte Çalışabilirlik (Interoperability):** Farklı üreticilerin ürün ve sistemlerinin uyumlu çalışmasını sağlar. (Örn: Farklı marka telefonların aynı Wi-Fi ağına bağlanabilmesi)
2.  **Kalite ve Güvenilirlik:** Ürün ve hizmetlerde belirli bir kalite seviyesinin tutturulmasına yardımcı olur. (Örn: ISO 9001)
3.  **Güvenlik:** Kullanıcılar, çalışanlar ve çevre için riskleri azaltır. (Örn: Elektrikli cihaz güvenlik standartları)
4.  **Ekonomik Verimlilik:** Üretim maliyetlerini düşürür (seri üretim, azaltılmış çeşitlilik), israfı azaltır.
5.  **Pazar Erişimi ve Ticaretin Kolaylaştırılması:** Uluslararası standartlar, ürünlerin küresel pazarlarda kabulünü kolaylaştırır, teknik engelleri azaltır.
6.  **İnovasyon ve Teknolojik Gelişim:** Temel standartlar, üzerine yeni teknolojiler ve ürünler inşa etmek için bir platform sağlar. (Örn: İnternet standartları üzerine kurulan web uygulamaları)
7.  **Tüketici Güveni:** Standartlara uygun ürünler, tüketicilere kalite ve güvenlik konusunda güvence verir.
8.  **Bilgi Transferi ve Eğitim:** Standartlar, en iyi uygulamaları ve birikmiş teknik bilgiyi yaygınlaştırır.
9.  **Çevresel Koruma:** Emisyon, atık yönetimi gibi konulardaki standartlar çevresel etkileri azaltmaya yardımcı olur.
10. **Yasal Uyum:** Birçok yasal düzenleme, ilgili standartlara atıfta bulunur.

**Zorlukları ve Eleştiriler:**

1.  **Geliştirme Sürecinin Yavaşlığı:** Özellikle de jure standartların geliştirilmesi, uzlaşma arayışları nedeniyle uzun zaman alabilir. Bu durum, hızla gelişen teknolojilere ayak uydurmakta zorlanmalarına neden olabilir.
2.  **Maliyet:** Standartlara uyum sağlamak (testler, sertifikasyon, süreç değişiklikleri) şirketler için maliyetli olabilir, özellikle küçük ve orta ölçekli işletmeler (KOBİ'ler) için.
3.  **İnovasyonu Kısıtlama Riski:** Çok katı veya erken aşamada belirlenmiş standartlar, yeni ve daha iyi çözümlerin ortaya çıkmasını engelleyebilir. Bazen standartlar, mevcut en iyi teknoloji yerine "en düşük ortak payda"yı temsil edebilir.
4.  **Esneklik Kaybı:** Standartlar, belirli bir çözüm yolunu dayatarak alternatif yaklaşımları dışlayabilir.
5.  **Pazara Hakimiyet Aracı Olma:** Büyük şirketler, standart belirleme süreçlerini etkileyerek kendi teknolojilerini veya çıkarlarını ön plana çıkarabilir ve rekabeti engelleyebilirler.
6.  **Karmaşıklık ve Erişilebilirlik:** Bazı standart dokümanları çok karmaşık, uzun ve pahalı olabilir. Bu da KOBİ'lerin veya bireysel geliştiricilerin standartlara erişimini ve anlamasını zorlaştırabilir.
7.  **Güncelliğini Yitirme:** Teknolojinin hızla değiştiği alanlarda standartlar çabuk eskiyebilir ve güncellenmeleri zaman alabilir.

Bu zorluklara rağmen, standartların genel faydaları genellikle bu potansiyel dezavantajlardan daha ağır basmaktadır. Önemli olan, standart geliştirme süreçlerinin dengeli, şeffaf ve katılımcı olması, ayrıca standartların düzenli olarak gözden geçirilip güncellenmesidir.

### 1.7. Mini Alıştırma ve Düşündürücü Sorular

Bu bölümdeki bilgilerinizi pekiştirmek için aşağıdaki soruları yanıtlamaya çalışın:

1.  **Senaryo:** Yeni bir tür taşınabilir müzik çalar tasarlıyorsunuz. Bu cihazın başarılı olması için hangi tür konularda standartlara uymanız gerektiğini düşünüyorsunuz? (Örn: Ses dosyası formatları, kulaklık girişi, batarya şarjı vb.) Her biri için nedenini açıklayın.
2.  Bir "de facto" standart ile bir "de jure" standart arasındaki temel fark nedir? Bilgisayar mühendisliği alanından her birine birer örnek verin.
3.  Açık standartların (open standards) teknolojik gelişim ve rekabet açısından neden önemli olduğunu düşünüyorsunuz?
4.  Uluslararası bir standardın (örn: ISO/IEC 27001 - Bilgi Güvenliği) bir şirket tarafından benimsenmesinin potansiyel faydaları ve maliyetleri neler olabilir?
5.  Standartların inovasyonu hem teşvik edebileceği hem de kısıtlayabileceği durumları düşünün. Her iki duruma da birer örnek vermeye çalışın.

*(Bu soruların cevapları metin içinde bulunmaktadır. Kendi cümlelerinizle ifade etmeye çalışın.)*

---

## Modül 2: Standart Belirleme Kuruluşları ve Süreçleri

**(Tahmini Çalışma Süresi: 1 Saat)**

Bu modülde, standartları kimlerin ve nasıl geliştirdiğini inceleyeceğiz. Önemli uluslararası, bölgesel ve ulusal standart kuruluşlarını tanıyacak, standart geliştirme sürecinin adımlarını ve standartlara uyumun ne anlama geldiğini öğreneceksiniz.

### 2.1. Önemli Uluslararası Standart Kuruluşları

Uluslararası standartlar, küresel ticaretin, teknolojinin ve iletişimin temelini oluşturur. İşte bu alandaki en etkili kuruluşlardan bazıları:

*   **ISO (International Organization for Standardization - Uluslararası Standardizasyon Örgütü):**
    *   **Kuruluş:** 1947, Cenevre, İsviçre.
    *   **Kapsam:** Elektrik ve elektronik dışındaki tüm teknik ve teknik olmayan alanlarda (imalat, tarım, sağlık, hizmetler, yönetim sistemleri vb.) uluslararası standartlar geliştirir.
    *   **Üyelik:** Yaklaşık 160'tan fazla ülkenin ulusal standart kuruluşlarından oluşur (örneğin, Türkiye'den TSE, ISO üyesidir).
    *   **Önemli Standartları:**
        *   **ISO 9000 Ailesi:** Kalite Yönetim Sistemleri (ISO 9001 en bilinenidir).
        *   **ISO 14000 Ailesi:** Çevre Yönetim Sistemleri.
        *   **ISO/IEC 27000 Ailesi:** Bilgi Güvenliği Yönetim Sistemleri (IEC ile ortak).
        *   **ISO 26000:** Sosyal Sorumluluk.
        *   **ISO 31000:** Risk Yönetimi.
        *   **ISO 8601:** Tarih ve saat formatı.
    *   **Not:** ISO ismi, Yunanca "eşit" anlamına gelen "isos" kelimesinden türetilmiştir. Bu, tüm üyelerin eşit haklara sahip olduğunu ve standartların evrensel uygulanabilirliğini vurgular.

*   **IEC (International Electrotechnical Commission - Uluslararası Elektroteknik Komisyonu):**
    *   **Kuruluş:** 1906, Londra (merkezi Cenevre, İsviçre).
    *   **Kapsam:** Elektrik, elektronik ve ilgili teknolojiler (elektroteknoloji) alanında uluslararası standartlar geliştirir. Bu alanlar güç üretimi ve dağıtımı, elektronik, manyetizma, elektromanyetizma, multimedya, telekomünikasyon ve tıbbi teknolojiyi içerir.
    *   **Üyelik:** ISO'ya benzer şekilde ulusal elektroteknik komitelerinden oluşur.
    *   **Önemli Standartları:**
        *   **IEC 60000 Serisi:** Çok geniş bir yelpazede elektrikli ve elektronik cihaz ve sistem standartları.
        *   **IEC 60950-1 / IEC 62368-1:** Bilgi teknolojisi ekipmanları ve ses/video ekipmanlarının güvenliği.
        *   **IEC 61000 Serisi:** Elektromanyetik Uyumluluk (EMC).
    *   **İşbirliği:** ISO ve IEC, özellikle bilgi teknolojileri alanında **JTC 1 (Joint Technical Committee 1)** adlı ortak bir teknik komite aracılığıyla yakın işbirliği yapar. Birçok önemli BT standardı (örn: MPEG, JPEG, ISO/IEC 27001) bu ortak komite tarafından geliştirilmiştir.

*   **ITU (International Telecommunication Union - Uluslararası Telekomünikasyon Birliği):**
    *   **Kuruluş:** 1865 (Uluslararası Telgraf Birliği olarak), Cenevre, İsviçre. Birleşmiş Milletler'in uzmanlık kuruluşudur.
    *   **Kapsam:** Bilgi ve iletişim teknolojileri (ICT) alanında faaliyet gösterir. Küresel telekomünikasyon ağlarının ve hizmetlerinin geliştirilmesi ve işletilmesi için standartlar (ITU-T Tavsiyeleri), radyo spektrumunun ve uydu yörüngelerinin yönetimi (ITU-R) ve telekomünikasyonun küresel gelişimine yardımcı olma (ITU-D) gibi görevleri vardır.
    *   **Üyelik:** Hükümetler (üye devletler) ve özel sektör şirketleri, akademik kurumlar (sektör üyeleri ve ortaklar).
    *   **Önemli Standartları (ITU-T Tavsiyeleri):**
        *   **H.26x Serisi:** Video sıkıştırma standartları (örn: H.264/AVC, H.265/HEVC - MPEG ile ortak geliştirilir).
        *   **G.7xx Serisi:** Ses sıkıştırma standartları (örn: G.711, G.729).
        *   **X.509:** Dijital sertifikalar için standart.
        *   Telefon ve veri ağları için çeşitli protokoller ve arayüzler.

*   **IEEE (Institute of Electrical and Electronics Engineers - Elektrik ve Elektronik Mühendisleri Enstitüsü):**
    *   **Kuruluş:** 1963 (AIEE ve IRE'nin birleşmesiyle), ABD merkezli küresel bir meslek örgütüdür.
    *   **Kapsam:** Elektrik, elektronik, bilgisayar mühendisliği, telekomünikasyon, biyomedikal mühendislik ve ilgili alanlarda standartlar geliştirir, yayınlar yapar, konferanslar düzenler. Dünyanın en büyük teknik meslek örgütüdür.
    *   **Üyelik:** Bireysel üyelik esasına dayanır (mühendisler, bilim insanları, öğrenciler).
    *   **Önemli Standartları (IEEE SA - Standartlar Birliği aracılığıyla):**
        *   **IEEE 802 Serisi:** Yerel ve Metropolitan Alan Ağları (LAN/MAN) Standartları.
            *   **IEEE 802.3:** Ethernet.
            *   **IEEE 802.11:** Kablosuz LAN (Wi-Fi).
            *   **IEEE 802.15:** Kablosuz Kişisel Alan Ağları (WPAN), örn: Bluetooth (IEEE 802.15.1).
        *   **IEEE 1394:** FireWire (Yüksek Hızlı Seri Veri Yolu).
        *   **IEEE 754:** Kayan Noktalı Aritmetik Standardı (Bilgisayarlarda ondalıklı sayıların nasıl temsil edileceğini ve işleneceğini tanımlar).
        *   **IEEE P1076:** VHDL (Donanım Tanımlama Dili).
        *   **Yazılım Mühendisliği Standartları:** IEEE, yazılım mühendisliği süreçleri, dokümantasyonu ve kalitesi ile ilgili birçok standart yayınlamıştır (örneğin, eski IEEE Std 830 - Yazılım Gereksinim Belirtimi).

> **Bilgi Notu:** IEEE standartları genellikle bireysel uzmanların katılımıyla geliştirilirken, ISO ve IEC standartları daha çok ulusal standart kuruluşlarının temsilcileri aracılığıyla oluşturulur. ITU ise hükümetlerin ve sektör temsilcilerinin katılımıyla çalışır.

### 2.2. Önemli Bölgesel ve Ulusal Standart Kuruluşları

Uluslararası standartların yanı sıra, belirli coğrafi bölgelerde veya ülkelerde geçerli olan standartlar da mevcuttur.

**Bölgesel Standart Kuruluşları (Örnekler):**

*   **Avrupa'da:**
    *   **CEN (European Committee for Standardization - Avrupa Standardizasyon Komitesi):** Elektrik ve telekomünikasyon dışındaki alanlarda Avrupa Standartları (EN) geliştirir.
    *   **CENELEC (European Committee for Electrotechnical Standardization - Avrupa Elektroteknik Standardizasyon Komitesi):** Elektroteknik alanında Avrupa Standartları (EN) geliştirir. Genellikle IEC standartlarını temel alır.
    *   **ETSI (European Telecommunications Standards Institute - Avrupa Telekomünikasyon Standartları Enstitüsü):** Telekomünikasyon, yayıncılık ve ilgili alanlarda Avrupa Standartları (EN) ve diğer teknik dokümanlar geliştirir. GSM, UMTS (3G), LTE (4G) gibi mobil iletişim standartlarının geliştirilmesinde önemli rol oynamıştır.

    > **CE İşareti:** Avrupa Ekonomik Alanı (EEA) içinde satılan birçok ürünün taşıması gereken bir işarettir. Ürünün ilgili AB direktiflerine ve temel sağlık, güvenlik ve çevre koruma standartlarına (genellikle uyumlaştırılmış EN standartları) uygun olduğunu gösterir. CE işareti bir kalite markası değil, bir uygunluk beyanıdır.

**Ulusal Standart Kuruluşları (Örnekler):**

Her ülkenin genellikle kendi ulusal standart kuruluşu vardır. Bu kuruluşlar, uluslararası ve bölgesel standartları benimseyebilir (adapte edebilir) veya kendi ulusal standartlarını geliştirebilirler.

*   **TSE (Türk Standardları Enstitüsü) - Türkiye:**
    *   Türkiye'nin ulusal standart kuruluşu. TS (Türk Standardı) markasıyla standartlar yayınlar.
    *   ISO ve IEC'nin tam üyesi, CEN ve CENELEC'in de tam üyesidir.
    *   Uluslararası ve Avrupa standartlarını (örn: TS EN ISO 9001) ulusal standart olarak kabul eder ve yayınlar.
    *   Ayrıca, ulusal ihtiyaçlara yönelik özgün TS standartları da geliştirir.
    *   Ürün belgelendirme, sistem belgelendirme, test ve kalibrasyon hizmetleri de sunar.

*   **ANSI (American National Standards Institute) - ABD:**
    *   ABD'deki gönüllü standartlaşma sistemini koordine eder. Doğrudan standart geliştirmez, ancak standart geliştirme kuruluşlarını (SDO'lar - Standards Developing Organizations, örn: IEEE, UL) akredite eder ve ABD ulusal standartlarını (ANS) onaylar.
    *   ISO ve IEC'de ABD'yi temsil eder.

*   **DIN (Deutsches Institut für Normung) - Almanya:**
    *   Almanya'nın ulusal standart kuruluşu. DIN standartları yayınlar.
    *   ISO ve CEN'de Almanya'yı temsil eder.

*   **BSI (British Standards Institution) - Birleşik Krallık:**
    *   Birleşik Krallık'ın ulusal standart kuruluşu. BS standartları yayınlar.

*   **Diğerleri:** JISC (Japonya), SAC (Çin), AFNOR (Fransa) gibi birçok ulusal standart kuruluşu bulunmaktadır.

### 2.3. Standart Geliştirme Süreci

Resmi (de jure) standartların geliştirilmesi genellikle iyi tanımlanmış, şeffaf ve uzlaşmaya dayalı bir süreç izler. Bu süreç kuruluştan kuruluşa küçük farklılıklar gösterse de temel adımlar benzerdir:

1.  **İhtiyaç Tespiti ve Öneri (Proposal Stage):**
    *   Piyasadan, endüstriden, hükümetlerden veya teknik komitelerden yeni bir standart için bir ihtiyaç veya öneri gelir.
    *   Önerinin gerekçesi, kapsamı ve potansiyel faydaları değerlendirilir.
    *   İlgili standart kuruluşunun üyeleri tarafından öneri oylanır. Yeterli destek alırsa, yeni bir çalışma projesi (New Work Item Proposal - NWIP) olarak kabul edilir.

2.  **Hazırlık Aşaması (Preparatory Stage):**
    *   İlgili teknik komite (Technical Committee - TC) veya alt komite (Subcommittee - SC) bünyesinde bir çalışma grubu (Working Group - WG) oluşturulur.
    *   Bu çalışma grubu, konunun uzmanlarından (mühendisler, bilim insanları, endüstri temsilcileri vb.) oluşur.
    *   Çalışma grubu, standardın ilk taslağını (Working Draft - WD) hazırlar. Bu aşamada birden fazla taslak geliştirilebilir.

3.  **Komite Aşaması (Committee Stage):**
    *   Hazırlanan çalışma taslağı, ana teknik komitenin üyelerine dağıtılır ve Komite Taslağı (Committee Draft - CD) olarak adlandırılır.
    *   Komite üyeleri taslağı inceler, yorum yapar ve değişiklik önerilerinde bulunur. Gerekirse oylama yapılır.
    *   Gelen geri bildirimlere göre taslak revize edilir. Bu süreç, uzlaşma sağlanana kadar birkaç kez tekrarlanabilir.

4.  **Soruşturma Aşaması (Enquiry Stage):**
    *   Komitede uzlaşmaya varılan taslak, Soruşturma Taslağı (Draft International Standard - DIS ISO'da, Enquiry Draft IEC'de) olarak tüm ulusal üye kuruluşlara (veya ilgili paydaşlara) gönderilir.
    *   Belirli bir süre içinde (genellikle 2-5 ay) ulusal kuruluşlar taslağı inceler, kendi ülkelerindeki paydaşların görüşlerini alır ve standart kuruluşuna yorumlarını ve oylarını (kabul, red, çekimser) iletirler.
    *   Bu, standardın geniş bir kitle tarafından değerlendirilmesini sağlar.

5.  **Onay Aşaması (Approval Stage):**
    *   Soruşturma aşamasından gelen yorumlar dikkate alınarak taslak son bir kez revize edilir ve Nihai Taslak Uluslararası Standart (Final Draft International Standard - FDIS ISO'da, Final Draft IEC'de) olarak tekrar ulusal üye kuruluşlara oylama için sunulur.
    *   Bu aşamada genellikle sadece editöryel düzeltmeler yapılır, teknik içerikte büyük değişiklikler beklenmez.
    *   Belirlenen oy çoğunluğu (örn: 2/3 üye onayı ve belirli sayıda olumsuz oy olmaması) sağlanırsa standart onaylanır.

6.  **Yayınlama Aşaması (Publication Stage):**
    *   Onaylanan standart, uluslararası standart (IS) olarak resmi bir şekilde yayınlanır.
    *   Standart, numarası (örn: ISO 9001), yayın yılı (örn: ISO 9001:2015) ve başlığı ile tanımlanır.

7.  **Gözden Geçirme ve Güncelleme (Review and Revision):**
    *   Standartlar statik değildir. Teknolojik gelişmeler, yeni güvenlik bulguları veya pazar ihtiyaçları nedeniyle düzenli aralıklarla (genellikle her 5 yılda bir) gözden geçirilir.
    *   Gözden geçirme sonucunda standart:
        *   Onaylanabilir (değişiklik yok).
        *   Revize edilebilir (güncellenmiş yeni bir versiyonu yayınlanır).
        *   Geri çekilebilir (artık geçerli değilse).

Bu süreç, standartların geniş bir kabul görmesini, teknik olarak sağlam olmasını ve ilgili tüm tarafların görüşlerini yansıtmasını sağlamayı amaçlar.

### 2.4. Standartlara Uyum ve Sertifikasyon

Bir standardın geliştirilip yayınlanması tek başına yeterli değildir; önemli olan, bu standartların uygulanması ve ürünlerin, süreçlerin veya sistemlerin bu standartlara uygun olmasıdır.

*   **Uyum (Conformance/Compliance):**
    *   Bir ürünün, hizmetin, sürecin veya sistemin belirli bir standardın gereksinimlerini karşıladığı anlamına gelir.
    *   Uyum, farklı şekillerde gösterilebilir:
        1.  **Birinci Taraf Uygunluk Beyanı (Supplier's Declaration of Conformity - SDoC):** Üreticinin veya tedarikçinin kendisi, ürününün veya hizmetinin belirli bir standarda uygun olduğunu beyan eder. Bu, en az maliyetli yöntemdir ancak güvenilirliği beyan edenin itibarına bağlıdır.
        2.  **İkinci Taraf Değerlendirmesi:** Müşteri veya kullanıcı, tedarikçinin ürün veya hizmetinin standarda uygunluğunu kendi denetimleri veya testleriyle doğrular.
        3.  **Üçüncü Taraf Değerlendirmesi (Sertifikasyon):** Bağımsız ve akredite bir üçüncü taraf kuruluş (sertifikasyon kuruluşu), ürünün, sürecin veya sistemin belirli bir standarda uygunluğunu test eder, denetler ve doğrularsa bir **sertifika** verir. Bu, en güvenilir ve yaygın kabul gören uyum gösterme yöntemidir.

*   **Sertifikasyon (Certification):**
    *   Bir ürünün, hizmetin, sistemin (örn: kalite yönetim sistemi - ISO 9001 sertifikası) veya kişinin (örn: belirli bir yetkinlik sertifikası) belirli bir standarda veya şartnameye uygun olduğunun bağımsız bir üçüncü tarafça yazılı olarak teyit edilmesi sürecidir.
    *   **Ürün Sertifikasyonu:** Belirli bir ürünün ilgili standartlara (genellikle güvenlik, performans) uygunluğunu belgeler. (Örn: Bir elektrikli cihazın IEC 60335 standardına göre sertifikalandırılması).
    *   **Sistem Sertifikasyonu:** Bir kuruluşun yönetim sisteminin (örn: kalite, çevre, bilgi güvenliği) ilgili standarda uygun olarak kurulduğunu ve işletildiğini belgeler. (Örn: Bir şirketin ISO 9001 veya ISO/IEC 27001 sertifikası alması).
    *   Sertifikalar genellikle belirli bir süre için geçerlidir ve düzenli gözetim denetimleri ile devamlılığı sağlanır.

*   **Akreditasyon:**
    *   Sertifikasyon kuruluşlarının, test laboratuvarlarının veya denetim kuruluşlarının belirli standartlara göre değerlendirme yapma konusunda yetkin, tarafsız ve güvenilir olduklarının resmi olarak tanınmasıdır.
    *   Akreditasyon, ulusal veya uluslararası akreditasyon kurumları tarafından yapılır (örn: Türkiye'de TÜRKAK - Türk Akreditasyon Kurumu).
    *   Akreditasyon, sertifikasyonun güvenilirliğini ve uluslararası kabulünü artırır. "Akredite sertifika" bu nedenle daha değerlidir.

> **Özetle:** Bir şirket ISO 9001 standardına göre kalite yönetim sistemi kurar (**uyum**). Akredite bir sertifikasyon kuruluşu bu sistemi denetler ve uygun bulursa şirkete ISO 9001 **sertifikası** verir. Sertifikasyon kuruluşunun kendisi de bir **akreditasyon** kuruluşu tarafından bu denetimi yapmaya yetkili kılınmıştır.

### 2.5. Mini Alıştırma: Bir Standart Nasıl Araştırılır?

Bir mühendis olarak, projenizle veya ürününüzle ilgili standartları bulmanız ve anlamanız gerekebilir. İşte bazı genel adımlar:

1.  **İhtiyacınızı Tanımlayın:** Hangi konuda standarda ihtiyacınız var? (Örn: Bir web uygulaması için güvenlik standardı, bir tıbbi cihaz için biyouyumluluk standardı, bir yazılım projesi için kodlama standardı).
2.  **Anahtar Kelimeler Belirleyin:** Konunuzla ilgili anahtar kelimeler (İngilizce ve Türkçe) belirleyin.
3.  **İlgili Standart Kuruluşlarını Düşünün:**
    *   Elektrik/Elektronik ise: IEC, IEEE
    *   Telekomünikasyon ise: ITU, ETSI, IEEE
    *   Yazılım, Yönetim Sistemleri, Genel Mühendislik ise: ISO, IEEE
    *   Ulusal bir gereksinim ise: TSE (Türkiye için)
4.  **Standart Kuruluşlarının Web Sitelerini Kullanın:**
    *   Çoğu standart kuruluşunun web sitesinde standart katalogları ve arama motorları bulunur.
        *   `www.iso.org`
        *   `www.iec.ch`
        *   `www.itu.int`
        *   `standards.ieee.org`
        *   `www.tse.org.tr` (Türkiye için)
    *   Bu sitelerde anahtar kelimelerle arama yapabilirsiniz.
5.  **Standardın Kapsamını ve Özetini İnceleyin:** Bir standart bulduğunuzda, genellikle ücretsiz olarak sunulan özetini (abstract), kapsamını (scope) ve içindekiler tablosunu inceleyin. Bu, standardın sizin için uygun olup olmadığını anlamanıza yardımcı olur.
6.  **Standart Dokümanını Temin Etme:**
    *   Çoğu uluslararası standart (ISO, IEC, IEEE) ücretlidir ve standart kuruluşlarının web sitelerinden veya ulusal standart kuruluşları aracılığıyla satın alınabilir.
    *   Bazı standartlar (özellikle IETF RFC'leri, bazı W3C standartları) ücretsiz olarak erişilebilir.
    *   Üniversite kütüphanelerinin veya kurumunuzun bu standartlara aboneliği olabilir.
7.  **Standardı Dikkatlice Okuyun ve Anlayın:** Standartlar teknik dokümanlardır ve dikkatli bir okuma gerektirirler. "Shall" (meli/malı - zorunluluk belirtir), "should" (tavsiye edilir), "may" (izin verilir) gibi ifadelerin anlamlarına dikkat edin.

**Alıştırma Sorusu:**
Kablosuz bir kulaklık geliştirdiğinizi varsayalım. Bu kulaklık için hangi standart kuruluşlarının standartlarına bakmanız gerekebilir ve hangi tür standartlar (örn: bağlantı, ses kalitesi, güvenlik, batarya) önemli olabilir? Birkaç potansiyel standart kategorisi ve ilgili olabilecek standart kuruluşu adı listeleyin.

*(Bu alıştırmanın cevabı, öğrencinin Modül 1 ve Modül 2'deki bilgileri birleştirmesini gerektirir.)*

---
## Modül 3: Bilgisayar Mühendisliğinde Yazılım Standartları

**(Tahmini Çalışma Süresi: 2 Saat)**

Yazılım, modern dünyanın her yerindedir ve bilgisayar mühendisliğinin temel bir parçasıdır. Bu modülde, kaliteli, güvenilir, bakımı kolay ve güvenli yazılımlar geliştirmek için kullanılan çeşitli standartları inceleyeceğiz.

### 3.1. Yazılım Geliştirme Yaşam Döngüsü (SDLC) Standartları ve Modelleri

Yazılım Geliştirme Yaşam Döngüsü (Software Development Life Cycle - SDLC), bir yazılım ürününün fikir aşamasından başlayarak kullanımdan kaldırılmasına kadar olan tüm süreçleri tanımlayan bir çerçevedir. Standartlaştırılmış SDLC modelleri ve süreçleri, projelerin daha öngörülebilir, yönetilebilir ve başarılı olmasına yardımcı olur.

*   **Neden SDLC Standartları?**
    *   **Süreç Tutarlılığı:** Projeler arasında tutarlı bir yaklaşım sağlar.
    *   **Kalite Güvencesi:** Her aşamada kalite kontrol mekanizmaları entegre etmeyi kolaylaştırır.
    *   **Risk Yönetimi:** Potansiyel risklerin erken tespit edilmesine ve yönetilmesine yardımcı olur.
    *   **İletişim ve Koordinasyon:** Ekip üyeleri ve paydaşlar arasında daha iyi iletişim ve koordinasyon sağlar.
    *   **Maliyet ve Zaman Kontrolü:** Proje planlamasını, kaynak atamasını ve ilerleme takibini iyileştirir.

*   **ISO/IEC/IEEE 12207: Systems and software engineering — Software life cycle processes:**
    *   Bu, yazılım yaşam döngüsü süreçleri için uluslararası bir ana standarttır.
    *   Yazılımın tedariki, geliştirilmesi, işletilmesi, bakımı ve kullanımdan kaldırılmasıyla ilgili tüm süreçleri, faaliyetleri ve görevleri tanımlar.
    *   Farklı SDLC modelleriyle (Şelale, Çevik vb.) uyumlu olarak kullanılabilir.
    *   Temel süreçleri şunlardır:
        *   Anlaşma Süreçleri (Acquisition, Supply)
        *   Organizasyonel Proje Etkinleştirme Süreçleri (Management, Infrastructure, Improvement, Human Resources, Quality Management)
        *   Teknik Süreçler (Requirements Definition, System/Software Requirements Analysis, Architectural Design, Implementation, Integration, Testing, Installation, Operation, Maintenance, Disposal)
        *   Destek Süreçleri (Documentation, Configuration Management, Quality Assurance, Verification, Validation, Review, Audit, Problem Resolution)
    *   Bu standart, kuruluşların kendi ihtiyaçlarına göre uyarlayabilecekleri esnek bir çerçeve sunar.

*   **Yaygın SDLC Modelleri (Standartlarla İlişkisi):**
    SDLC modelleri, standartların uygulanabileceği farklı yaklaşımlardır. Bu modeller kendi başlarına standart olmasalar da, standartlaştırılmış pratikleri içerebilirler veya belirli standartlarla desteklenebilirler.

    1.  **Şelale Modeli (Waterfall Model):**
        *   Aşamalı ve sıralı bir modeldir: Gereksinimler -> Tasarım -> Uygulama -> Test -> Bakım.
        *   Her aşama bir sonrakine geçmeden önce tamamlanır.
        *   Gereksinimlerin baştan net olduğu ve değişmeyeceği varsayılan projeler için uygundur.
        *   Dokümantasyon genellikle bu modelde önemlidir ve dokümantasyon standartları (örn: IEEE standartları) kullanılabilir.

    2.  **V Modeli (V-Model):**
        *   Şelale modelinin bir uzantısıdır. Her geliştirme aşamasına karşılık gelen bir test aşaması vardır.
        *   Doğrulama (Verification) ve Geçerleme (Validation) faaliyetlerini vurgular.
        *   Test standartları (örn: ISO/IEC/IEEE 29119) bu modelde etkin bir şekilde uygulanabilir.

    3.  **Artımlı Model (Incremental Model):**
        *   Yazılım, küçük artışlarla (increment) geliştirilir. Her artış, bir önceki üzerine yeni işlevsellik ekler.
        *   Erken aşamalarda çalışan bir ürün sunulabilir.

    4.  **Yinelemeli Model (Iterative Model):**
        *   Yazılım, tekrarlayan döngüler (iteration) halinde geliştirilir. Her döngüde yazılımın bir versiyonu üretilir ve geri bildirimlere göre iyileştirilir.

    5.  **Çevik Metodolojiler (Agile Methodologies):**
        *   Yinelemeli ve artımlı bir yaklaşımdır. Değişen gereksinimlere hızlı adaptasyon, müşteri işbirliği, çalışan yazılım ve bireyler arası etkileşime odaklanır.
        *   **Scrum:** Çevik bir proje yönetim çerçevesidir. Roller (Product Owner, Scrum Master, Development Team), etkinlikler (Sprint Planning, Daily Scrum, Sprint Review, Sprint Retrospective) ve artefaktlar (Product Backlog, Sprint Backlog, Increment) tanımlıdır. Bu tanımlar, bir tür fiili standart oluşturur.
        *   **Kanban:** İş akışını görselleştiren ve devam eden iş miktarını (WIP - Work In Progress) sınırlayan bir metottur.
        *   **Extreme Programming (XP):** Eşli programlama (pair programming), test güdümlü geliştirme (TDD), sürekli entegrasyon (CI) gibi pratikleri vurgular. Bu pratikler, kodlama ve kalite standartlarıyla yakından ilişkilidir.
        *   Çevik yaklaşımlar, resmi SDLC standartlarından ziyade prensiplere ve pratiklere dayanır, ancak ISO/IEC 12207 gibi standartlar çevik projelere de uyarlanabilir.

> **Düşünelim:** Küçük bir mobil uygulama geliştirme projesi için hangi SDLC modelini seçerdiniz? Neden? Bu modelde hangi tür standartlara (kodlama, test, dokümantasyon vb.) dikkat ederdiniz?

### 3.2. Kodlama Standartları

Kodlama standartları, yazılım geliştirme ekiplerinin tutarlı, okunabilir, anlaşılır ve bakımı kolay kod yazmasını sağlamak için belirlenmiş kurallar ve kılavuzlardır. Bunlar genellikle resmi (de jure) standartlar değildir, ancak şirket içi veya proje bazlı olarak yaygın şekilde kullanılan fiili (de facto) standartlardır.

*   **Neden Kodlama Standartları?**
    *   **Okunabilirlik:** Başkalarının (veya gelecekteki kendinizin) kodu daha kolay anlamasını sağlar.
    *   **Bakım Kolaylığı:** Hataları bulmayı, düzeltmeyi ve yeni özellikler eklemeyi kolaylaştırır.
    *   **Tutarlılık:** Proje genelinde veya ekip içinde kod stilini birleştirir.
    *   **Hata Azaltma:** Belirli kodlama alışkanlıkları hataları önlemeye yardımcı olabilir.
    *   **Ekip Çalışması:** Farklı geliştiricilerin aynı kod tabanı üzerinde daha verimli çalışmasını sağlar.
    *   **Kod İncelemesi (Code Review):** Standartlar, kod incelemeleri için ortak bir zemin oluşturur.

*   **Kodlama Standartlarının Kapsadığı Alanlar:**
    1.  **İsimlendirme Kuralları (Naming Conventions):**
        *   Değişkenler, fonksiyonlar, sınıflar, sabitler vb. için nasıl isimler verileceği.
        *   Örnekler: `camelCase` (örn: `musteriAdi`), `PascalCase` (örn: `MusteriSinifi`), `snake_case` (örn: `musteri_adi`), `UPPER_CASE_SNAKE_CASE` (sabitler için, örn: `MAKSIMUM_DEGER`).
        *   Hangi durumda hangisinin kullanılacağı genellikle programlama diline veya proje tercihlerine göre belirlenir.
    2.  **Biçimlendirme (Formatting):**
        *   Girintileme (Indentation): Kaç boşluk kullanılacağı (örn: 2, 4) veya tab karakteri mi kullanılacağı.
        *   Satır Uzunluğu: Bir satırda maksimum kaç karakter olacağı.
        *   Boşluk Kullanımı: Operatörlerin etrafında, virgüllerden sonra vb. boşluk bırakılıp bırakılmayacağı.
        *   Parantez Stilleri: Süslü parantezlerin (`{}`) nasıl yerleştirileceği (örn: aynı satırda mı, yeni satırda mı).
    3.  **Yorumlar (Comments):**
        *   Ne zaman ve nasıl yorum yazılacağı.
        *   Yorumların amacı kodu açıklamak olmalıdır, "ne yaptığını" değil, "neden yaptığını" anlatmalıdır.
        *   Gereksiz veya yanıltıcı yorumlardan kaçınılmalıdır.
        *   Fonksiyon/metot başlıkları, sınıf tanımları için standart yorum formatları (örn: Javadoc, Doxygen).
    4.  **Programlama Pratikleri:**
        *   Global değişkenlerden kaçınma.
        *   Sihirli sayılar (magic numbers) kullanmama, bunun yerine sabitler tanımlama.
        *   Fonksiyonların/metotların kısa ve tek bir işe odaklı olması (Single Responsibility Principle).
        *   Hata yönetimi (exception handling) için kurallar.
        *   Kaynak yönetimi (dosyalar, ağ bağlantıları vb.).
    5.  **Dil Özgü Kurallar:**
        *   Her programlama dilinin kendine özgü "idiomatic" (yaygın ve doğru kabul edilen) kullanım şekilleri vardır.
        *   Örneğin, Python için PEP 8, Java için Google Java Style Guide, JavaScript için Airbnb JavaScript Style Guide gibi popüler stil kılavuzları bulunur.

*   **Örnek Kodlama Stili Kılavuzları:**
    *   **PEP 8 (Python Enhancement Proposal 8):** Python kodu için resmi stil kılavuzudur. Girintileme, isimlendirme, yorumlar vb. konularda detaylı öneriler içerir. Birçok Python geliştiricisi tarafından fiili standart olarak kabul edilir.
    *   **Google Java Style Guide:** Google'ın Java projelerinde kullandığı kodlama standartlarıdır. Biçimlendirme, isimlendirme, programlama pratikleri gibi konuları kapsar.
    *   **JavaScript Stil Kılavuzları:** (Örn: Airbnb, StandardJS, Google JavaScript Style Guide) JavaScript topluluğunda çeşitli popüler stil kılavuzları bulunur. Projeler genellikle bunlardan birini seçer veya kendi kılavuzlarını oluşturur.

*   **Kodlama Standartlarını Uygulama Araçları:**
    *   **Linters:** Kodunuzu statik olarak analiz ederek stil hatalarını, potansiyel bug'ları ve "code smell" (kötü kod pratikleri) olarak adlandırılan durumları tespit eden araçlardır. (Örn: ESLint, JSLint, Pylint, Checkstyle, RuboCop).
    *   **Formatters (Pretty Printers):** Kodunuzu otomatik olarak belirlenmiş stil kurallarına göre biçimlendiren araçlardır. (Örn: Prettier, Black, gofmt, rustfmt).
    *   Bu araçlar genellikle Geliştirme Ortamlarına (IDE) entegre edilebilir ve Sürekli Entegrasyon (CI) süreçlerinde kullanılabilir.

> **Pratik Öneri:** Yeni bir programlama dili öğrenirken veya bir projeye başlarken, o dil için yaygın olarak kabul görmüş stil kılavuzlarını inceleyin. Bu, hem daha iyi kod yazmanıza hem de başkalarının kodunu daha kolay anlamanıza yardımcı olur.

### 3.3. Yazılım Kalite Standartları

Yazılım kalitesi, bir yazılım ürününün veya sisteminin belirtilen ve ima edilen ihtiyaçları ne kadar iyi karşıladığını gösteren bir dizi özelliktir. Yazılım kalite standartları, bu özellikleri tanımlamak, ölçmek ve değerlendirmek için bir çerçeve sunar.

*   **ISO/IEC 25010: Systems and software Quality Requirements and Evaluation (SQuaRE) — System and software quality models:**
    *   Bu standart, yazılım ürün kalitesini ve kullanım kalitesini (quality in use) tanımlayan bir model sunar.
    *   Yazılım ürün kalitesi, sekiz ana karakteristik ve bunların alt karakteristikleri ile tanımlanır:

    **Şekil 3.1: ISO/IEC 25010 Yazılım Ürün Kalite Modeli**

    ```
    Yazılım Ürün Kalitesi
    ├── Fonksiyonel Uygunluk (Functional Suitability)
    │   ├── Fonksiyonel Tamlık
    │   ├── Fonksiyonel Doğruluk
    │   └── Fonksiyonel Uygunluk (Appropriateness)
    ├── Performans Verimliliği (Performance Efficiency)
    │   ├── Zaman Davranışı (Time-behaviour)
    │   ├── Kaynak Kullanımı
    │   └── Kapasite
    ├── Uyumluluk (Compatibility)
    │   ├── Birlikte Var Olma (Co-existence)
    │   └── Birlikte Çalışabilirlik (Interoperability)
    ├── Kullanılabilirlik (Usability)
    │   ├── Uygunluk Tanınabilirliği (Appropriateness Recognizability)
    │   ├── Öğrenilebilirlik
    │   ├── Çalıştırılabilirlik (Operability)
    │   ├── Kullanıcı Hata Koruması
    │   ├── Kullanıcı Arayüzü Estetiği
    │   └── Erişilebilirlik
    ├── Güvenilirlik (Reliability)
    │   ├── Olgunluk (Maturity)
    │   ├── Erişilebilirlik (Availability - Sistemin çalışır durumda olma süresi)
    │   ├── Hata Toleransı (Fault Tolerance)
    │   └── Kurtarılabilirlik (Recoverability)
    ├── Güvenlik (Security)
    │   ├── Gizlilik (Confidentiality)
    │   ├── Bütünlük (Integrity)
    │   ├── İnkar Edilemezlik (Non-repudiation)
    │   ├── Hesap Verebilirlik (Accountability)
    │   └── Özgünlük (Authenticity)
    ├── Sürdürülebilirlik/Bakım Kolaylığı (Maintainability)
    │   ├── Modülerlik
    │   ├── Yeniden Kullanılabilirlik
    │   ├── Analiz Edilebilirlik
    │   ├── Değiştirilebilirlik (Modifiability)
    │   └── Test Edilebilirlik
    └── Taşınabilirlik (Portability)
        ├── Uyarlanabilirlik (Adaptability)
        ├── Kurulabilirlik (Installability)
        └── Değiştirilebilirlik (Replaceability)
    ```

    *   **Kullanım Kalitesi (Quality in Use):** Bir ürünün belirli kullanıcılar tarafından belirli bir kullanım bağlamında belirli hedeflere ulaşmak için ne kadar etkili, verimli, tatmin edici, risksiz ve bağlamsal olarak eksiksiz kullanıldığını ifade eder.
        *   Etkililik (Effectiveness)
        *   Verimlilik (Efficiency)
        *   Memnuniyet (Satisfaction)
        *   Riskten Korunma (Freedom from Risk)
        *   Bağlam Kapsamı (Context Coverage)

    *   SQuaRE serisi, kalite gereksinimlerinin belirlenmesi, kalite metriklerinin tanımlanması ve kalite değerlendirme süreçleri için de kılavuzlar içerir.

> **Biliyor muydunuz?** Yazılım kalitesi sadece kodun hatasız çalışması anlamına gelmez. Kullanıcının ihtiyaçlarını karşılaması, kolay kullanılabilir olması, güvenli olması ve gelecekteki değişikliklere uyum sağlayabilmesi gibi birçok faktörü içerir. ISO/IEC 25010 bu çok boyutlu yapıyı anlamamıza yardımcı olur.

### 3.4. Yazılım Test Standartları

Yazılım testi, bir yazılım ürününün veya uygulamasının beklenen şekilde çalıştığını doğrulamak, hataları bulmak ve kalite hakkında bilgi sağlamak için yapılan bir süreçtir. Standartlar, test süreçlerinin daha sistematik, etkili ve tekrarlanabilir olmasına yardımcı olur.

*   **ISO/IEC/IEEE 29119: Software and systems engineering — Software testing:**
    *   Bu, yazılım testi için uluslararası bir standartlar serisidir.
    *   Test süreçlerini, test dokümantasyonunu, test tekniklerini ve anahtar kelimeleri kapsar.
    *   Ana bölümleri:
        *   **Part 1: Concepts and Definitions:** Testle ilgili temel kavramları ve terminolojiyi tanımlar.
        *   **Part 2: Test Processes:** Organizasyonel test süreçleri, test yönetimi süreçleri ve dinamik test süreçleri (test tasarımı, test uygulaması, test yürütme, test tamamlama) için bir model sunar.
        *   **Part 3: Test Documentation:** Test planı, test tasarım belirtimi, test senaryosu belirtimi, test prosedürü belirtimi, test verisi gereksinimleri, test sonuçları, test raporu gibi çeşitli test dokümanları için şablonlar ve içerik önerileri sunar.
        *   **Part 4: Test Techniques:** Kara kutu (black-box), beyaz kutu (white-box) ve deneyime dayalı (experience-based) test tasarım tekniklerini açıklar. (Örn: Eşdeğerlik bölümlendirme, sınır değer analizi, karar tablosu testi, durum geçiş testi, ifade kapsamı, dal kapsamı, hata tahmini).
        *   **Part 5: Keyword-Driven Testing:** Anahtar kelime güdümlü test yaklaşımı için bir standarttır.

*   **Test Seviyeleri (Levels of Testing):**
    *   **Birim Testi (Unit Testing):** Yazılımın en küçük test edilebilir parçalarının (fonksiyonlar, metotlar, sınıflar) ayrı ayrı test edilmesi. Genellikle geliştiriciler tarafından yapılır.
    *   **Entegrasyon Testi (Integration Testing):** Farklı birimlerin veya modüllerin bir araya getirilerek aralarındaki etkileşimlerin test edilmesi.
    *   **Sistem Testi (System Testing):** Tamamen entegre edilmiş yazılım sisteminin, belirtilen gereksinimlere göre bir bütün olarak test edilmesi. Genellikle kara kutu test teknikleri kullanılır.
    *   **Kabul Testi (Acceptance Testing):** Yazılımın son kullanıcılar veya müşteri tarafından, gerçek dünya senaryolarında kullanıma uygun olup olmadığını belirlemek için yapılan testler.
        *   Alfa Testi: Geliştirme ortamında, geliştirme ekibi veya iç kullanıcılar tarafından yapılır.
        *   Beta Testi: Gerçek kullanıcı ortamında, sınırlı sayıda dış kullanıcı tarafından yapılır.

*   **Test Türleri (Types of Testing):**
    *   **Fonksiyonel Testler:** Yazılımın belirtilen işlevleri doğru bir şekilde yerine getirip getirmediğini kontrol eder.
    *   **Fonksiyonel Olmayan Testler:** Yazılımın performans, kullanılabilirlik, güvenilirlik, güvenlik gibi kalite özelliklerini değerlendirir.
        *   Performans Testi (Yük Testi, Stres Testi, Dayanıklılık Testi)
        *   Kullanılabilirlik Testi
        *   Güvenlik Testi
        *   Uyumluluk Testi

> **Önemli Not:** Test, sadece hataları bulmakla ilgili değildir. Aynı zamanda yazılımın kalitesi hakkında paydaşlara bilgi vermek, riskleri azaltmak ve ürünün müşteri beklentilerini karşıladığına dair güven oluşturmakla da ilgilidir.

### 3.5. Yazılım Dokümantasyon Standartları

Yazılım dokümantasyonu, bir yazılım ürününün tasarımı, geliştirilmesi, kullanımı ve bakımı ile ilgili tüm yazılı bilgileri içerir. İyi dokümantasyon, projenin başarısı için kritik öneme sahiptir. Standartlar, dokümantasyonun tutarlı, eksiksiz ve anlaşılır olmasına yardımcı olur.

*   **Neden Dokümantasyon Standartları?**
    *   **İletişim:** Ekip üyeleri, yöneticiler, kullanıcılar ve diğer paydaşlar arasında etkili iletişim sağlar.
    *   **Anlaşılabilirlik:** Yazılımın nasıl çalıştığını, nasıl kullanılacağını ve nasıl bakım yapılacağını anlamayı kolaylaştırır.
    *   **Bakım ve Geliştirme:** Mevcut yazılım üzerinde değişiklik yapmayı veya yeni özellikler eklemeyi kolaylaştırır.
    *   **Bilgi Aktarımı:** Projeden ayrılan veya projeye yeni katılan ekip üyeleri için bilgi aktarımını sağlar.
    *   **Eğitim:** Kullanıcıların ve yeni geliştiricilerin yazılımı öğrenmesine yardımcı olur.
    *   **Yasal ve Sözleşmesel Yükümlülükler:** Bazı projelerde belirli dokümanların üretilmesi zorunlu olabilir.

*   **Yazılım Dokümantasyonu Türleri:**
    1.  **Gereksinim Dokümanları:**
        *   **Yazılım Gereksinim Belirtimi (Software Requirements Specification - SRS):** Yazılımın ne yapması gerektiğini, fonksiyonel ve fonksiyonel olmayan gereksinimlerini detaylı bir şekilde tanımlar. (Eski IEEE Std 830 bu konuda popüler bir kılavuzdu).
        *   Kullanım Senaryoları (Use Cases), Kullanıcı Hikayeleri (User Stories).
    2.  **Tasarım Dokümanları:**
        *   **Yazılım Tasarım Açıklaması (Software Design Description - SDD):** Yazılımın mimarisini, modüllerini, arayüzlerini ve veri yapılarını tanımlar. (Eski IEEE Std 1016 bu konuda bir kılavuzdu).
        *   Mimari diyagramlar, sınıf diyagramları, dizi diyagramları, veritabanı şemaları.
    3.  **Kod İçi Dokümantasyon (In-code Documentation):**
        *   Kaynak koddaki yorumlar, değişken ve fonksiyon isimleri.
        *   API dokümantasyonu oluşturmak için kullanılan özel yorum formatları (örn: Javadoc, Doxygen, Swagger/OpenAPI yorumları).
    4.  **Test Dokümanları:**
        *   Test Planı, Test Senaryoları, Test Raporları (ISO/IEC/IEEE 29119 Part 3'te tanımlanmıştır).
    5.  **Kullanıcı Dokümantasyonu:**
        *   Kullanım Kılavuzu (User Manual), Kurulum Kılavuzu, Sıkça Sorulan Sorular (SSS), Eğitim Materyalleri.
    6.  **Bakım Dokümantasyonu:**
        *   Sistem yöneticileri ve bakım ekibi için bilgiler.

*   **Standartlar ve Kılavuzlar:**
    *   **ISO/IEC/IEEE 29119 Part 3 (Test Documentation):** Test dokümanları için standartlaşmış şablonlar sunar.
    *   **ISO/IEC 15289 (Systems and software engineering — Content of life-cycle information items (documentation)):** Yazılım yaşam döngüsü boyunca üretilebilecek çeşitli doküman türleri ve içerikleri hakkında genel bir kılavuz sunar.
    *   **IEEE Standartları:** IEEE, geçmişte yazılım mühendisliği dokümantasyonu için birçok spesifik standart yayınlamıştır (örn: IEEE 830 SRS, IEEE 1016 SDD). Bu standartlar günümüzde ISO/IEC standartları içinde konsolide edilmiş olsa da, temel prensipleri hala geçerlidir.
    *   **Şirket İçi Dokümantasyon Standartları:** Birçok şirket, kendi projeleri için özel dokümantasyon şablonları ve kılavuzları geliştirir.

> **Unutmayın!** Dokümantasyon, yazılım geliştirme sürecinin bir yan ürünü değil, ayrılmaz bir parçasıdır. "Kod kendi kendini dokümante eder" düşüncesi genellikle yanıltıcıdır. İyi yazılmış kod okunabilir olabilir, ancak sistemin genel amacı, mimarisi ve kullanım şekli hakkında yeterli bilgiyi tek başına sunmayabilir.

### 3.6. Sürüm Kontrol Sistemleri ve Yaygın Uygulamalar

Sürüm Kontrol Sistemleri (Version Control Systems - VCS), bir projenin (genellikle yazılım kodu, ama aynı zamanda dokümanlar, konfigürasyon dosyaları vb. olabilir) zaman içindeki değişikliklerini takip eden ve yöneten araçlardır. VCS kullanımı, modern yazılım geliştirmenin fiili bir standardıdır.

*   **Neden Sürüm Kontrolü?**
    *   **Değişiklik Takibi:** Kimin, ne zaman, neyi değiştirdiğini kaydeder.
    *   **Geri Dönüş (Revert):** Projenin önceki bir kararlı sürümüne kolayca geri dönmeyi sağlar.
    *   **Dallanma ve Birleştirme (Branching and Merging):** Birden fazla geliştiricinin aynı anda farklı özellikler üzerinde paralel olarak çalışmasını ve daha sonra bu değişiklikleri birleştirmesini mümkün kılar.
    *   **İşbirliği:** Ekip üyelerinin kodlarını senkronize etmelerini ve çakışmaları (conflicts) yönetmelerini kolaylaştırır.
    *   **Yedekleme:** Kodun merkezi veya dağıtık bir depoda (repository) güvenli bir şekilde saklanmasını sağlar.

*   **Popüler Sürüm Kontrol Sistemleri:**
    *   **Git:** Günümüzde en yaygın kullanılan dağıtık sürüm kontrol sistemidir. Linus Torvalds tarafından Linux çekirdeği geliştirme süreçleri için yaratılmıştır. Güçlü dallanma ve birleştirme yetenekleri, hızı ve esnekliği ile bilinir.
    *   **Subversion (SVN):** Merkezi bir sürüm kontrol sistemidir. Eskiden oldukça popülerdi, hala bazı projelerde kullanılmaktadır.
    *   **Mercurial (Hg):** Git'e benzer bir dağıtık sürüm kontrol sistemidir.

*   **Git Akışları (Git Workflows) - Fiili Standartlar:**
    Git'in esnekliği nedeniyle, ekipler genellikle projelerinde nasıl dallanma, birleştirme ve sürüm yayınlama yapacaklarına dair belirli iş akışları (workflows) benimserler. Bunlar resmi standartlar olmasa da, yaygın olarak kabul gören en iyi uygulamalardır.
    *   **Gitflow:** Vincent Driessen tarafından önerilen popüler bir dallanma modelidir. `master` (üretim sürümü), `develop` (geliştirme), `feature` (yeni özellikler), `release` (sürüm hazırlığı) ve `hotfix` (acil düzeltmeler) gibi özel amaçlı dallar kullanır. Büyük ve uzun ömürlü projeler için uygundur.
    *   **GitHub Flow:** Daha basit bir modeldir. `master` dalı her zaman dağıtıma hazır (deployable) tutulur. Yeni özellikler `feature` dallarında geliştirilir, test edilir ve `master` dalına birleştirilir (pull request aracılığıyla). Sürekli entegrasyon ve sürekli dağıtım (CI/CD) pratikleriyle iyi çalışır.
    *   **GitLab Flow:** GitHub Flow'a benzer, ancak üretim ve ortam (environment) dalları gibi eklemelerle daha karmaşık senaryoları destekleyebilir.

> **Sürekli Entegrasyon (Continuous Integration - CI) ve Sürekli Dağıtım/Teslimat (Continuous Delivery/Deployment - CD):** Bu pratikler, kod değişikliklerinin sık sık otomatik olarak derlendiği, test edildiği ve bir depoya entegre edildiği (CI), ve ardından otomatik olarak test ortamlarına veya hatta üretime dağıtıldığı (CD) bir yazılım geliştirme yaklaşımıdır. VCS (özellikle Git) ve CI/CD araçları (örn: Jenkins, GitLab CI, GitHub Actions) bu süreçlerin temelini oluşturur ve modern yazılım geliştirmenin önemli standart pratiklerindendir.

### 3.7. API Tasarım Standartları

Uygulama Programlama Arayüzleri (Application Programming Interfaces - API'ler), farklı yazılım bileşenlerinin veya sistemlerinin birbirleriyle iletişim kurmasını ve veri alışverişinde bulunmasını sağlayan sözleşmelerdir. İyi tasarlanmış API'ler, yazılımın modülerliğini, yeniden kullanılabilirliğini ve entegrasyonunu artırır.

*   **Neden API Tasarım Standartları?**
    *   **Kullanım Kolaylığı:** Geliştiricilerin API'yi anlamasını ve kullanmasını kolaylaştırır.
    *   **Tutarlılık:** Bir kuruluşun veya platformun tüm API'lerinde tutarlı bir deneyim sunar.
    *   **Ölçeklenebilirlik ve Sürdürülebilirlik:** API'nin zamanla büyümesini ve bakımını kolaylaştırır.
    *   **Tahmin Edilebilirlik:** API davranışlarının öngörülebilir olmasını sağlar.

*   **REST (Representational State Transfer):**
    *   Web servisleri oluşturmak için yaygın olarak kullanılan bir mimari stildir. HTTP protokolünün standart metotlarını (GET, POST, PUT, DELETE vb.) ve URI'ları (Uniform Resource Identifiers) kullanarak kaynaklara (resources) erişimi temel alır.
    *   **RESTful API İlkeleri (Fiili Standartlar):**
        1.  **İstemci-Sunucu Mimarisi (Client-Server):** İstemci ve sunucu birbirinden bağımsızdır.
        2.  **Durumsuzluk (Statelessness):** Sunucu, istemciden gelen her isteği, önceki isteklerden bağımsız olarak işler. Oturum bilgisi istemcide tutulur.
        3.  **Önbelleklenebilirlik (Cacheability):** Sunucu yanıtları, önbelleklenebilir olarak işaretlenebilir.
        4.  **Katmanlı Sistem (Layered System):** İstemci, doğrudan sunucuya mı yoksa aradaki bir katmana (örn: proxy, load balancer) mı bağlandığını bilmez.
        5.  **Tek Tip Arayüz (Uniform Interface):** REST'in en önemli kısıtlamasıdır ve dört alt kısıtlamadan oluşur:
            *   Kaynakların Tanımlanması (Identification of resources): Kaynaklar URI'lar ile tanımlanır.
            *   Kaynakların Temsillerle Manipülasyonu (Manipulation of resources through representations): İstemci, kaynağın bir temsilini (örn: JSON, XML) alır ve bu temsili kullanarak kaynağı değiştirebilir.
            *   Kendi Kendini Tanımlayan Mesajlar (Self-descriptive messages): Her mesaj, nasıl işleneceğini anlamak için yeterli bilgiyi içerir (örn: MIME türü).
            *   HATEOAS (Hypermedia as the Engine of Application State): Sunucu yanıtları, istemcinin bir sonraki olası eylemleri keşfetmesini sağlayan bağlantılar (hyperlinks) içermelidir. (Bu ilke genellikle tam olarak uygulanmaz).
        6.  **İsteğe Bağlı Kod (Code on Demand - Opsiyonel):** Sunucu, istemcinin işlevselliğini genişletmek için çalıştırılabilir kod (örn: JavaScript) gönderebilir.

*   **OpenAPI Specification (eskiden Swagger Specification):**
    *   RESTful API'leri tanımlamak, oluşturmak, belgelemek ve kullanmak için bir standart formattır.
    *   API'nin yollarını (paths), operasyonlarını (GET, POST vb.), parametrelerini, yanıtlarını ve veri modellerini YAML veya JSON formatında tanımlar.
    *   OpenAPI belirtimi kullanılarak:
        *   Otomatik olarak interaktif API dokümantasyonu oluşturulabilir (örn: Swagger UI, ReDoc).
        *   Farklı dillerde istemci kütüphaneleri (SDK'lar) ve sunucu taslakları (stubs) üretilebilir.
        *   API testleri otomatikleştirilebilir.
    *   OpenAPI, Linux Foundation bünyesindeki OpenAPI Initiative (OAI) tarafından yönetilen açık bir standarttır.

*   **GraphQL:**
    *   Facebook tarafından geliştirilen ve daha sonra açık kaynaklı hale getirilen bir API sorgu dili ve sunucu tarafı çalışma zamanıdır.
    *   REST'e bir alternatif olarak ortaya çıkmıştır. İstemcilerin tam olarak ihtiyaç duydukları veriyi, tek bir istekte ve birden fazla kaynaktan almalarını sağlar ("over-fetching" ve "under-fetching" sorunlarını çözer).
    *   Şema Tanımlama Dili (Schema Definition Language - SDL) kullanarak API'nin veri yapısını ve yeteneklerini tanımlar.

> **API Tasarımında En İyi Uygulamalar (Fiili Standartlar):**
> *   Anlaşılır ve tutarlı URI'lar kullanın (genellikle çoğul isimler, örn: `/users`, `/products`).
> *   HTTP metotlarını doğru kullanın (GET: veri alma, POST: yeni kaynak oluşturma, PUT: kaynak güncelleme, DELETE: kaynak silme).
> *   Uygun HTTP durum kodlarını kullanın (200 OK, 201 Created, 400 Bad Request, 401 Unauthorized, 404 Not Found, 500 Internal Server Error vb.).
> *   Sürümlemeyi düşünün (örn: `/v1/users`).
> *   Güvenliği sağlayın (HTTPS, kimlik doğrulama, yetkilendirme).
> *   İyi dokümantasyon sağlayın (OpenAPI kullanarak).

### 3.8. Pratik Uygulama: Basit Bir Kod İncelemesi

Aşağıda basit bir Python fonksiyonu bulunmaktadır. Bu fonksiyonu, bu modülde öğrendiğiniz kodlama standartları (özellikle PEP 8'e yakınlık, okunabilirlik, isimlendirme, yorumlar) açısından değerlendirin. Hangi yönleri iyi, hangi yönleri geliştirilebilir? Geliştirilmiş bir versiyonunu yazmaya çalışın.

**Orijinal Kod:**

```python
# bu fonksiyon iki sayıyı toplar
def ToplaSayilari( sayi1, sayi2 ):
    SONUC = sayi1+sayi2
    # sonucu döndür
    return SONUC

x=5
y = 10
toplam_deger = ToplaSayilari(x,y)
print( "Sayıların toplamı :", toplam_deger )
```

**Değerlendirme Kriterleri:**
1.  **İsimlendirme:** Fonksiyon adı, değişken adları PEP 8'e uygun mu?
2.  **Biçimlendirme:** Girintileme, operatörlerin etrafındaki boşluklar uygun mu?
3.  **Yorumlar:** Yorumlar gerekli mi, açıklayıcı mı? PEP 8'e uygun mu?
4.  **Genel Okunabilirlik:** Kod ne kadar kolay anlaşılıyor?

**(Öğrencinin bu kısımda kendi değerlendirmesini yapması ve kodu yeniden yazması beklenir.)**

**Örnek Geliştirilmiş Kod (Bir Olası Çözüm):**

```python
# Bu fonksiyon, verilen iki sayıyı toplar ve sonucu döndürür.
def topla_sayilari(sayi1: float, sayi2: float) -> float:
    """
    Verilen iki sayıyı toplar.

    Args:
        sayi1 (float): Toplanacak ilk sayı.
        sayi2 (float): Toplanacak ikinci sayı.

    Returns:
        float: İki sayının toplamı.
    """
    sonuc = sayi1 + sayi2
    return sonuc

# Örnek kullanım
birinci_sayi = 5.0
ikinci_sayi = 10.0
toplam = topla_sayilari(birinci_sayi, ikinci_sayi)
print(f"Sayıların toplamı: {toplam}")
```

**Geliştirmelerdeki Açıklamalar:**
*   **İsimlendirme:** Fonksiyon ve değişken adları `snake_case` (PEP 8 önerisi) olarak değiştirildi. Sabit olmayan `SONUC` değişkeni küçük harfle yazıldı.
*   **Biçimlendirme:** Operatörlerin (`=`, `+`) etrafına boşluk eklendi. Virgüllerden sonra boşluk bırakıldı.
*   **Yorumlar:** Fonksiyonun başına bir "docstring" eklendi. Bu, fonksiyonun ne yaptığını, argümanlarını ve döndürdüğü değeri açıklar. Satır içi gereksiz yorumlar kaldırıldı.
*   **Tip İpuçları (Type Hints):** Python 3.5+ ile gelen tip ipuçları eklendi. Bu, fonksiyonun hangi tipte argümanlar aldığını ve hangi tipte değer döndürdüğünü belirtir, kodun okunabilirliğini ve bakımını artırır.
*   **Genel Okunabilirlik:** Yapılan değişiklikler kodun daha standart ve anlaşılır olmasını sağladı. `f-string` kullanımı print ifadesini daha modern hale getirdi.

---
## Modül 4: Ağ ve İletişim Standartları

**(Tahmini Çalışma Süresi: 1.5 Saat)**

Bilgisayarların ve cihazların birbirleriyle iletişim kurabilmesi, modern bilişim dünyasının temelidir. Bu iletişim, karmaşık bir dizi kural ve protokol sayesinde mümkün olur. Bu modülde, ağ iletişimini yöneten temel referans modellerini, önemli ağ protokollerini ve veri değişim formatlarını inceleyeceğiz.

### 4.1. OSI Referans Modeli ve TCP/IP Protokol Ailesi

Ağ iletişiminin karmaşıklığını yönetmek ve farklı üreticilerin sistemlerinin birlikte çalışabilirliğini sağlamak için katmanlı mimariler geliştirilmiştir. En bilinen iki model OSI Referans Modeli ve TCP/IP Protokol Ailesi'dir.

*   **OSI (Open Systems Interconnection) Referans Modeli:**
    *   ISO tarafından geliştirilmiştir (ISO/IEC 7498-1).
    *   Ağ iletişimini 7 katmana ayıran kavramsal bir modeldir. Her katman, belirli bir işlevi yerine getirir ve altındaki katmana hizmet sunarken, üstündeki katmandan hizmet alır.
    *   Doğrudan bir protokol seti değildir, daha çok ağ protokollerinin nasıl tasarlanması ve sınıflandırılması gerektiğine dair bir rehberdir.
    *   **OSI Katmanları (Yukarıdan Aşağıya):**

    | Katman No | Katman Adı       | İngilizce Adı        | Temel İşlevi                                                                                                | PDU (Protocol Data Unit) | Örnek Protokoller/Cihazlar                |
    | :-------- | :--------------- | :------------------- | :---------------------------------------------------------------------------------------------------------- | :----------------------- | :---------------------------------------- |
    | **7**     | Uygulama         | Application          | Son kullanıcı uygulamalarına ağ servisleri sağlar (dosya transferi, e-posta, web).                             | Veri (Data)              | HTTP, FTP, SMTP, DNS, Telnet, DHCP         |
    | **6**     | Sunum            | Presentation         | Veri formatlama, şifreleme/şifre çözme, sıkıştırma/açma gibi işlemleri yapar. Verinin ortak bir formatta olmasını sağlar. | Veri (Data)              | SSL/TLS, JPEG, ASCII, EBCDIC, MPEG      |
    | **5**     | Oturum           | Session              | İletişim kuran cihazlar arasında oturumların (bağlantıların) kurulmasını, yönetilmesini ve sonlandırılmasını sağlar. | Veri (Data)              | NetBIOS, RPC, PPTP, L2TP                  |
    | **4**     | Taşıma           | Transport            | Uçtan uca güvenilir veya güvenilirsiz veri transferi, akış kontrolü, hata düzeltme, segmentasyon sağlar.    | Segment (TCP) / Datagram (UDP) | TCP, UDP                                  |
    | **3**     | Ağ               | Network              | Farklı ağlar arasında paketlerin yönlendirilmesi (routing), mantıksal adresleme (IP adresleri) sağlar.         | Paket (Packet)           | IP (IPv4, IPv6), ICMP, IGMP, RIP, OSPF    |
    | **2**     | Veri Bağlantı    | Data Link            | Aynı ağdaki cihazlar arasında güvenilir veri transferi, fiziksel adresleme (MAC adresleri), hata tespiti sağlar. | Çerçeve (Frame)         | Ethernet, Wi-Fi (802.11), PPP, HDLC, Switch, Bridge |
    | **1**     | Fiziksel         | Physical             | Bitlerin fiziksel bir ortam (kablo, hava) üzerinden iletilmesi için elektriksel, mekanik ve fonksiyonel özellikleri tanımlar. | Bit                      | Kablolar (UTP, Fiber), Hub, Repeater, NIC |

    > **Ezberleme İpucu (Aşağıdan Yukarıya):** **F**iziksel **V**eri **A**kışını **T**aşıyan **O**lumlu **S**onuçlar **U**ygulamada (FVATOSU)
    > **Ezberleme İpucu (Yukarıdan Aşağıya):** **A**hmet **P**aşa **S**adece **T**rabzon'a **N**akit **D**estek **P**ostalar (APSTNDP - İngilizce: All People Seem To Need Data Processing)

*   **TCP/IP Protokol Ailesi (TCP/IP Model):**
    *   İnternet'in temelini oluşturan protokoller bütünüdür. OSI modelinden daha önce geliştirilmiş ve pratikte daha yaygın olarak uygulanmıştır.
    *   Genellikle 4 veya 5 katmanlı bir model olarak tanımlanır. OSI modelinin bazı katmanlarını birleştirir.
    *   **TCP/IP Katmanları (Yaygın 4 Katmanlı Model):**

    | TCP/IP Katmanı         | OSI Karşılığı                         | Temel İşlevi                                                                                             | Örnek Protokoller         |
    | :--------------------- | :------------------------------------ | :------------------------------------------------------------------------------------------------------- | :------------------------ |
    | **Uygulama (Application)** | Uygulama, Sunum, Oturum              | Kullanıcı uygulamalarına ağ hizmetleri ve veri temsili.                                                   | HTTP, FTP, SMTP, DNS, DHCP |
    | **Taşıma (Transport)**     | Taşıma                                | Uçtan uca bağlantı yönetimi, güvenilir (TCP) veya güvenilirsiz (UDP) veri iletimi.                       | TCP, UDP                  |
    | **İnternet (Internet)**    | Ağ                                    | Paketlerin ağlar arasında yönlendirilmesi, mantıksal adresleme (IP).                                      | IP (IPv4, IPv6), ICMP     |
    | **Ağ Arayüzü (Network Interface / Link Layer)** | Veri Bağlantı, Fiziksel                | Fiziksel ağa erişim, aynı ağdaki cihazlar arası veri iletimi (MAC adresleri).                            | Ethernet, Wi-Fi, PPP      |

    **Şekil 4.1: OSI ve TCP/IP Modellerinin Karşılaştırılması**

    ```
    OSI Modeli                    TCP/IP Modeli (4 Katmanlı)
    +---------------------+       +---------------------+
    | 7. Uygulama         | ----> | Uygulama            |
    +---------------------+       |                     |
    | 6. Sunum            | ----> |                     |
    +---------------------+       |                     |
    | 5. Oturum           | ----> |                     |
    +---------------------+       +---------------------+
    | 4. Taşıma           | ----> | Taşıma              |
    +---------------------+       +---------------------+
    | 3. Ağ               | ----> | İnternet            |
    +---------------------+       +---------------------+
    | 2. Veri Bağlantı    | ----> | Ağ Arayüzü          |
    +---------------------+       |                     |
    | 1. Fiziksel         | ----> |                     |
    +---------------------+       +---------------------+
    ```

*   **Veri Kapsülleme (Data Encapsulation):**
    Veri, uygulama katmanından fiziksel katmana doğru hareket ederken, her katman kendi başlık (header) ve bazen de kuyruk (trailer) bilgilerini ekler. Bu işleme kapsülleme denir. Alıcı tarafta ise bu başlıklar ilgili katmanlarda sırayla çıkarılır (decapsulation).

    Örneğin:
    1.  Uygulama Katmanı: `Veri`
    2.  Taşıma Katmanı (TCP): `[TCP Başlığı | Veri]` -> Segment
    3.  İnternet Katmanı (IP): `[IP Başlığı | TCP Başlığı | Veri]` -> Paket
    4.  Ağ Arayüzü Katmanı (Ethernet): `[Ethernet Başlığı | IP Başlığı | TCP Başlığı | Veri | Ethernet Kuyruğu]` -> Çerçeve

### 4.2. Temel Ağ Protokolleri ve Standartları

Bu bölümde, TCP/IP modelinin çeşitli katmanlarında çalışan ve bilgisayar ağlarının işleyişinde kritik rol oynayan bazı temel protokolleri ve ilgili standartları inceleyeceğiz.

*   **Ağ Arayüzü Katmanı (Link Layer):**
    *   **Ethernet (IEEE 802.3):**
        *   Kablolu Yerel Alan Ağları (LAN) için en yaygın kullanılan teknolojidir.
        *   Fiziksel katman (kablolama türleri, sinyalizasyon) ve veri bağlantı katmanı (MAC adresleme, çerçeve formatı, CSMA/CD erişim yöntemi - eski sürümlerde) özelliklerini tanımlar.
        *   Hızları: 10 Mbps (Ethernet), 100 Mbps (Fast Ethernet), 1 Gbps (Gigabit Ethernet), 10 Gbps, 40 Gbps, 100 Gbps ve üzeri.
        *   **MAC Adresi (Media Access Control Address):** Ağ arayüz kartlarına (NIC) üretici tarafından atanan, 48 bitlik (6 byte) fiziksel adrestir. Genellikle onaltılık (hexadecimal) formatta gösterilir (örn: `00:1A:2B:3C:4D:5E`). Aynı ağ segmentindeki cihazların birbirini bulmasını sağlar.
    *   **Wi-Fi (Wireless Fidelity - IEEE 802.11 Ailesi):**
        *   Kablosuz Yerel Alan Ağları (WLAN) için standartlar ailesidir.
        *   Farklı sürümleri (örn: 802.11a, 802.11b, 802.11g, 802.11n, 802.11ac, 802.11ax - Wi-Fi 6) farklı frekans bantları, hızlar ve teknolojiler kullanır.
        *   Güvenlik protokolleri (WEP - güvensiz, WPA, WPA2, WPA3) de bu standartlar kapsamında tanımlanır.
        *   CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance) erişim yöntemini kullanır.

*   **İnternet Katmanı (Internet Layer):**
    *   **IP (Internet Protocol):**
        *   İnternet katmanının temel protokolüdür. Paketlerin kaynak ve hedef adreslerini (IP adresleri) içerir ve ağlar arasında yönlendirilmesini sağlar.
        *   Bağlantısız (connectionless) ve güvenilirsiz (unreliable) bir protokoldür; paketlerin hedefe ulaşıp ulaşmadığını veya doğru sırada gidip gitmediğini garanti etmez. Bu görevler üst katmanlara (TCP) bırakılır.
        *   **IPv4 (RFC 791):** 32 bitlik adresleme kullanır (örn: `192.168.1.10`). Yaklaşık 4.3 milyar adres sağlar. Adres kıtlığı nedeniyle yerini yavaş yavaş IPv6'ya bırakmaktadır.
        *   **IPv6 (RFC 8200):** 128 bitlik adresleme kullanır (örn: `2001:0db8:85a3:0000:0000:8a2e:0370:7334`). Çok daha büyük bir adres alanı sunar ve gelişmiş özelliklere sahiptir.
    *   **ICMP (Internet Control Message Protocol - RFC 792):**
        *   IP protokolünün hata raporlama ve teşhis mesajlarını iletmek için kullanılır.
        *   Örnek: `ping` komutu ICMP yankı isteği ve yankı yanıtı mesajlarını kullanır. `traceroute` komutu da ICMP mesajlarından faydalanır.

*   **Taşıma Katmanı (Transport Layer):**
    *   **TCP (Transmission Control Protocol - RFC 793):**
        *   Güvenilir, bağlantı odaklı (connection-oriented) bir protokoldür.
        *   Veri iletiminden önce kaynak ve hedef arasında bir bağlantı (üç yollu el sıkışma - three-way handshake: SYN, SYN-ACK, ACK) kurar.
        *   Segmentlerin sıralanmasını, kayıp segmentlerin yeniden gönderilmesini (retransmission), akış kontrolünü (flow control) ve tıkanıklık kontrolünü (congestion control) sağlar.
        *   HTTP, FTP, SMTP gibi güvenilir veri iletimi gerektiren uygulamalar tarafından kullanılır.
    *   **UDP (User Datagram Protocol - RFC 768):**
        *   Güvenilirsiz, bağlantısız (connectionless) bir protokoldür.
        *   TCP'ye göre daha az başlık bilgisi (overhead) içerir ve daha hızlıdır.
        *   Veri kaybının tolere edilebildiği veya hızın öncelikli olduğu uygulamalar için uygundur (örn: DNS, DHCP, VoIP, online oyunlar, video streaming).
        *   Hata kontrolü ve sıralama yapmaz; bu görevler uygulama katmanına bırakılır.
    *   **Port Numaraları:** TCP ve UDP, bir bilgisayardaki farklı uygulamalara veya servislere gelen veriyi yönlendirmek için port numaralarını kullanır.
        *   0-1023: İyi bilinen portlar (Well-known ports), standart servisler için (örn: HTTP - 80, HTTPS - 443, FTP - 21, SMTP - 25, DNS - 53). IANA (Internet Assigned Numbers Authority) tarafından atanır.
        *   1024-49151: Kayıtlı portlar (Registered ports).
        *   49152-65535: Dinamik veya özel portlar (Dynamic/private ports).

*   **Uygulama Katmanı (Application Layer):**
    Bu katmanda sayısız protokol bulunur. İşte en yaygın olanlardan bazıları:
    *   **HTTP (HyperText Transfer Protocol - RFC 2616, RFC 7230-7235):**
        *   World Wide Web (WWW) üzerinde web sayfalarını ve diğer kaynakları transfer etmek için kullanılan temel protokoldür.
        *   İstemci-sunucu modeline dayanır. Web tarayıcısı (istemci), web sunucusundan kaynak talep eder (GET, POST gibi metotlarla).
    *   **HTTPS (HTTP Secure - RFC 2818):**
        *   HTTP'nin güvenli versiyonudur. İletişimi SSL/TLS (Secure Sockets Layer / Transport Layer Security) protokolleri ile şifreleyerek gizlilik ve bütünlük sağlar.
        *   Genellikle TCP port 443 üzerinden çalışır.
    *   **FTP (File Transfer Protocol - RFC 959):**
        *   Dosya transferi için kullanılır. Kontrol bağlantısı (port 21) ve veri bağlantısı (port 20 veya dinamik) olmak üzere iki ayrı TCP bağlantısı kullanır.
    *   **SMTP (Simple Mail Transfer Protocol - RFC 5321):**
        *   E-posta göndermek için kullanılır. Genellikle TCP port 25 üzerinden çalışır.
    *   **POP3 (Post Office Protocol version 3 - RFC 1939):**
        *   E-postaları sunucudan alıp yerel istemciye indirmek için kullanılır. Genellikle TCP port 110 üzerinden çalışır.
    *   **IMAP (Internet Message Access Protocol - RFC 3501):**
        *   E-postaları sunucu üzerinde yönetmek ve erişmek için kullanılır. POP3'e göre daha esnektir, e-postalar sunucuda kalır. Genellikle TCP port 143 üzerinden çalışır.
    *   **DNS (Domain Name System - RFC 1034, 1035):**
        *   İnsanlar tarafından okunabilir alan adlarını (örn: `www.google.com`) makine tarafından okunabilir IP adreslerine (örn: `172.217.160.142`) ve tersine çeviren dağıtık bir veritabanı sistemidir.
        *   Genellikle UDP port 53 üzerinden çalışır (bazı durumlarda TCP de kullanılır).
    *   **DHCP (Dynamic Host Configuration Protocol - RFC 2131):**
        *   Ağa bağlanan cihazlara otomatik olarak IP adresi, alt ağ maskesi, varsayılan ağ geçidi ve DNS sunucusu gibi ağ yapılandırma bilgilerini atayan bir protokoldür.
        *   Genellikle UDP port 67 (sunucu) ve 68 (istemci) üzerinden çalışır.

> **RFC (Request for Comments):** İnternet standartlarının, protokollerinin ve en iyi uygulamalarının tanımlandığı dokümanlardır. IETF (Internet Engineering Task Force) tarafından yayınlanır. Birçok temel ağ protokolü RFC'ler ile tanımlanmıştır. Örneğin, IP protokolü RFC 791'de, TCP ise RFC 793'te detaylandırılmıştır. RFC'lere `www.rfc-editor.org` adresinden ücretsiz olarak erişilebilir.

### 4.3. Veri Değişim Formatları

Farklı sistemlerin ve uygulamaların birbirleriyle anlamlı bir şekilde veri alışverişinde bulunabilmesi için ortak veri formatlarına ihtiyaç vardır. Bu formatlar, verinin nasıl yapılandırılacağını ve temsil edileceğini tanımlar.

*   **JSON (JavaScript Object Notation - RFC 8259, ECMA-404):**
    *   İnsanlar tarafından kolayca okunabilir ve yazılabilir, makineler tarafından kolayca ayrıştırılabilir (parse edilebilir) ve üretilebilir (generate edilebilir) hafif bir veri değişim formatıdır.
    *   JavaScript'in nesne gösteriminden esinlenmiştir, ancak dilden bağımsızdır.
    *   Web API'lerinde (özellikle RESTful API'lerde) ve konfigürasyon dosyalarında yaygın olarak kullanılır.
    *   **Temel Veri Tipleri:**
        *   **Nesne (Object):** Sırasız anahtar/değer çiftlerinden oluşan bir koleksiyondur. `{ "anahtar1": "değer1", "anahtar2": 123 }`
        *   **Dizi (Array):** Sıralı değerlerden oluşan bir listedir. `[ "elma", "armut", 100, { "renk": "kırmızı" } ]`
        *   **String:** Çift tırnak içinde Unicode karakter dizisi. `"Merhaba Dünya"`
        *   **Number:** Tamsayı veya ondalıklı sayı. `123`, `3.14`, `-0.5`, `1.2e+10`
        *   **Boolean:** `true` veya `false`
        *   **null:** Boş değer.
    *   **Örnek JSON Verisi:**
      ```json
      {
        "ad": "Ahmet",
        "soyad": "Yılmaz",
        "yas": 30,
        "aktifMi": true,
        "adres": {
          "sokak": "123. Cadde",
          "sehir": "Ankara",
          "postaKodu": "06500"
        },
        "hobiler": [
          "kitap okumak",
          "yüzme",
          "seyahat"
        ],
        "es": null
      }
      ```

*   **XML (eXtensible Markup Language):**
    *   W3C (World Wide Web Consortium) tarafından geliştirilen, hem insanlar hem de makineler tarafından okunabilir belgeler oluşturmak için kullanılan bir işaretleme dilidir.
    *   HTML'e benzer şekilde etiketler (tags) kullanır, ancak HTML'in aksine etiketler önceden tanımlı değildir; kullanıcı kendi etiketlerini tanımlayabilir. Bu nedenle "genişletilebilir"dir.
    *   Veri depolama, veri taşıma, konfigürasyon dosyaları ve doküman yapısını tanımlamak için kullanılır. Eskiden web servislerinde (SOAP ile) daha yaygındı, ancak JSON'un popülaritesi artmıştır.
    *   **Temel Özellikleri:**
        *   Etiketler içinde etiketler (hiyerarşik yapı).
        *   Her açılış etiketinin bir kapanış etiketi olmalıdır (örn: `<ad>...</ad>`).
        *   Etiketler büyük/küçük harfe duyarlıdır.
        *   Öznitelikler (attributes) etiketlere ek bilgi sağlayabilir (örn: `<kitap isbn="123">`).
        *   İyi biçimlendirilmiş (well-formed) ve geçerli (valid - DTD veya XML Schema ile tanımlanmışsa) olmalıdır.
    *   **Örnek XML Verisi:**
      ```xml
      <?xml version="1.0" encoding="UTF-8"?>
      <kisi>
        <ad>Ayşe</ad>
        <soyad>Kara</soyad>
        <yas>28</yas>
        <aktifMi>true</aktifMi>
        <adres>
          <sokak>456. Sokak</sokak>
          <sehir>İstanbul</sehir>
          <postaKodu>34700</postaKodu>
        </adres>
        <hobiler>
          <hobi>resim yapmak</hobi>
          <hobi>dans</hobi>
        </hobiler>
        <es/> <!-- Boş eleman, null gibi düşünülebilir -->
      </kisi>
      ```

*   **Diğer Formatlar:**
    *   **CSV (Comma-Separated Values):** Basit tablosal verileri depolamak için kullanılır. Her satır bir kaydı, virgülle ayrılmış değerler ise alanları temsil eder.
    *   **YAML (YAML Ain't Markup Language):** İnsan tarafından okunabilirliği yüksek bir veri serileştirme dilidir. Genellikle konfigürasyon dosyalarında kullanılır. JSON'a göre daha az sözdizimi (syntax) kalabalığına sahiptir.
    *   **Protocol Buffers (Protobuf):** Google tarafından geliştirilen, dilden ve platformdan bağımsız, genişletilebilir bir yapılandırılmış veri serileştirme mekanizmasıdır. İkili (binary) formatta olduğu için JSON veya XML'e göre daha küçük ve daha hızlıdır. Şema ( `.proto` dosyaları) tanımlaması gerektirir.
    *   **Apache Avro:** Hadoop ekosisteminde yaygın olarak kullanılan bir veri serileştirme sistemidir. Zengin veri yapılarını destekler ve şema evrimi konusunda esnektir.

> **Veri Değişim Formatı Seçimi:**
> Hangi formatın kullanılacağı, uygulamanın gereksinimlerine bağlıdır:
> *   **İnsan Okunabilirliği:** JSON, XML, YAML daha iyidir. Protobuf ikilidir.
> *   **Performans ve Boyut:** Protobuf, Avro gibi ikili formatlar genellikle daha verimlidir.
> *   **Kullanım Kolaylığı ve Yaygınlık:** JSON, web API'leri için çok yaygındır ve çoğu dilde iyi desteklenir.
> *   **Şema Zorunluluğu:** Protobuf ve Avro şema gerektirir, bu da veri yapısının daha katı olmasını sağlar. JSON ve XML şemasız kullanılabilir (ancak JSON Schema veya XML Schema ile şema tanımlanabilir).

### 4.4. Mini Alıştırma: Bir Web Sayfası İsteğinin Akışı

Bir web tarayıcısına `http://www.example.com/index.html` yazdığınızda ve Enter'a bastığınızda, arka planda hangi temel ağ protokollerinin ve standartlarının hangi katmanlarda (TCP/IP modeline göre) devreye girdiğini adım adım açıklamaya çalışın.

**İpuçları:** DNS sorgusu, TCP bağlantısı, HTTP isteği/yanıtı gibi aşamaları düşünün.

*(Öğrencinin bu kısımda, DNS, TCP, IP, HTTP ve Ethernet/Wi-Fi gibi protokollerin rollerini ve hangi katmanlarda çalıştıklarını açıklaması beklenir.)*

**Örnek Yanıt Akışı (Özet):**

1.  **Uygulama Katmanı (Tarayıcı):** Kullanıcı `http://www.example.com/index.html` adresini girer. Tarayıcı, `www.example.com` alan adının IP adresini bulması gerektiğini anlar.
2.  **Uygulama Katmanı (DNS):** Tarayıcı, işletim sisteminin DNS çözümleyicisine `www.example.com` için bir DNS sorgusu gönderir.
    *   DNS sorgusu UDP (genellikle) kullanılarak yerel DNS sunucusuna veya yapılandırılmış DNS sunucularına iletilir. Bu sorgu, TCP/IP katmanlarından geçerek (UDP -> IP -> Ethernet/Wi-Fi) DNS sunucusuna ulaşır.
    *   DNS sunucusu, `www.example.com`'un IP adresini bulur (veya diğer DNS sunucularına sorar) ve yanıtı geri gönderir.
3.  **Taşıma Katmanı (TCP):** Tarayıcı, elde edilen IP adresine (örneğin `93.184.216.34`) ve HTTP için standart port olan 80'e bir TCP bağlantısı kurmaya başlar.
    *   Üç yollu el sıkışma (SYN, SYN-ACK, ACK paketleri) gerçekleşir. Bu paketler IP katmanında IP başlıkları alır ve Ağ Arayüzü katmanında Ethernet/Wi-Fi çerçevelerine sarılır.
4.  **Uygulama Katmanı (HTTP):** TCP bağlantısı kurulduktan sonra, tarayıcı bir HTTP GET isteği oluşturur:
    ```
    GET /index.html HTTP/1.1
    Host: www.example.com
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...
    ... (diğer başlıklar)
    ```
    *   Bu HTTP isteği, TCP segmentlerine bölünür, IP paketlerine sarılır ve Ethernet/Wi-Fi çerçeveleri olarak sunucuya gönderilir.
5.  **Sunucu Tarafı:** `www.example.com` sunucusu HTTP isteğini alır.
    *   İsteği işler, `index.html` dosyasını bulur.
    *   Bir HTTP yanıtı oluşturur (örn: `HTTP/1.1 200 OK` durum kodu ile birlikte dosyanın içeriği).
    *   Bu yanıt da TCP segmentlerine, IP paketlerine ve Ethernet/Wi-Fi çerçevelerine sarılarak istemciye (tarayıcıya) geri gönderilir.
6.  **İstemci Tarafı (Tarayıcı):** Tarayıcı HTTP yanıtını alır.
    *   `index.html` içeriğini (HTML, CSS, JavaScript) ayrıştırır ve sayfayı kullanıcıya gösterir.
    *   Sayfada başka kaynaklar (resimler, stil dosyaları) varsa, bunlar için de benzer şekilde yeni HTTP istekleri başlatabilir.
7.  **Taşıma Katmanı (TCP):** Veri transferi tamamlandığında veya bir süre işlem yapılmadığında TCP bağlantısı sonlandırılır (FIN, ACK, FIN, ACK paketleri ile).

Bu süreç boyunca, her katman kendi standartlarına göre çalışır: Ethernet/Wi-Fi (IEEE 802.3/802.11), IP (RFC 791/8200), TCP (RFC 793), DNS (RFC 1034/1035), HTTP (RFC 7230-7235).

---
## Modül 5: Donanım, Güvenlik ve Diğer İlgili Standartlar

**(Tahmini Çalışma Süresi: 1.5 Saat)**

Bu modülde, bilgisayar mühendisliğinin diğer önemli alanlarındaki standartlara değineceğiz. Donanım arayüzlerinden gömülü sistemlere, bilgi güvenliğinden erişilebilirliğe ve etik kurallara kadar geniş bir yelpazeyi kapsayacağız.

### 5.1. Donanım Arayüz Standartları

Donanım arayüz standartları, farklı donanım bileşenlerinin (anakartlar, işlemciler, bellekler, çevre birimleri vb.) birbirleriyle fiziksel ve elektriksel olarak nasıl bağlanacağını ve iletişim kuracağını tanımlar. Bu standartlar sayesinde farklı üreticilerin bileşenleri bir arada çalışabilir.

*   **USB (Universal Serial Bus):**
    *   Bilgisayarlar ve çevre birimleri (klavye, fare, yazıcı, harici disk, flash bellek vb.) arasında bağlantı, iletişim ve güç kaynağı (bazı durumlarda) için kullanılan en yaygın arayüz standardıdır.
    *   USB Implementers Forum (USB-IF) tarafından geliştirilir ve yönetilir.
    *   **Sürümleri:** USB 1.0/1.1 (Low Speed, Full Speed), USB 2.0 (Hi-Speed), USB 3.0/3.1 Gen 1/3.2 Gen 1 (SuperSpeed), USB 3.1 Gen 2/3.2 Gen 2 (SuperSpeed+), USB 3.2 Gen 2x2, USB4. Her sürüm farklı hızlar ve özellikler sunar.
    *   **Konektör Tipleri:** Type-A (standart dikdörtgen), Type-B (karemsi, yazıcılarda), Mini-USB, Micro-USB, Type-C (yeni, ters takılabilir, daha yüksek güç ve veri hızlarını destekler). USB Type-C, DisplayPort ve Thunderbolt gibi alternatif modları da destekleyebilir.
    *   **Standartlar:** USB spesifikasyonları konektör pin yapılarını, elektriksel sinyalleri, protokolleri ve güç dağıtımını (USB Power Delivery - USB PD) tanımlar.

*   **HDMI (High-Definition Multimedia Interface):**
    *   Sıkıştırılmamış dijital ses ve video verilerini bir kaynak cihazdan (örn: bilgisayar, Blu-ray oynatıcı, oyun konsolu) uyumlu bir görüntüleme cihazına (örn: monitör, TV, projektör) aktarmak için kullanılan bir arayüz standardıdır.
    *   HDMI Forum tarafından geliştirilir.
    *   **Sürümleri:** HDMI 1.0'dan başlayarak HDMI 2.1'e kadar çeşitli sürümleri vardır. Her sürüm daha yüksek çözünürlükleri (örn: 4K, 8K), daha yüksek yenileme hızlarını ve ek özellikleri (örn: HDR, eARC) destekler.
    *   **Konektör Tipleri:** Type A (standart), Type C (Mini-HDMI), Type D (Micro-HDMI).

*   **DisplayPort:**
    *   VESA (Video Electronics Standards Association) tarafından geliştirilen, öncelikli olarak bilgisayarları monitörlere veya ev sinema sistemlerine bağlamak için tasarlanmış bir dijital görüntü arayüzüdür. HDMI'a bir alternatiftir.
    *   Yüksek çözünürlükleri, yüksek yenileme hızlarını ve çoklu monitör zincirleme (daisy-chaining) özelliğini destekler.
    *   USB Type-C konektörü üzerinden DisplayPort Alt Mode olarak da kullanılabilir.

*   **PCI Express (PCIe / PCI-E - Peripheral Component Interconnect Express):**
    *   Anakart üzerindeki yüksek hızlı bileşenleri (ekran kartları, SSD'ler, ağ kartları vb.) bağlamak için kullanılan bir seri genişletme veriyolu standardıdır. Eski PCI, PCI-X ve AGP standartlarının yerini almıştır.
    *   PCI-SIG (PCI Special Interest Group) tarafından geliştirilir.
    *   **Sürümleri:** PCIe 1.0'dan PCIe 6.0'a (ve geliştirilmekte olan daha yeni sürümler) kadar. Her sürüm, hat başına (per lane) bant genişliğini artırır.
    *   **Yapısı:** x1, x4, x8, x16 gibi farklı sayıda hat (lane) konfigürasyonlarına sahiptir. Daha fazla hat, daha yüksek toplam bant genişliği anlamına gelir.

*   **SATA (Serial AT Attachment):**
    *   Depolama aygıtlarını (sabit diskler - HDD, katı hal sürücüleri - SSD, optik sürücüler) anakarta bağlamak için kullanılan bir bilgisayar veriyolu arayüzüdür. Eski PATA (IDE) standardının yerini almıştır.
    *   Serial ATA International Organization (SATA-IO) tarafından geliştirilir.
    *   **Sürümleri:** SATA 1.0 (1.5 Gbps), SATA 2.0 (3 Gbps), SATA 3.0 (6 Gbps).

*   **NVMe (Non-Volatile Memory Express):**
    *   Özellikle PCIe veriyolu üzerinden bağlanan SSD'ler için tasarlanmış, yüksek performanslı bir mantıksal aygıt arayüzü ve sürücü standardıdır. SATA tabanlı SSD'lere göre çok daha düşük gecikme süresi ve daha yüksek G/Ç (I/O) performansı sunar.
    *   NVM Express organizasyonu tarafından geliştirilir.
    *   M.2 form faktöründeki SSD'lerde yaygın olarak kullanılır.

> **Birlikte Çalışabilirlik Testleri (Plugfests):** Birçok donanım standardı organizasyonu (örn: USB-IF, VESA), farklı üreticilerin cihazlarının standartlara uygunluğunu ve birbirleriyle uyumlu çalışıp çalışmadığını test etmek için "plugfest" adı verilen etkinlikler düzenler. Bu, standartların pratikte ne kadar iyi çalıştığını görmek için önemlidir.

### 5.2. Gömülü Sistemler ve IoT Standartları

Gömülü sistemler, belirli görevleri yerine getirmek üzere tasarlanmış özel amaçlı bilgisayar sistemleridir (örn: mikrodalga fırın kontrolcüsü, otomobil motor kontrol ünitesi, akıllı saat). Nesnelerin İnterneti (Internet of Things - IoT) ise fiziksel nesnelerin (sensörler, aktüatörler, cihazlar) internet üzerinden birbirleriyle ve diğer sistemlerle iletişim kurduğu bir ağdır. Bu alanlarda da standartlaşma büyük önem taşır.

*   **IoT İletişim Protokolleri (Uygulama Katmanı):**
    *   **MQTT (Message Queuing Telemetry Transport):**
        *   OASIS standardıdır. Kısıtlı kaynaklara sahip cihazlar ve düşük bant genişlikli, güvenilmez ağlar için tasarlanmış hafif bir yayınla/abone ol (publish/subscribe) mesajlaşma protokolüdür.
        *   IoT uygulamalarında ve M2M (Machine-to-Machine) iletişimde yaygın olarak kullanılır.
    *   **CoAP (Constrained Application Protocol):**
        *   IETF standardıdır (RFC 7252). Kısıtlı cihazlar (constrained devices) ve kısıtlı ağlar (constrained networks - örn: 6LoWPAN) için tasarlanmış bir web transfer protokolüdür.
        *   HTTP'ye benzer bir istek/yanıt modeline sahiptir ancak UDP üzerinde çalışır ve daha basittir. RESTful API'leri destekler.
    *   **AMQP (Advanced Message Queuing Protocol):**
        *   OASIS standardıdır. Güvenilir, kurumsal düzeyde mesajlaşma için tasarlanmış açık bir standarttır. MQTT'den daha karmaşık ve daha fazla özelliğe sahiptir.
    *   **LwM2M (Lightweight M2M):**
        *   Open Mobile Alliance (OMA) tarafından geliştirilen, IoT cihaz yönetimi ve servis etkinleştirme için tasarlanmış bir protokoldür. Genellikle CoAP üzerinde çalışır.

*   **IoT Ağ Protokolleri (Alt Katmanlar):**
    *   **6LoWPAN (IPv6 over Low-Power Wireless Personal Area Networks):**
        *   IETF standardıdır. IPv6 paketlerinin IEEE 802.15.4 (Zigbee, Thread gibi teknolojilerin temel aldığı) gibi düşük güçlü, düşük bant genişlikli kablosuz ağlar üzerinden iletilmesini sağlar.
    *   **Zigbee:**
        *   Zigbee Alliance (şimdi Connectivity Standards Alliance - CSA'nın bir parçası) tarafından geliştirilen, düşük güçlü, düşük maliyetli, kablosuz ağlar için bir standartlar paketidir. IEEE 802.15.4 üzerine kuruludur. Ev otomasyonu, endüstriyel kontrol gibi alanlarda kullanılır.
    *   **Thread:**
        *   Thread Group tarafından geliştirilen, evdeki IoT cihazları için tasarlanmış, IPv6 tabanlı, güvenli ve güvenilir bir kablosuz ağ protokolüdür. IEEE 802.15.4 üzerine kuruludur.
    *   **Bluetooth Low Energy (BLE):**
        *   Bluetooth SIG tarafından geliştirilen, Bluetooth standardının düşük güç tüketimine odaklanan bir versiyonudur. Giyilebilir cihazlar, sağlık sensörleri, işaretçiler (beacons) gibi uygulamalar için idealdir.
    *   **LoRaWAN (Long Range Wide Area Network):**
        *   LoRa Alliance tarafından geliştirilen, düşük güçlü, geniş alan (LPWAN) ağı protokolüdür. Uzun mesafelerde (birkaç kilometre) düşük veri hızlarında iletişim sağlar. Akıllı şehirler, tarım gibi uygulamalarda kullanılır.

*   **Gömülü Yazılım Standartları:**
    *   **MISRA C/C++ (Motor Industry Software Reliability Association):**
        *   Otomotiv endüstrisi başta olmak üzere, güvenlik açısından kritik gömülü sistemlerde C ve C++ dillerinin güvenli kullanımı için geliştirilmiş kodlama standartlarıdır.
        *   Amaç, C/C++ dillerinin belirsiz, tanımsız veya tehlikeli olabilecek özelliklerinden kaçınarak daha güvenilir ve bakımı kolay kod yazılmasını sağlamaktır.
        *   Örnek kurallar: Dinamik bellek yönetiminin kısıtlanması, belirli işaretçi (pointer) operasyonlarının yasaklanması, goto kullanımının kısıtlanması.

### 5.3. Bilgi Güvenliği Yönetim Sistemi Standartları

Bilgi güvenliği, bilgilerin gizliliğini (confidentiality), bütünlüğünü (integrity) ve erişilebilirliğini (availability) korumaktır. Kuruluşlar, bilgi varlıklarını siber saldırılardan, veri sızıntılarından ve diğer tehditlerden korumak için kapsamlı bir yaklaşıma ihtiyaç duyarlar.

*   **ISO/IEC 27000 Ailesi:**
    *   Bilgi Güvenliği Yönetim Sistemleri (BGYS - Information Security Management System - ISMS) için uluslararası standartlar ailesidir. ISO ve IEC'nin ortak komitesi JTC 1/SC 27 tarafından geliştirilir.
    *   **ISO/IEC 27001: Information technology — Security techniques — Information security management systems — Requirements:**
        *   Bu ailenin en bilinen ve sertifikalandırılabilir ana standardıdır.
        *   Bir kuruluşun BGYS'yi kurması, uygulaması, sürdürmesi ve sürekli iyileştirmesi için gereksinimleri tanımlar.
        *   Risk tabanlı bir yaklaşım benimser: Kuruluş, bilgi varlıklarını, tehditleri, zafiyetleri ve etkileri değerlendirerek riskleri belirler ve bu riskleri yönetmek için uygun kontrolleri uygular.
        *   **Ek A (Annex A):** 114 adet genel güvenlik kontrolü ve kontrol hedefini listeler. Kuruluşlar, kendi risk değerlendirmelerine göre bu kontrollerden hangilerinin uygulanacağına karar verirler. Bu kontroller 14 ana başlık altında toplanır (örn: Bilgi Güvenliği Politikaları, Varlık Yönetimi, Erişim Kontrolü, Kriptografi, Fiziksel ve Çevresel Güvenlik, İletişim Güvenliği, Yazılım Geliştirme Güvenliği vb.).
    *   **ISO/IEC 27002: Information technology — Security techniques — Code of practice for information security controls:**
        *   ISO/IEC 27001 Ek A'daki kontrollerin uygulanması için detaylı bir kılavuz ve en iyi uygulamaları sunar.
    *   **Diğer ISO/IEC 27000 Serisi Standartları:** Risk yönetimi (ISO/IEC 27005), denetim (ISO/IEC 27007), bulut güvenliği (ISO/IEC 27017), gizlilik (ISO/IEC 27701) gibi özel konular için ek kılavuzlar ve standartlar içerir.

*   **NIST Cybersecurity Framework (CSF):**
    *   ABD Ulusal Standartlar ve Teknoloji Enstitüsü (NIST) tarafından geliştirilen, kuruluşların siber güvenlik risklerini daha iyi anlamalarına, yönetmelerine ve azaltmalarına yardımcı olan gönüllü bir çerçevedir.
    *   Beş ana fonksiyondan oluşur: **Tanımla (Identify), Koru (Protect), Tespit Et (Detect), Yanıt Ver (Respond), Kurtar (Recover).**
    *   ISO/IEC 27001 gibi diğer standartlarla uyumlu olarak kullanılabilir.

### 5.4. Web Uygulama Güvenliği Standartları ve Kılavuzları

Web uygulamaları, internet üzerinden erişilebilirlikleri nedeniyle sıkça siber saldırıların hedefi olurlar. Bu nedenle web uygulama güvenliği büyük önem taşır.

*   **OWASP (Open Web Application Security Project):**
    *   Web uygulama güvenliğini iyileştirmeye odaklanmış, kâr amacı gütmeyen, açık bir topluluktur.
    *   Ücretsiz makaleler, metodolojiler, dokümantasyon, araçlar ve teknolojiler üretir.
    *   **OWASP Top 10:**
        *   Web uygulamaları için en kritik 10 güvenlik riskinin bir listesidir. Bu liste, geliştiricilerin ve güvenlik uzmanlarının en yaygın ve tehlikeli zafiyetlere odaklanmasına yardımcı olur.
        *   Düzenli aralıklarla güncellenir. (Örneğin, 2021 listesindeki bazı riskler: Kırık Erişim Kontrolü, Kriptografik Hatalar, Enjeksiyon, Güvensiz Tasarım, Güvenlik Yanlış Yapılandırması, Savunmasız ve Güncel Olmayan Bileşenler).
        *   Her risk için açıklama, örnekler, önleme yöntemleri ve referanslar sunar.
        *   Resmi bir standart olmasa da, web uygulama güvenliği alanında fiili bir standart ve farkındalık aracı olarak yaygın kabul görür.
    *   **OWASP ASVS (Application Security Verification Standard):**
        *   Güvenli web uygulamaları tasarlamak, geliştirmek ve test etmek için bir çerçeve ve kontrol listesi sunar. Uygulamaların güvenlik seviyelerini (Level 1, 2, 3) tanımlar.
    *   **OWASP Testing Guide:** Web uygulamalarının güvenlik testleri için kapsamlı bir metodoloji sunar.

*   **W3C Web Security Standarts:**
    *   W3C, web teknolojilerinin güvenliğini artırmak için çeşitli standartlar ve kılavuzlar geliştirir.
    *   **Content Security Policy (CSP):** Sitelerin, tarayıcının hangi kaynakları (scriptler, stiller, resimler vb.) yükleyebileceğini kontrol etmesine olanak tanır, XSS (Cross-Site Scripting) gibi saldırıları azaltmaya yardımcı olur.
    *   **Subresource Integrity (SRI):** Tarayıcının, CDN'lerden (Content Delivery Network) yüklenen dosyaların (örn: JavaScript kütüphaneleri) değiştirilmediğini doğrulamasına olanak tanır.
    *   **Cross-Origin Resource Sharing (CORS):** Bir web sayfasının farklı bir alan adındaki kaynaklara güvenli bir şekilde erişmesini sağlayan bir mekanizmadır.

### 5.5. Kriptografi Standartları

Kriptografi, bilginin yetkisiz erişime karşı korunması için şifreleme ve şifre çözme tekniklerini kullanan bir bilim dalıdır. Kriptografik algoritmaların ve protokollerin standartlaştırılması, güvenli iletişim ve veri depolama için hayati öneme sahiptir.

*   **Simetrik Şifreleme Standartları:**
    *   Aynı anahtarın hem şifreleme hem de şifre çözme için kullanıldığı algoritmalar.
    *   **AES (Advanced Encryption Standard - FIPS PUB 197):**
        *   NIST tarafından standartlaştırılmış, dünya çapında yaygın olarak kullanılan bir blok şifreleme algoritmasıdır.
        *   128, 192 veya 256 bit anahtar uzunluklarını destekler.
        *   DES (Data Encryption Standard - eski bir standart) ve 3DES'in (Triple DES) yerini almıştır.
        *   SSL/TLS, dosya şifreleme, veritabanı şifreleme gibi birçok uygulamada kullanılır.

*   **Asimetrik (Açık Anahtarlı) Şifreleme Standartları:**
    *   Biri genel (public), diğeri özel (private) olmak üzere iki farklı anahtar kullanılır. Genel anahtarla şifrelenen veri sadece ilgili özel anahtarla, özel anahtarla imzalanan veri ise genel anahtarla doğrulanabilir.
    *   **RSA (Rivest-Shamir-Adleman):**
        *   Yaygın olarak kullanılan bir açık anahtarlı şifreleme ve dijital imza algoritmasıdır. Güvenliği, büyük sayıları çarpanlarına ayırmanın zorluğuna dayanır.
        *   PKCS#1 (Public-Key Cryptography Standards #1) gibi standartlar RSA'nın uygulanması için formatlar ve yöntemler tanımlar.
    *   **ECC (Elliptic Curve Cryptography):**
        *   Eliptik eğriler üzerindeki matematiksel işlemlere dayanan bir açık anahtarlı kriptografi türüdür.
        *   RSA'ya göre daha kısa anahtar uzunluklarıyla benzer güvenlik seviyeleri sunar, bu da onu kaynakları kısıtlı cihazlar (örn: mobil telefonlar, IoT cihazları) için daha uygun hale getirir.
        *   ECDSA (Elliptic Curve Digital Signature Algorithm), ECDH (Elliptic Curve Diffie-Hellman) gibi algoritmalar ECC'yi kullanır.

*   **Özet (Hash) Fonksiyonu Standartları:**
    *   Değişken uzunluktaki bir girdiyi sabit uzunlukta bir çıktıya (özet veya hash değeri) dönüştüren fonksiyonlardır. İyi bir özet fonksiyonu tek yönlü (özetten orijinal veriye dönmek zordur) ve çakışmaya dayanıklı (collision-resistant - farklı girdilerin aynı özeti üretmesi zordur) olmalıdır.
    *   **SHA (Secure Hash Algorithm) Ailesi (FIPS PUB 180):**
        *   NIST tarafından standartlaştırılmıştır.
        *   **SHA-1:** Artık güvenli kabul edilmiyor, çakışmalar bulundu.
        *   **SHA-2 Ailesi:** SHA-224, SHA-256, SHA-384, SHA-512. Halen yaygın ve güvenli kabul edilir.
        *   **SHA-3 Ailesi:** Farklı bir tasarıma sahip yeni nesil özet fonksiyonlarıdır.
    *   Dijital imzalar, parola saklama, veri bütünlüğü kontrolü gibi alanlarda kullanılır.

*   **Dijital İmza Standartları:**
    *   Bir mesajın veya belgenin bütünlüğünü ve göndericisinin kimliğini doğrulamak için kullanılır. Asimetrik kriptografi ve özet fonksiyonlarını birleştirir.
    *   **DSS (Digital Signature Standard - FIPS PUB 186):** NIST tarafından yayınlanan, DSA (Digital Signature Algorithm), RSA ve ECDSA gibi algoritmaları içeren bir standarttır.

*   **PKI (Public Key Infrastructure - Açık Anahtar Altyapısı):**
    *   Dijital sertifikaların oluşturulması, yönetilmesi, dağıtılması, kullanılması, saklanması ve iptal edilmesi için gerekli rolleri, politikaları, donanımı, yazılımı ve prosedürleri içeren bir sistemdir.
    *   **X.509:** ITU-T tarafından tanımlanan, dijital sertifikaların formatı için bir standarttır. SSL/TLS sertifikaları X.509 formatındadır. Sertifikalar, bir açık anahtarı bir kimlikle (kişi, sunucu, kuruluş) ilişkilendirir ve bir Sertifika Otoritesi (CA - Certificate Authority) tarafından imzalanır.

### 5.6. Erişilebilirlik Standartları

Erişilebilirlik (Accessibility - a11y), ürünlerin, hizmetlerin ve ortamların engelli bireyler de dahil olmak üzere herkes tarafından kullanılabilir olmasını sağlama pratiğidir. Bilgisayar mühendisliği alanında, özellikle web ve yazılım erişilebilirliği önemlidir.

*   **WCAG (Web Content Accessibility Guidelines):**
    *   W3C'nin Web Accessibility Initiative (WAI) tarafından geliştirilen, web içeriğini engelli bireyler için daha erişilebilir hale getirme konusunda geniş bir yelpazede öneriler sunan bir kılavuzdur.
    *   Birçok ülkede yasal olarak referans alınan bir standart haline gelmiştir.
    *   **Dört Temel İlke (POUR):**
        1.  **Algılanabilir (Perceivable):** Bilgi ve kullanıcı arayüzü bileşenleri, kullanıcıların algılayabileceği şekillerde sunulmalıdır (örn: metin alternatifleri, altyazılar, renk kontrastı).
        2.  **Çalıştırılabilir (Operable):** Kullanıcı arayüzü bileşenleri ve gezinme çalıştırılabilir olmalıdır (örn: klavye erişilebilirliği, yeterli zaman, nöbet riskini azaltma).
        3.  **Anlaşılabilir (Understandable):** Bilgi ve kullanıcı arayüzünün çalışması anlaşılabilir olmalıdır (örn: okunabilir metin, tahmin edilebilir sayfalar, giriş yardımı).
        4.  **Sağlam (Robust):** İçerik, yardımcı teknolojiler de dahil olmak üzere çeşitli kullanıcı aracıları (tarayıcılar vb.) tarafından güvenilir bir şekilde yorumlanabilecek kadar sağlam olmalıdır (örn: standartlara uygun HTML).
    *   **Başarı Kriterleri (Success Criteria):** Her ilke altında, A (en düşük), AA (orta) ve AAA (en yüksek) olmak üzere üç uygunluk seviyesinde test edilebilir başarı kriterleri bulunur. Çoğu yasal düzenleme AA seviyesini hedefler.
    *   **Sürümleri:** WCAG 2.0, WCAG 2.1, WCAG 2.2 (en son sürüm).

*   **Diğer Erişilebilirlik Standartları ve Kılavuzları:**
    *   **Section 508 (ABD):** ABD'de federal kurumların elektronik ve bilgi teknolojilerini engelli bireyler için erişilebilir hale getirmesini gerektiren bir yasadır. Genellikle WCAG'ye atıfta bulunur.
    *   **EN 301 549 (Avrupa):** Avrupa'da kamu sektörü web siteleri ve mobil uygulamaları için erişilebilirlik gereksinimlerini tanımlayan bir standarttır. Bu da WCAG'ye dayanır.
    *   **ARIA (Accessible Rich Internet Applications - WAI-ARIA):** Dinamik içerik ve gelişmiş kullanıcı arayüzü kontrolleri (widget'lar) ile web uygulamalarını daha erişilebilir hale getirmek için kullanılan bir W3C spesifikasyonudur. HTML'e ek semantik bilgiler ekler.

### 5.7. Proje Yönetimi Standartları ve Metodolojileri

Büyük veya küçük ölçekli mühendislik projelerinin (yazılım dahil) başarılı bir şekilde tamamlanması için etkili proje yönetimi kritik öneme sahiptir. Proje yönetimi standartları ve metodolojileri, projelerin planlanması, yürütülmesi, izlenmesi ve kontrol edilmesi için çerçeveler ve en iyi uygulamalar sunar.

*   **PMBOK® Guide (A Guide to the Project Management Body of Knowledge):**
    *   Project Management Institute (PMI) tarafından yayınlanan, proje yönetimi için genel kabul görmüş iyi uygulamaları ve süreçleri tanımlayan bir kılavuzdur.
    *   Proje yönetimi süreçlerini 5 Süreç Grubuna (Başlatma, Planlama, Yürütme, İzleme ve Kontrol, Kapanış) ve 10 Bilgi Alanına (Entegrasyon, Kapsam, Zaman, Maliyet, Kalite, Kaynak, İletişim, Risk, Tedarik, Paydaş Yönetimi) ayırır.
    *   PMI'nin PMP (Project Management Professional) sertifikasyonu için temel kaynaktır.
    *   Bir standarttan ziyade bir "kılavuz" olarak tanımlanır, ancak proje yönetimi alanında fiili bir standart etkisi yaratmıştır.

*   **PRINCE2 (PRojects IN Controlled Environments):**
    *   Özellikle Birleşik Krallık hükümeti tarafından ve dünya çapında yaygın olarak kullanılan süreç tabanlı bir proje yönetimi metodolojisidir.
    *   7 Prensip, 7 Tema ve 7 Süreç üzerine kuruludur.
    *   Projenin gerekçelendirilmesine (business justification), tanımlanmış rollere ve sorumluluklara, aşamalı yönetime ve esnekliğe odaklanır.

*   **ISO 21500: Guidance on project management:**
    *   Proje yönetimi kavramları ve süreçleri hakkında üst düzey bir kılavuz sunan bir ISO standardıdır. PMBOK Guide ve PRINCE2 gibi mevcut en iyi uygulamalarla uyumludur.
    *   Daha sonra ISO 21502 (Project, programme and portfolio management — Guidance on project management) ile güncellenmiştir.

*   **Çevik (Agile) Proje Yönetimi:**
    *   (Modül 3.1'de bahsedildiği gibi) Scrum, Kanban gibi çevik metodolojiler, özellikle yazılım geliştirme projelerinde yaygın olarak kullanılan yinelemeli ve artımlı yaklaşımlardır.
    *   Değişime hızlı adaptasyon, müşteri işbirliği ve sürekli değer sunumuna odaklanırlar.
    *   Bu metodolojiler kendi içlerinde belirli roller, etkinlikler ve artefaktlar tanımlayarak bir tür fiili standart oluştururlar.

### 5.8. Etik Standartlar ve Mesleki Davranış Kuralları

Mühendisler, çalışmalarıyla toplum üzerinde önemli bir etkiye sahiptir. Bu nedenle, mesleklerini icra ederken yüksek etik standartlara ve profesyonel davranış kurallarına uymaları beklenir. Bu kurallar, mühendislerin kamu yararını, müşterilerinin ve işverenlerinin çıkarlarını ve mesleğin itibarını korumalarına yardımcı olur.

*   **ACM/IEEE-CS Software Engineering Code of Ethics and Professional Practice:**
    *   Association for Computing Machinery (ACM) ve IEEE Computer Society (IEEE-CS) tarafından ortaklaşa geliştirilen, yazılım mühendisleri için bir etik ve profesyonel davranış kurallarıdır.
    *   Sekiz temel prensibe dayanır:
        1.  **KAMU (Public):** Yazılım mühendisleri, eylemlerinde sürekli olarak kamu yararına uygun hareket etmelidir.
        2.  **MÜŞTERİ VE İŞVEREN (Client and Employer):** Yazılım mühendisleri, kamu yararıyla tutarlı bir şekilde müşterilerinin ve işverenlerinin en iyi çıkarlarına göre hareket etmelidir.
        3.  **ÜRÜN (Product):** Yazılım mühendisleri, ürünlerinin ve ilgili modifikasyonlarının en yüksek profesyonel standartları karşılamasını sağlamalıdır.
        4.  **YARGILAMA (Judgment):** Yazılım mühendisleri, mesleki yargılarında dürüstlük ve bağımsızlığı korumalıdır.
        5.  **YÖNETİM (Management):** Yazılım mühendisi yöneticileri ve liderleri, yazılım geliştirme ve bakımında etik bir yaklaşımı benimsemeli ve teşvik etmelidir.
        6.  **MESLEK (Profession):** Yazılım mühendisleri, kamu yararıyla tutarlı bir şekilde mesleğin bütünlüğünü ve itibarını artırmalıdır.
        7.  **MESLEKTAŞLAR (Colleagues):** Yazılım mühendisleri, meslektaşlarına karşı adil olmalı ve onları desteklemelidir.
        8.  **KENDİ (Self):** Yazılım mühendisleri, mesleklerinin pratiğinde yaşam boyu öğrenmeye katılmalı ve etik bir yaklaşımı teşvik etmelidir.

*   **Diğer Meslek Kuruluşlarının Etik Kuralları:**
    *   Birçok ulusal ve uluslararası mühendislik kuruluşu (örn: NSPE - National Society of Professional Engineers ABD'de, mühendis odaları) kendi üyeleri için benzer etik kurallar ve davranış standartları yayınlar.
    *   Bu kurallar genellikle dürüstlük, yetkinlik, sorumluluk, kamu güvenliği ve çevreye saygı gibi temel değerleri vurgular.

> **Etik İkilemler:** Mühendisler, kariyerleri boyunca çeşitli etik ikilemlerle karşılaşabilirler (örn: güvenlik ve maliyet arasında bir denge kurma, müşteri verilerinin gizliliği, yapay zekanın etik kullanımı). Bu etik kurallar, bu tür durumlarda doğru kararları vermelerine yardımcı olmak için bir rehber görevi görür.

### 5.9. Pratik Senaryo: Yeni Bir Akıllı Cihaz Tasarımı

Bir şirket için yeni bir "akıllı ev güvenlik kamerası" tasarladığınızı varsayalım. Bu cihaz, internete bağlanacak, video kaydı yapacak, kullanıcıların mobil uygulama üzerinden erişebileceği ve belki de diğer akıllı ev cihazlarıyla entegre olabilecektir.

Bu modülde ve önceki modüllerde öğrendiğiniz bilgiler ışığında, bu cihazın tasarımı, geliştirilmesi ve piyasaya sürülmesi sürecinde hangi tür standartları (en az 5 farklı kategori) dikkate almanız gerektiğini ve nedenlerini kısaca açıklayın.

**Örnek Düşünülmesi Gereken Standart Kategorileri:**
1.  Kablosuz Bağlantı Standartları (Neden?)
2.  Veri Güvenliği ve Gizlilik Standartları (Neden? Hangi standartlar akla gelebilir?)
3.  Video Sıkıştırma/Format Standartları (Neden?)
4.  Elektriksel Güvenlik ve EMC Standartları (Neden?)
5.  Yazılım Geliştirme ve Kalite Standartları (Neden?)
6.  API Tasarım Standartları (Mobil uygulama ile iletişim için, neden?)
7.  Erişilebilirlik Standartları (Mobil uygulama için, neden?)

*(Öğrencinin, ilgili standart kategorilerini ve bunların neden önemli olduğunu açıklaması beklenir. Örneğin, Wi-Fi için IEEE 802.11, veri güvenliği için ISO/IEC 27001 veya OWASP pratikleri, video için H.264/H.265, elektriksel güvenlik için IEC standartları vb.)*

---
## Modül 6: Standartların Geleceği ve Kapanış

**(Tahmini Çalışma Süresi: 0.5 Saat)**

Bu son modülde, standartların sürekli evrimini, gelişen teknolojilerin yeni standart ihtiyaçlarını nasıl doğurduğunu ve bu ders boyunca öğrendiklerinizin özetini ele alacağız.

### 6.1. Gelişen Teknolojiler ve Yeni Standart İhtiyaçları

Teknoloji durmaksızın ilerliyor ve her yeni gelişme, beraberinde yeni standartlaşma zorlukları ve fırsatları getiriyor. Standartlar, bu yeni teknolojilerin güvenli, birlikte çalışabilir ve yaygın bir şekilde benimsenmesinde kritik bir rol oynamaya devam edecektir.

*   **Yapay Zeka (Artificial Intelligence - AI) ve Makine Öğrenmesi (Machine Learning - ML):**
    *   **Veri Standartları:** AI/ML modellerinin eğitimi için büyük miktarda kaliteli veriye ihtiyaç vardır. Veri formatları, veri kalitesi, veri etiketleme ve veri paylaşımı için standartlar önemlidir.
    *   **Model Birlikte Çalışabilirliği:** Farklı platformlarda ve araçlarda geliştirilen AI modellerinin birbirleriyle ve diğer sistemlerle çalışabilmesi için standartlara (örn: ONNX - Open Neural Network Exchange) ihtiyaç vardır.
    *   **Etik ve Güvenilirlik Standartları:** AI sistemlerinin adil (fairness), şeffaf (transparency), açıklanabilir (explainability), güvenli ve hesap verebilir (accountability) olması için etik kurallar ve teknik standartlar geliştirilmektedir (örn: ISO/IEC JTC 1/SC 42 yapay zeka standartları üzerinde çalışmaktadır).
    *   **Performans ve Test Standartları:** AI modellerinin performansını ve doğruluğunu ölçmek için standartlaştırılmış metrikler ve test prosedürleri gereklidir.

*   **Nesnelerin İnterneti (IoT) ve Akıllı Şehirler:**
    *   (Modül 5.2'de bahsedildiği gibi) Milyarlarca cihazın birbirine bağlanması, cihazlar arası iletişim, veri formatları, güvenlik ve gizlilik için daha kapsamlı ve uyumlu standartlara olan ihtiyacı artırmaktadır.
    *   Farklı üreticilerin IoT platformlarının ve akıllı şehir uygulamalarının birlikte çalışabilirliği (interoperability) büyük bir zorluktur ve standartlar bu konuda kilit rol oynar.

*   **5G/6G ve Ötesi Mobil İletişim:**
    *   Her yeni nesil mobil iletişim teknolojisi (3GPP standartları gibi), daha yüksek hızlar, daha düşük gecikme süreleri ve yeni kullanım senaryoları (örn: otonom araçlar, artırılmış gerçeklik) sunar. Bu teknolojilerin küresel ölçekte çalışabilmesi için uluslararası standartlar hayati öneme sahiptir.

*   **Blokzincir (Blockchain) ve Dağıtık Defter Teknolojileri (DLT):**
    *   Blokzincir, güvenli ve şeffaf işlemler için potansiyel sunar. Farklı blokzincir platformlarının birlikte çalışabilirliği, akıllı sözleşme standartları, kimlik yönetimi ve güvenlik için standartlaşma çabaları devam etmektedir (örn: ISO/TC 307).

*   **Bulut Bilişim (Cloud Computing):**
    *   Hizmet (IaaS, PaaS, SaaS) tanımları, API standartları, veri taşınabilirliği, güvenlik ve birlikte çalışabilirlik için standartlar (örn: ISO/IEC 17788/17789, ISO/IEC 27017) bulut bilişimin yaygınlaşmasına yardımcı olmaktadır.

*   **Siber Güvenlik:**
    *   Siber tehditler sürekli geliştikçe, yeni güvenlik standartları, en iyi uygulamalar ve tehdit bilgisi paylaşım formatları (örn: STIX/TAXII) geliştirilmeye devam edecektir. Kuantum bilişimin kriptografiye etkileri gibi gelecekteki zorluklar için de yeni standartlar gerekecektir.

*   **Sürdürülebilirlik ve Yeşil Teknolojiler:**
    *   Elektronik cihazların enerji verimliliği (örn: Energy Star), e-atık yönetimi, ürünlerin çevresel etkilerinin ölçülmesi ve raporlanması gibi konularda standartlar giderek daha önemli hale gelmektedir.

Bu alanlardaki standartlaşma çabaları genellikle uluslararası standart kuruluşları (ISO, IEC, ITU, IEEE), endüstri konsorsiyumları ve açık kaynak toplulukları tarafından yürütülmektedir.

### 6.2. Standartların Sürekli Gelişimi

Standartlar statik belgeler değildir. Teknolojik ilerlemelere, pazar ihtiyaçlarına ve yeni bilgilere ayak uydurmak için sürekli olarak gözden geçirilmeli, güncellenmeli veya yenileri geliştirilmelidir.

*   **Gözden Geçirme Döngüleri:** Çoğu standart kuruluşu, yayınladıkları standartları düzenli aralıklarla (genellikle 3-5 yıl) gözden geçirir.
*   **Geri Bildirim Mekanizmaları:** Kullanıcılardan ve endüstriden gelen geri bildirimler, standartların iyileştirilmesinde önemli bir rol oynar.
*   **Yeni Çalışma Alanları:** Yeni teknolojiler ortaya çıktıkça, standart kuruluşları bu alanlarda yeni teknik komiteler veya çalışma grupları oluşturur.
*   **Uyum ve Evrim:** Standartlar, bazen birbirleriyle rekabet edebilir, ancak zamanla ya biri daha baskın hale gelir ya da farklı standartlar belirli nişlere odaklanır veya birbirleriyle uyumlu hale getirilmeye çalışılır.

Bir mühendis olarak, alanınızdaki güncel standartları takip etmek ve bu standartların gelişim süreçlerine (mümkünse) katkıda bulunmak, mesleki gelişiminiz için önemlidir.

### 6.3. Dersin Özeti ve Temel Kazanımlar

Bu 8 saatlik kendi kendine çalışma materyali boyunca "Mühendislik Uygulamalarında Kullanılan Standartlar" konusunu kapsamlı bir şekilde ele aldık. İşte öğrendiğimiz temel konular ve elde ettiğiniz kazanımlar:

*   **Standartların Temelleri:** Standartların ne olduğunu, neden gerekli olduğunu, tarihsel gelişimini, mühendislikteki rolünü, türlerini (de jure, de facto, açık vb.) ve seviyelerini (uluslararası, ulusal vb.) öğrendiniz. Standartların faydalarını ve zorluklarını tartıştık.
*   **Standart Kuruluşları ve Süreçleri:** ISO, IEC, ITU, IEEE gibi önemli uluslararası standart kuruluşlarını ve TSE gibi ulusal kuruluşları tanıdınız. Standart geliştirme sürecinin adımlarını ve standartlara uyum ile sertifikasyonun ne anlama geldiğini kavradınız.
*   **Yazılım Standartları:** Yazılım Geliştirme Yaşam Döngüsü (SDLC) modelleri ve standartları (ISO/IEC 12207), kodlama standartları (PEP 8 gibi), yazılım kalite standartları (ISO/IEC 25010), test standartları (ISO/IEC/IEEE 29119), dokümantasyon standartları, sürüm kontrol sistemleri ve API tasarım standartları (REST, OpenAPI) hakkında detaylı bilgi edindiniz.
*   **Ağ ve İletişim Standartları:** OSI Referans Modeli ve TCP/IP Protokol Ailesi'ni, Ethernet (IEEE 802.3), Wi-Fi (IEEE 802.11), IP, TCP, UDP gibi temel ağ protokollerini ve HTTP, DNS, FTP gibi uygulama katmanı protokollerini incelediniz. JSON ve XML gibi veri değişim formatlarını öğrendiniz.
*   **Donanım, Güvenlik ve Diğer Standartlar:** USB, HDMI, PCIe gibi donanım arayüz standartlarını, MQTT, CoAP gibi IoT iletişim protokollerini, bilgi güvenliği yönetim sistemi standartlarını (ISO/IEC 27001), web uygulama güvenliği kılavuzlarını (OWASP Top 10), kriptografi standartlarını (AES, RSA, SHA), erişilebilirlik standartlarını (WCAG) ve proje yönetimi (PMBOK, PRINCE2) ile etik standartlarını (ACM/IEEE-CS Code of Ethics) ele aldık.
*   **Standartların Geleceği:** Gelişen teknolojilerin (AI, IoT, 5G, Blokzincir) yeni standart ihtiyaçlarını nasıl doğurduğunu ve standartların sürekli evrimini tartıştık.

Bu dersi tamamlayarak, bir bilgisayar mühendisi olarak kariyeriniz boyunca karşılaşacağınız ve kullanacağınız standartlar hakkında sağlam bir temel oluşturdunuz. Standartların sadece uyulması gereken kurallar olmadığını, aynı zamanda kaliteyi, güvenliği, birlikte çalışabilirliği ve inovasyonu destekleyen değerli araçlar olduğunu anladınız.

### 6.4. Kendi Kendine Değerlendirme Soruları

Bu dersin temel kavramlarını ne kadar anladığınızı ölçmek için aşağıdaki soruları yanıtlamaya çalışın:

1.  Bir mühendislik projesinde standart kullanmanın en önemli üç faydası nedir? Kısaca açıklayınız.
2.  "De facto" bir standart ile "de jure" bir standart arasındaki farkı birer örnekle açıklayınız. Bilgisayar mühendisliği alanından örnekler veriniz.
3.  ISO, IEEE ve IETF (RFC'ler aracılığıyla) tarafından geliştirilen standartların odak alanları nelerdir? Her birine birer örnek standart veriniz.
4.  Bir yazılım geliştirme projesinde, neden hem kodlama standartlarına hem de test standartlarına ihtiyaç duyulur? Bu standartların projenin başarısına etkileri nelerdir?
5.  RESTful bir API tasarlarken dikkat edilmesi gereken temel ilkeler nelerdir? OpenAPI Specification bu süreçte nasıl bir rol oynar?
6.  Bir şirketin ISO/IEC 27001 sertifikası almasının potansiyel faydaları nelerdir? Bu süreçte hangi adımlar izlenir?
7.  OWASP Top 10 nedir ve web uygulaması geliştiricileri için neden önemlidir?
8.  Yapay zeka teknolojilerinin yaygınlaşmasıyla birlikte hangi alanlarda yeni standartlara ihtiyaç duyulmaktadır? Birkaç örnek veriniz.
9.  Bir ürünün "CE" işareti taşıması ne anlama gelir ve hangi tür standartlarla ilgilidir?
10. Bir yazılım mühendisi olarak ACM/IEEE-CS Etik Kuralları'nın "Kamu Yararı" ilkesini kendi projelerinizde nasıl uygulayabilirsiniz? Somut bir örnek düşünün.

**Tebrikler! "Mühendislik Uygulamalarında Kullanılan Standartlar" dersini başarıyla tamamladınız.**

Bu materyalde edindiğiniz bilgilerin, gelecekteki akademik ve profesyonel çalışmalarınızda size yol göstereceğine inanıyoruz. Standartlar dünyası dinamiktir; bu nedenle öğrenmeye ve güncel kalmaya devam etmeniz, başarılı bir mühendis olmanız için kritik öneme sahiptir.

Başarılar dileriz!
