Yazılım Biliminin Ana Disiplin Sınıflandırılmaları Nasıl Olmalı?

Marlboro Touch

Kilopat
Katılım
15 Aralık 2019
Mesajlar
578
Çözümler
27
Merhabalar, yazılım biliminin tüm ana disiplinlerini uçtan uça kapsayacak şekilde belirlemem gerek ancak bazı sınıflandırmaları yorumlamakta ya da kategorize etmekte güçlük çekiyorum.

Aşağıda yer aldığı üzere kendimce böyle bir yazılım bilimi disiplin sınıflandırması yaptım ve doğru olup olmadığına dair pozitif ve negatif eleştirilere ihtiyacım var, bu benim için gerçekten oldukça önemli ve katkılarınızı bekliyorum. @bitwise ve @TheAny sizler de rehberlik etmek ister misiniz? Teşekkür ederim...

1. Yazılım Geliştirme Disiplini
2. Yazılım Mimarisi ve Tasarımı Disiplini
3. Sistem Entegrasyonu ve API Geliştirme Disiplini
4. Büyük Veri ve Veri Disiplini
5. Yapay Zeka ve Makine Öğrenmesi Disiplini
6. Siber Güvenlik Disiplini
7. Bulut Bilişim ve DevOps Disiplini
8. Robotik ve Otomasyon Disiplini
9. Yazılım Testi ve Kalite Güvencesi Disiplini
10. Gömülü Sistemler ve Donanım Yazılımı Disiplini
11. Kullanıcı Deneyimi ve Arayüz Geliştirme Disiplini
12. Yazılım Yaşam Döngüsü ve Proje Yönetimi Disiplini
13. Bilgi Teknolojileri Operasyonları Disiplini
 
Son düzenleme:
Buna karar vermek cok zor acikcasi. Akademik pencereden bakarsan farkli calisma alanlari ortaya cikiyor; sektorel olarak bakarsan farkli.

Ornegin "Evolutionary computation" mekanizmasi akademik olarak calisilan bir sey, optimizasyon problemleri icin kullaniliyor cunku doga bu algoritmayi canlilari optimize etmek icin milyonlarca yildir kullaniyor. Ama bunu hangi disipline koyarsin?

Cryptography ornegin aslinda matematik ama yazilimdan da ayiramazsin. Copmuter vision, human comp. interaction, compiler theory, bioinformatics vs gibi tam ayrim yapilamayacak cok alan var.

Sektorel olarak bakildiginda liste daha makul hale geliyor bana gore ama belki buna infrastructure ve dizayn gibi alanlar eklenebilir. Bir yazilimin mimari dizaynindan degil de birden fazla yazilimi bir arada tutan mimari dizayndan bahsediyorum. Ornegin JSON gibi formatlama dizaynlari ya da gRPC gibi mesajlasma protokolleri gibi. Bunlar da sektorel ihtiyaclara gore ortaya cikiyor.

Ek olarak 11. madde aslinda muhendislik degil bana gore. Kiymetsiz anlaminda demiyorum ama bilgisayar bilimleriyle direkt baglantisi yok. Sayisal bir mesele degil.

Ben genel olarak dallara ayirmakta cok zorlaniyorum sahsen. Cunku fazlaca ic ice girmis durumda disiplinler arasi calismalar normal olarak ve isimlendirmekte ve kategorize etmekte zorlaniyorum. Cloud computing mesela ayri bir alan gibi duruyor ama ozunde distributed computing. Biraz daha yakindan bakarsan network, concurrency vs her seyden var icinde.

Reverse engineering e bakarsan compiler theory var. Veri yonetimine bakarsan set theory var; isletim sistemleri var, formal methods var.

Yazarken benim bile kafam karisiyor acikcasi :)
Bu liste neden gerekli?
 
Geri dönüşünüz için teşekkürler.

