Kodlardaki Kötü Kokuları Tespit Etme Yöntemleri ve Algoritma Analizi

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

Download "Kodlardaki Kötü Kokuları Tespit Etme Yöntemleri ve Algoritma Analizi"

Transkript

1 Kodlardaki Kötü Kokuları Tespit Etme Yöntemleri ve Algoritma Analizi Aylin Güzel 1, Özlem Aktaş 2 1,2 Dokuz Eylül Üniversitesi, Bilgisayar Mühendisliği Bölümü, İzmir aylin.guzel@ogr.deu.edu.tr, aktas.ozlem@deu.edu.tr Özet: Yazılım geliştirme sürecinde analiz, karar verme ya da uygulamada yapılan yanlışlar kodlarda kötü kokunun ortaya çıkmasına sebep olur. Tasarım problemleri de kodlarda kötü koku şeklinde görülmektedir. Kodlardaki kötü kokular yazılımın kalitesini azaltmaktadır. Daha kaliteli, performansı yüksek, maliyeti düşük, başka bir yerde kullanılması, değiştirilmesi ve geliştirilmesi kolay yazılımlar için kodlardaki kötü kokuların yeniden düzenleme ile yok edilmesi gerekmektedir. Yeniden düzenleme basittir ancak yazılım kalitesine etkisi büyüktür. Bu çalışmada, kodlardaki kötü kokunun ne olduğu, hangi durumlarda ortaya çıkabileceği ve bunun üstesinden nasıl gelinebileceği konuları detaylı olarak anlatılmış, algoritma analizi yöntemi ile kodlardaki kötü kokunun tespit edilmesi yaklaşımı incelenmiştir. Anahtar Sözcükler: Yeniden Düzenleme, Yazılım Mühendisliği, Kötü Koku, Algoritma Analizi, Kod İnceleme, İyi Kod, Optimizasyon. Methods for Determining Bad Smells in Code and Algorithm Analysis Abstract: In software development process, analysis, decision making or mistakes made in the application causes appearing bad smells in code. Also, design problems in the code are seen as a bad smell. Bad smells in the code reduces the quality of the software. Bad smells in the code must be destroyed for better quality, high-performance, low-cost, re-use, modification and easy development of software. Refactoring is simple but has a huge impact on software quality. In this study, the topics of what the bad smell in the code is, in which situations it can occur and how the bad smell can be overcomed are studied in the literature, and detecting bad smells in code was examined by algorithm analysis approach. Keywords: Refactoring, Software Engineering, Bad Smells, Algorithm Analysis, Code Review, Good Code, Optimization. 1. Giriş Bilgisayar bilimi, kısaca bir bilgisayarın nasıl çalıştığını ve nasıl düşündüğünü öğrenmek olarak tanımlanabilir. Bilgisayarın işleyişini anlamak da yazılımcının nasıl düşünmesi ve bilgisayara nasıl yaklaşması gerektiğini anlamasını sağlar. Bu sayede bilgisayara istenilen her türlü işlem yaptırılabilinir. Yazılımcı ya da yazılım geliştirme ekibindeki diğer uzmanlar gerçekleştirimini yapmak istedikleri sistemi yanlış analiz ettiklerinde, sistem hakkında yanlış kararlar verdiklerinde, düşündükleri doğru şeyleri sistem için yanlış uyguladıklarında, yazılım geliştirme prensiplerini göz ardı ederek çalışmalarına devam ettiklerinde, sadece anı kurtarmak adına karmaşık, okunabilirliği ve anlaşılabilirliği zayıf olan kod yazdıklarında, kodda kötü koku meydana gelir. Koddaki kötü kokular, sistemdeki potansiyel problemlerin bir göstergesidir. Bu noktada doğru karar vererek yazılıma müdahale edip, yazılımın performansını, okunabilirliğini, esnekliğini, anlaşılabilirliğini arttırmak amaçlanmalıdır.

2 Bu amaçlar doğrultusunda yapılması gereken işlem Yeniden Düzenleme (ing. Refactoring) olarak adlandırılır. Yeniden Düzenleme, yazılımı daha basit, daha anlaşılır, değiştirmesi daha kolay ve yazılımın okunabilirliğini yüksek bir seviyeye getirerek yazılımın performansını iyileştirmeyi amaçlamaktadır. Aynı zamanda kodlarda yeni hiyerarşiler kurarak kodların daha kolay geliştirilebilir, değiştirilebilir, tanınabilir, başka projelerde kullanılabilir hale gelmesine yardımcı olur. Belirtilen hedefleri temel alarak kodun iç yapısını değiştiren ancak dış yapısında herhangi bir değişikliğe neden olmayacak şekilde yapılan düzenlemeler bütününe Yeniden Düzenleme denmektedir. Kodun hali hazırda yaptığı işin, koda Yeniden Düzenleme uygulanması öncesi ve sonrasında aynı kalması durumu, kodun dış yapısında değişim meydana gelmemesi olarak ifade edilir. Kodun iç yapısını değiştirmek için kullanılabilecek Yeniden Düzenleme yöntemlerinden bazıları aşağıdaki gibidir[2][3][5]: Tekrar eden kodları ayrı fonksiyonlara ayırmak, İlgili rutinleri bir sınıf altında toplamak, Değişken isimlerini işlevine uygun şekilde değiştirmek, Algoritmaları daha hızlı çalışır hale getirmek, Gerekli durumlarda metotların isimlerini; yaptıkları işi metotların isimlerinden anlaşılacak şekilde değiştirmek, Aynı kod yapısının birden fazla alanda olduğu durumlarda bu kodu programda tek olacak şekilde düzenlemek, Uzun metotları okunması ve bakımının daha kolay olması için kısa hale getirmek, Çok uzun döngülerde döngünün iç kısmındaki kod bloğunu kısa tutmak ve bu amaçla değişkenleri mümkün olduğunca döngünün dışında tanımlamak, Okunabilirliği ve debug modda kodun takibini azalttığı için iç içe çok fazla döngü kullanmamak, Aşırı parametre alan metotların yaptıkları işleri azaltmak için bölmek yani parametre sayılarını azaltmak, Basit veri tiplerinin aşırı yüklenmesini önlemek için değişkene uygun olmayan, programı yoracak ve gereğinden fazla bellek ayrılmasına neden olacak veri tipini kullanmamak, Mevcut kodda işe yaramayan ya da içerisinde çok az işi barındıran sınıfları gerekli ve uygun koşullar sağlandığı taktirde silmek, İleride lazım olur düşüncesiyle daha önce yazdığımız ancak mevcut durumda kullanılmayan kodları yorum olarak programda tutmamak, Kodu yeterince açık ve temiz yazmak yerine; programı yapılan işin anlaşılması için gereksiz yorumlarla boğmamak, Sınıf isimlerini amacına uygun olarak belirlemek, Ucu açık sınıf tanımlamamak; oluşturulan sınıf kendisinden beklenenden daha fazla işi yapıyorsa ilgisiz görevleri başka bir sınıf oluşturarak bu sınıfta toplamak ya

