23
1 __________________________________ YAZILIM GEREKSİNİM YÖNETİMİ __________________________________ Mehmet Bağkur 20574692

Gereksinim Yönetimi

Embed Size (px)

Citation preview

Page 1: Gereksinim Yönetimi

1

__________________________________

YAZILIM GEREKSİNİM YÖNETİMİ__________________________________

Mehmet Bağkur 20574692

Page 2: Gereksinim Yönetimi

İçindekiler1-Giriş.............................................................................32-Yazılım Gereksinim Yönetimine Giriş

2.1.Yazılım Gereksinim Yönetimi Neden Önemlidir?......32.2.Yazılım Gereksinimleri................................................5

3-Yazılım Gereksinim Süreci Özellikleri3.1.Yazılım Gereksinim Yönetiminin Amacı.....................63.2.Yazılım Gereksinim Yönetimine Genel Bir

Bakış.........................................................................................83.3.CMMI Kapsamında Yazılım Gerekesinim Yönetimi

Süreçleri ve Planı.......................................................................103.3.1.Gerekli Yetenekler.............................................113.3.2.Yapılacak Aktiviteler.........................................133.3.3.Ölçümleme ve Analiz........................................143.3.4.Gerçekleştirimde Doğrulama............................14

3.4.Yazılım Gereksinim Yönetimi Planı....................................15

4-Yazılım Gereksinimi Yönetim Araçları ve Sureç Boyunca Olusan Raporlar4.1.Yazılım Gereksinim Yönetimi Raporları............................154.2.Yazılım Gereksinimi Yönetim Araçları................................165-Süreç Bilgisini Modelleyen Mevcut Çalışmalar.....................166-Yazılım Gereksinim Yönetimi Diyagramları .....................6.1.Gereksinim Yönetimi EPC Diyagramı...............................186.2.Gereksinim Yönetimi Class Çizenegi...............................217-Sonuç......................................................................................238-Kaynaklar...............................................................................23

Page 3: Gereksinim Yönetimi

1-GİRİŞKısa bir cumleyle yazılım gereksinim yönetim surecini tanımlamak istersek şu

cümleyi kurabiliriz:“Gereksinim değişikliklerinin yönetilmesi sürecidir.”

Yazlım gereksinim yönetim süreci, yazılım endustrisi tarafından hızla kabul gören bir yönetim şeklidir.Sistem gereksinimlerinin etkin bir şekilde kontrol edilmesi ve de sistemdeki bu gereksinimlerin , sistem veya sistem cevresinde olusabilcek degisikliklerde butunlugunun korunmasını saglar.Baska bir deyişle 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 sarfedilmesidir. Bu surecin temel kaygıları gereksinim degişikliklerinin yönetilmesi, gereksinimler arası ilişkilerin yönetilmesi ve de sistem mühendisliği süreçleri dahilinde üretilen gereksinim dökümanı ve diğer dökümanlar arasındaki bağımlılığın yönetilmesidir.Bu sürecı 4 başlık altında toplayabilriz:1-Analiz2-İzlenebilirlik3-Öncliklendirme4-Kabul

Kısaca belirtecek olursak, gereksinim 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.

2-YAZILIM GEREKSİNİM YÖNETİMİ NEDEN ÖNEMLİDİR?

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. Gereksinimlerdeki eksikleri gidermek, tasarım sırasında 10 kat, gerçekleştirim sırasında ise 100 kat daha fazla maliyettedir.

Page 4: Gereksinim Yönetimi

Proje yönetimi, gereksinimlerin yönetimi sürecinin verimliliğini ölçebilir. Bunun için şu ölçütler kullanılabilir: Her gereksinimin durumu, gereksinimlerin toplam kümülatif değişim sayısı, efor ve gereksinimlerin yönetiminde harcanan bütçe. Gereksinimlerin yönetimi sürecinin başarısızlığa uğraması direkt olarak proje yönetimini de etkileyeceği için detaylı bir “gereksinim yönetimi” yapılması gerekmektedir.

Her kullanıcaya ait gereksinimlerin dogru bir şekilde belirtilmesi, ve belirtimleri yaparken kalite odaklı yaklaşımlar kullanılarak, ortaya cıkan gereksinimlerin kaliteleri artırılır.Bu gereksinimlerin surdurulmesi, kontrolu ve degerlendirilmesi gereksinim yönetimine bağlıdır.Kullanıcıdan elde edilen bilgilerin ve de sistem gereksinimlerinin birlikte harmanlanarak ortaya yeni gereksinimlerin cıkmasını ve de zaman ıcınde kullanıcı gerekseinimlerinin degismesi sonucunda , gereksinimlerin tekrar duzenlenmesi hep bu surec tarafından yapılmaktadır.

