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

Slides:



Advertisements
Benzer bir sunumlar
Yazılım Mühendisliği Bölüm - 6 Gerçekleştirim
Advertisements

ODTÜ Bilgisayar Mühendisliği Tanıtım Günleri Temmuz 2005.
Algoritma.  Algoritma, belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir.  Başka bir deyişle; bir sorunu çözebilmek için gerekli olan.
Veri Tabanı Yönetim Sistemleri Hafta 1. 2 Temel Kavramlar Veri Olguların, kavramların, veya talimatların, insan tarafından veya otomatik yolla iletişim,
Beşinci hafta. Müfredat programı Ödev teslim Projelerini teslim edenler; Belediye Projesi -> Tamam Ulaşım Projesi -> Geldi ama kavramsal tasarım yerine.
T.C. ORDU VALİLİĞİ İlköğretim Müfettişleri Başkanlığı TAM ÖĞRENME MODELİ TAM ÖĞRENME MODELİ.
BÖLÜM 1 TEMEL KAVRAMLAR. BÖLÜM 1 TEMEL KAVRAMLAR.
Zihinsel engellilerin sınıflandırılması
TC Windows Editörü DevC++. KURULUM PROGRAMIN KURULACAĞI YER BURADA BELİRLENİYOR.
İNSAN BİLGİSAYAR ETKİLEŞİMİ: BİLİŞSEL BOYUT III. İBE alanında etkileşimi anlamaya çalışan uzmanlar, özellikle şema ve zihinsel modeller üzerinde yoğunlaşırlar.
Program Tasarım Modelleri
Bağlama ve Kapsam Kavramları
Yazılım Mühendisliği1[ 3.hft ]. Yazılım Mühendisliği2 Yazılım İ sterlerinin Çözümlemesi Yazılım Yaşam Çevrimi “ Yazılım Yaşam çevrimin herhangi bir yazılım.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
ÇOK BOYUTLU SİNYAL İŞLEME
Bölüm 2 C Dilinin Temelleri
BİLGİSAYAR PROGRAMLAMA DERSİ
Algoritma ve Programlamaya Giriş
Sistem Tasarımı Sistem Tasarımı İş Koşul E H Yazılım Mühendisliği.
Erken çocukluk döneminde fen ve matematik kavramlarının gelişimi
PROGRAMLI ÖĞRETİM Tanımı:
DENEYSEL TERTİPLER VE PAZAR DENEMESİ
Problem Çözme ve Algoritmalar
Yapay Sinir Ağı Modeli (öğretmenli öğrenme) Çok Katmanlı Algılayıcı
MODEL YETERSİZLİKLERİNİ DÜZELTMEK İÇİN DÖNÜŞÜMLER VE AĞIRLIKLANDIRMA
BÖLÜM 1 TEMEL KAVRAMLAR. BÖLÜM 1 TEMEL KAVRAMLAR.
Bilgi ve İletişim Teknolojileri
BİYOİNFORMATİK NEDİR? BİYOİNFORMATİKTE KULLANILAN SINIFLAMA YÖNTEMLERİ
Veri Tabanı Yönetim Sistemleri 1 Ders 10 (ek) VTYS Yaşam Döngüsü
Buluş nedir?.
PROBLEM ÇÖZME VE ALGORİTMALAR
Yazılım Mühendisliği Ders 1: Giriş.
Bilgisayar Mühendisliğine Giriş
3.hafta METODLAR.
Bölüm 7 İfadeler ve atamalar.
Okul Öncesi Dönemde Fen Eğitimi
Bilgisayar Yazılımları
NİŞANTAŞI ÜNİVERSİTESİ
Benzetim 11. Ders İmalat Yönetimde Benzetim.
EĞİTİME GİRİŞ Mehmet Akif Ersoy Üniversitesi
CS0: TOBB ETÜ’DE BİLGİSAYAR MÜHENDİSLİĞİNE GİRİŞ DERSİ
PROGRAM DEĞERLENDİRME
Geçerlik ve Kullanışlılık
NİŞANTAŞI ÜNİVERSİTESİ
Doğrusal Mantık Yapısı İle Problem Çözme
Evren-Örneklem, Örnekleme Yöntemleri 2
ÖLÇME-DEĞERLENDİRME 1.DERS
Bilgisayar Bilimi Koşullu Durumlar.
Karar Yapıları İle Problem Çözme
Tezin Olası Bölümleri.
VERİTABANI YÖNETİM SİSTEMLERİ 3-Normalizasyon
NİŞANTAŞI ÜNİVERSİTESİ
Fonksiyonlar ve Alt Programlar
6. DÖNGÜ (TEKRARLAMA) DEYİMLERİ
Değerler ve Değişkenler
İşlemciler.
Ders 2: Yazılım Geliştirme
DİL GELİŞİMİ KURAMLARI - II
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Bilgisayar Bilimi Programlama Yapısı.
NİŞANTAŞI ÜNİVERSİTESİ
BLM113 Bilgisayar Bilimlerine Giriş
Veri ve Türleri Araştırma amacına uygun gözlenen ve kaydedilen değişken ya da değişkenlere veri denir. Olgusal Veriler Yargısal Veriler.
NİŞANTAŞI ÜNİVERSİTESİ
Ölçmede Hata Kavramı ve Hata Türleri
MTM216 GÖRSEL PROGRAMLAMA
Sınıf Öğretmenlerinin Eğitsel Amaçlı İnternet Kullanım Öz Yeterlikleri
PROBLEM ÇÖZME TEKNİKLERİ
Bilimsel Araştırma Yöntemleri
Sunum transkripti:

Ders 6: Yazılım Gerçekleştirme 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

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

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

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

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

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

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

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

Ş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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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) = 11 - 9 + 2 x 1 = 4 olarak hesaplanır. Yazılım Mühendisliği

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

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

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

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

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

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

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

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

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

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

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

Ç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