YAZILIM KALİTE METRİKLERİ
|
|
- Sanaz Koçer
- 5 yıl önce
- İzleme sayısı:
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 İÇ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İŞ
İÇİ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 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 İç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ı 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é
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 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 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
İÇİ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ı
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
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, 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, 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 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 ) 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ı
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 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 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
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. [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.
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İ 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 (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 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
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ı 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 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
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 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 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
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İ 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 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 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.
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 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ş 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 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 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
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
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 Ö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 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. : : Öğ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. Ö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 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 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 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
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
İÇİ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ı 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 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
İÇİ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 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ı 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 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 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
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
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
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 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ığı İçindekiler Bilinen en popüler web uygulama atakları Güvenli yazılım geliştirme Prosedürler Bilinen
Detaylı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 İçerik Dosya Organizasyonu (File Organization) Veritabanı Sistemleri (Database Systems) BM307 Dosya Organizasyonu (File Organization) İçerik Dosya
Detaylı// 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.*/
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 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 İç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.
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ü 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İ 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ı 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 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
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 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ü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 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İŞ 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
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 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, 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.
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, 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ı 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ı 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 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 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 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.
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)
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 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 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
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 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 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 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)
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ı 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 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ı