ism 206 optimization theory and...

42
Yazılım Mühendisliği Ders 6: Yazılım Gerçekleştirme

Upload: others

Post on 28-Dec-2019

7 views

Category:

Documents


0 download

TRANSCRIPT

Yazılım Mühendisliği

Ders 6: Yazılım Gerçekleştirme

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

Veri Tabanı Yönetim Sistemi

Yazılım Mühendisliği 7

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

Açıklama Satırları

Yazılım Mühendisliği 20

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

Akış Diyagramına Dönüştürme

Yazılım Mühendisliği

while/for döngüsü do while döngüsü

26

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 29

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 34

Anında Durdurma

Hata Kodu Verme

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