Yazılım Mühendisliği (Software Engineering)

Observer Design Pattern (Gözlemci Tasarım Kalıbı)

Yazan : Şadi Evren ŞEKER Bu yazının amacı, nesne yönelimli programlama ortamlarında kullanılan bir tasarım kalıbı (design pattern) olan gözlemci tasarım kalıbını (observer design pattern) açıklamak ve kullanımına dair bir örnek vermektir. Nesne yönelimli olmayan programlama dillerinde (örneğin C) aynı yapı, geri çağırım (callback) ismi verilen yaklaşım ile yapılabilir. Konuya, klasik bir gözlemci tasarım kalıbını [...]

Document Management Systems (Doküman Yönetim Sistemleri)

Yazan : Şadi Evren ŞEKER Bu yazının amacı, bilgisayar dünyasında kullanılan döküman yönetim sistemlerinin genel bir tanımını yapmak ve bir doküman yönetim sisteminin yapısını açıklamaktır. Genel olarak bir doküman yönetim sistemi (document management system), herhangi bir organizasyondaki dokümanların (yazışmalar, evraklar, formlar veya resimler gibi) takibini yapmayı, tasnif ederek erişimini kolay hale getirmeyi, sorgulamalara ve aramalara [...]

Spagetti Kod (Spaghetti Code)

Yazan : Şadi Evren ŞEKER Bilgisayar kodlamasında, bir kodun okunabilirliğinin düşük olması, yani kod takibinin zor olması durumunda, koda verilen isimdir. Genellikle yapısal programlama dillerinde (structured programming languages) fonksiyonların bulunması ile birlikte GOTO veya JMP gibi, kodun içerisinde bir yerden başka bir yere atlayan komutların kaldırılması mümkündür. Bu tip komutların kullanılması durumunda, kodun hem diğer [...]

Örnek Kodlama Kuralları

Yazan : Şadi Evren ŞEKER Bu yazının amacı, geliştirme ortamlarında kullanılan kodlama standartları için örnek bir doküman oluşturmaktır. Kodlama standardı, daha sonradan yapılacak olan bakım, güncelleme ve ekleme işlemlerinin kolaylaşmasını sağlarken, dokümantasyon ve projeye dahil olan yeni personelin adaptasyonunu hızlandıracaktır. Kurallar, aşağıdaki başlıklar halinde sunulmuştur. Karakter Kodlaması Kod geliştirilmesi sırasında, kullanılan isimlerin hiçbirisinde Türkçe karakter [...]

Zeki Vekiller (Akıllı Ajanlar, Intelligent Agents, Zeki Etmenler )

Yazan : Şadi Evren ŞEKER Zeki vekiller (etmenler, ajanlar) kavram olarak, bilgisayar bilimlerine, felsefe, biyoloji ve ekonomi alanındaki çalışmalardan sonra girmiştir. Bu alanlardaki anlamı ve kullanımı, genellikle herhangi bir işin farklı bir vekil tarafından yürütülmesi olarak anlaşılabilir. Bilgisayar bilimlerin açısından zeki kelimesi, bir vekilin herhangi bir işlemi belirli inisiyatifler kullanarak yerine getirmesidir. Örneğin zeki olmayan [...]

C2 Üslûbu (C2 Style)

Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde özellikle yazılım mühendisliği (Software engineering) konusunda kullanılan ve bileşen (component) ve mesaj (message) temelli yazılım geliştirmeyi amaçlayan bir üsluptur. C2 tasarım kültüründe yazılım bileşenler şeklinde ele alınır ve yazılımı oluşturan bu bileşenler üzerinden bir ağ (network) çizilir. Bu ağda bileşenler arası haberleşme gösterilir. Bu sayede tasarlanan bir bileşenin [...]

JML ( Java Modelleme Dili)

Yazan  : Şadi Evren ŞEKER JML ingilizce Java modelling language kelimelerinin baş harflerinden oluşan bir kısaltmadır. Basitçe bir java kaynak koduna eklenen ilave satırlar ile progam doğruluğunu (program correctness) sağlamayı amaçlar (program verification). İlave olarak eklenecek satırlar java kodunun içerisine yorum satırı gibi ilave edilir. Normal java yorum satırlarından tek farkı ilave olarak konulan @ [...]

Program doğruluğu ( Program correctness)

Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde bir programın istenen özellikleri yerine getirip getirememesine verilen isimdir. Buna göre şayet bir program, beklenen özellikleri tam ve eksiksiz yerine getiriyor, istenmeyen sonuçlar ortaya çıkmıyor ve program başladıktan sonra her durumda başarılı bir şekilde bitiyorsa bu programa tam doğru ( total correctness) ismi verilir. Durma probeleminden (halting problem) [...]

Kara Kutu Yaklaşımı (Black Box)

Yazan : Şadi Evren ŞEKER Çok klasik bir mühendislik yaklaşımıdır. Bu yaklaşım sistemi analiz ederken sistemin içeriğin görmezden gelerek sisteme girenler ve çıkanların analiz edilmesini söyler. Yukarıdaki temsili resimde gösterildiği üzere, tahlil edilen sistem bir kara kutya benzetilerek sisteme giren ve çıkanlar incelenir. Bu anlamda yazılım mühendisliğinde sıklıkla kullanılan kara kutu yaklaşımında sistem önce büyük [...]