3 da program içerisinde ilgili olabilecek bir sınıfa taşımak, Ait olduğu sınıftan ziyada başka bir sınıftan özellik kullanan metotları ilgili sınıfa taşıyarak mevcut sınıf içerisinden çağırmak, Birbirine benzer işler yapan iki metodu kodu tekrarlamamak için tek metotta birleştirerek parametreye göre ilgili kısmın çalışmasını sağlamak, Aldığı parametreye göre birbirinden farklı iki iş yapan metodu ikiye bölmek, Bir nesnenin alanlarını metotta tek tek işlemek yerine, tüm nesneyi parametre olarak geçmek, Metod içerisinde bir objenin sadece bir ya da iki alanının kullanılacağı durumlarda objeyi metoda geçmek yerine ihtiyaç duyulan alanları kullanmak, Karmaşık mantıksal koşullardan kaçınmak, Hatırlanılması gereken her şeyi kodun kendisinin içerisine koymak. Yeniden Düzenleme daima temiz kodu hedefler, kodu temizlemek için etkili ve kontrollü bir teknik sağlar. Çoğu zaman yazılımda anı kurtarmak adına yeterince etkin olmayan çözümler üretilebilir. Bilgisayara ne yapılması gerekiyorsa bunu söylemek ve yapılması gereken görevlerin mevcut programda gerçekleştiğini görmek çoğu yazılımcı için yeterlidir. Ancak böyle bir durumun ileride sebep olabileceği durumlar yazılımcı tarafından tahmin edilmelidir. Yazılımcı yazılım geliştirme sürecine, yapılması istenen sistemin tüm gereksinimlerine, doğru düşünüp doğru çözüm üretmeye ve okunabilirliği, işlevi tam olan doğru ve düzenli programlar yazmaya hakim olmalıdır. Daima daha ileriyi düşünerek hareket etmelidir. Yazılımcı, süreç içerisinde, nasıl daha iyi kod yazılabilir, yazılımdan nasıl daha iyi bir performans elde edilebilir, yazılan kod başka bir sisteme kolayca entegre edilebilecek kadar doğru ve temiz midir, bir sonraki yazılımcı kodu adete gazete okur gibi okuyabilecek mi ya da sisteme müdahale edip kod üzerinde kolay bir şekilde değişiklik yapabilecek midir ve en önemlisi de gerçekten bu yazılan en iyi çözüm müdür gibi kaygılar taşımalıdır. Aksi taktirde, yazılmış olan kodu belli bir süre sonra değiştirmek isteyen yazılımcı, kodu doğru anlayıp, doğru müdahale edemeyebilir ve yapmak istediği değişikler çok uzun zaman alabilir. Bu da hem kişisel hem kurumsal motivasyon bozukluğuna, hem de maliyetin artmasına neden olabilir. Bazı durumlarda yazılımın performansını ihmal edilebilecek kadar etkileyen küçük kötü kokular göz ardı edilebilir. Ancak esnekliği, tanınırlığı, okunurluğu ve anlaşılabilirliği kötü olan kodlar mevcut yazılımcıyı kurtarsa bile sonraki yazılımcı için kabus olacaktır. Bu yüzden daima ya sonrası? düşüncesi yazılımcının aklında olmalıdır. Yazılımı yeniden düzenlemek için kötü kokunun ortaya çıkması beklenmemelidir. Her aşamada kod tekrar gözlenerek eksiklikler giderilmelidir, çünkü küçük detaylar dahi olsa, kod üzerinde Yeniden Düzenleme yapmamak, kodun daha temiz olma durumunu engeller. Çünkü küçük detaylar üzerinde Yeniden Düzenleme yapmak, tasarımda daha önce göremediğimiz eksiklikleri ya da yanlışlıkları fark etmemize yardımcı olur. Bu durum aynı zamanda iyi bir tasarım yapmayı kolaylaştırır. Ayrıca, tasarım desenlerinin yazılımda daha etkin bir şekilde kullanılmasına imkan sağlar.

4 2. Literatüre Genel Bakış Mens ve Tourwe [12], çalışmalarında Yeniden Düzenleme ve Yeniden Yapılandırma (ing. Restructuring) kavramlarına açıklık getirmiştir. Çalışan bir kod yapısı için gerekli olan Yeniden Düzenleme yöntemlerini uygulamış ve tasarımı daha anlaşılır, kolay müdahale edilebilir, nesneye dayalı tasarım ilkelerine uygun hale getirmiştir. Çalışmada yanlış tasarlanmış Doküman sınıf hiyerarşisi uygun Yeniden Düzenleme metodları kullanılarak ve bu metodların ne zaman, nerede, hangi durumlarda kullanılacağı örnek üzerinden açıklanarak tasarım optimum hale getirilmiştir. Çalışmada kullanılan yanlış tasarım örneği Şekil 1 de gösterilmiştir. Şekil 1. Doküman Sınıf Hiyerarşisi ve Yardımcı Sınıflar Şekil 1 de gösterilen hiyerarşide, Doküman sınıfının farklı işlevlerinin alt sınıflara dağıtılmasından dolayı ve Doküman sınıfına yeni bir özellik eklenmek istenildiğinde (metin arama, yazım denetimi vb.) Doküman sınıfının bütün alt sınıflarının değiştirilmesi gerektiği için tasarımın optimum olmadığı ve belirtilen sorunları çözmek için tasarımda Yeniden Düzenleme yapılması gerektiği belirtilmiştir. Tasarıma Visitor sınıfı eklenerek bütün alt sınıfları içinde barındırması sağlanmış, gerekli metod ve değişken isim değişiklikleri, uygun yerlere gerekli metotların taşınması, yeni sınıf ekleme gibi temel Yeniden Düzenleme yöntemleri kullanılarak tasarım optimum duruma getirilmiştir. Yeniden Düzenleme yöntemiyle uygun hale getirilen tasarım Şekil 2 de gösterilmiştir. Şekil 2. Yeni Doküman Sınıf Hiyerarşisi Liu ve arkadaşları [9], çalışmalarında yazılımların niçin ve hangi durumlarda yeniden yapılandırılması gerektiğini vurgulamıştır. Koddaki kötü kokuların araç desteği ile otomatik veya yarı otomatik bir şekilde tespit edilebileceğini ve çözümlenebileceğini belirtmişlerdir. Ancak bu noktada araç tarafından otomatik olarak tespit edilen kötü kokuların manuel olarak tekrar kontrol edilmesi gerektiği çünkü araç yardımıyla tespit edilen kötü kokuların doğruluğunun % 100 garanti altında olmadığı belirtilmiştir. Ayrıca, Yeniden Düzenleme kuralları doğrultusunda yazılım mühendislerinin koddaki kötü kokuları belirleyerek yeniden yapılandırabilecekleri de vurgulanmıştır. Yeniden Düzenleme kurallarının hepsinin araçlar tarafından desteklenmediği ve Yeniden Düzenleme kurallarının, araçlar tarafından desteklenen kurallara göre çok hızlı arttığı, koddaki kötü kokuları tespit etmenin araç desteği olsa bile zaman harcayıcı olduğu belirtilmiştir. Bazı kötü kokuların çözümlenmesinin, koddaki diğer kötü kokuların tespit edilmesini ve çözümlenmesini etkileyebileceği vurgulanmıştır. Örneğin, kötü kokulara sahip bir programda tekrar eden kod bloklarının uzun metotlara sebep olabileceği belirtilmiş ve eğer tekrar eden kod bloğu ortadan kaldırılırsa uzun metodun da kendiliğinden temiz kod standartlarına dönüşebileceği belirtilmiştir. Koddaki kötü

5 kokuların tespiti ve çözümlenmesinin akışı Şekil 3 de gösterilmiştir. Şekil 3. Kötü kokuları tespit etme ve çözümleme Chatzigeorgiou ve Manakos [1], çalışmalarında tasarımın ve analizin etkili olmamasının kodda kötü kokulara sebep olacağını, yazılımdaki tasarım problemlerinin yani koddaki kokuların çözümünün Yeniden Yapılandırma yapmak olduğunu belirtmişlerdir. Çalışmalarında geçerli bir Java kodu üzerinde JDeodarant Tool kullanılarak dört kötü koku tespit etmişlerdir. Uzun metodlar, boyutu büyük, karmaşıklığı yüksek, uyumu düşük; anlaşılırlığı, hata ayıklanması, test edilmesi ve bakımının yapılması çok zaman ve çaba isteyen kötü kokular olarak tanımlanmıştır. Bu problem, metodu daha küçük parçalara ayırarak ya da araç yardımıyla otomatik olarak tespit edilerek çözümlenmiştir. Geniş ve karmaşık sınıfları tespit etmek için ( God Class) JDeodarant Tool Kümeleme Algoritması yaklaşımı kullanılmıştır. Durum Kontrolü (ing. State Checking) olarak ifade edilen Şart ya da Eğer (ing. Switch or if/else) ifadeleri programın farklı yerlerinde görüldüklerinde, kodda Durum/Strateji (ing. State/Strategy) Tasarım Deseni eksikliği olduğu tespit edilmiştir. Bu kötü kokuyu JDeodarant Tool yardımıyla tespit etmek de mümkündür. Khomh ve arkadaşları [8], bugüne kadar gerek araştırmacıların gerekse uygulayıcıların koddaki ve tasarımdaki kötü kokuları tespit etmek için çeşitli yaklaşımlar geliştirdiklerini ancak bu yaklaşımların hiç birisinin kötü kokuyu tespit etme sürecindeki belirsizliği çözümleyemediğini belirtmiştir. Koddaki kötü kokuların tespiti için Bayes Yaklaşımı (BBNs) kullanılmıştır. Yaklaşım Blob AntiPattern üzerinde gösterilmiştir. BBN iki test program üzerinde değerlendirilmiş ve başarılı olduğu gözlenmiştir. Moha [13], çalışmasında zayıf tasarım kararlarından kaynaklanan tasarım kusurlarının nesneye dayalı tasarımların kalitesini azaltıcı bir etkiye sahip olduğunu, tasarım kusurlarının kesin bir şekilde tespit edilmesi ve düzeltilmesi için çok az sayıda yazılım aracı bulunduğunu, çalışmanın hedefinin tasarım kusurlarını kesin bir şekilde belirleyen ve tasarım kusurlarının ayrıntılarından otomatik tespit ve düzeltme yapan sistematik bir yaklaşım oluşturmak olduğunu belirtmiştir. Metodun ismi DECOR (Defect detection for CORrection) olarak belirlenmiş olup, oluşturulan metodun tasarım kusurlarını kesin olarak tespit ettiği ve uygun şekilde tasarım kusurlarını düzelttiği görülmüştür. DECOR, sırasıyla tasarım kusurunu açıklama, tespit etme, düzeltme ve doğrulama işlemlerini temel alır. Malhotra ve Pritam [10] nesneye dayalı bir sistemdeki mevcut kötü kokuların bir sınıf için tespit edilme eğilimini deneysel olarak onaylamak amacıyla bu çalışmayı gerçekleştirdiler. Quartz olarak adlandırılan açık kaynak zamanlayıcıdan 79 sınıf alarak veri seti olarak kullandılar. Eğilimi düşük ve yüksek olarak sınıflandırdılar. Quartz ın her iki versiyonu için ortak olan 79 sınıf için yapılan çalışmada, yüksek değişim eğilimindeki sınıfların gerçek sayısı 65 iken, çalışmadaki tahmin edilme durumu 53 tür. Benzer şekilde düşük değişim eğilimindeki sınıfların gerçek sayısı 14 iken çalışmada 26 olarak tahmin edilmiştir. Ayrıca Java sınıflarındaki 13 farklı kötü kokuyu tespit

