5 Ekim 2025 Pazar

TBML306-Yazılım mühendisliği

 1- Yazılım nedir?

Yazılım bir ihtiyacı karşılayan programlar+veriler+yapılandırma+dokümantasyonun bütünüdür.


2- Yazılım mühendisliği nedir?

Yazılımı sistematik, ölçülebilir biçimde geliştirme, işletme ve bakım disiplinidir.


3- Yazılım mühendisliğinin bilgisayar biliminden ne farkı vardır?

Bilgisayar bilimi kuram ve genel tekniklerle ilgilenir. Yazılım mühendisliği bu bilgiyi ürünleştirir.


4- Yazılım mühendisliği ile sistem mühendisliği arasında ne fark vardır?

Sistem mühendisliği, insan, donanım, yazılım ve sürecin yaşam çevrimi ile ilgilidir. Yazılım mühendisliği yazılımın derinliği ile ilgilenir.


5- Yazılım süreci nedir?

Gereksinim → analiz/tasarım → geliştirme → test → dağıtım/işletme → bakım döngüsüne yazılım süreci denir.


6- Yazılım süreç modeli nedir?

Yazılım süreç modeli, yazılım geliştirme, bakım ve yönetimi için gerekli tüm görevleri, adımları ve aşamaları tanımlayan çerçevedir. Bu model, bir yazılım projesini baştan sona yönetmek için yol haritası sunar. Başlıca örnekleri Şelale, Çevik (Agile) ve V-Model'dir.


7- Requirement nedir?

sistemin yapması gereken doğrulanabilir ifade.


8-V&V nedir?

V&V doğrulama ve geçerlemedir:

doğrulama: doğru yaptık mı?

geçerleme: doğru şeyi yaptık mı?

 

9- Mimari tasarım denir?

MİMARİ TASARIM. Mimari tasarım, bir yazılım sisteminin genel yapısını ve ana bileşenlerini belirleme sürecini ifade eder. 


10- Mimari tasarımın amaçları nelerdir?

sistemin yapısını tanımlamak

kalite niteliklerini sağlamak

iletişimi kolaylaştırmak

geliştirme sürecini yönlendirmek


11- Teknik borç nedir?

Teknik borç hız için alınan kalite borcudur, faizi bakım maliyeti ve hata oranı olarak geri döner.


12- Yazılım mühendisliğinde ana test yüzeyleri nelerdir?

birim testi

entegrasyon testi

sistem testi

kabul testi


13- Agilenin popüler olmasının sebepleri nelerdir?

değişen gereksinime uyum

erken değer

geri bildirim döngüsünün kısalığı


14- Temel üçlü nedir?

Temel üçlü UML'in en sık kullanılan ve en temel diyagramlarını ifade eder: use-caseclasssequence


15- SOLID nedir?

single responsibility

open/closed principle

Liskov substitution

interface segregation

dependency inversion

 


16- Yüksek bağlaşıklık nedir?

Bir modül içindeki elemanlar (fonksiyonlar, sınıflar) güçlü bir şekilde birbiriyle ilişkili ise yüksek bağlaşıklık vardır.


17- Düşük bağlayıcılık nedir?

Modüller ve sınıflar arasındaki bağımlılıkların minimumda tutulmasına düşük bağlayıcılılık denir.


18- DRY nedir?

Don't repeat yourself.


19- KISS nedir?

Keep it simple, stupid.


20- YAGNI nedir?

You aren't gonna need it.


 21. En yaygın kullanılan yazılım modelleme dili hangisidir?

UML

22. Bilgi sisteminin bileşenleri nelerdir?

donanım

yazılım

veri

insan

süreç

23. En çok maliyet gerektiren sistem bileşeni hangisidir?

yazılım


24) ... bilgi sisteminin soyut ve işlevsel bileşenidir

yazılım

25) Sistem yaşam çevrimi nedir?

Sistem yaşam çevrimi, bir yazılımın ya da bilgi sisteminin fikir aşamasından başlayıp kullanımdan kalkana kadar geçen tüm süreçleri kapsayan modeldir. Ana evreleri  şunlardır:

Planlama

Analiz

Tasarım

Kodlama

Test

Kurulum ve bakım

Bir e-ticaret sitesi için ana evreler:

PLANLAMA. Hangi ürünlerin satılacağı, hedef kitlenin kim olduğu belirlenir.

