YAZILIM KALİTE METRİKLERİ

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "YAZILIM KALİTE METRİKLERİ"

Transkript

1 BGM 576 SOFTWARE TEST AND QUALITY EVALUATION TECHNIQUES ŞEHİR UNIVERSITY INFORMATION SECURITY ENGINEERING GRADUATE LESSON YAZILIM KALİTE METRİKLERİ Dr.Savaş Öztürk April 28th, 2017

2 Yazılım Kalitesinin Değerlendirilmesi Değerlendirme neden zor? Yazılım Kalitesi ölçme işlemi zor bir süreç olduğu için sıklıkla ihmal edilir. Bu iş için zaman ve bütçe ayrılmaz. Yazılım Kalitesi bir çok detaya sahip, öğrenilmesi zor bir konudur. Quality is Free, but it is not a gift. Crosby 2

3 Yazılım Kalitesinin Değerlendirilmesi Katkıları neler? Sorunların erken bulunması maliyeti önemli oranda düşürür. Yönetim için bir ihtiyaçtır. Projenin ya da organizasyonun anlık durumunu gösterir.... 3

4 Neden kalitede sıkıntı yaşanıyor? Kısaltılmış zaman tablosu Azaltılmış bütçeler Personel değişiklikleri Kullanıcı isteklerinde değişiklikler Projenin genişlemesi Hata düzeltilmesi Etkili test edilmemesi 4

5 Neden ölçüyoruz? Konuştuğun şeyi ölçebiliyor ve rakamlarla ifade edebiliyorsan, o şey hakkında bir şeyler biliyorsun demektir. Aksi takdirde, bildiğin şeyler değersiz ve tatmin etmeyen bilgi kalabalığıdır. 5

6 Neden ölçüyoruz? Ölçemediğinizi kontrol edemezsiniz' Gelişmenin tek yolu! CMM(Capability Maturity Model) için gerekli Yazılım Sürecinin Gelişmesi için gerekli Yazılım Gelişimi Boyunca Ölçüm; Verimliliği Belirler. Kaliteyi Değerlendirir. Tahmin Yaptırır. Risk Analizi Yaptırır. 6

7 Neden Ölçüyoruz? Hata bulma Tersine mühendislik Efor tahmini Bileşen hata sınıflandırması Bakım yapılabilirlik Kalite Kalite tahmini İstatistiksel süreç kontrolü Test durumu seçimi Test edilebilirlik değerlendirmesi Tasarım hatası tespiti 7

8 Yazılım Kalite Ölçüleri - 1 Büyüklük (Size) Karmaşıklık (Complexity) Yapısallık (Structure) Modülerlik (Modularity) Nesneye Yönelik (Object Oriented) LOC (SLOC,CLOC,BLoC, C&SLOC), Volume Çevrimsel Karmaşıkık (Cyclomatic Complexity), Mantıksal Yoğunluk (Logical Density) Esas Karmaşıklık (Essential Complexity) Entegrasyon Karmaşıklığı(Integration Complexity) Bağımlı Sınıf Sayısı (Coupling Between Objects), Sınıf İçindeki Metod Sayısı (Weighted Methods/Class), Türetilmiş Alt Sınıf Sayısı (Number of Children)... 8

9 Yazılım Kalite Ölçüleri - 2 Bakım Yapılabilirlik (Maintainability) Gereksiz Kod (Redundant Code) İşlev Noktaları (Function Points) Gramer (Grammar) Kod Tekrarları (Duplicate Code) 3MI, 4MI Ölü Kod/Veri Sayısı (Dead code/data counts) İdeal olarak orjinal dökümantasyondan üretilir ya da son çare olarak geri gelme yöntemiyle kullanılabilir. GOTO, ALTER, I/O, IF, EVALUATE, max, IF/EVALUATE de bulunan koşulları sayıları Kopyala/Yapıştır ile üretile kod satır sayıları 9

10 Akademik Tarihçe Metrik Adı Yılı McCabe Cyclomatic Complexity 1976 Myers Fan-In & Fan-Out 1978 Albrecht Function Points 1979 Halstead Software Science 1977 Yourdon & Constantine Fan-In & Fan-Out 1979 Basili & Perricone LOC 1984 Withrow LOC 1990 Capers-Jones Function Points & LOC 1992 Lorentz OO 11 Metrics 1993 Chidamber & Kemerer OO 6 Metrics 1994 Robert Martin OO 5 Metrics

11 Metriklere Kimin İhtiyacı Var? Yöneticiler Program yönetimi Proje yöneticileri Proje yönetimi ve kalite takibi Programcılar Birim testleri ve kalite takibi Testçiler Test script doğrulama Sürdürücüler(Maintainers) Kavrama, tahminleme, test etme ve kalite Metrikler ortak anlayış ve iletişimi mümkün kılar 11

12 YTKDM de en çok kullanılan metrikler Satır sayısı metrikleri (4 adet) Karmaşıklık metrikleri (4 adet) Nesne Yönelimli metrikler (10 adet) Halstead (6 adet) Bakım Yapılabilirlik İndeksi (2 adet) 12

13 Satır Sayısı - LOC Toplam satır sayısı Boş olan / olmayan (blank / non-blank) SLOC (source LOC) : Comment ve boş olanların haricindeki LLOC (logical LOC) : Program ifadesi sayısı comment mixed (code + comment) for (i = 0; i < 100; i += 1) printf("hello"); /* Burada kaç satır var? */ SLOC = 1 ; LLOC = 2 (for, printf) 13

14 Dil Farklılıkları C C COBOL COBOL #include <stdio.h> int main(void) { printf("hello World"); return 0; } Lines of code: 5 (boşluklar hariç) #include <stdio.h> int main(void) { printf("hello World"); return 0; } IDENTIFICATION DIVISION PROGRAM-ID. HELLOWORLD * ENVIRONMENT DIVISION CONFIGURATION SECTION SOURCE-COMPUTER. RM-COBOL OBJECT-COMPUTER. RM-COBOL DATA DIVISION FILE SECTION PROCEDURE DIVISION MAIN-LOGIC SECTION BEGIN DISPLAY " " LINE 1 POSITION 1 ERASE EOS DISPLAY "Hello world!" LINE 15 POSITION STOP RUN MAIN-LOGIC-EXIT EXIT IDENTIFICATION DIVISION PROGRAM-ID. HELLOWORLD * ENVIRONMENT DIVISION CONFIGURATION SECTION SOURCE- COMPUTER. RM-COBOL OBJECT- COMPUTER. RM-COBOL DATA DIVISION FILE SECTION PROCEDURE DIVISION MAIN-LOGIC SECTION BEGIN DISPLAY " " LINE 1 POSITION 1 ERASE EOS DISPLAY "Hello world!" LINE 15 POSITION STOP RUN MAIN-LOGIC- EXIT EXIT. Lines of code: 17 (boşluklar hariç) Lines of code: 5 (excluding whitespace) Lines of code: 17 (excluding whitespace) 14

15 Projeler Büyür! Year Operating System SLOC (Million) 1993 Windows NT Windows NT Windows NT Windows 2000 more than Windows XP Windows Server Windows 8.1???? 15

16 LOC Avantajlar 1/2 Hesaplaması kolay LLOC un hesaplanması için parser gerekli Tek satırda içiçe geçmiş ifadeler kullanılmışsa anlamsız Yazılım büyüklük ve geliştirme ihtiyacı kestirimini hesaplamada kullanılıyor. (COCOMO) Bakım yapılabilirlik metriğinin (MI) hesaplanmasında kullanılıyor. 3MI toplam satır sayısı, 4MI ise comment satırı sayısına bağlı olarak hesaplanıyor. 16

17 LOC Avantajlar 2/2 Hata sayısı ile orantılı Büyük modüller genellikle daha çok hata içerir. Hata sayısı kestirimi için daha iyi ama daha karmaşık yöntemler var. 17

18 LOC - Dezavantajlar Programın yapısını ihmal eder. Program kodu metinden daha fazlasıdır! Farklı geliştiriciler tarafından farklı programlama dillerinde yazılmış modülleri karşılaştırmak zordur. Bazı diller gereğinden uzun kod yazmayı gerektirir. Built-in fonksiyonalitenin olması ya da olmaması (örneğin Arayüz geliştirme) Yapısal uzunluk (örneğin C deki h dosyaları) Bazı geliştiriciler LOC miktarına göre ücret alır! Elle yazılmış kod & Otomatik üretilmiş kod 18

19 LOC Eşik değerleri Metod uzunluğu : 4 ila 40 program satırı public void HelloWorld () { System.out.println ( Hello World! ); } (Not: McCabe fonksiyon başlık satırını saymıyor. LOC = 3) (Not: McCabe de eşik uyarısı almadan 60 a kadar esnetilebiliyor : 30 program + 10 boş + 10 yorum + 10 karışık) Dosya uzunluğu : 4 ila 400 program satırı (Bir dosyada en azından bir, en fazla 10 metod olduğu varsayılırsa) 19