6 etmek için eşik değerleri kullanılarak bir araç geliştirilmiştir. Schumacher ve arkadaşları [15], çalışmalarında kodda kötü kokuya neden olan geniş çaplı sınıfların ( God Class) profesyonel yazılım geliştiriciler tarafından nasıl tanındığını ve bu sınıflara nasıl çözüm getirdiklerini araştırmıştır. Devasa sınıflar çoklu sınıflara bölünerek ya da alt sınıflar bu devasa sınıftan çıkartılarak koddaki kötü kokuya çözüm getirilebilineceği belirtilmiştir. CodeVizard yazılım aracı ile metrik tabanlı yaklaşım devasa sınıfların tanınmasında kullanılmıştır. Bu bileşen C# programlarını ayrıştırmak ve kod metriklerini hesaplamak için kullanılmaktadır. Çalışmada çok büyük sınıfları, hem insanların hem de araçların tespit edebileceği ve başarı oranlarının yüksek olduğu kanıtlanmıştır. Kessentini ve arkadaşları [7], çalışmalarında Darvin in evrim teorisinden esinlenilerek ortaya çıkmış olan Genetik Algoritma yı koddaki kötü kokuları iyileştirmek için kullanmışlardır. Referans kodu ile kötü kokuları düzeltmek için kullanılan genel yaklaşım Şekil 4 te gösterilmiştir. Şekil 4. Yaklaşımın genel mimarisi Genetik Algoritmada sonuçlar vektör olarak gösterilmektedir. Çaprazlama ve mutasyon kullanılarak arama uzayı oluşturulmuştur. Koddaki kusuru düzeltmek için uygulanan Genetik Algoritma yaklaşımının sözde kodu aşağıdaki gibidir: 2: Pop:= set_of(i) 3: initial_population(pop, Max_size) 4: repeat 5: for all I Pop do 6: new_code := execute_refactorings(i, D) 7: fitness(i) := compare(rc, new_code) 8: end for 9: best_solution := best_fitness(i); 10: Pop := generate_new_population(pop) 11: it:=it+1; 12: until it=max_it or best_fitness fitness_threshold 13: return best_solution Kod kusurlarının düzeltilmesi için kullanılan yaklaşım açık kaynaklı sistemlerde test edilmiş ve başarılı olduğu gözlemlenmiştir. Rech ve Schäfer [14], yazılım sistemlerinin kalitesini iyileştirmek amacıyla CodeSonar aracını geliştirmişlerdir. CodeSonar, yazılım geliştirme ve bakım süreçleri boyunca tasarım kusurlarını göstermek için tasarlanmıştır. Nesneye dayalı sistemlerde koddaki kusurları otomatik olarak tanımayı ve göstermeyi hedeflemiştir. Eclipse yazılım geliştirme ortamı için geliştirilen sistem sınıfları, bu sınıfların metodları arasındaki ilişkileri ve başka sınıfları görselleştirir ve yazılım sistemindeki potansiyel kusurlar için geliştiriciyi uyarır. Bu çalışmada, koddaki kusurların keşfi ve yazılım görselleştirme için yazılım kontrolü, yazılım testi, yazılım ürün metrikleri, yazılım görselleştirme ve Yeniden Düzenleme teknikleri kullanılmıştır. Çalışmada CodeSonar aracının kullanımı detaylı olarak açıklanmış, basit ve anlaşılır bir araç olduğu belirtilmiştir. Input: Set of reference code RC Input: Set of refactorings RO Input: Code containing bad-smells D Output: Refactorings sequence RS 1: I:= combination(ro)

7 3. Koddaki Kötü Kokular ve Algoritma Analizi Algoritma bir problemi çözmek için uygulanan ardışık adımlar dizisidir ve bilgisayar biliminin temelini oluşturur. Bir algoritmadan beklenen hızlı çalışması ve bellekte az yer kaplamasıdır [4]. İyi bir algoritma daima en iyi performansı hedefler. Algoritma analizi algoritmaların performansını ölçmek için, farklı algoritmalarla karşılaştırmak için, daha iyisi mümkün mü, mevcut çözüm en iyi olan mi sorularına yanıt bulmak için kullanılır. Bir algoritmanın performansı iç (çalıştırmak için gereken zaman ve çalıştırmak için gereken yer) ve dış faktörlere (girdi verisinin büyüklüğü, bilgisayarın hızı, derleyicinin kalitesi) bağlıdır [6]. Koddaki kötü kokular yazılımda performans kaybına neden olur [2]. Performans kaybı ise yazılımın maliyetin yükselmesine, motivasyon bozukluğuna; taşınabilirliği, değiştirilebilirliği ve okunabilirliği zor olan kodların ortaya çıkmasına neden olur. Yazılımın performansını iyileştirmek için Yeniden Düzenleme kullanılmalıdır. Algoritmanın iç detaylarına bakılarak algoritmanın performansını tanımlamak için matematiksek bir yaklaşım olan Büyük O notasyonu kullanılır. Büyük-O notasyonu bir algoritmanın büyüme hızını gösterir ve büyüme hızı da bir algoritmanın performansını yansıtan en iyi göstergedir [6]. Koddaki kötü kokular Yeniden Düzenleme metodlarına göre yazılım mühendisi bakış açısıyla ya da araç yardımıyla tespit edilip, elle ya da yazılım aracı yardımıyla çözümlenebilir. Birçok çalışmada koddaki kötü kokunun tespitinde yanılmalar gözlenmiştir. Bu eksikliğin giderilebilmesi amacıyla, birçok Yeniden Düzenleme kuralı için, yazılım mühendisinin ya da yazılım aracının koddaki kötü kokuları doğru olarak tespit edip etmediğinin Algoritma Analizi yaklaşımı kullanılarak doğrulanabileceği öngörülmektedir. Bu doğrultuda, çok uzun döngülerin, iç içe çok fazla kullanılan döngü yapılarının, aşırı parametre alan metotların ve devasa sınıfların programı yorduğunun kanıtlanmasında Algoritma Analizi yaklaşımı kullanılabilecektir. 4. Sonuç ve Öneriler Bu çalışma, yazılım geliştirme süreci temel alınarak, yazılım mühendisliği disiplini çerçevesinde hazırlanmış olup, kodda kötü koku olarak bilinen tasarım yanlışlarının aslında sistemi analiz etme, sistem için karar verme ya da uygulamadaki eksiklik ve ihmallerden kaynaklandığı vurgulanmıştır. Kodlardaki kusurlar, Yeniden Düzenleme kuralları çerçevesinde bir yazılım aracı kullanılarak ya da yazılım mühendisinin tecrübesi sayesinde kodda kötü kokuların olduğuna karar vermesiyle tespit edilebilir. Ancak bu noktada bazı sorunlar göze çarpmaktadır. Birincisi, yazılım mühendisinin yanlış kararlar verme ihtimalidir. İkincisi, yazılım mühendisinin bakış açısı ve tecrübesi kullanılarak koddaki kötü kokuyu tespit etme ve çözümleme işlemlerinin çok uzun zaman almasının, maliyet ve işgücü kaybına neden olmasıdır. Daha önce yapılan çalışmalarda, koddaki kötü kokuyu tespit etmek için kullanılan yazılım araçlarının mevcut Yeniden Düzenleme yöntemlerinin tamamını içermediği, sadece belli bir kısmını tespit edebildiği ve çözüm üretebildiği görülmüştür. Yazılım araçlarının gelişme hızıyla yeni kod kusurlarının ortaya çıkmasının aynı ya da yakın hızlarda olmaması bu durumun en önemli sebebidir. Bu çalışmada literatür incelemesi detaylı olarak yapılmış, eksikler vurgulanarak gelecekte yapılacak çalışmalar için yol göstermesi hedeflenmiştir. Gelecek çalışmalarda, koddaki kötü kokular araç ya da yazılım mühendisi bakış açısıyla tespit edilecek ve Algoritma Analizi yöntemiyle kodda bulunan birçok kötü kokunun yazılımın performansını olumsuz olarak ne derece etkilediği kanıtlanmaya çalışılacaktır.

