Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

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

Benzer bir sunumlar


... konulu sunumlar: "Ders 6: Yazılım Gerçekleştirme"— Sunum transkripti:

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

2 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

3 Hedef ? Yazılım geliştirme ortamları tanıtılmakta ve kodlama yöntemleri açıklanmaktadır. Program karmaşıklığının ölçümü üzerine yaygın olarak kullanılan yöntemler ve kod gözden geçirme teknikleri bu bölümde tanıtılmaktadır. Yazılım Mühendisliği

4 Giriş Tasarım sonucu üretilen süreç ve veri tabanının fiziksel yapısını içeren fiziksel modelin bilgisayar ortamında çalışan yazılım biçimine dönüştürülmesi çalışmasıdır. Her şeyden önce bir yazılım geliştirme ortamı seçilmelidir (programlama dili, veri tabanı yönetim sistemi, yazılım geliştirme araçları (CASE)). Kaynak kodların belirli bir standartta üretilmesi düzeltme için faydalıdır. Yazılım Mühendisliği

5 Yazılım Geliştirme Ortamları
Programlama Dili Veri Tabanı Yönetim Sistemi Hazır Program Kitapçıkları CASE Araçları Yazılım Mühendisliği

6 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 Sistem programlamaya yönelik uygulamalar Yapay Zeka Uygulamaları Lisp Prolog Yazılım Mühendisliği

7 Veri Tabanı Yönetim Sistemi
Yazılım Mühendisliği

8 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ın içine gömülmüşlerdir. Bu sebeple değiştirmek zor. Birden çok kullanıcı desteği Birden fazla işlem arası paylaşım Yazılım Mühendisliği

9 Veri Modelleri Fiziksel veri modelleri verinin bilgisayarda nasıl saklandığının detayları ile ilgili kavramları sağlar. Yüksek düzey veri modelleri – Varlık: Veritabanında saklanan, gerçek dünyadan bir 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çi ve proje arasındaki çalışma ilişkisi). Yazılım Mühendisliği

10 Şemalar Herhangi bir veri modelinde veri tabanının tanımlaması ile kendisini ayırmak önemlidir. Veri tabanının tanımlanması, veri tabanı şeması olarak adlandırılır. Veri tabanı şeması tasarım sırasında belirlenir ve fazla değişmesi beklenmez. Yazılım Mühendisliği

11 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 ve kullanı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

12 Veritabanı Dilleri ve Arabirimleri
Veri tabanı tasarımı tamamlandıktan sonra bir VTYS 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

13 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 ve yardı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 edilse de 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ı gibi bilgiler içerir. VTYS yazılım modülleri bu bilgilere gereksinim duyduğunda kataloğa erişmek durumundadır. Yazılım Mühendisliği

14 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şlemlerini alır ve VT üzerinde gerçekleştirir. Diske erişim, veri yöneticisi tarafından gerçekleştirilir. Sorgu derleyicisi 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 dilinde yazılmış uygulama programından alır. Daha sonra bu komutlar veri işleme derleyicisine kaynak kodun oluşturulması amacıyla gönderilir. Yükleme, yedekleme, performans ölçme, sıralama, veri sıkıştırma, ve benzeri fonksiyonları yerine getirmek amacıyla veri tabanı yardımcı yazılımları bulunur. Yazılım Mühendisliği

15 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ından oluşmuştur. Her bir tablo bir dosya olarak saklanabilir. Ağ Modeli: Veriyi kayıt ve küme tipleri olarak gösterir. Hiyerarşik Model: Veri ağaç yapısında gösterilir. Nesne Yönelimli Model: Veri tabanı nesneler, özellikleri ve işlemleri biçiminde gösterilir. Yazılım Mühendisliği

16 Hazır Program Kütüphaneleri
Hemen hemen tüm programlama platformlarının kendilerine özgü hazır kütüphaneleri bulunmaktadır. Pascal *.tpu C *.h Java *.jar Günümüzde bu kütüphanelerin temin edilmesi internet üzerinden oldukça kolaydır. Yazılım Mühendisliği