Hocam öncelikle listenin neden gerekli olduğuna değineyim: Bir akademik çalışma öncesi topyekun ön inceleme maksadıyla bunu hazırlıyorum diyebilirim. Tabi yalnızca ön incelemeden ibaret olmayacak çünkü muhatabıma durumu izah ederken de bu hazırlığı karşı tarafa aktarmayı istiyorum, bu sebeple de hiyerarşik bir çerçeve oluşturmaya çalışıyorum.

Aslında aktif olarak sanırım 4-5 gündür falan uğraşıyorum buna. En aktif olarak çalıştığım gün ise bugün, çerçevenin pek çok aşamasını tamamladığımı belirtebilirim; şu an detay veremiyor olsam da tamamıyla gerekli altyapıyı oluşturduğumda dilerseniz sizinle de ne yapmaya çalıştığımı paylaşabilirim.

Yapmış olduğum bu çalışma akademi maksatlı olsa da yapılacak olan inceleme mevcut konjonktürdeki sektörlerin disiplinlerine odaklı. Demek istediğim: Bu sınıflandırmayı oluşturmaya çalışırken ben de tıpkı sizin gibi öncelikle konu bağlamında değerlendirmeye çalıştım ancak karmaşayı gördükten sonra bundan vazgeçip pozisyon bağlamında değerlendirmeye karar verdim. Şimdi bu bağlam biraz olsun daha istikrarlı gidiyor ancak bu sefer de multi disipliner pozisyonlar ortaya çıkıyor ve incelemesini yaptığım pozisyonu hangi disipline entegre edeceğimi şaşırıyorum. Mesela "API Developer" pozisyonundan gideyim. Bu pozisyonun değerlendirmelerini tamamladım ancak yukarıda oluşturduğum 13 maddelik disiplin sıralamasında bunu ben "Yazılım Geliştirme Disiplini" isimli başlık çatısı altına mı yoksa "Sistem Entegrasyonu ve API Geliştirme Disiplini" başlık çatısı altına mı yerleştirmeliyim emin olamıyorum. Ayrıca bu yalnızca 1 örnek 3-4 gündür vakit harcamamın sebebi de tam olarak bu ve bunun gibi pek çok multi disipliner pozisyonu mantıksal bir disiplin çatısı altına yerleştirememek.

Benim açımdan aslında bu karmaşa pek endişe veren bir şey değil çünkü mantıksal yaklaşıyorum: "Bu pozisyon bu disipline aittir nokta" şeklinde. Ama ne yazık ki ilk paragrafta da bahsettiğim üzere muhataplara açıklama yaparken de onların kafasında bu soru işareti olacak, bu sefer ucu bucağı olmayan saçma sapan konularla uğraşacağım.

Bir de işin küresel tarafı var tabi, uydurmaca olduğu kilometrelerce uzaktan anlaşılan pozisyon isimleri. Saçma sapan o kadar çok "Kurumsallık" ve "Profesyonellik" adı altında isimleri sallanmış pozisyonlar var ki insan gerçek bilinen ismini unutuyor.

Hocam sonuç olarak pozisyon bağlamında bir Ana Disiplin Ağı oluşturmaya çalıştığımı anlamışsınızdır. Eğer bu bağlamda sizin de tıpkı benim yapmaya çalıştığım 13 maddelik sınıflandırma gibi sunmak istediğiniz bir sınıflandırma varsa kusurlu olsa bile umurumda olmaz yine sevinirim.

Ek olarak şunu düşünmüyor değilim mesela Bulut Bilişim ve DevOps disiplinini, "Bulut Bilişim ve Dağıtık Sistemler Disiplini" ile "DevOps ve Platform Mühendisliği Disiplini" şeklinde yazsam nasıl olur diye bir düşünüyorum. Sonra aklıma "Dağıtık Sistemler" zaten 2 numaralı "Yazılım Mimarisi ve Tasarımı Disiplini" kapsamında olabilecek bir şey buna gerek yok deyip vazgeçiyorum.

Durum işte benim perspektifimde bu kadar karmaşıklaşmış vaziyette. Tek ihtiyacım olan şey zihinde soru işareti oluşturmayacak Ana Disiplin isimleri...
 
Son düzenleme:

Technopat Haberler

Yeni konular

Geri
Yukarı