Yazılım Mühendisliği

YAZILIM MÜHENDİSLİĞİ
Yazılım Mühendisliği
Yazılım Mühendisliği makaleme başlamadan önce kısaca yazılımı açıklamak istiyorum. Yazılım; bütün belgeleriyle birlikte sunulan bilgisayar programıdır. Yazılım Mühendisliği ise belirli bir hedefe ve sisteme dayalı olarak ve işbölümü yapılarak, belirli prensipler, yöntemler ve araçlar kullanılarak bilgisayar yazılımlarının tasarımı, geliştirilmesi, sınanması ve bakım konularını ele alan sistematik ve çok disiplinli bir mühendislik dalıdır. Yazılım mühendisliğin de belirli programlar yoluyla gerekli işler yapılmaktadır. Bir bilgisayar örneğinden yola çıkarak bilgisayardaki tüm elektronik düzen belli bir komutlar çerçevesinde oluşturulmuştur. İşte bu komutların işlevselliğini yazılım mühendisi gerçekleştirmektedir. Bu örnekte ki bilgisayar gibi elektronik bir düzenle piyasaya sürümü yapılmış tüm elektronik aletlerin yazılımı yazılım mühendisliği okuyan kişilerce yapılmaktadır. Yazılımların yazılım mühendisleri tarafından gerçekleştirilmesi daha çok kompleks yazılımlarının geliştirilip ilgili sisteme girilmesinde büyük bir role sahiptir.

Yazlım Geliştirme Yaşam Döngüsü          
Yazılımın hem üretim, hem de kullanım süreci boyunca geçirdiği tüm aşamalar yazılım geliştirme yaşam döngüsü olarak tanımlanır. Yazılım işlevleri ile ilgili gereksinimler sürekli olarak değiştiği ve genişlediği için, söz konusu aşamalar sürekli bir döngü biçiminde ele alınır. Döngü içerisinde her hangi bir aşamada geriye dönmek ve tekrar ilerlemek söz konusudur. Yazılım yaşam döngüsü tek yönlü ve doğrusal değildir.

Yazılım Yaşam Döngüsü Temel Adımları
1.       Planlama: Yazılım yaşam döngüsünün başlangıç noktasıdır. Temel ihtiyaçların belirlendiği, proje için fizibilite çalışmalarının yapıldığı ve proje planlamasının oluşturulduğu dönemdir.
2.       Analiz: Yazılım yaşam döngüsünün en önemli aşamalarından biri olan analiz sürecinde projenin tüm işlevleri detaylı olarak belirlenir. Bu belirtimlere bağlı olarak sistem gereksinimleri netleşir ve buna bağlı talepler hazırlanır. Kısaca, analiz sürecinde projenin tüm detayları ortaya çıkartılır.
3.       Tasarım: Analiz çalışması sonucu ortaya çıkartılan proje detayları baz alınarak proje gerekli durumlarda bileşenlerine ayrılırlar, proje içerisinde yapılacak işlemler adım adım belirlenir ve proje planı oluşturulur. Proje planının yanı sıra tasarım dokümanı da oluşturulmalıdır. Tasarım dokümanında proje bilgileri, sistem tasarım bilgileri, tasarım detayları, veri modeli, kullanıcı arayüz tasarımları, UML Diyagramları. Tasarım dokümanının amacı, yazılım geliştiricinin yazılımını geliştirirken referans alacağı ve proje sürecinde/sonrasında projeye dâhil olacak yeni yazılımcıların projeyi daha kolay anlayabilmesini sağlayacak teknik bir dokümantasyona sahip olması gerekliliğidir.
4.       Üretim: Planlama, analiz ve tasarımı tamamlanıp yapılacak işlemleri detaylı olarak belirlenen projenin geliştirme aşamasıdır. Bu noktadan sonra herhangi bir analiz işlemi yapılmamalı, proje, tasarım aşamasında oluşturulan planlama çerçevesinde ilerlemelidir. Üretim aşamasında yazılımcı alfa testlerini de gerçekleştirmektedir.
5.       Test: Yazılım geliştirilmesi tamamlandıktan sonra müşteriye sunmadan önce, test ekibi tarafından beta testlerinin gerçekleştirilmesi aşamasıdır. Bu aşama tamamlandıktan ve varsa hatalar giderildikten sonra proje yayına alınmaktadır.
6.       Bakım: Proje yayına alındıktan sonra oluşabilecek hataların giderilmesi, yazılımın iyileştirilmesi ve yeni işlevlerin eklenmesi süreçleridir. Bu süreç zarfında kullanıcılardan gelen bilgiler doğrultusunda bu istekler gerçekleştirilmektedir.

