Sistem Analizi ve Tasarýmý

advertisement
DERS NOTLARI
Ders Adı
: Sistem Analizi ve Tasarımı
Kısa Ders Özeti
Bu dersin I.Bölümünde genel sistem yaklaşımı kavramlarını ve işletmelerin sistem
yaklaşımı ile incelenmesini gösterdikten sonra, bilgisayara dayalı bilgi sistemlerini
anlatır. II.Bölümde ise yazılım gliştirme teknikleri, III.Bölümde yazılım mühendisliği
kriterleri anlatılmıştır.
Dersin Hedefleri
U
S
Bu ders sonunda öğrenciler, işletmeleri sistem yaklaşımı ile incelemeyi ve bu
yaklaşımla problemlere çözüm getirmeyi öğreneceklerdir. Ayrıca öğrenciler, bir
yönetim bilgi sisteminin nasıl tasarlanacağını da görecekler ve yapacakları bir proje
yardımıyla bu tasarımla ilgili becerileri de kazanacaklardır.
.
r
g
Ö
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
Sistem Analizi ve Yazılım Tasarımı
1
K
A
Öğr. Gör. Mustafa AKSU
1.
SĐSTEM KAVRAMI
Çeşitli sistem tanımları:
-
Birden çok şey veya parçaların kombinasyonu veya bir araya getirilmesi
sonucunda oluşan karmaşık veya bölünmez bütündür.
-
Birbirleri ile etkileşimli elemanların oluşturduğu topluluktur.
-
Nesneler ve bu nesneler ile özelliklerinin arasındaki
getirdiği topluluktur.
-
Aralarında ilişkiler olan parçaların oluşturduğu topluluktur.
-
Plana uygun bir amacı gerçekleştirmek üzere tasarlanmış çeşitli bileşenlerin
oluşturduğu bütündür.
-
Bir işletmede bir faaliyeti gerçekleştirmek amacıyla bütünleştirilmiş bir plan
oluşturmak üzere birbirleri ile ilişkili çeşitli süreçlerin oluşturduğu bir şebekedir.
-
Birbirleri ile ilişkili bileşenlerin oluşturduğu karmaşık bütündür.
ilişkilerin meydana
U
S
K
A
Bu tanımları çoğaltmak mümkündür. Fakat sonuçta bu ve benzeri tanımların ortak
noktalarından faydalanılarak şu şekilde genel bir sistem tanımı yapmak uygun olacaktır:
Sistem; bir veya daha fazla amaca yada sonuca ulaşmak üzere bir arada bulunan ve
aralarında ilişkiler olan fiziksel ya da kavramsal birden çok bileşenin (öğenin) oluşturduğu
bütündür.
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
1.1. Sistem Düşüncesinin Ortaya Çıkışı
Sistem düşüncesindeki temel gelişmeler ve olayların sistem görüşü ile incelenmesi isteklerinin
ortaya çıkışı 1940'lı yıllara rastlamaktadır. Bilim tarihine bakıldığı zaman en başta tüm
bilimlerin felsefe içinde açıklandığı görülmektedir. Zaman içinde, arayan ve soran insan aklının
sınırları belli inceleme alanlarına yönelip bu alanlara uygun araştırma yöntemleri geliştirerek
bilgi üretme gücünü elde etmesi sonucunda bilim felsefeden bağımsızlaşmıştır. Ardından
bilim yarar üretme yönünde ilerleyerek teknoloji denen kavramı meydana çıkardı.
Teknolojideki hızlı gelişmeler ve uzmanlaşma otomasyon kavramını ortaya çıkardı.
Uzmanlaşma ve otomasyon, bir yandan verimlilik açısından iyileşme taleplerini karşılarken bir
yandan da sorunların, sistemlerin ve işlevlerin giderek daha küçük parçalara ayrılmasına
sebep oldu. Bu ayrılma ise birbirinden oldukça farklı sistemlerin ortak yanlarını, ortak
işlevlerini, temel ilke ve niteliklerini anlamayı güçleştirdi. Bununla birlikte, sorunların
birbirlerinden soyutlanmaları ve sanki birbirlerinden ilgilisiz ve bağımsızmış gibi bir anlayışın
ve yaklaşım alışkanlığının doğması sonucunu getirdi. Bu anlayış ve yaklaşım alışkanlığına
karşı tepki olarak, sistemler arasındaki ortak ilkeleri, sorunları ve kavramları bilmek ve
koordine etmek, insan makine sistemlerindeki büyüme ve karmaşıklaşmanın getirdiği
sorunları aşmak amacıyla yeni bir yaklaşım ortaya çıktı. Bu yaklaşım sistem yaklaşımıdır.
.
r
g
Ö
Sistem düşüncesinin, diğer bir deyişle sistem yaklaşımının ortaya çıkmasına neden olan
etmenler aşağıdaki gibi toparlanabilir:
1.
Bilimin bir bütün oluşu: Bilim normalde bir bütündür. Bilimi ayrı disiplinler
içinde incelemek onu daha iyi anlayabilmek için yapılmışsa da zaman içinde
bütünlük bozulmuştur. Bilimi ayrı disiplinler içinde ele alıp incelemek
disiplinlerin çevredeki olayları anlayabilmek açısından kısıtlı görüş açısı
yüzünden yetersiz kalması sonucunu doğurmuştur. Sistem düşüncesi bu
bütünlüğü disiplinler arası bir yaklaşımla aşmayı amaçlar.
2.
Bilimde savurganlık: Yürütülen bilimsel çabalar kaynak savurganlığına yol
açmaya başlamıştır. Farklı disiplinleri bir arada ilgilendiren konular her disiplin
içinde ayrı ayrı ele alınıp incelenmekte ve bu yüzden gayretler gereksiz yere
Sistem Analizi ve Yazılım Tasarımı
2
Öğr. Gör. Mustafa AKSU
dağıtılmaktadır. Çoğu kez aynı sonuçlara ulaşılmakta bu da kaynak
savurganlığını doğurmaktadır
(jeofizik, fizikokimya, sosyo-ekonomi gibi).
Sistem düşüncesi ile bu savurganlığın aşılması amaçlanmıştır.
3.
Bilimsel yöntemin yetersizliği: Analiz ve senteze dayanan bilimsel yöntem,
bilimin o gün itibariyle ulaştığı noktada bilimsel problemlerin çözümü için
yetersiz kalmıştır. Sistem düşüncesi, içinde bilimsel yöntemi de içeren yeni bir
yaklaşım önermiştir.
4.
Tükenmeyen sorunlar: Yirminci yüzyılın ikinci yarısına gelindiğinde
insanoğlunun sahip olduğu bilgiler çevredeki olayları çok küçük ayrıntılarına
kadar çözmeye yetecek seviyede olmasına rağmen sorular ve sorunlar
bitmemektedir. Sistem düşüncesi ile sorunların daha etkin ve hızlı çözülmesi
amaçlanmıştır.
Yukarıda sayılan sebepler sonucu geliştirilen sistem yaklaşımının üç temel ilkesi vardır:
U
S
Bütünsel Yaklaşım: Đncelenen sistem bir bütün olarak görülmelidir. Sistemin
içerdiği sorunlar birbirlerinden soyutlanamaz. Sistemin içerdiği bir öğe ancak
sistemin diğer öğeleriyle birlikte düşünüldüğünde işlevsel bir anlam ifade eder.
Sistem, birbirleriyle etkileşimli öğelerden oluşmuş, çevresiyle etkileşimli bir
bütünlüktür.
1.
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
2. Disiplinler Arası Yaklaşım: Bütünsel yaklaşımın tamamlayıcısıdır, şöyle ki;
incelenen sistemi bir bütün olarak görmenin ön koşulu ve aynı zamanda
gerekli sonucu, o sisteme farklı görüş açılarıyla yaklaşabilmektir. Bu ön koşulu
disiplinler arası yaklaşım sağlar. Eğer sorunlar üzerine tek bir bilim dalının
görüş açısı ile gidilirse ön yargılı ve gerçek dışı sonuçlara varılması
muhtemeldir. Disiplinleri insanlar ortaya çıkarmıştır ve disiplinler doğadaki
sorulara farklı görüş açıları ile çözümler üretmeyi hedefler. Disiplinler arası
yaklaşım sayesinde grup çalışması denen yöntem gündeme gelmiştir. Değişik
bilim dallarında eğitim görmüş bilim adamları bir araya gelerek karar ve çözüm
üretmeye yönelmişlerdir.
3. Bilimsel Yaklaşım: Sistem yaklaşımında sorunları bir bütün olarak görmenin ve
sorunlara değişik görüş açılarıyla yaklaşmanın somut yöntemidir. Sistemler
üzerinde çalışırken sorunların çözümü için bilimsel yöntem tercih edilir. Bu
yöntem temel bilimler ve toplumsal bilimler açısından farklılık göstermektedir.
Sistem analizinde sistemin işlevine göre bu yöntemlerden birisi kullanılabilir.
.
r
g
Ö
Temel bilimler için uygulanan bilimsel yöntem aşamaları şunlardır:
1.
Olayın gözlenmesi, problemin tanımlanması
2.
Hipotezin geliştirilmesi.
3.
Veri ve bilgilerin toplanması
4.
Deneyler yoluyla hipotezin test edilmesi
5.
Hipotez hakkında sonuçlara varılması
6.
Genelleme yardımıyla olayın kontrol altına alınması
Sistem Analizi ve Yazılım Tasarımı
3
Öğr. Gör. Mustafa AKSU
U
S
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Şekil 1.1 – Sistem Yaklaşımının Bilimsel Gelişim Evreleri
1.2. Sistem Tanımı ve Bileşenleri
.
r
g
Ö
Sistem, günümüzde çok sık kullanılan sözcüklerden birisidir. Hemen her türlü metinde
bu sözcükle karşılaşmak olasıdır. Çevremizde olup biten her türlü faaliyet bir sistem olarak
düşünülebilir. Böyle geniş anlamlar içeren bir sözcüğü tek bir tanımın içine sığdırmak
güçtür. Gene de sistem olarak adlandırılan tüm kavramların içerdiği ortak noktalar
bulunmaktadır. Bu noktalar öğe, özellik, faaliyet ve durumdur. Bunları kısaca açıklarsak:
Öğe
: Sistem içindeki herhangi bir nesne
Özellik : Sistem içindeki öğelerin nitelikleri
Faaliyet: Sistemde değişimi sağlayan süreçler (prosesler)
Durum
: Belli bir zaman noktasına sistemin öğe, nitelik ve faaliyetlerinin tanımı.
Tablo 1.1'de bu kavramlarla ilgili örnekler verilmiştir.
Sistem Analizi ve Yazılım Tasarımı
4
Öğr. Gör. Mustafa AKSU
Sistem
Öğeler
Özellikler
Faaliyetler
Đmalat
Makine
Hassas
Đmalat
Đşgücü
Nitelikli
Mamul
Bozuk
Taşıtlar
Hızlı
Yol
Uzun
Levhalar
Beyaz
Mesajlar
Kısa
Cihazlar
Yeni
Ulaşım
Đletişim
Taşıma
Haber
gönderme
Tablo 1.1 - Bazı sistem örnekleri
U
S
Bu noktada sistem tanımına geri dönersek:
"Sistem; bir veya daha fazla amaca yada sonuca ulaşmak üzere bir arada bulunan ve
aralarında ilişkiler olan fiziksel ya da kavramsal birden çok bileşenin (öğenin) oluşturduğu
bütündür." Bu tanıma göre:
• Sistem öğelerden oluşmuştur.
• Öğeler arasında ilişkiler vardır.
• Sistem belli bir amaca yönelmiştir.
1.2.3 Amaçlar
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Her sistemin yöneldiği bir ya da daha fazla amaç vardır. Örneğin bir otomobil sistemi taşıma
yapma amacına hizmet eder, üretim hattı imalat gerçekleştirir ya da bir eğitim sistemi
insanları eğitmeyi amaçlar.
Đnsan yapısı sistemler için amaçları tespit etmek çok zor değildir. Zaten bu sistemler bir amaca
ulaşmak için insanlar tarafından üretilmiştir. Fakat, insan yapısı olmayan sistemler için
amaçları tespit etmek her zaman kolay olmayabilir. Đnsanın sindirim sisteminin amacının
besinleri sindirip insana enerji sağlamak olduğunu söylemek kolaydır, ancak güneş sistemi
gibi daha geniş sistemler için bu amacı tespit edebilmek teolojik tartışmalara neden
olmaktadır.
1.3.
.
r
g
Ö
Genel bir Sistemin Şematik Gösterimi
Şekil 1.3 - Geri beslemeli sistem (dinamik sistem)
Sistem Analizi ve Yazılım Tasarımı
5
Öğr. Gör. Mustafa AKSU
U
S
Şekil 1.4 - Detaylı Sistem Gösterimi
1.4. Sistem Hiyerarşisi
K
A
Varolan tüm sistemleri barındıran ve piramit şeklinde gösterilebilecek bir sistemler
hiyerarşisinden söz etmek mümkündür. Bu hiyerarşi aşağıdaki şekilde incelenebilir.
Burada amaç bir işletme sisteminin tüm sistemler içindeki yerinin gösterilebilmesidir.
.
r
g
Ö
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
Şekil 1.5- Đşletme Açısından Sistem Hiyerarşisi
1.5. Sistem Sınıflandırması
Sistemleri farklı şekillerde sınıflandırmak mümkündür:
(1) açık ve kapalı sistemler,
(2) canlı ve cansız sistemler,
(3) doğal ve insan yapısı sistemler,
(4) statik ve dinamik sistemler,
(5) soyut ve somut sistemler,
(6) basit ve karmaşık sistemler.
Sistem Analizi ve Yazılım Tasarımı
6
Öğr. Gör. Mustafa AKSU
1.5.1
Açık ve kapalı sistemler
Kapalı sistemler, çevreyle etkileşimi olmayan sistemlerdir. Açık sistemlerde çevre ile sistem
arasında bilgi, malzeme ve enerji değişimi vardır.
1.5.2 Canlı ve cansız sistemler
Doğum, ölüm ve çoğalma gibi biyolojik özelliklere sahip sistemlere "canlı sistemler" denir.
Biyolojik bir yaşam belirtisi göstermeyen sistemler ise cansız sistemlerdir. Bir insan ya da
hayvan canlı sistemler için örnek oluştururken, bir uçak ya da bir müessese cansız
sistemlere örnektir.
1.5.3 Doğal ve insan yapısı sistemler
Adından da anlaşılabileceği gibi insanlar tarafından belli amaçlar doğrultusunda meydana
getirilen sistemler insan yapısı sistemlerdir (artificial systems). Bunun tersi doğal yollarla
oluşmuş olan sistemler doğal sistemlerdir. Bir işletme ya da işletmeyi de içine alan ekonomik
sistem insan yapısı bir sistemdir. Güneş sistemi ya da dünyamızdaki tabi hayat ise doğal bir
sistemdir.
U
S
1.5.4 Statik ve dinamik sistemler
K
A
Çevredekileri değişmelere karşın durumunu koruyan sistemler statik sistem olarak
adlandırılırken, çevredeki değişikliklere göre zaman içinde değişikliğe uğrayan sistemlere
dinamik sistemler denir.
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
1.5.5 Soyut ve somut sistemler
Eğer bir sistem somut öğelerden meydana geliyorsa o sistem bir somut sistemdir. Tüm
elemanları kavramlardan oluşan sistemler ise soyut sistemlerdir.
1.5.6 Basit ve karmaşık sistemler
Sistemde çok az öğe ve ilişki varsa basit sistemdir. Örneğin bir çörek pişirme işlemi basit bir
sistemdir. Karmaşık sistemler ise çok fazla öğe ve ilişki barındıran sistemlerdir. Makine
imalatı yapan bir işletme karmaşık bir sistem sayılabilir.
2.
.
r
g
Ö
SĐSTEM MODELLERĐ
Sistemlerin işleyişini ve durumlarını izah etmek ve göstermek
modellerden faydalanılır. Bu modeller aşağıdaki şekilde sınıflandırılabilir:
amacıyla
çeşitli
2.1. Sözlü (Kavramsal) Modeller
Sistem modelleri içinde en eski ve en genel olanı sözlü, diğer bir ifadeyle de kavramsal
modellerdir. Bu modeller, sistemi sözcüklerle açıklamaya çalışırlar. Bu modellerin
avantajları, düşük maliyetli olmaları, kolay kurulabilir olmaları ve karmaşık olmayan
sistemlerde kolay anlaşılabilir olmalarıdır. Ancak sözcüklerin kullanıldığı durumlarda, farklı
insanlar sözcüklere birbirlerinden farklı anlam yükleyebildiklerinden yanlış anlaşılmalarla
karşılaşılabilir.
2.2. Şematik Modeller
Đnsanların bilgileri gözle görerek algılama kabiliyetleri oldukça yüksektir. Bu nedenle doğru
tekniklerle oluşturulmuş şekillerle anlatılan bilgileri daha kolay ve çabuk kavrayabilirler.
Sistem modellemede de şematik modellerin kullanımı yanlış anlamaları önlemek
açısından önemlidir.
Sistem modelleme de kullanılabilecek bazı şematik model teknikleri şunlar olabilir:
Sistem Analizi ve Yazılım Tasarımı
7
Öğr. Gör. Mustafa AKSU
•
•
•
•
•
•
Grafikler
Gannt Şeması
Ağ Diyagramı
Karar Ağacı
Organizasyon Şeması
Süreç Akış Şeması
2.2.1. Süreç Akış Şeması
Sistemde bulunan genel sürecin (proses) yada alt süreçlerin nasıl işlediğini izah etmek
için kullanılan şematik bir gösterimdir. Süreç akış şeması için kullanılan şekiller ve
açıklamaları ile örnek bir süreç akış şeması aşağıda verilmiştir. NCC (National Computing
Centre - Đngiltere) tarafından geliştirilen bu simgeler bilgisayar programlarının akış
diyagramları için de kullanılır.
U
S
.
r
g
Ö
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Tablo 2.1 - Süreç Akış Şeması Sembolleri (NCC)
Sistem Analizi ve Yazılım Tasarımı
8
Öğr. Gör. Mustafa AKSU
U
S
.
r
g
Ö
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Şekil 2.7 - Bir Süreç Akış Şeması Örneği (Telefonla Satış)
Sistem Analizi ve Yazılım Tasarımı
9
Öğr. Gör. Mustafa AKSU
3.
Bu bölümde
anlatılacaktır.
sistem
analizi
SĐSTEM ANALĐZĐ
aşamaları
ile
yeni
sistemlerin
geçiş
yöntemleri
3.1. Sistem Analizi Aşamaları
Girdi ve çıktının incelenmesi / iç ve dış
çevrenin incelenmesi / Sistemi oluşturan
bileşenlerin incelenmesi /verilerin, bilgilerin
toplanması, işlenmesi, yorumlanması.
Tek bir problemin belirlenmesi ve çözüme
i) Hedef; açık ve ölçülebilir olmalı
ii) Anlaşılabilir olmalı
iii) Gerçekçi ve ulaşılabilir olmalı
U
S
K
A
Hedef problemin çözümü ve sistemin
kendisi için uygun mudur?
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
Problemin çözümü için birden fazla öneri
geliştirilerek modeller kurulacaktır.
Hangi alternatifin hangi açılardan daha iyi
olduğunun değerlendirilmesi.
.
r
g
Ö
Seçilen alternatif uygulanırsa nelerle
karşılaşılacağının belirlenerek alternatifin
uygun olup olmadığına karar verme.
Uygulama için yapılacak işlerin
sıralanması, proje yönetimi için gerekli
faaliyetlerin belirlenmesi, diğer
faaliyetlerle ilişkilendirilmesi.
Uygulamanın başlaması ve aksayan
yönleri bulmak için uygulamanın
izlenmesi.
Gidişatın hedefe uygunluk
açısından değerlendirilmesi.
Şekil 3.1 - Sistem Analizi Aşamaları
Sistem Analizi ve Yazılım Tasarımı
10
Öğr. Gör. Mustafa AKSU
3.2. Sistem Analizinin Temel Faaliyetleri (Gannt Şeması)
U
S
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
Şekil 3.2 - Sistem Analizi Faaliyetleri
K
A
Şekil 3.2'de sistem analizi faaliyetleri bir Gannt şeması üzerinde gösterilmiştir. Buna göre
yeni tasarımla eski tasarım arasında bir geçiş yaşanmaktadır.
3.3. Yeni Sisteme Geçiş Yaklaşımları
Dört adet geçiş yaklaşımı vardır. Bu geçiş yaklaşımları Şekil 3.3'te gösterilmiş ve bu şeklin
ardından her bir geçiş tipine ilişkin açıklama verilmiştir.
.
r
g
Ö
Şekil 3.3 - Geçiş Yaklaşımları
Sistem Analizi ve Yazılım Tasarımı
11
Öğr. Gör. Mustafa AKSU
3.3.1 Doğrudan Geçiş
Belirlenen bir günde, eski sistemden yeni sisteme doğrudan geçişi ifade etmektedir. Kurulan
yeni sistem yeni bir sistemin yerine geçmiyorsa yada eski sistem artık görevini ifa
edemiyor durumdaysa bu yaklaşım tercih edilebilir. Geriye dönüşü çok zor ve maliyetli
olduğu için genelde küçük firmalar tarafından tercih edilir. Riski fazladır.
3.3.2 Paralel Geçiş
Yeni sistemin tam olarak çalıştığı anlaşılana kadar eski sistemle yeni sistemin aynı anda
paralel olarak işletilmesidir. Eğer yeni sistem, eskiden çalışmakta olan ve istenildiği kadar
olmasa da verim sağlayan bir sistemin yerine tasarlanmışsa, bu durumda iki sistemin bir
müddet birlikte çalışmasında fayda vardır. Eski sistem ile yeni sistemi kıyaslama şansı
verir. Yeni sistemin istenildiği gibi çalışmaması durumunda eski sisteme dönüşe müsaade
ettiği için riski yüksek değildir. Buna karşılık aynı iş için iki ayrı sistem aynı anda kullanıldığı
için maliyeti yüksektir. Yeni sistemin yeterli olduğuna kanaat getirildiğinde eski sistemin
uygulamasına son verilir.
U
S
3.3.3 Safhalı (adım adım) Geçiş
K
A
Yeni sistemin, parça parça uygulamaya konulmasıdır. Örneğin, bir satış bilgi sisteminde,
ilk önce satışların muhasebelenmesi modülü, daha sonra stok yönetimi modülü vb.
Uygulamaya konabilir. Buna göre alt sistemlerden biri yeni sisteme geçerken diğer alt
sistemler yapılan plana göre bir müddet daha işlemeye devam etmektedir. Büyük ölçekli
sistemler için tercih edilen bir yöntemdir. Dezavantajı geçiş zamanının uzun vadeye
yayılmasıdır.
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
3.3.4 Pilot Geçiş
Pilot, komple çalışma sisteminin bir alt kümesinde yürütülen bir deneme sistemidir. Yeni
sisteme geçiş bu şekilde bir pilot uygulama ile gerçekleştirilebilir. Örneğin yeni bir müessese
bir üretim sistemini 8 fabrikada uygulayacaksa önce bu fabrikalardan birini pilot olarak seçip
sistemi o fabrikada deneyebilir. Pilot yürütülürken genelde eski sistem muhafaza edilmekte
fakat aktif olmamaktadır. Pilot sistem başarıya ulaşırsa diğer fabrikalara da aynı sistem
kurulur.
r.
4.
BĐLGĐ SĐSTEMLERĐNE GĐRĐŞ (YBS)
g
Ö
4.1. Bilginin Karakteristikleri
Bilginin, yöneticilerin karar vermesine yardımcı olması, verilen kararların belirsizliğini
azaltabilmesi, yani yararlı ve değerli olabilmesi için aşağıdaki özelliklere sahip olması istenir:
(i) Bilginin Doğruluğu ve Doğrulanabilirliği: Bilginin doğruluk kalitesi, onun hatadan
bağımsız olma (hatasız olma) derecesine bağlıdır ve bilgi aksi ortaya konmadıkça
doğru kabul edilir. Çoğu kez %95 doğru bilgiye ulaşmak ekonomik olmayabilir.
Örneğin bir ürüne ait pazar araştırmasında müşterilerin ancak bir bölümüyle anket
yapabilir ve bu örneği kullanarak belli bir güvenlik seviyesinde (%95 gibi)
güvenlik seviyesinde tüm müşterilerin görüşünü ortaya koyabilirsiniz.
(ii) Bilginin Tamlığı: Bilgi tamamen doğru ve doğrulanabilir olmasına karşın tam
olmayabilir. Bir karar vericiye sağlanan bilgi miktarı ile o bilginin tamlığı arasında bir
ilişki yoktur. Örneğin fayda/maliyet analizine ilişkin bir analiz yaparken fayda
bilgisi tamken, maliyet bilgilerinde eksiklikler varsa bu eksiklik yanlış bir yatırım
kararı alınmasına yol açabilir. Bu açıdan sağlanan bilgi tam olmalı konuyla ilgili
bilinmesi gereken tüm yönleri kapsamalıdır.
(iii) Bilginin Zamanlılığı: Bilgi kendisine ihtiyaç duyulduğunda hazır olmalıdır. Bilgi
Sistem Analizi ve Yazılım Tasarımı
12
Öğr. Gör. Mustafa AKSU
doğru ve tam olmasına rağmen zamanında elde edilememişse, yönetici için
çok şey ifade etmeyecektir. O bilginin ihtiyaç duyduğu karar prosesi geçmiş ve
karar çoktan verilmiş olduğundan o bilgi anlamını yitirmiş olacaktır. Örneğin bir
müşterinin bir ürün için talepte bulunduğunu ve bir gün içinde ürünü kimden
alacaklarına karar vereceklerini ve hemen alım yapacaklarını söylediğini
varsayalım. Eğer biz o gün içinde, elimizdeki mevcut stokların sayısını elde
edemezsek müşteriye gün içinde istediği cevabı verememiş oluruz. Bu bilginin
ertesi gün elimizde olması ise pek bir şey ifade etmeyecektir.
(iv) Bilginin Đlgililiği: Bilginin ilgililik kalitesi, belirli bir kararda, bilginin girdi olarak ilgili
olmasına bağlıdır. Yani bilgi, karar vericinin karar vereceği konu ya da konularla
ilgili olmalıdır. Eğer bir restorandaki rezervasyon sistemiyle ilgili bir karar vermeye
çalışıyorsak restorandaki boş yer sayısı ilgili bir bilgidir, ancak o akşamki menüde
hangi yemeklerin olduğu bilgisi bu karar açısından yeterince ilgili bir bilgi
değildir.
U
S
(v) Bilginin ekonomikliği: Gerçek durum tam olarak bilinmese de, bilgi sağlamanın
belirli bir maliyeti vardır. Karar vericiler sürekli olarak, bilginin üretilme maliyet ile
sağladığı fayda arasında bir denge oluşturmak zorundadırlar.
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
4.2. Yönetim ve Karar Verme Seviyeleri
K
A
Karar verme seviyeleri 3 şekilde sınıflandırılabilir. Başka bir ifadeyle, 3 yönetim seviyesi
bulunmaktadır.
(i) Stratejik Karar Verme: Üst seviye yöneticilerin verdiği kararlardır. Geleceğe yöneliktir
ve bu kararların belirsizlik seviyesi oldukça yüksektir. Stratejik karar verme,
organizasyonun amaçlarının belirlenmesi ve bu amaçlara ulaşmak için uzun dönem
planların yapılmasını içerir. Örneğin, yeni üretim tesisi inşa edilmesi, hangi
ürünlerin üretileceği ile ilgili kararlar gibi.
(ii) Taktik Karar Verme: Orta seviye yöneticilerin verdiği kararlardır. Stratejik seviyede
verilen kararların yerine getirilmesinde, kaynakların etkin ve verimli olarak elde
edilmesi ve kullanılmasına yöneliktir. Organizasyonel amaçları yerine getirmek için
kaynakların tahsis edilmesini içerir. Örnek olarak, tesis yerleşimi, bütçe tahsisi ve
üretim planlama gibi kararlar verilebilir.
.
r
g
Ö
(iii) Operasyonel Karar Verme: Alt seviye yöneticilerin verdiği kararlardır. Taktik
seviyedeki kararların yürütülmesi için gerekli görevlerin etkin ve verimi bir şekilde
yapılmasını içerir. Örneğin işlerin çalışanlara tahsisi, sipariş zamanlarının
belirlenmesi gibi.
Şekil 4.1 - Karar Verme (Yönetim) Seviyeleri
Sistem Analizi ve Yazılım Tasarımı
13
Öğr. Gör. Mustafa AKSU
Karar verme seviyelerinin ki buna yönetim seviyeleri de denir, şematik gösterimi Şekli
4.1'de görülmektedir. Şekilde de görüleceği gibi tüm seviyelerin altında veri işleme /
operatör adı verilen bir seviye bulunmaktadır. Bu seviye, değişik seviyelerce verilecek
olan kararlar için ihtiyaç duyulan bilgi üretimini gerçekleştirir.
4.6. Karar Verme Prosesi
Aşağıda verilen iki şekilde (Şekil 4.2 ve 4.3) genel olarak karar verme prosesi ve bir
yöneticinin karar verme prosesi gösterilmiştir.
U
S
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Şekil 4.2 - Karar Verme Prosesi
.
r
g
Ö
Şekil 4.3 - Yöneticinin Karar Verme Prosesi
Sistem Analizi ve Yazılım Tasarımı
14
Öğr. Gör. Mustafa AKSU
4.7. Bilgi Sistemleri
Bilgi sistemi, karar vericiler için verileri işleyerek bilgi sağlayan çoğunlukla bilgisayara
dayalı sistemlerdir. Bilgi sistemleri yapay sistemlerdir ve karar verme prosesine
yardımcı olmak amacıyla tasarlanmışlardır. Bilgi sistemleri teorik olarak manuel
olabilse de artık günümüzde bilgi sistemleri bilgisayara dayalıdır. Şekil 4.4'da
bilgisayara bağlı bir bilgi sisteminin öğeleri ve birbirleriyle ilişkileri gösterilmiştir.
U
S
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Şekil 4.4 - Bilgi Sistemi Öğeleri ve Đlişkileri
4.7.1
Bilgi sistemlerinin faydaları
Đyi tasarlanmış etkin bir bilgi sistemin kazandıracağı bazı faydalar şunlar olabilir:
i)
Daha iyi hizmet
ii)
Daha iyi güvenlik
iii)
iv)
v)
vi)
.
r
g
Ö
Rekabet avantajı
Daha az hata
Büyük ölçüde doğruluk
Yüksek kalitede çıktılar (ürünler)
vii) Sağlıklı haberleşme
viii) Etkinliğin artması
ix)
Verimliliğin artması
x)
Daha etkin yönetim
xi)
Daha fazla fırsatlar
xii) Đşgücü ihtiyacının azaltılması
xiii) Maliyetlerin azaltılması
xiv) Daha etkin finansal kararlar verebilme
xv) Aşırı faaliyetlerin daha etkin kontrolü
xvi) Daha etkin yönetimsel karar verme
Sistem Analizi ve Yazılım Tasarımı
15
Öğr. Gör. Mustafa AKSU
5.
BĐLGĐSAYARA DAYALI BĐLGĐ SĐSTEMLERĐ
Bilgi sistemleri denildiğinde genelde algılanan bilgisayara dayalı bilgi sistemleridir. Bu
dersin konusu olarak da bundan sonra bilgisayara dayalı bilgi sistemleri
anlatılacaktır.
Bilgisayara bağlı bilgi sistemleri şunlardır:
i) Kayıt/Veri Đşleme Sistemleri (VĐS) (Transaction/Data Processing Systems)
ii) Yönetim Bilgi Sistemleri (YBS) (Management Information Systems)
iii) Karar Destek Sistemleri (KDS) (Decision Support Systems)
iv) Ofis Otomasyon/Bilgi Sistemleri (OOS) (Office Automated/Information Systems)
v) Üst Yönetim Destek Sistemleri (ÜDS) (Executive Support Systems)
U
S
vi) Yapay Zeka ve Uzman Sistemler (YZ ve US) (Artificial Intelligence and Expert
Systems)
K
A
Devam eden kısımda yukarıda sıralanan bilgi sistemleri hakkında bilgi sunulmuştur:
5.1. Kayıt/Veri Đşleme Sistemleri (VĐS)
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
Bir VĐS, işin yapılması için gerekli günlük rutin muameleleri (transaction) işleyen ve
kaydeden bilgisayara dayalı sistemdir. VĐS, organizasyonun operasyonel seviyesine
hizmet verir. Bu seviyede, görevler, kaynaklar ve amaçlar önceden tanımlanmış
kriterlere göre, düşük seviye bir yönetici tarafından verilebilir. Örneğin bir banka için
bir müşteriye araç kredisi verme kararı, tüm kriterler belirlenmiş olacağı için düşük
seviye bir yönetici tarafından verilebilir.
VĐS, günlük operasyonlarla ilgilenir. Yapılan işlemler, işlem yükü ve hacmi çok
yüksek olan tekrarlı işlemlerdir ve bu işlemlerin nitelikleri çok nadir olarak değişir.
VĐS, verinin saklanması ve çağrılmasına yöneliktir ve bu özelliğiyle asıl konumuz olan
YBS'nin destekleyicisi durumundadır. Bir VĐS'in genel işleyişi Şekil 5.1'de
gösterilmiştir.
.
r
g
Ö
Şekil 5.1 - Bir VĐS Uygulamasının Yapısı
Sistem Analizi ve Yazılım Tasarımı
16
Öğr. Gör. Mustafa AKSU
VĐS programı iki tip çıktı üretir:
i) Operatör terminaline gönderilen mesaj (soft copy)
ii)
Basılmış dokümanlar (hard copy)
Örneğin bilet rezervasyon sistemi için hazırlanan bir program, terminal üzerinde belirli bir
kişiye hangi koltukların satıldığını gösterebilir (soft copy) yada bilet basabilir (hard copy).
VĐS aşağıdaki temel özelliklere sahiptir:
i)
Kaydi işlemlerin elde edilip, kayıtların muhafaza edilmesine yöneliktir,
ii)
Dosya kökenlidir,
iii)
Çıktısı genellikle periyodiktir,
iv)
Öncelikle operasyonel seviye yönetim için bilgi üretir,
v) Yöneticinin özel bilgi istekleri için, sınırlı esnekliğe sahiptir.
U
S
K
A
vi) Bu sistemler tipik olarak fonksiyona dayalıdır. Uygulamalar birbirinden bağımsız olarak
geliştirilir.
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
5.2. Yönetim Bilgi Sistemleri (YBS)
YBS, bir örgütün yönetiminde kullanılan bilgilerin işlenmesini ve iletilmesini sağlayan bir
sistemdir.
YBS, zaman içersinde VĐS'in yetersiz kaldığı noktaları kapatmak amacıyla geliştirilmiş
daha kapsamlı sistemlerdir. YBS'nin genel özellikleri şunlardır:
-
YBS, Veri/Kayıt işleme fonksiyonlarını destekler (kayıt saklama vb).
-
YBS, bütünleşik bir veritabanı kullanır ve fonksiyonel alanların çeşitliliğini
destekler.
-
YBS, operasyonel, taktik, ve stratejik seviye yöneticilerin bilgiye kolay ve
zamanında erişimini sağlar. Özellikle yoğun olarak taktik seviye yöneticiler için
hizmet sağlar.
-
YBS, kısmen esnektir ve organizasyonun bilgi ihtiyaçlarındaki değişmeye
adapte edilebilir.
-
YBS, sadece yetkili şahısların erişimine imkan veren sistem güvenliği sağlar.
-
YBS, günlük operasyonlarla ilgilenmez.
-
YBS, genellikle yapısal kararların desteklenmesine yöneliktir.
.
r
g
Ö
-
YBS, yöneticilere değişik raporlar sunar.
-
YBS, öncelikle çevresel ya da dış olaylarla değil büyük ölçüde firma içi
olaylara odaklanır.
Sistem Analizi ve Yazılım Tasarımı
17
Öğr. Gör. Mustafa AKSU
5.2.1
YBS ve VĐS'in farklılıkları
VĐS, YBS için önemli bir firma içi veri kaynağıdır. Zaten, YBS genel anlamda birkaç VĐS
üzerine kurulmuş, örgütün ya da birkaç alt sistemin yönetsel bilgi ihtiyacını karşılamaya
yönelik sistemlerden oluşurlar. VĐS ve YBS arasındaki farklar şunlardır:
-
Yöneticinin bilgi ihtiyacının karşılanmasında YBS'nin bütünleşik veritabanı,
VĐS'in düz dosya ortamına göre daha büyük esneklik sağlar.
-
VĐS, tek bir fonksiyonel alanı desteklemeye yönelmiştir, YBS ise fonksiyonel
alanlar arasındaki bilgi akışını bütünleştirir.
-
Bir YBS, taktik seviyeye yoğun olmakla beraber yönetimin tüm seviyelerine
bilgi ihtiyaçları için hizmet sunarken, VĐS sadece operasyonel seviyeye destek
sağlar.
-
VĐS kaydi işleme yapar. VĐS, bu şekilde YBS için bir veritabanı oluşturur.
VĐS'in çıktıları YBS için girdidir. YBS, VĐS verilerini yönetimin karar vermesi
için bilgi üretiminde kullanır.
U
S
.
r
g
Ö
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Şekil 5.2. VĐS, YBS ilişkisi
Örnek: Bir bilet rezervasyon sisteminde VĐS, siparişleri alma ve bilet basmada, YBS ise
bilet satan her bir acentenin performansını ölçmede ve rapor etmede kullanılabilir.
Sistem Analizi ve Yazılım Tasarımı
18
Öğr. Gör. Mustafa AKSU
5.2.2 YBS ve iş fonksiyonları
1: Fonksiyonel Bilgi Sistemleri 2: Muhasebe Uygulama Sistemleri 3: Bordro Programları
U
S
Şekil 5.3 - YBS ve Đş Fonksiyonları
Şekil 5.3'te de görülebileceği gibi YBS fonksiyonel bilgi sistemlerinin birleşiminden
meydana gelmiştir. Fonksiyonel bilgi sistemleri uygulama sistemlerinden onlar da
programlardan meydana gelmiştir. Veritabanı Yönetim Sistemleri (VTYS), bu
fonksiyonların aynı veriyi paylaşma yeteneğini artırır.
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
5.2.3 YBS ve Veritabanı Yönetim Sistemi (VTYS)
Veri, bir YBS'nin ana kaynağıdır ve bu kaynağın yönetimi oldukça önemlidir. Bir VTYS,
veritabanı denen birleştirilmiş ve koordine edilmiş dosyaların kümesi ile uygulama
programları arasında arayüz olarak hizmet veren bir programdır. Bu ilişki şekil 5.4'te
gösterilmiştir.
.
r
g
Ö
Şekil 5.4 - YBS ile VTYS arasındaki ilişki
Sistem Analizi ve Yazılım Tasarımı
19
Öğr. Gör. Mustafa AKSU
6.
BĐLGĐ SĐSTEMLERĐNĐN GELĐŞTĐRĐLMESĐNDE KULLANILAN ARAÇLAR
Bilgi sistemlerinin analiz ve tasarımında kullanılan araçlardan en önemlileri bu
bölümde tanıtılacaktır.
6.1. Akış Şemaları
Daha önceki bölümlerde akış şemaları hakkında bilgi verilmiş ve kullanılan semboller
gösterilmişti. Akış şemaları genelde iki tiptir:
-
Sistem akış şeması (süreç akış şeması)
-
Program akış şeması
6.2. Veri Akış Diyagramları (VAD)
Veri Akış Diyagramları, sadece 4 adet sembol kullanarak sistemdeki veri akışını
grafiksel olarak izah etmeye yarayan çok kullanışlı bir araçtır. Bilgi sistemi
tasarımcıları tarafından sıklıkla kullanılan bir araçtır ve sistem ne kadar karmaşık olursa
olsun bu diyagramlar sistemi tarif etmek için yeterlidir.
Literatürde VAD'lar için kullanılan iki standart sembol kümesi bulunmaktadır. Her iki
kümede de dörder adet sembol bulunmakta ve semboller farklı olsa da aynı anlamları
ifade etmektedir. Bu derste kullanılacak olan semboller Şekil 6.1'de gösterilmiştir.
U
S
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Şekil 6.1 - VAD Sembolleri
.
r
g
Ö
Bu sembollerin anlamlarını ve kullanılış şekillerini kısaca açıklayalım:
i) Veri Akışı: Bir veri akışı, bir sistemde bir yerden başka bir yere hareket eden veriyi
temsil eder. Yani veri akışı hareket halindeki veridir. Veri akışı bir ok ile gösterilir ve
bu ok üzerinde de o akışın içeriği yazılır. Bu içerik, tek bir veri olabileceği gibi
(Kayıt No gibi) kompozit bir veri de olabilir (satış raporları gibi).
ii) Proses: Prosesler, yapılan bir fonksiyonu ya da aktiviteyi tanımlar. Proseslere
genelde bir isim ve numara verilir. Bu numaralar proses sırasını gösteren
numaralar değildir. Proses ismi olarak da emir cümleleri kullanmak uygun
olacaktır (Brüt maaşı hesapla gibi).
iii) Dışsal Birimler: Bu birimler, veri/bilgi kaynağı ya da verinin/bilginin gideceği yerdir.
Sisteme veri sağlayan ya da sistemden veri alan birisi bu tanıma örnektir. Birimin adı
sembolün içine tekil olarak yazılır ve sembolün sol üst köşesinde de bu birimi
tanımlayan bir harf bulunabilir. Veri akış çizgilerinin kesişmesini önlemek için aynı
birim aynı diyagramda birden çok defa kullanılabilir. Aynı birim aynı diyagramda
birden çok defa kullanılıyorsa sembolün sağ alt köşesine bir diagonal çizilir.
iv) Veri Deposu: Analiz esnasında, verilerin depolanmasına ihtiyaç duyulan yerler olur. Bu
Sistem Analizi ve Yazılım Tasarımı
20
Öğr. Gör. Mustafa AKSU
yerler veri deposu olarak isimlendirilir. Veri deposu, bir raf, dosya kabini ya da bilgisayar
dosyası olabilir. Her bir veri deposu D ile tanımlanır ve referans olması amacıyla D'nin
yanına bir rakam verilir. Her bir veri deposu için ayrıca bir de isim verilir. Dışsal birimde
olduğu gibi aynı veri deposu aynı diyagramda birden çok kullanılırsa sembolün sol
tarafına dikey bir çizgi çekilir.
Genel bir veri akış diyagramı şekil 6.2'de verilmiştir.
Şekil 6.2 - Genel Bir VAD
6.3. Yapısal Şemalar
6.4. Yapısal Dil
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
U
S
K
A
Çoğu durumlarda, bilgi sistemi tasarımı için kullanılan akış şemaları, karar tabloları ve
HIPO gibi araçlardan gerçek programlara geçmek oldukça zor olabilir. YD, VAD'da
bulunan proseslerdeki dönüşüm işlemlerinin nasıl yapılacağını tarif etmek için kullanılır.
YD, bir nevi normal konuşma dilini kullanarak bilgisayar programları yazmaya benzer.
YD, Sahte Kod (SK) (Pseudocode) olarak da bilinir. Bu iki kavram arasında temelde bir
fark olmamakla beraber YD'nin konuşma diline, SK'nın ise programlama diline daha yakın
olduğu düşünülebilir.
Aşağıda bir YD örneği verilmiştir:
Örnek: Firmada Ayda brüt 250 dolardan fazla kazananların listesi
.
r
g
Ö
1- PRINT Rapor Başlığı
2- READ Her bir Personel Verisi
3- Brüt Ödemeyi Hesapla
4- Brüt Ödeme 250 Dolar'dan Fazla mı?
a. Evet ise, PRINT Numara, Oran, Brüt Ödeme
b. Hayır ise, Hiçbir şey Yazma
5- Tüm personel için 2-4 adımları tekrarla
6.5. Karar Tabloları
6.6. Karar Ağaçları
6.7. HIPO
Bilgi sistemi geliştirme araçlarından bir diğeri de IBM tarafından büyük ve karmaşık
çalışma sistemleri için geliştirilmiş olan HIPO (Hierarchy Plus Input-Processing-Output)
tekniğidir. "Nasıl" dan ziyade "Ne" yapılacağı üzerinde yoğunlaştığı için akış
şemalarından farklıdırlar. HIPO'nun 3 temel amacı vardır:
Sistem Analizi ve Yazılım Tasarımı
21
Öğr. Gör. Mustafa AKSU
1)
Sistem fonksiyonlarının parçalara ayrılmış hiyerarşik yapısını göstermek
2) Sistem fonksiyonlarının ayrıntılarını herhangi bir programlama diline bağlı
kalmaksızın göstermek.
3) Sistem fonksiyonları düzeyinde, girdiler ve çıktıları görsel olarak tarif etmek.
HIPO, iki ayrı diyagramdan oluşur:
1) Görsel Đçerik Tablosu: Hiyerarşi diyagramı olarak da bilinir. Đngilizce kısaca
VTOC (Visual Table Of Contents) olarak ifade edilir. Sistemi yukarıdan
aşağıya hiyerarşik bir yapıda modüler olarak ifade eden bir şemadır.
2) HIPO Özet Diyagramı: Đngilizce HIPO Overview Diagram olarak bilinir.
VTOC'taki her bir kutu (modül) için girdi, çıktı ve ana prosesleri gösterir.
Şekil 6.5 ve 6.6'da bir bordro sistemine ait VTOC ve HIPO özet diyagramı örneği verilmiştir.
U
S
.
r
g
Ö
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Şekil 6.9 - HIPO Özet Diyagramı
Sistem Analizi ve Yazılım Tasarımı
22
Öğr. Gör. Mustafa AKSU
U
S
.
r
g
Ö
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
Sistem Analizi ve Yazılım Tasarımı
23
K
A
Öğr. Gör. Mustafa AKSU
1 . Yazılım Geliştirme Tekniklerine Giriş
1.1
Tanım
Yazılım sistemlerini tanımlamayı, geliştirmeyi, yönetmeyi ve yeni ihtiyaçlara uyarlamayı
disipline eden mühendisliğe, YAZILIM MÜHENDĐSLĐĞĐ denir.
1.2
Yazılım Ürünleri
YAZILIM ÜRÜNLERĐ
U
S
PAKET ÜRÜNLER
Paket ürünler, bir konu üzerinde
genel ihtiyaca cevap verebilen ve
kolayca satın alınabilen ürünlerdir.
1.3
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Yazılım Ürünlerinin Nitelikleri
Đyi bir yazılımın dört önemli niteliği vardır.
• Bakımı yapılabilir olmalı - Maintainability: Müşterinin değişen ihtiyaçlarına cevap
verebilir olmalı.
•
Güvenilir olmalı - Dependability: Yazılımların makul olan bir güvenirlilik sınırı olmalı.
Güvenilir yazılım, sistem çökmüş olsa dahi, fiziksel veya ekonomik olarak zarar
görmemeli.
•
Verimli Olmalı - Efficiency: Yazılım, hafıza (memory) ve işlemci gibi kaynakları heba
etmemelidir.
•
Kullanılabilir Olmalı - Usability: Yazılım, kullanıcı için kolay bir arayüze ve yeterli bir
dokümantasyona sahip olmalıdır.
.
r
g
Ö
(M) Maliyet
(V) Verimlilik
Şekil 1.1: Maliyet - Verimlilik Grafiği
Sistem Analizi ve Yazılım Tasarımı
24
Öğr. Gör. Mustafa AKSU
1.4
Yazılım Oluşturma Seyri
4 temel aşama vardır.
• Yazılım Tanımları: Yazılımın çalışma esnasındaki fonksiyonları ve sınırlarını
mutlaka tanımlamalı.
•
Yazılım Geliştirme: Yazılım tanımlarına uygun olarak üretilmeli.
•
Yazılımın Geçerliliği: Yazılım müşterinin istekleri sağlıyor olmalı .
•
Yazılımın Tekamül Edilebilirliği: Yazılım müşterinin değişen ihtiyaçlarına cevap
vermeli.
(X) Yapılan Đş
U
S
Đyi Analiz Yapılmış
(Sağlam) Analiz Yapılmamış
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
(T) Süre
Şekil 1.2: Analiz yaptıktan sonra, yazılım geliştirmenin önemini gösteren grafik.
1.5
Yazılım Geliştirme Modelleri
1.5.1 Şelale Modeli – Waterfall:
Yukarıdaki aktiviteler birbirini takip edecek şekilde uygulanır. Sırasıyla ihtiyaçlar
tanımlanır, yazılım tasarlanır, uygulanır, test edilir ve kullanılır.
Đhtiyaç
Tanımları
.
r
g
Ö
Sistem ve Yazılım
Tasarımı
Yükleme ve Birim
Testi
Entegrasyon ve
Sistem Testi
Operasyon ve
Bakım
Şekil 1.3: Şelale Modelinde Đş Akışı
Yazılım Mühendisliğinin en popüler yaklaşımıdır. Diğer mühendislik bilgilerinden
yararlanır. Her bir aşama diğerine zemin oluşturur. Dolayısıyla geliştirme aşamaları diğer
yaklaşımlara göre daha iyi ayrılabilir. Beş tane temel yazılım geliştirme aktivitesi vardır:
• Đhtiyaç analizi ve tanımlarının yapılması
Sistem Analizi ve Yazılım Tasarımı
25
Öğr. Gör. Mustafa AKSU
•
Sistem ve yazılımın tasarlanması
•
Uyarlama ve birim testlerinin yapılması
•
Sistemin bütünleştirilmesi ve sistem testlerinin yapılması
•
Uygulama ve bakım
Yazılım aşamaları düz bir yol takip etmezler. Her bir aşama kendinden önceki aşamalara
sürekli bilgi aktarır(feedback). Birbirini takip eden aşamalarda yapılan başarılı işler,
önceki aşamadaki problemin çözümüne katkı sağlar. Bunun için yazılım mühendisleri
problemleri iyi tanımlayabilmek ve çözümlerini üretebilmek için sık sık önceki aşamaların
bilgilerine geri dönerler.
Dezavantajları: Her bir aşamada önceki aşamalara geri dönülmesi projenin
yönetilmesini zorlaştırır. Bir diğer dezavantajı da şudur: Projenin belirgin kısımlara
ayrılması projenin esnekliğini azaltır.
Modelin Özü: Şelale yaklaşımı yazılım mühendislerinin tecrübelerinin yansımalarıdır.
SONUÇ: Bu yaklaşım büyük yazılım projelerinin geliştirilmesinde kullanılır.
U
S
1.5.2 Tekamül Edilebilir Geliştirme:
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
Tanımlamalar
Taslak
Tanımlamalar
.
r
g
Ö
K
A
Đlk Versiyon
Geliştirme
Ara Versiyonlar
Geçerlilik
Son Versiyon
Şekil 1.4: Tekamül Edilebilir Geliştirme Modeli
Bu yaklaşıma göre, tanımlama, geliştirme ve geçerlilik safhaları iç içedir. Çok soyut
tanımlardan başlanılarak yazılım hızla geliştirilir. Daha sonra müşteri ihtiyaçlarına göre
tekrar düzeltmeler yapılır.
Đki çeşit Tekamül Edilebilir Geliştirme modeli vardır.
1.
Keşif programlama: Burada, müşteri ile birlikte onun ihtiyaçlarının tespiti yapılır ve
yazılım geliştirilir. Geliştirme süreci aşama aşamadır. Yazılımın geliştirilmesine en iyi
anlaşılan noktalardan başlanılır. Daha sonra yeni özellikler müşteri ile tartışılarak
eklenir.
2.
Prototip oluşturmak: Bu modelde, öncelikle müşterinin ihtiyaçları öğrenilmeye
çalışılır. Daha sonra oluşturulacak sistemin iyi bir ihtiyaç tanımları yapılır. Bu bilgiler
ışığında bir prototip yazılım oluşturulur.
Tekamül Edilebilir Geliştirme yaklaşımının üç önemli problemi vardır:
1. Aşamalar belirgin değildir.
Sistem Analizi ve Yazılım Tasarımı
26
Öğr. Gör. Mustafa AKSU
2. Sistem zayıf bir temel üzerindedir.
3. Özel beceri ve tecrübelere sık, sık ihtiyaç duyulur.
1.5.3 Biçimsel Dönüşme:
Bu yaklaşım bir yazılım için matematiksel metotlar kullanılarak biçimsel bir matematik
tanımını ve bu tanımın dönüşümünü temel alır. Bu dönüşümler yazılımda hataların
oluşmasını engeller. Yazılımın geliştirilmesi daha güvenli olur.
1.5.4 Tekrar Kullanılabilir Bileşenlerle Sistem Oluşturma:
Bu yaklaşım, öncelikle sistemde parçaların var olduğunu düşünür. Yazılımın zorlanarak
geliştirilmesi yerine, sistem geliştirme aşamaları, var olan bu parçalara odaklanır.
1.6
1.7
Đşlem Karakteristikleri
•
Anlaşılabilirlilik - Understandability
•
Görünebilirlilik - Visibility
•
Desteklenebilirlilik - Supportability
•
Kabul Edilebilirlilik - Acceptability
•
Rehabilite Edilebilirlilik - Reliability
•
Zindelik - Robustness
•
Bakımı Yapılabilir - Maintainability
•
Hız – Rapidity
Risk Yönetimi
U
S
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Belki bir projede en çok kontrol edilmesi gereken noktalardan bir risklerdir. Đyi bir risk
yönetimi için, risklerin belirlenmesi en başta gelen unsurdur. Daha sonra bu riskleri
indirgemek (düşürmek) için belli yöntemler kullanılır. Projede iyi bir risk yönetimi için
aşağıdaki noktalara dikkat edilmelidir.
• Hedefler
: Analizin amaçları
.
r
g
Ö
•
Sınırlamalar
•
Alternatifler
: Hedeflere ulaşmanın birden fazla yolları olması
•
Riskler
: Her alternatifin risklerinin belirlenmesi
•
Risk Çözümleri
: Risklerin azaltılması için uygulanan stratejiler
•
Sonuçlar
: Uygulanan strateji sonuçları
•
Planlar
: Bir sonraki aşama analizi için planlama
•
Taahhüt
: Aşamaların nasıl olacağını belirleme
: Proje sınırlarının en uygun şekilde belirlenmesi
Sistem Analizi ve Yazılım Tasarımı
27
Öğr. Gör. Mustafa AKSU
2 . Proje Yönetimi
Yazılım mühendisliğinin diğer mühendisliklerden temel farklılıkları:
a) Ürünleri sanaldır.
b) Yaptığı işlemlerde belli bir standartlık yoktur.
c) Büyük yazılım projeleri sıkça tekrarlanmaz.
2.1
Yönetim Aktiviteleri
Başarılı projeler gerçekleştirmek için, başarılı bir yönetim şarttır. Bir yazılım projesinde
başarısı öncelikle organizasyonun başarısına bağlıdır. Ayrıca yazılımın içeriği de çok
önemlidir. Bundan dolayı çoğu proje yöneticileri, projeyi belli aşamalara ayırır ve her bir
aşamada neleri yapması gerektiğini belirler. Bunları şöyle sıralayabiliriz:
a) Teklifin yazılması
U
S
b) Projenin fiyatlandırılması
c) Proje planı ve programı
d) Proje izleme ve yeniden inceleme
e) Personel seçimi ve değerlendirilmesi
f)
Rapor yazma ve projenin takdimi.
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Bir projede en önemli noktalardan biri de personel seçimidir. Her proje yöneticisinin en
büyük arzusu ideal bir proje ekibi oluşturmaktır. Ama bu genellikle mümkün olmaz.
Temel neden olarak şunları sıralayabiliriz:
a) Proje bütçesi yeterli olmayışı
b) Proje personelinin birbirleri ile olan olumsuz ilişkilileri
c) Deneyimsiz personel veya tecrübe kazanması gereken personel kullanmak
zorunluluğunun oluşması.
2.2
Plan
Proje Planlaması
.
r
g
Ö
Açıklama
Kalite planı
Geçerlilik planı
Proje içinde kullanılacak kalite işlemleri ve standartlarının tanımları
Sistem geçerliliği için kullanılacak yaklaşımlar, kaynaklar ve
programlar açıklanır.
Konfigürasyon
planı
Kullanılacak yapılandırma yönetim aşamaları ve yapısının tanımları
Bakım planı
Sistemin bakım ihtiyaçları, bakım maliyeti ve bakım için gerekli
eforun tahmin edilmesi
Personel
yetiştirme
planı
Proje ekip üyelerinin deneyimlerinin ve mantığının nasıl artırılacağı
tanımlanmalı
2.2.1 Proje Planı
Proje planının genel kabul gören aşamalarını şöyle sıralayabiliriz.
1. Giriş (projenin hedefleri, sınırları, bütçesi,süresi vb.)
2. Proje organizasyonu (proje ekibinin oluşturulması )
3. Risk analizi
4. Donanım ve yazılım kaynak ihtiyacı
Sistem Analizi ve Yazılım Tasarımı
28
Öğr. Gör. Mustafa AKSU
5. Đş kesintileri (personelin hastalanması, teknik arızaların oluşma ihtimalleri
gibi.)
6. Proje Programı (ne kadar zaman hangi işlemlerin yapılıp, hangi aşamada
olduğunuzu belirlenmesi vb.)
7. Đzleme ve raporlama mekanizması
2.3
Aktivite Organizasyonu
Fizibilite
Çalışması
Đhtiyaç
Analizi
Prototip
Geliştirme
Tasarım
Çalışması
Đhtiyaç
Özellikleri
Fizibilite
Raporu
Đhtiyaç
Tanımları
Geliştirme
Raporları
Mimari Tasarım
Đhtiyaç
Özellikleri
Şekil 3,1: Đhtiyaç Analizi aşamalarını gösteren şema.
2.4
Proje Programı
U
S
K
A
Projenin her aşaması en detaya kadar programlanır. Bu cümleyi biraz açarsak, her bir
proje aktivitesi belli bir kriter altında detaylandırılır. Bu kriter genellikle adam/gün’dür.
Proje programını etkileyen bir diğer unsur, proje aşamalarının hatta aşama detaylarının
birbirleri ile olan ilişkileridir. Süreler ve ilişkiler şematik olarak gösterilir. Böylelikle hem
proje yöneticisi, hem de diğer personel projenin seyri hakkında bilgilenmiş olur.
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
2.4.1 Aktivite Bar Grafiği ve Aktivite Ağı
Örnek 3.1: Tablo 3.1’de görev isimleri, süresi ve birbirlerine bağımlığı verilen projenin
işlem ağını ve aktivite bar grafiğini gösterin.
Görev
r.
g
Ö
Geçen Süre
(Gün)
Bağımlılığı
G1
8
-
G2
15
-
G3
15
G1
G4
10
-
G5
10
G2, G4
G6
5
G1, G2
G7
20
G1
G8
25
G4
G9
15
G3, G6
G10
15
G5, G7
G11
7
G12
10
G9
G11
Tablo 3.1: Görev isimleri, süreleri ve bağımlılıklarını gösteren tablo
Sistem Analizi ve Yazılım Tasarımı
29
Öğr. Gör. Mustafa AKSU
Đşlem (Aktivite) Ağı (Şekil 3.2)
8
gün
G1
03.06.2002
Başlangıç
13.06.2002
K1
15
gün
G2
20
gün
G7
11.07.2002
K7
15
gün
G3
05.07.2002
K4
5
gün
G6
01.07.2002
K6
10
gün
G5
17.06.2002
K3
G2
G4
G3 K1
.
r
g
Ö
G7
25
gün
G8
7
gün
G11
24/06
10
gün
G12
06.08.2002
K11
01.08.2002
K10
U
S
08.07.2002
K5
01/07
12/08
K
A
Bitiş
19.08.2002
Kritik Hat
22.07.2002
K8
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
Aktivite Bar Grafiği
03/06 10/06 17/06
G1
26.07.2002
K9
15
gün
G10
24.06.2002
K2
10
gün
G4
15
gün
G9
08/07
19/08
15/07
Normal Hat
K
Kilometre Taşı
G
Görev
22/07
29/07
05/07
K8
G8
K6,K5
G5
G6
K9
G9
K10
G10
G11
G12
Yukarıdaki şekilde (K) harfleri kilometre taşlarını, (G) harfleri ise görevleri sembolize
ediyor. Şekil 3.2 bir projenin aktivite ağını gösteriyor. “Hangi aktiviteyi veya işi, hangi iş
takip ediyor?" sorusuna bu şekil cevap verebiliyor. Ayrıca kalın çizgi ve taralı hücrelerle
gösterilen dal, projenin kritik işlerinin olduğu iş sürecidir. Burada oluşabilecek bir gecikme
projenin gecikmesine sebep olur/olabilir.
Sistem Analizi ve Yazılım Tasarımı
30
Öğr. Gör. Mustafa AKSU
3 . Đhtiyaç Mühendisliği
3.1
Tanım
Sistem hizmetlerinin tespit edilmesini ve sistem hangi operasyonlar altında çalışıyorsa
onun sınırlarının belirlenmesini sağlayan mühendisliğe ĐHTĐYAÇ MÜHENDĐSLĐĞĐ (Đ.M.)
denir.
Fonksiyonel Đhtiyaçlar: Sistem fonksiyonun veya sunduğu hizmetlerin tanımlanması ile
ortaya çıkar.
Fonksiyonel Olmayan Đhtiyaçlar: Sistem sınırlarının veya geliştirme işlemlerinin
tanımlanması ile ortaya çıkar.
Đ.M.nin ihtiyaç tanımlamasını iki ana aşamaya ayırabiliriz. Birincisi, ihtiyaç tanımlarıdır ki,
soyut ihtiyaç tanımlarının yapılmasıdır. Đkincisi ise, ihtiyaç nitelikleridir; Bunlarda sistemin
ne yaptığını detaylandırarak tanımlanması ile ortaya çıkar. Bu iki aşamanın daha da
detaylandırılarak, Đ.M. ile tasarım aktiviteleri arasında bir köprü kurmasını sağlayan detay
tanımlamalar (yazılım nitelikleri) vardır.
Đhtiyaç Tanımları: Sistem hangi operasyonlar altında çalışması ve sınırlarının
belirlenmesi sonucunda, hangi hizmetleri sunacağının, konuşulan dil veya diyagramlar ile
belirlenmesidir.
Đhtiyaç Nitelikleri: Sistemin sunduğu hizmetlerin detaylı olarak anlatıldığı dokümandır.
Bu doküman, fonksiyonların nitelikleri diye de adlandırılır; çok iyi hazırlanmış olmalıdır.
Bu doküman sistem alıcısı ile yazılım geliştirici kurumlar arasındaki kontrat olabilmelidir.
Yazılım Nitelikleri: Yazılımın tasarımına ve uyarlanmasına temel olacak detaylı
tanımların ortaya konmasıdır. Bu niteliklere, ihtiyaç niteliklerinin detaylandırılması
esnasında da ekler yapılabilir.
Đ.M.nin işlevi, ihtiyaçların tanımlarını yazılı olarak yapmak, sonra da bu tanımları ihtiyaç
niteliklerine
göre
de
genişletebilmektir.
Aşağıda
ihtiyacın
tanımlanması
ve
detaylandırılmasına bir örnek verilmiştir.
U
S
3.2
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Đhtiyaç Mühendisliği Đşlevleri
Đ.M. ihtiyaç tespitini dört temel aşamada yapar.
1. Ön-Hazırlık - Feasibility: Fiyat- Performans ilişkisi
2. Đhtiyaç Analizi: Prototip Oluşturma
3. Đhtiyaç Tanımları: Aktiviteleri en detaylı şekilde
dokümantasyon.
4. Đhtiyaç Nitelikleri: Ayrıntılı ihtiyaç dokümantasyonu.
.
r
g
Ö
Ön
Hazırlık
Đhtiyaç
Analizi
Ön Hazırlık
Raporu
Sistem
Modelleri
yazılı
olarak
tutan
Đhtiyaçların
Tanımı
Đhtiyaç
Nitelikleri
Đhtiyaçların
Tanımı
Đhtiyaç
Nitelikleri
Đhtiyaç
Dokümantasyonu
Şekil 3.1: Đhtiyaç Mühendisliği Đşlevleri
Sistem Analizi ve Yazılım Tasarımı
31
Öğr. Gör. Mustafa AKSU
3.3
Yazılım Đhtiyaç Dokümantasyonu
Yazılım ihtiyaç dokümantasyonunun iyi olabilmesi için aşağıdaki 6 noktanın altı
çizilmelidir.
• Sadece sistemin genel yapısı olmalıdır.
•
Uyarlamadaki sınırlar belirlenmelidir.
•
Kolayca değiştirilebilir olmalıdır.
•
Sistem onarıcılarına referans belge olmalıdır.
•
Sistemin sürekliliği hakkında ön bilgiler içermelidir.
•
Đstenmeyen olaylar karşısında uygun çözümler içermelidir.
Yazılım ihtiyaç dokümantasyonunun genel yapısı şöyle olmalıdır.
Giriş: Sistemin genel olarak tanıtır.
Sözlük: Dokümanda kullanılan teknik terimleri açıklar.
Sistem Modelleri: Sistem bileşenleri ile sistemin çevresi arasındaki ilişkileri gösteren
modelin oluşturulması.
Fonksiyonel Đhtiyaç Tanımları: Kullanıcılara sağlanan hizmetlerin tanımlanmasını
içerir.
Dolaylı Đhtiyaç Tanımları: Yazılımın ve tasarımcının sınırlarının belirleyen doküman.
Sistem Geliştirme: Sistemin gelecekte ihtiyaç duyacağı değişikliklerin belirtilmesi.
Đhtiyaçların Detaylandırılması: Özellikler fonksiyonel ihtiyaçların detaylandırılmasını
içerir.
Ayrıca donanım ihtiyaçları, veri tabanı ihtiyaçları ve dokümanın sonunda da indeks yer
alır.
U
S
3.4
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Đhtiyaç Geçerliliği
Đhtiyaç belirlemedeki kriterler;
• Geçerlilik: Sistemin fonksiyonları düşünülmelidir; Ayrıntılı analiz yapılır.
•
Uyumluluk: Đhtiyaçların birbirleri ile çakışmaması.
•
Bütünlülük:
Kullanıcının
tanımlayabilmek.
•
Gerçeklilik : Detaylı Đhtiyaç tespiti gerçekçi olmalı.
.
r
g
Ö
tasarladığı
fonksiyonları
ve
sınırları
iyi
Bu noktalara gereken önemin verilmesi durumunda, yazılımın kabiliyeti ve gündemde
kalma süresi artar. Bu da yazılımın maliyet fiyatının azalmasında önemli bir etkendir.
Ayrıca şu noktalara da dikkat edilmelidir.
a) Doğruluğu kanıtlanabilir: Đhtiyaç olarak tespit edilenler, somut olarak test
edilebilirler mi?
b) Anlaşılabilirlilik: Đhtiyaç olarak tespit edilenler, kullanıcılar ve proje geliştiricileri
tarafından net bir şekilde anlaşılabilir midir?
c) Đzlenebilirlilik: Đhtiyacın doğuş nedeninden başlayarak, tüm aşamalarının takip
edilebilir olmasıdır.
d) Adapte edilebilirlilik: Đhtiyaçlardaki bir değişikliliğin, sistemin genel yapısı
bozmadan yapılabilir olmalıdır.
Sistem Analizi ve Yazılım Tasarımı
32
Öğr. Gör. Mustafa AKSU
Đhtiyaç Problem
Raporu
Đhtiyaç
Tespiti
Đhtiyaç
Tanımları
Đhtiyaç
Analizi
Đhtiyaç Veri Tabanı
Şekil 3.2: Đhtiyaç Kontrol Şeması
3.5
Đhtiyaç Gelişimi
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
U
S
K
A
Đhtiyaç geliştirme acısından bakıldığında, ihtiyaçlar iki sınıfa ayrılırlar.
a) Sürekli (Dayanıklı) Đhtiyaçlar: Bunlar organizasyonun ana faaliyetlerinden çıkarılan
ihtiyaçlardır. Doğrudan sistemin merkezi ile ilgilidir. Örnek; bir hastanede hastaların,
doktorların, hemşirelerin sürekli ihtiyaçları vardır.
b) Geçici Đhtiyaçlar: Sistemin geliştirilmesi esnasında veya sistemin çalıştırılmasında
sonra değişebilen ihtiyaçlardır. Örnek; hükümetleri sağlık politikalarındaki değişmelere
bağlı değişiklilerden kaynaklanan ihtiyaçlar.
4. Đhtiyaç Analizi
Giriş
Đhtiyaç Mühendisliğinin (Đ.M.) neler yaptığını bir önceki bölümde inceledik. Aslında
incelediğimiz konular Đ.M.nin yaptığı yegane işler değil. Đ.M.nin bir diğer önemli işlevi de
ihtiyaç analizidir.
Đhtiyaç analizi (Đ.A.), yazılım geliştirme ekibi ile müşteri yetkililerinin bir araya gelerek,
sistemin performansına bağlı olarak yapılır.
Đyi bir sistem geliştirebilmek için, kullanıcıların sistemden neler beklediğini çok iyi tespit
etmek gerekir. Đhtiyaçlar çok titiz bir incelemeye tâbi tutulmalıdır. Müşteri için gerçekten
gerekli olan ihtiyaçlara sağlıklı bir şekilde ulaşılmalıdır. Yoksa sistemin başarısı zedelenir.
Đ.A. iyi bir sistem oluşturmanın ilk adımlarından biridir; bu yüzden Đ.A. yapılırken bazı
zorluklarla karşılaşılır. Bunları şöyle sıralayabiliriz:
1. Müşteri sistemden tam olarak neler beklediğini ifade edemez. Bir başka
durumda, müşteri çok gerçekçi olmayan isteklerde bulunabilir.
.
r
g
Ö
2. Yazılım geliştirme ekibi, özelliklede Đ.M., müşterinin çalışma konusu ile ilgili
bilgileri ve deneyimi genellikle azdır. Dolayısıyla, yapılan işin sistemdeki tam
karşılıklarını bulmak Đ.M. için zor olabilir.
3. Kullanıcıların farklı istekleri olur. Đ.M. bu istekler arasındaki farklığı ve istekler
arasındaki uyumsuzluğu belirlemesi zordur.
4. Analiz esnasındaki politik isteklerin ortaya çıkardığı zorluklar.
5. Analiz esnasındaki ekonomik ve iş ile ilgili zorluklar.
Sistem Analizi ve Yazılım Tasarımı
33
Öğr. Gör. Mustafa AKSU
Đhtiyaç Tanımları
ve Nitelikleri
Đhtiyaç
Geçerliliği
Öncelikler
Yapının
Anlaşılması
Proje Girişi
Çakışmaların
Çözümü
Đhtiyaçların
Toplanması
U
S
Sınıflandırma
Şekil 4.1: Đhtiyaç Analizi Đşlemleri
K
A
Şekil 4.1’deki işlemler iteratif ve birbirleri arasında geri beslemesi çok olan bir yapıya
sahipler. Đşlemler, yapının anlaşılması ile başlayan ve ihtiyaç geçerliliği ile sona eren bir
dairesel yapıda görülebilir. Her bir döngüde ihtiyaç analistleri sistemin ihtiyaçlarını biraz
daha anlarlar.
Aktiviteler:
a) Yapının anlaşılması: Analistler, uygulama alanının anlaşılmasını geliştirmek
zorundadır. Dolayısıyla eğer sistem bir supermarket için geliştiriliyorsa,
analistler supermarket için gerekli bütün ihtiyaçları ortaya koymak zorundalar.
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
b) Đhtiyaçların toplanması: Bu işlem kullanıcılar ile beraber çalışılarak yapılmalıdır.
Bu çalışma esnasında sistemin anlaşılması da netlik kazanır.
c) Sınıflandırma: Đhtiyaçların toplanması ve
sınıflandırılması bu işlemin içeriğini oluşturur.
birbirleri
ile
uyumlu
olarak
d) Çakışmaların çözümü: Bir çok kullanıcının isteklerini söylediği bir ortamda
isteklerin birbirleri ile uyumsuzluğu da kaçınılmaz olur. Burada yapılan iş, önce
hangi isteklerin çakıştığının tespiti, daha sonra bunlara çözümlerin
üretilmesidir.
.
r
g
Ö
e) Öncelikler: Đhtiyaçlar detaylı olarak belirlendikten sonra istekler önem sırasına
konulmasıdır.
f)
Đhtiyaçların geçerliliği: Đhtiyaçlar kullanıcıların istekleri doğrultusunda
belirlendikten sonra hangi ihtiyacın neden ortaya çıktığı ve öneminin ne
olduğunun belirlenerek, ihtiyacın gerekliliğinin ortaya konmasıdır.
Đhtiyaçların belirlenmesinde
incelemeye çalışacağız.
değişik
metotlar
uygulanabilir.
Bunlardan
iki
tanesini
4.1. Bakış Açısı Temelli Analiz
Herhangi bir orta boy veya büyük boy sistemlerde, değişik ilgili alanlarına sahip bir çok
kullanıcılar vardır. Her kullanıcı sistemin bütününe kendi bakış açısı ile bakar. Dolayısıyla
her birinin ihtiyacı farklı olur. Bütün ihtiyaçları toplayıp, çakışmalarını önleyebilmek çok
zordur. Bunu bir örnek ile açıklamaya çalışalım:
Bir banka için otomatik vezne işlemleri gerçekleştirecek bir sistem kurmaya çalışalım.
Örneğimizin içinde bulunabilecek aktörlerin ihtiyaçlarını ayrı, ayrı inceleyelim.
Banka müşterileri: Sistemden sağlıklı ve hızlı servis almayı isterler.
Bankamız ile ortak çalışan diğer banka yetkilileri: Karşılıklı olarak otomatik
makineleri kullanma izni veya kullanım anlaşması yapılmasını isterler.
Sistem Analizi ve Yazılım Tasarımı
34
Öğr. Gör. Mustafa AKSU
Sistemi kullanan diğer departmanların yöneticileri: Sistemden kendi bölümlerini
ilgilendiren bilgilerin sağlanmasını isterler.
Sistemin kurulduğu yerlerdeki makineden sorumlu görevliler: Bunlarda makinenin
sürekli çalışmasını isterler; bundan dolayı ortaya çıkabilecek sorunların çözümleri ile ilgili
istekleri olur.
Veri yöneticileri: Bankanın müşteri verilerini kullanabilme konusunda isteklerde
bulunabilirler.
Banka güvenlik yöneticileri: Herhangi bir tehlikeye karşı güvenliğin sağlanması ile ilgili
isteklerini ortaya koyarlar.
Đletişim mühendisleri: Otomatik vezne ile diğer makinelerin iletişimleri ile ilgili
sorumlulukları çerçevesinde isteklerini bildirirler.
Bankanın pazarlama bölümü: Otomatik veznenin, müşterilere nasıl daha cazip
sunulabileceği konusunda isteklerde bulunurlar.
Donanım ve yazılım mühendisleri: Kullanılacak donanım ve yazılımların bakımı ile ilgili
isteklerde bulunurlar.
Banka personel yöneticisi: Sistemin oluşturulmasında ve servisinin
sağlanmasın
kullanılacak personel ile ilgili istekleri olur.
Tabii yukarıda bahsi geçen kişilerin bazılarının ihtiyaç analizindeki etkileri diğerlerine göre
daha çok veya az olabilir. Ayrıcı bu kişilerin isteklerinin bazıları makul istekler olmayabilir.
Ama yukarıdaki listede belirtilen bütün kişiler sistemin bütününe, kendi açılarından veya
başka bir değişle farklı açılardan bakarlar. Bu kadar bakış acısı içinde hangilerinin ne
kadar önemli olduğunun belirlenmesi, ihtiyaçların belirlenmesindeki hataları da belirler.
Her bir bakış, sisteme, sistemin farklı bir yönünden bakar.
U
S
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
PROBLEM!!!
.
r
g
Ö
Şekil 4.2: Ortada bulunan problemin çözümü için değişik bakış açıları
Bu metodun avantajlarını şunlardır.
• Çok büyük sistemlerde, kullanıcılar kendilerini sistemin alıcıları gibi görürler.
•
Ama kullanıcılar sisteme dışardan bakarlar.
•
Hangi bakış açısı ile sisteme bakıldığına ve bu bakış açısının sistem ile ne kadar
etkileşim içinde olduğuna daha kolay karar verilir.
•
Aynı bölümdeki değişik kullanıcılar, bölümleri ile ilgili fonksiyonel olmayan
fakat kullanışlı ihtiyaçlardan bahsedebilirler.
4.2
Metot Temelli Analiz
Bu analiz tipi, çok geniş uygulama alanı bulabilen bir analiz metodudur. Analiz sonuçları
bir sistemin modelini oluşturur. Metodik analizin değişik vurgu noktaları vardır. Aşağıda
bu noktalar veriliyor. Analiz yapılırken bazen bunların hepsi veya bazıları ön plana çıkar.
Đşlem modeli: Uygulanan metot içinde aktivitelerin tanımlanmasıdır. Aktivitelere örnek
olarak, veri akış analizi, ihtiyaç niteliklerini netleştiren senaryo çalışmaları gibi. Aktiviteler
Sistem Analizi ve Yazılım Tasarımı
35
Öğr. Gör. Mustafa AKSU
belli bir sırada yer alır.
Sistem modelleme işaretleri: Bu işaretlemeler, şemalarla, formlarla veya dilsel olabilir.
Örnek, veri akış şeması, nesne yapı diyagramı gibi.
Sistem modeli üzerinde tanımlanan kurallar: Kurallar bir modül veya modüller
üzerinde tanımlanırlar.
Tasarım rehberi: Uygulanması zorunlu olmayan bir faaliyettir. Fakat uygulanması
durumunda sistem her halükarda tasarlanır. Belki zayıf bir tasarım olabilir ama elinizde
bir yapı bulunur. Örnek, bir modelin en fazla 3 alt modülü olabilir kuralı gibi.
Rapor şablonları: Analiz esnasında elde edilen bilgilerin nasıl sunulacağını tanımlar.
4.3. Sistem Đçeriği
Analiz çalışmasının hemen başında yapılması gereken iş, sistemin sınırlarının
belirlenmesidir. Belki en önemli nokta, sistem ile sistemin çevresi tanımının iyi
yapılmasıdır. Bazı durumlarda sistem ile çevre ilişkisi çok net olarak ayırt edilebilir.
Örneğin, var olan manuel bir sistem yerine otomatik bir sistem getirilecek ise, eski çevre
tanımı değişmeden kalabilir.
Analiz şöyle de tanımlanabilir; bir sisteme neyin ekleneceğine ve neyin çıkarılacağına
karar verme işlevidir.
Sistemin sınırlarının belirlenmesi, sistemin içeriği ve bağımlılığının tanımlanması
demektir. Blok diyagramlar sistemin çevresini tanımlar. Fakat sistem ile diğer sistemler
arasındaki ilişkiyi anlatmaz.
Bu ilişkileri gösterebilmek için blok diyagram, çevrenin modellenmesindeki detayları
ortaya koymanın ilk aşamasıdır. Modelleme tiplerine örnekleri şöyle verebiliriz:
• Veri-Akış Modeli: Sistem içinde veri işlenen modelini gösterir.
U
S
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
•
Semantik Veri Modeli: Sistem modellemenin bu tipi, sisteme verilen verinin
veya sistemden alınan verinin mantıksal yapısını tanımlar. Böylelikle sistemin
mevcudiyeti, nitelikleri ve diğer parçalarla olan ilişkileri kolayca gösterilir.
•
Nesne Modelleri: Bu modeller sistemin varlığının mantıksal bir tanımını yapar.
Sistemi tasnifler ve parçaları bir araya getirir. Đşlevsel model ile veri modelini
birleştirir. Son kullanıcıların anlamakta zorlandığı bir modeldir.
•
Veri Sözlüğü: Projenin başından sonuna kadar sistem ile ilgili bilgilerin
anlaşılabilmesi için çok önemli bir araçtır. Her türlü sistem modelini destekler.
Analize, tasarım esnasında veya her hangi bir zamanda eklenebilir.
.
r
g
Ö
Güvenlik
Sistemi
Hesap Sistemi
Hesap Veri
Tabanı
Otomatik Vezne
Sistemi
Sayaç Sistemi
Kullanılan Veri
Tabanı
Bakım Sistemi
Şekil 4.3: Otomatik vezne sisteminin içeriği
Sistem Analizi ve Yazılım Tasarımı
36
Öğr. Gör. Mustafa AKSU
4.4. Sosyal Organizasyon Faktörü
Çevre ihtiyaç analizini etkiler. Sosyal ve organizasyon faktörlerini dikkate almayan
metotlar zayıf metotlardır. Đnsan ve yapılan işin niteliği etki faktörleri olarak mutlaka
dikkate alınmalıdır. Đyi bir ihtiyaç analizi için, insan ve organizasyon etkilerine karşı
duyarlı olan bir çalışma yapılmalıdır. Bu etkilerin iyi tanımlanamaması, analiz donatılarını
sistematik bir yapıdan çıkarır ve sonucu kötü yönde etkiler.
Etnoloji, sosyolog ve sosyal antropologun ciddi bir zamanı, çalışma koşullarını
gözlemleme çalışması ile geçer. Bu çalışmada sosyal bilimciler gerçek organizasyon
işlemlerini keşfetmeyi hedeflerler.
Etnolojik
Analiz
Toplantılarda
Bilgilenme
Sistem
Geliştirme
Sistem
Prototipi
Sistem
Prototipi
Şekil 4.4: Đhtiyaç analizi için etnoloji ve prototip oluşturma
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
Etnolojik
Analiz
Sistem
Prototipi
U
S
Prototip
Geliştirme
K
A
Yapısal Analiz
Đhtiyaç
Nitelikleri
Prototip
Geliştirme
Şekil 4.5: Etnolojik, prototip ve yapısal analiz
.
r
g
Ö
Şekil 4.4 ve 4.5 ihtiyaç analizi için kullanılan iki farklı model.
Sistem Analizi ve Yazılım Tasarımı
37
Öğr. Gör. Mustafa AKSU
5. Yazılım Tasarımı
Yazılım tasarımı için, üç önemli nokta.
1. Yazılımın içeriğinin iyi anlaşılması ve üzerinde detaylı bir çalışmanın yapılması,
2. En azından bir tane modelin oluşturulması,
3. Tasarımda kullanılan her bir soyut kavramın tanımlanması.
5.1.
Tasarım
Đnformal
Tasarım
Taslağı
Đnformal
Tasarım
Daha
Formal
Tasarım
Tasarım
Sonu
U
S
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Şekil 5.1: Tasarım Đnformal durumdan detay durumuna ilerlemesi
Tasarım esnasında, hatalardan, yanlış kararlardan veya gereksiz olduğuna karar verilen
aşamalardan proje ayıklanır. Ayıklama operasyonu ne kadar tasarımın başında olursa
aksamalarda da o kadar az olur. Bu da tasarım esnasında, aşamalara arasında kuvvetli
bir geri beslemenin (feedback) sağlanması ile mümkündür.
Şekil 6.2’de tasarımın değişik evrelerinde tasarım işlevleri ve tanımlamaları gösteriliyor.
Evreler arasında katı bir bağımlılık yok. Fakat projenin yönetimini kolaylaştırmak ve
tasarım evrelerini görünür kılabilmek için evreleri iyi tanımlamalıyız. Şekil 6.2’deki evreler
birbirlerini takip eden evreler veya işlemlerdir (process). Ama gerçekte tasarım
işlemlerinden bazıları paralel olarak gerçekleşir. Dolayısıyla işlemler, büyük bir yazılım
için, belli bir sırada yazılımın bütün parçalarını gösterirler.
.
r
g
Ö
Sistem Analizi ve Yazılım Tasarımı
38
Öğr. Gör. Mustafa AKSU
)
Ü
ĐHTĐYAÇ
TANIMLARI
Soyut
Tanımlar
Mimari
Tasarım
Sistem
Mimarisi
U
S
K
Ara Yüz
Tasarımı
Ara Yüz
Tanımları
Bileşenlerin
Tasarımı
Yazılım
Tanımları
Şekil 5.2: Tasarım işlemleri ve aralarındaki ilişkiler
fa
a
t
s
Bileşenlerin
Tanımları
r
ö
G
.
Ö
r
g
Sistem Analizi ve Yazılım Tasarımı
39
Veri Yapısı
Tasarımı
Algoritma
Tasarımı
A
u
M
.
.
S
.
(K
Öğr. Gör. Mustafa AKSU
Veri Yapısı
Tanımları
Algoritma
Tanımları
Şekil 6.2’deki aktiviteleri inceleyelim.
Mimari tasarım: Alt-sistemleri birleştirerek sistem oluşturulur. Alt-sistemlerin birbirleri ile
ilişkilerini ve sistem içindeki yerinin belirlenmesi. Bütün bunların dokümantasyonu.
Soyut tanımlar: Her bir alt-sistemin, işlevini gerçekleştirmesi esnasındaki sınırlarının
belirlenmesi, sunduğu servisin soyut tanımlarının yapılması.
Arayüz tasarımı: Her bir alt-sistemin, diğer alt-sistemler ile olan ara yüzlerinin tasarımı ve
dokümantasyonu.
Bileşenlerin tasarımı: Servisler farklı bileşenlerden oluşurlar. Bu bileşenlerin tasarımı ve her
birinin ara yüzlerinin tasarımı.
Veri yapısı tasarımı: Sistem uyarlanmasında kullanılacak veri yapısının detaylı ve açıkça
belirtilmiş bir şekilde tasarımı.
Algoritma tasarımı: Oluşturulan modüllerin oluşturulmasında kullanılacak algoritmaların
detaylı ve açıkça belirtilmiş bir şekilde tasarımı.
Bu aktiviteler her bir alt-sistem için tekrarlanır. Bunun sonucunda aşamaların her birinin
programlama dilindeki karşılıkları kolayca tespit edilir. Böylelikle sistemin dijital ortama
aktarımı sağlanır.
5.1.1.
U
S
Tasarım Metotları
K
A
Yapısal Metot:
Yapısal metotta, şekillerle ifade edilen detaylı bir dokümantasyonun hazırlanması en önemli
noktadır. Büyük ölçekli projelerde bu metodun kullanılmasında fayda vardır. Dikkatli
hazırlanan dokümantasyon, proje akışında karşılaşılması muhtemel bir çok problemin,
önceden tespit edilerek çözümlenmesini sağlar. Bu da proje maliyetinin aşağıya çekilmesine
önemli ölçüde katkı sağlar. Yapısal metodun daha öncede gördüğümüz gibi, işaretleme
hazırlığı, rapor formatı belirleme, kurallar belirleme ve tasarım rehberi hazırlama gibi bazı
faaliyetleri vardır. Yapısal metot birçok modelin kısmî veya bütün olarak destekler. Bunlar;
• Veri akış modeli: Sistemdeki verilerin akış diyagramları,
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
•
Varoluş-Bağlantı modeli: Mantıksal veri yapısının tanımlanması,
•
Yapısal model:
hazırlanması,
•
Nesne Tabanlı: Nesneler diğer nesnelerden oluşmaktadır.
Sistem
bileşenleri
ve
etkileşimlerinin
dokümantasyonunun
Matematiksel Metot:
Bu metodun stratejisi, uygulayıcısına bağımlı kalmadan, aynı sonuca ulaşabilmektir. Başka
bir değişle, tasarımcılar aynı verilerden hareket ederlerse, aynı sonuca ulaşırlar. Bu da,
takip edilen yolun detaylı belirlenmesi ve geçmiş tecrübelerin somutlaştırılarak sunulması ile
olur. Tasarımcı üretkenliğini hazır sunulan seçenekler içinde tercih yapmakta kullanır.
.
r
g
Ö
5.1.2.
Tasarım Tanımlama
Yazılım tasarımı, yaşadığımız dünyadaki herhangi bir sistemin varlık nedeni ve ilişkilerinin
tanımlanması demektir. Bu değişik şekillerde yapılmaktadır. Tasarımın temelinde iyi bir
dokümantasyon hazırlanması vardır. Dokümantasyon hazırlanmanın da en önemli noktası
kullanılan notasyondur. Temelde üç değişik notasyon kullanılır:
• Grafik Notasyon
•
Program Tanımlama Dili (PDL)
•
Đnformal Metinler
Çoğu zaman, yazılım tasarımı dokümantasyonlarında bu üç notasyon şekli de kullanılır.
5.2.
Tasarım Stratejileri
Temelde iki adet tasarım stratejisi vardır.
1. Fonksiyonel Tasarım
2. Nesne Yönelimli Tasarım
Sistem Analizi ve Yazılım Tasarımı
40
Öğr. Gör. Mustafa AKSU
5.2.1.
Fonksiyonel Tasarım:
•
Fonksiyonel bakış açısı temelli tasarım
•
Sistemin merkezileştirilmesi
•
Belli bir durum için uygulanan fonksiyon bilgisinin, sistem içindeki diğer durumlar
içinde paylaşılabilir olması
5.2.2.
Nesne Yönelimli Tasarım
•
Sistem, nesneler temel alınarak tasarlanır.
•
Sistem, merkezileşmeden uzak, nesnelerin yönetimi kendilerine özgüdür.
•
Nesneler tanımlanan kendi durum ve işlevlerine özgü niteliklere sahiptirler.
•
Nesneler aynı durum ve işlevlere sahip diğer nesnelerle aynı sınıftadırlar. Buna
nesne “class”ı denir.
•
Nesneler karşılıklı mesajlar ile haberleşirler. (Pratikte bir nesne bir başka nesneyi
içeren bir procedure çağırır.)
U
S
5.3.
Tasarım Kalitesi
K
A
Anlaşılabilirlilik: Tasarımın anlaşılabilirliliğini, yazılım kalitesi için en önemli kriter olarak
alabiliriz. Anlaşılabilirliği etkileyen faktörler şunlardır.
• Birleştirme ve kavrama: Sistemin her hangi bir bileşeninin kendi başına bir anlam
ifade etmesi.
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
•
Đsimlendirme: Tasarım esnasında kullanılan isimlendirme metodumuz, verilen
isimlerin manalı isimler olması.
•
Dokümantasyon: Tasarımı detaylı bir şekilde anlatan doküman.
•
Karmaşıklık: Algoritma yapısının detaylı anlatılması.
Adapte edilebilirliliği: Yazılımın adapte edilebilirliliğini gösteren en iyi ayraç, yazılımda
rahatlıkla iz sürülebilmeli. (traceability)
.
r
g
Ö
6.1.
6. Mimari Tasarım
Tanım
Sistemin alt sistemlerinin tanımlanması, kontrollerinin oluşturulması ve iletişimlerinin
sağlanması, mimari tasarım diye adlandırılır.
Mimari tasarımda muhtemel olması gereken aktiviteler şunlardır.
1. Sistem Şekillendirilmesi: Sistemin alt sistemlerinin oluşturulması.
2. Kontrol Modelleri: Sistem içindeki ilişkilerin kontrolünün modellenmesi.
3. Modüler Yapının Oluşturulması: Alt sistemlerinde modüllere bölünmesi.
Soru 1: Alt sistem ile modül arasındaki fark nedir?
6.2.
Sistem Şekillendirme
Bu bölümde standart üç modelden bahsedeceğiz; ambar modeli (repository model), istemci
- sunucu modeli (client-server model) ve soyut makine modeli (abstract machine model).
6.2.1.
Ambar Modeli
a) Bu modelde, sistem ortak kullanılan bir veri tabanı üzerine kurulur.
b) Paylaştırılan veri bir yerde tutulur.
Sistem Analizi ve Yazılım Tasarımı
41
Öğr. Gör. Mustafa AKSU
c) Uygulamada üretilen veri ilgili bir alt-sistem tarafından üretilir, ortak veri
tabanına aktarılır ve diğer bütün alt-sistemlerde buradan veriyi kullanırlar.
6.2.2.
Đstemci – Sunucu Modeli
a) Sistem dağınık bir yapıdadır.
b) Belli bir sayıdaki sunucu diğer alt sistemler için hizmet üretir.
c) Đstemci sayısı bellidir.
d) Ağa girişler istemciler tarafından yönlendirilirler.
6.2.3.
Soyut Makine Modeli
a) Alt-sistemlerin aralarındaki arayüzler ile ilgili bir modellemedir.
b) Katmanlar arasındaki organizasyonu sağlar.
U
S
c) Her bir katman bir servis sunar.
d) Her katman soyut makinenin bir seviyesini oluşturur.
K
A
Açık sistem bağlantılarını (Open System Interconnection - OSI) örnek olarak ele alalım.
• Standart ağ iletişimini tanımlayalım.
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
•
En alt katmanlar fiziksel olarak birbirlerine bağlıdır.
•
Orta katmanlar veri transferi ile ilgilidir.
•
Üst katmanlar mantıksal bir anlamı olan uygulamaların olduğu yerler.
6.3.
Kontrol Modelleri
Bir sistemin çalışabilmesi için, sistemin alt-sistemlerinin doğru çalışıp çalışmadığı kontrol
edilmelidir. Başka bir değişle, sunduğu hizmet doğru zamanda, doğru yerde olmalıdır.
Bunun sağlanabilmesi için iki temel yaklaşım vardır.
• Merkezileştirilmiş Kontrol: Bir alt sistem bütün kontrolden sorumlu olur. Diğer
sistemleri başlatır ve durdurur.
•
Olay-Tabanlı Kontrol (Event-Base Control): Her alt-sistem, kendi dışında üretilen
ve kendisi ile ilişkisi olan her olayın kontrolünden sorumludur.
.
r
g
Ö
6.4.
Modüler Ayrışma
Modül bir alt-sistemden daha küçük parçadır. Dolayısıyla alt-sistemler modüllere ayrılırlar.
Bir alt-sistem, veri akış modeli (data-flow model), başka bir değişle fonksiyon temelli model
veya nesne yönelimli modele (object oriented model) göre modüllere ayrılırlar.
6.4.1.
Nesne Yönelimli Tasarım
Nesne Yönelimli Tasarım (N.Y.T.), bir yazılımda kullanılan nesnelerin birbirleri ile iletişimini
içerir. Nesneler;
1. Sahip oldukları durumlarını korurlar. Genel yapı ile paylaşmazlar.
2. Her bir nesne tipi bir hizmet sağlar.
3. Bağımsıdırlar. Kolayca değişebilirler.
değişmek zorunda değildirler.
Diğer
nesnelerde
olan
değişimlerde,
4. Paylaşılan veri alanı yoktur. Nesnelerin iletişimi ile sağlanan veri hizmetlere
aktarılır. Bundan dolayı paylaşılan verinin kontrol problemi yoktur.
Sistem Analizi ve Yazılım Tasarımı
42
Öğr. Gör. Mustafa AKSU
6.4.1.1.
Nesneler, Nesne Sınıfları ve Mirasları
•
Nesne belli bir duruma sahip ve o duruma uygun bir çok operasyonunu çalıştıran
bağımsız bir varlıktır. Durum nesnenin niteliklerini gösterir.
•
Đşlem yapılması gerektiği zaman, ilgili nesne diğer bir nesneden alacağı bir uyarı
ile sağlayacağı hizmeti sunar.
•
Nesneler bir nesne sınıf tanımı üzerinden oluşturulur.
•
Nesne sınıfı, bir grup nesnenin, ortak nitelikleri ve hizmetleri veya işlemleri ki,
her bir nesne tarafından sağlanan, üzerinden tanımlanır.
•
Nesneler oluşturulduğu zaman, kendi sınıfının özelliklerini ve işlemlerini kalıtsal
olarak alırlar.
•
Nesne sınıfları da nesnedirler.
niteliklerini kalıtsal olarak alırlar.
•
Önemli bir soru, N.Y.T. nesneyi nasıl tanımlar? Đki temel yaklaşım vardır.
Bundan
dolayı,
onlarda
ebeveyn
sınıfının
U
S
o
Doğal dil yapısına benzetme: Nesne ve nitelikleri isim; Đşlemler ve
hizmetler ise fiildir.
o
Davranışsal yaklaşım: Tasarımcı sistemin bir çok farklı bileşenini alır,
onlar arasında etkileşim sağlar ve ayrıca başlangıç şartlarını ve ele
aldığı
bileşenlerin
davranışlarını
iyi
düşünüp,
değerlendirir.
Tasarımcılar, bileşenleri, aldıkları anlamlı roller ile nesne olarak
onaylar.
6.4.2.
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Fonksiyon Yönelimli Tasarım
Bu tasarım metodolojisi, sistemi bir grup fonksiyona göre ayrıştırır. N.Y.T.in tersine
fonksiyonlar, belli ortak durumlara sahip olduklarında birbirlerinden bağımsız değildirler.
• Var olan durumdaki bir değişme diğer fonksiyonların davranışlarını da
etkileyebilir.
•
Ortak veri alanları vardır. Bakımları yapılmak zorundadır.
•
Oldukça eski bir metodolojidir fakat mükemmel değildir.
•
Fonksiyon yönelimli tasarımdaki aktiviteler;
g
Ö
r.
o
Veri-Akış tasarımı: Veri fonksiyondan nasıl geçer,
o
Yapısal ayrıştırma: Fonksiyonun modüllere göre ayrışması,
o
Detay tasarım tarifleri: Varlık tanımı (veri yapısı gibi), fonksiyonlar
arası arayüz, vs.
Sistem Analizi ve Yazılım Tasarımı
43
Öğr. Gör. Mustafa AKSU
U
S
.
r
g
Ö
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
Sistem Analizi ve Yazılım Tasarımı
44
K
A
Öğr. Gör. Mustafa AKSU
1. GEREKSĐNĐMLERĐN YÖNETĐMĐ
Gereksinimlerin yönetiminin amacı, projenin müşterinin belirttiği ihtiyaçları
tamamıyla karşılayacak bir biçimde oluşturulmasıdır. Bu noktada önemli olan, amacı
gerçekleştirirken zaman ve maliyet açısından da en az çabanın sarf edilmesidir.
Şunu unutmamak gerekir ki insanlar
değiştirilebilirler ve gereksinimleri de değişebilir.
doğalarının
bir
gereği
olarak
fikir
Açıklamaları dikkate alarak daha detaylı olarak bakacak olursak, gereksinimler
yönetimi, tartışmalarla, raporlarla, iyi bir müşteri yönetimiyle birleşen ve neyin yazıya
dökülüp neyin dökülmediğini, gereksinimlerin analizi, değişiklikleri, geçerlilikleri gibi
konuları kapsayan bir süreçtir. Bu süreçte en önemli nokta yazılım geliştirici, kullanıcı,
müşteri tarafların üzerinde anlaşabildiği, doğru bir yazılım gereksinimleri dökümanı
hazırlamaktır. Bu gereksinimler dökümanı, yazılım geliştirme çabasının kapsamını ve yazılım
tasarımının, gerçekleştiriminin, testinin temelini oluşturur.
U
S
GEREKSĐNĐMLER
Yazılım
Gereksinimleri
Belirtimleri
Yazılım
Test
Planları
Kullanıcı
Belgeleri
Yazılım
Tasarım
Belirtimleri
.
r
g
Ö
Yazılım
Test
Yordamları
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Donanım
Gereksinimleri
Belirtimleri
Donanım
Test
Planları
Donanım
Test
Yordamları
Kod
Donanım
Tasarım
Belirtimleri
Donanım
Şekil-1.1 Gereksinimlerin Dokümanı Hiyerarşisi
Gereksinimlerin yönetiminin amacı, müşteri ve yazılım projesi tarafından belirlenen
müşteri gereksinimleri üzerinde ortak bir anlayış/bakış açısı sağlamaktır.
Müşteri ve geliştiriciler arasında oluşturulan anlaşmaya “yazılıma atanmış sistem
gereksinimleri” denir. Anlaşma teknik ve teknik olmayan konuları kapsar. Anlaşma, yazılım
projesinin tahminleme, planlama, gerçekleştirme gibi yazılım yaşam döngüsünün
aşamalarına temel oluşturur.
Sistem gereksinimlerinin yazılıma, donanıma, diğer sistemlere dağıtılması, dış
uzmanlar tarafından(sistem mühendisleri grubu) yapılabilir ve yazılım mühendisliği
Sistem Analizi ve Yazılım Tasarımı
45
Öğr. Gör. Mustafa AKSU
grubunun bu dağıtımda hiçbir şekilde söz hakkı olmayabilir. Proje sınırları içinde, yazılım
mühendisliği grubu, yazılıma atanan sistem gereksinimlerinin düzenli olarak kontrolünden
ve raporlanmasından sorumludur. Bu süreç de gereksinimlerin yönetimi ile başarıya ulaşır.
Sorumlu olunan kontrol ve raporlamanın başarıya ulaşabilmesi için, grup
başlangıçtaki ve değişikliğe uğrayan gereksinimleri inceler. Gereksinimlerin değişmesiyle
birlikte, etkilenecek olan yazılım planları, ürünleri, aktiviteleri değişen gereksinimleri
karşılayacak bir şekilde değiştirilir.
Son Kullanıcı Girdileri
Yeni Özellikler
Gereksinimler
Pazarlama
U
S
Tasarım
Yeni Gereksinimler
Kodlama
Karar
Aşaması
Yanlışlar
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Test
Test Girdileri
Bakım
Teknik Servis
Değişim Đhtiyacı
.
r
g
Ö
Şekil-1.2 Değişimlerin Yönetimi ve Gereksinimlerin Yönetimi
Buradan, gereksinimlerin yönetimindeki ilk adımın gereksinimlerin tanımlanması
–son kullanıcıdan gereksinimleri almak- olduğunu çıkarabiliriz. Eğer gereksinimler daha
önceden iş teklifi, iş anlaşması şeklinde ortaya konulduysa, yapılması gereken
gereksinimleri çıkarmak değil, sadece gereksinimlerin proje başlamadan önce detaylarını
belirlemek ve resmi bir formata sokmak olacaktır. Eğer gereksinimler belirsiz ise,
“gereksinimlerin tanımı” aşaması çok fazla analiz ve çalışma gerektirecektir.
Ayrıca, müşterinin ne istediği hakkında olabildiğince fazla bilgi elde etmek
gerekecektir. Đlk önce sistemin ne yapacağını belirleyecek olan kullanıcılar ve müşteriler
belirlenerek, bu kişilerle konuşarak onların tam olarak ne istediklerinin anlaşılmasına
çalışılmalıdır. Bunu yaparken, konuşma esnasında akla gelmeyen, gizli kalmış gereksinimler
ortaya çıkacaktır. Bu gizli gereksinimler, büyük ihtimalle konuştuğunuz kişinin alanında çok
açık şekilde bilinen ve gereksinim olarak söylenmeye ihtiyaç duyulmamış konular olacaktır.
Gereksinimlerin toplanmasında başka yollar da mevcuttur. Eğer yeni sistem var olan
bir sistemin yerine geçecekse, eski sistem ve dökümantasyonu incelenebilir. JAD (Joint
Application Design) Birleşik Uygulama Tasarımı toplantıları düzenlenebilir. Bu toplantılar
geliştiriciler ile müşterilerin tutarlı yapısal bir toplantı süreci içinde birlikte sistem tasarımı
yapmalarına dayanmaktadır. Prototipler, müşterinin erken bir zamanda ne elde edeceğini
görmesini sağlayacaktır.
Sistem Analizi ve Yazılım Tasarımı
46
Öğr. Gör. Mustafa AKSU
Gereksinimlerin toplanmasındaki önemli noktalar;
Gereksinimlerin detaylı bir şekilde analiz edilmesi
Gereksinimlerin birbiriyle uyumlu olması
Gereksinimlerin tutarlı, gerçekçi olması
Đzlenebilirlik matrisi, tüm gereksinimlerin sistem bileşenlerine atandığını
doğrulamaya yarar. Matris aynı zamanda gereksinimlerin kaynaklarını da gösterir.
Đzlenebilirlik matrisi, bir değişiklik olduğunda tüm gereksinimlerin karşılanacağını garanti
eder. Etkilenen bileşenlerin kolayca belirlenebilmesi, değişen gereksinimlerin sistem
üzerindeki etkisinin belirlenmesi, maliyetin tahmini, zaman çizelgelerinin hazırlanması gibi
konularda kolaylık sağlar.
Bu aşamalardan sonra elde edilecek olan gereksinim tanımlanma raporu, sistem
tarafından sağlanacak fonksiyonlar, performans gereksinimleri, tasarım ve gerçekleştirim
kısıtlamaları gibi teknik konuları; hangi ürünlerin teslim edileceği, ürünlerin teslim tarihleri,
ara raporlar gibi teknik olmayan konuları içermelidir.
U
S
Gereksinimlerinin yönetiminin önemli amaçlarından biri olan gereksinimlerin tanımı raporu
şu özelliklerde olmalıdır:
• Doğru
• Tamamlanmış, eksiksiz
• Tutarlı
• Kısa
• Đyi düzenlenmiş
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Bu aşamadan sonra, gereksinimlerin yönetiminin bir parçası olan gereksinimleri izleme
sürecinde, değişikliğe uğrayan gereksinimler geliştirici grup ve müşteri tarafından karşılıklı
onaylanmalıdır.
PROBLEM ALANI
Đhtiyaçlar
.
r
g
Ö
Özellikler
Đzlenebilirlik
Yazılım
ÇÖZÜM ALANI
Test Yordamları
Tasarım
Kullanıcı Belgeleri
Şekil-1.3 Gereksinimlerin Yönetimi Yapısı
Sistem Analizi ve Yazılım Tasarımı
47
Öğr. Gör. Mustafa AKSU
Gereksinimlerin yönetimindeki en önemli noktalar:
Gereksinimlerin planlanması aşaması
Gereksinim sürecini kurma aşaması
Gereksinimlerin değişimini kontrol etmek
Yeni gereksinimlerin eklenmesini en azda tutmak
Takip süreci
Müşteri ve geliştirici arasındaki sorunları çözmek
Belirli aralıklarla gereksinimleri gözden geçirmek
1.1. NEDEN GEREKSĐNĐMLERĐN YÖNETĐMĐ?
Bu soruyu verilecek en güzel yanıt şudur: “Tahminlerinizden çok, müşterinin istekleri
doğrultusunda bir yazılım üretebilmek için”.
Belirsizlik, tüm proje risklerinin kökünü oluşturur. Belirsizliğin büyük bir bölümünü
de yetersiz gereksinimler analizi oluşturur. Gereksiz veya tekrarlanmış gereksinimler,
projenin kapsamının, maliyetinin ne olacağının belirlenmesini engeller. Dahası, projeyi
durdurma noktasına getirir.
U
S
K
A
Gereksinimlerdeki eksikleri gidermek, tasarım sırasında 10 kat, gerçekleştirim
sırasında ise 100 kat daha fazla maliyettedir.
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
Đyi Gereksinim Yönetimi Nedir?
• Gereksinimlerin takibi, analizi için kullanıcı merkezli, organize bir yaklaşımdır.
• Gereksinimlerin nasıl ele alınacağını ve gereksinimlerin yönetimi planını kapsar
- Kimler nasıl iş ile ilgili olacak?
- Gereksinimler ile ilgili hangi bilginin bakımı yapılacak?
- Yeni gereksinimlerle karşılaşılınca hangi süreç izlenecek?
• Ek gereksinimlerin belirlenmesinde proje özellikleri de göz önüne alınmalıdır
Başarılı bir proje dikkatlice oluşturulmuş ve belgelendirilmiş gereksinimlerle başlar. Đyi
oluşturulmuş bir gereksinimlerin yönetimi süreci proje takımına tüm projeler boyunca
yardımcı olur.
.
r
g
Ö
2. YAZILIM KALĐTE GÜVENCESĐ
Giriş
Her yazılım geliştirme veya yazılım bakım projesi kalite güvence aktivitesi içerir.
Programcı farkında olmasa da, tek kişilik yazılım geliştirme projeleri bile kalite güvence
aktiviteleri içerir. Her programcının, kodun nasıl yazılması gerektiği hakkında bir düşüncesi
vardır ve bu düşünce tarzı o programcı için bir kodlama standardı olarak iş görür.
Benzer olarak, herkesin bir belgenin nasıl yazılması gerektiği hakkında fikirleri
vardır. Bu, kişisel bir standarttır. Đnsanlar, sahip oldukları bu standartlara göre belgeleri
gözden geçirirler. Aynı şekilde, programcılar da programlarının kendi standartlarına uygun
olup olmadığını anlamak için gözden geçirirler. Bu çalışmalara KG (Kalite Güvence)
incelemeleri denir.
Bir projenin resmi KG programı, her takım üyesinin yaptığı KG aktivitelerini içerir.
Fakat bu aktiviteleri kişi bazında değil de, proje azında KG planları olarak ele alır.
KG planlarının uzunluğu, detaylılığı projeye ve projenin risklerine göre değişir.
Sistem Analizi ve Yazılım Tasarımı
48
Öğr. Gör. Mustafa AKSU
Taşınabilirlik (Başka bir
bilgisayarda kullanabilir
miyim?)
Yeniden kullanılabilirlik (Aynı
yazılımı tekrar kullanabilir
Bakım (Sorun çıktığında
düzeltebilir miyim?)
Esneklik (Değiştirebilir
miyim?)
Test edilebilirlik (Test edebilir
YAZILIM KALĐTE
GÜVENCE YAPISI
Doğruluk (Đstediğim işi mi
yapıyor?)
Güvenilirlik (Her zmaan doğru
mu çalışıyor?)
Verimlilik (Donanımımda en
iyi şekilde mi çalışıyor?)
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
U
S
K
A
Kullanılabilirlik (Yazılım, kullanıcı için
2.2. KG Kavramları ve Tanımları
Kalite Güvence, yazılım yordamlarının ve ürünlerinin “gereksinimlere, standartlara”
uygunluğunu belirleyen planlı ve sistematik çalışmalardır.
.
r
g
Ö
Yazılım Kalite Güvencesi, yazılım geliştirme süresince her adımda uygulanan
bir şemsiye etkinliktir.
Gereksinimlerin düzgün olarak saptandığını ve ürünlerin, servislerin belirli
standartlarda olduğunu kanıtlayan planlı ve sistematik bir dizi aktivitelerdir.
Süreç, Tasarım, geliştirme, genişletme, yazılım bakımı aktivitelerini kapsar.
Ürün, yazılımı, ilgiyi veriyi, belgeleri ve tüm raporları kapsar.
KG, yazılım geliştirme süreci yaşam döngüsü boyunca standartların ve yordamların
uygulandığını ölçen süreci de kapsar.
Standartlar, yazılım ürünlerinin karşılaştırıldığı kriterlerdir.
Yordamlar, geliştirme ve kontrol süreçlerinin karşılaştırıldığı kriterlerdir.
Gereksinimlere, standartlara, yordamlara uygunluk, izleme, test yapma, inceleme,
değerlendirme ile ölçümlenir.
Yazılım geliştirme yaşam döngüsündeki üç destekleyici aktivite yönetim,
mühendislik, kalite güvencesidir.
Yazılım Yönetimi, planlama, kontrol yazılım projesini yönlendirme aktivitelerini kapsar.
Sistem Analizi ve Yazılım Tasarımı
49
Öğr. Gör. Mustafa AKSU
Yazılım Mühendisliği, gereksinimlerin analizi, tasarım geliştirme, kodlama, veritabanlarını
yaratma aktivitelerini kapsar.
KG, yönetim ve mühendislik aktivitelerinin tüm gereksinimleri karşıladığını garanti eder.
2. 3 Kalite Güvence Hedefleri
Yazılım geliştirme, diğer tüm karmaşık geliştirme aktiviteleri gibi risklerle doludur.
Bu riskler, teknik veya program ile ilgili olabilir. Bu da, yazılımın beklenildiği gibi olmasını
engelleyebilir.
KG’nin hedefi, bu riskleri azaltmaktır. Örneğin, kodlama standartları yazılan kod
kalitesini belirli bir seviyede tutmak için gereklidir. Eğer herhangi bir standart yoksa, oluşan
kodun, yeniden kullanılabilirlik ile ilgili gereksinimlere uygun olmaması riski vardır ve bu da
kodun üstünde tekrar çalışma yapmayı gerektirir.
KG süreci, riskleri azaltmak ve ürünün kalitesinin garantilenmesi için yapılması zorunlu bir
süreçtir. Hiç bir KG sürecinin olmaması, kabul edilemez bir kodun oluşma riskini arttırır.
U
S
2. 4 Kalite Güvence Takımı
K
A
KG’nin, ayrı, bağımsız bir takım tarafından ele alınması gerekir. KG fonksiyonları en
iyi, mühendislik ve yönetimden ayrı bir KG test ortamında yapılabilir. Yönetimsel olarak, KG
üst müdürlere ve proje yöneticisine raporlar verir.
Ayrı bir takım gerekmesinin nedeni, geliştirme sürecinde standartlara uyulduğunu
garantileyen, yönetimin sağ kolu olmasındandır. Eğer KG ayrı olmazsa, gerçekçi bir sonuç
elde edilemez. Ayrıca, testlerin tasarım veya kodlama detayları tarafından etkilenmediğini,
gereksinimlere göre yapıldığını garanti eder.
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
Sadece KG aktiviteleri ile ilgilenen takım geliştirme takımına göre daha küçüktür
ama sadece KG sorumluluğuna sahip bir takımın bulundurulmasının çok faydası vardır.
Yazılım
Proje
Yöneticisi
.
r
g
Ö
Proje
Yöneticisi
Proje
Yöneticisi
Kalite
Yöneticisi
Proje
Takımı
Proje
Takımı
Kalite
Güvence
Takımı
Şekil 2.2 - Yazılım Kalite Güvence Takımının Yeri
Sistem Analizi ve Yazılım Tasarımı
50
Öğr. Gör. Mustafa AKSU
2.5. KALĐTE GÜVENCE AKTĐVĐTELERĐ
2.5.1 Planlama
a) Kalite Güvencesini Projeye Uygun Hale Getirmek
b) Kalite Güvence Planını Yaratmak
c) Test-Durumu Yaratma
d) Standardları ve Yordamları Saptama
i) Belgeleme standardları
ii) Tasarım standardları,
iii) Belgelenmiş yordamlar
e) Tamamlanma Ölçütlerini Saptama
f) Standardlar ve Yordamları Denetlemek
g) Ürünleri ve Yordamları Đzleme, Kontrol Etme
U
S
h) Doğrulama ve Geçerlilik Đzleme
2.5.2 KG Testleri
Yazılım testleri ürünün
olduğunu/olmadığını belirler.
K
A
tamamlandığını/tamamlanmadığını
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
ve
dağıtıma
hazır
2.5.2.1 KG Testlerinin Hedefleri
Müşteriye verilecek olan ürünün kalitesini belirlemek
Tam olarak bir test yaşam döngüsünü tasarlamak, birleştirmek, çalıştırmak
Son ürünün tüm fonksiyonel yeteneklerini kontrol etmek
Son ürünün kararlılığını ve performansını test etmek
Ürünlerin müşteri beklentilerine ve gereksinimlerine uygun olup olmadığını test etmek
Kodu hatalara karşı test etmek, doğrulamak
2.5.2.3 Đyi Bir KG Testi Nasıl Yapılır?
.
r
g
Ö
Şunu unutmamak gerekir ki tüm testler, son ürünün müşteri beklentileri ve
gereksinimleri ile karşılaştırılarak yapılacaktır. Bu yüzden gereksinimler, gerektiğinde
değiştirilmelidir ve yazılımın tüm fonksiyonlarını göstermelidir. Beklenti dışı her fonksiyon
hata olarak var sayılacaktır.
2.5.3 Kalite Güvence Testleri
2.5.3.1 Birim Testi
Birim test durumları programın doğruluğunu ölçmek için kullanılır. “Beyaz kutu testi”
programın modüllerini ve süreçleri test eder. Bu testte programın fonksiyonelliği değil de
kod yapısı incelenir. Bunu başarabilmek için, bir durum tekniği kullanılır:
1. Programdaki her ifade test süresince en az bir kez doğru veya yanlış değer almalıdır.
2. Test süresince her durum olası sonuçların hepsini göstermelidir
2.5.3.2 Yapılandırma Yönetimi
Yapılandırma yönetimi takımı test ortamını hazırlar.
Sistem Analizi ve Yazılım Tasarımı
51
Öğr. Gör. Mustafa AKSU
2.5.3.3 Versiyon Doğrulama
Bir versiyon tamamlanma ölçütünü sağladığında ve test edilmeye hazır olduğunda,
KG takımı bu versiyonu test eder.
Eğer versiyon test edilemezse, KG takımı bu versiyonu reddeder
Eğer bazı parçaları test edilebilirken bazı parçaları henüz hazır değilse, KG takımı, proje
yöneticisi ile birlikte yeni bir zaman çizelgesi hazırlar.
2.5.3.4 Tamamlanma Testi
Tamamlanma testi, sistemin tüm parçalarının birbiriyle düzgün haberleştiğini ve veri
akışının doğru yapıldığını test eder. Son tamamlanma testi, sistem bir bütün olarak
çalışabildiğini gösterir.
2.5.3.5 Fonksiyonel Test
U
S
Fonksiyonel test, sistemin her elemanının gereksinimleri karşılamakta olduğunu,
sistem tasarım belirtimlerine, diğer fonksiyonel özelliklere uyumlu olduğunu gösterir.
2.5.3.6 Fonksiyonel Olmayan Test
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Fonksiyonel olmayan test, tüm belgelenmiş standartlara ve gereksinimlere
uygunluğu gösterir. Örneğin, cevap zamanı, diğer sistemlerle uyumluluk.
Eğer sistem donanımında sistemin belirli miktar eri trafiğine izin verdiği belirtilmişse, bu
durumlar da test edilmelidir.
2.5.3.7 Hata Düzeltme Doğrulama
Eğer geliştirme esnasında hatalar bulunup düzeltildiyse, KG bu bölümlerdeki
düzeltmelere ayrıca test uygular.
2.5.3.8 Anlık Test
Bu tip testler gerçek kullanıcı senaryolarını canlandırmada kullanılır. KG
mühendisleri, kullanıcın yapacağı davranışları yaparak sistemi test ederler. Örneğin sayfa
tam yüklenmeden “ileri” tuşuna basmak gibi.
.
r
g
Ö
2.5.3.9 Gerileme Testi
Gerileme testi, her yeni versiyon yayınlandıktan sonra, yeni versiyonun eski
versiyonlar üzerinde kötü etki bırakıp bırakmadığını ölçmeye yarar. Gerileme testi, projede
devamlı bir artmalı ilerleme olduğunu gösterir.
2.5.3.10 Hata Yönetimi
KG test aşamasında, tüm hatalar hata yönetimi iş akışı ile takıma sunulur. Takım
içinde düzenli toplantılar yapılır.
2.5.3.11 Kalite Güvence Raporu Hazırlama
Bu raporlar test sonuçlarını, bilinen hataları, önerilen çözümleri içerir.
Sistem Analizi ve Yazılım Tasarımı
52
Öğr. Gör. Mustafa AKSU
3. YAZILIM YAPILANIŞI YÖNETĐMĐ
GĐRĐŞ
Bir sistem, belirli fonksiyon ya da fonksiyonları yerine getiren bileşenler topluluğu
olarak tanımlanabilir. Bir sistemin yapılanışı yani konfigürasyonu ise sistemin donanım,
bellenim (firmware), yazılım karakteristiklerinin ve fonksiyonlarının tanımlanmasıdır. Ayrıca,
belirli bir amaca yönelik olarak yazılım, donanım ve bellenim öğelerinin belirli
versiyonlarının bir araya getirilmiş bir topluluğu olarak da düşünülebilinir.
Yukarıdaki açıklamaları dikkate alırsak, "Yapılanış Yönetimi (YY), sistem yaşam
döngüsü boyunca bir sistemin yapılanışını belirgin noktalar ile tanımlayan, değişiklikleri
sistematik olarak kontrol eden, yapılanışın bütünlüğünü ve izlenebilirliğini sağlayan bir
disiplindir." diyebiliriz.
U
S
Yapılanış Yönetimi (YY) resmi tanımı:
"Bir yapılanış öğesinin fonksiyonel ve fiziksel karakteristiklerini tanımlayan ve
belgeleyen,
bu karakteristiklerin değişimini kontrol eden, değişim sürecini ve gerçekleştirim durumunu
kaydeden ve denetleyen, belirlenmiş gereksinimlerle uyumluluğunu doğrulayan bir
disiplindir."
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Not: Donanım yapılanış yönetimi ile yazılım yapılanış yönetimi arasında farklar olsa da,
yapılanış yönetimi kavramları ikisine de aynı şekilde uygulanır.
3.1. YAZILIM YAPILANIŞI AKTĐVĐTELERĐ
Yazılım yapılanışını, en iyi olarak aktivitelerini inceleyerek anlayabiliriz. Bu bölümde
yazılım yapılanışın aktiviteleri detaylı olarak ele alınacaktır.
Yazılımsal Yapılanış Yönetimi (YYY) aktiviteleri genel olarak şu şekilde belirlenmiş ve
dünyada bir standard olarak kabul görmüştür:
* "Yazılım Yapılanışı Yönetimi" sürecinin yönetimi,
* Yazılım Yapılanışı tanımlaması,
* Yazılım Yapılanışı kontrolü,
* Yazılım Yapılanışı durumu kontrolü,
* Yazılım Yapılanışı denetlenmesi,
* Yazılım yayım yönetimi ve dağıtımı
.
r
g
Ö
Sistem Analizi ve Yazılım Tasarımı
53
Öğr. Gör. Mustafa AKSU
Kod Yönetimi
Bakım Takımı,
Müşteri Desteği
Fiziksel ve
Fonksiyonel
Tamamlanma
Değişikliklerin
Yetkilendirilmesi
Kontrol - Yönetim
Durum
Kontrolü
Yazılım Yapılanışı
Yönetim ve
Planlaması
Denetleme
Yayım
Đşleme
Kontrol – Geliştirme
Takımı
Yapılanış Tanımlama
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
U
S
K
A
Şekil 3.1 – Yazılım Yapılanış Aktiviteleri
Şimdi şekilde görmüş olduğumuz parçaları tek tek inceleyeceğiz:
3.1.1. "Yazılım Yapılanışı Yönetimi (YYY)" Sürecinin Yönetimi
YYY, yazılım yaşam döngüsünü destekleyen, geliştirme ve bakım aktivitelerine,
projenin tamamına, son kullanıcılara, müşterilere yarar sağlayan bir süreçtir.
Yönetimsel bir bakış açısıyla bakarsak, "YYY, bir ürünün gelişimini, ürünün öğelerini
tanımlayarak, değişimi yöneterek, kontrol ederek, yapılanış bilgisini raporlayarak kontrol
eder." diyebiliriz. Geliştirici bakış açısıyla bakacak olursak, "YYY, geliştirmeyi ve değişimleri
gerçekleştirmeyi kolaylaştıran bir süreçtir." diyebiliriz. Başarılı bir YYY, dikkatli bir planlama
ve yönetimi içerir. Bu da, YYY sürecinin kurumsal kavramını, sınırlarını, kavramını anlama
ile sağlanabilir.
.
r
g
Ö
3.1.1.1. Kurumsal Yapı ile Đlişki
Bir proje için bir Yazılım Yapılanışı Yönetimi planlayabilmek için kurumsal yapıyı
kurum içi bölümler arası ilişkileri bilmek gereklidir çünkü YYY, bazı kurumsal birimlerle ve
aktivitelerle iç içe olacaktır.
YYY, yazılım kalite güvencesi, yazılım doğrulama gibi süreçlerle birlikte yaşam
döngüsünü destekleyen bir süreç olarak görülmektedir. Kurumsal birimler bu süreçlerin
düzgün olarak yapılandırılmasından sorumludurlar. Bazı YYY aktivitelerini gerçekleştirmek
başka kurumlara bırakılsa da, genel sorumluluk direkt olarak kurumun kendisinde olmak
zorundadır.
Yazılım sık olarak donanım ve bellenim elemanlarını da içeren büyük sistemlerin bir
parçası olarak geliştirilir. Bu durumda, donanım ve bellenim ile paralel bir geliştirme
yapılması zorunlu duruma gelmektedir. Đşte bu yüzden, kurumun birimleri bilinmelidir.
Yazılım Yapılanışı Yönetimi, Yazılım Kalite Güvence süreci ile yakından ilgilidir. Hatta
bazı projelerde, Yazılım Kalite Güvencesi'nin önkoşulu Yazılım Yapılanışı Yönetimi
olmaktadır. Buna bağlı olarak, YYY içinde bulunan bazı öğeler, yazılım kalite güvencenin de
öğeleri olabilecek kadar birbirleriyle ilgili olabilirler.
Sistem Analizi ve Yazılım Tasarımı
54
Öğr. Gör. Mustafa AKSU
Tabi ki en yakın ilişki, yazılım geliştirme ile yazılım bakım arasında olmaktadır.
Yazılım ortamı aşağıdakileri içerir:
* Yazılım yaşam döngüsü modeli ve planları,
* Proje stratejileri
* Yazılım tekrar kullanılabilirlik süreçleri
* Geliştirme platformları
* Yazılım geliştirme araçları.
Bu ortam, gördüğünüz gibi, aynı zamanda birçok yazılım yapılanış kontrolleriyle de ilgilidir.
3.1.1.2. Yazılım Yapılanışı Yönetimi Rehberi ve Kısıtlamaları
YYY kısıtlamaları ve rehberlikleri birçok kaynaktan gelmektedir. Bir projenin yazılım
yapılanış yönetimini, yapılan birçok anlaşma ve önceden var olan anlaşmalar kısıtlanabilir.
Buna ek olarak, müşteri ile yapılan kontratta da süreci etkileyici maddeler bulunabilir.
Örneğin, kontratta bazı yapılanış denetlemelerinin istendiği belirtilmiş olabilir ya da bazı
belirlenmiş öğeler yazılım yapılanışı yönetimine özel olarak bırakılmış olabilir. Bunlardan
başka, seçilen yazılım geliştirme metodolojisi de etkileyici bir faktör olabilir.
U
S
K
A
YYY rehberi, Yazılım Mühendisliği Enstitüsü'nün yayımlamış olduğu CMM ya da ISO
SPICE gibi standartlardan, süreçlerden elde edilebilir.
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
3.1.1.3. Planlama Aşaması
Yazılım Yapılanışı Yönetimi için yapılacak olan plan, kurumsal kavramlara,
kısıtlamalara ve rehberlere, projenin doğasına, yapısına uygun olarak hazırlanmalıdır.
Ele Alınan Planlama Adımları:
* Yazılım Yapılanış Tanımlamaları
* Yazılım Yapılanış Kontrolü
* Yazılım Yapılanış Durum Kontrolü
* Yazılım Yapılanış Denetlemesi
* Yazılım Yayım Denetimi ve Dağıtımı
Bunlara ek olarak, kurum, sorumluluklar, kaynaklar, zaman çizelgeleri, araç seçimi,
gerçekleştirim, ara yüz kontrolü gibi konular da planlama içinde değerlendirilir.
.
r
g
Ö
Planlama aktivitesinin sonucunda oluşan plan, Yazılım Yapılanış Yönetimi Planı olarak
adlandırılır. Bu plan, yazılım kalite güvencesi denetlemesi için bir kaynak olmaktadır.
3.1.1.3. Yazılım Yapılanış Yönetimi Organizasyonu ve Sorumlulukları
Yapılması gereken yazılım yapılanış yönetimi aktivitelerinin kimin yapacağını
karıştırmamak için, sorumluluklar, görevler tam olarak belirlenmek zorundadır. Belirli
yazılım yapılanışı yönetimi sorumlulukları ve görevleri, belirli kurumsal birimlere, kişilere
atanmalıdır. Yazılım yapılanışı yönetimi genel yetki mekanizması açıkça belirtilmelidir.
3.1.1.4. Yazılım Yapılanış Yönetimi Kaynakları ve Zaman Çizelgeleri
Yazılım yapılanış yönetimi planı, gerekli aktiviteleri yapabilmek için gerekli olan
arçları, grupları belirler. Görevlerin arasındaki ilişkileri ve sıralarını belirleyerek zaman
çizelgesi sorunlarını ortadan kaldırır. Gerekli olan herhangi bir eğitim de bu plan sayesinde
ortaya çıkar ve belirlenir.
3.1.1.5. Araç Seçimi ve Gerçekleştirim
Yazılım yapılanış yönetimi için, değişik özelliklerde araçlar mevcuttur. Đçinde
bulunulan duruma bağlı olarak bu araç özelliklerinin hangilerine ihtiyaç duyulduğu belirlenir
ve birden çok araç gerektiren durumlarda bu araçların kombinasyonu kullanılabilir.
Otomatik araçlar, büyüyen ve büyüdükçe karmaşıklaşan projelerde, büyük yarar
sağlarlar.
Sistem Analizi ve Yazılım Tasarımı
55
Öğr. Gör. Mustafa AKSU
Bu araçların destekledikleri konuları şöyle sıralayabiliriz:
* Yazılım Yapılanış Yönetimi Kütüphanesi
* Yazılım değişimi istekleri ve süreçleri
* Kod ve değişim yönetimi görevleri
* Yazılım yapılanış durumu raporlamaları
* Yazılım denetlemesi
* Yazılım build'leri oluşturmak
* Yazılım yayımlarını ve dağıtımlarını kontrol etmek.
Aşağıdaki şekilde, Yazılım Yapılanış Yönetimi Araçlarının yapabildikleri aktiviteleri ve
bunların Yazılım Yapılanış Yönetimi ile nasıl örtüştükleri gösterilmektedir.
Kod Yönetim Sistemi
Veritabanı Yönetimi Sistemleri, Kod
Yönetim Sistemi
U
S
Kütüphaneler,
Değişim Đstekleri
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
Kontrol - Yönetim
Durum
Kontrolü
Yazılım Yapılanışı
Yönetim ve
Planlaması
K
A
Yayım
Đşleme
Denetleme
Kontrol – Geliştirme
Takımı
Yapılanış Tanımlama
.
r
g
Ö
Değişikliklerin Kabulü
Denetleme Yordamları
Şekil 3.2 – Yazılım Yapılanış Yordamları ve Araçları
Yukarıdaki şekilde, kod yönetim sistemleri yazılım kütüphanelerinin çalışmasını
kütüphane elemanlarına erişimi kontrol ederek, birden çok kullanıcının aktivitelerini kontrol
ederek desteklemektedir. Diğer araçlar yazılım ve yayım belgeleri oluşturmayı
desteklemektedir. Bunlar dışındaki araçlar ise veritabanı yönetimi desteği, yönetim için
raporlama mekanizmaları desteği sağlamaktadır. Araçların bazılarının yetenekleri yazılım
yapılanış yönetimi içine entegre edilebilir.
3.1.2. Yazılım Yapılanışı Yönetim Planı
Bir proje için belirlenen YYY planının sonuçları, Yazılım yapılanış Yönetimi Planında
tutulur. Bu belge, Yazılım Yapılanış Yönetimi süreci için bir kaynak olur. Süreç boyunca,
gerekli durumlarda güncellenir. Gerçekleştirim bölümünde ise, plandaki bazı parçaların daha
detaylı açıklanması gerekebilmektedir. Bu yüzden bu belgeye "yaşayan bir rapor" diyebiliriz.
Bir YYY Planında 6 kategoride bilgi bulunmaktadır:
1) Giriş -amaç, kavram, kullanılan terimler
Sistem Analizi ve Yazılım Tasarımı
56
Öğr. Gör. Mustafa AKSU
2)
3)
4)
5)
6)
YYY Sürecinin Yönetimi -organizasyon, sorumluluklar, yordamlar
YYY Aktiviteleri -yapılanış tanımlaması, yapılanış kontrolü
YYY Zaman çizelgeleri -diğer proje aktiviteleri ile olan koordinasyonu
YYY Kaynakları -araçlar, insan kaynakları
Planın bakımı, güncelleştirilmesi
3.1.3. Yazılım Yapılanış Tanımlaması
Yazılım Yapılanış Tanımlaması aktivitesi kontrol edilecek elemanları belirler ve bu
elemanların versiyonlarını kontrol eder. Ayrıca, bu kontrol edilen elemanların yönetiminde
kullanılacak araçları belirler.
3.2.3.1. Kontrol Edilecek Elemanların Tanımlanması
Değişim kontrolündeki ilk aşama, kontrol edilmesi gereken elemanların belirlenmesi
işlemidir. Bu işlem, yazılım yapılanışının sistem yapılanışı ile birlikte ele alınıp anlaşılmasını,
yapılanış elemanlarının seçimini, yazılım öğelerinin isimlendirilmesinde bir strateji
belirlenmesini, aralarındaki ilişkilerin belirlenmesini gerektirir.
U
S
Yazılım Yapılanış Öğesi:
Yazılım yapılanış öğesi, yapılanış yönetimi için tasarlanmış olan yazılımın bir
genellemesidir ve tek bir eleman olarak algılanır. Kod da dahil olmak üzere, çeşitli öğeler
YYY tarafından kontrol edilir.
Yazılım yapılanış öğeleri listesi:
- Planlar
- Belirtimler
- Test materyalleri
- Yazılım araçları
- Kod ve çalıştırılabilir kod
- Veri kütüphaneleri
- Bakım, kurulum belgeleri
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Yazılım Versiyonları:
Yazılım projesi ilerledikçe, öğeler gelişir. Bir karışıklık söz konusu olmaması için, bu
gelişmelerin tutarlı, kontrollü bir şekilde ele alınması gereklidir. Bu da versiyonlar ile
sağlanır.
Bir yazılım öğesinin versiyonu, belirli özelliklere sahip olan bir öğedir. Uyarlama, geliştirilmiş
olan bir yazılım versiyonuna verilen addır.
.
r
g
Ö
3.1.3.2. Yazılım Yapılanış Öğelerinin Bulunması
Yazılım yapılanış öğeleri farklı faklı zamanlarda bulunup farklı zamanlarda yazılım
yapılanış yönetimi kontrolüne verilebilir.(yazılım yaşam döngüsünün belirli adımlarında
bulunabilir) Genelde, bitirilmiş bir resmi görev, gözden geçirme yeni öğeler bulmayı
sağlamaktadır.
Aşağıdaki şekilde "Şelale Modeli" ile öğelerin bulunması örneklendirilmektedir.
Sistem Analizi ve Yazılım Tasarımı
57
Öğr. Gör. Mustafa AKSU
Gereksinimlerin Gözden
Yazılım Gereksinimleri Belirtimleri -
Tasarımın Gözden
Değişim
Đhtiyacı
Yazılım Gereksinimleri Belirtimleri –
B
Yazılım Tasarım Belirtimleri - A
Değişim
Đhtiyacı
Testlerin Gözden
Yazılım Gereksinimleri Belirtimleri –
C
Yazılım Tasarım Belirtimleri – B
Kod – A
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
U
S
K
A
Kabul Edilirlik
Yazılım Gereksinimleri Belirtimleri –
D
Yazılım Tasarım Belirtimleri – C
Kod – B
Test – B
Kullanım Klavuzu - A
Şekil 3.3 – Öğelerin Elde Edilmesi
3.1.4. Yazılım Yapılanış Kontrolü
.
r
g
Ö
Yazılım yapılanış kontrolü, yazılım yaşam döngüsü boyunca oluşan değişiklikleri
yönetir. Hangi değişikliklerin uygulanacağı, belirli değişikliklerin onaylanması, bu
değişikliklerin hayata geçirilmesinin desteği gibi konuları kapsar.
Yazılım değişiklikleri istekleri süreci, birçok araç kullanımını da beraberinde
gerektirir. Ve bu araçlar (belgeleme araçları, koordinasyon araçları...) genelde
geliştirme takımı tarafından yaratılır çünkü her projede, bu isteklerin tipi projeye
bağımlıdır.
Kabul edilmiş, onaylanmış değişiklikler belirlenen yazılım yordamlarına uyularak
gerçekleştirilir. Aynı anda birden çok değişikliğin gerçekleştirimi yapılabileceği için bu gibi
durumlarda gerçekleştirimlerin birbirine uyumlu olması sağlanmalıdır.
Değişikliklerin
gerçekleştirimleri bitirildikten sonra, sonuçların standardlara uygunluğu da test edilmelidir.
Aşağıdaki şekilde değişim sürecini daha iyi görmekteyiz.
Sistem Analizi ve Yazılım Tasarımı
58
Öğr. Gör. Mustafa AKSU
Değişiklik
Đhtiyacı
Ön Đnceleme
Değişikliğin
Tanımlanması
Değişikliği
Gözden
Geçirme
Değişikliği
önerene haber
ver
RED
U
S
KABUL
Yazılım
Değişikliği
Đsteğinin
Yaratılması
Yazılım
Mühendisi
Ataması Yap
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Tamamlanmama
Değişikliği
Değerlendirm
e
.
r
g
Ö
Analiz,
Tasarım,
Kodlama,
Test
Tamamlanma
Şekil 3.4 – Değişiklik Kontrolü
3.1.5. Yazılım Yapılanış Durumu Kontrolü
Yazılım Yapılanışı Durum Kontrolü, verimli bir yapılanış yönetimi için gerekli olan
bilgiyi, raporlamayı sağlar. Durum Kontrolü tasarımı, mevcut bilgi sistemlerinin
tasarımlarından yola çıkarak yapılabilir.
Durum kontrolü aktivitesi, yaşam döngüsü boyunca, bilgiyi yakalamayı ve
raporlamayı amaçlar. Her bilgi sisteminde olduğu gibi burada da, yapılanış durumu
tanımlanmalı ve bakımı yapılmalıdır. Bu işlem içinde çeşitli ölçütler ve bilgiler
gerekmektedir. Bu bilgiler yönetim kademesi, yazılım mühendisleri ve diğer kurumlardan
elde edilecektir. Bilgi toplama esnasında, karışıklıkları kontrol etmek için bazı araçların
kullanılmasında fayda vardır.
Raporlanan bilgiler, geliştirme akımı, bakım takımı, proje yönetimi, kalite güvence
takımı gibi gruplar tarafından kullanılacaktır. Raporlama rasgele ortaya çıkan isteklere bağlı
olarak hazırlanabildiği gibi düzenli aralıklarla da hazırlanabilmektedir.
Sistem Analizi ve Yazılım Tasarımı
59
Öğr. Gör. Mustafa AKSU
Durum kontrolünden elde edilen bilgi, raporlamada kullanılabildiği gibi yönetim
kademesinde bazı ölçütler için de kullanılabilir. Örnek olarak değişiklik isteklerinin sayısı ve
bir değişikliğin gerçekleştirme zamanı verilebilir.
3.1.6. Yazılım Yapılanışı Denetleme
Yazılım denetlemesi, yazılım ürünün kabul edilirliğinin, standartların, rehberlerin,
yordamların değerlendirildiği bağımsız olarak gerçekleştirilen bir aktivitedir. Denetlemeler,
iyi tanımlanmış olan birçok süreci kapsar. Bu süreçlerde, farklı farklı sorumluluklar
mevcuttur. Her denetleme, çok iyi olarak planlanmalıdır.
Denetlemeler, hangi öğelerin istenilen düzeyde olduğu, hangilerinin eksik olduğu
hakkında bilgi verir.
Bu denetlemeler proje yaşam döngüsünün önemli noktalarında
yapılmalıdır. 2 çeşit denetleme vardır: Fiziksel Denetleme ve Fonksiyonel Denetleme. Bu
denetlemelerin sağlıklı olarak yazılması, ortaya çıkarılacak olan ürünün kalitesini de ortaya
koyar.
U
S
3.2.6.1. Fonksiyonel Denetleme
Fonksiyonel denetlemenin amacı, denetlenen yazılımın belirtimlerle olan
uyumluluğunu ölçmektir.
Yazılım Doğrulama ve Testlerinin çıktıları, bu denetleme için iyi birer girdidirler.
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
3.2.6.2. Fiziksel Denetleme
K
A
Fiziksel denetlemenin amacı, tasarım dökümanının geliştirilmekte olan yazılım ürünü
ile tutarlı olup olmadığını ölçmektir.
3.1.7. Yazılım Yayım Yönetimi
Yayım kelimesi, geliştirme aktivitesi boyunca ortaya çıkarılan farklı özelliklerdeki
öğeler anlamına gelmektedir. (Mesela bir aracın yeni, farklı özellikteki versiyonları) Bu
öğeler, müşteriye gönderilen dışsal öğeler olabileceği gibi geliştirme takımı içinde kalan içsel
öğeler de olabilir. Bir yazılımın yeni bir versionu oluşturulduğunda, bu versiyonun yayım
olarak açılanmadan önce diğer yazılımların hangi versiyonları ile uyumlu çalışabileceği
belirlenmeli ve buna göre bir paket oluşturulmalıdır. Bu iş için de kütüphaneler
kullanılmalıdır.
.
r
g
Ö
Çalıştırılabilir bir yazılım için, öğelerin doğru versiyonları bir araya getirilir ve
kurulum paketi hazırlanır. Bu işlem yapılırken, en önemli nokta yazılımın çalışacağı
donanımın yapılanışının doğu tespit edilmesidir. Çünkü donanım yapılanışı yanlış tespit
edilmiş bir paket, çalışmayacağı için sonuç tam anlamıyla hüsran olacaktır.
Buna göre, yazılım yayım yönetimi, bir ürünün öğelerinin tanımlanması, bir araya
getirilmesi, dağıtımı gibi konuları ele alan önemli bir aktivitedir. (Çalıştırılabilir kod,
dökümantasyonu, yapılanış bilgisi...)
Yazlım yayım yönetiminin diğer bir görevi de ne zaman bir yayım yaratmak
gerektiğine karar vermektir. Çözülen problemlerin önemi ve hataları ne kadar yok ettiği bu
kararı belirleyen etkileyici bir faktördür.
4. Yazılım Ürün Mühendisliği (YÜM)
YÜM, etkin ve verimli bir şekilde, doğru, tutarlı bir yazılım ürünü elde etmek için tüm
yazılım mühendisliği aktiviteleri boyunca devam eden tutarlı bir mühendislik sürecidir.
YÜM, uygun araçları ve metotları kullanarak, projenin yazılım sürecinde yazılım
ürünü üretmek için yürütülen mühendislik görevlerini içerir.
Sistem Analizi ve Yazılım Tasarımı
60
Öğr. Gör. Mustafa AKSU
Ayrıca;
yazılım sistemine atanmış olan sistem gereksinimlerini incelemeyi,
yazılım gereksinimleri geliştirmeyi, yazılım mimarisi geliştirmeyi,
yazılım tasarlamayı,
yazılımın kodlamasını,
yazılım bileşenlerini birleştirmeyi ,
yazılım doğrulama ve sınama süreçlerini analiz etmeyi içerir.
Yazılım mühendisliği görevleri için belgeleme gerekir (örneğin yazılım gereksinimler belgesi,
yazılım tasarım belgesi, test planları, test yordamları). Bu belgeleme işlerinde de YÜM’nin
önemi vardır.
4.1. Yazılım Ürün Mühendisliği Hedefleri
Yazılım ürünleri ölçütlerini pratiğe dökmek.
Maliyet, zaman çizelgesi, fonksiyonellik, kalite arasındaki ilişkiyi kurmak ve bu 4’lü
anlayışı geliştirmek.
Proje/program yönetimi, sistem mühendisliği, süreç geliştirme ile ilgili bir ölçümleme
yaklaşımı getirmek ve devam eden yazılım ölçütlerini kontrol etmek.
U
S
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
4.2. Yazılım Ürün Mühendisliği Tanımları
K
A
Yazılım Ürünü Mühendisliği: Bir yazılım projesinde, müşterinin ihtiyaçlarını
karşılayacak şekilde ürün ortaya koymak için yapılan yazılım mühendisliği
aktiviteleridir.
Müşteri: Müşteri, yazılım ürünüyle ilişkisi olan herhangi bir kişi olabilir.(bir şahıs ya
da şirket) Müşterileri şu şekilde sınıflara ayırabiliriz: Kullanıcılar, Geliştiriciler, Bakım
takımı.
Yazılım Fonksiyonelliği: Sistem gereksinimlerinde müşteri tarafından belirtilmiş
olan ihtiyaçların yazılım sistemi tarafından karşılanabilme yeteneğidir.
Yazılım Kalitesi: Kalite, yazılım ürününün gereksinimleri karşılayabilme derecesidir.
Ayrıca müşterinin isteklerine cevap verebilme oranı olarak da düşünebiliriz.
.
r
g
Ö
4.3. Yazılım Ürünü Mühendisliği Kapsamı
Yazılım ürünü mühendisliği çalışmaları sırasında, tüm çaba, merak ve odaklanma
yazılım ürünü fonksiyonelliği ve kalitesi üzerine olmalıdır.
Tanımlanmış olan ölçütler, tek bir proje için fonksiyonelliği ve kaliteyi hedef
almalıdır. Đç içe geçmiş çoklu projeler hedef alınmamalıdır.
Yazılım ürünü mühendisliği sorunları üç değişik müşteri perspektiften bakarak ele
almalıdır: Kullanıcı, geliştirici ve bakımcı.
Sadece yazılım mühendisliği alanına giren konularda yazılım ürünü mühendisliği
çalışması yapılmalıdır. Eğitim ile ilgili aktiviteler ve materyaller bu kapsama
girmemektedir.
Ürün fonksiyonelliği ve kalitesi ile ilgili ölçütleri belirlerken, süreçler ve ürün ile ilgili
raporlar dikkate alınmalıdır.
Çalışmalar, müşterinin fonksiyonelliği ve kaliteyi tahminleyebileceği konuları da içine
almalıdır.
Çalışmalar, ürünü iyileştirmede yardımı olabilecek etkileri de incelemelidir.
Yazılım ürünü mühendisliği aktiviteleri içsel ve dışsal özellikleri de içermelidir.
Çalışmalar, kullanıcı beklentileri göz önünde tutularak tamamlanmışlık derecesini de
ölçmelidir. Bu da müşteri ihtiyaçlarını anlama ve belgelemede doğruluk ile
sağlanabilir.
Sistem Analizi ve Yazılım Tasarımı
61
Öğr. Gör. Mustafa AKSU
4.4. Yazılım Ürün Mühendisliği Temelleri
Tüm ölçütler sorunlara yönelik olmalıdır.
Ölçütler tek başlarına karar vermeye yeterli olmamalıdır. Genelde, karar aşamasında
birden çok ölçüt bir arada değerlendirilerek yazılım ürününün kapsamlı bir
karakteristiği çıkarılmalıdır.
Ürün değerlendirmede, yazılım ürünü mühendisliği ölçütleri 2 amaca hizmet eder:
o Yazılım ürününün kalitesini ölçme ve en sonunda elde edilecek olan ürünün
kalitesini tahminlemek. Bu ölçme ve tahminleme işlemleri süreçlere ve ürün
bileşenlerine uygulanmalıdır.
Ölçütler pozitif ve negatif sonuçları ortaya çıkarmalıdır.
Ölçütler tüm müşterileri desteklemelidir.
Ölçütler, ürünün fonksiyonelliğini ve kalitesini incelemeye yönelik olmalıdır.
U
S
Önerileri gözden geçir, değerlendir,
Takımı kur
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Yazılım ürün mühendisliği etkisini
Var olan ölçümleme yöntemlerini incele ve gözden
Gelişmeyi ölçmek için anaçerçeveyi incele
Ölçütleri
Durum çalışmaları geliştir
Ürün geliştir
.
r
g
Ö
Şekil – 4.1 Yazılım Ürün Geliştirme
5. Süreç ve Yazılım Değişimi Yönetimi
“Bir yazılım projesinde, değişim kaçınılmazdır. Değişim yönetimi, bu değişiklikleri
yönetmenizi ve koordine etmenizi sağlar. Bu sayede değişiklikler sorun olmaktan çıkar,
yazılımı geliştirir.”
!! Değişim Yönetimi, süreç içindeki değişiklikler üzerinde bir kontroldür.
Özet olarak bir değişim yönetimi senaryosu verecek olursak:
1. Değişimin gereksinimlerini analiz et
2. Değişimi planla
3. Değişimi gerçekleştir
4. Değişimi raporla
5. Değişim olası sonuçlarını incele
Yazılım geliştirmedeki tek sabit “değişim”dir. Đlk kapsamdan, tamamlanma fazına ve bakıma
Sistem Analizi ve Yazılım Tasarımı
62
Öğr. Gör. Mustafa AKSU
kadar, yazılım devamlı değişir. Bu değişiklikler, yazılımın gereksinimleri karşılayıp
karşılamadığını, yazılımın zamanında ve uygun bütçeyle tamamlanıp tamamlanamadığını
belirler. Proje yöneticilerinin de asıl görevlerinden biri, değişim yönetimidir.
Süreç Değişim Yönetimi’nin Amaçları:
1. Değişim isteklerine proje bağlamında servis vermek.
2. Her değişikliği resmi olarak belgelemek.
3. Her değişikliğin potansiyel etkisini değerlendirmek.
4. Değişim için gerekli süreçleri ve yetkiyi sağlamak.
5. Tüm grupları değişikliklerden haberdar etmek.
Değişim yönetimi, 2’ye ayrılır: Değişim Planlaması ve Değişim Yönetimi.
5.1. Değişim Planlaması
U
S
Değişim planlaması, değişimin risk seviyesini belirleyen ve değişimin başarılı olabilmesi için
gerekenleri tanımlayan bir süreçtir.
Değişim Planlamasının ana adımları şunlardır:
1. Değişim planı gereksinimlerine göre en az 3 risk seviyesi belirle.
2. Tüm değişimlere bir risk seviyesi ata.
3. Yazılım/donanım güncellemeleri, yapılanış değişimleri için yeni tanımlamalar yap.
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
5. 2. Değişim Yönetimi
BAŞLA
RISK
DEĞERLENDĐRM
E
KAPSAM
DEĞĐŞĐM
KONTROLCÜSÜ
.
r
g
Ö
DEĞĐŞĐM
DEĞERLENDĐRMESĐ
DEĞĐŞĐM
YÖNETĐM TAKIMI
BELGELEME
TEST
ĐLETĐŞĐM
DEĞĐŞĐM
PLANLAMASI
GERÇEKLEŞTĐRĐM
TAKIMI
SON
Şekil – 5.1 Değişim Yönetimi
Değişim yönetimi adımları:
Değişim yönetimi aktivitelerini yönetebilecek olan, değişim isteklerini kabul edecek ve
inceleyecek, süreç değişim gelişmelerini yönetecek bir değişim kontrolcüsü ataması yap.
Sistem yöneticisi, uygulama geliştiricileri, kullanıcılar ile periyodik olarak değişim gözden
geçirme toplantıları düzenle.
Gereksinimleri düzenle, belgele.
Değişim çıktılarını belgele, düzenle.
Yüksek risk seviyeli değişimler için bir değişim onaylama yordamı belirle.
5.3. Değişim Yönetimi ve Yapılanış Yönetimi Đlişkisi
Yapılanış yönetimi, değişim yönetiminin ana bileşenlerinden biridir. Yazılım yapılanışı
yönetimi, yazılımın belirgin sürümlerini, ileride kullanılmak üzere tespit eder. Eğer yapılanış
Sistem Analizi ve Yazılım Tasarımı
63
Öğr. Gör. Mustafa AKSU
yönetimi alt seviyedeyse, proje yöneticisi değişiklikleri sadece uzaktan izlemekle yetinir.
Ayrıca, gelişimin tahminlenmesi de zorlaşır.
Yazılım değişimi yönetimi, hangi değişikliklerin doğru olduğunu belirleyen bir süreçtir.
Hangi değişikliklerin yapılması gerektiğini, hangilerinin önlenmesi gerektiğini proje zaman
çizelgesi ve bütçesine göre belirler. Değişim Yönetimi süreci, değişikliklerin kaynağını
belirler, kritik proje karar noktalarını tanımlar, proje sorumluluklarını belirler. Aşağıdaki
şekilde, süreç bileşenleri ve aralarındaki ilişkiler gösterilmektedir. Şekilden de görüldüğü
gibi, değişim yönetimi ile yapılanış yönetimi birbiriyle direkt ilişkilidir.
Süreç Poliçesi Tanımı
U
S
Süreç Değişim Yönetimi
Yazılım Yapılanış Yönetimi
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Değişiklik Verileri Havuzu
Şekil – 5.2 Süreç Bileşenleri, Đlişkileri
Yazılım Yapılanış Yönetimi (YYY) ve değişiklik takibi arasındaki ilişki, değişim yönetiminin
merkezindedirler. YYY standardları, değişim kontrolünü, yapılanışın tanımından sonra gelen
bir görev olarak görür. Bu da, bazı geliştiricilerin, YYY’nin değişimleri yönetmektense
değişimleri engellediğini düşündürebilir. Oysa Değişim Yönetimi, doğru değişiklikleri en
verimli şekilde seçerek uygulamayı hedefler. Bu bağlamda YYY sürümleri, versiyonları ele
alırken değişimden Değişim Yönetimi sorumludur diyebiliriz.
.
r
g
Ö
Şekil – 5.2’de görülen değişiklik verileri havuzu, süreç değişim yönetimini destekler.
Geliştiriciler, testçiler, kullanıcılar değişiklikler hakkındaki verileri buraya girerler. Değişiklik
verileri havuzu kullanılarak, sürüm ve yayımların tutarlılığı sağlanır. Ve havuzdaki veriler,
gerçekleştirim safhasında da gözönünde tutulurlar.
Süreç Değişim Yönetimi, proje yönetiminin bütünleşik bir parçasıdır. Geliştiriciler için,
yazılımlarının başarıya ulaşmasındaki tek yol, yazılımı değiştirmekten geçer. Değişim
Yönetimi de bu değişiklikleri koordine eder ve yönetir.
Sistem Analizi ve Yazılım Tasarımı
64
Öğr. Gör. Mustafa AKSU
Anlatılanları daha iyi kavrayabilmek için aşağıdaki şekil yardımcı olacaktır.
1. Değişikliği
Belgele
MÜŞTERĐ
Standartlar &
Yaşam
Döngüleri
3. Planlam
a
Değişikliği
Kaydet
Kalite Planı
4. Ona
y
2. Riskleri
Belirle
Plan &
Gerçekleştirim
5. Gerçekleştiri
mi Denetle
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
6. Kaydet ve
Müşteriye
Durum Bildir
U
S
K
A
Raporlar
7. Değişikliği
Gözden
Geçir
r.
Değişiklik
Tarihçesi
g
Ö
8. Değişiklik
Tarihçesini
Analiz Et
Yönetim
Raporları
Şekil – 5.3 Süreç Değişim Yönetimi
Bileşenleri
Sistem Analizi ve Yazılım Tasarımı
65
Öğr. Gör. Mustafa AKSU
5.4 Değişiklikler Nerelerden Kaynaklanır?
Birçok konu yazılımda değişikliklere yol açar. Bu gelecek değişikliklerin kaynaklarını
bulmak, öncelik sırasında koymamızda bize yardımcı olur. Değişimin kaynağı, planlı gelişim,
beklenmedik sorunlar, iyileştirmeler olarak tanımlanabilir.
Beklenmedik Sorunlar
Planlı Değişim
Kullanıcı Đstekleri
Đyileştirme
Çalışmaları
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
U
S
K
A
Şekil – 3 Değişikliği Oluşturan Kaynaklar
5.4.1.Planlı, Düzenli Yazılım Geliştirme
Đdeal
olarak,
tüm
yazılım
değişiklikleri,
planlı
geliştirme
çabasından
kaynaklanmaktadır. (Gereksinimler ve belirtimler tarafından ileriye sürülen gerçeklerle
ilgili.) Yeni bir kod eklemek, yönetilmesi gereken bir değişiklik anlamına gelmektedir.
Kullanılmayan fonksiyonların eklenmesi, projenin kaynaklarını tüketecek, hata oluşma
riskini arttıracaktır. Bazen istenen özellikler gerçekleştirilmeden bile değişiklik yapılmadan
önce üzerinde düşünülmesi gerekebilir. Maliyet-Yarar bağlamında, istenen her değişiklik,
detaylıca incelenmeli ve planlı bir şekilde ele alınmalıdır.
.
r
g
Ö
5.4.2.Beklenmeyen Problemler
Geliştirme esnasında, doğal olarak sorunlar keşfedecek ve bunları çözebilmek için
kaynaklarınızın bir kısmını bu sorunlara harcayacaksınız. Problemin büyüklüğüne göre
harcanan zaman ve çaba artacaktır. (küçük hatalar projenizin bütçesini harcayamaz)
Geliştirme takımı, kodun tasarımının düzgün olduğunu, gereksinimlerin karşılandığını
belirler. Son olarak, tasarım ve gereksinim hatalarının düzeltildiğinden emin olunmalıdır.
Sonraki bölümlerde anlatılacak olan bütünleşik süreç değişim yönetimi araçları, bir
değişiklik yapıldığında gerekli belgelerin gözden geçirilip düzeltilmesi gerektiğini belirtir. Bu
belge yenilemesinde, yeni problemler ortaya çıkabilir.
5.4.3.Đyileştirme Çabaları
Tüm yazılım projeleri, bir araştırma ve geliştirme çabasının ürünleridir. Bu yüzden
projelerde, iyileştirme fikirleri ortaya çıkar. Bu noktada proje yöneticisi öne çıkar. Fikir
Sistem Analizi ve Yazılım Tasarımı
66
Öğr. Gör. Mustafa AKSU
projeyi kestirmeden hedefine uaştırabilecek parlak bir fikir olabilir ya da projenin başarısını
tehdit eden bir yanlış fikir olabilir.
5.4.4. Kullanıcı Đstekleri
Yazılım değişimi yönünde zaman zaman kullanıcı istekleri de olur. Bu istekler proje
devamında yada bitiminde olabilir. Yalnız şuna dikkat edilmelidir: kullanıcı istekleri bir
yazılım projesini temelden değiştirecek şeyler içermemelidir.Çünkü bu istek yeniden farklı
bir proje hazırlamak demektir.
5.5. Değişim Sürecindeki Kritik Karar Noktaları
Değişiklikler, potansiyel değişiklikler olduğundan, henüz projenin kaynaklarını
tüketmeye başlamadan belirlenmelidirler. Her görev gibi, değişimin de takip edilmesi
gereken bir yaşam döngüsü yada değişim süreci vardır. Genelde, şekilde görülen 3 kritik
nokta, süreç değişimini belirler. Bu noktalar, değişim çerçevesini oluşturan etmenlerdir.
U
S
Orijinal Değişim Đsteği
Gözden Geçir
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Kavramı
Onayla
Kabul
Red
Değişim Analizi
Gözden Geçir
.
r
g
Ö
Đlerlemeyi
Onayla
Red
Pasif Đstekler
Kabul
Gerçekleştirim & Test
Red
Gözden Geçir
Kararlılığı
Onayla
Kabul
Planlı Gelişime Ekle
Şekil – 5.4 Süreç Değişimi & Kritik Noktalar
Sistem Analizi ve Yazılım Tasarımı
67
Öğr. Gör. Mustafa AKSU
Kavramı Onayla: Değişim istekleri, test grubundan, problemleri tanımlayan kullanıcılardan
ve gereksinim ekleyip çıkaran müşterilerden gelir. Belirli miktarda kaynağı bu değişimlere
ayırmadan önce, değişimleri onaylamak gerekir. Bu, Süreç Değişimi Yönetimi’nde ilk kritik
karar noktasıdır. Bu noktada eğer bir fikir kabul edilirse, gerekli kaynakların sağlanması için
o kavrama bir öncelik verilir.
Đlerlemeyi Onayla: Bir süreç değişimi onaylandıktan sonra, ikinci adımda bu değişimi
projenin gereksinimlerine, belirtimlerine, tasarımına, zaman çizelgesine, bütçesine karşı
değerlendirmek gerekir. Böyle kapsamlı bir analiz, değişim için gereklidir çünkü süreç
değişimi, büyük ihtimalle projenizi büyük ölçüde etkileyecektir. Maliyet-yarar bağlamında
analiz edilen değişim hakkında, ilerleme kararı veya durdurma kararı alınır.
Kararlılığı Onayla: Değişim isteği, planlı geliştirme fazına geçince tamamlanmış demektir.
Gereksinimlerin analizi ve tasarım aşamalarında bu adım, isteğin onaylanmasından hemen
sonra olur. Ama kodlama aşamasında ise, planlı olmayan tüm değişiklikler için ayrı ayrı test
ve gerçekleştirim yapılmalıdır. Bu testlerde hem orijinal durum hem de planlanan değişim
durumu test edilerek yeni durumun herhangi bir sorun yaratıp yaratmadığı belirlenir.
U
S
K
A
Testten sonra, değişimin diğer uygulama parçalarını nasıl etkilediğini gözlemlemelisiniz.
Örneğin, yanlış mantıkta olan bir kullanıcı girdisi alma modülü için doğru olan ara yüz
değiştirilirse, ileride açılacak problemler için bu değişiklik reddedilmelidir.
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
Reddedilen ve Ertelenen Đstekler: Herhangi bir karar aşamasında, bir istek reddedilebilir
veya ertelenebilir. Bu durumda, istek tüm dökümantasyonuyla birlikte rafa kaldırılmalıdır.
Böylelikle, aynı fikir tekrar ortaya atılacak olursa, neden reddedildiği hemen ortaya konur ve
sebepleri düşünmek üzerine zaman harcanmaz. Eğer şartlar değişirse, ertelenme veya red,
geri çekilebilir.
!! Eğer bir problem üretimi veya testi durduracak kadar aciliyet teşkil ediyorsa, kapsamlı bir
analiz zamanı veya resmi bir karar verme zamanı olmayacaktır. Süreç Değişim Yönetimi
mekanizmasının bir acil durum işleyişi olmak zorundadır. bu işleyiş, analizi ve karar
aşamalarını daha hızlı geçmeyi sağlayacaktır.
Mesela acil durum yaratan problem, biraz değiştirilerek durum aciliyetten çıkarılabilir ve
sonra normal işleyişe dönülebilir. Böylelikle sistem çalışır duruma getirilir ve kapsamlı bir
analiz yapılabilir. Ya da sorun tamamen bir aşamada çözülebilir. Seçimi proje yöneticisi
yapacaktır.
Giriş
.
r
g
Ö
6. HATA YÖNETĐMĐ
Yazılım hataları, ciddi sorunlardır. Bir hatanın bulunması ve düzeltilmesi işleminin
maliyeti, en pahalı yazılım geliştirme aktivitelerinden biridir. Yakın gelecekte, bu hatalar
olmadan yazılım geliştirmek için bir teknik de bulanamayacak gibi gözüküyor. Hatalar
önlemez olabilirler ama her ne kadar önlenemeseler de hataların sayısı ve etkileri “Hata
Yönetimi” sayesinde en az seviyede tutulabilir. Bunu sağlamak için, geliştirme takımlarının
hataları önlemeye, hataları olabildiğince erken yakalamaya yarayan, hataların etkisini
minimuma indiren etkin bir hata yönetimi süreci belirlemeleri gerekir. Bu konuya az
miktarda yapılacak olan yatırımın getirecekleri çok daha fazla olacaktır. Aşağıdaki
bölümlerde, Hata Yönetimi için tutarlı bir model anlatılacaktır. Bu model, bir standart
olmasa bile, Hata Yönetim Teorisi’nin ana noktalarını çok güzel açığa çıkararak bir rehber
olmaktadır.
Hata yönetimi süreci genel olarak aşağıdaki prensipleri temel alır:
Sistem Analizi ve Yazılım Tasarımı
68
Öğr. Gör. Mustafa AKSU
-
-
-
Asıl hedef hataları önlemektir. Bu koşulun mümkün olmadığı veya uygulanabilir olmadığı
durumlarda, hedef mümkün olduğu kadar hızlı bir şekilde hatayı bulmak ve etkisini en
aza indirmek olmalıdır.
Hata yönetimi süreci risk odaklı, risk merkezli olmalıdır. Örneğin stratejiler, öncelikler,
kaynaklar, risk azaltma fikrine uygun olmalıdır.
Hata ölçümü, süreci geliştirmek için geliştirme takımı tarafından kullanılmalıdır ve
yazılım geliştirme süreci ile bütünleşik olmalıdır. Başka bir deyişle, proje takımı işini
yaparken kaynaktaki sorunları da ortaya çıkarmalıdır. Bu işlem daha sonra projeyle ilgisi
olmayan insanlar tarafından yapılmamalıdır.
Bilgi yakalama ve analizi mümkün olduğu kadar çok otomatikleştirilmelidir.
Süreci geliştirmek için, hata bilgilerinden yararlanılmalıdır.
Hatalar genelde kusurlu, bozuk süreçlerden kaynaklandığı için bu süreçler
değiştirilmelidir.
6.1. HATA YÖNETĐM SÜRECĐ
U
S
Önceki konuda anlatılanları ve prensipleri hatırlayarak hata yönetimi için aşağıdaki
şekildeki gibi bir süreç yapısı çıkarılabilir:
HATA
ÖNLEME
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
HATA
BULMA
ANA
RAPOR
OLUŞT
1
-
-
-
-
-
K
A
HATA
ÇÖZÜMLEME
SÜREÇ
GELĐŞTĐRME
YÖNETĐMSEL RAPORLAMA
Hata Önleme: Hata riskini azaltacak teknikler, metodolojiler, standard süreçler
yaratma.
Ana Raporların Temelini Oluşturma: Geliştirmeye devam edilebilecek şekilde ana
raporları oluşturma. Herhangi bir ana rapor temeli hazırlanırsa, daha sonraki
değişiklikleri kontrol altına almak kolaylaşır. Raporlardaki hatalar, raporun temeli detaylı
şekilde oluşturulduktan sonra hata olarak kabul edilirler, daha önce hata olarak kabul
edilmezler.
Hata Bulma: Hataları, geliştirme takımını bilgilendirmek doğrultusunda tanımlama ve
raporlama. Bir hata, belgelenmeden ve geliştirme takımın ilgili birimleri bilgilendirilince
bulunmuş sayılmalıdır.
Hata Çözümleme: Geliştirme takımı tarafından yapılan, bir hatanın düzeltilmesi,
öncelik verilmesi, belgelenmesi işi. Bu işlem ayrıca, çözümlemenin doğru yapıldığının
kontrolünü de kapsar.
Süreç Geliştirme: Đçinde hata bulunan sürecin analizi ve tanımlanması yapılmasından
sonra, ileride bu ve buna benzer hataların yapılmaması için sürecin üzerinde çalışma
yapılmasıdır.
Yönetimsel Raporlama: Yönetime, risk yönetimi, proje yönetimi, süreç geliştirimi gibi
konularda yardımcı olabilmek için hata bilgisinin analizi ve raporlanmasıdır.
.
r
g
Ö
6.1.1 HATA ÖNLEME
Hiç şüphesiz, hatalar için en iyi yaklaşım onları ortadan kaldırmaktır. En çok istenen çözüm
bu olsa da şu anki teknolojiyle bunu sağlamak imkânsızdır. Bu yüzden geliştiricilere hataları
çok çabuk bulmak ve etkilerini en aza indirgemek için stratejiler gerekmektedir. Hata
Sistem Analizi ve Yazılım Tasarımı
69
Öğr. Gör. Mustafa AKSU
yönetimi programında, hata önleme teknikleri tanımlanması ve gerçekleştiriminin önceliği
yüksek olmak zorundadır.
Hata önleme, sistemdeki büyük riskleri bulmak ile başlamalıdır. Önemli risklerin
tanımlanmış olması, takımın en fazla etkiyi yapacak hataların ne olduğunu görmesinde
yarar sağlar. Daha sonra bu riskleri önlemek için stratejiler geliştirilebilir. Hata önlemedeki
ana adımlar şu şekildedir:
Kritik
Riskleri
Tanımla
-
Beklenen
Etkiyi
Tahminle
Beklenen
Etkiyi En Aza
Đndir
Kritik Riskleri Tanımla: Sistemin veya projenin karşı karşıya olduğu kritik riskleri
tanımla. Bu riskler sistemin oluşturulmasını, dağıtımını, işleyişini engelleyen risklerdir.
Beklenen Etkiyi Tahminle: Her kritik risk için, riskin gerçekleştiği anda oluşacak olan
finansal etkiyi hesapla.
Beklenen Etkiyi En Aza Đndir: En önemli riskler belirlendikten sonra, her riski yok
etmeye çalış. Yok edilemeyen riskler için, riskin problem olma ihtimalini ve etkisini en
aza indirmeye* çalış.
U
S
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
*ETKĐYĐ EN AZA ĐNDĐRME TEKNĐKLERĐ
Hataların yaratacağı etkileri en aza indirme tekniklerinin bazıları aşağıda sıralanmıştır:
-
-
-
Kalite Güvence: Kullanılan süreçlerin istenilen sonuçları üretebilmesi için yeterli olup
olmadıklarını kontrol amaçlı olarak, kalite güvence teknikleri tasarlanır.
Eğitim ve Çalışma(Geliştirme Takımı Đçin): Đşgücü ne kadar iyi eğitilirse, işin kalitesi
o kadar yüksek olacaktır. Bir çok hata, çalışanların işlerini nasıl yapacaklarını tam
anlamamasından kaynaklanmaktadır. Bilgisayar teknolojisi gün geçtikçe ilerleyen bir
teknolojidir. Đlerideki yıllarda, gelişim sürdükçe bilgisayarlar daha karmaşık bir hal
alacaktır. Bu da yazılım projelerindeki eğitimin önemini göstermektedir.
Eğitim ve Çalışma(Müşteri Đçin): Daha fazla insan bilgisayar kullandıkça, sistemin
karmaşıklığı daha da büyür. Bu da kullanıcıların eğitiminin önemini artırır. Geliştirme
takımı eğitiminden farklı olarak, kullanıcı eğitimlerinde, teknik bilgiye sahip olmayan
kullanıcıları eğitmek için daha yaratıcı fikirlere ihtiyaç duyulur.
Metodoloji & Standardlar: Kalite artırımının bir yolu da varyasyonları azaltmaktır. Bu
da standartlar ve metodolojilerle sağlanabilir.
Dayanıklı Tasarım: Dayanıklı tasarımın birçok çeşidi vardır. Dayanıklı tasarımda, bir
hata oluşması için, birden fazla bağımsız birimin çökmesi gerekir. Teknoloji ilerledikçe
hataları engelleyen, bulan ve etkilerini en aza indiren sistemler tasarlamak da
kolaylaşmaktadır.
.
r
g
Ö
6.1.2. ANA RAPORLAR OLUŞTURMA & RAPOR OLUŞTURMA NOKTALARI
Raporlar, daha önce belirlenmiş olan kilometre aşlarına gelindiğinde hazırlanırlar. Bu
rapordan sonra projede geliştirme sürecinin diğer aşamasına geçilir. Proje kilometre
taşlarını geçtikçe, barındırdığı hataların sistem üzerinde daha büyük bir etkisi olur ve
değişiklikler yapmak için daha çok kaynak tüketilir.
Hata, projenin aşamaları bitirdikten sonra gereksinimleri karşılayamamasıdır. Bu yüzden
aşamalar, hatalar için önemlidirler. Örneğin bir programcı programlama ve testten sorumlu
ise, test yapılamadan diğer aşamaya geçilemeyecektir. Bu durumda, test şamasında
bulunacak bir “bug” hata olarak gösterilemeyecektir. Ama test ve kodlama iki ayrı takım
Sistem Analizi ve Yazılım Tasarımı
70
Öğr. Gör. Mustafa AKSU
halinde yapılsaydı, iki ayrı aşama olacaklardı. Bu durumda bulunan “bug”, hata olarak
gösterilebilecekti.
Aşamaları belirlemek iki aktiviteyi içerir:
-
Anahtar Raporları Belirle: Proje gelişiminde birçok rapor oluşturulur. Bu raporlardan
hangilerinin ana raporlar oldukları belirlenmelidir.
Her Ana Rapor Đçin Bir Standard Belirle: Her ana rapor için, gereksinimleri ve
kriterleri belirle.
6.1.3. HATA BULMA
Eğer bir teknoloji, hataların oluşmayacağını garanti edemiyorsa, hatalar onarılması
çok pahalıya mal olmadan bulunmalıdır. Bu modele göre, bir problem, hata bilinmeden de
bulunabilir. Böyle durumlarda, problem raporlanmadan önce, hata raporlanmalıdır.
Hataların çabuk bulunması önemli olduğu için, hata bulma, raporlama ile ilgili stratejiler
geliştirilmelidir.
U
S
K
A
Hataları daha kolay bulabilmek için, kuruluş, hataları katagorilendirmelidir. Bu iş bir
kez ya da yıllık olarak yapılan bir iştir. Đşe, tüm dallardan uzmanlaşmış kişiler dahil
olmalıdır. Oluşan grubun amacı, yazılım projesinde en çok oluşan hataları bulmaktır.
Bulunan her hata kategorisi isimlendirilmelidir. Bunun amacı kategorilerdeki karmaşıklığı
önlemektir.
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
Hata bulma sürecinin adımları aşağıdaki gibidir:
1. Hatayı bul
2. Hatayı raporla
3. Hatayı doğrula
.
r
g
Ö
Hatayı
Doğrula
Hatayı
Raporla
Hatayı
Bul
Hata kaynağını belirleme stratejileri:
1. Hatayı yakalamak için araçlar kullanmak – Microsoft DrWatson gibi
2. Hatayı bulmak için ekstra kod yazmak – log tutmak için yazılan kodlar gibi.
3. Raporlanmış olan hatayı analiz ermek.
6.1.4. HATA ÇÖZÜMLEME
Geliştiriciler hatayı doğruladıktan sonra, çözümleme süreci başlar. Hata çözümleme
aşağıdaki şekilde olur:
1. Riske Öncelik Ataması Yap
2. Onarımı Planla
3. Hatayı Onar
4. Hatayı Raporla
Öncelik
Belirleme
Hata
Onarma
Onarımı
Planlama
Çözüm
Raporlama
Bu adımın amacı aşağıdaki soruları cevaplamak ve gerekli olan işlemleri başlatmaktır.
-
Bulunan eski bir hata mı, yeni mi?
Bu hatayı onarırken hangi öncelik sırası verilmelidir?
Sistem Analizi ve Yazılım Tasarımı
71
Öğr. Gör. Mustafa AKSU
-
Onarım sırasında etkiyi en aza nasıl indirebiliriz?Örneğin, kullanıcılara hatadan
bahsetmeli miyiz?
Hata onarımı için ön çalışma gerekli midir?
Hata onarıldıktan sonra ve onarım doğrulandıktan sonra, gerekli geliştiriciler,
kullanıcılar, testçiler hatanın onarıldığı hakkında bilgilendirilmelidirler. Bu bilgilendirme
aşağıdaki kısımları içermelidir:
-
Hatanın kaynağı
Onarımın ne zaman yapıldığı
Onarımın nasıl yapıldığı
6.1.5. SÜREÇ GELĐŞTĐRME
Bu aşama, birçok organizasyon tarafından ihmal edilmektedir ama aslında çok büyük
yararı vardır. NASA, her hatanın sistemin bir zayıflığı olduğunu söylemektedir. Buna göre
hatanın önemi ne olursa olsun, sistemin zayıflığını belirttiği için aynı derecede önemlidirler.
Hatanın çok büyük bir problem olmaması sadece geliştiricinin şansına bağlıdır. Bu yüzden
küçük hatalar bile, süreçlerin nasıl iyileştirileceği ve büyük problemlerin nasıl önleneceği
hakkında bize bir şans vermektedir. Hata, çok büyük bir şey olmayabilir ama o hatanın var
olması büyük bir şeydir.
U
S
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
Çalışmalardan elde edilen sonuçlara göre, katılımcılar sürece geri dönerek hatanın
nereden ve nasıl kaynaklandığını inceleyebilirler. Daha sonra, bu hatanın doğrulama
sürecini nasıl geçtiğini anlayabilmek için o doğrulama sürecini inceleyebilirler. Bu
incelemelerden sadece yararlı bilgiler kazanılmaz, aynı zamanda insanların işlerini daha
dikkatli yapmaları da sağlanır. Bu tip çalışmaların kuruluşlara çok büyük yararları vardır.
Örneğin NASA, bu işi bir adım daha ileriye götürür ve şu soruyu sorar: Eğer bu hata
projenin bu safhasına kadar fark edilmeden gelebildiyse, daha keşfedilmemiş ne gibi hatalar
olabilir? Böylece proje sadece problem oluşturan hataları bulma konusunda değil aynı
zamanda oluşmayan problemlerin hatalarını bulmada da güçlendirilir.
6.1.6. YÖNETĐMSEL RAPORLAMA
.
r
g
Ö
Hata bilgisi, hata yönetimi sürecinin doğal bir çıktısıdır ve bu çıktının analiz edildikten sonra
proje yönetimine ve üst yönetime iletilmesi önemlidir. Bu bilgi, hata tipleri, hata sıklıkları,
hata eğilimleri, maliyetleri… şeklindedir. Projenin, gerekli rotasında ilerlemesini belirlemede,
hataların ne kadar sıklıkla oluştuğunun bilinmesi yararlı olacaktır. Hata onarma etkinliği de
en yararlı bilgilerden biridir. Bu bilgiler yönetime karar aşamalarında yol gösterici olabilir.
Hata yönetimi sırasında bilgi toplamanın amaçları:
- Bireysel hataları raporlamak
- Proje yönetimin daha sağlıklı ve yerinde kararlar vermesine yardım etmek için gerekli
ölçümleri sağlamak.
- Üst yönetimin stratejik kararlar vermesi için bilgi sağlamak.
- Projenin geliştirilebilecek yönlerini belirlemek ve etkileri en azda tutabilmek.
Yönetime raporlar verilmesi, önemli bir adımdır ve her zaman yapılması gerekmektedir
fakat yönetimi daha ileriye götürmeyecek gereksiz raporlar da verilmemelidir. Verilen
raporların mutlaka birer amaçları olmalıdır.
Sistem Analizi ve Yazılım Tasarımı
72
Öğr. Gör. Mustafa AKSU
Kaynaklar
Sistem Analizi (Doç. Dr. Haluk Erkut- Kıyı Yayınları 1989)
Đşletme Yönetiminde Sistem Yaklaşımı (Prof. Dr. H. Öner Esen - Alfa Basım Yayın Dağıtım 1998)
Yönetim Bilgi Sistemleri (Doç. Dr. Hadi Gökçen - EPĐ Yayıncılık 2002)
Brackett, J.W. "Software Requirements." Curriculum Module SEI-CM-19-1.2, Software Engineering
Institute, Carnegie Mellon University, Pittsburgh, Pa., Jan 1990. This paper can be downloaded from
the web at http://www.asset.com/WSRD/abstracts/ABSTRACT_1715.html.
Romback, H. D. "Software Specification: A Framework." Curriculum Module SEI-CM-11-2.1, Software
Engineering Institute, Carnegie Mellon University, Pittsburgh, Pa., Jan. 1990. This paper can be
downloaded from the web at http://www.asset.com/WSRD/abstracts/ABSTRACT_1709.html.
McConnell, Steve "Software Project Survival Guide: How to Be Sure Your First Important Project Isn't
Your Last." Redmond, WA: Microsoft Press, 1998.
U
S
Establishing & Implementing Software QA, Arati Prabhkar, IonIdea Enterprise Solutions Pvt Ltd,
Banglore
Quality Assurance Concepts, QA Concepts and Implemetation Guidelines, August 2000, Nadeem
Kayani
Berczuk, Steve. "Configuration Management Patterns", 1997.
http://www.bell-labs.com/cgiuser/
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
K
A
OrgPatterns/OrgPatterns?ConfigurationManagementPatterns.
Compton, Stephen B, Configuration Management for Software, VNR Computer Library,
Van Nostrand Reinhold, 1993.
Continuus Software Corp., "Work Area Management", Continuus/CM: Change
Management for Software Development.
http://www.continuus.com/developers/developersACE.html.
Dart, Susan, "Spectrum of Functionality in Configuration Management Systems",
Software Engineering Institute, 1990.
http://www.sei.cmu.edu/technology/case/scm/tech_rep/TR11_90/TOC_TR11_90.html
Jameson, Kevin, Multi Platform Code Management, O'Reilly & Associates, 1994
Linenbach, Terris, "Programmers' Canvas: A pattern for source code management" 1996.
http://www.rahul.net/terris/ProgrammersCanvas.htm.
.
r
g
Ö
Lyon, David D, Practical CM, Raven Publishing, 1997
McConnell, Steve, "Best Practices: Daily Build and Smoke Test", IEEE Software, Vol.
13, No. 4, July 1996
van der Hoek, Andre, Hall, Richard S., Heimbigner, Dennis, and Wolf, Alexander L.,
"Software Release Management", Proceedings of the 6th European Software Engineering
Conference, Zurich, Switzerland, 1997.
Jones, Do-While "Repeatable Software Development, Part I: Quality Assurance." Software
Developement, May 1995.
Jones, Do-While "Repeatable Software Development, Part II: Configuration and Requirements
Management." Software Developement, June 1995.
A Field Guide to Effective Requirements Management Under SEI's Capability Maturity Model
CMM Key Practices for Level 2 - Requirements Management
LTInsights Managing Requirements for Successful Software Projects
Requirements Management Policies and Procedures
Requirements Management Using Tables
Sistem Analizi ve Yazılım Tasarımı
73
Öğr. Gör. Mustafa AKSU
Software Program Managers Network - 16 Critical Software Practices TM
Software QA and Testing Resource Center – FAQ
Software QA and Testing Resource Center - Other Resources
Software QA and Testing Resource Center – Tools
StickyMinds_com Article info Quality Assurance Section for a Design Specification
Practical Software Measurement, A foundation for objective project management, PSM SPE Workshop,
Office of the Under Secretary of Defense, Acquisition and Technology
SSC SAN DIEGO POLICY FOR SOFTWARE PRODUCT ENGINEERING, Version 1.1 - 10/9/97
Level 3 - Software Product Engineering, Software Product Engineering a key process area for level 3:
Defined, www.sei.org
U
S
Selected Key Practices, http://www.dfki.de/fluids/References.html#Paulk:93b
www.stickyminds.com
Software Product Engineering Workshop 1999.pdf
a
f
a
t
s
u Ü)
M
.
.
S
r
.
ö
K
(
G
Software Product Engineering Workshop 2000.pdf
K
A
http://www.dfki.de/fluids/Software_Quality_Assurance_Management.html
July 1999 Project Management Software Change Management.htm
Cisco - Change Management: Best Practices White Paper
Qwest Change Management Process Redesign Evaluation March 25, 2002 Version 3.0 Prepared for:
Arizona Corporation Commission
IIR-Presentation, Ivica Ivica Crnkovic
Tips for Collecting Customer Requirements, Author(s): Steve Miller
Best Pratices of Defect Prevention, Latha Rajesh
.
r
g
Ö
www.stickyminds.com
www.bugmonitor.com
Communicating and Managing Bugs Efficiently, Jitu Borah
http://www.defectmanagement.com/defectmanagement/
CMM Key Practices for Level 3 - Integrated Software Management.htm
www.sei.edu
www.google.com.tr
Key Pratcies of the CMM, Version 1.1, Mark C. Paulk Charles V. Weber Suzanne M. Garcia Mary Beth
Chrissis Marilyn Bush, Software Engineering Institute, Carnegie Mellon University, Pittsburgh,
Pennsylvania 15213, CMU/SEI-93-TR-25, ESC-TR-93-178
Sistem Analizi ve Yazılım Tasarımı
74
Öğr. Gör. Mustafa AKSU
Download