Proje bir probleme çözüm bulma ya da beliren bir fırsatı değerlendirmeye yönelik, bir ekibin, başlangıcı ve bitişi belirli bir süre ve sınırlı bir finansman dâhilinde, birtakım kaynaklar kullanarak, müşteri memnuniyetini ve kaliteyi göz önünde bulundururken olası riskleri yönetmek şartıyla, tanımlanmış bir kapsama uygun amaç ve hedefler doğrultusunda özgün bir planı başlatma, yürütme, kontrol etme ve sonuca bağlama sürecidir.
Bir projenin başarılı sayılabilmesi için iyi bir planlama sürecinin ardından mükemmel bir yürütme ve kontrolle sonuçlandırılmış olması gerekir. Bu sürece ise proje yönetimi en temel isimlendirmesiyle Proje Yönetimi denir.
Proje yönetimi belli bir projenin hedef ve amaçlarına ulaşıp bitirilmesi için eldeki kaynakların en verimli şekilde planlanması, organize edilmesi, tedarik edilmesi, yönetilmesi ve proje faaliyetlerinin kontrol edilmesi disiplinidir.
Proje yönetim aşamalarında yeterli titizliğin gösterilmemesi ve mühendislik faaliyetlerin etkin bir biçimde yerine getirilmemesi neticesi olarak ortaya çıkan ürünler, ürünün yaşam döngüsünü içine alan operasyon süreçlerinde çeşitli sorunlara ve geri dönülmez hatalara neden olabilmektedir. Projelendirme aşamalarında önceden tespit edilebilen hatalar ise muhtemel riskleri bertaraf edici olacaktır.
Benzer şekilde yazılım projelerinde de hataların erken aşamalarda tespit edilebilmesi, ürünün ortaya çıkması ve operasyonel süreçlere geçildikten sonra hata tespit edilmesinden çok daha önemli ve düzeltilme maliyeti çok daha düşüktür.
Şekil 1 Yazılım Yaşam Döngüsü ve Hata Tespit Maliyetleri
Şekil-1’ de de görüleceği üzere herhangi bir yazılım projesinde sadece kodlama yaparak işi tamamlamak, kaliteye etki edecek kritik aşamaları ihmal etmek, zaman ilerledikçe geri dönülmez sorunlara neden olabilmekte, işletmeleri yüksek maliyetlere mecbur kılmakta, çoğu zaman ise ürünler kullanılamaz hale gelmektedir.
2- PROJENİN TANIMI
“Proje eşsiz bir ürün ya da hizmet yaratmak için geçici bir çaba girişimidir.
” “A project is defined as a temporary endeavor to deliver a unique product or service.”
Proje Yönetim Sistemi İle Yanıtlamaya Çalıştığımız Konular;
- Somut, ölçülebilen çıktı ve sonuçlar yaratan projeler üretmek
- Proje kapsamındaki görevlerin kimler tarafından tamamlanacağını belirlemek
- . Her görevin ne zaman yapılacağı ve ne kadar süreceğini tanımlamak
- Her bir görevin ne kadara mal olacağı belirlemek
- Bazı görevler planlandığı şekilde tamamlanamazsa ne olacağını öngörmek
- Proje ile ilgili olan kişilere projenin ayrıntılarının en iyi şekilde nasıl iletileceğinin belirlenmesi Bu kapsamda tüm proje boyunca anlık ve geleceğe dönük değerlendirmeler yapılır.
(Ex ante) Evaluations : ön görü (ön izleme) (Ex post) Evaluations : değerlendirme
3- PROJE YÖNETİMİ
Projeyle ilgili tarafların (Paydaşlar) gereksinim veya beklentilerini karşılamak veya onların üzerine çıkmayı sağlamak üzere bilgi, beceri, araç ve teknikleri uygulama bilimi ve sanatıdır. Paydaşların ortaya koyduğu gereksinimleri sağlamak veya onların üstüne çıkmak rekabetçi isteklerin dengelenmesiyle olmaktadır:
- Kapsam, zaman, maliyet, kalite ve diğer proje hedefleri
- Farklı müşteri veya proje sahiplerinin istekleri
- Tanımlanmış veya tanımlanmamış gereksinimler (beklentiler)
Proje yönetiminin diğer bir tanımı:
BÖL – YÖNET ve BİRLEŞTİR – DENETLE
Program: Birden fazla projenin bütünü olup, ilgili projelerin birlikte tek tek yönetiminden daha çok “yarar” sağ- lamak üzere koordineli yönetimini kapsar.
Portföy: Projelerle birlikte kurumun diğer süre giden çalışmalarıyla birlikte ele alınıp “stratejik hedeflere” göre değerlendirildiği bütüncül bir yapıyı tanımlar.
Alt Projeler: Daha iyi yönetim sağlamak üzere ana işin alt parçalara bölünmesinden oluşan projelerdir.
Projenin Başarı o – Performans, (Kapsam, Kalite ve işlevsellik) Maliyet ve Zaman hedefleri arasında fonksiyonel bir ilişki vardır.
f (performans, maliyet, zaman) = c (Amaç ve Hedefler)
Bu ilişki projeden projeye, proje içinde ise zaman zaman değişir. Proje yönetiminin temel işlevi bu hedefler arasındaki değişikliği değerlendirerek çözümlemek ve yönetmektir.
Şekil 2 Kaynaklar Performans Kalite, İşlevsellik, Kapsam
3- PROJE PLANLAMA SÜRECİ
Proje yöneticisi kendisine verilen yetki ve sorumluluklar çerçevesinde bir proje planlama ekibi oluşturur ve aşağıdaki şekilde gösterilen süreçler içinde temel soruların cevaplarını arar. Bu soruların cevapları “Proje Yönetim Planı” içinde temel bazlara karşılık gelecek şekilde yanıtlanır.
4- PROJE YÖNETİMİNDE OLMASI GEREKEN BİLEŞENLER
Proje yönetimi 9 temel bileşenden oluşmaktadır. Proje yönetimini bütün yönleriyle kavrayabilmek ve başarılı olabilmek için bu bileşenlerin her birinin ayrıntılı olarak uygulanması ve tümünün bir arada, karşılıklı etkileşim ve uyum içinde yürütülmesi gerekmektedir.
4.1. Proje Entegrasyon Yönetimi
“Entegrasyon, projenin paydaş beklentileri başarıyla yönetilmek ve gereksinimler yerine getirilmek suretiyle tamamlanması açısından çok önemli olan birleştirme, pekiştirme ve bütünleştirme eylemlerini içine alır
Proje Entegrasyon Yönetimi süreçleri şunlardır:
- Proje başlatma belgesinin hazırlanması,
- Proje yönetim planının geliştirilmesinin hazırlanması,
- Projenin yürütülmesinin yönetilmesi,
- Proje çalışmalarının izlenmesi ve kontrolü nasıl ve ne şekilde olacak?
- Entegre olacaksa ne şekilde olacak?
- Projenin ve ya fazın kapatılması
4.2. Proje Kapsam Yönetimi
Projenin gerektirdiği tüm gerekli çalışmaların ve sadece gerekli çalışmaların belirlenmesi amacıyla kapsamın planlanması, tanımlanması, doğrulanması ve kapsam değişikliklerinin yönetimidir .
Proje Kapsam Yönetimi süreçleri şunlardır:
- Gereksinimlerin toplanması,
- Kapsamın tanımlanması,
- İş Kırılım Ağacı (İKA)’nın oluşturulması,
- Kapsamın doğrulanması,
- Kapsamın kontrolü
4.3. Proje Zaman Yönetimi
Projenin zamanında tamamlanabilmesi için gerekli süreçlerden oluşur. Proje Zaman Yönetimi süreçleri şunlardır:
- Aktivitelerin tanımlanması,
- Aktivitelerin sıralanması,
- Aktivite kaynaklarının tahmin edilmesi,
- Aktivite sürelerinin tahmin edilmesi,
- Zaman çizelgesinin geliştirilmesi,
- Zaman çizelgesinin kontrolü
4.4. Proje Maliyet Yönetimi
Projenin onaylanan bütçeyi aşmadan tamamlanması amacıyla;
- Kaynak planlaması,
- Maliyet hesapları,
- Bütçeleme,
- Maliyet denetimi
gibi konuları kapsayan bir finansal analiz çıkarılır.
4.5. Proje Kalite Yönetimi
Projeyi yürüten organizasyonun, projenin yapılma amacı olan ihtiyaçları karşılamasına yönelik kalite politikalarını, hedeflerini ve sorumluluklarını belirleyen süreçlerini ve aktivitelerini içerir .
Kalite yönetiminde müşteri memnuniyeti şarttır; önlem almak sonradan kontrol etmekten önemlidir. Proje Kalite Yönetimi süreçleri şunlardır:
- Kalitenin planlanması , (Projeyle ilgili uzun vadeli destek planlaması nelerdir?)
- Kalite güvencesinin sağlanması, ( Garanti şartaları nelerdir)
- Kalite kontrolünün gerçekleştirilmesi (Proje tesliminden sonra sistematik kontrol edilecekmi??
4.6. Proje İnsan Kaynakları Yönetimi
Proje ekibinin organize edilmesine, yönetilmesine ve yönlendirilmesine yönelik süreçleri içerir
Proje İnsan Kaynakları Yönetimi süreçleri şunlardır:
- İnsan kaynakları planının geliştirilmesi, ( Personelin hangi özelliklerde olacağı)
- Proje ekibinin oluşturulması, (Kaç kişiden proje oluşması gereklidir.)
- Proje ekibinin geliştirilmesi,
- Proje ekibinin yönetilmesi (Proje kim tarafında yönetilecek)
4.7. Proje İletişim Yönetimi
Proje taraflarına gerekecek olan bilgilerin ve iletişim gereksiniminin belirlenmesini içeren iletişimin planlanması, ihtiyaç duyulan bu bilgileri zamanında sunmaya yönelik olarak bilginin dağıtılması, performans bilgilerinin derlendiği ve yayınlandığı performansın raporlanması, gereksinimleri karşılayıp sorunları çözmek için proje tarafları arasındaki iletişimin yönetilmesini içeren proje taraflarının yönetilmesi konularını kapsar.
4.8. Proje Risk Yönetimi
Proje risk yönetiminin hedefleri, projede olumlu olayların olasılığını ve etkilerini artırmak, olumsuz olayların olasılığını ve etkilerini azaltmaktır.
Proje Risk Yönetimi süreçleri şunlardır:
- Risk yönetiminin planlanması,
- Risklerin tanımlanması,
- Niteliksel risk analizinin yapılması,
- Niceliksel risk analizinin yapılması,
- Risk yanıtlarının planlanması,
- Risklerin izlenmesi ve kontrol edilmesi
4.9. Proje Tedarik Yönetimi
Mal ve hizmet alımlarının gereğince yapılması amacıyla;
- Satın alma planlaması yapılması,
- Ürün gereksinimlerinin dokümante edildiği ve potansiyel kaynakların tanımlandığı sözleşme planlanır,
- Projenin ihtiyaçlarını karşılayabilmek için olası satıcılardan teklif toplanılır,
- Toplanan tekliflerin değerlendirilip satıcıların seçilir,
- Sözleşme kıstaslarının yerine getirildiğinin kontrol edildiği sözleşme yönetiminin yapılması,
- Hem ürünün onaylanması hem de yönetimsel kapanışa yönelik sözleşmenin sonlandırılması konularını kapsar.
- Yazılım Aşamasında Nasıl Yollar İzlenmelidir ?
5.1. İhtiyaç ve Gereksinmelerin Belirlenmesi
- İhtiyaçların tespit edilmesi
- İhtiyaçların sınıflandırılması (Kritik, Talep Edilen, Opsiyonel)
- Sistem ile üretilecek çözüm nedir, nasıl üretilecektir?
- Müşteri beklentileri nelerdir? Kimlere hitap edecek?
- Hangi özellikleri hangi işlevleri olması bekleniyor?
- Bu özellik veya işlevlerin nasıl olması bekleniyor?
- Gereksinimler önceliklendirildi mi?
- Hangi özellikler/işlevler olması beklenir?
- Bu özellik/işlev ne yapmalıdır?
- Ne yapması bekleniyor?
- Kimler bu özelliklere nasıl ve ne zaman erişmeli?
- Süreç nerede başlamalı?
- Sonraki adım ne olmalı?
- Sonuçlar nerede görüntülenmeli?
- Kimler, nasıl görüntülenmeli?
- Sonuçlar neleri içermeli?
- Hangi gereksinimler sistemde mutlaka olmalı hangileri olursa iyi olur?
- Gereksinimlerle ilgili herhangi bir kısıt, iş kuralı, varsayım var mı?
- Başka türlü yapılabilir mi, nasıl yapılabilir?
- Belirlenen gereksinimler paydaşların ihtiyaçlarını karşılıyor mu?
- Tüm gereksinimlerin detayları alındı mı? Bu detaylar yeterli mi?
- Dokümanda tüm gereksinimler yer alıyor mu?
- Gereksinimlerin belirlenmesi için gerekli toplantılar, aktiviteler yapıldı mı?
- Bu aktivite ve toplantılar yeterli mi?
- Çözüm şirket politikalarına uygun mu?
- Gereksinim dokümanı oluşturuldu mu?
- Bu doküman paydaşlar ile paylaşıldı mı?
- Paydaşlardan bu dokümanın onayı alındı mı?
- Paydaşlar ile gereksinimler üzerinde hemfikir olundu mu?
- Gereksinimlerin tümünü anladım mı?
- Atladığım herhangi bir talep var mı?
- İhtiyaç net bir şekilde tanımlanmış mı?
5.2. Analiz Süreci
Gereksinim geliştirmenin amacı; kullanıcı, ürün ve ürün bileşeni gereksinimlerinin analizi ve üretilmesidir.
Bu işlem alanı CMMI’da belirtildiği üzere 3 tip gereksinim tanımlar : Müşteri gereksinimi, ürün gereksinimi ve ürün bileşen gereksinimleri. Bu gereksinimler ilgili paydaşların gereksinimlerini adresler. Bununla beraber gereksinimler aynı zamanda tasarım çözümleri tarafından seçilen kısıtları da adresler.
- Yazılım geliştirme süreci aşamaları:
- Gereksinim Analizi / Requirements (Requirements Analysis)
- Spesifikasyon / Specification (Functional Specification)
- Mimari / Architecture (Software Architecture)
- Dizayn / Design (Software Design)
- İmplementasyon (Programlama) / Implementation (Computer Programming)
- Test / Testing (Software Testing)
- Sahaya Yerleştirme / Deployment (Software Deployment)
- Bakım / Maintenance (Software Maintenance)
Bütün geliştirilen projelerin gereksinimleri vardır. Bir projenin bakımına odaklanıldığında, ürün ya da ürün bileşenlerinde değişiklik yapılırken varolan gereksinim, tasarım ve implementasyondaki değişiklikler baz alınır. Müşteri ya da kullanıcının isteklerinde bir değişiklik olursa ya da gereksinim geliştirme işleminden alınan yeni gereksinimlerin formunda bir değişiklik olursa, gereksinimler değişebilir.
Gereksinim geliştirme şu aşamaları içerir:
- Müşteri ihtiyaçlarının, beklentilerinin ve paydaşlara ne sağlayacağını anlamaya yönelik müşteri gereksinimlerini sağlayan kısıtların meydana çıkarılması, analizi, geçerlemesi ve bağlantısı.
- Paydaşların ihtiyaçlarının koordine edilmesi ve toplanması
- Ürünün yaşam döngüsü gereksinimlerinin geliştirimi
- Müşteri gereksinimlerinin belirlenmesi
- Müşteri gereksinimleriyle tutarlı ilk ürün ve ürün bileşen gereksinimlerinin belirlenmesi
Bu işlem alanı tüm müşteri gereksinimlerini adresler. Müşteri gereksinimleri, ürün ve ürün bileşen gereksinimlerinde çıkarılmıştır. Müşteri gereksinimlerine ek olarak, ürün ve ürün bileşen gereksinimleri seçilmiş tasarım çözümlerinden türetilir.
Analiz; rakip alternatiflerden tüm seviyelerde tüm seviyelerde gereksinimleri anlamak, tanımlamak ve seçmek için kullanılır. Analiz aşağıdakileri içerir:
İlgili paydaşların ihtiyaçları, operasyonel çevre ve genel müşteri ve son kullanıcı beklentilerini ve memnuniyetini yansıtan faktörleri de içeren, her ürün yaşam döngüsü fazı için ihtiyaçların ve gereksinimlerin analizi
Bir operasyonel konseptin gelişimi
Gerekli işlevselliğin tanımı
İşlevselliğin tanımı, yazılım geliştirmedeki yapısal analizle aynı olmayan işlevsel analiz olarak da ifade edilebilir. İlerlemek için ayrıntılı tasarımı ve ürünün testini mümkün kılan etkin bir tanım varolana kadar bir ürün mimarisinin daha ayrıntılı katmanlarında tekrarlı olarak analiz meydana gelir. Gereksinim analizi ve işlevsel konseptin bir sonucu olarak, fabrikasyon ve üretim konsepti aşağıdaki hususları dikkate alarak türetilmiş gereksinimler üretir.
Sistem Gereksinim Analizi
Sistem gereksinim analizi, gereksinim analizinin özelleşmiş bir şeklidir. Amacı; tanımlı paydaş gereksinimlerini sistem gereksinimlerine dönüştürmektir. Sistem gereksinim analizi sonucunda;
- Sistemin fonksiyonel ve fonksiyonel olmayan gereksinimlerinin bir kümesi tanımlanır.
- Seçilen proje çözümünü optimize etmek için uygun teknikler işletilir.
- Sistem gereksinimleri doğruluk ve test edilebilirlik için analiz edilir.
- İşletim ortamı üstünde sistem gereksinimlerinin vuruşu anlaşılır.
- Gereksinimler önceliklendirilir, onaylanılır ve gerekliyse güncellenir.
- Sistem gereksinimleri ve müşteri gereksinimleri arasında tutarlılık ve izlenebilirlik onaylanır.
- Temelin üstüne değişiklikler, maliyet, iş takvimi ve teknik işler için değerlendirilir.
- Sistem gereksinimleri tüm parçalara ve temele iletilir.
Neden yazılım üretmeliyim?
Yazılımı hangi amaçla kullanacağım?
Kullanacağım alanda hangi yazılımlar mevcut? gibi sorulara cevap aranmalıdır.
Bu soruların cevapları göz önüne alınarak yazılımın içeriği belirlenmelidir. İçerik belirlenirken; Oluşturacağımız yazılımda neler hedeflediğimizi, Yapmamız gereken faaliyetlerin başlangıçtan bitişe kadar ki aşamaları, Kullanacağımız kaynak ve tüm belgeleri, Yazılım içeriği çerçevesinde karşılaşılabilecek problemler ve çözümleri analiz aşamasında oluştururuz.
5.3. Demo Çalışması
Demo talepleri uygunluk durumuna göre yerinde yada uzaktan sunum, prototip oluşturma şeklinde değerlendirilebilir.
- Müşterinin talep ve istekleri alınıp analiz edildikten sonra demo çalışmasına başlanır.
- Amacı; yazılım ihtiyacı olan tarafın, nasıl bir şey olacağı konusunda fikir sahibi olmasıdır.
- Yazılımı oluşturan kişinin veya kişlerin nasıl bir şey yapacağı konusunda ellerinde bir prototip oluşturarak daha hızlı ve kolay yol almalarını sağlar.
- Demo yazılıma geçilmeden önce yazılımı oluşturan veya kullanacak olan tarafların eksiklikleri daha rahat görmesini ve kullanım kolaylığını daha fazla nasıl sağlayabilecekleri konusunda fikir sahibi eder.
- Demo yazılım safhasında, süreci hızlandırır.
- Oluşturulan demo sayesinde yazılımı yapacak taraf bütçeyi çok rahat çıkarabilir.
- Oluşturulan demo sayesinde yazılımı yapacak taraf projenin maksimium bitiş süresini rahatlıkla çıkarabilir.
5.4. Tasarım Aşaması
TASARIM SÜRECİ
- Sorunu araştırma
- Tanımla ve çözümü tartışma
- Tasarımın genel özelliklerini belirleme
- Taslak tasarım önerisi geliştirme
- Tasarım önerisine yönelik araştırma
- Tasarim Önerisi Geliştirme
- Yapım
- Değerlendirme ve test etme
- Değişiklik Önerme
Tasarım : Zihinde canlandırılan biçimdir, çeşitli sorunların çözümlerinin geliştirildiği bir süreçtir.
Projeye Yönelik Tasarım Sürecini Yaşarken
Tasarımızın Genel Özellikleri Belirleyin !
Tasarımınızda olması gereken genel özellikleri belirlerken şu sorulara cevap arayın.
- Kim için kullanılacak ?
- Nasıl kullanılacak ?
- Nerede kullanılacak ?
- Neden kullanılacak ?
- Biçimi nasıl olacak ?
Tasarımınızın; Amacı, ölçüleri, boyutu, rengi, biçimi, estetik özellikleri, kimin için tasarlandığı, nerede kullanılacağı, hangi işe yarayacağı gibi bilgileri yazınız .
Taslak Tasarım Önerisini Geliştirin !
Genel özelliklerini belirlediğiniz, tasarım önerinizin taslak çizimini yapınız, taslağınızı anlatınız. Birden fazla öneriniz varsa araştırmak ve geliştirmek üzere birini seçiniz.
Tasarımı Geliştirmeye Yönelik Araştırma Yapın !
Daha önceden yapılmış olan ve benzer amaçlar için kullanılan, ürünleri ve sistemleri araştırın. Benzer tasarımları, gerçek ürünleri inceleyin. Araştırmalarınızın sonucundaki bilgilerin ve resimlerin toplanmaı, yorumlanması.
Tasarımı Gerçeklekleştirmeye Yönelik Araştırmalar Yapın !
Daha önce tasarımınız için belirlediğiniz genel özellikleri taşıyan projenizi ; nasıl gerçekleştireceğinizi, kullanacağınız araç – gereç ve malzemeleri, kullanacağınız yöntem teknikleri ve sonucun belirlenmesi.
Tasarım Önerisi Geliştirin !
Araştırma sonuçlarınızı dikkate alarak tasarımınızın yapım resmini çizin Rengini – Uygulayacağınız Yöntem ve Teknikleri belirtin.
Yapım Aşamaların Çok Önemli
Tasarımınızı gerçekleştirmeye yönelik, işlem basamaklarınızı – yapım sürecinizi planlayın.Tasarımınızı gerçekleştirmek için kullanacağınız araç – gereçlerin belirleyin. Değerlendirin ve Test Edin !
Daha önce belirlediğin genel özellikleri tasarımında görebiliyor musun ? Arkadaşlarının ve çevrendekilerin görüşlerini alarak aşağıdaki soruları cevaplandırıp tasarımını test et ve sonuca göre istersen eğer ;
-Sorun çözümlendi mi ?
-İhtiyacı karşılıyor mu ?
-Birleştirme ve şekillendirme tekniğin uygun mu ?
-Kullandığın araç ve gereçlerin avantaj ve dezavantajları nelerdir ?
-Benzer ürünlere göre zayıf ve üstün yanları var mı ? Bunlar nelerdir ?
-Hangi özelliklerin değiştirilmeye ihtiyacı var?
-Daha fazla geliştirebilir misin?
Değişiklik Öner !
Değerlendirme ve test sonuçlarını dikkate alarak değişikliğe gerek olup olmadığına karar ver. Gerekçesi ile yapmak istediğin değişikleri yazarak, çizerek ifade edelebilir.. Tasarımınızın ilgi çekici, özgün – farklı ergonomik ( kullanımı kolay… ), estetik ( güzel görünümlü… ) olması gerekmektedir.
5.5. Kodlama Aşaması
5.5.1.GİRİŞ
Kaliteli yazılımlar, kabul edilebilir düzeyde hatasız, planlanan bütçe ile zamanında bitirilip dağıtılabilen, gereksinimleri ve/veya beklentileri karşılayabilen ve sürdürülebilir özelliklere sahip yazılımlardır. Ancak, kalite terimi kişilere göre oldukça değişebilen bir terim olup müşterisinin kim olduğuna ve yazılımda hedeflenen unsurlara bağlı olarak farklılıklar gösterebilmektedir.
5.5.2.YAZILIM ANALİZİNİN YAPILMASI
Ön tasarım çalışmaların tamamlanmasının ardından firma üretime başlama kararı alabilir. Alınan bu karar, ön çalışmalar ışığında olmalı, olası riskler önceden belirlenmelidir. Analiz aşamasında, firma belirleyeceği bir ya da daha çok müşteri üzerinde çalışmalıdır. Ancak, analiz araştırmalarında birden çok müşteri ile çalışmak, sektörün tanınması ve daha kapsamlı analiz (ya da çözümleme) yapma olanağı sağlar. Çoğu sektörde homojen bir yapının olmadığı, bilinmesi gereken önemli bir husustur.
Analize kaynak olan unsurlar:
- Yazılıma ihtiyaç duyulmasının nedenleri.
- Faaliyetlerin, başlangıçtan bitişe doğru aşamaları.
- Kullanılan, tüm belgeler, formlar, resmi ve diğer evraklar.
- Varsa kullanılan uygulama yazılımları ve kullanım amaçları.
- İş gören personelin görüş ve düşünceleri.
- Müşteri tarafından ihtiyaç duyulan, saklanacak veriler.
- Elde edilmesi gereken, yararlı bilgiler, rapor ve formlar
. Ayrıca:
- Sektörde lider kuruluşlar araştırılarak, daha sonra karşılaşılabilecek sorunlar ve çözümlerin tespiti ile elde edilen bilgiler. Sektör bünyesinde yer alan küçük, orta ve büyük ölçekteki tüm işletmeler göz önüne alınarak, yazılımın işletmelerin gelişim süreçlerine uyum sağlayabilmesi de dikkate alınmalıdır. Gelişim süreçlerinde işletmelerin karşılaştıkları sorunların çözümleri geliştirilen yazılım kapsamında değerlendirilmelidir. Yanı sıra, analizde dikkat edilmesi gereken bir diğer husus, elde edilen tüm bilgilerin düzenli olarak kağıda dökülmesi ve saklanmasıdır. Yukarıda belirttiğim unsurlara bağlı kalınarak yapılan, analiz çalışmasının sonuçları, şüphesiz sağlam temellere oturtulmuş demektir.
5.5.3.ANALİZE UYGUN TASARIMIN YAPILMASI
Geliştirilen yazılımın kullanıcı ara yüzünün kolay ve kullanışlı olması tamamen profesyonel bir ekip işidir. Yazılımı kullanacak kişilerin yazılımı zorlanmadan kullanabilmeleri ve kullanırken de sıkılmamaları önemli unsurlardır.
Tasarım aşaması, yazılımın hem kullanıcı ara yüzünü hem de programın omurgasını ortaya koymaktadır.
Tasarım aşamasının diğer teknik unsurları şöyle sıralanabilir:
- Veri tabanı seçimi ve tasarımı.
- Veri tablolarının belirlenmesi.
- Sahaların belirlenmesi (Kayıt deseni).
- İndeks ve anahtar alanların belirlenmesi.
- Tablolar arası ilişkilerin kurulması(İlişkisel veri tabanı tasarımı).
- Tetikleyici ve prosedür kodlarının tasarımı.
- Veri tabanı seçimi.
- Ara yüzlerin tasarımı ve geliştirme araçları.
- Yazılımın adı.
- Ikon tasarımı.
- Kapak resmi (Yada açılış resmi).
- Kullanılacak derleyici yada yorumlayıcı tespiti.
- Kodlama ve iş akış diyagramlarının hazırlanması.
- Veri giriş ekranlarının tasarlanması.
- Sorgulama (Yada arama) ekranlarının tasarlanması.
- Yazıcı ve ekran raporlarının tasarlanması.
Yukarıdaki işlerden de anlaşılacağı gibi, tasarım iki ana başlık altında toplanmıştır. Buna göre, yazılımın alt yapısı olarak adlandırılan, veri tabanı tasarımı ve görsel kanadı oluşturan ara yüz tasarımı ve araçların seçimi, yazılımın tasarım sürecindeki ana hatlardır.
Veri tabanı seçimi ve tasarımı;
Birçok yazılım ürünü, çok iyi görsel araçlara sahip olmasına rağmen, ne yazık ki zamanla yok olup gitmiştir. Bunun nedeni ise, çok kullanıcılı ortamlara aktarılamaması ya da aşırı veri yoğunluğunu destekleyememesi gibi nedenlerdir.
Veri tabanı tasarımı ve seçiminde, tasarım ekibi, analizden gelen bilgiler doğrultusunda maksimum değerleri göz önüne almalıdır.
Örneğin; yazılımın kullanılması ile müşterinin bir yıl sonra milyonlarca kayda ulaşması bekleniyorsa, veri tabanı bu desteği verebilecek şekilde seçilmeli ve tasarlanmalıdır. Yeri gelmişken bir konuya da değinmek gerekir, günümüzde en basit uygulama dahi açık sistem veri tabanı kullanılarak üretilmektedir. Desen gizlemek, artık müşteri için bile olumsuz bir opsiyon olarak değerlendirilmektedir. Müşteri doğal olarak, ileride karşılaşabileceği olumsuz durumlar için açık sistem veri tabanlarını tercih etmektedir.
Ara yüz tasarımı ve geliştirme aracı seçimi; Bazen öyle uygulamalar tasarlanıyor ki, uygulamayı kapatmak için dakikalarca uğraşmak gerekebiliyor. İyi tasarlanmış ara yüze sahip uygulamalarda, hem kullanıcı kolaylık yaşar hem de firmanın destek ekibi rahat olur. Ayrıca, programcıların hakim olduğu yada destekleyebilecekleri kodlama araçları ile çalışılmalıdır.
Unutulmaması gereken nokta, tasarımının sadece müşteri için değil, firmanın destek birimi de düşünülerek yapılması gerektiğidir. Hiçbir müşteri, yeterli destek alamayacağını bildiği bir uygulama yazılımını satın almak istemez.
5.5.4.TASARIMIN BİLGİSAYAR ORTAMINA AKTARILMASI (KODLAMA)
Artık program kodları, eskiden olduğu gibi uzun uzun yazılmıyor. Gelişen teknoloji, kodlamayı daha az kullandırıyor, araçlar (Tools) kullanmayı öneriyor. Ancak bu yöntem, iyi kod yazma gerekliliğini ortadan kaldırmıyor.
Tasarımı tamamlanmış bir uygulama, programcıya ulaştığında, programcının yapacağı ilk iş modülü iyi anlamak olmalıdır. Yazılacak modülü zihninde canlandıramayan programcı kodlamayı yapamaz. Tasarımda hazırlanan, kodlama detayları, iş akış diyagramları, tablolar ve tetikleyici kodların, programcıya yazılı olarak verilmesi ve yapılan işin anlatılması gereklidir.
Kodlamanın unsurları şunlardır:
- Sağlam ve anlaşılır olmalıdır.
- Şekil (Yazım) kurallarına uymalıdır.
- Yardımcı fonksiyonlar ve özel kitaplıklarla sadeleştirilmelidir.
- Desteklenebilir olmalıdır.
Üzerinde durulması gereken diğer bir nokta da, yazılımın kodlama işlemi ile bitmediğidir. Gerçekten de bir yazılım ürününün kodlaması hiçbir zaman bitmez. Yapılan eklemelerle kod sürekli yenilenir. Bu durumun istisnası yoktur. Ancak zamanla gelen taleplere destek verebilen yazılımlar ayakta kalabilir. Tüm bu anlatılanlar, kodun sağlam ve anlaşılır yazılması gerekliliğini ortaya koyar.
5.5.5.YAZILIMIN TEST EDİLMESİ.
Test, üretimin son aşaması olmasına rağmen, aynı zamanda süreklilik arz eden bir diğer süreçtir. Yazılım üretiminde ilk testler geliştirme sürecinde programcı tarafından yapılır. Bununla birlikte, asıl hata ayıklama ve geri bildirim (FeedBack) hizmeti test ekipleri tarafından yapılır. Testler ve geribildirim müşteri yazılımı kullandığı sürece devam eder.
Programcıların yaptığı testler ağırlıklı olarak, iş akışı değil, teknik testlerdir. Bu nedenle iş akışı yönünden yazılım testi, özel bir ekip tarafından yapılır.
Yazılım Test süreci:
- Programcı testleri.
- Test ekibinin testleri.
- Kullanıcı grubu testleri.
Test sürecinde, en faydalı geri bildirimler, son kullanıcı test gruplarından gelir. Yazılımın beta testlerinde mutlaka müşteriden test grupları oluşturması istenmelidir. Bu sayede müşterinin yeni yazılıma adaptasyonu da sağlanmış olur. Testlerin sonunda ilgili birimlerle birlikte değerlendirme toplantıları yapılmalıdır. Bazen hataların kaynağı analizde ya da tasarımda olabilir. Ya da kullanıcıdan gelen yeni bir istek var ise, bu talep doğrudan analiz ekibine iletilmelidir. Çünkü yazılımın mimarisinin temelleri analizciler tarafından hazırlanmıştır.
5.5.6.EĞİTİM VE ORYANTASYON MATERYALLERİNİN HAZIRLANMASI
Müşteri için kullanıma hazır hale getirilen yazılım, tamamlayıcı öğelerinde sağlanmasıyla bitmiş demektir. Ortaya çıkarılan uygulamanın eğitiminin ve dokümantasyonunun da sağlanması tamamlayıcı öğeler olarak düşünülmelidir. Satış ve destek aşamalarında kullanılan en önemli malzeme, dokümanlardır. Altyapı gereksinimleri, kurulum, ayarlar ve bunlara ilişkin çeşitli eğitsel dokümanlar, uzman kişilerce hazırlanmalıdır.
Satış öncesi yapılacak hazırlıklar;
- Kurulum ve ayarlama dokümanları.
- Uygulama eğitim programlarının oluşturulması.
- Uygulama kullanım kılavuzu hazırlanması.
- Sıkça sorulan soruların cevaplanması.
- Destek birimi eğitim programı oluşturulması.
Yazılım sürecinde yer alan tüm birimler, her zaman son kullanıcıdan birkaç adım önde olmalıdır. Bir sonraki adımda; uygulamanın çoklu ortamlara, internet ortamına veya başka etkileşimli ortamlara taşınması istenebilir. Böylece, belki başlangıçta düşük maliyetlerde hesaplanan uygulama, değerini de arttıracak teknik özelliklere sahip olabilir.
5.5.7.SONUÇ
Anlatılan tüm bu süreçler, detaya inilmeden sadece ana hatları ile belirtilmiştir. Detaylar proje oluşturulurken yazılacaktır. Sonuç olarak, müşterinin verimliliğini arttıran en önemli teknolojik araç uygulama yazılımlarıdır. İyi bir uygulama yazılımını üretebilmek için, iş süreci unsurlarına bağlı kalınarak çalışılmalıdır.
Bu bilgiler ışığında ortaya çıkan ve ayrıca üzerinde durulması gerekenler şunlardır:
– Başarı için sadece bilgi yeterli değildir, bilgiyi kullanacak tekniklerinde firma çalışanları tarafından bilinmesi gerekir.
-. Kaliteli yazılım firması, geliştirdiği ürünü destekleyebilen ve onu zamana uydurandır.
– Uygulama yazılımının kalitesi, satış, destek ve performans bileşiminin büyüklüğü ile ölçülür.
– Yazılacak uygulamanın kullanılacağı sektörü en iyi şekilde bilmek analizcinin ve destek biriminin görevidir.
– Geliştirme sürecinde analiz için harcanan süre ne kadar uzun olursa olsun boşa harcanmış sayılmaz. – Tasarımın her aşamasında ekip içinde bir psikolog doktorun ya da EİP(Eğitim İletişim Planlama) uzmanının olması, ürünün performansını arttıran faktörlerdendir. Kullanıcının iş yapma isteğini ortadan kaldıracak renk ve dizaynlar şüphesiz ürün satışını olumsuz etkiler.
– Yazılımda güvenlik iki türlüdür. Bunlar sistem güvenliği ve veri güvenliği olarak adlandırılır. Müşteri için her ikisi de vazgeçilmez iki unsurdur.
– Yazılım firması en yoğun zamanlarında bile araştırma-geliştirme faaliyetlerini sürdürmeli ve yenilikleri tüm ekiplere yaymalıdır. Firma içinde bilgi paylaşımı, kaynakların herkese açılması ile yeterli ilerlemeyi sağlamıyorsa, bilginin dolaşımı, hizmet içi eğitimler ve sosyal etkinlikler ile sağlanmalıdır. Yazılımın, ekip işi olduğu herkesçe kabul gören bir gerçektir ve en önemli kaynağı da insandır.
– Yazılım geliştirme sürecinde ekipler arası koordinasyon sağlanamamışsa, ortaya çıkan ürün toplama bilgisayara benzer ve entegrasyon için ayrıca vakit ayırmanız gerekir.
– Yazılım üretiminde, düşünce üretime kaynak olan temel hammaddedir, bu nedenle çalışanların da düşünecek uygun şartları olmalıdır. Düşüncenin olmadığı bir yerde üretim olmaz, ancak kopyalama olur.
– Birçok kişi farkında olmasa da, dünyanın en büyük yazılım üreticileri dahi, ürünlerine yamalar yapmaktadır. İşin esprisi bunu müşteriye en az etkiyle yapabilmektir. Oysaki ülkemizde hala ulusal yazılımlarda yama yapmak yerine, yeniden yükleme yapılmaktadır. Üretici yazılımlarında bu sorunu ortadan kaldıran yöntemleri mutlaka geliştirmelidir.
- YAZILIMDA TEST AŞAMASI
6.1. GİRİŞ
Olabilecek hataları ve kayıpları önceden kestiremez isek daha fazla kayıp vermeye mahkum kalırız. Bu kayıplar, zaman-para-iş-prestij gibi daha sonra tekrar kazanılması zor durumlardır. Bunların önüne geçebilmek için süreçler tasarlamak zorundayız.
Testin de standartları ve optimizasyonu vardır. Bu metod STLC(Software Testing Life Cycle) olarak isimlendirilir. Yazılım Test Yaşam Döngüsü kalite hedefleri yerine getirilmek için aşağıdaki adımları sırası ile yerine getirebiliyor olmak gerekir. STLC işlemlerinde, her bir faaliyet planlı ve sistemli bir şekilde ifade edilir. Her aşamanın farklı hedefleri ve çıktıları vardır.
STLC aşamaları şunlardır;
– Gereksinim Aşaması
– Planlama Aşaması
– Analiz Aşaması
– Tasarım Aşaması
– Uygulama Aşaması
– Yürütme Aşaması
– Sonuç Aşaması
– Kapatma Aşaması
6.2. Gereksinim Aşaması
STLC’nin gereksinim aşamasında, analiz ve gereksinimler incelenir. Diğer takımlarla beyin fırtınası ve bilgilendirmeler yapılarak nelerin test edilip edilemeyeceği kararlaştırılır. Bu bir nevi ekipler arasındaki kaliteli test algısının ön plana çıkarılmasıdır. Bu aşama test kapsamını belirlemeye yardımcı olur. Bu aşama boyunca gerek ekip içinde gerekse diğer ekiplerle iletişim halinde olunmalıdır.
Bu aşamada, teste dahil olacak bütün ekipler toplanıp testin aşamalarını ve ilgili gelişmede yapılacak işlemleri birbirine anlatmalı ve fikirler vermelidir. Testin kaliteli olması için bu çok önemli bir başlangıçtır ve bütün ekipler bu şekilde birbirini besleyebilir.
6.3. Planlama Aşaması
Pratik senaryolarından sonra, test planlama test sürecinin ilk adımıdır. Bu aşamada test hedeflerini karşılamak için kullanılacak yardımcı faliyetler ve kaynakların tespiti yapılır. Planlama sırasında ölçümleri ve bu ölçümleri nasıl izlemeyeceğimizin yöntemini belirlemeye çalışın.
Soru : Hangi esaslara göre planlama yapılır sadece gereksinimleri karşılamak yeterli olur mu?
Cevap :Hayır. Sadece gereksinimleri karşılayacak şekilde test planı yapmak yeterli değildir. Test planlaması etkileyen diğer 2 çok önemli faktörler vardır. Bunlar:
– Test stratejisi organizasyonu : Yani hangi uygulama yada ürün test süreci içerisinde nerede nasıl test edilecek bunun iyi kestirilmesi ve planlanması gerekmektedir. Test stratejisinde bu durum çok önemlidir ve sürecin sağlıklı işletilmesinde belirleyici bir rol oynar.
– Risk analizi / Risk Yönetimi ve hafifletme : Planın sağlıklı şekilde işleyebilmesi için olası riskler hafifletilmeli ve riskler doğru adreslenmelidir.
6.4. Analiz Aşaması
Analiz aşamasında en doğru soru test edilecek “NE” sorusudur. Temelde gereksinimleri dökümanlar ile belirtilir. Ürüne ait riskleri ve diğer test temel test koşulları belirlemek gerekir. Test gereksinimi izlenebilir ve geri bildirimi olan bir method olmalıdır. Test koşullarının belirlenmesinde bazı gereksinimler ve koşullar vardır.
– Test Seviyeleri ve Test Derinliğinin Belirlenmesi
– Ürünün Karmaşıklık
– Ürün ve Proje Riskleri
– Yazılım Geliştirme Yaşam Döngüsü Çıktısı
– Test Yönetimi
– Ekip Beceri ve Bilgisi
– Paydaşların Durumu
Detaylı bir şekilde test koşullarını ve senaryoları yazmaya çalışmalıyız.
6.5. Tasarım Aşaması
Bu aşamada “NASIL” test etmek gerekir sorusuna cevap aramalıyız. Sorunun cevabını aşağıdaki aşamalardan bulabiliriz.
– Test koşum durumunu göz önünde bulundurmak. Bunu yaparken alt kırılımları göz önünde bulundurmak gerekir.
– Yapılacak testi ve test datalarını belirlemek
– Test gereksinimlerini yapabilmek için test ortamlarını kurmak
– Gereksinimi izlenebilmek için ölçümler oluşturmak
– Test kapsamı ölçümleri oluşturmak
6.6. Uygulama Aşaması
STLC aşamasında önemli görevi ayrıntılı test olguların yaratılmasıdır.Test koşumu için gerekli olan test regresyon test setinizin olduğuna emin olmanız gerekmektedir.
Test caselerin doğruluğu için kontrol etmek-gözden geçirmek önemlidir. Projelerinizde test otomasyon gereksinimi varsa testlerinizi otomatize etmeniz önemlidir.
6.7. Yürütme Aşaması
Adından da anlaşılacağı gibi, bu gerçek yürütme Yazılım Test Yaşam Döngüsü aşamasıdır. Test koşumuna başlamadan önce ölçüm kriterlerinizin doğruluğundan emin olmanız gerekmektedir.
6.8. Sonuç Aşaması
STLC aşamasının çıkış kriterleri ve raporlama faaliyetlerinin incelendiği aşamadır. Proje ve paydaşlar seçimine bağlı olarak, raporlar (DSR – Günlük Durum Raporu (Daily Status Report) WSR – Haftalık Durum Raporu (Weekly Status Report) gibi türleri vardır.
Proje yönetiminde test raporları çok önemli bir durumdadır. Yayınlanacak raporda kaç test case mevcut, kaç tanesi fail, kaç tanesi pass, yada koşulmamış gibi çeşitli test case durumlarına ait detaylarına yer verilmelidir. Bununla birlikte tespit edilen hatalar, test koşumuna engel durumlarda raporlanmalıdır.
Test raporları ürün yada projenin anlık durumu ve kullanılabilirlik oranını verir. Test raporu ne kadar önemsenirse projenin başarısı o kadar olasıdır.
6.9. Kapatma Aşaması
Kapatma faaliyetleri için yerine getirilmesi gereken görevler şunlardır.
– Testin koşum faaliyetlerinin tamamlanması gerekmektedir
– Tespit edilen açık hataların kalmaması gerekmektedir.
– Öğrenilmiş dersler toplantıları ile proje esnasında yapılan karşılaşılan durumlar ortaya konulmalı ve bir sonraki projelerde bu durumlara daha da dikkat edilmelidir.
- Yazılım Onaylama Aşması
Müşterimize sunulan yazılım şeması;
- Müşteriyle birlikte tekrar modül müdül kontrol edilerek teyit edilir.
- Son gözden kaçan bir şey varsa tekrardan incelenir.
- Yapılacak tekrar bir revize varsa yapılır.
Teklif Kapsamı
- Yazılım projesinin proje dosyası halinde çıkarılması.
- Bir link üzerinde yazılım yapılacak modülleri tasarım şeklinde (html, css kodlamaya döküler) modüller halinde demo çalışması çıkarılması.