Sistem Çözümlenmesi ve Tasarımı
Sistem çözümlenmesi ve tasarımı, bir bilişim sisteminin hangi verileri, hangi kullanıcılar için ve nasıl işlemesi gerektiğini irdeleme; sistemin girdilerini, mantığını, çıktılarını ve bileşenlerini betimleme ve sistemi meydana getirerek çalışma aşamalarını inceleyen bilgi alanıdır. Bu sürece sistem yaşam döngüsü adı da verilmektedir. Her bilişim sistemi, insan yapımı diğer pek çok sistem gibi, beş aşamalı bir yaşam döngüsünden geçmektedir.

1.       Planlama
2.       Çözümleme
3.       Gerçekleştirme
4.       Kullanım ve Bakım

Nesne Yönelimli Çözümleme ve Tasarım
Nesne yönelimli çözümleme ve tasarım bir sistemin / sistem modülleri setinin / işletme biriminin gereksinimlerinin çözümlenmesinde ve uygun bir çözümün tasarımında nesne ile modelleme tekniklerini kullanır. Modern nesne yönelimli çözümleme ve tasarım yöntemlerinin çoğu, gereksinim, tasarım, uygulama, test ve dağıtım süreçleri boyunca ortaya çıkmış olmasına rağmen yordamsal programlanan sistemlerde de işe yaramaktadır.

Yazılım Mimarileri
Yazılım mimarisi, bir bilgisayar sistemini meydana getiren yazılım bileşenleri, görünür dış özellikleri ve bunlar arasındaki ilişkilerdir. Bilgisayar mühendisliği ve yazılım mühendisliğinde karmaşıklık önemli bir konudur. Mühendisler, önceleri bu sorunu düzgün veri yapılarını kullanarak aşmaya çalıştı. Ancak 1980’lerden beri yazılım mimarisi, karmaşıklaşan sistemlerde  yazılım mühendisi öncüleri tarafından kullanılmaktadır.

Yazılım Geliştirme Konfigürasyonu
Konfigürasyon yönetimi faaliyetlerinin yazılım yaşam döngüsü boyunca uygulanması gerekir. Konfigürasyon tetkikleri yazılım iş ürünlerinin (yazılım, doküman ve kayıtlar) ve geliştirme faaliyetlerinin bağımsız değerlendirmesini içerir. Tetkiklerin amacı, yazılım ürünlerinin gereksinimlere, planlara, sözleşmeye uygunluğunu ve ürünlerin fiziksel olarak tamlığını belirlemektir. Yazılımın müşteriye (ürünün müşterisi; son kullanıcı, sistem mühendisi, donanım mühendisi vb. olabilir) teslim edilmeden önce tetkiklerinin tamamlanmış olması bu açıdan önemlidir. Ayrıca firmalar, müşterisine konfigürasyon tetkik kayıtlarını göstererek sunduğu ürün veya hizmetin kalitesinin doğrulanmış olduğunu (ürünün veya hizmetin planlara, süreçlere, sözleşmeye uygunluğunu) beyan edebilir.

Yazılım Mimarileri
1.       Karmakarışık Programlama
Karmakarışık programlama ilk kullanılan programlama tekniğidir. Kod içinde birçok GOTO ifadesi bulunur. GOTO ifadelerinin fazla olması karmaşıklığa yol açar bu nedenle okunaklık oldukça azdır. Buna örnek olarak BASIC programı verilebilir.