8 5. Kaynaklar [1] Chatzigeorgiou, A., Manakos, A., "Investigating the evolution of code smells in object-oriented systems", Innovations System Software Engineering, 10, 3-18, (2014). [2] Fowler, M., Beck, K., Brant, J., Opdyke, W., Roberts, D., Refactoring: Improving the Design of Existing Code, Addison-Wesley Professional(2002). [3] archive/2006/03/19/3060.aspx, [Date Accessed: 7 Oct 2014 ]. [4] com/2010/09/24/algoritma-analizi-analysisof-algorithms/, [Date Accessed: 3 Oct 2014 ]. [5] [Date Accessed: 7 Oct 2014 ]. [6] ri/algoritma_analizi.pdf/, [Date Accessed:3 Oct 2014]. [10] Malhotra, R., Pritam, N.," Assessment of Code Smells for Predicting Class Change Proneness", Software Quality Professional, 15(1), (2012). [11] Mehlhorn, K. & Sanders, P., "Algorithms and Data Structures", Springer,(2008) [12] Mens, T. & Tourwe, T., " A Survey of Software Refactoring", IEEE Transactions on Software Engineering, 30(2), (2004). [13] Moha, M., "Detection and Correction of Design Defects in Object-Oriented Designs", OOPSLA 07, Canada, (2007). [14] Rech, J. & Schäfer, W., "Visual Support of Software Engineers during Development and Maintenance", ACM SIGSOFT Software Engineering Notes, 32(2), (2007). [15] Schumacher, J., Zazworka, N., Shull, F., Seaman, C., Shaw, M., "Building Empirical Support for Automated Code Smell Detection", ESEM 10, Italy, (2010). [7] Kessentini, M., Mahaouachi, R., Ghedira, K., "What you like in design use to correct bad-smells", Software Qual J, 21: (2013). [8] Khomh, F., Vaucher, S., Gueheneuc, Y., Sahraoui, H., " A Bayesian Approach for the Detection of Code and Design Smells", Ninth International Conference on Quality Software, ,(2009). [9] Liu, H., Zhiyi, M., Shao, W., Niu, Z., "Schedule of Bad Smell Detection and Resolution: A New Way to Save Effort ", IEEE Transactions on Software Engineering, 38(1), (2012).

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ı

MESLEKİ TERMİNOLOJİ I 1. HAFTA YAZILIM MÜH. TEMEL KAVRAMLAR

MESLEKİ TERMİNOLOJİ I 1. HAFTA YAZILIM MÜH. TEMEL KAVRAMLAR YAZILIM: SOFTWARE Yazılım (Software): Yazılım sadece bir bilgisayar programı değildir. Basılı veya elektronik ortamdaki her tür dokümanı da içeren ürün. Dokümanlar yazılım mühendislerine ve son kullanıcıya

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ı

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay. PROGRAMLAMAYA GİRİŞ Öğr. Gör. Ayhan KOÇ Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay., 2007 Algoritma ve Programlamaya Giriş, Ebubekir YAŞAR, Murathan Yay., 2011

Detaylı

Genetik Algoritmalar. Bölüm 1. Optimizasyon. Yrd. Doç. Dr. Adem Tuncer E-posta:

Genetik Algoritmalar. Bölüm 1. Optimizasyon. Yrd. Doç. Dr. Adem Tuncer E-posta: Genetik Algoritmalar Bölüm 1 Optimizasyon Yrd. Doç. Dr. Adem Tuncer E-posta: adem.tuncer@yalova.edu.tr Optimizasyon? Optimizasyon Nedir? Eldeki kısıtlı kaynakları en iyi biçimde kullanmak olarak tanımlanabilir.

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ı

Facade (Cephe) Tasarım Şablonu KurumsalJava.com

Facade (Cephe) Tasarım Şablonu KurumsalJava.com Facade (Cephe) Tasarım Şablonu KurumsalJava.com Özcan Acar Bilgisayar Mühendisi http://www.ozcanacar.com Profesyonel yazılım sistemleri birçok komponentin birleşiminden oluşur. Yazılım esnasında bir çok

Detaylı

Önsöz. İçindekiler Algoritma Algoritma Nasıl Hazırlanır? Yazılımda Algoritma Mantığı Nedir? 1.2. Algoritma Örnekleri ve Sorular

Önsöz. İçindekiler Algoritma Algoritma Nasıl Hazırlanır? Yazılımda Algoritma Mantığı Nedir? 1.2. Algoritma Örnekleri ve Sorular Önsöz Giriş İçindekiler V VII IX 1.1. Algoritma 1.1.1. Algoritma Nasıl Hazırlanır? 1.1.2. Yazılımda Algoritma Mantığı Nedir? 1.2. Algoritma Örnekleri ve Sorular 2.1. Programın Akış Yönü 19 2.2. Başlama

Detaylı

KİNETİK MODEL PARAMETRELERİNİN BELİRLENMESİNDE KULLANILAN OPTİMİZASYON TEKNİKLERİNİN KIYASLANMASI

KİNETİK MODEL PARAMETRELERİNİN BELİRLENMESİNDE KULLANILAN OPTİMİZASYON TEKNİKLERİNİN KIYASLANMASI KİNETİK MODEL PARAMETRELERİNİN BELİRLENMESİNDE KULLANILAN OPTİMİZASYON TEKNİKLERİNİN KIYASLANMASI Hatice YANIKOĞLU a, Ezgi ÖZKARA a, Mehmet YÜCEER a* İnönü Üniversitesi Mühendislik Fakültesi Kimya Mühendisliği

Detaylı

AKIŞ ŞEMASI AKIŞ ŞEMASI AKIŞ ŞEMASI ŞEKİLLERİ GİRİŞ

AKIŞ ŞEMASI AKIŞ ŞEMASI AKIŞ ŞEMASI ŞEKİLLERİ GİRİŞ GİRİŞ AKIŞ ŞEMASI Bir önceki ünitede algoritma, bilgisayarda herhangi bir işlem gerçekleştirmeden ya da program yazmaya başlamadan önce gerçekleştirilmesi düşünülen işlemlerin belirli bir mantık ve plan

Detaylı

GRI Uygulama Seviyeleri 2000-2006 GRI. Versiyon 3.0

GRI Uygulama Seviyeleri 2000-2006 GRI. Versiyon 3.0 AL Kısa genel açıklama Bir raporun GRI İlkelerine dayandırıldığını göstermek için, rapor hazırlayıcıları Uygulama Seviyeleri sistemini kullanarak GRI Raporlama Çerçevesini hangi seviyede uygulamış olduklarını

Detaylı

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

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ 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 PROGRAMLAMA DİLLERİ BG-324 3/2 3+0+0 3+0 4 Dersin Dili : TÜRKÇE Dersin Seviyesi

Detaylı

Bilgisayarda Programlama. Temel Kavramlar