20 LOC Öneriler Bir dosyanın en az %30 u, en fazla %75 i yorum satırı olmalıdır. Eğer dosyanın üçte birinden daha az yorum satırı varsa, yetersizdir ya da zayıf ifade edilmiştir. Eğer %75 ten fazla yorum satırı varsa o artık bir program değil, dokümandır. İstisna : Bazen bir iyi dokümante edilmiş bir header dosyasında yorum satırı oranı %75 i geçebilir. 20

21 Halstead Metrikleri Maurice Halstead tarafından 1977 de geliştirildi ve o zamandan beri etkin şekilde kullanıldı ve test edildi. Kod karmaşıklığı için sağlam bir gösterge Sıklıkla bakım yapılabilirlik metriği olarak kullanılır. OO yazılımlar için değil, prosedürel yazılımlar (COBOL, Fortran) için uygundur. 21

22 Halstead Kaynak kodu bir dizi işaretçi olarak ve her işaretçiyi de operatör ya da operand olarak sınıflandırarak yapılan bir yorumlamaya dayalı metriklerdir. Bir metod içersindeki operatör ve operand sayılarının 30 u geçmemesi beklenmektedir. Toplam Length : N = N1+N2 Vocabulary : n = n1 + n2 Tekil Operatörler N1 n1 Operandlar N2 n2 22

23 Operatörler ve Operandlar 23

24 Halstead metrikleri 24

25 Halstead - Örnek i = i+1 Toplam Tekil Operatörler N1 = 2 (=, +) n1 = 2 (=, +) Operandlar N2 = 3 (i, i, 1) n2 = 2 (i, 1) i++ Toplam Tekil Operatörler N1 = 1 (++) n1 = 1 (++) Operandlar N2 = 1 (i) n2 = 1 (i) Metrik i=i+1 i++ Volume V (NLog2n) Difficulty D (n1/2)*(n2/n2) Effort E (V*D) V =12 V =2 D = 1.5 D = 0.5 E = 18 E = 1 SONUÇ : i=i+1 yerine i++ kullanıldığında efor 18 kat azalıyor. 25

26 Çevrimsel Karmaşıklık 1976 da McCabe tarafından önerildi. Bir program modülünde doğrusal olarak bağımsız yolların(kontrol akışı) sayısını ölçer. En yaygın ve kabul edilen yazılım metriklerinden birisidir, programlama dili ve yazım şeklinden bağımsızdır. Bir programın doğruluğu ve güvenirliği için en kapsamlı ölçütdür. Bir metod ya da sınıfta icra edilmesi gereken test sayısı hakkında fikir verir. (Test sayısı >= ÇK) 26

27 Akış Diyagramı 0 function_test(y) 0 { int x=3; 1 if ( y < 4 ) 2 x=sin(y); else 3 x=cos(y); 4 x=x*x; 5 }

28 Akış Diyagramı Gösterimi if (i) ; if (i) ; else ; if (i && j) ; if (i j) ; do ; while (i); while (i) ; switch(i) { case 0: break;... } 28

29 Her ihtimal test edildi mi? 29

30 Flowgraph and Its Annotated Source Listing Başlangıç Bilgileri Module: marketing Annotated Source Listing Program : corp4 09/23/99 File :..\code\corp4.i Language: instc_npp Module Module Start Num of Letter Name v(g) ev(g) iv(g) Line Lines B marketing B0 marketing() 17 { Karar yapısı 18 int purchase; B1* B2 purchase = query("is this a purchase"); 21 B3 if ( purchase == 1 ) 22 B4* B5 development(); 23 else 24 B6* B7 B8 support(); 25 B9 } Metrik Bilgilendirme 4* 5 0 1* * 7 Düğüm gösterimi 30

31 Sizce hangi yazılım daha güvenilir? 31

32 Çevrimsel Karmaşıklık 32

33 Çevrimsel Karmaşıklık v(g), koşul dallarının (conditional branches) sayısıdır. Eğer sadece sıralı ifadeler içeriyorsa o programın v(g) değeri 1 dir. Bir fonksiyon için, v(g) koşul dalları nokta sayısının bir eksiğidir. Çevrimsel karmaşıklığın artması fonksiyondaki işlem yollarının artmasına ve programın daha zor anlaşılmasına neden olur. 33

34 Karmaşıklık Hataları Tetikler! 34