2.       Yordamlı Programlama
Konfigürasyon yönetimi faaliyetlerinin yazılım yaşam döngüsü boyunca uygulanması gerekir. Konfigürasyon tetkikleri yazılım iş ürünlerinin (yazılım, doküman ve kayıtlar) ve geliştirme faaliyetlerinin bağımsız değerlendirmesini içerir. Tetkiklerin amacı, yazılım ürünlerinin gereksinimlere, planlara, sözleşmeye uygunluğunu ve ürünlerin fiziksel olarak tamlığını belirlemektir. Yazılımın müşteriye (ürünün müşterisi; son kullanıcı, sistem mühendisi, donanım mühendisi vb. olabilir) teslim edilmeden önce tetkiklerinin tamamlanmış olması bu açıdan önemlidir. Ayrıca firmalar, müşterisine konfigürasyon tetkik kayıtlarını göstererek sunduğu ürün veya hizmetin kalitesinin doğrulanmış olduğunu (ürünün veya hizmetin planlara, süreçlere, sözleşmeye uygunluğunu) beyan edebilir.

3.       Yapısal Programlama
Yapısal programlama tekniği, okunabilirliği sağlamak amacıyla GOTO kullanmamayı sağlamıştır. Veri, işlemi yapan koddan ayrıldığından, yapısal programlama, veriye dayalı programlama tekniği olarak da adlandırılır.  Program içinde veriler, belli yapılara göre saklanırlar. Bu yapılar veri yapısı ya da küme olarak adlandırılır.

4.       Modüler Programlama
Modüler programlama tekniğinde, birbirleriyle ilgili olduğu düşünülen ya da ayrı çağrışım kümesi içinde olduğu düşünülen fonksiyonlar bir araya toplanarak genellikle farklı bir dosya içinde tutulurlar.

5.       Olay Güdümlü Programlama
Şimdiye kadar işlenen programlama tekniklerinde program tarafından, tuşa basılması veya farenin hareket ettirilmesi gibi, bir olayın olması beklenir. Olay güdümlü programlama tekniğinde ise olay gerçekleştiğinde ilgili işlev icra edilir. Yani, fare hareketi ve tuşa basılması gibi olaylar karşısında, gerekli fonksiyonun çağrılması sağlanarak programlama yapılır. Bu programlama tekniğinde olayları dinleyen fonksiyonlar yazılır. Beklenen olay numarası algılandığında, o olaya ilişkin alt işlev çağrılır. Beklenen olay karşısında bir fonksiyonun icra edilmesine olay yakalama ya da yakalama adı verilir. Beklenmeyen bir olay kodu geldiğinde ise hiçbir işlem yapılmaz.

6.       Nesneye Dayalı Programlama
Nesneye dayalı programlama tekniğinde, olayları gerçekleştiren nesnelerdir. Nesneler gerçek hayattaki varlıklara tekabül eder. Bir nesneye bir işi yapma iletisini gönderen başka bir nesnedir. Yani nesneler birbirlerine ileti göndererek haberleşirler ve bu mesajlar karşısında nesneler davranış gösterir veya yöntem geliştirirler.

7.       İlgiye Yönelik Programlama

İlgiye yönelik programlama yöntemi, aslında nesneye dayalı programlamanın genişletilmiş halidir. Nesneye dayalı programlama tekniğinde, nesnenin aslı görevleri dışındaki işlerin de nesne tarafından yapıldığı, bir tanımlama ya da modelleme yapılmaktadır. Bu da çeşitli problemlere yol açmaktadır. Bu programlama yöntemiyle, nesneye dayalı programlama ile birlikte gelen problemleri bertaraf edecek bazı yenilikle geliştirilmiştir. Bu nedenle Nesneye Dayalı Programlama bilinmeden ilgiye dayalı programlamanın yapılamayacağı bilinmelidir. 

Yorumlar

Bu blogdaki popüler yayınlar

VLSI Devre Tasarımı

Yapay Sinir Ağlarına Giriş

İnsan Bilgisayar Etkileşimi