Bilgisayarda Programlama. Temel Kavramlar Bilgisayarda Programlama Temel Kavramlar KAVRAMLAR Programlama, yaşadığımız gerçek dünyadaki problemlere ilişkin çözümlerin bilgisayarın anlayabileceği bir biçime dönüştürülmesi / ifade edilmesidir. Bunu

Detaylı

Üst Düzey Programlama

Üst Düzey Programlama Üst Düzey Programlama JSP Üst Düzey Programlama-ders04/ 1 JSP JSP durağan HTML ile dinamik oluşturulan içeriği birleştirmeyi sağlar. Bir web sayfası tasarlama programı ile web sayfasını tasarlar daha sonra

Detaylı

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir; abstract Sınıflar 1 Özet sınıflar ya da özet metotlar abstract anahtar sözcüğü kullanılarak tanımlanırlar. Bir temel sınıf içinde bildirilen abstract metotların içeriği boştur. Kendisinden yeni bir instance

Detaylı

Bulanık Mantık Tabanlı Uçak Modeli Tespiti

Bulanık Mantık Tabanlı Uçak Modeli Tespiti Bulanık Mantık Tabanlı Uçak Modeli Tespiti Hüseyin Fidan, Vildan Çınarlı, Muhammed Uysal, Kadriye Filiz Balbal, Ali Özdemir 1, Ayşegül Alaybeyoğlu 2 1 Celal Bayar Üniversitesi, Matematik Bölümü, Manisa

Detaylı

Gereksiz Kodlar. burada if deyiminin else bölümüne gerek var mı? İfade doğruysa zaten fonksiyon geri dönüyor. Bu aşağıdakiyle tamamen eşdeğerdir:

Gereksiz Kodlar. burada if deyiminin else bölümüne gerek var mı? İfade doğruysa zaten fonksiyon geri dönüyor. Bu aşağıdakiyle tamamen eşdeğerdir: Gereksiz Kodlar Kaan Aslan 9 Temuz 1997 Kapalı spor salonu, durak yeri, taşıt aracı, en optimum, geri iade etmek, davranış biçimi Bu ifadelerde bir gariplik var, değil mi? Açık spor salonu göreniniz var

Detaylı

BİÇİMSEL YÖNTEMLER (FORMAL METHODS) Betül AKTAŞ Suna AKMELEZ

BİÇİMSEL YÖNTEMLER (FORMAL METHODS) Betül AKTAŞ Suna AKMELEZ BİÇİMSEL YÖNTEMLER (FORMAL METHODS) Betül AKTAŞ 14011021 Suna AKMELEZ 14011050 Biçimsel Yöntemler Nedir? Nerede Kullanılır? Biçimsel Tasarım Biçimsel Yöntemlerin Yararları Biçimsel Yöntemlerin Zayıf Yönleri

Detaylı

YAZILIM MÜHENDİSLİĞİ Şubat 2012 Yrd.Doç.Dr. Yunus Emre SELÇUK GENEL BİLGİLER

YAZILIM MÜHENDİSLİĞİ Şubat 2012 Yrd.Doç.Dr. Yunus Emre SELÇUK GENEL BİLGİLER YAZILIM MÜHENDİSLİĞİ Şubat 2012 Yrd.Doç.Dr. Yunus Emre SELÇUK GENEL BİLGİLER BAŞARIM DEĞERLENDİRME Sınav tarihleri: Daha sonra duyurulacak 1. Ara sınav yazılı, 2. Ara sınav: test, Final sınavı: yazılı

Detaylı

TEMEL BİLGİSAYAR BİLİMLERİ. Programcılık, problem çözme ve algoritma oluşturma

TEMEL BİLGİSAYAR BİLİMLERİ. Programcılık, problem çözme ve algoritma oluşturma TEMEL BİLGİSAYAR BİLİMLERİ Programcılık, problem çözme ve algoritma oluşturma Programcılık, program çözme ve algoritma Program: Bilgisayara bir işlemi yaptırmak için yazılan komutlar dizisinin bütünü veya

Detaylı

Bilişim Sistemleri Değerlendirme Modeli ve Üç Örnek Olay İncelemesi

Bilişim Sistemleri Değerlendirme Modeli ve Üç Örnek Olay İncelemesi Bilişim Sistemleri Değerlendirme Modeli ve Üç Örnek Olay İncelemesi Özet Dr. Sevgi Özkan ve Prof. Dr Semih Bilgen Enformatik Enstitüsü, Orta Doğu Teknik Üniversitesi, Ankara Tel: (312) 210 3796 e-posta:

Detaylı

ELN1001 BİLGİSAYAR PROGRAMLAMA I

ELN1001 BİLGİSAYAR PROGRAMLAMA I ELN1001 BİLGİSAYAR PROGRAMLAMA I DEPOLAMA SINIFLARI DEĞİŞKEN MENZİLLERİ YİNELEMELİ FONKSİYONLAR Depolama Sınıfları Tanıtıcılar için şu ana kadar görülmüş olan özellikler: Ad Tip Boyut Değer Bunlara ilave

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ı

T.C. MALTEPE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ LİSANS PROGRAMI. 2011-12 Bahar Yarıyılı

T.C. MALTEPE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ LİSANS PROGRAMI. 2011-12 Bahar Yarıyılı T.C. MALTEPE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ LİSANS PROGRAMI 2011-12 Bahar Yarıyılı ALGORİTMA VE PROGRAMLAMA BİL 133 5 AKTS Kredisi 1. yıl 1. yarıyıl Lisans Zorunlu 4 saat/hafta

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ş Kontrol Yapıları if Seçme Deyimi if... else Seçme Deyimi while Tekrar

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ı

1.1 Metodolojiyi Gerçeklemek Üzere Geliştirilen Altyapı

1.1 Metodolojiyi Gerçeklemek Üzere Geliştirilen Altyapı 1.1 Metodolojiyi Gerçeklemek Üzere Geliştirilen Altyapı Metodolojisi üzerinde durduğumuz çalışman Eğitim altyapısını gerçekleştirmek: Proje iki ana parçadan oluşacaktır. Merkezi Altyapı Kullanıcı Arabirimi

Detaylı

11.DERS Yazılım Testi

11.DERS Yazılım Testi 11.DERS Yazılım Testi 1 Yazılım Testi Bir programda hata bulma amacıyla icra edilen bir süreçtir. İyi bir test koşulu henüz ortaya çıkarılmamış bir hatayı tespit eden test koşuludur. Yazılım testinin önemi

Detaylı

Yazılım Mimari Tasarımından Yazılım Geliştirme Çatısının Üretilmesinde Model Güdümlü Bir Yaklaşım

Yazılım Mimari Tasarımından Yazılım Geliştirme Çatısının Üretilmesinde Model Güdümlü Bir Yaklaşım Yazılım Mimari Tasarımından Yazılım Geliştirme Çatısının Üretilmesinde Model Güdümlü Bir Yaklaşım İbrahim Onuralp Yiğit 1, Nafiye Kübra Turhan 2, Ahmet Erdinç Yılmaz 3, Bülent Durak 4 1,2,3,4 ASELSAN A.Ş.

Detaylı

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler C# Programlama Dili İlk programımız Tür dönüşümü Yorum ekleme Operatörler 1 İlk Programımız Bu program konsol ekranına Merhaba dünya! yazıp kapanır. Programı geçen derste anlatıldığı gibi derleyin, sonra

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ı

... ROBOTİK VE KODLAMA EĞİTİMİ ÇERÇEVESİNDE ÖĞRETİM YILI BİLİŞİM TEKNOLOJİLERİ DERSİ ÜNİTELENDİRİLMİŞ YILLIK DERS PLANI

... ROBOTİK VE KODLAMA EĞİTİMİ ÇERÇEVESİNDE ÖĞRETİM YILI BİLİŞİM TEKNOLOJİLERİ DERSİ ÜNİTELENDİRİLMİŞ YILLIK DERS PLANI ... ROBOTİK VE KODLAMA EĞİTİMİ ÇERÇEVESİNDE 2018 2019 ÖĞRETİM YILI BİLİŞİM TEKNOLOJİLERİ DERSİ ÜNİTELENDİRİLMİŞ YILLIK DERS PLANI Hazırlayan : Özel Öğretim Kurumları Birliği (ÖZKURBİR) Dersin Adı : Bilişim

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 Genel Bakış 2 Giriş Fonksiyonlara Genel Bakış C ve Fonksiyonlar Fonksiyon Tanımı 8. BÖLÜM 3 Fonksiyonlar

Detaylı

