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
Yorum Gönder