YKGS2008: Yazılım Kalitesi ve Yazılım Geliştirme Araçları 2008 (9-10 ekim 2008, İstanbul) Yazılım Proje Danışmanlarının Yazılım Kalitesinin Artırılmasındaki Rolleri The Roles of Software Project Consultants In Improving Software Quality Ercan, Karasu Savunma Teknolojileri Mühendislik ve Ticaret A.Ş., Ankara Meryem, Şahin Tütüncü Savunma Teknolojileri Mühendislik ve Ticaret A.Ş., Ankara ekarasu@stm.com.tr meryem@stm.com.tr Özet Yazılım proje danışmanları, projelere mühendislik bilgi ve deneyimlerini aktararak, başarılı olmalarında önemli katkılarda bulunurlar. Proje beklentilerine, aşamalarına ve çıktılarına uygun olarak farklı roller üstlenebilen yazılım proje danışmanlarının misyonlarından biri de, projelerde yazılım standartları, süreç modelleri ve genel kabul görmüş uygulamalara uyulmasını teşvik etmektir. Bu yolla genel bir yazılım mühendisliği kültürünü yaygınlaştırırken, beklentileri karşılayan kalitede yazılımların geliştirilmesini de sağlarlar. Kurumsal düzeyde verilen yazılım danışmanlık hizmetlerinin ülkemizdeki en önemli temsilcilerinden biri olan Savunma Teknolojileri Mühendislik ve Ticaret A.Ş. (STM A.Ş.), savunma sanayinde yürütülen projelere önemli danışmanlık hizmetleri sunmaktadır. Bu bildiride yazılım proje danışmanlığı hizmetlerinin detayları verilecek, bu hizmetlerden elde edilen kazanımlar ve bu kazanımların yazılım kalitesine etkisi incelenecektir. Abstract By transfering their domain knowledge and experiences, software project consultants provide distinct contributions to projects’ success. One of the missions of software project consultants (who may have different roles in accordance with project expectations, phases and outputs) is to promote conformation to software standards, process models and common implementations. While disseminating a general software engineering culture with this mission, they also provide assistance for developing quality softwares meeting the expectations. Savunma Teknolojileri Mühendislik ve Ticaret A.Ş. (STM A.Ş.), one of the major companies of organizational software consultancy services in Turkey, provide important consultancy services to the projects implemented for defense industry. In this paper the details of the software project consultancy services are provided while the benefits earned from these services and the effects of these benefits to software qualities are inspected. 1. Giriş Yazılım projelerinde nesnel ve tarafsız bir paydaş olarak görev yapan yazılım proje danışmanları, mühendislik bilgi ve deneyimlerini kullanarak projelerin başarılı olmasında önemli roller üstlenir. Bu bildiride yazılım proje danışmanlığı kavramından, ürün-süreç kalitesinin artırılmasındaki işlevlerinden, proje danışmanlığının ülkemizdeki önemli kurumsal temsilcilerinden biri olan Savunma Teknolojileri Mühendislik ve Ticaret A.Ş.’deki (STM A.Ş.) danışmanlık uygulamalarından ve yazılım proje danışmanlığı kapsamında hizmet verilen projelerde sıklıkla karşılaşılan problemlerden söz edilecektir. 2. Proje Danışmanlığı Danışmanlık; bir uzmanlık alanında yürütülen faaliyetlerde iyileştirme fırsatlarını ve problemleri belirlemek, bunları tanımlayarak araştırmak, sorunların giderilmesi için uygun çözümler üretmek ve bu çözümlerin uygulanmasını kolaylaştırmak esasına dayanan bir yardım işlevidir [10]. Kişi ve kuruluşlara bilgi ve deneyim eksenli hizmet sunan danışmanlığın kapsamı, problemin yer aldığı alana göre farklılıklar gösterir. Bu nedenle danışmanlığın, insan kaynaklarından şirket yönetimine, bilgi teknolojilerinden Avrupa Birliği’ne kadar birçok uygulama alanı vardır. Danışman; sahip olduğu bilgi ve becerileri belirli bir problem üzerinde yoğunlaştırarak onu analiz eden ve giderilmesi için uygun çözümler sunan kalifiye uzmandır [11]. Bu görev tanımıyla danışman; • Özel bilgi ve uzmanlık, • Farklı ve tarafsız bakış açısı ihtiyaçlarını karşılar [1]. YKGS2008: Yazılım Kalitesi ve Yazılım Geliştirme Araçları 2008 (9-10 ekim 2008, İstanbul) Proje danışmanlığı ise çoğunlukla proje öncesinde ve proje yürütülürken, yapılabilirlik analizinden, müşteri beklentilerinin karşılandığının doğrulanmasına; yönetsel problemlerin belirlenmesinden, tanımlı standartlara uygunluğun teyidine kadar farklı ihtiyaçları karşılamaya yönelik bir danışmanlık türüdür. Temel amacı projelerin başarılı bir şekilde yürütülerek tamamlanmasını ve ara/nihai ürünlerin beklentileri karşılamasını sağlamaktır. Çoğunluka projenin müşterisi (alıcısı) tarafından talep edilen proje danışmanlık hizmeti, özellikle belirsizliklerin ve risklerin çok olduğu, özel uzmanlık kaynaklarının yeterli olmadığı projelerde, proje yürütücüleri tarafından da istenebilmektedir. Proje danışmanlığı, konularına göre farklı alt danışmanlık gruplarına ayrılabilir. Bunlardan en temel olanları proje yönetim danışmanlığı, akademik/bilimsel danışmanlık ve mühendislik danışmanlığıdır. • Projeler için değerlendirilir. • Sözleşme çalışmalarına destek verilir. • Beklentileri karşılayan geliştirilmesini, başarılı yazılımların • Geliştirme faaliyetleri için ayrılan kaynakların daha verimli kullanılmasını, • Genel ve geçerli bir yazılım kültürünün yaygınlaştırılmasını mühendisliği sağlamaktır. Yazılım proje danışmanları, müşteri adına mühendislik bilgi ve deneyimlerini kullanırken, projelerde üretilen bilgilerin kalıcı olacak şekilde dokümante edilmesini sağlayarak üretilen bilgilerin diğer projelerde kullanılabilirliğini artırmaya yardımcı olurlar. Yerine göre gözlemci, yol gösterici veya müşterinin hakkını savunan avukat rollerini üstlenebilen danışmanların [2] yürüttükleri çalışmaların niteliği proje aşamalarına göre değişebilmektedir. Proje başlamadan önceki aşamalarda; • Yazılımların yapılabilirlik (fizibilite) analizleri gerçekleştirilir. • Müşterinin talep ettiği yazılım için teklife çağrı, bilgi istek dokümanları hazırlanır. yaptıkları teklifler Proje başladıktan sonraki aşamalarda ise; • Yazılım gereksinimlerinin tanımlanması sağlanır. • Yapılan yazılım doğrulanır. • Yazılım testlerinin, gereksinimlerin karşılandığını doğrulayacak şekilde tanımlanması sağlanır. • Test ve kabul faaliyetlerine nezaret edilir. • Yazılım kalite temini, yazılım konfigürasyon yönetimi, proje yönetimi, risk yönetimi süreçleri izlenir ve iyileştirme önerileri sunulur. • Mühendislik değişiklik teklifleri değerlendirilir, buna bağlı olarak sözleşme değişikliğinin uygun şekilde yapılması sağlanır. • Yazılım mühendisliği ve teknolojileri ile ilgili konular veya problem çözümleri araştırılır. 2.1. Yazılım Proje Danışmanlığı Yazılım proje danışmanları, yazılım geliştirme projelerine veya içinde yazılım parçaları geliştirilen sistem projelerine mühendislik danışmanlık hizmetleri sağlar. Amaçları; firmaların uygun tasarımlarının şekilde uygunluğu Yazılımın kodlanması aşamasında, doğrudan bir danışmanlık katkısı olmamakla birlikte, projelerde belirli kodlama standartlarına uyulması bekleniyorsa; bu beklentinin karşılandığının testler sırasında doğrulanması için gerekli yönlendirmelerin yapılması yine danışmanların görevleri arasındadır. Yazılım proje danışmanları belirtilen fonksiyonları yerine getirirken, yazılım mühendisliği alanındaki bilgi ve deneyimleri ile projelerde uyulması gereken IEEE/EIA 12207 [3], Mil-STD-498 [4] gibi yazılım standartları ve CMMI (Capability Maturity Model Integration) [5] gibi süreç modellerini de birer referans olarak kullanılırlar. Bu nedenle, proje isterlerine yazılım proje danışmanlarının hakim olması ve projelerdeki uygulamaları izlemesi önemli bir yükümlülüktür. 2.1.1. Yazılım Proje Danışmanları ve Kalite Güvence Sorumluları Amaçları, çalışma yöntemleri ve başvurdukları referanslar (standartlar, süreç modelleri vb.) dolayısıyla danışmanlar ile kalite güvence sorumlularının işlevleri bazı durumlarda karıştırılabilmektedir. Benzerlikler açısından ele alırsak; her iki görevi yürütenler, dahil oldukları projelerin başarıya ulaşması YKGS2008: Yazılım Kalitesi ve Yazılım Geliştirme Araçları 2008 (9-10 ekim 2008, İstanbul) için tamamlayıcı destek görevi yürüten paydaşlardır. Proje çıktılarına, ürünlerine, süreçlere nesnel ve eleştirel gözle bakarak, olanla olması gereken arasındaki farkı ortaya koyarlar. İşlerini yaparken ulusal ve uluslararası standartları, modelleri, genel kabul görmüş uygulamaları ve projelerin sözleşmelerini referans alırlar. İlgili görevlerin farkları ise kapsam, içerik ve yetkilerinden kaynaklanır. • • • Kapsam açısından fark: Kalite güvence sorumlusu, projelerde kalite politikasının ve kalite planının uygulanıp uygulanmadığının doğrulanması ile sorumludur. Proje danışmanının görev kapsamı ise daha geniştir. İşini yaparken bir kalite yönetim sistemini referans alabilir ama bununla sınırlı kalmaz. Detaylı çalışmaların yanısıra işini gözlemlere dayalı genellemelerle de yapar. beklenen sonuçları verebilmesi için kalite temin ve bilgi yönetimi süreçleri ile desteklenmesi gerekir. Kurumsal yazılım proje danışmanlığı kapsamında bir projeye birden fazla danışman tahsis edilebileceği gibi, bir danışman birden fazla projeye hizmet verebilmektedir. Simülasyonlardan, veritabanı uygulamalarına, gömülü yazılımlardan, test yazılımlarına kadar birçok yazılım türünün farklı platformlar için geliştirildiği projelerde verilen yazılım danışmanlık hizmetinin kapsamı da projeden projeye değişebilmektedir. Bu değişkenlik, projede sadece yazılım, ağırlıklı olarak yazılım veya sistem içinde yazılım geliştirilmesi hedefine de bağlıdır. Yazılım proje danışmanlığı hizmetinin daha iyi anlaşılabilmesi için danışmanlık şirketleri gibi bilgiyoğun organizasyonlarda önem arzeden kalite ve bilgi yönetimi süreçlerinin üzerinde durmak gerekir. İçerik açısından fark: Danışman hizmet verdiği konuda alan bilgisi ve tecrübesini kullanarak, işin teknik uzmanlığına yönelik katkı yapar. Kalite güvence sorumlusunun ise böyle bir alan bilgisi ve deneyimine sahip olması gerekmez. Kalite yönetimi ve standartları konusunda yetkin olması ve bunların uygulanmasında proaktif bir tutum sergilemesi görevini başarı ile yapması için yeterlidir. Bir örnek ile anlatmak gerekirse; kimya alanında hizmet veren bir danışman, projede uygulanacak proseslerle istenilen malzemenin üretilemeyeceği düşüncesinden yola çıkarak farklı yöntemler kullanılmasını önerebilir. Kalite güvence sorumlusu ise böyle bir seçimin prosedürlerde tanımlanmış olan karar alma süreçlerine uygun olarak yapılmasını isteyebilir. 2.2.1. Kalite Yönetim Sistemi Yetki açısından fark: Kalite güvence sorumlusu, üretilen/geliştirilen nihai ürün veya ara ürünlerin beklentileri karşılayıp karşılamadığının doğrulanması ve geçerlenmesi aşamasında denetim görevi yürütür. Olumsuz bir durum karşısında düzeltme mekanizmasının devreye girmesini sağlar. Müşterisinin hakkını savunduğu durumları ayrı tutarsak, danışman, teknik uzman olarak yol gösterici olduğu projelerde uygunsuzlukları tespit ederek tavsiyeler verebilir ama kalite güvence sorumlusunun sahip olduğu bağlayıcı yetkilere sahip değildir. Tüm hizmetlerde olduğu gibi yazılım proje danışmanlığı hizmetinde de müşterinin kalite algısı önemli olmaktadır. Kaliteli hizmet almadığını düşünen bir müşteriye, teknik olarak ne kadar iyi bir içerik sağlansa da, danışmanlık hizmetinin nihai hedefi olan müşteri memnuniyeti tam olarak karşılanamaz. Yazılım alanında danışmanlık müşteri kalite algısı (DHKA) aşağıdaki formül [6] ile ifade edilebilir: 2.2. Kurumsal Yazılım Proje Danışmanlığı Hizmeti Belirli sayıda danışmandan oluşan organizasyonların süreç bazlı olarak verdikleri yazılım proje danışmanlığı hizmetleri, kurumsal nitelik taşıyan hizmetlerdir. Bu tür organizasyonlarda, danışmanlık hizmetlerinin Danışmanlık hizmeti veren organizasyonların personel sayısı ve yapılanması, danışmanlık hizmetinin, belirli kurallar ve prosedürlere bağlı kalınarak verilmesini gerektirir. Her ne kadar danışmanlık, özünde analitik düşünme, yaratıcılık gibi kişisel özellikler gerektiren bir iş olsa da [11], organizasyonların, verdikleri danışmanlık hizmetlerini, bireyselliğin sağladığı esnekliği bozmadan ve danışmanlığı süreç ağırlıklı bir uğraş haline getirmeden kurumsal kimlikleriyle yapılandırması gerekir. Danışmanın içinde bulunduğu organizayonun profesyonel hizmet vermesine katkı sağlayabilmesi için danışmanlık sürecinin danışmanlık politikasından başlayarak oluşturulması, görev tanımlarının yapılması ve tüm bunların kalite yönetim sistemi ile ilişkilendirilmesi önemlidir. DHKA=Teknik Kalite x İşlevsel Kalite x Müşteri Onayı (1) Bu formülde, • Teknik Kalite; danışmanlık çıktılarının (rapor, görüş, öneri, bilgi vb.) yazılım mühendisliği açısından teknik kalitesini, • İşlevsel Kalite; danışmanlık çıktılarının sağlanma sürecindeki hizmet kalitesi, YKGS2008: Yazılım Kalitesi ve Yazılım Geliştirme Araçları 2008 (9-10 ekim 2008, İstanbul) • Müşteri Onayı; çıktıların müşteri tarafından kabul edilme derecesini gösterir. Buradan da görüldüğü gibi yazılım proje danışmanlık hizmetlerinin başarısı için danışmanlık organizasyonunda kalite anlayışının belirli bir olgunlukta olması gerekir. Ayrıca müşterinin onayını etkileyen en önemli faktörlerden biri de, danışmanın müşteri ile kuracağı etkilişimin profesyonellik (işlevsel kalite [12]) düzeyidir . olarak yer almayı ve şirketlerin (yüklenicilerin) istenilen ürün ve sistemleri başarı ile geliştirmelerine (müşteri bakış açısıyla) yardım etmeyi içerir. STM A.Ş. tarafından danışmanlık hizmeti sağlanan yazılım projeleri; • Uygulama alanına göre: komuta kontrol, simülasyon, görev planlama, elektronik harp, uçuş kontrol, silah sistemi, haberleşme ve sensör sistemleri, • Nihai amacına göre; kontrol, eğitim, karar destek, ölçüm, hesaplama, analiz, test, veri yönetimi, prototip ve altyapı yazılımları 2.2.2. Bilgi Yönetimi Müşterilerin kurumsal düzeyde verilen danışmanlık hizmetlerinden beklentileri, münferit olarak verilen danışmanlık hizmetlerinden daha yüksektir. Bunun nedeni, olası farklı uzmanlık alanlarındaki bilgi ihtiyacının kurumsal danışmanlık hizmeti veren organizasyonlardan daha kolay sağlanması, ekip olarak verilen danışmanlık hizmetlerinde müşterinin farklı danışmanlardan tamamlayıcı faydalar sağlayabilmesidir. Bu organize olmuş bilgi beklentisi beraberinde, bilginin uygun şekilde üretilmesi, çoğaltılması, saklanması ve paylaşılması sorumluluğunu getirir. Danışmanların bu yapı içinde aradığı bilgiyi hangi kaynaktan, hangi şartlarda, ne zaman alabileceğini bilmesi önemlidir. Çünkü kurumsal düzeyde veriliyor olsa da, danışmanlık hizmeti kapsamında müşterinin ilgili olduğu taraf yine kişiler yani birebir düzeyde danışmanlardır. Organizasyonel hizmet gücü bireysel düzeyde danışmanların performansları ile ortaya konur. 2.3. STM A.Ş. ve Kurumsal Proje Danışmanlık Faaliyetleri STM A.Ş., 1991 yılında Savunma Sanayi İcra Komitesi kararıyla, Türkiye’nin savunma alanında milli altyapısının oluşturulmasında Türk Silahli Kuvvetleri (TSK) ve Savunma Sanayi Müsteşarlığı’na (SSM) mühendislik ve danışmanlık hizmetleri vermek üzere kurulmuştur. Kalite yönetim sistemi ISO 9001:2000 [7], AQAP-160 [8] ve ISO/IEC 27001 [9] gereklerine uygun olarak yapılandırılmış olan STM A.Ş., faaliyetlerini CMMI Seviye-3’e uygun olarak yürütmektedir. Danışmanlık hizmetlerini savunma sanayi projelerinde yoğunlaştıran STM A.Ş., proje öncesinde ve proje yürütülürken olmak üzere Savunma Sanayi Müsteşarlığı’na farklı aşamalarda ihtiyaç duyduğu danışmanlık desteğini sağlamaktadır. Bu destek, Savunma Sanayi Müsteşarlığı’nın sektörde faaliyet gösteren şirketlere verdiği projelerde alan uzmanı grupları altında toplanabilir. Projeler için STM A.Ş. bünyesinde görevlendirilen danışmanlar teknik faaliyetlerini, şirket danışmanlık sürecinde tanımlı kurallar çerçevesinde ve projede üretilen çıktıların özelliklerini göz önünde bulundurarak yürütür. Örneğin bir projede üretilen yazılım gereksinim dokümanı hakkında görüş oluştururken, danışman kendi bilgi birikimini kalite sisteminde yer alan kılavuzlardaki yönlendirici bilgilerle birleştirir ve ilgili rapor şablonuna uygun olarak raporunu hazırlar. Bu rapor bir veya birden fazla gözden geçirme süreci ile olgunlaştırıldıktan sonra müşteriye iletilir. Danışmanlık yapılan projelerde, yüklenicilerin üretebilecekleri iş ürünleri, önem ve kapsamına göre de sınıflandırmıştır. Buna göre hazırlanacak bir fizibilite raporu ile görüş verilecek bir yazılım tasarım dokümanının gözden geçirme süreçlerine farklı düzeylerde katılımcılar dahil olur. Müşteriden işin alınmasından danışmanlık hizmetinin tamamlanmasına kadar olan süreçte, şirket bünyesinde farklı sorumluluklar ve roller bulunur. Örneğin işin ilk alınması ve danışman tarafından yapılarak teslim edilmesi noktalarında danışmanlık hizmet koordinatörleri, müşteri ile gerekli temasları sağlamakla yükümlüdür. Bu yolla belirli bir olgunlukta ve danışmanlardan bağımsız bir hizmet etkileşiminin sağlanması hedeflenir. Kurumsal danışmanlık hizmetinin gereği olan bilgi yönetimine STM A.Ş. bünyesinde verilen önem, ISO/IEC 270001 standardına uygun bilgi güvenliği politikası ile desteklenmektedir. Farklı projelerde elde edilen danışmanlık deneyimlerinin paylaşımını artırmak amacıyla geliştirilmiş olan bir portal ile de danışmanlar arasındaki bilgi akışı hızlandırılmıştır. YKGS2008: Yazılım Kalitesi ve Yazılım Geliştirme Araçları 2008 (9-10 ekim 2008, İstanbul) müşteri isterlerinden yazılım gereksinimlerine geçiş sürecinde işlev kaybı olması (unutulan, gözardı edilen fonksiyonel ihtiyaçlar), gereksinimlerin tanımlanma çalışmasına tüm ilgili tarafların dahil edilmemesi, gereksinim sayısının fazla olduğu projelerde (uygun) gereksinim yönetim araçları kullanılmaması. Yazılım ve sistem mühendisliği alanlarında sağlanan bu hizmetlerin iyileştirilmesi, farklı süreç modellerinden faydalanılarak sürdürülmektedir. 2.4. Danışmanların Görev Aldıkları Yazılım Projelerinde Sıkça Tespit Ettikleri Problemler Yazılım proje danışmanlığı hizmeti verilen savunma sanayi projelerinde karşılaşılan problemlerin, ağırlıklı olarak projelerin kapsamlarından ve yüklenici firmaların iş yapma yöntemlerinden kaynaklandığı görülmektedir. Bu bölümde belirtilen problemler, savunma sanayinde yürütülen farklı projelerden elde edilen veriler doğrultusunda gruplanmıştır. • Yazılım Tasarımı: Gereksinim ile tasarım unsurları arasında izlenebilirliğin kurul(a)maması, tasarımda statik ve dinamik ilişkilerin tam olarak ortaya konamaması, tasarım diyagramlarının açık olmaması/dokümantasyon ile desteklenmemesi, modelleme dilinin (UML gibi) etkin olarak kullanılmaması, tasarımın kodlama için yeterli bilgi içermemesi, kodlama aşamasında değiştirilen tasarımın ilgili dokümanlara yansıtılmaması, mimari tasarım aşamasında detay tasarım çalışması yapılması. • Kodlama: Projelerde kodlama standartlarına uyulmaması, kabul aşamasında kaynak kodda teste yönelik ifadelerin bulunması/unutulması. • Yazılım Testi: Gereksinimlerin tam olarak test edilmemesi, test tanımlarının açık ve anlaşılır olmaması, test durumları ile gereksinimler arasında izlenebilirliklerin doğru kurulmaması, kalifikasyon yöntemlerinin (gösterim, analiz vb.) doğru belirlenmemesi, bütünlük korunumu için regresyon testlerinin yapılmaması, performans gereksinimlerinin detaylı test edilmemesi. • Proje Yönetimi: Risklerin yeterli seviyede ve detayda tanımlanmaması ve izlenmemesi, kaynak planlamasının iyimser tahminler doğrultusunda yapılması, proje takviminin dinamik olarak güncellenmemesi ve yeni planlamanın zamanında yapılmaması, çok paydaşlı/taraflı projelerde verimli iletişim kanallarının kurulumaması. • Yazılım Konfigürasyon Yönetimi: Kaynak kod sürüm kontrolünün dikkatli yapılmaması. • Yazılım Kalite Temini: Projelerin taahhüt edilen tarihlerde bitirilebilmesi için kalite temin planının takip ve uygulanmasında aşırı esneklik gösterilmesi, firmaların yazılım mühendisliği süreç ihtiyaçlarına cevap veren kalite yönetim sistemlerine sahip olmaması, kalite güvence sorumlularının yazılım standartları konusunda yeterli bilgiye sahip olmaması, proje iş ürünlerinin değerlendirmesinde (doküman gözden geçirme vb.) gerekli kalite katılımların sağlanmaması, kalite yönetim sistemlerinin bağımsız kişiler tarafından 2.4.1. Proje Kapsamı ile İlgili Problemler Proje kapsamı ile ilgili problemler aşağıdaki başlıklar altında toplanabilir: • Proje başlarken olması, • Proje başladıktan değişmesi, proje kapsamlarının sonra müşteri belirsiz isterlerinin • Proje kapsamına ve kaynaklara göre iyimser takvim öngörülmesi, • Yüklenici firmaların proje kapsamına giren konularda proje öncesinde herhangi bir deneyimsiz olmaması. 2.4.2. İş Yapma Yöntemleri ile İlgili Problemler Bu gruptaki problemler daha çok proje başlangıcında ve proje yürütülürken ortaya çıkan problemlerdir. Müşteri isterlerinin alınmasından başlayarak geliştirilen yazılımın kabul aşamasına kadar olan birçok ara faaliyet ve iş çıktısında ortaya çıkarlar. • • Müşteri İsterleri: Müşterinin geliştirilecek yazılımdan beklentilerinin tam olarak anlaşılmaması. Gereksinim Analizi ve Yönetimi: Müşteri isterleri sistem ve yazılım gereksinimlerine dönüştürülürken gerekli analiz çalışmalarının yapılmaması, gereksinimlerin uygun şekilde oluşturulmaması (gereksinimlerin atomik, anlaşılır, test edilebilir, doğrulanabilir/geçerlenebilir vb. olmaması), projenin başından sonunda kadar ara çıktılar arasında gereksinim izlenebilirliklerinin kurul(a)maması, gereksinim analizi aşamasında tasarım yapılması, işlevsel olmayan gereksinimlerin uygun şekilde yönetilmemesi, YKGS2008: Yazılım Kalitesi ve Yazılım Geliştirme Araçları 2008 (9-10 ekim 2008, İstanbul) denetlenmemesi, projelerde yazılım iş çıktılarına yönelik metriklerin toplanmaması, yazılım test faaliyetlerinde proje ekibine nesnel ve eleştirel katkılar yapılmaması, proje çalışanlarına süreçler, standartlar, kılavuzlar hakkında gerekli bilgi ve eğitimlerin verilmemesi. 3. Tartışma Proje çıktılarının kalitelerini artırmada önemli roller üstlenen danışmanlık firmalarının verdikleri hizmetlerin başarımını artırmak için kendi organizasyonlarında uygun bir kalite yönetim sistemi ile çalışmaları gerekir. Ancak kurumsal düzeydeki danışmanlık şirketlerinin bu amaçla kullanabileceği bir süreç modeli veya bir standart bulunmamaktadır. Bu nedenle danışmanlık şirketleri hizmet politikalarını oluştururken kendilerine özgü süreçler tanımlayarak faaliyetlerini bu süreçlere göre yürütmektedir. Ancak her şirketin ilgili süreçleri yetkin bir biçimde oluşturma kabiliyetine sahip olmadığı göz önünde bulundurulduğunda, danışmanlıkta referans olarak kullanılmak üzere genel kabul görmüş bir süreç modeline ihtiyaç olduğu değerlendirilmektedir. 4. Sonuç Ülkemizde birçok firma yazılım mühendisliği alanında faaliyet göstermektedir. Çoğu yazılım geliştiren bu organizasyonların başarımları, kurmuş oldukları kalite yönetim sistemlerinin etkinliği ile doğru orantılıdır ve projelerde sağladıkları başarılar yazılım geliştirme yaklaşımlarına sıkı sıkıya bağlıdır. Yazılım proje danışmanları, mühendislik alanındaki deneyimleri ve nesnel bakış açılarıyla projelerdeki bu yaklaşımları izler. Problem yaşanan veya yaşanması muhtemel konularda tavsiye yolu ile projelerin başarıya ulaşmasına katkıda bulunur. Projelerde görev yapan kalite güvence sorumluları ile yazılım proje danışmanlarının işlevleri birbirine paralellik taşır ve tamamlayıcıdır. Paralellik açısından bakıldığında; kalite güvence sorumluları ve yazılım proje danışmanları nesnel bakış açılarını koruyacak şekilde projelere belirli bir mesafede durup eleştirel, tarafsız bir tutum içinde projelerde aksayan yönlerin düzeltilmesi için görev yaparlar. Tamamlayıcılık açısından bakıldığında ise; kalite güvence sorumluları projelerdeki ürün ve süreç kalitesinin temininde kritik rol oynarken, danışmanlar, genel resme hakim olarak yazılım mühendisliği ve proje yönetimi alanlarında etkin olur. STM A.Ş.’nin Savunma Sanayi Müsteşarlığı’na verdiği yazılım danışmanlık hizmetlerinde, projelerin çeşitli alan ve aşamalarında farklı problemlerle karşılaşılmaktadır. Gereksinimlerin tanımlanmasınadan, yazılım testlerinin sağlıklı bir şekilde yapılmasına kadar birçok süreçte belirlenen bu problemlerin giderilmesinde yönlendirici olan yazılım proje danışmanları geliştirilen yazılımların kalitelerinin artırılmasında önemli işlevler üstlenirler. 5. Kaynaklar [1] Wood, P., Critical Consulting, Blackwell Business, 2002, p. 58. [2] Nadler, L., Bell and C. R., Clients & Consultants, Gulf Publishing Company, 1985, p. 74. [3] IEEE 12207-2008, Systems and Software Engineering– Software Life Cyle Processes, 2008. [4] MIL-STD-498 Software Development and Documentation,USA DoD, 1994 [5] CMMI For Development v1.2, Software Engineering Institute, 2006. [6] Alvesson, M., Management of Knowledge Intensive Companies, Walter de Gruyter, 1995, p 68. [7] ISO 9001:2000 Quality Management System, 2000. [8] AQAP-160 NATO Integrated Quality Requirements for Software Throughout The Life Cycle, 2001. [9] ISO/IEC 27001 Information Security Management Standard, 2005. [10] Stroh, L.K., Johnson H.H., The Basic Principles of Effective Consulting, Lawrence Erlbaum Associates, 2005, p. 3. [11] Aytar, D., Danışmanlık Nedir, Ne Değildir?, Rota Yayınları, 1998, p. 33-34 [12] Brow, S.W., Gummesson, E., Edvardsson, B., Gustavsson, B., Service Quality-Multidisciplinary and Multinational Perspectives, Lexington Books,1998, p. 11