ANALİZ. Müşterilerin ürünleri nasıl arayacağı, sepetine nasıl ekleyeceği gibi gereksinimler toplanır.

TASARIM. Sitenin ana sayfası, ürün sayfaları ve ödeme sayfasının taslakları oluşturulur.

KODLAMA. Front-end ve back-end kodları yazılarak site işlevsel hale getirilir.

TEST. Sitedeki tüm bağlantıların çalıştığı, ödeme sisteminde hata olmadığı kontrol edilir.

KURULUM VE BAKIM. Site yayına alınır ve sonrasında kullanıcı geri bildirimlerine göre hatalar düzeltilir veya yeni özellikler eklenir.


26) Front-end nedir?
Bir web sitesinin kullanıcı ile doğrudan etkileşime giren kısmına front-end denir.

27) Back-end nedir?
Bir web sitesinin arka planda çalışan kısmına back-end denir.

1950-1960 yılları arasında geliştirilen yazılımların temel özellikleri nelerdir?
Bilgisayarların doğduğu bu yıllarda üretilen yazılımlar temel olarak, yığınsal kökenli biçimde geliştirilmişti. Ayrıca bugünün bilinen anlamında ürün tarzında değil bütünüyle kendisi için yapılan kuruluşa özel biçimde geliştirme yapılmaktaydı.

Yazılımın temel amaçları nelerdir?
Veriyi bilgiye dönüştürmek.
İnsan hatasına açık işleri makineye devretmek.
Fiziksel sistemleri kontrol etmek.
İnsan-insan ve sistem-sistem etkileşimi sağlamak.
Bilgiyi kalıcı, güvenli ve hızlı erişilebilir tutmak.
Seçenekler arasından en iyiyi seçmek.
Karmaşıklığı gizlemek.
Güvenlik-kritik sistemlerde riski azaltmak.
Süreçleri senkronize etmek.
Kullanıcıların hedefe hızlı ve hatasız ulaşmasını sağlamak.
İçerik üretmek.
Tasarım yapmak.

Yazılım üretimi, bir ... disiplini gerektirir. 
mühendislik 

Yazılımın insan bileşeninin boyutları nelerdir?
yazılım geliştirenler
yazılım kullananlar

Yazılımın ana çıktısı nedir?
Yazılımın ana çıktısı bilgisayar programıdır.

Yazılım modelleme dili yazılım sistemi geliştirmede kullanılan ... bir araçtır.
görsel

İyi bir yazılımın özellikleri nelerdir?
İyi yazılım kullanıcıya gereken fonksiyonelliği ve performansı sağlamalı ve bakımı yapılabilir, güvenilebilir ve kullanılabilir olmalıdır.

Temel yazılım mühendisliği etkinlikleri nelerdir?
yazılım spesifikasyonu
yazılım geliştirme
yazılım doğrulama
yazılımın evrimi

Yazılım mühendisliği ile sistem mühendisliği arasında ne fark vardır?
Sistem mühendisliği donanım, yazılım ve süreç mühendisliği dahil olmak üzere bilgisayar tabanlı sistem geliştirmenin tüm yönleri ile ilgilenir. Yazılım mühendisliği bu daha genel sürecin parçasıdır.

Yazılım mühendisliği ile ilgili temel zorluklar nelerdir?
artan çeşitlilikle başa çıkma
daha kısa teslim süresi talepleri ve 
güvenilir yazılım geliştirme

Yazılım mühendisliğinin maliyetleri nelerdir?
Yazılım maliyetlerinin kabaca %60'ı geliştirme maliyetleridir, %40'ı sınama maliyetleridir. Özel ısmarlama yazılım için evrim maliyetleri genellikle geliştirme maliyetlerini aşar.

En iyi yazılım mühendisliği teknikleri ve yöntemleri nelerdir?
Tüm yazılım projelerinin profesyonel olarak yönetilmesi ve geliştirilmesi gerekir ama farklı sistem türleri için farklı teknikler uygundur. Örneğin oyunlar her zaman bir dizi prototip kullanılarak geliştirilmeliyken, hayati tehlike arz eden kontrol sistemleri tam ve analiz edilebilir bir spesifikasyonun geliştirilmesini gerektirirler. Her şey için iyi olan yöntemler ve teknikler yoktur.

