Sevgili Mehmet, öncelikle projede boyut arttıkça, CMMI gibi yöntemlerin gerekli olduğunu söyledik sanıyorum.
Bir kodun iyi dökümante edilmiş olması veya olmaması kodun kalitesini gösterir mi? Veya daha başka bir deyişle, o kodun kalitesini nasıl ölçeriz? Çalışıyor olması mı? O zaman zaten dökümana ne hacet? Neyse, bu bence biraz toolojik veya zooloijik veya her ne karın ağrısıysa öyle bir yorum olmuş. Kod çok büyük olduğunda, kendini anlatan kod olması çok daha büyük önem kazanır. O kadar büyük kodu senkronize bir dökümanla ifade etmek biraz hayal olur. İyi bir örnek kernel'dir. Cidden büyük bir koddur. Dökümantasyonu ise yok denecek kadar azdır, koda göre. Ama kendini anlatmakta gayet başarılıdır. Fakat, farklı geliştiricilerin farklı tarzı, en temel sorun olmaktadır genelde. Kendini anlatan kod? Bir gün sizde yazmaya başlarsınız, hiç merak etmeyin. Genelkurmayın da kod yazdırmayı zerre kadar bilmediği gerçeğini unutmayın. Para bende, benim dediğim olacak diyen ama teknik olarak kabiliyetsiz birilerinin çizeceği bir gerekler listesi. Sonrada teknik kabiliyeti değil sermaye ve dostlar sayesinde genelkurmaydan iş kapıp, derdi servetini büyütmek olan bir işletme. Daha fazlasını beklemeyin bu yapıdan. 2012/1/3 Mehmet Özgür Bayhan <[email protected]>: > Genel olarak okunduğunda evet güzel bir yazı.Ama biraz detaylıca deşince > belirli noktaların gözden kaçmış olduğu gözüküyor.Özellikle benim gözüme > takılan iki nokta var. > > Birincisi Agile ve XP mantığında yatıyor.Orta ve küçük ölçekli projeler için > evet güzel olmakla beraber projenin büyümesi halinde iletişim kopuklukları > gelişim sürecini oldukça sekteye uğratıyor.Heleki testerlar ile developerlar > arasında iş arkadaşlığının ötesinde bir uyum varsa işler sarpa sarıyor.1 > senelik olarak öngörülen bir genelkurmay projesinin bu iletişim bozukluğu ve > testerların yayvanlıkları sayesinde nasıl 1.5 seneye uzadığına ve hala > bitmemiş olduğuna adım adım şahit olduk. > > Ha evet müşteriyi de projeye dahil ettiğiniz için durumu müşteriye > açıklaması daha kolay oluyor fakat sonuç olarak projenin hesaplana(maya)n > bitiş süresini 1.5 kat aştığı ve hala bitmemiş olduğu gerçeğini > değiştirmiyor.-Proje en son ne durumdaydı bilmiyorum- > > Ayrıca eğer kesin müşteriniz yoksa yani yazılımınız "generic" bir yazılım > ise süreç zaten külliyen sekteye uğruyor.Heleki çevik programlama > yöntemlerinde yükün bindiği "tester"lar işlerini düzgün yapmıyorlarsa sonuç > eşimin e-posta adresine gelen başkasına ait e-fatura oluyor (: > > Keza anladığım kadarıyla arkadaş tek kişi.Pair programming ile işini > halledişi gözümün önüne geldi bir an (((: > > Sonuç olarak agile tekniklerin işe yararlığı kanıtlanmış olmakla beraber > fazla abartıldığını düşünüyorum.Heleki yumurta kapıya dayanınca birşeyler > yapmaya alışmış bir millet için... > > İkinci bir şey ise kod içi ve dışı dökümantasyonla ilgili.Çoğu kişi öyle > yada böyle yazmamakla beraber kesinlikle yazılması gerektiğini > düşünüyorum.Kodun satır sayısı kallavi boyuta ulaştığı -veya bazen > ulaşmadığı- zaman hiçbir kodun kendini açıklayabileceğini düşünmüyorum. > > Özellikle nesne yönelimli programlamanın dışına çıktığınız zaman.Çinli bir > firmaya sağladıkları m68k işlemcili bir cihazla beraber verdikleri api'nin > rezalet ve eksik dökümantasyonu yüzünden 6 ay boyunca dümdüz saydırdığımı > iyi bilirim.Verdikleri C kütüphaneleri hiç de öyle kendini > açıklamıyordu-Fakat ilginç bir şekilde yazdıkları kodun kalitesi oldukça > iyiydi -. (: > > Sonuç olarak: > > > "Yeterince şey söylenmiş. Dökümantasyon baştan olmalı. UML filan. > Ama bu biraz hayal. Bu sadece bir ütopya." > > Sadece size denk gelmemiş... > > İyi çalışmalar. > > 2 Ocak 2012 18:59 tarihinde Serdar KÖYLÜ <[email protected]> yazdı: > >> Yeterince şey söylenmiş. Dökümantasyon baştan olmalı. UML filan. >> >> Ama bu biraz hayal. Bu sadece bir ütopya. Bu belki kodların bir kaç >> kişiyle, ahanda şu yapılacak diye yazıldığı günlerde anlamlı >> olabilirdi. >> >> Yazılım işini doğası farklı. baştan bir proje önünüze gelmiyor. >> genellikle projeler, bir yandan yapılırken, diğer yandan >> genişletiliyor. >> >> Yani, ne geveliyorum? >> >> Toplam Kalite Yönetiminde, genel düstur, amerikan modelimsi bir şey. >> Tam olarak öyle diyemeyiz ama kabaca. Sadece bir ad koyabilmek için. >> Bu durumda süreçler vardır, bu süreçler devamlı geribeslemelerle >> iyileştirilir ve ortaya bir ürün çıkar. İyileştirme işlemi de ürün >> maliyet ve kalitesini iyileştirir, en azından söylev bu yöndedir. >> >> Şimdi böyle bir süreçte, yazılım gibi bir ürün üretilirse ne olur? >> Basitçe, olmaz. Çünkü aslında yazılımın oturacağı yer, müşteride bir >> sürecin kendisidir. Bu da yazılımın sürekli geri beslemelerle daha iyi >> bir süreç olmasını gerektirir. >> >> Pek çok iş bilmeyi kağıttan okununca oluyor sanan, bu noktayı kaçırır. >> Ve işte böyle baştan dökümantasyon, sonradan dökümantasyon gibi >> sihirli değnekler arar. Ama yazılım aleminde gümüş kurşunlar yoktur >> (bkz: http://www.cs.nott.ac.uk/~cah/G51ISS/Documents/NoSilverBullet.html >> ) >> >> Peki ne olur? Uzatmayayım, bu nedenle japon modeline benzer tky >> yöntemleri yazılım için öngörülmüştür, geniş çapta. En iyi bilineni >> ise, CMMI mevzusudur. >> >> İşi CMMI'a uydurmak, ki bu dökümantasyon gibi sorunları da aşabilmek >> için CMMI gayet iyidir, başka bir dert olmaktadır. Ama bunların orta >> yolu yazılımı evrimsel bir süreç gibi yazmak olmuştur. işte Adaptive >> Development ve bilhassa Extreme Programming bu noktada öne çıkar ve bu >> yükü hafifletir. >> >> Fakat, CMMI'da bir gümüş kurşun değildir ve sertifikasyon derdiniz >> yoksa, size bir sürü iş çıkarır. Peki o zaman ne yapmak gerekir? >> >> Aslında yapılacak şey bellidir. CMMI gibi şeylerin yüküne girmeden, >> işi kotarmak. Bunun da yolu, kodu dökümana ihtiyaç duymayacak, duysa >> bile çok temel bir kaç kağıtta olayı çözecek şekilde yazmaktır. Ha, >> CMMI gibi işleri boşverin demek değil bu. Eğer kaynak sorununuz varsa, >> dur bir dökümantasyon yapayım önce, bitti bir dökümantasyon yazayım >> moduna girmemektir aslolan. Bunu sürecin bir parçası olarak görmek ve >> zaten bir yazı olan kodu, okunur, anlaşılır düzgün şekilde yazmak, >> layer ve partisyonları somutlaştırmak gibi şeyler yapmaktır. Burada >> yapılan bir hata, doxygen gibi şeylerle avunmaktır. Bunlar iyi midir? >> Hiç sanmam. Ben doxygen çıktılarının hiç bir yaraya merhem olduğunu >> görmüyorum, kullandığım api'lerde. >> >> Yani ne demek istiyorum? Kodu öyle yazın ki, // veya /* */ bloklarına >> ihtiyacınız olmasın. Kod kendini açıklasın. Bu işin pratik yolu budur. >> Buna ilave bir kaç sayfalık text, sizin sorununuzu gidermeye yeter. O >> da süreç içinde zaten kendisi ortaya çıkar. >> >> Ama projedeki adam sayısı artıyorsa, 3 kişi dahi olsa, büyük bir >> projeyse, artık CMMI gibi bir şeye geçmek, çok daha akıllıca >> olacaktır. Sertifikasyona gerek yok, ama iyidir. Sadece o >> mekanizmaları uygulamak ve bir sisteme sahip olmak, çok şeyi >> değiştirir. >> >> >> >> >> 2011/12/12 Mehmet Özgür Bayhan <[email protected]>: >> > UML notasyonları aradığınız.Yalnız burada önemli olan yazdığınızı >> > notasyona >> > dökmek değil.İşin mühendislik kısmı burada başlıyor zaten.Programcı ile >> > mühendisin ayrıldığı yerlerden bir tanesi.Tasarımınıza göre kod >> > yazmalısınız.Kodunuza göre tasarım desenleri değil (: >> > >> > 12 Aralık 2011 17:36 tarihinde Nuri AKMAN <[email protected]> yazdı: >> >> >> >> Arkadaşlar, >> >> >> >> Program yazıyorum ve üzerinden zaman geçtiğinde neyin ne olduğunu ve >> >> nasıl >> >> çalıştığını unutuyorum... >> >> >> >> Kod içinde bir çok açıklama yazıyorum, değişken adlarımı açık ve >> >> anlaşılır >> >> veriyorum. Böylece kodu okuyarak hafızamı canlandırıyorum. >> >> >> >> Ancak, bu durum hoşuma gitmiyor. Zaman zaman bir kullanıcı 3 yıl önce >> >> yazdığım bir ekranda "Şu hesap da bu rakama dahil mi?" diye sorduğu >> >> zaman >> >> tek tek incelemek zorunda kalıyorum herşeyi.... >> >> >> >> Durum böyle olunca, program çalışma mantığının dokümante edilmesi fikri >> >> oluştu aklımda: Bu ekrana girildiğinde önce şu fonksiyon çağrılır, >> >> sonra >> >> şu, şunu kontrol eder vs.vs.vs. Yani, programın çalışması sırasında >> >> yaptığı >> >> her şeyi FlowChart tarzı bir şekilde dokümante etmeyi düşünüyorum. >> >> >> >> FlowChart yeteneğinde bir programla bu iş yapılabilir, ancak programın >> >> kalbini/ana ekranını böyle tarif etmek çok uzun sürer ve takibi zor >> >> olabilir. >> >> >> >> Acaba bu konuda tavsiye edeceğiniz bir program/metod var mı? >> >> >> >> Selamlar, >> >> Nuri Akman >> >> >> >> >> >> _______________________________________________ >> >> Linux-programlama mailing list >> >> [email protected] >> >> https://liste.linux.org.tr/mailman/listinfo/linux-programlama >> >> Liste kurallari: http://liste.linux.org.tr/kurallar.php >> >> >> > >> > >> > _______________________________________________ >> > Linux-programlama mailing list >> > [email protected] >> > https://liste.linux.org.tr/mailman/listinfo/linux-programlama >> > Liste kurallari: http://liste.linux.org.tr/kurallar.php >> > >> _______________________________________________ >> Linux-programlama mailing list >> [email protected] >> https://liste.linux.org.tr/mailman/listinfo/linux-programlama >> Liste kurallari: http://liste.linux.org.tr/kurallar.php > > > > _______________________________________________ > Linux-programlama mailing list > [email protected] > https://liste.linux.org.tr/mailman/listinfo/linux-programlama > Liste kurallari: http://liste.linux.org.tr/kurallar.php > _______________________________________________ Linux-programlama mailing list [email protected] https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php