35 Çevrimsel Karmaşıklığı Artıran Faktörler İf ifadesi (programa yeni bir dal ekler) For ve while döngüleri gibi Çevrim yapıları Bir switch bloğundaki her case parçası Bir try bloğundaki her catch(...) parçası Exprl?expr2:expr3 yapısı Önişlemciler (#if, #ifdef, #ifndef, #elif) 35

36 Esas Karmaşıklık Esas karmaşıklık, bir kod parçası içerisinde yapısal olmayan kod miktarını saptayabilmek için kullanılır. Esas karmaşıklık, tamamen yapısal olmayan bir program için çevrimsel karmaşıklığa eşittir. McCabe gerekli karmaşıklık için eşik değerini 4 olarak verse de ideali 1'e indirgemektir. 36

37 Yapısallık Problemleri Dögü Dışına Dallanma Döngü İçine Dallanma Karar Yapısı İçine Dallanma Karar Yapısı Dışına Dallanma 37

38 Esas Karmaşıklık Nasıl Hesaplanır? Orjinal Graf Cyclomatic Complexity = 4 Essential Complexity = 1 38

39 Bir hamle ile yapısallık bozulabilir! 39

40 Esas Karmaşıklığı Artıran Faktörler Break / continue Bir koşul bloğu içerisinde try/catch kullanmak Bir fonksiyonda birden fazla yerde ya da arada bir yerde return kullanmak Kısa devre mantıksal && ve operatörleri (Kısa devre olmayan boolean & ve tercih edilebilir. ) 40

41 Ne Anlama Gelir? Çevrimsel Karmaşıklık (Cyclomatic Complexity) >50 ve Risk Basit işlem, düşük risk Daha karışık, orta risk Karışık, yüksek Test edilemez, ÇOK YÜKSEK RİSK Esas Karmaşıklık ve Risk (Essential Complexity) 1 4 > 4 Yapısal, düşük risk Yapısal olmayan, yüksek risk 41

42 Modül Tasarım Karmaşıklığı - iv(g) Modül Tasarım Karmaşıklığı, bir metodun başka metodlara yaptığı çağrı sayısı ile orantılıdır. Çağrı yapılmayan kod elimine edildiği ortaya çıkan kodun karmaşıklığı Modül tasarım karmaşıklığıdır. En fazla çevrimsel karmaşıklık kadar olabilir. McCabe eşik değerini 7 olarak belirlemiştir. 42

43 Modul Tasarım Karmaşıklığı Nasıl Hesaplanır? 43

44 Diğer Önemli Karmaşıklık Metrikleri Genel Veri Karmaşıklığı - gd(v) Bir modül içerisinde genel (harici) değişkenlerin kullanım oranının düşük olması beklenir. Bir modülden harici veriye erişmeyen yapılar elimine edildiğinde kalan kısmın karmaşıklığıdır. Mccabe bu metrik için eşik değerini 4 olarak belirlemiştir. 44

45 Kodu Anlama İçin Metrikleri Kullanalım V(G) EV(G) IV(G) GDV(G) Summary küçük ve iyi yapılandırılmış yerel veri anahtarlama genel veri anahtarlama işletim anahtarlaması karmaşık ve iyi yapılandırılmamış 45

46 Dağılım Çizelgesinde Yazılımı Değerlendirme Unstructure Complexity 46

47 Basit ve İyi Yapılandırılmış V(G) = 5 EV(G) = 1 Lines = 11 47

48 Karmaşık, İyi Yapılandırılmış V(G) = 31 EV(G) = 1 Lines =

49 Çok Karmaşık ve Kötü Yapılandırılmış V(G) = 86 EV(G) = 40 Lines =

50 Karmaşıklık Metrikleri - Özet İki karmaşıklık metriği, v(g) ve ev(g) modüller üzerinde objektif bir yargıya varmak için birlikte kullanılmalıdır. Eğer ev(g) çok küçük ise (1 ila 4), v(g) nin büyük olması kötü kod olduğu anlamına gelmeyebilir. Metriklerin grafiksel gösterimi büyük ölçekli projelerin daha hızlı analiz edilmesini sağlar. (Örnek : Treemap Understand, BattleMap- McCabe) 50

51 Kısaca Çevrimsel Karmaşıklık v(g) Anlaşılabilirlik Test eforu Güvenililirlik Esas Karmaşıklık ev(g) Yapısallık Bakım Yapılabilirlik Yeniden Yapılanma eforu Modul Tasarım Karmaşıklık iv(g) Entegrasyon Eforu Genel Veri Karmaşıklığı - gd(v) Dış Veri Bağlantıları Genel veriyle ilişikili olan yapı 51

52 Uygulamalar Metod Adı v(g) ev(g) Bakım Yapılabilirlik Zorluğu?? back 9 1 back_line commands edit 18 1 forw 16 8 forward 2 1 main pr_string Metodların bakım yapma zorluklarına göre sınıflandırın!(yüksek, Orta, Düşük) 2. Hangi metodun bakım yapılması daha zordur? «back_line yada edit» 3. Bu metodlar içinde en karmaşık olup da düzgün yapılandırılmış metod hangisidir? 52

53 Uygulamalar-Cevaplar Metod Adı v(g) ev(g) Bakım Yapılabilirlik Zorluğu?? back 9 1 Low back_line Medium?, High? commands High edit 18 1 Low forw 16 8 Medium forward 2 1 Low main Medium pr_string 11 1 Low 1. Metodların bakım yapma zorluklarına göre sınıflandırın!(yüksek, Orta, Düşük) 2. Hangi metodun bakım yapılması daha zordur? «back_line ve edit» back_line 3. Bu metodlar içinde en karmaşık olup da düzgün yapılandırılmış metod hangisidir?edit 53

54 Bakım Yapılabilirlik İndeksi 54

55 MI4 - Örnek 55

56 NESNE YÖNELİMLİ METRİKLER Chidamber & Kemerer OO Metrikleri McCabe Sınıf karmaşıklık metrikleri 56

57 OO Terminolojisi Terim Açıklama Nesne Method Sınıf Kapsülleme Kalıtım İlişkili verilerden (fields) ve prosedürlerden (method) oluşan bir yazılım paketidir. Diğer nesnelerin servis istekleri için kullanabilcekleri nesnelere ait prosedürlerdir. Nesne için metodların ve değişkenlerin tanımlandığı bir plandır. Nesne sınıfın bir örneğidir.(instance) Değişkenlerin ve metodların bir nesnenin içinde birbirlerine bağlandıkları bir süreçtir. Bir sınıfın üst sınıflarından miras almasına denir. Çokbiçimlilik Bir sınıfın birden farklı biçimlere bürünebilmesi özelliğidir. 57

58 Yapısal ve Nesne Yönelimli Programlama Yapısal Dil Programlama Sorunları Kötü Veri Yönetimi(Global Data) Kötü Yapısallık (Jumps etc.) Kötü Taşınabilirlik (High Module Complexity) Nesne Yönelimli Programlamada Yapısal Programla Kullanımı Yapısal programla sorunlarını miras alır. Nesne Yönelimli Uygulamalarda yüksek karmaşıklık; o o Tasarım ve Kodlama Sorunlarını, Nesne Yönelimli Tasarım Yerine Prosedürel Model kullanıldığını gösterir. Kullandığımız Yapısal Programlama Metrikleri; Karmaşıklık metrikleri metodlar için hala anlamlıdır. Nesne yönelimli mimaride daha az karmaşıklık beklenir. 58

59 Nesne Yönelimli Yazılımları Ölçme Nelere Bakılıyor? Kapsülleme Kalıtım Çok Biçimlilik Büyüklük Kalite Kapsülleme OO OO OO Miras OO Çok Biçimlilik 59

60 Chidamber & Kemerer En popüler OO Metrik seti -LOCM -CBO -WMC -NOC -DIT -RFC 60

61 Depth of Inheritance (DIT) Kalıtım Ağacı Derinliği DIT (Depth of inheritance tree) sınıfın kalıtım ağacı köküne olan uzaklığıdır. Kalıtım ağacındaki derinlik arttıkça sınıfın davranışını tahmin etmek ve sınıfı yönetmek zorlaşır. Derin kalıtım ağaçları tasarım karmaşıklığına sebep olur. Sınıf hiyerarşide derinleşirse kalıtımdan kaynaklanan gereksiz kullanımlar artar. McCabe DIT değerinin 7 den büyük olmamasını tavsiye etmektedir. 61

62 Kalıtım Ağacı Derinliği Saymaya nereden başlanacak? Dağılım nasıl olmalı? 62

63 DIT -Örnek DIT(A)=0 DIT(B)=1 DIT(C)=1 DIT(D)=2 DIT(E)=2 63

64 Number of Children (NOC) Türetilmiş Alt Sınıf Sayısı NOC sınıftan doğrudan türetilmiş alt sınıfların sayısıdır. Eğer bir sınıf çok fazla alt sınıfa sahipse, bu durum kalıtımın yanlış kullanıldığının bir göstergesi olabilir. Bir sınıfın altsınıf sayısı tasarımdaki potansiyel etkisi hakkında fikir verir. Çok alt sınıfı olan sınıfların metotları daha çok test etmeyi gerektirdiğinden bu metrik sınıfı test etmek için harcanacak bütçe hakkında bilgi verir. McCabe bir sınıfa ait NOC değerinin 3 ten büyük olmamasını tavsiye etmektedir 64

65 NOC -Örnek NOC(A)=2 NOC(B)=2 NOC(C)=1 NOC(D)=0 NOC(E)=0 65

66 Response For A Class (RFC) Bir Sınıf İçin Çağrı Sayısı RFC (Response for a class) Verilen sınıftan bir nesnenin metotları çağrıldığında, bu nesnenin tetikleyebileceği tüm metotların sayısıdır. Bu metrik sınıfın test maliyeti hakkında da fikir verir. Bir mesajın çok sayıda metodun çağrılmasını tetiklemesi, sınıfın testinin ve hata ayıklamasının zorlaşması demektir. Bir sınıftan fazla sayıda metodun çağrılması, sınıfın karmaşıklığının yüksek olduğunun işaretçisidir. McCabe bir sınıfa ait RFC değerinin 100 den büyük olmamasını tavsiye etmektedir. 66

67 RFC RFC=M+R M=Sınıftaki metod sayısı R= M adet metod tarafından direk çağırılan metod sayısı 67

68 Weighted Methods per Class (WMC) Sınıf İçindeki Metod Sayısı WMC bir sınıf içerisinde yer alan metod sayısıdır. Sınıfın metotlarının sayısı ve metotlarının karmaşıklığı, sınıfın geliştirilmesine ve bakımına ne kadar zaman harcanacağı hakkında fikir verebilir. Metot sayısı çok olan taban sınıflar, çocuk düğümlerde daha çok etki bırakırlar. McCabe bir sınıfa ait WMC değerinin 14 ten büyük olmamasını tavsiye etmektedir. 68

69 Coupling between objects (CBO) Bağımlı Sınıf Sayısı CBO (Coupling between objects) sınıfın bağımlı olduğu sınıf sayısıdır. Bir sınıf içinde bulunan nitelikler (attribute) ya da metotlar diğer sınıfta kullanılıyorsa ve sınıflar arasında kalıtım yoksa iki sınıf arasında bağımlılık olduğu kabul edilmiştir. McCabe bir sınıfa ait CBO değerinin 2 den büyük olmamasını tavsiye etmektedir. 69

70 Coupling between objects (CBO) Bağımlı Sınıf Sayısı Sınıflar arasındaki aşırı bağımlılık modüler tasarıma zarar verir ve tekrar kullanılabilirliği azaltır. Bir sınıf ne kadar bağımsızsa başka uygulamalarda o kadar kolaylıkla yeniden kullanılabilir. Bağımlılıktaki artış, değişime duyarlılığı da arttıracağından, yazılımın bakımı daha zordur. Bağımlılık aynı zamanda tasarımın farklı parçalarının ne kadar karmaşık test edileceği hakkında fikir verir. Bağımlılık fazla ise testlerin daha özenli yapılması gerektiğinden test maliyetini arttıracaktır. 70

71 Bağımlılık Nasıl Oluşur? A sınıfının B sınıfına bağımlılığı aşağıdaki durumlarda oluşur: A sınıfının içinde B sınıfı cinsinden bir üye (referans, işaretçi ya da nesne) vardır. A sınıfının nesneleri B sınıfının nesnelerinin metotlarını çağırıyordur. A sınıfının bir metodu parametre olarak B sınıfı tipinden veriler (referans, işaretçi ya da nesne) alıyordur ya da geri döndürüyordur. A sınıfının bir metodu B tipinden bir yerel değişkene sahiptir. A sınıfı, B sınıfının bir alt sınıfıdır. 71

72 Lack of Cohesion in Methods (LOCM) Bütünlük Kaybı LOCM metriği metodların birbiri ile benzerliğini ölçer. Sınıfın uyumluluğunun düşük olması, sınıfın 2 veya daha fazla alt parçaya bölünmesi gerektiğini gösterir. Düşük uyumluluk karmaşıklığı artırır, bu nedenle geliştirme aşamasında hata yapılma ihtimali yükselir. Ayrıca metotlar arasındaki ilişkisizliklerin ölçüsü sınıfların tasarımındaki kusurların belirlenmesinde de yardımcı olabilir. McCabe bir sınıfa ait LOCM değerinin 75 ten büyük olmamasını tavsiye etmektedir. 72

73 LOCM - Örnek class Class6 { private int a; private double b; private string c; public void M1() { I 1 ={b,c} b = 20; c = "asa"; } public void M2() { b = 30; I2 ={b} I 1 ᴖ I 2 = {b} I 1 ᴖ I 3 = {} I 2 ᴖ I 3 = {} P={(I 1, I 3 ), (I 2, I 3 )} Q={ (I 1, I 2 )} LCOM=2-1=1 } } public void M3() { a = 5; I 3 ={a} } 73

74 Modülerlik 74

75 CK Metrikleri - Özet Metrik Etkileri Önlemler LOCM Karmaşıklık, tasarım hataları Sınıfların küçültülmesi, bölünmesi, gereksiz değişken kullanımından kaçınma CBO Yeniden kullanılabilirlik, test zorluğu Gereksiz dış değişken kullanımından kaçınma WMC Bakım zorluğu Metod sayısını azaltma RFC Karmaşıklık, test zorluğu Gereksiz çağrı kullanımından kaçınma NOC Test fazlalığı, maliyet Tasarımın sadeleştirilmesi DIT Yönetim zorluğu, karmaşıklık Tasarımın sadeleştirilmesi 75

76 Çevrimsel Karmaşıklık Toplamı - sum v(g) sum v(g) metriği sınıf içerisinde yer alan tüm metodların çevrimsel karmaşıklığının toplamıdır. Bir sınıfta ortalama 7 metod olacağı varsayılarak, sum v(g) değerinin 70 ten büyük olmaması tavsiye edilmektedir. 76

77 Çevrimsel Karmaşıklık Ortalaması - Avg v(g) avg v(g) metriği sınıf içerisinde yer alan tüm metodların çevrimsel karmaşıklığının ortalamasıdır. avg v(g) değerinin 10 dan büyük olmaması tavsiye edilmektedir. 77

78 En büyük Çevrimsel Karmaşıklık - Max v(g) Max v(g) metriği sınıf içerisinde yer alan metodlar içerisinde, çevrimsel karmaşıklığı en yüksek olan metodun çevrimsel karmaşıklık değeridir. Max v(g) değerinin 10 dan büyük olmaması tavsiye edilmektedir. 78

79 Kısaca Yazılımın kaliteli olması aslında çok da zor kazanılmayan bir disiplinin meyvesidir. Ölçümde metriklerin seçimi ve eşik seviyelerinin belirlenmesi önemlidir. Kaliteli yazılım, kolay anlaşılabilir, kolay taşınabilir ve kolay bakım yapılabilir yazılımdır. Kaliteliyi artırmak hataların azalması için bir önlemdir. Bir metriğe yönelik iyileştirme yapmak bazen diğerlerine olumsuz etki etse de genellikle kaliteyi büyük şekilde etkiler. (Örneğin, satır sayısını azaltmak, başta karmaşıklık olmak üzere çoğu metriği olumlu etkiler. ) 79

80 Nesne Yönelimli Metrikleri Değerlendirme- Örnek Sınıf Adı sum v(g) avg v(g) max v(g) max ev(g) Ellipse 12 1, Polygon 13 1, Rectangle 26 2, Genel Metrikler Sınıf Adı NOC RFC WMC CBO LOCM Ellipse Polygon Rectangle Nesne Yönelimli Metrikler 80

81 81

82 SORULAR 82

83 Soru - 1 Aşağıdaki ünlüyü tanıyabildiniz mi? 83

84 Soru - 2 McCabe nin belirlediği Esas Karmaşıklık (Essential Complexity) eşiği kaçtır? 84

85 Soru - 3 LOCM değeri kaç? class Class6 { private int a; private double b; private string c; public void M1() { } b = 20; c = "asa"; I 1 ={b,c} } public void M2() { a= 2; b = 30; I 2 ={a,b} } public void M3() { a = 5; c = 5; I 3 ={a, c} } 85

86 Soru 4 Burada sorun ne? (Eşiği aşan metrik var mı?) 86

87 Kullanılan Araçlar

88 İçerik McCabe Understand Klocwork Sorular 88

89 McCabe Aracı

90 McCabe Aracının Sağladıkları McCabe : Yazılım geliştiren kurumların yazılımlarını geliştirirken yararlı, tekrar kullanılabilir, ölçülebilir bir yaklaşımı uygulatarak; yazılım geliştirme sürecinde, test edilme sürecinde ve değişiklik yönetim süreçlerinde kalitenin sağlanmasına yardımcı olur. 90

91 McCabe QA McCabe QA yazılımın kalitesini kurumlar tarafından kabul edilen metriklere göre ölçer. 91

92 McCabe Test McCabe Test,yapılan testlerin etkinliği takip eder. Yapılan testlerin etkinliğini ve doğruluğunu artırır. İç testlerde bulunan hataların sayısını artırır. Zaman ve değerli kaynakların her yönüyle test edilmiş bir uygulama için harcanmasını sağlar. 92

93 UNDERSTAND Aracı

94 Understand Kod üzerinde statik metrik analizlerini yapabilen bir araçtır. Metirkleri üç başlıkta inceler; Karmaşıklık Metrikleri Büyüklük Metrikleri Nesneye Yönelimli Metirkler 94

95 Understand-Treemap 95

96 KLOCWORK Aracı

97 Klocwork Aracının Sağladıkları Uygulama Güvenlik Analizleri Kod Kalite Analizi Kod Gözden Geçirme Metrik Ölçümleri Ve Raporlama Kod Mimarisini Görüntüleme 97

98 Uygulama Güvenlik Analizleri Kaynak kodda bulunan potansiyel güvenlik açıklarını bulma Güvenlik açıklarının; tespiti, düzeltilmesi ve yönetilmesi ile ilgili tutarlı bir yaklaşım sunma 98

99 Kılavuzlar Dünya çapında kullanılan kod güvenlik kılavuzlarına uyumluluğun değerlendirilmesi CWE CWE/SANS Top 25 CERT OWASP DISA STIG MISRA 99

100 CWE Uluslararası kapsamda ve herkesin kullanıma açıktır. CWE yazılım mimarisi ve kaynak koda bağlı olan zayıflıkların anlaşılabilinmesi için yazılım zayıflıklarının birleştirilmiş ve ölçülebilir bir kümesini sunar. CWE/SANS TOP 25 MITRE, SANS Enstitüsü ve kod güvenliği alanında çalışan bir çok kişinin beraber oluşturduğu, en çok yapılan ve en çok güvenlik açığına sebep olabilecek hataların ilk 25 inin yer aldığı listedir. 100

101 CERT Carnegie Mellon Üniversitesi; Yazılım Mühendisliği Enstitüsünde kurulmuştur. OWASP The Open Web Application Security Project dünya çapında kar amacı gütmeyen bir yazılımın güvenliğini geliştirilmesine odaklanmış bir organizasyondur. DISA STIG Amerika Savunma Bakanlığına bağlı Savunma Bilgi Sistemleri Ajansının ortaya koyduğu güvenlik teknik uygulama kılavuzudur. MISRA The Motor Industry Software Reliability Association 101

102 Güvenlik Açıkları ve Kalite Kusurları Klocwork yaptığı kompleks statik kod analizleri ile otomatik olarak programdaki olası buglar ve güvenlik açıklarını gösterir. Bulunan anomaliler programlama dili bazında ele alınır. C ve C++ Hata Örnekleri C# Hata Örnekleri Java Hata Örnekleri 102

103 C# Hata Örnekleri C# geliştiricileri de diğer dillerdeki benzer problemlerin yanı sıra.net framework e özel bir çok sorunla karşılaşmaktadırlar. Klocwork aracı kod üzerinde hem hemen sorun oluşturacak hem de zamanla soruna yol açabilecek durumları tespit edilir. Geçersiz Nesne Referansları (Invalid Object References ) Doğru Olmayan Sözleşmeden Doğan Yükümlülükler (Incorrect Contractual Obligations) Kötü Kodlama Uygulamları (Weak Coding Practices) Uzun Zamanlı Bakımyapılabilirlik Sorunları (Long-term Maintenance Issues) 103

104 NULL Object Reference public class MyClass { public MyClass Create() { if (flag) return null; return new MyClass(); } private int flag; } public class MyOtherClass { public void foo() { MyClass obj = Create(); obj.foo(); } } 104

105 Resource is not Disposed using System; namespace Leaky { class ResourceLeak { class MyDisposable : IDisposable { public void Dispose() { // Do something to remove associated resources } } static void foo() { IDisposable d = new MyDisposable(); //Defect, function exits without closing the resource } } } static void foo() { using( IDisposable d = new MyDisposable() ) {... } // No defect, Dispose is automatically invoked } 105

106 Web Uygulamalarına Özgü Zayıflıklar Klocwork kaynak kodu analizinde üründe yer alan aşağıdaki zayıflıkları bulur; SQL injection Process or file injection Code injection Cross-site scripting (XSS) Request forging 106

107 Örnek public void doget(httpservletrequest req, HttpServletResponse res) { String name = req.getparameter("username"); String pwd = req.getparameter("password"); } // SQL Injection int id = validateuser(username, password); // XSS String retstr = "User : " + name + " has ID: " + id; res.getoutputstream().write(retstr.getbytes()); private int validateuser(string user, String pwd) throws Exception { Statement stmt = myconnection.createstatement(); ResultSet rs; } rs = stmt.executequery("select id from users where user='" + user + "' and key='" + pwd + "'"); return rs.next()? rs.getint(1) : -1; 107

108 OWASP Top 10 Kontrol Edilmeyen Girdiler(Unvalidated Input) Hatalı Giriş Kontrolleri(Broken Access Control) Hatalı Yetkilendirme ve Oturum Yönetimi (Broken Authentication and Session Management) Bellek Taşması (Buffer Overflow) Cross Site Scripting Injection Flaws Improper Error Handling Insecure Storage Application Denial of Service 108

Nesneye Dayalı Yazılım Metrikleri ve Yazılım Kalitesi. Ural ERDEMİR, Umut TEKİN, Feza BUZLUCA

Nesneye Dayalı Yazılım Metrikleri ve Yazılım Kalitesi. Ural ERDEMİR, Umut TEKİN, Feza BUZLUCA Nesneye Dayalı Yazılım Metrikleri ve Yazılım Kalitesi Ural ERDEMİR, Umut TEKİN, Feza BUZLUCA İÇERİK Yazılımda Kalite Kavramları Yazılımın İç Özellikleri Metrik Kümeleri Düşük Kalite Göstergeleri Tasarım

Detaylı

1 PROGRAMLAMAYA GİRİŞ

1 PROGRAMLAMAYA GİRİŞ İÇİNDEKİLER IX İÇİNDEKİLER 1 PROGRAMLAMAYA GİRİŞ 1 Problem Çözme 1 Algoritma 1 Algoritmada Olması Gereken Özellikler 2 Programlama Dilleri 6 Programlama Dillerinin Tarihçesi 6 Fortran (Formula Translator)

Detaylı

YMT 412-Yazılım Kalite Ve Güvencesi Gözden Geçirme Teknikleri 1/44

YMT 412-Yazılım Kalite Ve Güvencesi Gözden Geçirme Teknikleri 1/44 YMT 412-Yazılım Kalite Ve Güvencesi Gözden Geçirme Teknikleri F ı r a t Ü n i v e r s i t e s i Ya z ı l ı m M ü h e n d i s l i ğ i B ö l ü m ü 1/44 İçindekiler 1 7 Gözden Geçirmeler...3 2 3 4 5 6 Yazılım

Detaylı

Yazılım Kodlama ve İ simlendirme Standartları v1.0

Yazılım Kodlama ve İ simlendirme Standartları v1.0 Yazılım Kodlama ve İ simlendirme Standartları v1.0 İçerik Yazılım Kodlama ve İsimlendirme Standartları... 2 1. Amaç... Hata! Yer işareti tanımlanmamış. 2. Kapsam... Hata! Yer işareti tanımlanmamış. 3.

Detaylı

Kodu İyileştirmeye Nereden Başlamalı? Bir Yazılım Metrik Yaklaşımı: Yazılım Kalite Risk Oranı

Kodu İyileştirmeye Nereden Başlamalı? Bir Yazılım Metrik Yaklaşımı: Yazılım Kalite Risk Oranı Kodu İyileştirmeye Nereden Başlamalı? Bir Yazılım Metrik Yaklaşımı: Yazılım Kalite Risk Oranı Furkan Palıgu, Savaş Öztürk, Nurhan Yağcı Yazılım Test ve Kalite Değerlendirme Merkezi, TÜBİTAK, Kocaeli {

Detaylı

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak:  Published by Juan Soulié Kullanılacak kaynak: http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié C++ Nedir? Arttırılmış C demektir ve C dilinin geliştirilmiş halini yansıtır. C++ öğrenmeden önce herhangi bir programlama

Detaylı

Yazılım Kalite Metriklerinin Kıyaslanması: Örnek Bir Olay İncelemesi. Comparison of Software Quality Metrics: A Case Study

Yazılım Kalite Metriklerinin Kıyaslanması: Örnek Bir Olay İncelemesi. Comparison of Software Quality Metrics: A Case Study Yazılım Kalite Metriklerinin Kıyaslanması: Örnek Bir Olay İncelemesi Comparison of Software Quality Metrics: A Case Study Alper Kıral 1[0000-0002-4018-0419] Tülin Erçelebi Ayyıldız 2[0000-0002-7372-0223]

Detaylı

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1 Görsel Programlama DERS 03 Görsel Programlama - Ders03/ 1 Java Dili, Veri Tipleri ve Operatörleri İlkel(primitive) Veri Tipleri İLKEL TİP boolean byte short int long float double char void BOYUTU 1 bit

Detaylı

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say İÇİNDEKİLER 1. Bilgisayarın Yapısı Ve Programlama Dilleri Giriş 1 Bilgisayar ve Programlamanın Kısa Bir Tarihçesi 2 Donanım ve Yazılım Kavramları 3 Bilgisayarın Donanımsal yapısı 4 Giriş Birimi (Input

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları Konsol Uygulaması Oluşturma Konsol uygulaması oluşturmak için program açıldıktan sonra Create: Project ya da New Project seçeneği tıklanabilir. New Project penceresini açmak için farklı yollar da vardır.

Detaylı

Nesne Yönelimli Programlama

Nesne Yönelimli Programlama 1 Nesne Yönelimli Programlama Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Programlama Dili ve Yazılım Tasarımı, Altuğ B. Altıntaş, Papatya

Detaylı

Java da İşleçler, Ders #3 (4 Kasım 2009)

Java da İşleçler, Ders #3 (4 Kasım 2009) Java da İşleçler, Kontrol Akış ve Döngü Deyimleri BS-515 Nesneye Yönelik Programlama Ders #3 (4 Kasım 2009) İçerikç Geçen ders: Nesne ve Sınıf Kavramları Nesne ve Sınıf ın Java da gerçekleştirilmesi Bu

Detaylı

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama İçerik Java da İşleçler, Kontrol Akış ve Döngü Deyimleri Geçen ders: Nesne ve Sınıf Kavramları Nesne ve Sınıf ın Java da gerçekleştirilmesi Bu ders: Java da işleçler ( operators ) Java da kontrol-akış

Detaylı

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma C Programlama Dr. Serkan DİŞLİTAŞ 7.1. Metot Kavramı Programlama dillerinde bütün kod satırlarının

Detaylı

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) BBS-515 Nesneye Yönelik Programlama Ders #9 (16 Aralık 2009) Geçen ders: Java Applet lerde bileşen yerleştirme türleri ( applet layouts

Detaylı

«BM364» Veritabanı Uygulamaları

«BM364» Veritabanı Uygulamaları HAFTA 8 DB içerisinde CLR Bileşenleri" Yaşar GÖZÜDELİ ygozudeli@verivizyon.com http://blog.verivizyon.com/ygozudeli «BM364» Veritabanı Uygulamaları Konu Akışı SQL Server ve.net CLR SQL Server içerisinde

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 11: Bileşim, Arkadaş ve Diğer Araçlar İçerik Bileşim Arkadaş Fonksiyonlar ve Sınıflar Arkadaş Fonksiyonlar Arkadaş Sınıflar Sabit Nesneler Sabit Üye Fonksiyonlar

Detaylı

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015 Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015 KONU BAŞLIKLARI 1. Yazılım Mimarisi nedir? 2. Yazılımda Karmaşıklık 3. Üç Katmanlı Mimari nedir? 4. Üç Katmanlı Mimari

Detaylı

Sunum İçeriği. Programlamaya Giriş 22.03.2011

Sunum İçeriği. Programlamaya Giriş 22.03.2011 Programlamaya Giriş Nesne Tabanlı Programlamaya Giriş ve FONKSİYONLAR Sunum İçeriği Nesne Tabanlı Programlama Kavramı Fonksiyon tanımlama ve kullanma Formal Parametre nedir? Gerçel Parametre nedir? Fonksiyon

Detaylı

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. 1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. [10 puan] int param = 30; int result = 300; if (param > 45) result

Detaylı

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir. PROGRAMLAMAYA GİRİŞ Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir. C de yazılan bir programın çalışması için çoğunlukla aşağıdaki

Detaylı

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ Dersin Adı Kodu Sınıf/Y.Y. Ders Saati (T+U+L) Kredi AKTS Nesne Yönelimli Programlama BİM-222 2/II 1+0+2 2 3 Dersin Dili

Detaylı

BİL-142 Bilgisayar Programlama II

BİL-142 Bilgisayar Programlama II BİL-142 Bilgisayar Programlama II (C/C++) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri Sınıf ve Fonksiyon Üyeleri

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi 2. BÖLÜM 2 PROGRAMLAMAYA GİRİŞ Programlama Terimleri ve Programlama Ortamı 3 Program Programlama IDE

Detaylı

1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9

1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9 VII 1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9 2 KOD YAZMAYA BAŞLANGIÇ 11.Net Framework 11 Yeni Proje Oluşturmak

Detaylı

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ C# Yazım Kuralları 1 İçindekiler C# Yazım Kuralları Veritipleri Değişkenler Operatörler Sınıflar Nesneler, Özellik, Metot ve Olay Bileşenler 2 C# yazım kuralları Deyimlerde büyük küçük harf yazıma uyulmalı

Detaylı

Java da Program Denetimi ve Operatörler

Java da Program Denetimi ve Operatörler Java da Program Denetimi ve Operatörler 1 Atamalar int a ; a=4 ; // doğru bir atama 4=a ; // yanlış bir atama! 2 Temel (Primitive) Tiplerde Atama int a, b ; a=4 ; b=5 ; a=b ; Sonuç : a=5, b=5 3 Nesneler

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;

Detaylı

ELN1001 BİLGİSAYAR PROGRAMLAMA I

ELN1001 BİLGİSAYAR PROGRAMLAMA I ELN1001 BİLGİSAYAR PROGRAMLAMA I Bilgisayar Programlamaya Giriş Temel Programlama Kavramları Programlama Dilleri Program Oluşturma Teknikleri C++ Programlama Diline Giriş Temel Programlama Kavramları Bilgisayar

Detaylı

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi 5.HAFTA Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi Sınıf Kavramı: Sınıf (class) soyut bir veri tipidir. Nesne (object) onun somutlaşan bir cismidir. Java da sınıf (class) kavramını

Detaylı

Nesne Yönelimli Programlama

Nesne Yönelimli Programlama 1 Nesne Yönelimli Programlama Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Genel Bilgiler Ders konuları 1. Programlamaya Giriş 2. Program Denetimi ve Operatörler 3. Nesnelerin

Detaylı

NESNEYE YÖNELİK TASARIM SÜRECİ

NESNEYE YÖNELİK TASARIM SÜRECİ NESNEYE YÖNELİK TASARIM SÜRECİ GİRİŞ Nasıl? sorusuna yanıt aranır. Nesne modeli: Analizden tasarıma. Doğrudan problem alanı ile ilgili nesnelerden oluşan model, yardımcı nesnelerle zenginleştirilir. Ana

Detaylı

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ Java programlama dili, Java SUN bilgisayar şirketi tarafından 1991 yılında geliştiril Program bloklar halinde yazılır ve bloklar { } ile oluşturulur. Komutlar aynı satıra

Detaylı

Her Yönüyle SQL Enjeksiyonu. OWASP-Türkiye Bünyamin Demir

Her Yönüyle SQL Enjeksiyonu. OWASP-Türkiye Bünyamin Demir Her Yönüyle SQL Enjeksiyonu OWASP-Türkiye Bünyamin Demir Bünyamin Demir ( @bunyamindemir ) OWASP Türkiye Bölüm Lideri Founder & CTO @ Enforsec Ltd. Sızma Testleri Uzmanı Web, Mobil, Network, SCADA, Wireless,

Detaylı

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak. Selçuk Üniversitesi Mühendislik Fakültesi Harita Mühendisliği Bölümü ra Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :13.04.2017 60 dak. Dikkat!!! Soru kitapçığında ve cevap

Detaylı

BİLGİSAYAR PROGRAMLARININ TASARIMLARINDAKİ VE KODLARINDAKİ SORUNLARIN BELİRLENMESİ ALPER FİLİZ MEHMET ALİ SERT

BİLGİSAYAR PROGRAMLARININ TASARIMLARINDAKİ VE KODLARINDAKİ SORUNLARIN BELİRLENMESİ ALPER FİLİZ MEHMET ALİ SERT BİLGİSAYAR PROGRAMLARININ TASARIMLARINDAKİ VE KODLARINDAKİ SORUNLARIN BELİRLENMESİ ALPER FİLİZ 040080202 MEHMET ALİ SERT 040090521 SUNUM İÇERİĞİ Problem Tanımı Tespit Edilen Sorunlar Problemin Sonuçları

Detaylı

4. Bölüm Programlamaya Giriş

4. Bölüm Programlamaya Giriş 4. Bölüm Programlamaya Giriş Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ 4.1. C# ile Program Geliştirme Net Framework, Microsoft firması tarafından açık internet protokolleri ve standartları

Detaylı

Programlama Dillerinde Kullanılan Veri Tipleri

Programlama Dillerinde Kullanılan Veri Tipleri Programlama Dillerinde Kullanılan Veri Tipleri Taban/Biçim Basic Paskal C/C++/C#/Java 10 (Decimal ) - - - 16 (Hexadecimal) &hsayı veya &Hsayı $sayı 0xsayı veya 0Xsayı Üstel eüs veya Eüs eüs veya Eüs eüs

Detaylı

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler BMÜ-111 Algoritma ve Programlama Bölüm 5 Tek Boyutlu Diziler Yrd. Doç. Dr. İlhan AYDIN 1 Problem 100 adet sayı okumak istediğimizi düşünelim. Bu sayıların ortalaması hesaplanacak ve sayıların kaç tanesinin

Detaylı

İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19. Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28

İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19. Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28 ix 1 İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19 23 Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28 Kayan Nokta Tipleri 30 Sayısal Veri Tipi Dönüşümleri

Detaylı

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6 ix Yazılım Nedir? 2 Yazılımın Tarihçesi 3 Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5 Yazılımın Önemi 6 Yazılımcı (Programcı) Kimdir? 8 Yazılımcı Olmak 9 Adım Adım Yazılımcılık 9 Uzman

Detaylı

Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com

Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com Özcan Acar Bilgisayar Mühendisi http://www.ozcanacar.com Barbara Liskov 1 tarafından geliştirilen bu prensip kısaca

Detaylı

Veritabanı İşlemleri

Veritabanı İşlemleri Veritabanı İşlemleri Bu bölümde; Veritabanı bağlantısı Komutların Yürütülmesi ADO.NET Nesne Modeli kavramları incelenecektir. ADO.NET (ActiveX Data Objects) ADO.NET, var olan Windows API lerinden çok daha

Detaylı

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı 2012 2013 Đlkbahar Dönemi 13 Nisan 2013. Ad, Soyad Öğrenci No.

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı 2012 2013 Đlkbahar Dönemi 13 Nisan 2013. Ad, Soyad Öğrenci No. Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü BLGM 318 Ara Sınavı 2012 2013 Đlkbahar Dönemi 13 Nisan 2013 Ad, Soyad Öğrenci No. : : Öğretim Üyesi: Doç. Dr. Zeki BAYRAM Süre: 100 dakika Talimatlar:

Detaylı

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır. Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır. Örneğin; bir öğrenci, sıra, çember, bir buton birer nesnedir. Bir

Detaylı

Yazılım Mühendisliği 1

Yazılım Mühendisliği 1 Yazılım Mühendisliği 1 HEDEFLER Yazılım, program ve algoritma kavramları anlar. Yazılım ve donanım maliyetlerinin zamansal değişimlerini ve nedenleri hakkında yorum yapar. Yazılım mühendisliği ile Bilgisayar

Detaylı

PROGRAMLAMAYA GİRİŞ DERS 2

PROGRAMLAMAYA GİRİŞ DERS 2 PROGRAMLAMAYA GİRİŞ DERS 2 Program editörde oluşturulur ve diske kaydedilir Tipik Bir C Programı Geliştirme Ortamının Temelleri 1. Edit 2. Preprocess 3. Compile 4. Link 5. Load 6. Execute Önişlemci programı

Detaylı

BİL132 Bilgisayar Programlama II

BİL132 Bilgisayar Programlama II BİL132 Bilgisayar Programlama II 8. Olağandışı durumlar (exceptions) Hacettepe Üniversitesi Bilgisayar Mühendisliği Bölümü Yüksel Tarhan Olağandışı durum Kütük bulunamadı Diskte yer kalmadı Nesne referans

Detaylı

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2 1 Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2 Eclipse Mimarisi 4 Java Teknolojisine Genel Bir Bakış 6 Taşınabilirlik 6 Java Derleyicisi ve Bytecode 6 Java Sanal Makinası (Java Virtual Machine - JVM)

Detaylı

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI İÇİNDEKİLER IX İÇİNDEKİLER 1 GİRİŞ 1 Kitabın Amacı 1 Algoritmanın Önemi 2 Bilgisayarın Doğuşu ve Kullanım Amaçları 3 Programlama Dili Nedir? 3 Entegre Geliştirme Ortamı (IDE) Nedir? 4 2 ALGORİTMA VE AKIŞ

Detaylı

Veri ve Dosya Yapıları. Kütük Organizasyonu 1

Veri ve Dosya Yapıları. Kütük Organizasyonu 1 Veri ve Dosya Yapıları Kütük Organizasyonu 1 Veri ve Dosya Yapıları Bilgi, içerisinde bulunduğumuz çağda hızlı ve sürekli bir biçimde artmaktadır. Her iki kavram da verinin gösterimi, veriye erişim işlemlerini

Detaylı

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN TEMEL AMAÇLAR Bir dairenin yarıçapını kullanıcıdan alarak dairenin alanını hesaplamak istediğimizi düşünelim. Eğer girilen değer

Detaylı

1 JAVASCRIPT NEDİR? 1

1 JAVASCRIPT NEDİR? 1 İÇİNDEKİLER IX İÇİNDEKİLER 1 JAVASCRIPT NEDİR? 1 2 TEST ORTAMINI TANIMAK (FİREFOX VE FİREBUG) 5 Firefox 6 Firebug 8 CSS Sekmesi 10 DOM Sekmesi 11 Net ve Çerezler Sekmeleri 11 Script Sekmesi 11 Konsol Sekmesi

Detaylı

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN Basit C Programları: Bir Metni Yazdırmak #include /* program çalışmaya main fonksiyonundan başlar*/ int main() { printf( "C diline hoşgeldiniz!\n"

Detaylı

Bileşen kalitesi ölçümünde statik kod analizi yaklaşımı

Bileşen kalitesi ölçümünde statik kod analizi yaklaşımı Bileşen kalitesi ölçümünde statik kod analizi yaklaşımı Berkhan Deniz 1, Soner Çınar 1 1 Yazılım Mühendisliği Müdürlüğü, Mühendislik Dir., SST Grup Bşk. ASELSAN A.Ş. {berkhand, scinar}@aselsan.com.tr Özet.

Detaylı

Üst Düzey Programlama

Üst Düzey Programlama Üst Düzey Programlama JDBC (Java Database Connectivity) Üst Düzey Programlama-ders07/ 1 JDBC JDBC ilişkisel veritabanlarına erişim için Java dilinde kullanılan standart bir kütüphanedir. Bu kütüphanedeki

Detaylı

MOBIL UYGULAMA GELIŞTIRME

MOBIL UYGULAMA GELIŞTIRME MOBIL UYGULAMA GELIŞTIRME PELIN YILDIRIM FATMA BOZYIĞIT YZM 3214 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Bu Derste Java Programlama (Crash Course) Class, Nesne, Metodlar, Overloading,

Detaylı

Client Server Database

Client Server Database Java Server Faces Ahmet Demirelli Sabancı Üniversitesi 2007 Ajanda Model-1 Mimari Model-2 Mimari MVC Framework Java Server Faces Örnek Uygulama Model 1 Mimari 1 2 3 6 JSP (View) 5 JavaBeans (Model) 4 Client

Detaylı

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

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan BİLGİ TEKNOLOJİLERİ YÖNETİMİ EĞİTİM MODÜLLERİ Tarih Saat Modül Adı Öğretim Üyesi 01/05/2018 Salı Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan Bu dersin amacı, bilgisayar bilimlerinin temel kavramlarını

Detaylı

Sınıflar ve Yapılar Arasındaki Farklılıklar. Değer ve Referans Türde Olan Aktarımlar

Sınıflar ve Yapılar Arasındaki Farklılıklar. Değer ve Referans Türde Olan Aktarımlar Nesneler ve Türler Sınıflar ve Yapılar Arasındaki Farklılıklar Sınıf Üyeleri Değer ve Referans Türde Olan Aktarımlar Yapıcılar ve Statik Yapıcılar Read-Only Statik Sınıflar Object Sınıfı Sınıflar Sınıflar

Detaylı

Ders 8 Konu Özeti ve Problemler

Ders 8 Konu Özeti ve Problemler Ders 8 Konu Özeti ve Problemler C# ve Nesne Yönelimli Programlamanın 3 Prensibi Kapsülleme (Encapsulation) Nesne yönelimli programlamanın ilk prensibi kapsülleme (encapsulation) olarak adlandırılır. Bu

Detaylı

WEB UYGULAMA GÜVENLİĞİ HAKKINDA. Mesut Güngör İzmir Yüksek Teknoloji Enstitüsü Bilgi İşlem Daire Başkanlığı

WEB UYGULAMA GÜVENLİĞİ HAKKINDA. Mesut Güngör İzmir Yüksek Teknoloji Enstitüsü Bilgi İşlem Daire Başkanlığı WEB UYGULAMA GÜVENLİĞİ HAKKINDA Mesut Güngör İzmir Yüksek Teknoloji Enstitüsü Bilgi İşlem Daire Başkanlığı İçindekiler Bilinen en popüler web uygulama atakları Güvenli yazılım geliştirme Prosedürler Bilinen

Detaylı

PAKET TRANSFER SİSTEMİ

PAKET TRANSFER SİSTEMİ İLAÇ TAKİP SİSTEMİ ŞUBE MÜDÜRLÜĞÜ PAKET TRANSFER SİSTEMİ Kullanıcı Dökümanı Version 1.1 1 1. Revizyonlar... 1 2. Giriş... 1 2.1 Kapsam...1 2.2 Hedef Kitle...1 3. Gereksinimler... 1 3.1 Yazılım Gereksinimleri...1

Detaylı

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

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN Bilgisayar Mühendisliğine Giriş Yrd.Doç.Dr.Hacer KARACAN İçerik Dosya Organizasyonu (File Organization) Veritabanı Sistemleri (Database Systems) BM307 Dosya Organizasyonu (File Organization) İçerik Dosya

Detaylı

// hataları işaret eden referans

// hataları işaret eden referans System sınıfı java.lang.object java.lang.system public final class System extends Object System sınıfı, java.lang paketi içindedir. Platformdan bağımsız olarak sistem düzeyindeki eylemleri belirleyen dingin

Detaylı

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/ Ana Main Kodları /*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/ package javaapplication1; public class JavaApplication1 public static void

Detaylı

Ağaç (Tree) Veri Modeli

Ağaç (Tree) Veri Modeli Ağaç (Tree) Veri Modeli 1 2 Ağaç Veri Modeli Temel Kavramları Ağaç, bir kök işaretçisi, sonlu sayıda düğümleri ve onları birbirine bağlayan dalları olan bir veri modelidir; aynı aile soyağacında olduğu

Detaylı

R ile Programlamaya Giriş ve Uygulamalar

R ile Programlamaya Giriş ve Uygulamalar R ile Programlamaya Giriş ve Uygulamalar İçerik R ye genel bakış R dili R nedir, ne değildir? Neden R? Arayüz Çalışma alanı Yardım R ile çalışmak Paketler Veri okuma/yazma İşleme Grafik oluşturma Uygulamalar

Detaylı

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır. GİRİŞ Algoritması tasarlanmış (metin olarak yazılmış, sözde kodlarla kodlanmış veya akış diyagramı çizilmiş) bir problemi/işlemi, bilgisayar programlama dillerinden birisiyle kodlamak son derece kolaydır.

Detaylı

Mobil Uygulamaların Kalite Özelliklerinin Ölçümü

Mobil Uygulamaların Kalite Özelliklerinin Ölçümü Mobil Uygulamaların Kalite Özelliklerinin Ölçümü Nurseda ÖZDEMİR, Bahar GEZİCİ, Kıvanç DİNÇER Hacettepe Üniversitesi, Fen Bilimleri Enstitüsü, Bilgisayar Mühendisliği Anabilim Dalı Beytepe Kampüsü, 06800

Detaylı

BİLİNİRLİK ALANI ve ÖMÜR, KONTROL DEYİMLERİ

BİLİNİRLİK ALANI ve ÖMÜR, KONTROL DEYİMLERİ BİLİNİRLİK ALANI ve ÖMÜR, KONTROL DEYİMLERİ Kaynak: C ve Sistem Programcıları Derneği Kurs notu Öğr.Gör.Dr. Mahmut YALÇIN Bilinirlik Alanı Bilinirlik alanı (scope), bir ismin tanınabildiği program aralığıdır.

Detaylı

Mobil Uygulama Yazılımlarında Yazılım Metriklerinin Kullanılması

Mobil Uygulama Yazılımlarında Yazılım Metriklerinin Kullanılması Mobil Uygulama Yazılımlarında Yazılım Metriklerinin Kullanılması Using Software Metrics in Mobile Applications Software Dr. Aziz Can Yücetürk Vodafone IT Hizmetleri A.Ş. İstanbul aziz.yuceturk@vodafone.com

Detaylı

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2 NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2 JAVA DA PROGRAM DENETİMİ VE OPERATÖRLER Java programlama dilinde temel tipleri ve nesneleri yönlendirmek ve değiştirmek için operatörler kullanılır. Atamalar sağ taraftaki

Detaylı

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

Yazılım Mühendisliği Bölüm - 3 Planlama 1 Yazılım Mühendisliği Bölüm - 3 Planlama 2 3 4 Planlama 5 Yazılım geliştirme sürecinin ilk aşaması Başarılı bir proje geliştirebilmek için projenin tüm resminin çıkarılması işlemi Proje planlama aşamasında

Detaylı

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance Önemli noktalar Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance public class Test { // çalışır İnsan insan = new Çiçekçi();

Detaylı

Bölüm1. İlk Bilgiler ISBN 0-321-49362-1

Bölüm1. İlk Bilgiler ISBN 0-321-49362-1 Bölüm1 İlk Bilgiler ISBN 0-321-49362-1 Bölüm 1 Konuları Niye Programlama Dilleri prensiplerini öğreniyoruz? Programlama alanları Dil değerlendirme kriterleri Dit tasarımına etkiler Dil kategorileri Dil

Detaylı

Yazılım Projelerinde Büyüklük Tahmini

Yazılım Projelerinde Büyüklük Tahmini Yazılım Projelerinde Büyüklük Tahmini Emin BORANDAĞ 1, Fatih YÜCALAR 1,Önder ŞAHİNASLAN 2 1 Maltepe Üniversitesi, Mühendislik ve Doğa Bilimleri Fakültesi, Yazılım Mühendisliği Bölümü 2 Maltepe Üniversitesi,

Detaylı

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ Yrd.Doç.Dr. Emel ARSLAN earslan@istanbul.edu.tr C Program Akış Kontrol Yapıları Kontrol Komutları Normal şartlarda C dilinde bir programın çalışması, komutların

Detaylı

Algoritma Analizi. Özelliklerinin analizi Algoritmanın çalışma zamanı Hafızada kapladığı alan

Algoritma Analizi. Özelliklerinin analizi Algoritmanın çalışma zamanı Hafızada kapladığı alan Karmaşıklık Giriş 1 Algoritma Analizi Neden algoritmayı analiz ederiz? Algoritmanın performansını ölçmek için Farklı algoritmalarla karşılaştırmak için Daha iyisi mümkün mü? Olabileceklerin en iyisi mi?

Detaylı

JAVADA METOTLAR. BMÜ-111 Algoritma ve Programlama. Yrd. Doç. Dr. İlhan AYDIN

JAVADA METOTLAR. BMÜ-111 Algoritma ve Programlama. Yrd. Doç. Dr. İlhan AYDIN JAVADA METOTLAR BMÜ-111 Algoritma ve Programlama Yrd. Doç. Dr. İlhan AYDIN 1 Açık problem Amacımız sırasıyla 1 den 10, 10 dan 20 ye ve 35 ten 45 e kadarki sayıların toplamını bulmak olsun. Ne yapmak gerekir?

Detaylı

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER, BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER, C++ İÇİN UFAK HATIRLATMALAR Değişken adları bir harf ile başlamalıdır. (a-z, A-Z). Değişken adı numara içerebilir.

Detaylı

/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak. Selçuk Üniversitesi Mühendislik-Mimarlık Fakültesi Harita Mühendisliği Bölümü Yıliçi Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :26.11.2012, 60 dak. Dikkat!!! Soru kitapçığında

Detaylı

Lambda İfadeleri (Lambda Expressions)

Lambda İfadeleri (Lambda Expressions) Lambda İfadeleri (Lambda Expressions) Lambda İfadeleri, değişkenlere değer atamak için kullanılan sadeleştirilmiş anonim (isimsiz) fonksiyonlardır. Bu fonksiyonlar matematikteki ve bilgisayar bilimlerindeki

Detaylı

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği Bu bölümde, BÖLÜM - 5 Kuyruk VY ve ADT Basit Kuyruk (Simple Queue)

Detaylı

Algoritma ve Akış Diyagramları

Algoritma ve Akış Diyagramları Algoritma ve Akış Diyagramları Bir problemin çözümüne ulaşabilmek için izlenecek ardışık mantık ve işlem dizisine ALGORİTMA, algoritmanın çizimsel gösterimine ise AKIŞ DİYAGRAMI adı verilir 1 Akış diyagramları

Detaylı

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) { Fonksiyonlar Kendi içinde bağımsız olarak çalışabilen ve belli bir işlevi yerine getiren program modülleridir. C programları bu modüllerden (fonksiyonlar) oluşurlar. Fonksiyonların yazılmasındaki temel

Detaylı

10.DERS Yazılım Gerçekleştirme

10.DERS Yazılım Gerçekleştirme 10.DERS Yazılım Gerçekleştirme 1 Giriş: Bilgisayarlara yaptırılmak istenenleri, anlatabilmek için programlama dilleri kullanılır. Bir ihtiyaç veya konu doğrultusunda meydana getirilen tasarım önce programlama

Detaylı

Turkcell Paf Takımı Proje Raporu. Hazırlayan : Oben IŞIK

Turkcell Paf Takımı Proje Raporu. Hazırlayan : Oben IŞIK Turkcell Paf Takımı Proje Raporu Hazırlayan : Oben IŞIK 1 Giriş Proje, yazılım dünyasındaki uygulamaların minimum maaliyet ile karşılanabilmesi için, web servis kullanımına ilişkin bir takım işlemleri

Detaylı

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır. Ders İçeriği An introduction to Object-oriented programming with Java Third Edition Update Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır. Nesneye Yönelik Öğr.

Detaylı

BİL-141 Bilgisayar Programlama I (Java)

BİL-141 Bilgisayar Programlama I (Java) 1 BİL-141 Bilgisayar Programlama I (Java) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu,

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Koşul Karşılaştırma Operatörleri Mantıksal

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 1: Giriş İçerik Bilgisayar Sistemleri Donanım Yazılım Programlama Program Geliştirme Nesne-tabanlı Programlama C++ Programlama Dili 2 Bilgisayar Sistemleri Kısaca,

Detaylı

Sınıf üyeleri: değişkenler (fields) and metotlar (methods) Değişkenler: nesne içerisindeki değişkenlerdir Temel veri tipi veya sınıf tipi

Sınıf üyeleri: değişkenler (fields) and metotlar (methods) Değişkenler: nesne içerisindeki değişkenlerdir Temel veri tipi veya sınıf tipi Görsel Programlama Kalıtım, Temel/Alt Sınıf, Temel/Alt Sınıf Tip Dönüşümleri, Temel Sınıf Yapıcıları, super Anahtar Kelimesi, Sınıf Üyesi Görünürlüğü, Statik Üyeler ve Final Üyeler Sınıflar Programcı tarafından

Detaylı

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA BLM-111 PROGRAMLAMA DİLLERİ I Ders-12 Fonksiyonlar Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı

Detaylı

Bölüm 9. Altprogramlar ISBN

Bölüm 9. Altprogramlar ISBN Bölüm 9 Altprogramlar ISBN 0-321-49362-1 Giriş Bu bölümde, programlarda sıkça kullanılan işlemlerin bir araya gruplanması ile oluşturulan altprogramlar incelenecektir. Altprogramlar sayesinde bir programda

Detaylı

İçerik. Kapsülleme ( Encapsulation ) Java da Kalıtım: Örnek 2.1. Kalıtım ( Inheritance ) Tekrar Ziyaret. Java da Kalıtım: Örnek 2.2.

İçerik. Kapsülleme ( Encapsulation ) Java da Kalıtım: Örnek 2.1. Kalıtım ( Inheritance ) Tekrar Ziyaret. Java da Kalıtım: Örnek 2.2. İçerik Geçen ders: Kalıtım ( inheritance ) Kapsülleme ( Encapsulation ) BBS-515 Nesneye Yönelik Programlama Ders #5 (18 Kasım 2009) Bu ders: Kalıtım ( inheritance ) tekrar ziyaret Java da super kullanımı

Detaylı

BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING)

BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING) 1 BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING) LECTURE 3: ASSIGNMENT OPERATOR Lecturer: Burcu Can BBS 514 - Yapısal Programlama (Structured Programming) 2 Lexical Elements (Sözcüksel Elemanlar)

Detaylı

Akış Kontrol Mekanizmaları

Akış Kontrol Mekanizmaları Akış Kontrol Mekanizmaları 1 Akış Kontrol Mekanizmaları if else switch for döngüsü for döngüsünün çalışma prensibi for döngüsüyle ilgili örnekler for döngüsüyle ilgili kurallar while döngüsü while döngüsünün

Detaylı

Bilgisayar Programlama. 1.Hafta

Bilgisayar Programlama. 1.Hafta Bilgisayar Programlama 1.Hafta Ders Planı 1. Bilgisayar Programlamaya Giriş 2. C Derleyicileri 3. GCC Kullanımı 4. Veri Tipleri ve Operatörler 5. Kontrol Yapıları 6. Döngüler 7. Döngüler 2. Hafta 8. Fonksiyonlar

Detaylı