• Yapay zekadan makale özeti

    • Bu video, bir eğitmen tarafından sunulan bilgisayar ve yazılım mühendisliği konulu bir eğitim dersidir. Eğitmen, öğrencilere hitap ederek konuyu anlatmaktadır.
    • Video, bilgisayar mühendisliğinin yazılım ve sistem mühendisliği yönlerini ele alarak başlamakta, ardından yazılım mühendisliğinin gerçek doğası, yazılım geliştirme standartları ve modelleri hakkında detaylı bilgiler sunmaktadır. Ders boyunca şelale (waterfall), V modeli, prototipleme, spiral, evrimsel ve artımlı geliştirme modelleri anlatılmakta, ayrıca yazılım test türleri (doğrulama, geçerlilik, yükleme, germe, stres ve geri kazanma testleri) ve bakım türleri (düzeltilici, uyarlayıcı, iyileştirici ve önleyici bakım) açıklanmaktadır.
    • Eğitmen, yazılım mühendisliğinin sadece kod yazmakla sınırlı olmadığını, planlama, analiz, tasarım, kodlama, test ve bakım aşamalarının tümünün önemini vurgulamaktadır. Ayrıca, yazılım geliştirme sürecinin farklı modelleri hangi durumlarda kullanılabileceği, avantajları ve süreçleri örneklerle açıklanmaktadır.
    00:26Bilgisayar Mühendisliği ve Sistem Mühendisliği
    • Bilgisayar mühendisliği sadece donanım veya sadece yazılım değil, ikisinin bir araya gelmesiyle oluşan sistemlerle ilgilidir.
    • Toplumdaki algıya göre bilgisayar mühendisi kod yazan biri olarak görülse de, her bilgisayar mühendisi kod yazmayabilir veya kod yazmakla geçinmeyebilir.
    • Bilgisayar programları veya uygulamaları sadece kodlardan oluşmaz, birçok bileşen içerir ve bunlara sistem denir.
    02:02Sistem Mühendisliği Kavramı
    • Sistem mühendisliği tüm mesleklerle ilgilidir; örneğin bir makine mühendisi binanın ısıtma-soğutma sistemini planlarken, elektronik ve bilgisayar sistemleri ile ilgili bilgiye ihtiyaç duyar.
    • Sistem mühendisliği, farklı mühendislik alanlarından yardım alarak farklı disiplinlerin bir araya gelmesini sağlayan bir yaklaşım olarak tanımlanabilir.
    • Endüstri mühendisliği, sistem mühendisliğiyle ilgili bir mühendislik alanı olup, farklı mühendislik alanlarından dersler alarak planlama aşamasında çalışır.
    04:32Bilgisayar Sistemlerinin Yapısı
    • Bilgisayar sistemleri yazılım ve donanımdan oluşur; donanım elle tutulur, gözle görülür bir şeydir ve günümüzde genellikle hazır modüler bileşenler kullanılarak entegre edilir.
    • Otuz-kırk yıl önce sistemler mühendisler tarafından birebir tasarlanırken, şimdi test edilmiş ve optimize edilmiş hazır bileşenler kullanılarak sistemler oluşturulur.
    • Gömülü sistemlerde Arduino, Raspberry Pi gibi hazır kitler yaygın olarak kullanılmaktadır.
    06:51Yazılım Geliştirme Süreci
    • Yazılım sadece kodlardan ibaret değildir, önceden kullanıcı isteklerinin karşılanıp karşılanmayacağı ve fizibilitesinin yapılması gerekir.
    • Yazılım projesi, devletin yaptığı büyük projelerin küçük ölçekteki formatına sahip olması gerekir ve iş bölümlenmesi, iş takvimi gibi süreçler içerir.
    • Yazılım geliştirme sürecinde senkronizasyon araçları, kodların anlaşılması, dökümantasyon ve revizyon takibi gibi süreçler önemlidir.
    10:01Bilgisayar Sistem Mühendisliği
    • Bilgisayar sistem mühendisliği, hem donanım hem yazılım içeren sistemlerin planlanması ve tasarlanması sürecidir.
    • Bilgisayar sistem mühendisliği, yazılım mühendisliğinden ayrılır çünkü hem donanım hem yazılım branşlarında söz sahibi olabilme yeteneğine sahiptir.
    • Sistem geliştirme süreci üç temel aşamaya indirgenebilir: fizibilite (yapılabilirlik) araştırması, tasarım ve sistem gerçekleştirimi.
    13:13Sistem Gerçekleştirme Sürecinde Dikkat Edilmesi Gerekenler
    • Sistem gerçekleştirme sürecinde karar verildikten ve teknik metot belirlendikten sonra geri dönülmemeli, aksi takdirde iş pahalıya mal olur.
    • Bolu Dağı tüneli örneğinde, mühendislik hataları ve yeterli ölçüm yapılmaması nedeniyle tünelin yer değiştirilmesi ve tekrar planlanması 30 yıl süren bir süreç haline gelmiş ve büyük maliyetlere yol açmıştır.
    • İyi planlama ve analiz aşaması sayesinde projeler daha ucuza ve hızlı bir şekilde gerçekleştirilebilir.
    15:05Kullanıcı Belgeleri ve Eğitim
    • Sistem geliştirildikten sonra kullanıcı belgeleri (dokümantasyon) hazırlanması ve kullanıcılar için eğitimler düzenlenmesi gerekir.
    • İyi bir yardım sistemi olmayan yazılımlar piyasada güç kazanamaz çünkü kullanıcılar istediği gibi kolay yardım alamazlar.
    • Kullanıcı deneyimleri ve geri dönüşleri yazılım geliştirme sürecinde çok önemlidir.
    17:17Sistem Yükü ve Maliyet Yönetimi
    • Bir sistem anlık olarak yüksek sayıda kullanıcıya hizmet vermek zorunda kalırsa, bu durumda yeterli sunucu kapasitesi sağlamak maliyetli olabilir.
    • Sistemin yıllık kullanımında düşük kapasite kullanılırken, sadece belirli pik zamanlarda yüksek kapasite gerekebilir.
    • Yöneticiler, yüksek maliyetli sunucu altyapısı kurmak yerine, pik zamanlarda şikayetlere göğüs gelmeyi tercih edebilirler.
    19:10Yazılım Mühendisliği ve Amacı
    • Yazılım mühendisliği belirli mühendislik yöntemleri kullanarak yazılım projelerini gerçekleştirmeyi amaçlar.
    • Yazılım mühendisliği alanına ait uluslararası standartlar vardır ve bu standartlara uyarak yapılan projeler daha uluslararası özelliklere sahip olur.
    • Yazılım mühendisliğinin temel amacı, yazılım geliştirmede karmaşıklığı gidererek sağlam, doğru, güvenilir ve kullanıcıların isteklerine uygun ürünler oluşturmaktır.
    21:22Yazılım Mühendisliğinin kapsamı
    • Yazılım mühendisliği sadece kod yazan bir eleman değil, dökümantasyon, eğitim planlaması, analiz ve kullanıcı isteklerinin analizi gibi birçok işlevi içerir.
    • Yazılım mühendisliği alanındaki hatalar çok pahalıya mal olabilir, özellikle planlama aşamasında yapılan hatalar.
    • Yazılım mühendisliği için resmi bir eğitim almak zorunlu değildir, özellikle küçük ölçekli firmalar için meslek yüksekokulu mezunları bile yeterli olabilir.
    25:08Bilgisayar Mühendisliği Algısı
    • Bilgisayar mühendislerinin her türlü programı bilmek zorunda olduğu algısı yanlıştır, herkes kendi alanında çalışır.
    • Yazılım mühendisliği sadece kod yazmakla sınırlı değildir, kullanıcı taleplerini bilgisayar ortamına aktarmaktır.
    • Bilgisayar mühendisinin temel işi kullanıcıyla bilgisayar arasındaki iletişimi sağlayacak metotları ve yöntemleri geliştirmektir.
    26:27Yazılım Geliştirme Standartları
    • Yazılım geliştirme standartlarının çoğu Amerika Savunma Bakanlığı tarafından oluşturulmuştur.
    • Savunma bakanlığındaki büyük bütçe ve AR-GE konuları standartların oluşumunda etkilidir.
    • Hackerlık gibi alanlarda sürekli bir rekabet vardır; hacker yeni bir yol bulduğunda açığın kapatılması gerekir.
    28:44Standartların Özellikleri
    • Standartlar askeri disiplin ve düzen gerektirir, örneğin derste espri sayısı bile kısıtlıdır.
    • MIL-D-498 standartı hem yazılım geliştirme hem de belgeliği kapsar.
    • IEEE 12207 standartı yazılım yaşam döngüsünü ve geliştirme aşamalarını sorgular.
    31:34Standartların Kullanımı
    • Devlet kuruluşları (Aselsan, Havelsan) tarafından verilen projelerde hangi standartların kullanılacağı belirtilir.
    • Yazılımcılar standartları adım adım uygulamak zorundadır, dışına çıkamazlar ancak üstüne eklemeler yapabilirler.
    • Standartların genel çerçevesini öğrenmek faydalı olabilir, ancak hepsini detaylı olarak öğrenmeye gerek yoktur.
    33:26Yazılım Geliştirme Modelleri
    • Yazılım geliştirme modelleri, üretilecek belgeler ve yöntemler müşterilerin ve geliştiricilerin ihtiyaçlarına göre değişir.
    • Müşteri belge veya yardım istemiyorsa ekstra efor sarf etmeye gerek yoktur.
    • Yazılım modülü başka yerde kullanılmaması düşünülmüyorsa dökümantasyon yapmak gereksizdir.
    34:37Yazılım Geliştirme Modelleri
    • Yazılım geliştirme süreçlerinde klasik çevrim, V modeli, prototipleme, spiral model, evrimsel geliştirme, artımlı geliştirme ve yeni teknikler bulunmaktadır.
    • Tüm yazılım geliştirme süreçleri benzer konuları içerse de bakış açıları farklıdır.
    • Klasik çevrim veya şelale modeli, geleneksel model olarak da adlandırılır ve kullanıcı talepleri sabitlenir.
    35:27Kullanıcı Talepleri ve Geliştirme Süreci
    • Kullanıcı talepleri, kullanıcıların yazılımın ne yapmasını istediği özelliklerdir (örneğin, öğrenci servisinde derslere tıklandığında gerekli bilgilerin gelmesi).
    • Programcılar bazen kullanıcıların talep etmediği ancak bilmediği özellikler ekleyebilirler.
    • Geliştirme süreci kullanıcı taleplerini belirleme, tasarım, kodlama, test ve bakım aşamalarından oluşur.
    39:42Geliştirme Aşamaları
    • Tasarım aşamasında veritabanı kullanımı, dosya sistemi, internet kullanımı gibi kararlar verilir.
    • Test aşaması, kodlama aşamasıyla eşit süre alabilir ve test mühendisleri kodlama mühendislerinden daha fazla para kazanabilir.
    • Bakım aşamasında program güncellenebilir, açıklar kapatılabilir ve periyodik bakımlar yapılabilir.
    43:24Yazılım Geliştirme Süreci
    • Yazılım geliştirme süreci beş aşamalı bir süreçtir: sistem mülk mühendisliği ve çözümleme, tasarım, gerçekleştirme, test ve son olarak şelale sistemi olarak adlandırılır.
    • Çözümleme aşamasında planlama yapılır, kullanıcı talepleri değerlendirilir ve proje maliyeti, gerekli programcı sayısı ve tamamlanma süresi belirlenir.
    • Tasarım aşamasında ana fikirler belirlenir ve hangi teknolojilerin kullanılacağı kararlaştırılır.
    45:38Şelale Sistemi ve V Modeli
    • Şelale sistemi, yazılım geliştirme sürecinin beş adımlı bir işlem olarak adlandırılır ve her basamakta bir çevrim bulunur.
    • V modeli, yazılım geliştirme sürecini sağ ve sol kanat olarak gösterir; sol kanat üretim alanını, sağ kanat test alanını işaret eder.
    • V modelinde projelendirme, sistem isterleri, yazılım isterleri çözümlemesi, yazılım tasarımı, yazılım gerçekleştirilmesi, birim tümleştirme ve test aşamaları detaylandırılmıştır.
    49:59Prototipleme Yöntemi
    • Prototipleme, müşterinin hızlı bir çözüm istemesi durumunda kullanılan bir yöntemdir ve önce programın çalıştığını göstererek sonra geliştirmeye devam edilir.
    • Prototipleme, ürünün genel başarımı, algoritmanın verimliliği ve donanım mimarisi gibi detayların çok önemli olmadığı durumlarda kullanılır.
    • Prototipleme sürecinde kullanıcı talepleri toplanır, hızlı bir tasarım yapılır, prototip geliştirilir, müşteri değerlendirmesi yapar ve sürekli dönüş alınarak iyileştirilir.
    53:41Diğer Geliştirme Modelleri
    • Evrimsel geliştirme modelinde ürün aşamalar halinde geliştirilir ve her aşamada yeni bir sürüm ortaya çıkar.
    • Evrimsel prototipleme modelinde ilk prototip oluşturulur, kullanıcıdan gelen bilgilere göre ikinci ve üçüncü prototipler geliştirilir.
    • Artırımlı geliştirme modelinde kullanıcı talepleri tam olarak belirlenir, önce çekirdek ürün geliştirilir ve sonra geri kalan kısımları geliştirme devam edilir.
    56:38Spiral Geliştirme Modeli
    • Spiral geliştirme modeli, klasik ve prototipleme modellerinin iyi yönlerini birleştiren bir modeldir.
    • Bu modelde planlama, risk çözümleme, geliştirme ve değerlendirme aşamaları bulunmaktadır.
    • Geliştirme merkezden başlayarak spiral şeklinde ilerler ve dört farklı bölgede (risk yönetimi, planlama, kullanıcı değerlendirmeleri ve üretim aşamaları) yer alır.
    57:47Spiral Modelinin Çalışma Prensibi
    • Planlama sadece ilk aşamada yapılır, sonrasında tekrarlanmaz.
    • Spiral modelinde her turda risk analizi yapılır ve yeni bir prototip elde edilir.
    • Kullanıcı değerlendirmeleri ilk ve ikinci fazlarda yapılmaz, son fazda prototip hazır olduğunda kullanıcılar işin içine girer.
    59:53Yazılım Geliştirme Modelleri
    • Gelişimigüzel geliştirme, firmaya veya kişiye özel bir sistemdir ve belirli bir tekniğe sahip değildir.
    • Çevik geliştirme (Agile) şu anda en popüler modellerden biridir.
    • Yazılım projesi gerçekleştiren ekip, hangi modelin kullanıldığını ve aşamalarını dökümantasyonda belirtmek zorundadır.
    1:01:16Yazılım Geliştirme Süreci
    • Yazılım geliştirme süreci kullanıcı talepleri, tasarım, gerçekleştirme, test ve bakım aşamalarından oluşur.
    • Yazılım istekleri çözümlemesi aşamasında müşterinin yazılımdan bekledikleri belirlenir ve bu isterlere göre modelleme ve tasarım yapılır.
    • Çözümleme aşaması uzman bir ekip tarafından yapılır ve kullanıcı taleplerine göre sistemin çalışma şekli, veri akışı ve işlevsellik modellenir.
    1:03:18Yazılım Tasarım Aşaması
    • Yapısal, nesneye yönelik ve veri yapılarına yönelik çözümleme yöntemleri kullanılır.
    • Tasarım aşamasında yazılım mimarisi, veri yapıları, algoritmalar, akış şemaları ve modüller belirlenir.
    • Yazılım tasarım aşamasında kodlama yoktur, sadece blok diyagram şeklinde mimari tasarım, veri yapıları ve algoritmalar oluşturulur.
    1:07:36Gerçekleme ve Test Aşaması
    • Gerçekleme aşamasında arayüzler, veri yapıları ve modüller belli olduğunda kodlama başlar.
    • Dil seçimi önemlidir, tek bir dilin her yerde kullanılacağı bir yapıya sahip değildir.
    • Kodlar belgelendirme amacıyla açıklama satırları eklenerek dökümente edilebilir şekle getirilir ve sonrasında test aşamasına geçilir.
    1:09:43Yazılım Testleri
    • Doğrulama testi (verification test), kullanıcının taleplerine programın cevap verip vermediğini kontrol eder.
    • Geçerlilik testi, programın sadece doğru sonuç üretmesinin yeterli olmadığını, kullanıcı beklentilerini de karşılaması gerektiğini gösterir.
    • Gerçek zamanlı sistemlerde (örneğin ATM'lerde) belirli bekleme süreleri vardır ve bu süreyi geçmek programın geçerliliğini kaybetmesine neden olur.
    1:14:09Sistem Testleri
    • Yükleme testi, sistem kurulup çalışıp çalışmadığını kontrol eder.
    • Germe testi, sistem beklenenden daha fazla girdi alıp alamayacağını test eder.
    • Stres testi, sistem maksimum yük altında nasıl davranacağını gösterir.
    • Geri kazanma (recovery) testi, sistem çöktüğünde tekrar eski haline nasıl ve ne kadar sürede dönebileceğini test eder.
    1:17:26Bakım Türleri
    • Düzeltici bakım, programdaki hataları önlemek veya gidermek için yeni versiyonlar veya yamalar oluşturmayı içerir.
    • Uyarlayıcı bakım, programa yeni özellikler eklemeyi sağlar (örneğin bir uygulamaya Bluetooth desteği eklemek).
    • İyileştirici bakım, programın verimliliğini artırmak için teknik iyileştirmeler yapmayı içerir.
    • Önleyici bakım, hata yapma ihtimali olan durumları kapamak için gerekli önlemleri almayı içerir.

    Yanıtı değerlendir

  • Yazeka sinir ağı makaleleri veya videoları özetliyor