İnternet yazılım mühendisliğinde ne değişiklik yapmıştır?
İnternet sadece çok büyük, çok dağıtık servis-tabanlı sistemlerin geliştirilmesine yol açmamıştır, aynı zamanda yazılımın ekonomisini değiştiren mobil cihazlar için bir uygulama (app) endüstrisi yaratılmasını desteklemiştir.

 (1) Mühendislik nedir?

-Mühendislik, doğadaki maddenin ve enerji kaynaklarının insanların kullanımı için yararlı hale getirilmesi için bilimsel ve matematiksel prensiplerin uygulanmasıdır.

(2) Yazılım mühendisliği nedir?

-Yazılım geliştirmek, çalıştırma ve devam ettirmek için sistematik disiplinli ölçülebilir yaklaşımın uygulanmasına yazılım mühendisliği denir.

(3) Yazılım projelerindeki başarısızlıklar daha çok neden kaynaklanmaktadır?

-Yazılım projelerindeki başarısızlıklar daha çok başarısız proje yönetiminden kaynaklanmaktadır.

Bir müşteri için geliştirilen profesyonel yazılımın niçin sadece geliştirilen ve teslim edilen programlar olmadığını açıklayınız.

Profesyonel yazılım, sadece çalıştırılabilir koddan (programlardan) ibaret değildir. Müşteri için geliştirilen yazılım, bir bütün olarak bir yazılım sistemini temsil eder ve bu sistem aşağıdaki bileşenleri de içerir:

Gereksinimler: Yazılımın ne yapacağını belirten dokümanlar (kullanıcı ve sistem gereksinimleri).

Tasarım Modelleri: Yazılımın mimarisi, yapısı ve bileşenlerinin nasıl çalıştığını açıklayan tasarımlar.

Test Planları ve Raporları: Yazılımın doğruluğunu ve kalitesini gösteren test dokümanları.

Kullanım Kılavuzları: Kullanıcıların ve sistem operatörlerinin yazılımı nasıl kullanacağını açıklayan materyaller.

Kurulum/Yapılandırma Dosyaları: Yazılımın farklı ortamlara kurulması ve yapılandırılması için gerekli dosyalar.

Sürüm Kontrol Bilgileri: Yazılımın geliştirilmesi sırasında yapılan değişikliklerin kaydı ve yönetimi.

Bu ek bileşenler olmadan yazılımın doğru bir şekilde anlaşılması, kullanılması, sürdürülmesi ve geliştirilmesi mümkün olmaz. Müşteri, sadece programı değil, bu programın nasıl çalıştığını, ne yaptığını ve nasıl destekleneceğini de bilmek ister.

Genel özellikli yazılım ürünü geliştirme ile ısmarlama yazılım geliştirme arasındaki en önemli fark nedir? Genel amaçlı yazılım kullanıcıları için pratikte bu ne demektir?

En Önemli Fark:

  • Genel Özellikli Ürün Yazılımı: Özellikleri, yazılım geliştiricisi tarafından belirlenir ve geniş bir pazara hitap eder.

  • Ismarlama (Müşteriye Özel) Yazılım: Özellikleri, müşteri tarafından belirlenir ve belirli bir organizasyonun veya kullanıcının özel ihtiyaçlarını karşılar.

Genel Amaçlı Yazılım Kullanıcıları İçin Pratik Sonuçları:

  1. Kontrol Eksikliği: Kullanıcılar, yazılımın spesifikasyonları üzerinde doğrudan bir kontrole sahip değillerdir. İstekleri, ancak geliştiricinin gelecekteki sürümlere eklemeyi kabul etmesi durumunda yerine getirilebilir.

  2. Uzlaşma İhtiyacı: Kullanıcılar, yazılımın sağladığı özelliklerle kendi iş süreçlerini veya ihtiyaçlarını uzlaştırmak (adaptasyon sağlamak) zorundadırlar. Yazılım, onların iş akışına tam olarak uymayabilir.

Tüm profesyonel yazılımların özellikle sahip olması gereken dört önemli özellik nedir? Bazen önemli olabilecek dört diğer özellik öneriniz.

Tüm Profesyonel Yazılımların Sahip Olması Gereken Dört Önemli Özellik (4 Temel Öznitelik):

