Yazılım geliştirmenin zorlukları

Yazılım geliştirmek zor zanaat. Peki bu zorluğun kaynağı ne olabilir hiç düşündünüz mü? Bu soruya klasik kabul edilen “The Mythical Man-Month” kitabından cevap arayalım:

Karmaşıklık

Üzerinden çalıştığınız yazılımın bütün durum uzayını bir düşünün; düşünemediniz değil mi? İşte bu büyüklük onu kavramayı, açıklamayı ve test etmeyi zor hale getiriyor. Zaten karmaşık olan bu yapıyı büyütmek istediğimizde de mevcudun kopyalarını oluşturamıyor; sistemlerimize yepyeni elemanlar ekliyoruz yani durum uzayını büyütüyoruz. Sistem büyüdükçe anlaması anlatması daha da zor hale geliyor.

Uyum

Yazılımlarımızın çoğu zaman yapmak zorunda olduğu bir şey var kendinden önce gelenlere uyum sağlamak. Bunlar mevzuatlar olabilir, başka sistemlerin API’leri olabilir, iş yapış şekilleri olabilir. Yapacağımız hiçbir tasarım bizi uyum sağlamak zorluğundan kurtaramıyor. Bütün bunları anlamamız ve ilmek ilmek programlamamız gerekiyor.

Değişkenlik

Yazılımın en güçlü yanı – yazılı olması – aynı zamanda onun laneti sanırım. İnsanlar kolayca değişebilmesini bekliyor. Aynı durumu arabalar, makineler, telefonlar gibi üretilen şeylerde görmüyoruz. Yeni modellerinin çıkmasına ve eskinin atılıp yeni ile değiştirilmesine alışmışız.

Bir yazılım için değişim kaçınılmaz:

  • İnsanlar bir yazılımı kullandıkça yeni şeyler düşünüp keşfediyorlar ve mevcudu geliştirmek istiyorlar
  • Başarılı olmuş yazılımların altyapı (işletim sistemi, donanım, mevzuatlar gibi) değişikliklerine ayak uydurmasını bekliyorlar

Görünmezlik

Bana yazılımın resmini çizebilir misin Abidin? Yazılım dediğimiz şeyin gerçek uzayda bir karşılığı yok ve onu kolayca resmetmek mümkün değil. Evet bin bir türlü diyagram seçeneğimiz var ama daha önce denediyseniz bunun ne kadar zor olduğunu bilirsiniz. Komponentleri, kontrol akışı, data akışı, bağımlılıkları, zaman davranışı, network topolojisi … Bu zorluk bütün bir sistemi bir kişinin kafasında tutmasını ve başkaları ile iletişiminin kurulmasını da zorlaştırıyor

Comments

Leave a comment