Programlama Nedir? Bir bilgisayar bilimcisi gibi düşünmek ve programlama ne demektir?

Programlama Nedir? Bir bilgisayar bilimcisi gibi düşünmek ve programlama ne demektir? 2.1.1. PROGRAMLAMA NEDIR? Programlama Nedir? Bir bilgisayar bilimcisi gibi düşünmek ve programlama ne demektir? Bu düşünme şekli matematiğin, mühendisliğin ve doğa bilimlerinin bazı özelliklerini birleştirmektedir.

Detaylı

Advanced Oracle SQL Tuning

Advanced Oracle SQL Tuning Advanced Oracle SQL Tuning Eğitim Takvimi Tarih Eğitim Süresi Lokasyon 30 Ekim 2018 2 Gün Bilginç IT Academy Eğitim Detayları Eğitim Süresi : 2 Gün Kontenjan : 16 Ön Koşullar : Herhangi bir ön koşul yoktur.

Detaylı

Kaynak Kod Güvenliği Bir Güvensiz API Örneği

Kaynak Kod Güvenliği Bir Güvensiz API Örneği Kaynak Kod Güvenliği Bir Güvensiz API Örneği Bedirhan Urgun, Ağustos 2010, WGT E-Dergi 6. Sayı Bu yazıda Tomcat J2EE kısmi uygulama sunucusunda bulunan bir güvenlik açığına, güvenlik probleminin kaynağına

Detaylı

Yazılım Örüntüleri (SE 461) Ders Detayları

Yazılım Örüntüleri (SE 461) Ders Detayları Yazılım Örüntüleri (SE 461) Ders Detayları Ders Adı Ders Kodu Dönemi Ders Saati Uygulama Saati Laboratuar Saati Kredi AKTS Yazılım Örüntüleri SE 461 Bahar 3 0 0 3 5 Ön Koşul Ders(ler)i Dersin Dili Dersin

Detaylı

BMH-405 YAZILIM MÜHENDİSLİĞİ

BMH-405 YAZILIM MÜHENDİSLİĞİ BMH-405 YAZILIM MÜHENDİSLİĞİ Dr. Musa ATAŞ Siirt Üniversitesi Bilgisayar Mühendisliği musa.ataş@siirt.edu.tr Ref list: Dr. Yunus Emre SELÇUK, Dr. Sadık EŞMELİOĞLU, Dr. Erhan SARIDOĞAN Yazılımı Etkileyen

Detaylı

Algoritma ve Akış Şemaları

Algoritma ve Akış Şemaları Algoritma ve Akış Şemaları Algoritma Tanımı, Algoritma Özellikleri, Algoritma Tasarımı, Akış Şemaları, Dallanma Simgeleri Döngü Simgeleri, Akış Şeması Tasarımı, Akış Şeması Özellikleri, N-S Şeması, W-O

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ı

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 Giriş Fonksiyonlara Genel Bakış C

Detaylı

Nesneye Dayalı Analiz ve Tasarım (SE 321) Ders Detayları

Nesneye Dayalı Analiz ve Tasarım (SE 321) Ders Detayları Nesneye Dayalı Analiz ve Tasarım (SE 321) Ders Detayları Ders Adı Ders Kodu Dönemi Ders Saati Uygulama Saati Laboratuar Saati Kredi AKTS Nesneye Dayalı Analiz ve Tasarım SE 321 Bahar 3 0 0 3 4.0 Ön Koşul

Detaylı

5. PROGRAMLA DİLLERİ. 5.1 Giriş

5. PROGRAMLA DİLLERİ. 5.1 Giriş 5. PROGRAMLA DİLLERİ 8.1 Giriş 8.2 Yazılım Geliştirme Süreci 8.3 Yazılım Geliştirme Sürecinde Programlama Dilinin Önemi 8.4 Programlama Dillerinin Tarihçesi 8.5 Programlama Dillerinin Sınıflandırılması

Detaylı

Proje Oryantasyon (SE 493) Ders Detayları

Proje Oryantasyon (SE 493) Ders Detayları Proje Oryantasyon (SE 493) Ders Detayları Ders Adı Ders Dönemi Ders Uygulama Kodu Saati Saati Laboratuar Saati Kredi AKTS Proje Oryantasyon SE 493 Bahar 2 0 0 2 3 Ön Koşul Ders(ler)i COMPE341 Dersin Dili

Detaylı

Model Güdümlü Geliştirme ile Gömülü Kaynakların Yönetimi

Model Güdümlü Geliştirme ile Gömülü Kaynakların Yönetimi Model Güdümlü Geliştirme ile Gömülü Kaynakların Yönetimi Can Öz EGE ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ BİLGİSAYAR MÜHENDİSLİĞİ A.B.D. 1 İçerik Kaynak Yönetimi Problemi Kaynak Yönetimi Modellemesinin

Detaylı

Yıldız Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü. 13 Kasım 2010

Yıldız Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü. 13 Kasım 2010 Yıldız Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü 13 Kasım 2010 2010-2011 Eğitim Yılı (Haziran-Kasım 2010 tarihleri arasında) Bölümü Değerlendirme Anket Formu Raporu Öğrencilerimizin staj yaptıkları

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ı

Bilimsel Araştırma Yöntemleri I

Bilimsel Araştırma Yöntemleri I İnsan Kaynakları Yönetimi Bilim Dalı Tezli Yüksek Lisans Programları Bilimsel Araştırma Yöntemleri I Dr. M. Volkan TÜRKER 7 Bilimsel Araştırma Süreci* 1. Gözlem Araştırma alanının belirlenmesi 2. Ön Bilgi

Detaylı

GÖRSEL PROGRALAMA HAFTA 2 PROGRAMLAMA DİLLERİNE GİRİŞ

GÖRSEL PROGRALAMA HAFTA 2 PROGRAMLAMA DİLLERİNE GİRİŞ GÖRSEL PROGRALAMA HAFTA 2 PROGRAMLAMA DİLLERİNE GİRİŞ Hafta Hafta 1 Hafta 2 Hafta 3 Hafta 4 Hafta 5 Hafta 6 Hafta 7 Hafta 8 Hafta 9 Hafta 10 Hafta 11 Hafta 12 Hafta 13 Hafta 14 Konu Giriş Programlama Dillerine

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ı

Makine Öğrenmesi İle Duygu Analizinde Veri Seti Performansı

Makine Öğrenmesi İle Duygu Analizinde Veri Seti Performansı Makine Öğrenmesi İle Duygu Analizinde Veri Seti Performansı Hatice NİZAM İstanbul Üniversitesi Bilgisayar Mühendisliği Bölümü haticenizam@outlook.com Saliha Sıla AKIN ERS Turizm Yazılım Şirketi, Bilgisayar

Detaylı

DERS BİLGİ FORMU. IV Türkçe Zorunlu Ders. Haftalık. Ders. Okul Eğitimi Süresi. Saati

DERS BİLGİ FORMU. IV Türkçe Zorunlu Ders. Haftalık. Ders. Okul Eğitimi Süresi. Saati DERS BİLGİ FORMU DERSİN ADI SİSTEM ANALİZİ VE TASARIMI I BÖLÜM PROGRAM DÖNEMİ DERSİN DİLİ DERS KATEGORİSİ ÖN ŞARTLAR SÜRE VE DAĞILIMI KREDİ DERSİN AMACI ÖĞRENME ÇIKTILARI VE YETERLİKLER DERSİN İÇERİĞİ

Detaylı

ŞİKAYET / İTİRAZ VE GERİ BİLDİRİM PROSEDÜRÜ

ŞİKAYET / İTİRAZ VE GERİ BİLDİRİM PROSEDÜRÜ Sayfa No: 1/5 A. İÇİNDEKİLER Bölüm KONU SAYFA NO REFERANS STANDART MADDESİ TS EN ISO IEC 17020:2012 A. İÇİNDEKİLER 1 B. ŞİKAYET / İTİRAZ VE GERİ BİLDİRİM 2 7.6 1. AMAÇ 2 2. KAPSAM 2 3. SORUMLULUK 2 3.1

Detaylı

Deneyim Raporu. , Ankara, Türkiye. {gokhan.urul, gokalp.urul}@intest.com.tr. vahid.garousi@atilim.edu.tr

