Sistem Geliştirmenin Her Geliştirme Modeline Göre Hukuki Avantajları ve Dezavantajları Nelerdir?
Sistem geliştirme projelerinin ilerletilmesi belirli bir metodoloji gerektirir. Genellikle, sistem geliştirme ile ilgili hukuki sorunları kitaplarda ve benzeri kaynaklarda öğrenirken, en klasik yöntem olan ‘Waterfall Modeli’ (Şelale Modeli) genellikle temel alınır. Ancak, sistem geliştirmek için kullanılan metodoloji veya model sadece Waterfall Modeli ile sınırlı değildir. Örneğin, son zamanlarda ‘Agile Geliştirme Modeli’ (Çevik Geliştirme Modeli) gibi yöntemler de sıklıkla tercih edilmektedir.
Bu makalede, Waterfall Modeli ve Agile Geliştirme Modeli olmak üzere iki modeli, hukuki riskler ve anlaşmazlık önleme gibi açılardan karşılaştırarak açıklamaya devam edeceğiz.
Geliştirme Modeli Nedir?
Waterfall Modeli Nedir?
Sistem geliştirme sürecinde, en yaygın ve klasik yaklaşım aşağıdaki gibidir:
- Gereksinim Tanımlama: Yaratılacak sistemin sahip olması gereken işlevler, gerekli özelliklerin belirlenmesi
- Temel Tasarım: Ekran tasarımı, ekran geçişleri vb. gibi, genellikle sistem kullanıcılarının bakış açısından sistem genel görünümünün tasarımı
- Detaylı Tasarım: Program dosyaları arasındaki bağlantılar vb. gibi, genellikle sistem geliştiricilerinin bakış açısından sistem genel görünümünün tasarımı
- Programlama Uygulama: Tasarım belgelerine uygun program kodlama
- Test: Özelliklerin doğru bir şekilde uygulanıp uygulanmadığının doğrulanması ve kullanıcılardan onay istenmesi
Bu şekilde, bir nehir gibi akıp giden bir süreçte, mümkün olduğunca adımların sırası ve geri dönüşlerin olmaması için ilerleyen geliştirme yöntemi “Waterfall Modeli” olarak adlandırılır. Bu tür bir akış, işleyen bir sistem oluşturmak için zorunlu değildir. Ancak, genellikle çok sayıda kişi ve uzun süreler gerektiren sistem geliştirme projelerinde, planlama önemlidir. Bu nedenle, her aşamanın ayrılması, rollerin düzenlenmesi ve her bir sorumlunun sorumluluk alanının belirlenmesi gibi konular da önemli hale gelir.
Agile Geliştirme Modeli Nedir?
Öte yandan, geliştirme işlemlerinin ilerlemesi her zaman “yukarıdan aşağıya” doğru bir şekilde tamamlanması gereken bir yöntemle sınırlı değildir. Elbette, işin doğası gereği, planlama ve tahmin teknikleri önemlidir. Ancak, yeni bir şeyler yaratma veya bir eser oluşturma işi olduğu için, mükemmel bir planlama yapmak baştan imkansız olabilir. Bu tür durumları dikkate alırsak, sadece belirlenen plana göre işleri ilerletmek değil, aynı zamanda sonradan düzeltmeler yapmak, özelliklerin değiştirilmesine kolayca uyum sağlamak ve deneme yanılma süreçlerini artırmak gibi yaklaşımlar da önemlidir. Bu düşünceyi yansıtan geliştirme yöntemi “Agile Geliştirme Modeli” olarak adlandırılır. Agile geliştirme modelinde, detaylı planlar veya tasarım belgeleri hazırlamak için mümkün olduğunca az zaman harcanır, çok küçük programlar uygulanır ve testler tekrarlanır, ve zamanla daha büyük programlar ve sistemler oluşturulur.
Hukuki Sorunları Öğrenmenin Kolay Olduğu Yer: Waterfall Modeli
Her iki geliştirme modelinin karşılaştırılmasına geçmeden önce, her bir geliştirme modeliyle ilgili hukuki sorunlar hakkında, bilgi toplamanın kolaylığı ve hukuk öğreniminin kolaylığı hakkında bir ön bilgi vermek istiyorum.
Çoğu Referans Kitap, Waterfall Modelini Temel Alarak Yazılmıştır
Sistem geliştirme ile ilgili hukuki sorunları veya hukuki bilgileri öğrenmeye çalışırken, bilgi toplamanın kolaylığı açısından Waterfall modeli öne çıkmaktadır. Sistem geliştirme hakkında yazılan hukuk kitapları genellikle Waterfall modelini temel alarak yazılmıştır. Klasik ve genel sistem geliştirmeler genellikle Waterfall modeline göre yapılır, bu yüzden Agile geliştirme genellikle ek bir konumda olup, genellikle hafif bir tanıtımla sınırlıdır. Dolayısıyla, sistem geliştirme ile ilgili hukuki sorunlar hakkında kitaplardan bilgi almak istediğinizde, Waterfall modeli ile öğrenim daha kolay ilerler.
Yargı Örneklerinin Birikimi de Waterfall Modelinde Fazladır
Ayrıca, Waterfall modelinin klasik ve genel bir sistem geliştirme yöntemi olması nedeniyle, geçmişte gerçekten yaşanan anlaşmazlık örneklerinin birikimi de oldukça fazladır. Hukuk tartışmalarında, kanun maddeleri kadar, geçmiş yargı örneklerinin bilgisi de önemlidir. Sadece kanun maddesinin metnini okuyarak “beyaz” veya “siyah” denilemeyen durumlar için bile, geçmiş yargı örneklerinden bilgi alarak, kanun maddesinin içeriğini tamamlayabiliriz.
Belirtilen yasalar olmasa bile, mahkemelerin gösterdiği kararların birikimi, bir kanun maddesi gibi bir karar kriteri olarak belirlenebilir. Bu tür durumlar “yargı hukuku” olarak adlandırılır. Sistem geliştirme gibi konularla sınırlı olmaksızın, yargı hukukunun birikiminin olduğu alanlarda, bilinmeyen bir anlaşmazlık olsa bile, son anlaşmazlığın sonucunu tahmin etmek nispeten kolay olabilir. Bu tür avantajların görülebileceği yer, Waterfall modeline dayalı sistem geliştirmedir.
Her Geliştirme Yönteminin Avantajları
Yukarıdaki içeriği göz önünde bulundurarak, her bir yöntemin avantajlarını ve dezavantajlarını karşılaştırarak düzenleyeceğiz. İlk bölüm, Waterfall modelinin avantajlarına odaklanırken, aşağıya indikçe Agile geliştirme yönteminin avantajları daha anlaşılır hale gelecektir.
Planlama ve Öngörü Kolaylığı Açısından Karşılaştırma
Planlama ve öngörü kolaylığı gibi konularda, Waterfall modelinin üstün olduğunu söyleyebiliriz. Ne kadar büyük ölçekli bir sistem oluşturulursa oluşturulsun, bu her zaman “yukarıdan aşağıya” doğru ilerleyen her bir süreçte ayrıntılı bir şekilde bölümlere ayrılır. Her süreç için bir son tarih belirlenirse, ilerlemeyi nispeten planlı bir şekilde yönetmek daha kolay olur.
Öte yandan, Agile geliştirme, önceden planlama veya genel tasarım için çok fazla maliyet veya emek harcamayan bir yöntem olduğu için, genellikle anlık yaklaşımlar oluşabilir.
Bireysel Rollerin ve Sorumluluk Alanlarının Belirginleştirilmesi Açısından Karşılaştırma
Ayrıca, Waterfall modelinde, her sürecin ayrıntılı bir şekilde bölünmesi sayesinde, her bir proje üyesinin rolünü belirginleştirebilme avantajı vardır.
Öte yandan, Agile geliştirme yönteminde, süreçlerin ayrımı genellikle belirsizleşir, bu nedenle beklenmedik sorunlara karşı, kimin sorumluluk alacağı konusu da belirsizleşme eğilimindedir.
Büyük Ölçekli Geliştirme Kolaylığı Açısından Karşılaştırma
Planlama ve rol düzenlemesi açısından üstün olan Waterfall modeli, büyük ölçekli geliştirmelerde avantajları daha da büyür. Birçok personeli organize ederken bile, süreçleri ayrıntılı bir şekilde bölerek iş bölümünü teşvik ederseniz, insan ilişkilerinin düzenlenmesi için gereken maliyeti azaltabilirsiniz.
Öte yandan, Agile geliştirme modeli, büyük ölçekli geliştirmeler için pek uygun değildir. Planlama ve rol düzenlemesinden ziyade, başlama hızını önemseyen bir yaklaşım olduğu için, son teslim tarihinin kayması gibi endişelerin olduğu durumlarda uygulamak zordur.
Hız ve Verimlilik Açısından Karşılaştırma
Agile Geliştirme Daha Hızlı Başlar
Kullanıcı tarafının bir işlev talebi olmasından, bunun gerçekten uygulanmasına kadar olan hız açısından, Agile geliştirme modeli üstündür. Çünkü, Waterfall modelinde, üst ve alt süreçlerde sorumlular genellikle net bir şekilde ayrılır ve bu nedenle tedarikçi tarafındaki iç iletişim genellikle daha fazla zaman alır. Bu tür iletişimlerin daha fazla zaman alması, sonradan özellik değişikliği taleplerine karşı zayıf olma eğilimindedir.
Öte yandan, Agile geliştirme modeli, aracıları bilerek atlayarak hızlı bir şekilde başlama ve uygulamaya geçme beklentisini yaratır. Bu, sonradan özellik değişikliğine kolayca uyum sağlama, yani Agile geliştirme modelinin en büyük avantajı ile yakından ilgilidir. Ancak, Agile geliştirme modeli olsa bile, özellik değişikliği ve ek geliştirme taleplerine sürekli olarak rıza gösterirseniz, bu, projenin “alev almasına” neden olabilecek bir risk olabilir. Bu anlamda, Agile geliştirme modeli ile sistem geliştirme, “değişiklik yönetimi”nin nasıl yapılacağı, başarının anahtarıdır. Değişiklik yönetimi hakkında ayrıntılı açıklama, aşağıdaki makalede yapılmaktadır.
https://monolith.law/corporate/howto-manage-change-in-system-development[ja]
Waterfall Modeli Daha Az İhtimalle Yarıda Kalır
Öte yandan, hız ve verimlilik açısından karşılaştırma yaparken, uzun vadeli bir zaman çizelgesini göz önünde bulundurmak da önemlidir. Projenin yarıda yanıp kül olması ve ilerlemenin ortadan kalkması gibi riskler düşünüldüğünde, Waterfall modeli üstündür. Bir projenin yarıda kalması durumunu tetikleyen en büyük risk, kullanıcı ve tedarikçi arasındaki iletişim eksikliğidir. Rollerin ayrımını kolaylaştıran Waterfall modeli, bu konuda avantajlıdır.
Kabul Aşamasında İlerlemeyi Kolaylaştıran Agile Geliştirme
Ancak, kabul aşamasında konuşmanın kolaylaştırılması açısından, biraz daha Agile geliştirme modeli üstündür. Çünkü, kullanıcı ve tedarikçi arasında, sistem geliştirmenin orta aşamasında bile ayrıntılı bilgi paylaşımı yapılması beklenir. Sonuçta ortaya çıkan ürünü görünce, her iki tarafın anlayışındaki farklılıkların birdenbire ortaya çıkması gibi bir riski azaltabilirsiniz. Sistem geliştirmenin kabulü adı verilen bu adım ve buna bağlı hukuki sorunlar, aşağıdaki makalede ayrıntılı olarak ele alınmaktadır.
https://monolith.law/corporate/estimated-inspection-of-system-development[ja]
Özet
Bu şekilde karşılaştırıldığında, genel olarak, yönetimin tam anlamıyla uygulanması Waterfall (Şelale) modeli ile, başlama ve uygulama aşamasına kadar olan hızı önemseyenin ise Agile (Çevik) geliştirme modeli olduğunu söyleyebiliriz. Ayrıca, Agile geliştirme modeline dayalı sistem geliştirme ile ilgili hukuki sorunlar aşağıdaki makalede detaylı olarak ele alınmıştır.
https://monolith.law/corporate/legal-and-contract-issues-of-agile-development[ja]
Hangi geliştirme modelinin uygun olduğunu belirlerken, hukuki açıdan bakmak kadar, projenin ölçeği, bütçesi, amacı gibi faktörleri de göz önünde bulundurarak kapsamlı bir değerlendirme yapılması gerektiğini düşünüyoruz.
Category: IT
Tag: ITSystem Development