Şekil-1 Gereksinimlerin ve Değişikliklerin Yönetimi

Geliştirme aşamasında alınan yanlış kararların sonradan düzeltilmesi pahalı olmaktadır. Gereksinim yönetim sürecinin sistematik ve yapısal yaklaşımlar sayesinde geliştirme sürecine geçmeden problemlerin önemli bir kısmı ortaya çıkarılıp, gerekli çözümler erken ve daha az maliyetle sağlanmaktadır. Alınan yanlış kararlardan daha yazılım geliştirmenin başlangıcında geri dönülebilmektedir.

Page 5: Gereksinim Yönetimi

Faaliyetleri yazılım sistemleri için birçok temel tesis eder. Tek hedef doğru, tam ve tutarlı bir gereksinim dokümanı hazırlamaktır. Müşterinin gereksinimlerini doğru algılamayı tetikler ve problemin içeriğine yönelik gözden geçirmeyi ön plana çıkarır. Ayrıca müşterinin de katılımcı olmasını sağlayarak doğrulama ve onaylama yöntemleri ile müşteriyi bağımlı kılar. İyi analiz edilmiş gereksinimler, yazılım tasarımı için sağlam bir iskelet oluşturup, değişimler izlenebilir ve ilişkilendirilebilir.

Gereksinim yönetim süreci, yazılım için bir test planı oluşturulmasına imkan verip, doğrulama ve sınamaların bu plan doğrultusunda gereksinim tabanlı yapılmasını sağlar. Gereksinim dokümanı, tasarım ve geliştirme aşamalarında doğruluk ve bütünlük kontrollerinin yapılabilmesi için temel referanstır.

Toparlamak gerekirse gereksinim yönetimi çok önemli bir konu ve önümüzü görerek kod yazmak istiyorsak kesinlikle gerekli bir süreçtir. Düşünün petrol yüklü bir tankeri yönetiyorsunuz ve sis içinde yol alıyorsunuz. Bir yere çarpsanız hem çevre kirliliğine hemde para kaybına neden olacaksınız. Böyle bir riski almaktansa bir iki radar sistemine yatırım yapmak ya da sisin kaybolması için beklemek en akıllıca iş olur. Aynen burdaki gibi gereksinimlerin yönetimi de bizim yazılım süreci boyuncaki radarlarımızdır.

2.2.YAZILIM GEREKSİNİMLERİHer ne kadar da makalenin konusu yazılım gereksinim yönetimi olsa da, ben

yine de eksik bilgisi olanlar için yazılım gereksinimlerinden de kısaca bahsetmek istedim.Gereksini yönetiminin temelini oluşturan gereksinim için belli bir sınır koymak aslında imkansızdır. Müşteri ile uzlaşışmış tüm istekler ve ortaya çıkabilecek tüm kısıtlar gereksinim olarak düşünülmelidir. Geniş bir aralıkta değerlendirilen gereksinimler, üst seviyedeki genel isteklerden yazılımın fonksiyonel detaydaki belirtimlerine kadar dağılım gösterir. Sonuçta hepsinin gereksinim olarak ele alınıp analizinin yapılması gerekir. Gereksinimler çok değişik şekilde sınıflandırılıp, farklı tiplere ayrılabilir.

ISO 12207'nin tanımına göre Yazılım gereksinimleri çözüm gerektiren bir yazılım süreci veya ürünle ilgili kapasite, fiziksel özellik veya kalite faktörelerini belirten ifadelerdir.RUP(Rotational Unified Process) ise yazılım gereksinimlerini şöyle tanımlamaktadır “Oluşturulacak olan sistemin sahip olması gereken koşullar veya kapasite değerleridir.”Yazılım gereksinimlerini 4 kısımda sınıflandırabiliriz::- Kullanıcı gereksinimleri: Doğrudan kullanıcıya yönelik, görsel ve fonksiyonel ağırlıklı gereksinimlerdir. Doğal dille yazılabilen, diyagramlarla gösterilebilen ve müşterileriler için hazırlanan gereksinimlerdir. Kullanıcı senaryoları (use-case) için temel oluşturur. Kullanıcıdan alındıkları için teknik anlamda detaylar içermeyebilir.

Page 6: Gereksinim Yönetimi

- Sistem gereksinimleri: Sistemin servislerinin detaylı tanımlamaları ile donanımsal yapılara özgü gereksinimlerdir. Üst seviyede sistem iskeletini tanımlarlar. Yapısal bir doküman olup müşteri ile yapılan anlaşma ve sözleşmeye göre hazırlanır.

