Bölüm 1- Giriş. Ders 1



Benzer belgeler
Yazılım Nedir? Yazılım Mühendisi. Yazılım Mühendisliği. ACM/IEEE Etik Kodu. Etik Kural için Önsöz BIL 304 YAZILIM MÜHENDİSLİĞİ

BMH-405 YAZILIM MÜHENDİSLİĞİ

Yazılım Mühendisliği 1

İç Kontrol Uzmanı Pozisyonu İçin Doğru Kriterlere Sahip Olduğunuzdan Emin misiniz?

BİLİŞİM SİSTEMLERİ GÜVENLİĞİNDE YENİ EĞİLİMLER

İŞ SAĞLIĞI GÖZETİMİ YAZILIMI. Sağlıklı ve güvenli bir yaşam için

Mobil Uygulama Geliştirmeye Giriş (ISE 407) Ders Detayları

Yazılım Mühendisliğinin Temelleri (SE 100) Ders Detayları

SİSTEM VE YAZILIM. o Bilgisayar sistemleri donanım, yazılım ve bunları işletmek üzere gerekli işlemlerden oluşur.

Bilgisayar Mühendisliği. Bilgisayar Mühendisliğine Giriş 1

CENG 302 Yazılım Mühendisliği Yazılım Mimarisi - Devam. Alper UĞUR

Yazılım Mühendisliği Bölüm - 3 Planlama

HATAY KHB BILGI İŞLEM BİRİMİ

Bilgisayar Oyunları ve Simulasyon (COMPE 376) Ders Detayları

Tarımsal Üretim Uygulamalarında Bulut Hesaplama (Cloud Computing) Teknolojisi

BİLGİ GÜVENLİĞİ. Temel Kavramlar

UE.18 Rev.Tar/No: /03 SAYFA 1 / 5

Akdeniz Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölüm Tanıtımı

Bilgisayar Mühendisliğinin Temelleri (COMPE 100) Ders Detayları

SİSTEM ANALİZİ VE TASARIMI. Sistem Analizi -Bilgi Sistemleri-

MAYIS 2010 ÖZGÜR DOĞAN İŞ GELİŞTİRME YÖNETİCİSİ KAMU SEKTÖRÜ

MerSis. Bilgi Teknolojileri Bağımsız Denetim Hizmetleri

Varlık davranış modeli: Bu aşama her entity ye etki eden durumların tanımlandığı, modellendiği ve dokümante edildiği süreçtir.

Bilişim Sistemleri. Modelleme, Analiz ve Tasarım. Yrd. Doç. Dr. Alper GÖKSU

Mobil Uygulama Geliştirmeye Giriş (ISE 407) Ders Detayları

Yazılım Gereksinimleri Mühendisliği (SE 221) Ders Detayları

Yazılım Mühendisliğine Giriş (SE 112) Ders Detayları

Yazılım Mimarisi (SE 322) Ders Detayları

Hızlı Uygulama Geliştirme (SE 340) Ders Detayları

YZM 2108 Yazılım Mimarisi ve Tasarımı

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

Kurumsal Yönetim Sistemleri Sistemleri

Bilişim Teknolojilerinde Yenilik ve Girişimcilik (ISE 432) Ders Detayları

Akdeniz Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölüm Tanıtımı

Yaz.Müh.Ders Notları #6 1

BİLİŞİM SİSTEMLERİNİN PRENSİPLERİ

T.C. MARDİN ARTUKLU ÜNİVERSİTESİ MİDYAT MESLEK YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI (UZAKTAN ÖĞRETİM) ÖNLİSANS PROGRAMI Eğitim Öğretim Yılı

SİSTEM MÜHENDİSLİĞİ TASARIMIN SENTEZLENMESİ II

Yazılım profesyonelleri için önemli olan yetkinlikler anketi Survey

SIRA NO SORUMLU BİRİM FAALİYET SORUMLU DURUM AÇIKLAMA

T.C. MEHMET AKİF ERSOY ÜNİVERSİTESİ STRATEJİ GELİŞTİRME DAİRE BAŞKANLIĞI PERSONEL GÖREV TANIMI

SAĞLIK BİLGİ SİSTEMLERİNİN TARİHSEL GELİŞİMİ

Akdeniz Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölüm Tanıtımı

Havayolu Yönetimi (AVM202) Ders Detayları

Koru1000. beklentilerinizin ötesinde!

Bilgisayar Oyunları ve Simulasyon (COMPE 376) Ders Detayları

İŞ ANALİZİ GEREKSİNİM SORU LİSTESİ

Chapter 6 Mimari Tasarım. Lecture 1. Chapter 6 Architectural design