Şadi Evren ŞEKER tarafından, 29/08/2009 tarihinde yazıldı. | Yazılım Mühendisliği (Software Engineering) | A yorum var

Nokta Kesiciler (PointCuts)

Yazan : Şadi Evren ŞEKER Bağlam yönelimli programlama (Aspect oriented programming) konusunda kullanılan en önemli yapı taşlarındandır. Basitçe bir programın akışı içerisinde bağalam noktaları (joinpoints) belirlendikten sonra bu noktalara hangi bağlamların (Aspects) bağlanacağını belirleyen kümedir. Yani nesne yönelimli bir ortamda yazılan programımız üzerine örmek istediğimiz (aspect weaving) bağlamları (aspects) kod üzerindeki birleşim noktaları (joinpoints) ile [...]

Şadi Evren ŞEKER tarafından, 16/07/2009 tarihinde yazıldı. | Yazılım Mühendisliği (Software Engineering) | A yorum var

Birleşim Noktaları (JoinPoints)

Yazan : Şadi Evren ŞEKER Bağlam yönelimli (aspect oriented) programlamada kullanılan terimlerdendir. Anlam olarak programda bulunan bir kontrol noktasının bir veya daha fazla bağlamın etkisinde olduğu nokta demektir. Bu anlamda bir kodda bulunan bütün satırlar birleşim noktası (joinpoint) olabilir ancak bu yaklaşım bağlam yönelimli programlama açısından doğru olmaz. Daha doğrusu bütün olası birleşme noktalarından en [...]

Bağlam Örücüler (Apect Weavers)

Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde yazılım geliştirme sürecinde kullanılan yaklaşımlardan birisi de bağlam yönelimli programlamadır (Aspect oriented programming). Bu yaklaşım, yazılım geliştirme yaklaşımları sıralasında nesne yönelimli programlamadan sonra gelmektedir. Yani bir anlamda her bağlam yönelimli programlama yaklaşımı aslında bir nesne yönelimli programlama yaklaşımını kapsar. Nesne yönelimli programlama yaklaşımından farklı olarak bağlam yönelimli programlama [...]

Veri Bütünlüğü (Data Integrity)

Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinin birinci derece uğraştığı varlık veridir. Yani bilgisayar bilimlerinde yapılan her işi bir bakışa göre veriyi işlemek olarak görmek mümkündür. İşlenen bu verinin bütünlüğü ise ayrı bir problemdir. Veri bütünlüğü ile genelde verinin birden fazla parçaya bölünmesi durumunda bu parçaların bütün olarak tutulması kastedilir. Veri’nin bölünmesi ne zaman gerekir [...]

Bağlam Yönelimli Programlama (Aspect Oriented Programming)

Yazan : Şadi Evren ŞEKER Yazılım mühendisliğinde kullanılan bir programlama yaklaşımıdır. AOP olarak kısaltılmış halde de geçer. Türkçe literatüründe bağlam / cephe / kesit / görünüm yönelimli programlama kelimelerinin hepsi farklı kaynaklarda kullanılmıştır. 1990′lı yılların ortalarında özellikle JAVA ve nesne yönelimli programlama ihe ivme kazanmış bir yaklaşımdır. Kısaca aop’yi tanımlamak gerekirse bir program geliştirilmesi sırasında [...]

MVC (Model View Controller, Model Bakış Kontrolcü)

Yazan : Şadi Evren ŞEKER Yazılım mühendisliğinde kullanılan bir mimari yaklaşımdır. Basitçe yazılımın tasarımı ve geliştirilmesi aşamalarında etkili olan bir bakış açısını yansıtır. Bu bakış açısına göre kullanıcı ara yüzü (user interface) ile iş mantığı (business logic) birbirinden ayrı olmalıdır. Yani kullanıcıların önündeki ekranların tasarlanması ve geliştirilmesi sırasında kullanıcı gözüyle analiz yapılmalı ve bu analize [...]

Atomluluk (Atomicity)

Yazan: Şadi Evren ŞEKER Latince bölünemez anlamına gelen atom kökünden üretilen bu kelime, bilgisayar bilimlerinde çeşitli alanlarda bir bilginin veya bir varlığın bölünemediğini ifade eder. Örneğin programlama dillerinde bir dilin atomic (bölünemez) en küçük üyesi bu anlama gelmektedir. Mesela C dilinde her satır (statement) atomic (bölünemez) bir varlıktır. Benzer şekilde bir verinin bölünemezliğini ifade etmek [...]

Tekrarlı ve Arttırımlı Geliştirme (Iterative and Incremental Development)

Yazan : Şadi Evren ŞEKER Yazılım mühendisliğinde (software engineering) kullanılan bir geliştirme metodudur. Bu metdo şelale modelindeki (waterfall model) eksiliklerden yola çıkılarak geliştirilmiştir ve yazılımın geliştirilmesi sırasında bir tekrar ile (döngü) yazılımın daha iyi hale getirilmesi hedeflenir. Yukarıdaki şekilde görüldüğü üzere planlama ile başlayan ve tertip (deployment) ile biten süreçte bir döngü (iteration) sürekli olarak [...]