- Özel kısıtlara yönelik gereksinimler:Yazılımın performansı ve niteliklerini tanımlayan subjektif olmayan kesin sınırlar ve kısıtlardır. Yazılımın etki alanını belirleyen gereksinimlerdir. Yazılımın geliştirilmesine yönelik kısıtlar da bu tip gereksinimlerdir.

- Yazılım Belirtimleri: Yazılımın geliştirme ve tasarıma yönelik detaylı şekilde belirtimleridir. Geliştiricilere yönelik hazırlanan teknik bir dokümandır.

Ayrıca gereksinimleri etki alanlarına göre de tekrardan sınıflandırırsak su sınıflar ortaya cıkar::1-İşlevsel Gereksinimler2-İşlevsel Olmayan Gereksinimler3-Çalışma Alanına özel Gereksinimler

Page 7: Gereksinim Yönetimi

Şekil-2 Gereksinimler Primadi

Gereksinimler yazılım süreci boyunca kesinlikle çok gerekli ve de olmazsa olmaz unsurlardandırlar.Çünkü kullanıcıların sistemden beklentilerini görmek, kaynaklar üzerindeki yapılan değişiklikleri takip etmek,ş,rket gereksinimlerinin farkına varmak, sistemin yapması gerekenlerin farkına varmak, oluşturulan sistemi görmek ve de test edebilmek için yazılım gereksinimleri gereklidir.

3.YAZILIM GEREKSİNİM YÖNETİM SÜRECİ ÖZELLİKLERİ

3.1.YAZILIM GEREKSİNİM YÖNETİMİNİN AMACI

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. Yazılıma atanmış olan gereksinimleri, yazılım mühendisliği ve yönetim için bir temel referans olmaları için kontrol etmek yazılıma atanmış sistem gereksinimleri ile yazılım planları, ürünleri, aktiviteleri tutarlı tutabilmek en temel amaçlardır. Bu amaçlara göre; Proje, yazılıma atanmış sistem gereksinimleri için yazılı ve kurumsal bir anlaşmayı takip etmelidir.

Yazılıma atanmış bu sistem gereksinimlerine “atanmış gereksinimler” denir. Atanmış gereksinimler, yazılım bileşenleri tarafından gerçekleştirilen sistem gereksinimlerinin bir alt kümesidir. Bu atanmış gereksinimler yazılım geliştirme planının birincil girdilerini oluşturur. Yazılım gereksinimleri analizi atanmış gereksinimleri sadeleştirerek yazılım gereksinimleri belgesi haline getirir. Bu oluşturulan belgede atanmış gereksinimler belge haline getirilmiş, raporlanmıştır,atanmış gereksinimler, yazılım yöneticileri, sistem test grubu, yazılım mühendisliği grubu, sistem mühendisliği grubu, yazılım kalite güvence grubu, yazılım yapılandırma (konfigurasyon) yönetim grubu, belgeleme/raporlama destek grubu tarafından gözden geçirilmiştir ve yazılım planları, ürünleri, aktiviteleri atanmış gereksinimlerdeki değişikliklere tutarlı bir şekilde değiştirilmiştir.

Gereksinim yönetiminin amacını özetle maddeleyecek olursak::

• Gereksinimlerin takibi, analizi için kullanıcı merkezli, organize bir yaklaşım sağlamak

• Gereksinimlerin nasıl ele alınacağını ve gereksinimlerin yönetimi planını ortaya koymak

-Kimler nasıl iş ile ilgili olacak?

Page 8: Gereksinim Yönetimi

- 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ınarak uygun yeni gereksinimler belirlemek

Başarılı bir proje dikkatlice oluşturulmuş ve belgelendirilmiş gereksinimlerle başlar.Gereksinim yönetimi ise bu gereksinimleri proje süreci boyunca projenin her aşamasına yardımcı olmayı amaçlar.

3.2.Yazılım Gereksinim Yönetim Sürecine Genel Bir Bakış

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 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. 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 istediklerininin anlaşılmasına çalışılmalıdır. Bunu yaparken, konuşma esnansı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 varolan 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.

Page 9: Gereksinim Yönetimi

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.Ayrıca ileriye ve geriye bildirim yaoulmasını sağlamaktadır ki bu da değişikliklerin kontrolünü artırmaktadır.

Yukarıdaki örnek bir izlenebilirlik matris örneğidir.Bu ornekte ileriye ve de geriye dogru takibin nasıl yapılabileceği görülmektedir.U ile başlayan gereksinimler, kullanıcı gereksinimlerini, S ile başlayan gereksinimler ise sistem gereksinimlerini göstermektedir.