17 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ştirme sürecinin her aşamasında üretilen bilgi ya da belgelerin bilgisayar ortamında saklanmasına ve bu yolla kolay erişilebilir ve yönetilebilir olmasına olanak sağlar. Yazılım Mühendisliği

18 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 önem kazanmaktadır. Etkin kod yazılım stili için kullanılan yöntemler: Açıklama Satırları Kod Yazım Düzeni Anlamlı İsimlendirme Yapısal Programlama Yapıları Yazılım Mühendisliği

19 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ümleri vurgulanarak açıklanır. Yazılım Mühendisliği

20 Açıklama Satırları Yazılım Mühendisliği

21 Kod Biçimlemesi Programın okunabilirliğini artırmak ve anlaşılabilirliğini kolaylaş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; } while(sayi){ s+=sayi%10; sayi/=10; }//while… Yazılım Mühendisliği

22 Anlamlı İsimlendirme Kullanılan tanımlayıcıların (değişken adları, dosya adları, veri tabanı tablo adları, fonksiyon adları, yordam adları gibi) anlamlı olarak isimlendirilmeleri anlaşılabilirliği büyük ölçüde etkilemektedir. void kokbulma (int a, int b, int c); void cevir16 (int sayi); int sayac1=0, sayac2=0; Yazılım Mühendisliği

23 Yapısal programlama Yapıları
Yapısal programlama yapıları temelde içinde goto komutlarının bulunmadığı, tek giriş ve tek çı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 bilgisayar programının sadece bu yapılar kullanılarak yazılabileceği kanıtlanmıştır. Yazılım Mühendisliği

24 Program Karmaşıklığı Program karmaşıklığı konusunda çeşitli modeller geliştirilmiştir. Bunların en eskisi ve yol göstericisi McCabe tarafından 1976 yılında geliştirilen modeldir. Bunun için önce programın akış diyagramına dönüştürülmesi, sonra da karmaşıklık ölçütünün hesaplanması gerekmektedir. Yazılım Mühendisliği

25 Akış Diyagramına Dönüştürme
Bir ya da birden fazla ardışık işlem If-Then işlemi If-Then-Else işlemi Case işlemi Yazılım Mühendisliği

26 Akış Diyagramına Dönüştürme
while/for döngüsü do while döngüsü Yazılım Mühendisliği

27 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 alt program sayısını göstermektedir. Alt program kullanılmadı ise p=1, 3 alt program kullanıldı ise p=4 tür) Yazılım Mühendisliği

28 McCabe Karmaşıklık Ölçütü
McCabe ölçütü, bugün yazılım endüstrisinde birç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 elde edilecek değerin 10'dan fazla olmaması önerilmektedir. Bir başka tanımıyla, V(G) bir programdaki kararla ilgili deyimlerin (koşullu/döngü deyimi) bir fazlasına eşit olmaktadır. Dolaysıyla bir program bileşeninde 10'dan fazla karar deyimi kullanılması o programın karmaşıklığının yüksek olduğu anlamına gelmektedir. Yazılım Mühendisliği

29 McCabe Karmaşıklık Ölçütü
Yazılım Mühendisliği

30 McCabe Karmaşıklık Ölçütü
McCabe karmaşıklığını hesaplamak için kenar ya da dallar ve düğümler sayı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) = x 1 = 4 olarak hesaplanır. Yazılım Mühendisliği

31 Olağan Dışı Durum Çözümleme
Olağan dışı durum: Bir programın çalışmasının, geçersiz veya yanlı veri oluşumu veya başka nedenlerle istenmeyen bir biçimde sonlanmasına neden olan durumdur. Genelde kabul edilen, program işletiminin sonlandırılmasının bütünüyle program denetiminde olmasıdır. Yazılım Mühendisliği