Deneyim Raporu. , Ankara, Türkiye. {gokhan.urul, gokalp.urul}@intest.com.tr. vahid.garousi@atilim.edu.tr Deneyim Raporu Gökhan Urul 1, Vahid Garousi 2,3, Gökalp Urul 1 1: Ankara, Türkiye {gokhan.urul, gokalp.urul}@intest.com.tr 2:, Ankara, Türkiye vahid.garousi@atilim.edu.tr 3: Kalgari Üniversitesi Kalgari,

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 Programlama Dillerinin Prensipleri BİM-323 3/II 3+0+0 3 4 Dersin

Detaylı

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması Ağaç, verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyararşik yapıya sahip

Detaylı

Sistem Yazılımının Sınanması ve Geçerlenmesi (SE 344) Ders Detayları

Sistem Yazılımının Sınanması ve Geçerlenmesi (SE 344) Ders Detayları Sistem Yazılımının Sınanması ve Geçerlenmesi (SE 344) Ders Detayları Ders Adı Ders Dönemi Ders Uygulama Kodu Saati Saati Laboratuar Kredi AKTS Saati Sistem Yazılımının Sınanması ve Geçerlenmesi SE 344

Detaylı

C# ile NJ Simulatöre Bağlanmak

C# ile NJ Simulatöre Bağlanmak C# ile NJ Simulatöre Bağlanmak Genel Bilgi Sysmac Studio da Değişkenlerin Oluşturulması Windows Form Oluşturulması Gerekli Dosyaların Referanslara Eklenmesi Form1.cs Dosya Yapısı Genel Bilgi Bu dökümanda

Detaylı

JAVA DÖNGÜ DEYİMLERİ. For Döngüsü

JAVA DÖNGÜ DEYİMLERİ. For Döngüsü JAVA DÖNGÜ DEYİMLERİ Belirli bir iş bir çok kez tekrarlanacaksa, programda bu iş bir kez yazılır ve döngü deyimleriyle istenildiği kadar tekrarlanabilir. Java da bu işi yapan üç ayrı deyim vardır: while

Detaylı

Yazılım Süreçleri Software Processes

Yazılım Süreçleri Software Processes Yazılım Süreçleri Software Processes Yazılım geliştirme Süreç Modelleri Software Development Process Models Proje Yönetimi Süreçleri Project Management Process Yazılım Geliştirme Süreçleri Software Development

Detaylı

https://twitter.com/farukbozan 19 Şubat 2016 Cuma

https://twitter.com/farukbozan 19 Şubat 2016 Cuma Bugünkü yazımda çok basit ve temel anlamda Spring ile XML tanım tabanlı bean okuma işlemini anlatmaya çalışacağım. Spring framework bizim yerimize nesnelerin birbirine olan bağımlılıklarını düzenleyip,

Detaylı

Sistem Geliştirme Yaşam Döngüsü (The Systems Development Life Cycle) (SDLC)

Sistem Geliştirme Yaşam Döngüsü (The Systems Development Life Cycle) (SDLC) Sistem Geliştirme Yaşam Döngüsü (The Systems Development Life Cycle) (SDLC) Sistem analistlerinin ve kullanıcı faaliyetlerinin spesifik döngüsünün kullanılmasıyla En iyi geliştirilmiş sistemin oluşmasını

Detaylı

YAZILIM GÜVENLİK TESTLERİ. H A L D U N T E R A M A N h a l d u n t e r a m a g m a i l. c o m

YAZILIM GÜVENLİK TESTLERİ. H A L D U N T E R A M A N h a l d u n t e r a m a g m a i l. c o m YAZILIM GÜVENLİK TESTLERİ H A L D U N T E R A M A N h a l d u n t e r a m a n @ g m a i l. c o m TEST NEDİR? Test, bir sistemi manuel veya otomatik yollarla deneyerek veya değerlendirerek, belirlenmiş

Detaylı

Bir yazılım geliştirme metodolojisi aşağıdaki adımlardan meydana gelir; Yazılım geliştirme sürecine destek verecek araçlar, modeller ve yöntemler.

Bir yazılım geliştirme metodolojisi aşağıdaki adımlardan meydana gelir; Yazılım geliştirme sürecine destek verecek araçlar, modeller ve yöntemler. Yazılım Mühendisliği kapsamındaki Yazılım Geliştirme Metodolojileri, bir bilgi sistemini geliştirme sürecinin yapımını, planlamasını ve kontrolünü sağlayan bir framework tür. Her farklı framework güçlü

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ı

Basit Mimari, Katmanlı Mimari ve doğrudan çalıştırma olarak üçe ayrılır.

Basit Mimari, Katmanlı Mimari ve doğrudan çalıştırma olarak üçe ayrılır. Yazılım Mimarisi 1.Yazılım Mimarisi Nedir? Yazılım mimarisi geliştirilen uygumaların maliyetlerinin azaltılmasında önemli bir yer tutar. Örneğin MVC modeli kullanarak bir uygulama geliştiriyoruz ve arayüz

Detaylı

Üst Düzey Programlama

Üst Düzey Programlama Üst Düzey Programlama Yazılımda Günlükleme (Logging) Üst Düzey Programlama-ders07/ 1 Günlükleme -Logging Tüm büyük çaplı uygulamalarda günlükleme(logging) ihtiyaçları bulunmaktadır. Bir uygulamanın hata

Detaylı

YZM 2108 Yazılım Mimarisi ve Tasarımı

YZM 2108 Yazılım Mimarisi ve Tasarımı YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 1 Yazılım Tasarımına Giriş Bu bölümde;

Detaylı

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA 3. HAFTA EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA Öğr. Gör. S. M. Fatih APAYDIN apaydin@beun.edu.tr EMYO Bülent Ecevit Üniversitesi Kdz. Ereğli Meslek Yüksekokulu PROBLEM ÇÖZME (PROBLEM SOLVING) nereden

Detaylı

Yaz.Müh.Ders Notları #6 1

Yaz.Müh.Ders Notları #6 1 YAZILIM MÜHENDİSLİĞİ Prof.Dr. Oya Kalıpsız GİRİŞ 1 YAZILIM YETERLİLİK OLGUNLUK MODELİ Olgunluk Seviyeleri: Düzey 1. Başlangıç düzeyi: Yazılım gelişimi ile ilişkili süreçlerin tanımlanması için hiçbir sistematik

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ı

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ı

25.10.2011. Arayüz Nedir? Arayüz Çeşitleri Arayüz Tasarım Yöntemleri Arayüz Tasarım Hataları. Ömer Faruk MIZIKACI 2008639402

25.10.2011. Arayüz Nedir? Arayüz Çeşitleri Arayüz Tasarım Yöntemleri Arayüz Tasarım Hataları. Ömer Faruk MIZIKACI 2008639402 Arayüz Tasarımı ve Programlama Neleri Konuşacağız Arayüz Nedir? Arayüz Çeşitleri Arayüz Tasarım Yöntemleri Arayüz Tasarım Hataları Ömer Faruk MIZIKACI 2008639402 Arayüz Nedir? Bilgisayar ve uygulamalarının

Detaylı

Bilişim Sistemleri. Modelleme, Analiz ve Tasarım. Yrd. Doç. Dr. Alper GÖKSU

Bilişim Sistemleri. Modelleme, Analiz ve Tasarım. Yrd. Doç. Dr. Alper GÖKSU Bilişim Sistemleri Modelleme, Analiz ve Tasarım Yrd. Doç. Dr. Alper GÖKSU Ders Akışı Hafta 10-11. Nesneye Yönelik Sistem Tasarımı Haftanın Amacı Bilişim sistemleri geliştirmede nesneye yönelik sistem tasarımı

Detaylı

Kredi Limit Optimizasyonu:

Kredi Limit Optimizasyonu: Kredi Limit Optimizasyonu: «Teorik Değil Pratik" Simge Danışman Analitik Direktörü, Experian EMEA Kar Gelişimi Kredi Limit Optimizasyonu Optimizasyona Genel Bakış Profilleme Modelleme Karar Matrisleri

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları DİZİLER Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların isimleri ortaktır. Elemanlar

Detaylı

Bilgiyi Keşfedin! Özelleştirme, Eklenti ve Veri Entegrasyonu Kurumsal Seviyede Yönetim ve Performans

Bilgiyi Keşfedin! Özelleştirme, Eklenti ve Veri Entegrasyonu Kurumsal Seviyede Yönetim ve Performans Bilgiyi Keşfedin! LOGO MIND INSIGHT (powered by Qlik) İŞ ANALİTİĞİ ÜRÜNÜ, HERKESİN SEZGİLERİ İLE ARAŞTIRMA VE KEŞİF YAPMASINI SAĞLAYAN ÇOK ÇEŞİTLİ ESNEK VE İNTERAKTİF GÖRSELLER OLUŞTURABİLECEĞİ YENİ NESİL