Bu aşamalardan sonra elde edilecek olan gereksinim tanımlanma raporu, sistem tarafından sağlanacak fonksiyonlar, performans gereksinimleri, tasarım ve

Page 10: Gereksinim Yönetimi

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.

Gereksinimlerinin yönetiminin önemli amaçlarından biri olan gereksinimlerin tanımı raporu şu özelliklerde olmalıdır:

1-Doğru

2-Tamamlanmış, eksiksiz

3-Tutarlı

4-Kısa

5- İyi düzenlenmiş

Bu aşamadan sonra, gereksinimlerin yönetiminin bir parçası olan gereksinimleri izleme sürecinde, değişikliğe uğrayan gereksinimler geliştirici gurp ve müşteri tarafından karşılıklı onaylanmalıdır.

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

3.3.CMMI Kapsamında Yazılım Gerekesinim Yönetimi Süreçleri ve Planı

CMMI'ya göre iyi bir gereksinim yönetimi aşağıdaki özellikleri içermelidir::

• 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

Page 11: Gereksinim Yönetimi

- 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

CMMI, gereksinimler değişince onları bir şekilde yönetmek gerektiğini, bunu için de izlenmesi gereken yazılı bir belge/poliçe olması gerektiğini söyler.

Gereksinimlerin yönetimindeki asıl amaç, tüm projeleri kapsayan bir süreç hazırlamaktır. Gereksinimler tüm projelerde farklı olacaktır fakat genel şablon aynı olacaktır. Süreç şablonları değişmeyecektir.

3.3.1.Gerekli Yetenekler

Yetenek –1 Her proje için sistem gereksinimlerini analiz etme ve bunları yazılım, donanım ve diğer sistem bileşenlerine dağıtma sorumluluğu tanımlanmaSistem gereksinilerinin analizi ve atamalarının yapılması yazılım gereksinim yönetimi

grubunun sorumluluğu değildir fakat işleri için bir önkoşuldur. Sorumluluk şunları kapsar:

1. Gereksinimlerin yönetimi ve belgelendirilmesi ve bunların proje yaşam döngüsü boyunca dağıtımını yapma

2. Sistem gereksinimlerindeki değişiklikleri ve dağıtımlarını etkilemek, yönlendirme

Yetenek – 2 Atanmış gereksinimleri belgeleme/raporlama, yazıya dönüştürme

Atanmış gereksinimler aşağıdakileri içerir:

1.Yazılım projesinin aktivitesini belirleyen teknik olmayan gereksinimler (anlaşmalar, koşullar, anlaşma ile ilgili terimler).

Page 12: Gereksinim Yönetimi

• Anlaşma, koşul, anlaşmadan doğan terim örnekleri: • Hazırlanması gereken ürünler • Hazırlanma tarihleri • Ara raporlar (milestones)

2.Yazılımın teknik gereksinimleri.

• Teknik gereksinim örnekleri: • Son kullanıcı, işlemci, destek, birleştirme fonksiyonları • Performans gereksinimleri • Tasarım kısıtlamaları • Programlama dili • Arayüz gereksinimleri

3.Yazılım ürünlerinin atanmış gereksinimleri karşılayıp karşılamadığını ölçmek için kullanılacak olan kabul edilebilirlik kriterleri.

Yetenek – 3 Atanmış gereksinimler yönetiminin yapılabilmesi için kaynak ve bütçe sağlanması 1. Uygulama alanında ve yazılım mühendisliğinde yeterli tecrübesi olan kişilerin gereksinimleri yönetmek için atanması.

2. Gereksinim yönetimi için gerekli olan araçların sağlanması.

Örnek araçlar:

• Hesap çizelgesi programları • Yapılandırma yönetimi programları • İzleme programları • Test yönetimi programları

Yetenek 4 – Yazılım mühendisliği grubu üyeleri ve diğer yazılm ile ilgili grupların üyelerinin kendi gereksinim yönetim aktivitelerini yapabilmeleri için eğitim verilmesi

• Projede kullanılan metod, standard, süreç eğitimi • Uygulama alanı eğitimi (sağlık, eğitim, hukuk vs.)

Page 13: Gereksinim Yönetimi

3.3.2.Yapılacak Aktiviteler

Aktivite – 1 Yazılım mühendisliği grubu tarafından, gereksinimler yazılım projesine geçirilmeden önce atanmış gereksinimleri inceleme 1. Tamamlanmamış ve unutulmuş gereksinimler düzeltilir.

2.Atanmış gereksinimlerin:

• yapılabilir, yazılım ile gerçekleştirilebilir, • düzgün ve açıkca belirtilmiş, • test edilebilir, • birbiriyle tutarlı olup olmadıkları kontrol edilir.

3. Gereksinimleri atamaktan ve analiz etmekten sorumlu olan grup tarafından potansiyel olarak sorun teşkil edecek gereksinimler gözden geçirilir ve gerekli değişiklikler yapılır.

4. Atanmış gereksinimlerden etkilenen gruplar ile görüşmeler yapılır.

Etkilenen grup örnekleri:

• Yazılım mühendisliği • Yazılım tahminleme • Sistem mühendisliği • Sistem test elemanları• Yazılım kalite güvence • Belgeleme/raporlama destek

Aktivite – 2 Yazılım mühendisliği grubu, atanan gereksinimleri, yazılım planını, ürünü, aktiviteler için temel olarak kullanmak Atanmış gereksinimler:

1. Kontrol edilebilir, yönetilebilirdir. (Herhangi bir anda, ürünün hangi versiyonu olduğu bilinmektedir ve ne gibi değişiklikler yapıldığı bilinmektedir.)

2. Yazılım planı için referans olur

3. Yazılım gereksinimleri geliştirme için referans olur.

Aktivite – 3 Atanmış gereksinimlere yapılan değişiklikler incelenir ve yazılım projesine dahil edilir. 1. Kurum dışı gruplarla tayin edilen gereksinimler üst düzey yöneticiler tarafından

Page 14: Gereksinim Yönetimi

gözden geçirilir, kurum içi gruplara tayin edilen gereksinimler etkilenen gruplar tarafından gözden geçirilir.

2. Atanmış gereksinimlerdeki değişikler yüzünden plan, ürün, aktivitelerde yapılması gereken değişiklikler

• belirlenir, • değerlendirilir, • risk analizi yapılır, • planlanır, • etkilenen gruplarla iletişime geçilir, • tamamlanana kadar gözlemlenir.

3.3.3.Ölçümleme & Analiz

Atanmış gereksinimleri yönetmek için kullanılan aktivitelerin durumlarını belirlemek için ölçümlemeler kullanılırÖlçümleme örnekleri:

• Her gereksinimin durumu, • Atanmış gereksinimler için değişim aktiviteleri, • Atanmış gereksinimlere uygulanan değişimlerin kümülatif sayısı

3.3.4.Gerçekleştirimde Doğrulama

Doğrulama – 1 Atanmış gereksinimlerin yönetimi, periyodik aralıklarla üst düzey yönetim tarafından kontrol edilirBelirli aralıklarla yapılan bu kontrollerin amacı yazılım sürecine belirli bir soyutlama ile bakarak yanlışlıkların farkında olmaktır. Kontroller arasındaki zaman, raporlamalar ve yeni gelişmeler için yeterli olmalıdır.

Doğrulama –2 Atanmış gereksinimlerin yönetimi, periyodik ve olay-tabanlı olarak proje yöneticisi tarafından kontrol edilir

Doğrulama – 3 Yazılım kalite güvence grubu iş ürünlerini ve diğer sonuçları kontrol eder”””Bu kontroller aşağıdakileri doğrular:

1. Atanmış gereksinimlerdeki problemlerin, tutarsızlıkların yazılım mühendisliği grubu onları ele almadan önce çözülmesi

Page 15: Gereksinim Yönetimi

2. Atanmış gereksinimlerin değişiminde iş planlarının, ürünlerinin, aktivitelerinin doğru olarak gözden geçirilmesi

3.4.Yazılım Gereksinim Yönetimi Planı

Yazılım gereksinim yönetimi planı, yazılım gereksinim yönetim sürecinin bir parçasıdır.Daha önce de belirttiğim gibi yazılım yönetiminin amacı , müşteri ile geliştirici arasında ortak bir anlayış sağlayıp gereksinimlerin dogru bir şekilde belirlenmesi, kaliteli ve de değişebilir gereksinimlerin oluşturulmasını sağlamaktır.Yazılım gereksinim yönetimi planında da bu hedeflere nasıl ulasılacagı belirtilmekte belgelenmektedir.

Bu belgede genel olarak asagıdaki özellikleri içermektedir::

*Kullanılan gereksinim yönetimi araçları belirtilir.

*Temel polotikalar, standartlar, belgeler acıklanır

*Süreci gösteren diyagramlar çizilir

*Kimin nereden sorumluğu olduğu belirtilir.

4.Yazılım Gereksinim Yönetimi Araçları ve Süreç Boyunca Olusan Raporlar