Bağlama (Coupling)

Yazan : Şadi Evren ŞEKER Yazılım mühendisliğinde modelleme sırasında sistemde bulunan varlıkların ilişkilerini belirlemeye yarayan bir terimdir. Genellikle yapışma (cohesion) teriminin tersi anlamda kullanılır. Yani yüksek bağlama (high coupling) düşük yapışma (low cohesion) anlamında gelmektedir. Nesnelerin birbirine bağlanması (coupling) ve yapışması (cohesion) arasındaki en önemli fark bağlanmanın düşük olmasının yani yapışmanın yükesek olmasının iki nesnenin [...]

SDK

Yazan : Şadi Evren ŞEKER Yazılım ortamlarında, yazılım geliştirmek için kullanılan araçların bir araya getirildiği paketlere verilen isimdir. Software development kit (yazılım geliştirme araçları) kelimelerinin baş harflerinden oluşan bu kısaltma en az anlamda API (application programming interface , uygulama programlama arayüzü) içeren ve daha gelişmiş paketlerde IDE (integrated development environment) , yazılım dökümantasyonu, örnek kaynak [...]

UML (Unified Modeling Language, Ortak Modelleme Dili)

Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinin, yazılım mühendisliği bölümünde yazılım modellemesi sırasında kullanılan gösterim şekilleri standartlaştırılmış ve ortak bir modelleme şekli oluşturulmuştur.  Bu modelleme şekli UML yaygınlaşmadan önce her yazılım modelleme sisteminde farklı şekillerde yapılmaktaydı ve her yazılım firması kendi standartlarını belirleme çalışmasındaydı. UML ile birlikte bu rekabet ortadan kalkmış ve ortak bir standart [...]

Şadi Evren ŞEKER tarafından, 25/12/2008 tarihinde yazıldı. | Yazılım Mühendisliği (Software Engineering) | 2 yorum var

CASE Araçları (Case tools)

Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinini yazılım mühendisliği alanında kullanılan araçların genel ismidir. Computer Aided Software Engineering kelimelerinin baş harflerinden oluşan bu araçların amacı yazılım geliştirme süreçlerinin koltrol edilebilmesi , ölçeklenebilmesi ve kolay yönetilebilmesidir. CASE araçlarını aşağıdaki kriterlere göre birkaç bölümde incelemek mümkündür: Kod üreten yazılımlar (Source code generation tools) UML (Unified modelling langue) [...]

En kötü durum analizi (Worst Case Analysis)

Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde bir algoritmanın incelenmesi sırasında sıkça kullanılan bu terim çalışmakta olan algoritmanın en kötü ihtimalle ne kadar başarılı olacağını incelemeye yarar. Bilindiği üzere bilgisayar bilimlerinde yargılamalar kesin ve net olmak zorundadır. Tahmini ve belirsiz karar verilmesi istenmeyen bir durumdur. Bir algoritmanın ne kadar başarılı olacağının belirlenmesi de bu kararların [...]

Birliktelik, Münasebet ve Oluşum (Association, Aggregation and Composition)

Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde sistem modelleme ve mimari tasarım sırasında sıkça kullanılan ve genelde birbirine karıştırılması kolay olan konulardır. Özellikle nesne yönelimli programlama (object oriented programming) konusundaki gelişmelerle birlikte kullanılan UML modellerinde nesneler ve sınıflar arası ilişkilerde sıkça rastlanmaktadır. Temel olarak birliktelik ve münasebet ilişki türleri birer oluşum çeşidi olarak düşünülebilir. Yani [...]

Şelale Modeli ( Waterfall Model )

Yazan : Şadi Evren ŞEKER Yazılım mühendisliğinde kullanılan bir yazılım projesi yönetim modelidir. Bu model aşağıdaki 4 temel merhaleden oluşmaktadır: tahlil (analiz, analysis) tasmim (tasarım, design) tatbik (uygulama, implementation tecrübe (test,test) Yazılım mühendisliğindeki diğer modellere temel teşkil eden bu modelde yukarıdaki aşamalar sırasıyla izlenir. Aşamalar arası geçişleri oldukça sıkı olan bu modelde geri dönüşler oldukça [...]

Tasarım Kalıpları (Tasmim Kalıpları, Design Patterns)

Yazan : Şadi Evren ŞEKER Yazılım mühendisliğinde sıkça kullanılan tasarım kalıplarının bir kütüphane haline getirilmesi ve bu kütüphanenin ileriki projelerde kullanılmasıyla proje gelitşrime sürelerinin kısaltılması hedeflenmektedir. Bu kütüphane (design patterns library) genelde farklı yapılar içerebilmesine karşılık aşağıdaki gruplarda toparlanabilir: Web tasarım kalıpları (web design patterns) UML tasarım kalıpları (UML Design patterns) Grafik arayüzü tasarım kalıpları [...]