1.      Sürdürülebilirlik (Maintainability): Yazılımın hataları düzeltecek, yeni gereksinimlere uyum sağlayacak ve gelecekteki çevresel değişikliklere adapte olacak şekilde kolayca değiştirilebilir olması.

2.      Güvenilirlik ve Güvenlik (Dependability and Security):

o    Güvenilirlik (Reliability): Yazılımın kullanıcı beklentilerine uygun olarak hizmet sunması ve makul bir hata oranıyla çalışması.

o    Güvenlik (Security): Yazılımın kötü niyetli veya kazara yapılan saldırılara ve yetkisiz erişime karşı dayanıklı olması.

3.      Verimlilik (Efficiency): Yazılımın bellek, işlem gücü ve enerji gibi sistem kaynaklarını israf etmeden, kabul edilebilir bir performansla çalışması.

4.      Kullanılabilirlik (Usability): Yazılımın hedef kullanıcıları tarafından kolayca öğrenilebilmesi, anlaşılabilmesi ve kullanılabilmesi.

Bazen Önemli Olabilecek Dört Diğer Özellik:

1.      Taşınabilirlik (Portability): Yazılımın, minimum değişiklikle farklı işletim sistemlerine veya donanım platformlarına taşınabilme yeteneği.

2.      Yeniden Kullanılabilirlik (Reusability): Yazılım bileşenlerinin veya kodlarının, gelecekteki farklı sistemlerin geliştirilmesinde tekrar kullanılabilme yeteneği.

3.      Uyumluluk (Compatibility): Yazılımın diğer sistemlerle veya eski sürümlerle sorunsuz bir şekilde etkileşim kurabilme yeteneği.

4.      Esneklik/Ölçeklenebilirlik (Scalability): Artan kullanıcı sayısına, veri hacmine veya iş yüküne cevap verebilmek için sistemin performansının kolayca artırılabilme yeteneği.

Heterojenlik, işteki sosyal hayattaki değişiklikler ve güven ve güvenlik problemlerinden başka, yazılım mühendisliğinin 21. yüzyılda karşılaşması beklenen diğer problemler ve güçlükler neler olabilir?

Sommerville, 21. yüzyıl yazılım mühendisliğinin temel zorlukları olarak Heterojenlik (farklı teknolojilerin entegrasyonu), Sosyal ve İş Değişiklikleri (hızlı adaptasyon ihtiyacı) ve Güven/Güvenlik sorunlarını belirtir. Bunlar dışında öne çıkan zorluklar şunlar olabilir:

1.      Büyük Veri (Big Data) ve Analitik: Büyük hacimli veriyi işleyebilen, analiz edebilen ve anlamlı çıkarımlar sunabilen yazılımların geliştirilmesi.

2.      Akıllı Sistemler ve Yapay Zeka (AI/ML): Öğrenen, tahmin eden ve otonom kararlar veren karmaşık sistemlerin gereksinimlerinin belirlenmesi, test edilmesi ve güvenilirliklerinin sağlanması.

3.      Sistemlerin Sürekli Evrimi: Yazılım sistemlerinin sürekli "hizmet olarak" sunulması (SaaS) ve kesintisiz, hızlı güncellemelerle evrim geçirmesi gerekliliği (DevOps kültürü).

4.      Kritik Sistemlerin Karmaşıklığı ve Güvenirliği: Hayati risk taşıyan sistemlerin (tıbbi cihazlar, otonom araçlar, endüstriyel kontrol) hatasız ve yüksek güvenilirlikle tasarlanması.

5.      Enerji Verimliliği ve Sürdürülebilirlik: Yazılım sistemlerinin artan enerji tüketimini azaltacak, çevre dostu (yeşil bilişim) çözümlerin geliştirilmesi.

6.      Uç Bilişim (Edge Computing) ve IoT: Milyarlarca küçük, dağıtık ve kısıtlı kaynaklara sahip cihazdan oluşan sistemlerin yönetimi ve güvenliği.