4.1.Yazılım Gereksinim Yönetimi Raporları

Gereksinim yönetimi hakkında yapulan işlerin raporlanması şarttır.İlgili kişilere bilgi vermek gerektiğinde, yapılan işler ile ilgili geri blidirim gerektiğinde bu raporlardan faydalanılır.Asagıda süreç için önemli olan raporlar ve özellikleri belirtilmiştir.

Geriyi İzleme(Backward Trace) Raporu:Sistemdeki ögelerin kökenini gösteren bir rapordur.Bu rapor sayesinde gereksiz gereksinimleri farketmek kolaylaşır.

Uyum Matrisi:: Baska gereksinimlerle birlikte çalışan, baska gereksinimlerin ihtiyaç dydyğu gereksinimleri içerir.

Öncelikler Raporu:: Gereksinimlerin önceliklerini belirten rapordur.Genellikle maliyetinden dolayı pek fazla kullanılmaz.

Risk raporu::Gereksinimleri risk seviyelerine göre sıralayan, risklerini belirten bir rapordur.

Tamamlanmamış Gereksinimler::Atanmamış ve de varolan gereksinimleri içeren bir rapordur.

Page 16: Gereksinim Yönetimi

4.2.Yazılım Gereksinim Yönetimi Araçları

Gereksinim yönetim süreci boyunca , bu süreci kolaykaştıracak çeşitli araçlar mevcuttur.Bu araçları kullanmak tabi ki zorunlu değildir ama süreci kolaylaştırıcıdır.Yapılan işin karmaşık olması ve yüksek analitik düşünme gerektirmesi, ilgili araçların yapabileceklerini sınırlandırıyor.Bu araçlar gereksinim yönetim süreci boyunca, insan hafızasının yetersiz kaldığı noktalarda ve de görsel sonuçlar elde etme konusunda bizlere yardımcı olacaklardır.

Genel olarak bu araçların özelliklerine bakacak olursak, öncelikle hepsi de paylaşımı kolaylaştırmaktadır.Süreçten sorumlu herkes, ortak bir veri tabanından süreç ile ilgili bilgilere erişebileceklerdir.Bu durum çalışanların farklı mekanlarda olmalarına rağmen çalışabilmelerini kolaylaştırıacaktır.Ayrıca, yapılan işlerin orgineze bir şekilde olmasını, yapılan işlemlerin geri alınmasını, örneğin değiştirilen herhangi bir alanın 5 yıl sonra değişimden önceki haline gelmesi bu araçlar sayesinde sağlanabiliyor.Bununların dışında, her bir gereksinimin kaç kez değiştirildiğini, değiişikliğin kimin tarafından ve hangi nedenden ötürü yapıldığını da belirtir.Belirli şablonlarının olması , sınırların dışına çıkmayı engeller.

RTM WorkShop , Doors ve Caliber RM gereksinim yönetim süreçlerinde en çok kullanılan ürünlerdir.Her üçü de özel tanımlanmış ortak kullanılabilen veri tabanları içerirler.Doors son yıllarda populerliğini artıran bir ürün oldu.Bunun en temel sebeblerinden biri İzlenebilirliliği çok fazla artırmasıdır.Gereksinim yönetiminin en önemli noktalarından biri olan izlenebilirliliği artırması onu populer yapmıştır.Bunun dışında Doors'un DOORS Extension Language(DXL) adinda betik bir dili vardır.

Özetlemek gerekirse, yazılım gereksinim yönetimi araçları, yazılım gereksinim yönetimini yapan araçlar değillerdir daha fazla bu sürecin belgelenmesini, izlenilebilirliliğini kolaylaştıran araçlardır, süreç yönetimini yapan yine analitik düşünme yeteneği olan insandır.

5.Süreç Bilgisini Modelleyen Mevcut Çalışmalar

Yazılım Gereksinim Yönetiminde , kullanıcılarla olan görüşmeler, karşılıklı diyalogalar büyük bir yer kapladığı için, bu süreçle ilgili tam bir mevcut çalışma bulmak sanırım biraz zor.Burada bu süreç boyunca ortaya çıkan belgelerden örnekler vermek istiyorum.Bu ornekler SRS belgesi,yazılıım gereksinimleri dökümanı ,teslim dökümanı ve de yapılmıs bır surecı tamamen anlatan bir dokumandan olusacaktır.

Page 17: Gereksinim Yönetimi

