- within Corporate/Commercial Law topic(s)
- within Corporate/Commercial Law and Privacy topic(s)
Bu yazı, bir hukuk metni değildir. Yazılım geliştirme projelerinde yer alanproje yöneticileri, ürün sahipleri, teknik liderler ve yazılım ekipleriiçin kaleme alınmıştır.
Amaç; sözleşme hukukunun teknik ayrıntılarını anlatmaktan ziyade, yazılım projelerinde günlük hayatta karşılaşılan sorunların neden sıklıkla "hukuki" sonuçlar doğurduğunu görünür kılmaktır. Çünkü projede alınan birçok teknik ve yönetsel karar, farkında olunmasa bile sözleşmenin nasıl yazıldığıyla doğrudan bağlantılıdır.
Aşağıdaki başlıklar, hukukçu olmayan ekiplerin de sözleşmeye hangi gözle bakmasının projeyi koruyacağını göstermeyi amaçlamaktadır.
Yazılım projeleri çoğu zaman teknik bir problemle değil,beklentilerin uyuşmamasıylazorlanır.
"Bunu böyle anlamamıştık", "Bu zaten kapsamdaydı" ya da "Bu aşamada bunu beklemiyorduk" gibi cümleler, genellikle koddan değil; sözleşmede bırakılan boşluklardan doğar.
İyi yazılmış bir yazılım
geliştirme sözleşmesi, kimse fark etmeden
çalışır.
Sorun çıkmaz. Tartışma doğmaz.
Çünkü herkes aynı metne bakarak aynı
şeyi anlar.
Bu kapsamda, bugüne kadarki tecrübelerimizden yola çıkarak, aşağıda kapsamı proje başında belirlenen ve klasik Waterfall (Şelale) yaklaşımıyla yürütülen yazılım projelerin de en sık sorunları ele almaya çalıştık.
- Tanımlar Bölümü Gerçekten Okunmalı
Tanımlar bölümü, çoğu sözleşmede teknik ve sıkıcı bir alan olarak görülür. Bu nedenle hızlıca geçilir ya da önceki bir sözleşmeden kopyalanarak kullanılır. Oysa bu bölüm, sözleşmenin geri kalanının nasıl anlaşılacağını belirleyen temel yapı taşlarından biridir.
Tanımları yazarken şu bakış açısını akılda tutmak gerekir: "Bu sözleşmeyi hazırlayan kişiler orada olmadığında, metni okuyan üçüncü bir kişi ne olduğunu anlayabiliyor mu?"
Çünkü bir uyuşmazlık çıktığında, sözleşmeyi yorumlayacak olan taraflar değil; çoğu zaman birhâkim veya bilirkişiolacaktır. Tanımlar, bu kişilerin projeyi ve tarafların neyi kastettiğini doğru şekilde anlamasını sağlamalıdır.
"Yazılım", "teslim edilebilir", "kabul", "spesifikasyon" gibi kavramlar gündelik hayatta anlaşılır görünse de, hukuki metinlerde sezgiye bırakılmamalıdır. Tanımlar bölümü bu nedenle yalnızca açıklayıcı değil; sözleşmenin tamamına yön veren bir çerçeve olarak ele alınmalıdır.
- Kapsamı Başta Tanımlanan Projelerde Netlik Hayati Önem Taşır
Waterfall (Şelale) yaklaşımıyla yürütülen projelerde işin kapsamı, takvimi ve teslimatları en baştan belirlenir. Bu yaklaşım öngörülebilirlik sağlar; ancak bu avantaj, sözleşme yeterince açık yazılmamışsa hızla dezavantaja dönüşebilir.
İş kapsamı belgesi (SOW), teknik ve fonksiyonel isterleri net şekilde ortaya koymuyorsa, proje ilerledikçe "eksik mi, fazlalık mı" tartışmaları kaçınılmaz olur. Waterfall projelerde kapsam sabit kabul edildiği için, belirsizlik esneklik değil; doğrudan risk yaratır.
Bu nedenle sözleşmenin dili ne kadar netse, projenin ilerlemesi de o kadar sorunsuz olur.
- İsterler S.M.A.R.T Değilse, Uyuşmazlık Kaçınılmazdır
Bir yazılım sözleşmesinde en sık sorun yaşanan alanlardan biri, isterlerin (requirements) nasıl ifade edildiğidir. Çoğu sözleşmede isterler; "kullanıcı dostu olacak", "yüksek performanslı çalışacak" veya "sektör standartlarına uygun olacak" gibi iyi niyetli ama yoruma son derece açık ifadelerle yer alır.
Bu noktada SMART metodolojisi yalnızca bir proje
yönetimi aracı değil, aynı
zamandahukuki netlik sağlayan pratik bir
çerçevesunar. Bir isterin;
Spesifik (Specific), Ölçülebilir
(Measurable), Ulaşılabilir (Achievable), İlgili
(Relevant) ve Zamanlı (Time-bound)olması,
"neyin teslim edildiği" ve "neyin eksik
sayılacağı" konusunda tarafları aynı
noktada buluşturur.
SMART olmayan isterler, genellikle kabul aşamasında sorun yaratır. Çünkü geliştirici açısından iş tamamlanmış gibi görünürken, müşteri beklentisinin karşılanmadığını düşünebilir. Bu durum çoğu zaman kötü niyetten değil, belirsiz tanımlardan kaynaklanır.
- Kapsam Kayması Çoğu Zaman Kötü Niyetten Değil, Eksik Tanımdan Doğar
Kapsam kayması çoğu zaman kötü niyetli taleplerle ilişkilendirilir. Oysa uygulamada bu durum genellikle başta yeterince net yazılmamış isterlerin doğal sonucudur.
"Bu zaten kapsamdaydı" veya "biz bunu ayrıca saymıştık" gibi ifadeler, çoğu zaman eksik tanımın ürünüdür. Waterfall projelerde değişiklik yapmak daha maliyetli olduğu için, bu tür belirsizlikler daha erken ve daha sert şekilde ortaya çıkar.
Bu nedenle değişiklik taleplerinin ("Change Request") nasıl ele alınacağı sözleşmede mutlaka yazılı bir sürece bağlanmalıdır.Yeni bir talebin yazılı olarak iletilmesi, bu talebin süre, maliyet ve kapsam üzerindeki etkisinin analiz edilmesi ve ancak tarafların bu etkiyi onaylaması hâlinde hayata geçirilmesi, hem projeyi hem de taraflar arasındaki ilişkiyi korur.
- Yazılımın Çalışması Yetmez, Hukuken Kime Ait Olduğu da Net Olmalıdır
Proje sonunda yazılımın çalışıyor olması önemlidir.
Ancak uzun vadede asıl kritik konu, bu yazılım üzerindekifikri mülkiyet haklarınınkime ait olduğudur.
Bilindiği üzere ülkemizde yazılım sektöründe sıkça "lisans satışı" veya "lisans kiralama" gibi ifadeler kullanılır. Oysa FSEK açısından bu terimler teknik olarak doğru değildir.
Uygulamada:
- "Lisans satışı" denilen işlem çoğu zamanmali hak devrini,
- "Lisans kiralama" isemali hakları kullanım yetkisinin (lisansın)devrini ifade eder.
Bu ayrım sözleşmede doğru yapılmadığında, tarafların hakları belirsizleşir.
Burada önemli bir nokta daha vardır:Yazılım geliştirme sözleşmeleri, borçlar hukuku anlamında kural olarak birer eser sözleşmesidir.
Bu nitelendirme; teslim, kabul, ayıp ve sorumluluk gibi birçok konuda doğrudan sonuç doğurur. Sözleşme bu gerçeklik dikkate alınmadan yazıldığında, beklentilerle hukuki sonuçlar örtüşmez.
- Açık Kaynak Kod Kullanımı Şeffaflık Gerektirir
Açık kaynak bileşenler yazılım geliştirmede yaygındır. Ancak her açık kaynak lisansı aynı serbestliği tanımaz ve bazıları beklenmedik yükümlülükler doğurabilir.
Özellikle kapsamı baştan belirlenmiş projelerde, kullanılan üçüncü taraf bileşenlerin lisans etkilerinin önceden bilinmesi kritik önemdedir. Aksi hâlde teslim edilen yazılımın ticari kullanımında sınırlamalar ortaya çıkabilir.
Bu nedenle kullanılan açık kaynak bileşenlerin ve lisans türlerinin sözleşmede açıkça belirtilmesi gerekir.
- Kabul Süreci Tanımlı Değilse, "Bitti" Kavramı Belirsizleşir
Waterfall projelerde aşamalar net olsa da, kabul süreci yeterince tanımlı değilse proje fiilen bitmeyebilir. Teslim edilen yazılımın hangi kriterlere göre kabul edileceği açık değilse, taraflar aynı noktaya farklı zamanlarda ulaşır.
Test süreleri, hata sınıflandırmaları ve nihai kabul mekanizması baştan yazılı hâle getirildiğinde, kabul süreci hem daha kısa hem de daha objektif olur. Bu netlik, projenin finansal ve hukuki olarak kapanabilmesi için de kritik önemdedir.
- Sorumluluk ve Tazminat Maddeleri Bir Denge Meselesidir
Kapsam ve bedelin baştan belirlendiği projelerde, risklerin sözleşme yoluyla dengelenmesi büyük önem taşır. Sorumluluk sınırları net değilse, küçük bir hata orantısız sonuçlar doğurabilir.
Sorumluluğun makul bir tavanla sınırlandırılması geliştiriciyi korurken, belirli istisnaların açıkça düzenlenmesi müşterinin temel çıkarlarını güvence altına alır. Amaç, taraflardan birini avantajlı kılmak değil; ilişkiyi öngörülebilir ve sürdürülebilir hâle getirmektir.
- Fesih Maddeleri Kötü Senaryolar İçin Bir Güvencedir
Her proje planlandığı gibi gitmeyebilir. Bu nedenle fesih hâlinde nelerin teslim edileceği, hangi yükümlülüklerin devam edeceği ve bedelin nasıl hesaplanacağı (kıstelyevm/pro rata vs.) açıkça yazılmalıdır.
Belirsiz fesih hükümleri, çoğu zaman sorunun kendisinden daha yıpratıcı olur. İyi yazılmış fesih maddeleri, zor bir süreci daha yönetilebilir hâle getirir.
- "Standart" Maddeler Aslında Hiç de Standart Değildir
Son olarak bir de "standart" maddeler vardır. "Genel/Diğer Hükümler" olarak belirtilen bu hükümler Yetkili mahkeme, uygulanacak hukuk ve bildirim usulleri gibi hükümler genellikle sona bırakılır veya hızlıca geçilir.
Oysa bir uyuşmazlık çıktığında veya ortada bir mücbir sebep olduğunda en belirleyici maddeler çoğu zaman bunlar olur.
Bu hükümler gerçekten standart değildir; her proje ve taraflar özelinde ayrıca düşünülmelidir.
- Genel Değerlendirme
Yazılım geliştirme sözleşmeleri çoğu zaman yalnızca "imzalanması gereken" belgeler olarak görülür. Proje başladıktan sonra ise sözleşmenin .pdf kopyası proje klasörüne kaydedilir ve muhasebeye gönderilir. Oysa pratikte, projede yaşanan birçok sorunun cevabı zaten sözleşmenin içerisindedir, başka bir deyişle sözleşme proje yönetimi için bir referans noktasıdır.
Dolayısıyla, Sözleşmeler, yalnızca hukuki riskleri değil;operasyonel belirsizlikleride yönetir. Tanımların net yazılması, isterlerin ölçülebilir olması, değişiklik taleplerinin yazılı bir sürece bağlanması veya kabul kriterlerinin baştan belirlenmesi, doğrudan proje yönetiminin konusudur.
Özellikle waterfall yaklaşımıyla yürütülen projelerde, sözleşme ne kadar net yazılmışsa, proje o kadar az sürprizle ilerler. Belirsizlik arttıkça, teknik konular hızla sözleşmesel tartışmalara dönüşür.
Bu nedenleproje yöneticileri ve yazılım ekiplerinin, sözleşmenin hazırlanması veya revizyonu aşamasında hukuk birimiyle erken temas kurması, teknik beklentilerin hukuki dile doğru şekilde yansıtılması faydalı olacaktır sağlar.
Bu işbirliği, projeyi yavaşlatan bir adım değil; ileride yaşanabilecek uyuşmazlıkların ve gereksiz tartışmaların önüne geçen koruyucu bir adımdır.
The content of this article is intended to provide a general guide to the subject matter. Specialist advice should be sought about your specific circumstances.