İyi mühendislik uygulamalarının omurgasını oluşturan ilkeler nelerdir?
  • Süreç (Process): Bir geliştirme sürecinin (şelale, çevik, vb.) tanımlanması, geliştirmenin organize, disiplinli ve öngörülebilir bir şekilde ilerlemesini sağlar. Rastgele bir yaklaşım yerine sistematik bir yaklaşım benimsenir, bu da hataları azaltır.
  • Güvenilirlik (Dependability/Reliability): Bir yazılımın hatasız çalışması ve kullanıcılarına güvenilir hizmet sunması, türü ne olursa olsun her sistem için temel bir beklentidir. Bir eğlence uygulamasının çökmesi sadece can sıkıcıyken, bir kontrol sisteminin çökmesi felaketle sonuçlanabilir. Bu ilke, tüm sistemlerde riski yönetmeye yarar.
  • Gereksinim Yönetimi (Requirements Management): Ne geliştirildiğini ve müşteri/kullanıcı beklentilerini tanımlar. Gereksinimlerin doğru anlaşılması, izlenmesi ve yönetilmesi, hatalı veya kullanışsız bir ürün geliştirme riskini ortadan kaldırır. Bu, herhangi bir projenin başarısının anahtarıdır.
  • Yeniden Kullanım (Reuse): Yeni yazılımların sıfırdan oluşturulması yerine, mevcut kanıtlanmış bileşenlerin veya kodların kullanılması anlamına gelir. Bu, geliştirme süresini azaltır, maliyeti düşürür ve zaten test edilmiş bileşenler kullanıldığı için güvenilirliği artırır.

Web'in evrensel kullanımının yazılım sistemlerini ve yazılım sistem mühendisliğini nasıl değiştirdiğini açıklayınız.

Web'in evrensel kullanımı (genellikle Web 2.0 ve sonrası), yazılım sistemlerinin ve mühendisliğinin doğasını kökten değiştirmiştir:

1.      Dağıtık Hesaplama (Distributed Computing) Standart Hale Geldi: Yazılımlar tek bir bilgisayarda çalışmak yerine, internet üzerinden birbirine bağlı birçok sunucu ve istemci (tarayıcı, mobil cihaz) üzerinde çalışır hale geldi. Bu, ağ ve güvenlik mühendisliğinin önemini artırdı.