1-Çindeki 6 şirketin Yazılım Gereksinim Yönetimi::Bu dökümanda Çindeki 6 şirketin,yazılım gereksinim yönetim süreci, tamamen ve de en ince ayrıntısıana kadar açıklanmıştır.Ön geliştirme aşamaları, mühendislik seviyeleri ve de oluşturulan dökğmantasyonlar belirtilmiştir.Kullanıcılarla yapılan görüşmelerde sorulan sorular, yapılan işlemler ve de sıraları, gereksinimlerin nasıl ele alındığı, nasıl önceliklendirildiği belirtilmiştir.Ayrıca bu 6 şirketin yönetim gereksinim yönetimleri karşılaştırılmış, elde ettikleri sonuçlar belirtilmiştir.

Referans::http://www.iaeng.org/publication/IMECS2009/IMECS2009_pp1672-1676.pdf

2-Web Servislerinin gereksinim yönetimi Ontolojileri:Bu belge web servislerinin gereksinim yönetimi ontolojilerini anlatmaktadır.

Referans:http://www.csd.uoc.gr/~hy565/newpage/docs/pdfs/papers/requirements_for_ontologies.pdf

3-PHP IDE Geliştirme Aracı Gereksinim Dökümanı::Bu dökümanda, php ile yazılım geliştirirken ortay çıkan ihtiyaçları karşılamak ve de bir framwork sunmuk için geliştirilmiş bir sistemin gereksinim dökümanıdır. Doküman içerisinde gereksinimlerin listesi, öncelikleri , gerekçeleri ayrıntılı bir şekilde verilmiştir.

Referans::http://www.eclipse.org/pdt/documents/PDT%200.7%20SRS.pdf

4-Rezervasyon Takip Sistemi Yazılım Gereksinimleri Dökümanı::Bu Doküman, oluşturulmuş bir rezervasyon takip sisteminin yazılım gereksinim dökümanıdır.Burada Use-Case diagramları, İzlenebilirlik Matrisi, uml diyagramları,sistemin özellikleri, kişiler ayrıntılı olarak belirtilmiştir.

Referans::http://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbnxta2d1bmdvcnxneDo2OGU4MWUxNzllMjE3Mjg5

**Acmak için bilgisayarınıza kaydetmeniz gerekmektedir.

5-Gereksinim yönetimi Planı:

Yazar::MJY team GeorgeMason University

6-Gereksinim Yönetimi Planı ve Gereksinim Belgesi::Bu belgede , Amerika ulusal arşiv kayıt mudurlugu elektronik arşiv otomosyanu için gerekli gereksinimleri ve de uygulanacak gereksinim yönetimi polotikalarını içermektedir.

Page 18: Gereksinim Yönetimi

Yazar :Dyung Lee

Referans:http://www.archives.gov/era/pdf/requirement-management-plan.pdf

7-Gereksinim Yönetimi Planı Raporu Template:: İlgili raporun nasıl olması gerektirdigini icerir.

Referans:www.jiludwig.com/templates/RM_Plan.doc

8- Enterprise System (Mosaic Project) Gereksinim Yönetim Planı Belgesi:: Mosaic projesinin kullanıcı ve işlevsel gereksinimlerin anlasılmasını kolaylastıran, proje yasam dongusu icerisinde gereksinim yönetiminin rolunu belli eden bir belgedir

yazar:??referans:http://www.okdhs.org/NR/rdonlyres/0871EDA5-6D35-45F9-A7B9-16A6025FFF79/0/MOSAICRequirementsMgmtPlan_EPMO_03022009.pdf

6.Gereksinim Yönetimi Diyagramları

6. 1.Yazılım Gereksinim Yönetimi EPC Diyagramı

Yazılım gereksinim yönetimi, birçok aşamayı içermektedir ama bunların gerçekleştiriminden çok bunların kontrolu , nasıl yapılacağı ile ilgilidir.Bundan dolayı EPC diyagramında surecin yaptıkları dısında kontrol ettiği evreleri de göstermeyi uygun gördü

Epc diyagramını çizerken baska bir arac kullandıgım için burada pek net olmadı, arzu halinde [email protected] adresinden .jpeg seklini size gönderebilirim.

Page 19: Gereksinim Yönetimi
Page 20: Gereksinim Yönetimi

6.2.Gereksinim Yönetimi Sınıf Çizenegi ile Modellenmesi

Page 21: Gereksinim Yönetimi

Yukarıda gördügünüz diyagram yazılım gereksinim yönetimi sınıf diyagramıdır.Bu diyagramı çizerken, genel olarak öngörülen gereksinim yönetimi şekillerini göz önunde bulundurduğum gibi kendi görüşlerimi de ortaya attım. Ornek olarak gereksinim yönetim planını en az 3 en fazla 10 kişinin yapacagını ongordum tabi ki bu sayılar projeden projeye hatta kişiden kişiye degisebilmektedir.Cızenegı incelerken ekran oranını % 150 yapmanız size kolaylık saglayacaktır.

