ism 206 optimization theory and...
Post on 28-Dec-2019
8 Views
Preview:
TRANSCRIPT
Genel Bakış Giriş
Yazılım Gerçekleştirme Ortamları
Kodlama Stili
Program Karmaşıklığı
Olağan Dışı Durum Çözümleme
Kod Gözden Geçirme
Yazılım Mühendisliği 2
Hedef ?
Yazılım geliştirme ortamlarıtanıtılmakta ve kodlama yöntemleriaçıklanmaktadır.Program karmaşıklığının ölçümüüzerine yaygın olarak kullanılanyöntemler ve kod gözden geçirmeteknikleri bu bölümde tanıtılmaktadır.
Yazılım Mühendisliği 3
Giriş Tasarım sonucu üretilen süreç ve veri
tabanının fiziksel yapısını içeren fizikselmodelin bilgisayar ortamında çalışan yazılımbiçimine dönüştürülmesi çalışmasıdır.
Her şeyden önce bir yazılım geliştirmeortamı seçilmelidir (programlama dili, veritabanı yönetim sistemi, yazılım geliştirmearaçları (CASE)).
Kaynak kodların belirli bir standarttaüretilmesi düzeltme için faydalıdır.
Yazılım Mühendisliği 4
Yazılım Geliştirme Ortamları
Yazılım Mühendisliği 5
Programlama Dili
Veri Tabanı Yönetim Sistemi
Hazır Program
KitapçıklarıCASE
Araçları
Programlama Dilleri Geliştirilecek Uygulamaya göre Programlama Dili seçilmelidir.◦ Veri İşleme Yoğunluklu Uygulamalar Cobol, Görsel Programlama Dilleri ve Veri Tabanları
◦ Hesaplama Yoğunluklu Uygulamalar Fortran C Paralel Fortran ve C
◦ Süreç ağırlıklı uygulamalar Assembly C
◦ Sistem programlamaya yönelik uygulamalar C
◦ Yapay Zeka Uygulamaları Lisp Prolog
Yazılım Mühendisliği 6
VTYS dosya yapısından farkları Katalog Bilgisi, Veri Sözlüğü Varlığı
Veri Soyutlama◦ Kullanıcıdan verinin saklanması konusundaki
detayları gizleyerek veri soyutlamasının sağlanması
Program-veri, program-işlem bağımsızlığı◦ Geleneksel dosya işleme yöntemlerinde veri
dosyalarının yapısı bu dosyalara erişen programlarıniçine gömülmüşlerdir. Bu sebeple değiştirmek zor.
Birden çok kullanıcı desteği
Birden fazla işlem arası paylaşımYazılım Mühendisliği 8
Veri Modelleri
Yazılım Mühendisliği 9
• Fiziksel veri modelleri verinin bilgisayarda nasılsaklandığının detayları ile ilgili kavramları sağlar.
• Yüksek düzey veri modelleri– Varlık: Veritabanında saklanan, gerçek dünyadanbir nesne veya kavramdır (proje, isçi).– Özellik: Varlığı anlatan bir özelliği gösterir(isçinin adı, ücreti).– İlişki: Birden fazla varlık arasındaki ilişkidir (isçive proje arasındaki çalışma ilişkisi).
Şemalar Herhangi bir veri modelinde veri
tabanının tanımlaması ile kendisiniayırmak önemlidir.
Veri tabanının tanımlanması, veri tabanışeması olarak adlandırılır.
Veri tabanı şeması tasarım sırasındabelirlenir ve fazla değişmesi beklenmez.
Yazılım Mühendisliği 10
VTYS Mimarisi VTYS mimarisi üç seviyede tanımlanabilir.◦ İçsel Düzey: Veri tabanının fiziksel saklanma
yapısını açıklar.
◦ Kavramsal Düzey: Kavramsal şema içerir vekullanıcılar için veritabanının yapısını açıklar.
◦ Dışsal Düzey: Dış şemalar ve kullanıcıgörüşlerini içerir.
Yazılım Mühendisliği 11
Veritabanı Dilleri ve ArabirimleriVeri tabanı tasarımı tamamlandıktan sonra birVTYS seçilir.
VTYS Dilleri
Veri Tanımlama Dili (DDL)
Veri tabanı tabloları oluşturma
Veri Manipülasyon Dili (DML)
Veri tabanı tablolarına kayıt ekleme, çıkarma, üzerinde değişiklik yapma vs.
Veri Denetim Dili (DCL)
Veri tabanı tabloları üzerinde yetkilendirmeleri denetler.
Hareket Denetim Dili (TCL)
Veri tabanı tablolarındaki değişikliklerin saklanması veya önceki duruma getirilmesi
Veri Sorgulama Dili (DQL)
Veri tabanı tabloları üzerinde istenen sorgulamaları yapma.
Yazılım Mühendisliği
Veri Tabanı Sistem Ortamı Tipik bir VTYS yazılımı bileşenleri, VTYS Kataloğu, veri
tabanı derleyicisi (VTD), veri yöneticisi, VT işlemcisi veyardımcı yazılımlar biçimindedir.
Veri tabanı ve VTYS kataloğu genellikle disk üzerinde saklanır.Diske erişim öncelikle işletim sistemi tarafından kontrol edilsede yüksek düzeyde saklanmış veri yöneticisi modülü disküzerinde bulunan VTYS bilgilerine erişimi denetler.
VT derleyicisi şema tanımlarını işler ve şema belirtimlerini(meta-veri) VTYS kataloğunda saklar.
Katalog dosya adı, veri adedi, her dosya için saklama detayları,şemalar arasındaki mapping bilgileri ve sınırlamaları gibibilgiler içerir.
VTYS yazılım modülleri bu bilgilere gereksinim duyduğundakataloğa erişmek durumundadır.
Yazılım Mühendisliği 13
Veri Tabanı Sistem Ortamı İşletim ortamındaki veri tabanı işlemcisi, işletim sırasında veri
tabanına erişimi yönetir. Erişim veya güncelleme işlemlerinialır ve VT üzerinde gerçekleştirir.
Diske erişim, veri yöneticisi tarafından gerçekleştirilir. Sorguderleyicisi etkileşimli olarak girilmiş yüksek düzeyli sorgularıgerçekleştirir.
Her sorgu öncelikle çözülür ve analiz edilir ve işletim zamanıişlemcisinin bu isteği gerçekleştirmesi için çağrı yapılır.
Ön derleme veri işleme komutlarını bir programlama dilindeyazılmış uygulama programından alır. Daha sonra bu komutlarveri işleme derleyicisine kaynak kodun oluşturulması amacıylagönderilir.
Yükleme, yedekleme, performans ölçme, sıralama, verisıkıştırma, ve benzeri fonksiyonları yerine getirmek amacıylaveri tabanı yardımcı yazılımları bulunur.
Yazılım Mühendisliği 14
VTYS’nin SınıflandırılmasıSınıflandırmalar kullanılan Veri Modeline göre
yapılır.
İlişkisel Model: Veri tabanı tablo yığınındanoluşmuştur. Her bir tablo bir dosya olaraksaklanabilir.
Ağ Modeli: Veriyi kayıt ve küme tipleri olarakgösterir.
Hiyerarşik Model: Veri ağaç yapısındagösterilir.
Nesne Yönelimli Model: Veri tabanı nesneler,özellikleri ve işlemleri biçiminde gösterilir.
Yazılım Mühendisliği 15
Hazır Program Kütüphaneleri Hemen hemen tüm programlama
platformlarının kendilerine özgü hazırkütüphaneleri bulunmaktadır.
Pascal *.tpu C *.h Java *.jar
Günümüzde bu kütüphanelerin teminedilmesi internet üzerinden oldukça kolaydır.
Yazılım Mühendisliği 16
CASE Araç ve Ortamları Günümüzde bilgisayar destekli yazılım
geliştirme ortamları oldukça gelişmiştir.
CASE araçları yazılım geliştirmesürecinin her aşamasında üretilen bilgi yada belgelerin bilgisayar ortamındasaklanmasına ve bu yolla kolay erişilebilirve yönetilebilir olmasına olanak sağlar.
Yazılım Mühendisliği 17
Kodlama Stili Hangi platformda geliştirilirse geliştirilsin
yazılımın belirli bir düzende kodlanması,yazılımın yaşam döngüsü açısından önemkazanmaktadır.
Etkin kod yazılım stili için kullanılanyöntemler:◦ Açıklama Satırları◦ Kod Yazım Düzeni◦ Anlamlı İsimlendirme◦ Yapısal Programlama Yapıları
Yazılım Mühendisliği 18
Açıklama Satırları Modülün başlangıcına ◦ genel amaç, ◦ işlevi,◦ desteklenen platformlar, ◦ eksikler, ◦ düzeltilen yanlışlıklar
gibi genel bilgilendirici açıklamalar yapılır.
Aynı zamanda modülün kritik bölümlerivurgulanarak açıklanır.
Yazılım Mühendisliği 19
Kod BiçimlemesiProgramın okunabilirliğini artırmak ve anlaşılabilirliğinikolaylaştırmak amacıyla açıklama satırlarının kullanımının yanı sıra,belirli bir kod yazım düzeninin de kullanılması gerekmektedir.int basamak (int sayi){int s=0;while(sayi){ s+=sayi%10; sayi/=10;}return s;
}
int basamak (int sayi){int s=0;
while(sayi){s+=sayi%10;sayi/=10;
}//while…return s;
}Yazılım Mühendisliği 21
Anlamlı İsimlendirme Kullanılan tanımlayıcıların (değişken
adları, dosya adları, veri tabanı tabloadları, fonksiyon adları, yordam adlarıgibi) anlamlı olarak isimlendirilmelerianlaşılabilirliği büyük ölçüdeetkilemektedir.
void kokbulma (int a, int b, int c); void cevir16 (int sayi); int sayac1=0, sayac2=0;
Yazılım Mühendisliği 22
Yapısal programlama Yapıları Yapısal programlama yapıları temelde içinde
goto komutlarının bulunmadığı, tek giriş vetek çıkışlı öbeklerden oluşan yapılardır.Bunlar temelde;◦ Ardışıl işlem yapıları,◦ Koşullu işlem yapıları,◦ Döngü yapıları.
Teorik olarak herhangi bir bilgisayarprogramının sadece bu yapılar kullanılarakyazılabileceği kanıtlanmıştır.
Yazılım Mühendisliği 23
Program Karmaşıklığı Program karmaşıklığı konusunda çeşitli
modeller geliştirilmiştir.
Bunların en eskisi ve yol göstericisiMcCabe tarafından 1976 yılındageliştirilen modeldir.
Bunun için önce programın akışdiyagramına dönüştürülmesi, sonra dakarmaşıklık ölçütünün hesaplanmasıgerekmektedir.
Yazılım Mühendisliği 24
Akış Diyagramına Dönüştürme
Yazılım Mühendisliği
Bir ya da birden fazla ardışık işlem
If-Then işlemi If-Then-Else işlemi Case işlemi
25
McCabe Karmaşıklık ÖlçütüV(G)= k – d + 2p
K: Diyagramdaki kenar çizgi sayısı
D: Diyagramdaki düğüm sayısı
P: Programdaki bileşen sayısı (ana program ve ilgili altprogram sayısını göstermektedir. Alt programkullanılmadı ise p=1, 3 alt program kullanıldı ise p=4tür)
Yazılım Mühendisliği 27
McCabe Karmaşıklık Ölçütü
Yazılım Mühendisliği 28
McCabe ölçütü, bugün yazılım endüstrisindebirçok uygulamada kullanılmaktadır.
Herhangi bir program bileşeni için V(G) ölçütü,yalnızca o bileşen için uygulandığında eldeedilecek değerin 10'dan fazla olmamasıönerilmektedir.
Bir başka tanımıyla, V(G) bir programdaki kararlailgili deyimlerin (koşullu/döngü deyimi) birfazlasına eşit olmaktadır.
Dolaysıyla bir program bileşeninde 10'dan fazlakarar deyimi kullanılması o programınkarmaşıklığının yüksek olduğu anlamınagelmektedir.
McCabe Karmaşıklık Ölçütü
Yazılım Mühendisliği 30
McCabe karmaşıklığını hesaplamakiçin kenar ya da dallar ve düğümlersayılıp formülün uygulanmasıgerekir. Bu örnekte:
k = 11 Kenar sayısıd = 9 Düğüm sayısıp = 1 Bileşen sayısı
karmaşıklık:
V(G) = 11 - 9 + 2 x 1 = 4
olarak hesaplanır.
Olağan Dışı Durum Çözümleme
Olağan dışı durum: Bir programınçalışmasının, geçersiz veya yanlı verioluşumu veya başka nedenlerleistenmeyen bir biçimde sonlanmasınaneden olan durumdur.
Genelde kabul edilen, program işletimininsonlandırılmasının bütünüyle programdenetiminde olmasıdır.
Yazılım Mühendisliği 31
Olağan Dışı Durum Çözümleme
Yazılım Mühendisliği 32
Örneğin, normalde sıfır değeri almamasıgereken bir değişken sıfır değerini aldığındaprogram, bu değişkene ilişkin bir bölmeişleminde "sıfıra bölme hatası" nedeniyleişletim sistemi tarafından kesilmemeli, bu türbir yanlış uyarısı vererek durmalıdır.
Günümüzdeki programlama dilleri, bu türolağan dışı durumlarda programın yapmasıgereken işlevi kapsayacak "olağan dışıdurum çözümleyicileri ya da yordamları"tanımlarını içermektedir.
Olağandışı Durum Çözümleme Yaklaşımları
Yazılım Mühendisliği 33
Anında Durdurma Hata Kodu Verme
Tanımlı Olağandışı Yordam Çalıştırma
Hata Yordamı Çalıştırma
Olağandışı Durum Çözümleme Yaklaşımları
Yazılım Mühendisliği 35
Tanımlı Olağandışı Yordam Çalıştırma
Hata Yordamı Çalıştırma
Kod Gözden Geçirme Bir gazete hiç bir yazı editörün onayı
alınmadan basılamayacağı gibi, kod gözdengeçirme olmadan da yazılım sistemigeliştirilemez.
Kod gözden geçirme ile program sınamaişlemleri birbirlerinden farklıdır.
Kod gözden geçirme, programın kaynakkodu üzerinde yapılan bir işlemdir ve buişlemlerde program hatalarının %3-5’lik birkısmı yakalanabilmektedir.
Yazılım Mühendisliği 36
Gözden Geçirme Sürecinin Düzenlenmesi
Hataların bulunması, ancak düzeltilmemesihedeflenir.
Olabildiğince küçük bir grup tarafından yapılmalıdır.En iyi durum deneyimli bir inceleyicikullanılmasıdır. Birden fazla kişi gerektiğinde, bukişilerin, ileride program bakımı yapacak ekiptenseçilmesinde yarar vardır.
Kalite çalışmalarının bir parçası olarak ele alınmalıve sonuçlar düzenli ve belirlenen bir biçimdesaklanmalıdır.
Yazılım Mühendisliği 37
Gözden Geçirme Süreci- Öbek Arayüzü
1. Her öbek tek bir işlevsel amacı yerine getiriyor mu?
2.Öbek adı, işlevini açıklayacak biçimde anlamlı olarakverilmiş mi?
3.Öbek tek giriş ve tek çıkışlı mı?
4.Öbek eğer bir işlev ise, parametrelerinin değerinideğiştiriyor mu?
Yazılım Mühendisliği 38
Gözden Geçirme Süreci- Açıklamalar
1. Öbek, doğru biçimde giriş açıklama satırları içeriyor mu?2. Giriş açıklama satırları, öbeğin amacını açıklıyor mu?3.Giriş açıklama satırları, parametreleri, küresel değişkenleri içeren
girdileri ve kütükleri tanıtıyor mu?4.Giriş açıklama satırları, çıktıları (parametre, kütük vb) ve hata iletilerini
tanımlıyor mu?5. Giriş açıklama satırları, öbeğin algoritma tanımını içeriyor mu?6.Giriş açıklama satırları, öbekte yapılan değişikliklere ilişkin
tanımlamaları içeriyor mu?7.Giriş açıklama satırları, öbekteki olağan dışı durumları tanımlıyor mu?8.Giriş açıklama satırları, Öbeği yazan kişi ve yazıldığı tarih ile ilgili
bilgileri içeriyor mu?9. Her paragrafı açıklayan kısa açıklamalar var mı?
Yazılım Mühendisliği 39
Gözden Geçirme Süreci- Veri Kullanımı
1.İşlevsel olarak ilintili bulunan veri elemanları uygunbir mantıksal veri yapısı içinde gruplanmış mı?
2.Değişken adları,işlevlerini yansıtacak biçimde anlamlımı?
3.Değişkenlerin kullanımları arasındaki uzaklık anlamlımı?
4.Her değişken tek bir amaçla mı kullanılıyor?5.Dizin değişkenleri kullanıldıkları dizinin sınırları
içerisinde mi tanımlanmış?6.Tanımlanan her gösterge değişkeni için bellek ataması
yapılmış mı?Yazılım Mühendisliği 40
Gözden Geçirme Süreci- Sunuş
1. Her satır, en fazla bir deyim içeriyor mu?2.Bir deyimin birden fazla satıra taşması durumunda,
bölünme anlaşılabilirliği kolaylaştıracak biçimde anlamlımı?
3. Koşullu deyimlerde kullanılan mantıksal işlemler yalın mı?4.Bütün deyimlerde, karmaşıklığı azaltacak şekilde
parantezler kullanılmış mı?5.Bütün deyimler, belirlenen program stiline uygun olarak
yazılmış mı?6.Öbek yapısı içerisinde akıllı "programlama hileleri"
kullanılmış mı?
Yazılım Mühendisliği 41
Çalışma Soruları1. Veri tabanı ile veri tabanı yönetim sistemi arasındaki farkı belirtiniz.2. Veri tabanı Yönetim Sistemi kullanarak, uygulama geliştirme
zamanının hasıl kısalacağını açıklayınız.3. Veri tabanı Yönetim Sistemi kullanımının yararlarını ve aksak
yönlerini belirtiniz?4. Kullandığınız bir veri tabanı yönetim sistemini inceleyiniz. VTD,
STD, GİD, GTD dillerinin özelliklerini araştırınız.5. Kodlama stilleri ile programlama dilleri arasındaki ilişkiyi belirtiniz.6. Bildiğiniz bir programlama dilinin, yapısal programlama
yapılarından hangilerini doğrudan desteklediğini, hangilerinidesteklemediğini araştırınız. Desteklenmeyen yapıların, buprogramlama dilinde nasıl gerçekleştirilebileceğini belirtiniz.
7. Verilen bir N doğal sayısının asal olup olmadığını belirleyen birprogramı dört değişik biçimde yazınız. Programlar arasındaki zamanfarklılıklarını ölçünüz.
8. Program geliştirirken kullandığınız olağan dışı durum çözümlemeyöntemlerini açıklayınız?
Yazılım Mühendisliği 42
top related