17 Mayıs 2019 Cuma

Yazılımda Karmaşıklık (Complexity) Problemleri

Giriş
Bu yaz bir özet. Grady Booch'un şu cümlesi bence çok önemli
“Alas, this complexity we speak of seems to be an essential property of all large software systems. By essential we mean that we may master this complexity, but we can never make it go away."
Yazılım geliştirirken karşımıza bir çok karmaşık şey çıkıyor. Bunlardan bazıları şöyle.

Algorithmic complexity
Bu konu iki başlık altında incelenebilir.

1. P versus NP yani Polynomial olan ve olmayan problemler. Algoritma Analizi yazısına bakabilirsiniz.
2. Polynomial problemler için Big O gösterimi. Başka gösterimler de var ancak sanırım en bilineni Big O gösterimi. Big O Nedir yazısına bakabilirsiniz.

Development complexity
Agile yöntemler - örneğin Scrum - yazılım geliştirmenin karmaşıklığını azaltmaya veya daha iyi yönetmeye yardımcı olabilir. Örneğin aynı anda birden fazla projede çalışmak veya yönetmeye çalışmak karmaşayı artırır.

#6: Managing Multiple Projects and Expectations başlığı altında bazı öneriler var.

Information complexity 
Kolmogorov complexity olarak ta bilinir. Açıklaması şöyle
The information complexity of a task/object is determined by the number of characters that need to be written to solve this problem.

It means that the complexity of the problem is equal to the number of characters describing its solution. This, in fact, is the size of the code programmers need to write to solve the problem.
#4: Understanding Complex Systems başlığı altında bazı öneriler var.

Test complexity
Yazılım büyüdükçe ve karmaşıklaştıkça testi de karmaşıklaşıyor.

Karmaşıklığı Azaltmak İçin Ne Yapılabilir?
Bazı maddeler şöyle




Hiç yorum yok:

Yorum Gönder