Cızenekdeki onemli sınıflar hakkında bilgi vermek istiyorum.

Gereksinim Yönetimi:Gereksinim Yönetimi sınıfı, gereksinim yönetimi sınıfı polotikasını ve yontemini icerir ve singletondır.

Sistemin Paydasları::Sistemi yasam dongusu boyunca calısan elemanları icermektedir.Gereksinimlerin analizi, belirlenmesi, degistirilmesinden sorumludurlar.

Gereksinim Degisiklikleri:Gerek sistemden dogan gerekse kullanıcının degıstırmek istedigi gereksinimleri icerir.Ayrıca gereksinimlerin anlasılmasından sonra ortaya cıkacak gereksinimleri de icerir.

Gereksinimleri Anlamak:Sistem paydaslarının gereksinimleri analiz etmeleri sonucu ortaya cıkar.

Gereksinimler:Sistemdeki gereksinimleri icerir.Gereksinimleri Anlamak sınıfı ile ilişki içerisindedir cunku Anlasılmamıs gereksinimler bisey ifade etmedigi icin gereksinimler ile iliski icerisindedir.

Gereksinim Yönetim Planı::Sistemin paydasları tarafından belirlenir.Olusturulacak olan Gereksinim yönetim planını ifade eder.

Gereksinimlerin İzlenebilirligi:Gereksinimleri izleme olayını ifade eder.İzlenebilirlik Matrisini icerir.Bir takım aracları kullanır.

Gereksinimlerin Dogrulanması::Olusturulmus gereksinimlerin dogrulanması asamasını ifade eder.

Raporlar::Olusturulacak olan Raporları ifade eder.

Gereksinim Yönetim Araçları:Sistemde kullanılacak olan gereksinim yönetim araclarını belirtir.

Page 22: Gereksinim Yönetimi

7.SONUÇ

Yazılım gereksinim süreci , gereksinimlerin yönetimi için kritik bir faaliyettir.Müşterinin sesinin yazılım süreci boyunca iyice duyulmasını sağlayan, müşterinin istediği gereksinimler, bu gereksinimlerden oluşan gereksinimleri ve de gereksinimlerde oluşacak değişikliklerin, güvenli bir şekilde ele alınmasını , ortaya çıkmasını sağlayarak sistemin evrim ve bakım aşamalarında daha verimli ve doğru bir şekilde geliştirilmesini sağlar.En büyük özelliği izlenilebilirliliği artırmaktır.

Bu sureci destekleyen teknik yaklaşımlar ve araçlar vardır ama bunla sadece yardımcıdır sonuçta yönetimin kontrolü tamamen sistemin paydaşları tarafından yapılmaktadır.

8.Kaynaklar::

http://www-01.ibm.com/software/tr/rational/rm/

http://www.ariscommunity.com/users/frlu/2010-07-21-product-and-business-requirements-management

http://analystdeveloper.com/blogs/gurkan/archive/2006/05/24/3127.aspx

http://www.stsc.hill.af.mil/resources/tech_docs/gsam4/chap4.pdf

http://www.software-quality-assurance.org/cmmi-requirements-management.html

http://www.softwareprojects.org/software-requirement-management-10.htm

http://www.cs.ucl.ac.uk/staff/A.Finkelstein/advmsc/12.pdf

http://csharpnedir.com/articles/?filter=edited&author=&cat=yaz&title=Yazılım Müh.

http://en.wikipedia.org/wiki/Requirements_management

http://www.ibm.com/developerworks/rational/library/2830.html

res://ieframe.dll/acr_depnx_error.htm#digite.com,http://www.digite.com/products/requirement-management.htm

http://www.poddarco.com/2009/07/02/requirements-life-cycle-updated/

http://www.kovair.com/alm/alm-requirements-management.aspx

Page 23: Gereksinim Yönetimi

http://www.ariscommunity.com/users/frlu/2010-07-21-product-and-business-requirements-management

http://www.stsc.hill.af.mil/resources/tech_docs/gsam4/chap4.pdf

http://2003.reconf.de/Resources/Presentation/CMMI_Paper.pdf

ftp://ftp.cs.hacettepe.edu.tr/pub/dersler/BIL4XX/BIL445_YMK/2.%20arasinav%20odevi%20(ilk%20teslim%3A%2020%20aralik)/ornek%20ontoloji/Ontology-based%20intelligent%20decision%20support%20agent%20for%20CMMI%20PMC_2007.pdf