Bilkent Üniversitesi Bilgisayar Mühendisliği Bölümü. Bilgisayar Mühendisliği

Öğrenim Kazanımları Bu programı başarı ile tamamlayan öğrenci;

MESLEKİ TERMİNOLOJİ I 1. HAFTA YAZILIM MÜH. TEMEL KAVRAMLAR

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

UNIVERSAL BİLGİ TEKNOLOJİLERİ

1.Yazılım Geliştirme Metotları 1

Sağlık Teknolojilerinin Yönetiminde Teknolojik Değerlendirme. Doç. Dr. Rabia Kahveci

FINDIK Herkese Açık Filtre

Mühendislik ve Bilgisayar Bilimleri Fakültesi Bilgisayar Mühendisliði

Uzman Sistemler (IE 416) Ders Detayları

Uygulamaları ulut bilişime geçirmeden önce, firmanızın/şirketinizin ya da. işinizin gereksinimlerini göz önüne almanız gerekir. Aşağıda bulut bilişime

BENZERSİZ SORUNLARA BENZERSİZ ÇÖZÜMLER

POL.01 Rev.Tar/No: /1.0 HĠZMETE ÖZEL

BMH-405 YAZILIM MÜHENDİSLİĞİ

Sizlere sunduklarımız?

ESİS Projesi. Kaynaklar Bakanlığı

Yükseköğretim Kurumlarında Kalite Süreçleri

Sensör Birleştirme Eğitimi. Hızlı jet uçağa monte görev sistemlerinin geliştirilmiş operasyonel performansı vasıtasıyla avantaj sağlayın

Veritabanı Yönetim Sistemleri (Veritabanı Kavramı) Veritabanı Sistemleri

1. YIL 1. DÖNEM DERS KODU DERS ADI T+U+L KREDİ AKTS. Atatürk İlkeleri ve İnkılap Tarihi I

DAVRANIŞ YÖNETMELİĞİMİZ

YÖNETİM BİLİŞİM SİSTEMLERİ

MADENCİLİK VE MADEN ÇIKARMA TEHLİKELİ VE ÇOK TEHLİKELİ İŞLERDE RAMBLE TAMİR BAKIMCI MODÜLER PROGRAMI (YETERLİĞE DAYALI)

DERS BİLGİLERİ. Ders Kodu Yarıyıl T+U Saat Kredi AKTS. İşletmelerde Simülasyon MAN

MADENCİLİK VE MADEN ÇIKARMA TEHLİKELİ VE ÇOK TEHLİKELİ İŞLERDE TAHLİSİYE VE GAZ ÖLÇÜM CİHAZLARI BAKIMCISI MODÜLER PROGRAMI (YETERLİĞE DAYALI)

MADENCİLİK VE MADEN ÇIKARMA TEHLİKELİ VE ÇOK TEHLİKELİ İŞLERDE BANT KONVEYÖR TAMİR VE BAKIMCI MODÜLER PROGRAMI (YETERLİĞE DAYALI)