2.      Hizmet Odaklı Mimari (SOA) ve Mikrohizmetler: Web, yazılımların hizmetler (API'lar) aracılığıyla iletişim kurmasına olanak sağladı. Bu, daha büyük sistemlerin küçük, bağımsız ve farklı teknolojilerle geliştirilmiş parçalardan (mikrohizmetler) oluşmasına yol açtı.

3.      Hızlı Yayın Döngüleri (Çevik/DevOps): Geleneksel uzun yayın döngüleri yerine, Web uygulamaları haftalarca, hatta günde birden fazla kez güncellenebilir hale geldi. Bu, Çevik (Agile) ve DevOps metodolojilerini standart hale getirdi.

4.      Kullanıcı Deneyimi (UX) Önceliği: Web uygulamalarında arayüz, işlevsellik kadar kritik hale geldi. Yazılım sistem mühendisliği, teknik gereksinimlerin yanı sıra kullanıcı etkileşimi ve arayüz tasarımına büyük önem vermeye başladı.

5.      Ölçeklenebilirlik Zorunluluğu: Milyonlarca kullanıcıya hizmet verebilme gerekliliği, yazılım tasarımında yatay ölçeklenebilirlik ve yük dengeleme gibi mimari yaklaşımları zorunlu kıldı.



Profesyonel mühendisliğin doktorlar ve avukatlar gibi lisanslanıp lisanslanmaması konusunu tartışınız.

Bu, yazılım mühendisliği alanında uzun süredir devam eden önemli bir etik tartışmadır.

Lisanslanmayı Destekleyen Argümanlar (Gereklilik):

1.      Halkın Güvenliği: Birçok yazılım sistemi (tıbbi cihazlar, uçak kontrol sistemleri, enerji santralleri) hayati risk taşır. Lisanslama, yazılım mühendislerinin minimum yeterlilik ve etik standartlarına sahip olmasını sağlayarak halkın güvenliğini korur.

2.      Profesyonel Standart: Lisanslama, yazılım mühendisliğini "yazılımcı" gibi daha geniş terimlerden ayırarak bir meslek olarak itibarını artırır ve sektörde bir minimum kalite standardı oluşturur.

3.      Hesap Verebilirlik: Lisanslı bir mühendis, mesleki hataları ve etik ihlalleri nedeniyle lisansını kaybetme riskiyle karşı karşıya kalır. Bu, daha fazla dikkat ve hesap verebilirlik sağlar.

Lisanslamaya Karşı Argümanlar (Zorluklar ve Gereksizlik):

1.      Alan Çok Hızlı Değişiyor: Yazılım teknolojileri ve araçları o kadar hızlı değişiyor ki, sabit bir sınav ve lisanslama sistemi, hızla güncelliğini yitirecek ve inovasyonu kısıtlayacaktır.

2.      Yazılımın Geniş Kapsamı: Birçok yazılım (eğlence uygulamaları, basit web siteleri) halkın güvenliği için risk taşımaz. Tek bir lisans, bu kadar geniş bir alanı kapsayacak şekilde nasıl tasarlanabilir?

3.      Kim Lisanslayacak?: Lisanslama otoritesini kimin oluşturacağı ve sürdüreceği (devlet, endüstri kuruluşu, vb.) büyük bir zorluktur.

4.      Yeterlilik Kanıtı: Doktorlar ve avukatlar gibi bir "ustalık" anı belirlemek zordur; deneyim ve sürekli öğrenme yazılımda daha önemlidir.


Terörizme karşı koymaya yardımcı olmak için birçok ülkede çok sayıda vatandaşın hareketlerini izleyen bilgisayar sistemleri geliştirdiği veya geliştirmeyi planlandığı tartışılıyor. Tabii ki bunun mahremiyete etkileri var. Bu tür bir sistemin geliştirilmesinde çalışmanın mahremiyete etkilerini tartışınız.

Bir terörle mücadele izleme sistemi üzerinde çalışmak, yazılım mühendisleri için etik bir ikilem yaratır: Ulusal güvenlik ve kamu yararı ile bireysel mahremiyet hakları arasındaki gerilimi yönetmek.

Mahremiyete Etkileri ve Mühendisin Sorumlulukları:

1.      Gözetim Altında Yaşam Korkusu: Sistemin varlığı bile, vatandaşların sürekli izlendiği hissini yaratarak ifade özgürlüğünü kısıtlayabilir ve toplumsal güveni zedeleyebilir.

2.      Yanlış Pozitifler ve Damgalama: Hatalı (yanlış pozitif) sonuçlar nedeniyle masum insanların terörist olarak yanlış etiketlenmesi ve haksız soruşturmalara maruz kalması riski.

3.      Verinin Kötüye Kullanımı: Sistemin, terörle mücadele dışındaki siyasi veya kişisel amaçlarla kötüye kullanılması riski. (Örn: Siyasi muhalifleri izlemek).

4.      Veri Güvenliği: Toplanan devasa hassas kişisel veri havuzunun siber saldırılar veya içeriden tehditlerle ihlal edilme riski.

Mühendisin Etik Sorumlulukları:

·         Veri Minimallendirme: Mühendis, sistemi tasarlarken sadece kesinlikle gerekli olan verinin toplanmasını (ve anonimleştirilmesini/kullanılmamasını) sağlamalıdır.

·         Şeffaflık ve Hesap Verebilirlik: Sistemin karar alma süreçlerinin şeffaf olması (kısmen) ve hata yapıldığında sorumluluk mekanizmalarının tanımlanmış olması için çalışmalıdır.

·         Sınırlı Amaç: Mühendis, yazılımın sadece belirtilen amaç (terörle mücadele) için kullanılmasını sağlayan teknik kısıtlamaların (erişim kontrolü, denetim kaydı) uygulanmasını savunmalıdır.

·         Bağımsızlık ve İtiraz: Mühendis, tasarımdaki bir özelliğin mahremiyeti gereksiz yere ihlal ettiğini veya etik olmadığını düşünüyorsa, bunu açıkça (ve uygun kanallardan) dile getirme ve hatta projeden çekilme hakkını kullanma sorumluluğuna sahiptir (1.9'daki "Yargı" maddesi).


Yazılım geliştirme sürecinin yayınlanmış ilk modeli hangisidir?

Waterfall

Waterfall Modeli nedir?

 Requirements definition (gereksinimlerin tanımlanması)

System and software design (sistem ve yazılım tasarımı)

Programming and unit testing (gerçekleştirme ve birim sınama)

Integration and system testing (bütünleştirme ve sistem sınama)

Operation and maintenance (işletim ve bakım)




EK: YAZILIM TEST MÜHENDİSLİĞİ

Hiç yorum yok:

Yorum Gönder