32 Olağan Dışı Durum Çözümleme
Örneğin, normalde sıfır değeri almaması gereken bir değişken sıfır değerini aldığında program, bu değişkene ilişkin bir bölme işleminde "sıfıra bölme hatası" nedeniyle işletim sistemi tarafından kesilmemeli, bu tür bir yanlış uyarısı vererek durmalıdır. Günümüzdeki programlama dilleri, bu tür olağan dışı durumlarda programın yapması gereken işlevi kapsayacak "olağan dışı durum çözümleyicileri ya da yordamları" tanımlarını içermektedir.  Yazılım Mühendisliği

33 Olağandışı Durum Çözümleme Yaklaşımları
Anında Durdurma Hata Kodu Verme Tanımlı Olağandışı Yordam Çalıştırma Hata Yordamı Çalıştırma Yazılım Mühendisliği

34 Olağandışı Durum Çözümleme Yaklaşımları
Anında Durdurma Hata Kodu Verme Yazılım Mühendisliği

35 Olağandışı Durum Çözümleme Yaklaşımları
Tanımlı Olağandışı Yordam Çalıştırma Hata Yordamı Çalıştırma Yazılım Mühendisliği

36 Kod Gözden Geçirme Bir gazete hiç bir yazı editörün onayı alınmadan basılamayacağı gibi, kod gözden geçirme olmadan da yazılım sistemi geliştirilemez. Kod gözden geçirme ile program sınama işlemleri birbirlerinden farklıdır. Kod gözden geçirme, programın kaynak kodu üzerinde yapılan bir işlemdir ve bu işlemlerde program hatalarının %3-5’lik bir kısmı yakalanabilmektedir. Yazılım Mühendisliği

37 Gözden Geçirme Sürecinin Düzenlenmesi
Hataların bulunması, ancak düzeltilmemesi hedeflenir. Olabildiğince küçük bir grup tarafından yapılmalıdır. En iyi durum deneyimli bir inceleyici kullanılmasıdır. Birden fazla kişi gerektiğinde, bu kişilerin, ileride program bakımı yapacak ekipten seç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çimde saklanmalıdır. Yazılım Mühendisliği

38 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ı olarak verilmiş mi? 3.Öbek tek giriş ve tek çıkışlı mı? 4.Öbek eğer bir işlev ise, parametrelerinin değerini değiştiriyor mu? Yazılım Mühendisliği

39 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

40 Gözden Geçirme Süreci- Veri Kullanımı
1.İşlevsel olarak ilintili bulunan veri elemanları uygun bir 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

41 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

42 Çalışma Soruları Veri tabanı ile veri tabanı yönetim sistemi arasındaki farkı belirtiniz.  Veri tabanı Yönetim Sistemi kullanarak, uygulama geliştirme zamanının hasıl kısalacağını açıklayınız.  Veri tabanı Yönetim Sistemi kullanımının yararlarını ve aksak yönlerini belirtiniz?  Kullandığınız bir veri tabanı yönetim sistemini inceleyiniz. VTD, STD, GİD, GTD dillerinin özelliklerini araştırınız. Kodlama stilleri ile programlama dilleri arasındaki ilişkiyi belirtiniz. Bildiğiniz bir programlama dilinin, yapısal programlama yapılarından hangilerini doğrudan desteklediğini, hangilerini desteklemediğini araştırınız. Desteklenmeyen yapıların, bu programlama dilinde nasıl gerçekleştirilebileceğini belirtiniz.  Verilen bir N doğal sayısının asal olup olmadığını belirleyen bir programı dört değişik biçimde yazınız. Programlar arasındaki zaman farklılıklarını ölçünüz. Program geliştirirken kullandığınız olağan dışı durum çözümleme yöntemlerini açıklayınız?  Yazılım Mühendisliği


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

Benzer bir sunumlar


Google Reklamları