MÜHENDİSLİK FAKÜLTESİ / ENSTİTÜSÜ / YÜKSEKOKULU BİLİŞİM SİSTEMLERİ MÜHENDİSLİĞİ BÖLÜMÜ /ABD LİSANS PROGRAMI - 1 ( yılı ve sonrasında birinci

COBIT Bilgi Sistemleri Yönetimi. Şubat 2009

DERS BİLGİLERİ. Üretim ve Operasyon Yönetimi BBA 382 Bahar

Akademi. Denetim Kalite Kontrol. Danışmanlık

Kurumlar, Bölümler ya da Diğer kuruluşlar için Kalite ve Mükemmelliyet Kriterleri 1

Sedona. Eğitim Kataloğu

YAZILIM MÜHENDİSLİĞİ Şubat 2012 Yrd.Doç.Dr. Yunus Emre SELÇUK GENEL BİLGİLER

Bilgiyi Keşfedin! Özelleştirme, Eklenti ve Veri Entegrasyonu Kurumsal Seviyede Yönetim ve Performans

Venatron Enterprise Security Services W: P: M:

SÜRDÜRÜLEBİLİRLİK YÖNETİMİ VE HUKUKİ ÇERÇEVE

BĠR E-ÖĞRENME UYGULAMASI: BĠLGĠ GÜVENLĠĞĠ BĠLĠNÇLENDĠRME Asım Gençer GÖKCE Uzman Araştırmacı

Yapı Kredi Finansal Kiralama A. O. Ücretlendirme Politikası

İŞ SAĞLIĞI VE GÜVENLİĞİNDE YAZILIM UYGULAMALARI. Abidin Özler Makine Müh. İGU (A)

Sosyal ve Kültürel Etkinliklere Katılım (ORY 400) Ders Detayları

Veritabanı Tasarım ve Yönetimi (COMPE 341) Ders Detayları

DERS BİLGİLERİ. Yönetim Bilimi BBA 383 Güz

MADENCİLİK VE MADEN ÇIKARMA TEHLİKELİ VE ÇOK TEHLİKELİ İŞLERDE MEKANİK NEZARETÇİLİĞİ MODÜLER PROGRAMI (YETERLİĞE DAYALI)

İnnova dan, tamamen ölçülebilir, KPI ve SLA anlaşmaları ile garanti altına alınmış yönetilebilir SAP hizmet modeli

Bitirme Projesi (COMPE 494) Ders Detayları

Sistem Modelleme ve Simülasyon (SE 360) Ders Detayları

T. C. KAMU İHALE KURUMU

İNŞAAT TEKNOLOJİSİ TEHLİKELİ VE ÇOK TEHLİKELİ İŞLERDE ALÇI VE ALÇI LEVHA ÜRETİM OPERATÖRLÜĞÜ MODÜLER PROGRAMI (YETERLİĞE DAYALI)

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

Yapay Zeka (MECE 441) Ders Detayları

BNP PARIBAS INTERNATIONAL HACKATHON TEMALAR

Amaç. Octopus Program, InoTec Akademi uzmanlarının on yılı aşan tecrübesi ile hazırladığı, bir uzmanlık seviyesi belirleme ve geliştirme programıdır.

Transkript:

Bölüm 1- Giriş Ders 1

Konular Profesyönel Yazılım Geliştirme Yazılım Mühendisliği ne demek? Yazılım Mühendisliği Etikleri Yazılım Mühendisliğini etkileyen etik konulara kısa bir giriş Örnek Yazılım Projeleri Ders kapsamında kullanılacak olan yazılım projelerinin özetleri 2

Yazılım Mühendisliği Bütün gelişmiş ulusların ekonomileri yazılıma bağlı Her gün daha fazla sistem yazılım ile kontrol ediliyor Yazılım mühendisliği profesyönel yazılımlar geliştirmek için gerekli olan teoriler, yöntemler ve araçlar ile ilgilenir Gelişmiş ülkelerin milli hasılalarında yazılım harcamalarının büyük payı vardır.

Yazılım Maliyetleri Yazılım maliyetleri genelde donanım maliyetlerini geride bırakır. Bir PC üzerindeki yazılımların maliyeti genelde PC nin donanım maliyetinden yüksektir. Bir yazılımın bakım maliyeti geliştirme maliyetinden yüksektir. Uzun ömürlü sistemler için, bakım/onarım maliyetleri geliştirme maliyetlerinin birkaç katıdır. Yazılım Mühendisliği, maliyet-etkin yazılım geliştirme ile ilgilenir.

Yazılım Ürünleri Genel Ürünler İlgilenen herhangi bir alıcıya satılan bağımsız ürünler Örnek grafik programları, proje yönetim araçları; bilgisayar destekli tasarım araçları; diş hekimi randevu yazılımı gibi. Özelleşmiş Ürünler Belirli bir müşteri tarafından kendi ihtiyaçlarını karşılaması için ısmarlanmış yazılımlar. Örnek gömülü kontrol sistemleri, hava trafik kontrol yazılımı, Trafik gözlem sistemi. 5

Ürün Tanımlama (Ürünün neler yapabileceğine karar verme) Genel Ürünler Yazılımın neler yapabileceği yazılım geliştirici tarafından belirlenir ve yazılım üzerindeki değişikliklere (güncellemelere) geliştirici karar verir. Özelleşmiş Ürünler Yazılımın neler yapabileceği müşteri tarafından belirlenir ve yazılım üzerindeki değişikliklere (güncellemelere) müşteri karar verir. 6

Yazılım Mühendisliği ile İlgili Sıkça Sorulan Sorular Soru Yazılım nedir? İyi bir yazılımın özellikleri nelerdir? Yazılım Mühendisliği nedir? Temel Yazılım Mühendisliği aktiviteleri nelerdir? Bilgisayar Bilimi ile Yazılım Mühendisliği arasındaki fark nedir? Sistem Mühendisliği ile Yazılım Mühendisliği arasındaki fark nedir? Cevap Bilgisayar programları ve ilgili dokümanlar. İyi bir yazılım, istenen fonksiyonelliği ve performansı kullanıcıya sunmalıdır. Bakımı yapılabilir, güvenilir ve kullanışlı olmalıdır. Yazılım Mühendisliği, yazılım üretiminin bütün yönleri ile ilgilenen bir mühendislik alanıdır. Yazılım tanımlama, yazılım geliştirme, yazılım doğrulama ve yazılım evrimi. Bilgisayar Bilimi teori ve temellere odaklıdır. Yazılım Mühendisliği ise kullanışlı bir yazılımın geliştirilmesi ve kullanıcıya teslimi konusundaki pratik uygulamalarla ilgilenir. Sistem Mühendisliği; donanım, yazılım ve süreç mühendisliğini içeren bilgisayar tabanlı sistemlerin bütün yönleri ile ilgilenir. Yazılım Mühendisliği, bu genel süreçlerin bir parçasıdır. 7

Yazılım Mühendisliği ile İlgili Sıkça Sorulan Sorular Soru Yazılım Mühendisliğinde karşılaşılan ana zorluklar nelerdir? Yazılım Mühendisliğinin maliyetleri nelerdir? Cevap Çeşitliliğin artması, daha kısa teslim sürelerinin istenmesi ve güvenilir yazılım geliştirme talepleri. Kabaca %60 geliştirme maliyetleri, %40 test maliyetleridir. Özel yazılımlar için yazılım güncelleme ve değişikliklerinin maliyeti çoğu zaman geliştirme maliyetlerini aşar. En iyi Yazılım Mühendisliği yöntemi nedir? Bütün yazılım projelerinin profesyönel olarak yönetilmesi ve geliştirilmesi için değişik tipteki sistemlere değişik teknikler uygun düşer. Örneğin, oyunlar prototipleme ile geliştirilirken; güvenliği önemli olan kontrol sistemleri tam olarak analiz edildikten sonra geliştirilirler. Bu nedenle bir yöntemin diğer bir yöntemden iyi olduğunu söyleyemeyiz. Web, Yazılım Mühendisliği üzerinde ne gibi değişiklikler yapmıştır? Web, yazılım servislerinin ulaşılabilirliğini arttırmış ve dağıtık servis tabanlı yazılımlar geliştirilmesini sağlamıştır. Web tabanlı sistemler programlama dillerinde önemli ilerlemelere neden olmuş ve yazılımların yeniden kullanılabilirliğini arttırmıştır. 8

İyi bir yazılımın temel özellikleri Ürün karakteristiği Sürdürülebilirlik/Bakım Güvenilirlik ve Güvenlik Açıklama Yazılım, müşterinin ihtiyaçları doğrultusunda gerekli değişikliklerin yapılabilmesine olanak tanıyacak şekilde geliştirilmelidir. Değişen iş ortamlarının kaçınılmaz ihtiyacı olduğu için bu özellik kritik bir özelliktir. Güvenilir bir yazılım fiziksel veya ekonomik bir zarara yol açacak hatalara neden olmamalıdır. Kötü amaçlı kullanıcılar sisteme ulaşamamalı ve zarar verememelidir. Etkinlik Kabul edilebilirlik Yazılım hafıza ve işlem gücü gibi sistem kaynaklarını gereksiz yere kullanmamalıdır. Etkinlik kavramı cevap verme süresi, işlem süresi, hafıza kullanım verimliliği gibi kavramları barındırır. Yazılım, kimin için geliştirildiyse o kişiler için kabul edilebilir olmalıdır. Yani, yazılım anlaşılabilir, kullanışlı ve kullanıcılar tarafından hali hazırda kullanılan sistemler ile uyumlu olmalıdır. 9

Yazılım Mühendisliği Yazılım Mühendisliği yazılım üretiminin ilk aşamalarından kullanıma giriş sonrasındaki bakım/güncelleme aşamasına kadarki bütün yönleri ile ilgilenen bir mühendislik disiplinidir. Mühendislik disiplini Organizasyonel ve finansal kısıtları göz önünde bulundurarak problemleri çözmek için gerekli teorileri ve yöntemleri kullanmak. Yazılım üretiminin bütün yönleri Yalnızca geliştirme aşamasının teknik işlemleri değildir. Aynı zamanda yazılım üretimini destekleyecek proje yönetim ve geliştirme araçları, yöntemleri gibi şeylerdir. 10

Yazılım Mühendisliğinin Önemi Her geçen gün çok daha fazla sayıda insan ve grup ileri yazılım sistemlerine ihtiyaç duymakta. Bu nedenle güvenilir sistemleri ekonomik olarak ve hızlı bir biçimde geliştirmek zorundayız. Genellikle uzun vadede yazılım mühendisliği yöntemlerini kullanarak yazılım geliştirmek, kişisel amaçlar için program yazarken yaptığımız gibi doğrudan kodlama yapmaktan daha ucuzdur. Çoğu sistemdeki maliyetlerin büyük kısmı, yazılım kullanıma girdikten sonra yazılım üzerinde yapılması istenen değişikliklerden kaynaklanır. 11

Yazılım geliştirme aşama aktiviteleri Yazılım tanımlama, müşterilerin ve mühendislerin üretilecek yazılımın ne yapacağını kararlaştırdıkları ve yazılımın çalışmasındaki sınırları (kısıtları) belirledikleri aşamadır. Yazılım geliştirme, yazılımın tasarlandığı ve geliştirildiği aşamadır. Yazılım doğrulama, yazılımın müşterinin istediği gibi olup olmadığının kontrol edildiği aşamadır. Yazılım evrimi (bakım/güncelleme), yazılımın değişen müşteri istekleri ve piyasa koşulları doğrultusunda değiştirildiği aşamadır. 12

Çoğu yazılımı etkileyen genel konular Heterojenlik Artan bir biçimde sistemlerin, değişik tipteki bilgisayarlar ve mobil cihazlardan oluşan bir ağ üzerinde çalışmaları gerekliliği İş ve sosyal değişiklikler Gelişen ekonomi ve yeni teknolojiler ile birlikte iş dünyası ve toplum değişmekte ve var olan yazılımlarını değiştirerek hızlı bir biçimde yeni yazılımların geliştirilmesine ihtiyaç duymaktalar. Güvenlik ve güven Yazılım bütün hayatımızı her yönü ile kuşatmış olduğu için yazılıma güvenebilmemiz önemlidir. 13

Yazılım mühendisliği çeşitlilikleri Bir çok yazılım sistemi vardır be bu yazılım sitemlerine uygulanabilecek evrensel bir yazılım teknikleri kümesi bulunmamaktadır. Yazılım mühendisliği yöntemleri ve araçları, geliştirilmekte olan uygulamanın tipine, müşteri isteklerine ve yazılım geliştirme ekibinin bilgi ve tecrübesine bağlıdır. 14

Uygulama Tipleri Tek başına çalışan (stand-alone) uygulamalar Bu uygulamalar tek bir cihaz üzerinden çalışan uygulamalardır. Gereksinim duydukları bütün fonksiyonelliğe sahiptirller ve bir ağa bağlanma ihtiyaçları yoktur. İnteraktif işleme dayalı uygulamalar Uzaktaki bir bilgisayarda çalışan ve kullanıcı tarafından bir bilgisayar veya terminal aracılığı ile ulaşılan uygulamalardır. E- ticaret uygulamaları gibi web uygulamaları örnek olarak gösterilebilir. Gömülü kontrol sistemleri Donanımsal cihazları kontrol eden ve yöneten yazılım kontrol sistemleridir. Sayıca muhtemelen diğer tipteki sistemlerden daha çok gömülü sistem vardır. 15

Uygulama tipleri Toplu işlem sistemleri Büyük miktarlardaki verileri işlemek için tasarlanan iş sistemleridir. Anlamlı sonuçlar üretmek için büyük sayılardaki giriş verisini işlerler. Eğlence sistemleri Birincil olarak kişisel amaçlar için üretilmiş ve insanları eğlendirmeye yarayan sistemlerdir. Modelleme ve simülasyon sistemleri Bilim adamları ve mühendisler tarafından geliştirilen ve fiziksel olguları, nesne etkileşimlerini modellemeye yarayan sistemlerdir. 16

Uygulama tipleri Veri toplama sistemleri Bulundukları çevrelerden sensörler yardımı ile veri toplayan ve bu veriler işlenmek üzere başka sistemlere gönderen sistemlerdir. Sistemlerin sistemleri Diğer yazılım sistemlerinin bileşimi olan sistemlerdir. 17

Yazılım mühendisliğinin temelleri Bazı temel prensipler, geliştirme tekniğine bakılmaksızın bütün yazılım sistem tiplerine uygulanır: Sistemler, yönetilebilir ve anlaşılabilir geliştirme süreçlerini kullanarak geliştirilmelidirler. Elbette, değişik tip yazılımlar için değişik süreçler kullanılabilir. Güvenilirlik ve performans bütün yazılım sistemleri için çok önemlidir. Yazılım tanımının ve ihtiyaçların (yazılımın ne yapması gerektiği) anlaşılır ve kontrol edilebilir olması çok önemlidir. Mümkün olduğunda, yeni yazılım geliştirmeden önce, zaten geliştirilmiş olan yazılımların kullanılması. 18

Yazılım mühendisliği ve web Web, lokal sistemlerden daha çok yazılımın çalıştırıldığı ve organizasyonların kullanımına yöneldiği bir platform haline geldi. Web servisleri (daha sonra açıklanacak) uygulamaların fonksiyonelliğine web üzerinden erişim imkanı sunar. Bulut bilişim, uzaktan çalışan uygulamaların sunulduğu bir bilgisayar hizmetidir. Kullanıcılar yazılım satın almaz; kullanımına göre para öderler. 19

Web yazılım mühendisliği Web tabanlı sistemlerin oluşturulmasında yazılımın yeniden kullanılabilirliği baskın bir yaklaşımdır. Bu sistemleri geliştirirken, daha önceden var olan yazılım bileşenlerinin ve sistemlerinin nasıl kullanılabileceğini düşünürsünüz. Web tabanlı uygulamalar parça parça geliştirilmeli ve uygulamaya konulmalı Günümüzde genel olarak kabul gören yaklaşım bu tip sistemlerin bütün ihtiyaçlarının önceden belirlenerek geliştirilmesinin pratik olmadığı yönündedir. Kullanıcı ara yüzleri web tarayıcıların yetenekleri ile sınırlıdır. AJAX gibi teknolojiler zengin arayüzler oluşturmak için kullanılabilir ancak kullanımları halen zordur. Yerelde çalışan scriptler kullanarak web formları oluşturmak daha yaygındır. 20

Web tabanlı yazılım mühendisliği Web tabanlı sistemler karmaşık dağıtık sistemlerdir. Fakat, daha önceden bahsettiğimiz yazılım mühendisliğinin temel prensipleri diğer sistemlere olduğu gibi bu tip sistemlere de uygulanabilir. 21

Önemli noktalar Yazılım Mühendisliği, yazılım üretiminin bütün yönleri ile ilgilenen bir mühendislik alanıdır. Temel yazılım ürün özellikleri sürdürülebilirlik, güvenilirlik ve güvenlik, etkinlik ve kabul edilebilirliktir. Tanımlama, geliştirme, doğrulama ve değiştirme (evrim) bütün yazılım süreçlerinin parçalarıdır. Yazılım mühendisliğinin temel kavramları bütün sistem geliştirme tiplerine uygulanabilir. 22

Önemli noktalar Çok sayıda değişik sistem tipi vardır ve her biri doğru yazılım mühendisliği araçları ve tekniklerine ihtiyaç duyar. 23

Yazılım mühendisliği etiği Yazılım mühendisliği, basitçe teknik becerilerin kullanılmasından daha geniş sorumlulukları gerektirir. Yazılım mühendisleri eğer işlerine saygı duyuyorlarsa dürüst ve ahlaklı davranmak zorundadırlar. Etik davranmak yalnızca kanunlara uymak değildir. Aynı zamanda ahlak kurallarına uymayı gerektirir.

Profesyönel sorumluluk konuları Gizlilik (mahremiyet) Mühendisler, bir etik sözleşme imzalanmamış olsa bile iş verenlerinin ve müşterilerin gizliliklerine (özellerine) saygı duymalıdır. Yeterlilik (kabiliyet) Mühendisler kabiliyet seviyelerini yanlış sunmamalıdır. Kabiliyetlerini aşan işleri kabul etmemelidir.

Profesyönel sorumluluk konuları Fikri hak mülkiyeti Mühendisler, patent gibi fikri mülkiyet haklarının kanunlar ile korunduğundan haberdar olmalıdır. İşverenin ve müşterilerin fikri mülkiyet haklarının korunduğunundan emin olmalıdır. Bilgisayarların kötüye kullanımı Yazılım mühendisleri bilgilerini diğer kişilerin bilgisayarlarını kötü amaçla veya amaç dışı kullanmak için kullanmamalıdırlar. Kötüye kullanım, işverenin bilgisayarında oyun oynamak gibi önemsiz bir konu da olabilir, bilgisayara virüs bulaştırmak gibi ciddi bir konu da olabilir.

ACM/IEEE Etik Yönetmeliği A.B.D. deki bazı organizasyonlar bir etik yönetmelik oluşturmak için bir araya gelmiştir. Yönetmelik 8 temel prensip barındırır. Bu prensipler yazılım mühendisleri ile ilgili olduğu kadar programcılar, eğitimciler, yöneticiler, karar vericiler, stajyerler ve öğrencilerle ilgilidir.

ACM/IEEE Etik Yönetmeliği Software Engineering Code of Ethics and Professional Practice ACM/IEEE-CS Joint Task Force on Software Engineering Ethics and Professional Practices PREAMBLE The short version of the code summarizes aspirations at a high level of the abstraction; the clauses that are included in the full version give examples and details of how these aspirations change the way we act as software engineering professionals. Without the aspirations, the details can become legalistic and tedious; without the details, the aspirations can become high sounding but empty; together, the aspirations and the details form a cohesive code. Software engineers shall commit themselves to making the analysis, specification, design, development, testing and maintenance of software a beneficial and respected profession. In accordance with their commitment to the health, safety and welfare of the public, software engineers shall adhere to the following Eight Principles: 28

Etik Kurallar 1. PUBLIC (KAMU) Yazılım mühendisleri kamu menfaatine uygun davranmalıdır. 2. MÜŞTERİ VE İŞ VEREN Yazılım mühendisleri kamu menfaatine uygun olacak şekilde müşteri ve iş veren menfaatine uygun davranmalıdır. 3. ÜRÜN- Yazılım mühendisleri ürünlerinin ve ilgili değişikliklerinin mümkün olan en üst düzey profesyönel standartları karşıladığını garanti etmelidirler. 4. JUDGMENT (Profesyönelce karar verme) Yazılım mühendisleri verecekleri kararlarda dürüstlük ve bağımsızlıklarını korumalıdırlar. 5. YÖNETİM Yazılım mühendisliği yöneticileri ve liderleri yazılım geliştirme ve sürdürme için bir etik yaklaşım benimsemelidirler. 6. PROFESSION (MESLEK) Yazılım mühendisleri mesleklerinin saygınlığını kamu yararı doğrultusunda arttırmalıdırlar. 7. İŞ ARKADAŞLARI Yazılım mühendisleri iş arkadaşlarına karşı adaletli ve destekleyici olmalıdırlar. 8. SELF (ŞAHSI) Yazılım mühendisleri kendi mesleklerine bir saygı olarak hayat boyu öğrenmeyi benimsemeli ve mesleklerini uygularken bir etik yaklaşım belirlemelidirler. 29

Etik ikilemler Üst düzey yöneticilerin politikaları ile prensipte anlaşmazlık. İş vereniniz etik kurallara aykırı davranarak hayati tehlike arz eden bir sistemi, testleri tamamlamadan kullanıcıya teslim edebilir. Askeri silah veya nükleer sistemlerin geliştirilmesine katılmak.

Örnek Yazılım Projeleri İnsülin pompası kontrol sistemi Diyabet hastaları tarafından kan şekeri seviyesini kontrol etmek için kullanılan, gömülü sistem insülin pompası Akıl sağlığı hastaları için hasta yönetim sistemi Akıl sağlığı problemleri yaşayan insanların kayıtlarını tutan bir sistem Sahradaki bir hava tahmin merkezi Uzak alanlardaki hava durumu koşulları ile ilgili bilgileri toplayan bir sistem 31

İnsülin pompası kontrol sistemi Bir kan şekeri sensöründen verileri alır ve enjekte edilmesi gereken insülin miktarını hesaplar. Hesaplama, kan şekeri seviyesindeki değişikliklere göre yapılır Mikro düzeydeki bir pompaya sinyal göndererek gereken dozdaki insülinin enjekte edilmesini sağlar Hayati tehlike arz edecek kadar düşük kan şekeri seviyeleri beyin hasarına, komaya ve ölüme neden olabilir. Yüksek kan şekeri seviyeleri uzun vadede böbrek ve göz hasarlarına neden olabilir. 32

İnsülin pompasının donanım mimarisi 33

İnsülin pompasının çalışması 34

Temel yüksek seviyeli gereksinimleri İnsülin enjekte edilmesi gerektiği anda sistem bunu yapabiliyor olmalı Sistem, mevcut kan şekeri seviyesini dengelemek için gerekli olan doğru miktar insülini enjekte edebilmeli Sistem bu ihtiyaçları her zaman karşılayabilecek şekilde tasarlanmalı ve gerçekleştirilmeli 35

Akıl sağlığı hastaları için hasta yönetim sistemi Akıl sağlığı ile ilgili problem yaşayan hastaların bilgilerini tutan ve hasta bakım sürecini destekleyen bir hasta bilgi sistemi. Çoğu akıl sağlığı problemi yaşayan hastaların sürekli olarak bir hastanede tutulmalarına gerek yoktur. Bunun yerine, hastayı iyi tanıyan bir doktorun bulunduğu bir kliniğe periyodik olarak gitmeleri yeterlidir. Hastaların katılımlarını kolaylaştırmak için bu klinikler yalnızca hastanelerde bulunmazlar. Aynı zamanda bölgesel sağlık kuruluşları ile topluluk (dernek) merkezlerinde bulunurlar. 36

MHC-PMS MHC-PMS (Mental Health Care-Patient Management System) sistemi, kliniklerde kullanılmak üzere tasarlanmış bir bilgi sistemidir. Sistem, hastaların bilgilerini tutmak için merkezi bir veritabanı kullanır ve bu veritabanına bir PC aracılığı ile ulaşılabilir. Bundan dolayı, güvenli bir ağ bağlantısı olmayan yerlerden de ulaşılabilir. Lokal sistemler güvenli bir ağ bağlantısına sahip oldukları zaman veritabanına bağlanarak hasta bilgilerini kullanabilirler. Ağ bağlantıları olmadığı zamanlarda, indirdikleri hasta kayıtları ile çalışabilirler. 37

MHC-PMS in amaçları Bilgi yönetimi, sağlık hizmetleri yöneticilerine, yerel ve ulusal hedeflere göre performans analizi yapabilmeyi sağlar. Hastalar ile ilgili güncel bilgileri sağlık görevlilerine ulaştırarak hastanın tedavi sürecini desteklemek 38

MHC-PMS nin organizasyon şeması 39

MHC-PMS nin temel özellikleri Bireysel hasta yönetimi Klinik uzmanları hastalar için kayıtlar oluşturabilir, bilgileri değiştirebilir, hastanın geçmiş kayıtlarını görebilir vb. Sistem, verileri özet olarak uzmana sunabilir. Bu sayede uzman, hastanın temel problemlerini ve sorunlarını hızlıca görebilir. Hasta gözlemleme Sistem, hastaların sorunları ile ilgili kayıtlarını inceleyerek eğer mümkünse muhtemel problemleri tespit eder ve uyarı verir. Yönetimsel raporlama Sistem aylık raporlar üreterek her bir klinikte tedavi gören hasta sayısı, hasta bakım sistemine girmiş ve sistemden çıkmış hasta sayısı, farklı kliniklere yönlendirilen hasta sayısı, yazılan ilaç sayısı ve maliyeti gibi konularda bilgi sağlar. 40

MHC-PMS de dikkat edilmesi gereken noktalar Gizlilik Hastaların bütün bilgileri gizlidir. Hastanın kendisi ve yetkili kişiler haricinde hiç kimsenin bu bilgilere ulaşmasına izin verilmez. Güvenlik Bazı akıl hastalıklarında hasta intihara meyillidir ya da diğer insanlara zarar verme potansiyeli vardır. Mümkün olduğu zaman, sistem bu tip durumlar hakkında yetkili kişileri uyarmalıdır. Sistem, her ihtiyaç duyulduğunda erişilebilir olmalıdır. Aksi taktirde güvenlikle ilgili sıkıntılar oluşabilir, hastaya doğru ilacın verilmesi mümkün olmayabilir. 41

Sahradaki bir hava tahmin merkezi Büyük miktarda yerleşim dışı arazisi olan bir ülkenin yöneticileri uzak yerlerde birkaç yüz tane hava tahmin istasyonu kurmaya karar veriyor. Hava tahmin istasyonları cihazlardan bazı bilgileri toplar. Bu bilgiler sıcaklık, basınç, gün doğumu, yağış miktarı, rüzgar hızı ve yönü bilgileridir. Hava tahmin istasyonu bu bilgileri 24 saat boyunca ölçerler. Bütün ölçüm cihazıları bir yazılım tarafından yönetilir. Bu yazılım, okunan ölçümleri alır ve toplanan verileri yönetir. 42

Hava tahmin istasyonunun şeması 43

Hava tahmin istasyonu bilgi sistemi The weather station system (Hava durumu istasyon sistemi) Bu sistem hava durumu ile ilgili bilgileri toplar; bazı başlangıç veri işleme süreçlerini gerçekleştirir ve verileri veri yönetim sistemine iletir. The data management and archiving system yönetimi ve arşivleme sistemi) Bu sistem, arazideki bütün istasyonlardan verileri toplar, bazı veri işleme süreçlerini gerçekleştirir, veriyi analiz eder ve arşivler. The station maintenance system (İstasyon bakım sistemi) (Veri Bu sistem uydu üzerinden arazideki bütün istasyonlar ile haberleşerek istasyonların sağlıklı çalışıp çalışmadıklarını gözlemler ve problemlerle ilgili raporlar üretir. 44

Ek Yazılım İşlevselliği Ölçüm cihazlarının, güç ve haberleşme sistemlerinin gözlemlenmesi ve hataların yönetim sistemine raporlanması. Sistem gücünün yönetilmesi, hava durumu uygun olduğunda bataryaların şarj edilmesi ve aynı zamanda tehlikeli hava koşulları (şiddetli rüzgar) oluştuğunda jeneratörlerin kapatılması. Yazılım güncelleştirmelerini ve konfigürasyonlarını dinamik olarak destekler ve sistemde bir hata meydana geldiğinde yedek ölçüm cihazlarını devreye alır. 45