Detaylı

public static int Toplam int x, int y

public static int Toplam int x, int y static Kavramı 1 İçinde bulunduğu sınıftan nesne oluşturulmadan veya hiç bir nesneye referans olmadan kullanılabilen üyeler static olarak nitelendirilir. Metotlar ve alanlar static olarak tanımlanabilir.

Detaylı

Yazılım Mühendisliğinin Temelleri (SE 100) Ders Detayları

Yazılım Mühendisliğinin Temelleri (SE 100) Ders Detayları Yazılım Mühendisliğinin Temelleri (SE 100) Ders Detayları Ders Adı Ders Dönemi Ders Kodu Saati Uygulama Saati Laboratuar Kredi AKTS Saati Yazılım Mühendisliğinin Temelleri SE 100 Güz 1 2 0 2 2 Ön Koşul

Detaylı

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers) 1 BLM 112- Programlama Dilleri II Hafta 5 İşaretçiler (Pointers) Dr. Öğr. Üyesi Caner Özcan Hiç hata yapmayan insan, hiçbir şey yapmayan insandır. Ve hayatta en büyük hata, kendini hatasız sanmaktır. ~Y.

Detaylı

MAK 210 SAYISAL ANALİZ

MAK 210 SAYISAL ANALİZ MAK 210 SAYISAL ANALİZ BÖLÜM 1- GİRİŞ Doç. Dr. Ali Rıza YILDIZ 1 Mühendislikte, herhangi bir fiziksel sistemin matematiksel modellenmesi sonucu elde edilen karmaşık veya analitik çözülemeyen denklemlerin

Detaylı

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

VERİ YAPILARI VE PROGRAMLAMA (BTP104) VERİ YAPILARI VE PROGRAMLAMA (BTP104) Yazar: Doç.Dr. İ. Hakkı CEDİMOĞLU S1 SAKARYA ÜNİVERSİTESİ Adapazarı Meslek Yüksekokulu Bu ders içeriğinin basım, yayım ve satış hakları Sakarya Üniversitesi ne aittir.

Detaylı

1.Yazılım Geliştirme Metotları 1

1.Yazılım Geliştirme Metotları 1 1.Yazılım Geliştirme Metotları 1 1.1 Klasik Çevrim(Waterfall) 1.2 V Modeli 1.3 Prototipleme/Örnekleme 1.4 Spiral Model 1.5 Evrimsel Geliştirme 1.6 Evrimsel Prototipleme 1.7 Artımlı Geliştirme 1.8 Araştırmaya

Detaylı

Algoritmalar ve Programlama. Algoritma

Algoritmalar ve Programlama. Algoritma Algoritmalar ve Programlama Algoritma Algoritma Bir sorunu / problemi çözmek veya belirli bir amaca ulaşmak için gerekli olan sıralı mantıksal adımların tümüne algoritma denir. Algoritma bir sorunun çözümü

Detaylı

Dağıtık Sistemler CS5001

Dağıtık Sistemler CS5001 Dağıtık Sistemler CS5001 Th. Letschert Çeviri: Turgay Akbaş TH Mittelhessen Gießen University of Applied Sciences Biçimsel model nedir Biçimsel model matematiksel olarak tanımlanmış olan bir modeldir.

Detaylı

B03.10 Algoritmalari Uygulamak : Durum 3 (Yuvalı Kontrol Yapıları) Şimdi başka bir problem üzerinde çalışalım.

B03.10 Algoritmalari Uygulamak : Durum 3 (Yuvalı Kontrol Yapıları) Şimdi başka bir problem üzerinde çalışalım. 85 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Şimdi başka bir problem üzerinde çalışalım. Algoritmamızı yine sahte kod ve yukarıdan aşağıya adımsal iyileştirmeyle oluşturacağız

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ı

ARDIŞIL DİYAGRAM YAPI DİYAGRAMI. Sistem Analizi ve Tasarımı Dersi

ARDIŞIL DİYAGRAM YAPI DİYAGRAMI. Sistem Analizi ve Tasarımı Dersi ARDIŞIL DİYAGRAM YAPI DİYAGRAMI Sistem Analizi ve Tasarımı Dersi İçindekiler Ardışıl Diyagram Nedir ve Neden Kullanılır... 3 Ardışıl Diyagram Elemanları... 3 MS Visio ile Ardışıl Diyagram Çizimi... 5 Violet

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonu Referans ile Çağırma (Call by Reference) Bir fonksiyona gönderilen parametrenin normalde değeri değişmez. Fonksiyon içinde yapılan işlemlerin hiçbiri argüman değişkeni

Detaylı

Uyumluluk markalamasından katma değerli kodlamaya kadar

Uyumluluk markalamasından katma değerli kodlamaya kadar Teknik rapor Uyumluluk markalamasından katma değerli kodlamaya kadar Ultra Yüksek Hızlı Sürekli Mürekkep Püskürtme teknolojisi, ambalajlamayı geliştirmek için yeni olanaklar oluşturmaktadır Kodlama ve

Detaylı

YMT 505-Yazılım Proje Yönetimi Giriş- Temel Kavramlar

YMT 505-Yazılım Proje Yönetimi Giriş- Temel Kavramlar YMT 505-Yazılım Proje Yönetimi Giriş- Temel Kavramlar 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 ü YMT 505-YAZILIM PROJE YÖNETİMİ 1 Bu Haftaki Konular-Temel Kavramlar

Detaylı

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Yapılar ve Birlikler enum Deyimi

Detaylı

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 6. Yrd.Doç.Dr.Hacer Karacan

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 6. Yrd.Doç.Dr.Hacer Karacan NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 6 Yrd.Doç.Dr.Hacer Karacan İçerik UML Yapı Diyagramları Eylem Diyagramları Etkileşim Diyagramları UML Diyagramlar UML görsel olarak modelleme için birçok diyagrama sahiptir.

Detaylı

Temel Kavramlar Bilgi :

Temel Kavramlar Bilgi : Temel Kavramlar Bilim, bilgi, bilmek, öğrenmek sadece insana özgü kavramlardır. Bilgi : 1- Bilgi, bilim sürecinin sonunda elde edilen bir üründür. Kişilerin öğrenme, araştırma veya gözlem yolu ile çaba

Detaylı

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

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ 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 YAZILIM MÜHENDİSLİĞİ BG-411 4/1 3+0+0 3+0 5 Dersin Dili : TÜRKÇE Dersin Seviyesi

Detaylı

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü ALGORİTMA ANALİZİ Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü 2 Temel Kavramlar Algoritma: Bir problemin çözümünü belirli bir zamanda çözmek için sonlu sayıdaki adım-adım birbirini takip eden

Detaylı

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ Ders 10 LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ LINUX de Programlama LINUX işletim sistemi zengin bir programlama ortamı sağlar. Kullanıcılara sistemi geliştirme olanağı sağlar.

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 14: Çoklu İşlev İçerik Çoklu İşlevin Gerçekleştirilmesi Saf Sanal Fonksiyonlar ve Soyut Sınıflar Sanal Yıkıcı Fonksiyonlar Statik ve Dinamik Bağlama 2 Çoklu İşlev

Detaylı

TS EN ISO 9001:2008 Kalite Yönetim Sistemi Kurum İçi Bilgilendirme Eğitimi ISO 9001 NEDİR?

TS EN ISO 9001:2008 Kalite Yönetim Sistemi Kurum İçi Bilgilendirme Eğitimi ISO 9001 NEDİR? ISO 9001 NEDİR? ISO 9001, tüm imalat ve hizmet şirketleri için hazırlanmış olan ve Kalite Yönetim Sistemi nin gereklerini belirleyen uluslararası bir standarttır. Kurumun mal veya hizmet üretimindeki tüm

Detaylı

EŞİTLİK KISITLI TÜREVLİ YÖNTEMLER

EŞİTLİK KISITLI TÜREVLİ YÖNTEMLER EŞİTLİK KISITLI TÜREVLİ YÖNTEMLER LAGRANGE YÖNTEMİ Bu metodu incelemek için Amaç fonksiyonu Min.z= f(x) Kısıtı g(x)=0 olan problemde değişkenler ve kısıtlar genel olarak şeklinde gösterilir. fonksiyonlarının

Detaylı